Code: Select all
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|Methods |Details|Stack |Address |Module |Offset |Unit |Class |Procedure/Method |Line |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|Running Thread: ID=10640; Parent=0; Priority=15 |
|Class=; Name=MAIN |
|DeadLock=0; Wait Chain= |
|Comment= |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|00000008|04 |0019E6BC|0077A57C|MediaMonkeyEngine.exe|0037A57C|EExceptionManager| |CreateNewExceptionInfo |1473[0] |
|00000008|04 |0019E6BC|0077AD00|MediaMonkeyEngine.exe|0037AD00|EExceptionManager| |InternalInfo |1657[13] |
|00000008|04 |0019E6E0|0077AD80|MediaMonkeyEngine.exe|0037AD80|EExceptionManager| |InternalInfo |1667[23] |
|00000008|04 |0019E6E0|0077AD74|MediaMonkeyEngine.exe|0037AD74|EExceptionManager| |InternalInfo |1664[20] |
|00000008|04 |0019E720|0077AEE7|MediaMonkeyEngine.exe|0037AEE7|EExceptionManager|TExceptionManager |Info |1706[33] |
|00000008|04 |0019E74C|0077B23E|MediaMonkeyEngine.exe|0037B23E|EExceptionManager|TExceptionManager |Info |1795[18] |
|00000008|04 |0019EE20|0077B2FA|MediaMonkeyEngine.exe|0037B2FA|EExceptionManager|TExceptionManager |Info |1816[7] |
|00000008|04 |0019EE44|00B0510A|MediaMonkeyEngine.exe|0070510A|EAppCEF | |throwELException |235[1] |
|00000008|04 |0019EE5C|00B0512E|MediaMonkeyEngine.exe|0070512E|EAppCEF | |raiseException |240[1] |
|00000008|04 |0019EE68|01736D70|MediaMonkeyEngine.exe|01336D70|AppInitCode | |ShowJSError |860[7] |
|00000008|04 |0019EE8C|01736E22|MediaMonkeyEngine.exe|01336E22|AppInitCode |TCustomRenderProcessHandler |OnUncaughtException |875[2] |
|00000008|04 |0019EF14|018226F7|MediaMonkeyEngine.exe|014226F7|ceflib | |cef_render_process_handler_on_uncaught_exception |15291[2] |
|00000008|03 |0019EF4C|5811F4D8|libcef.dll |0001F4D8|libcef | | (possible cef_process_message_create+4984) | |
|00000008|03 |0019EF90|597138CA|libcef.dll |016138CA|libcef | |cef_collect_garbage | |
|00000008|03 |0019F388|5A2AFC8B|libcef.dll |021AFC8B|libcef | |cef_time_to_timet | |
|00000008|03 |0019F3C0|5A2AFC19|libcef.dll |021AFC19|libcef | |cef_time_to_timet | |
|00000008|03 |0019F3C0|59713121|libcef.dll |01613121|libcef | |cef_collect_garbage | |
|00000008|03 |0019F444|59712E5E|libcef.dll |01612E5E|libcef | |cef_collect_garbage | |
|00000008|03 |0019F474|5812E4B8|libcef.dll |0002E4B8|libcef | | (possible cef_v8value_create_function+4797) | |
|00000008|04 |0019F49C|0040DE5C|MediaMonkeyEngine.exe|0000DE5C|System |TInterfacedObject |_Release |36170[0] |
|00000008|04 |0019F4A8|01824A65|MediaMonkeyEngine.exe|01424A65|ceflib |TCefv8ValueRef |ExecuteFunction |16675[17] |
|00000008|04 |0019F514|017A04B1|MediaMonkeyEngine.exe|013A04B1|BaseShared |TJSCallback |ExecuteFunction |3378[7] |
|00000008|04 |0019F54C|0179FB3B|MediaMonkeyEngine.exe|0139FB3B|BaseShared |TJSCallback |Invoke |3282[43] |
|00000008|04 |0019F56C|0040DE5C|MediaMonkeyEngine.exe|0000DE5C|System |TInterfacedObject |_Release |36170[0] |
|00000008|04 |0019F5CC|017A0727|MediaMonkeyEngine.exe|013A0727|BaseShared |TJSCallbacks |invokeAll |3409[12] |
|00000008|04 |0019F600|017A2248|MediaMonkeyEngine.exe|013A2248|BaseShared |TSharedObservable |doOnChange |7874[3] |
|00000008|04 |0019F614|017B655D|MediaMonkeyEngine.exe|013B655D|BaseShared |{BaseShared}TSharedList<BaseShared|ISharedString>.endWrite |3846[38] |
|00000008|04 |0019F658|017D7D7E|MediaMonkeyEngine.exe|013D7D7E|BaseShared |{BaseShared}_TSharedList`1 |modifyAsync$7299$ActRec<BaseShared.ISharedString>.$0$Body|5869[7] |
|00000008|04 |0019F65C|017D7D76|MediaMonkeyEngine.exe|013D7D76|BaseShared |{BaseShared}_TSharedList`1 |modifyAsync$7299$ActRec<BaseShared.ISharedString>.$0$Body|5867[5] |
|00000008|04 |0019F65C|017D7D89|MediaMonkeyEngine.exe|013D7D89|BaseShared |{BaseShared}_TSharedList`1 |modifyAsync$7299$ActRec<BaseShared.ISharedString>.$0$Body|5869[7] |
|00000008|04 |0019F680|017A3F34|MediaMonkeyEngine.exe|013A3F34|BaseShared | |processFastTaskRec |8480[22] |
|00000008|04 |0019F694|017A3F9D|MediaMonkeyEngine.exe|013A3F9D|BaseShared | |processFastTaskRec |8489[31] |
|00000008|04 |0019F694|017A3F86|MediaMonkeyEngine.exe|013A3F86|BaseShared | |processFastTaskRec |8483[25] |
|00000008|04 |0019F6C0|017A429D|MediaMonkeyEngine.exe|013A429D|BaseShared |TFastTask |Execute |8542[1] |
|00000008|04 |0019F6CC|01821DE9|MediaMonkeyEngine.exe|01421DE9|ceflib | |cef_task_execute |15050[1] |
|00000008|03 |0019F6D4|58108AE3|libcef.dll |00008AE3|libcef | |cef_execute_process | |
|00000008|03 |0019F734|59706FFE|libcef.dll |01606FFE|libcef | | (possible cef_string_utf16_to_upper+2104) | |
|00000008|03 |0019F754|59706FFE|libcef.dll |01606FFE|libcef | | (possible cef_string_utf16_to_upper+2104) | |
|00000008|03 |0019F7A4|77ABAC90|ntdll.dll |0003AC90|ntdll | |RtlGetCurrentServiceSessionId | |
|00000008|03 |0019F7A4|77ABA77B|ntdll.dll |0003A77B|ntdll | | (possible RtlFreeHeap+779) | |
|00000008|03 |0019F7B8|59706FFE|libcef.dll |01606FFE|libcef | | (possible cef_string_utf16_to_upper+2104) | |
|00000008|03 |0019F844|77ABCD00|ntdll.dll |0003CD00|ntdll | | (possible RtlAllocateHeap+80) | |
|00000008|03 |0019F844|77ABCCE9|ntdll.dll |0003CCE9|ntdll | |RtlAllocateHeap | |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| |
|Running Thread: ID=8676; Parent=10640; Priority=0 |
|Class=TAnonymousThread; Name=[Unnamed thread] Kind: TThread. Thread function: System.Classes.TAnonymousThread.Execute. Thread caller: ceflib.cef_render_process_handler_on_render_thread_created (System.Classes.TAnonymousThread.Execute)|
|DeadLock=0; Wait Chain=thread: [ 21E4 / 8676 ] is blocked |
|Comment= |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|03 |00000000|77AEF8DC|ntdll.dll |0006F8DC|ntdll | |ZwDelayExecution | |
|00000008|03 |0C27FEAC|75E06140|KERNELBASE.dll |00106140|KERNELBASE | |SleepEx | |
|00000008|03 |0C27FEAC|75E0612A|KERNELBASE.dll |0010612A|KERNELBASE | |Sleep | |
|00000008|03 |0C27FEBC|75B86680|kernel32.dll |00016680|KERNEL32 | | (possible SizeofResource+32) | |
|00000008|04 |0C27FEBC|004CF455|MediaMonkeyEngine.exe|000CF455|System.Classes |TThread |Sleep |15309[0] |
|00000008|04 |0C27FEC4|0173791C|MediaMonkeyEngine.exe|0133791C|AppInitCode |monitorBrowserKill$17015$ActRec |$0$Body |1154[44] |
|00000008|04 |0C27FEEC|004CC929|MediaMonkeyEngine.exe|000CC929|System.Classes |TAnonymousThread |Execute |14363[0] |
|00000008|04 |0C27FEF0|004CE571|MediaMonkeyEngine.exe|000CE571|System.Classes | |ThreadProc |14561[16] |
|00000008|04 |0C27FEF8|004CE58E|MediaMonkeyEngine.exe|000CE58E|System.Classes | |ThreadProc |14563[18] |
|00000008|04 |0C27FEF8|004CE57C|MediaMonkeyEngine.exe|000CE57C|System.Classes | |ThreadProc |14561[16] |
|00000008|04 |0C27FF20|006B1F80|MediaMonkeyEngine.exe|002B1F80|EThreadsManager | |NakedBeginThreadWrapper |1287[5] |
|00000008|04 |0C27FF30|0077D77C|MediaMonkeyEngine.exe|0037D77C|EExceptionManager| |DefaultThreadHandleException |2767[6] |
|00000008|04 |0C27FF3C|0077D7C9|MediaMonkeyEngine.exe|0037D7C9|EExceptionManager| |DefaultThreadHandleException |2772[11] |
|00000008|04 |0C27FF3C|0077D7A2|MediaMonkeyEngine.exe|0037D7A2|EExceptionManager| |DefaultThreadHandleException |2769[8] |
|00000008|04 |0C27FF54|006B2B08|MediaMonkeyEngine.exe|002B2B08|EThreadsManager | |ThreadWrapperCT |1677[17] |
|00000008|03 |0C27FF84|75B88672|kernel32.dll |00018672|KERNEL32 | |BaseThreadInitThunk | |
|7FFFFFFE|04 |00000000|01822444|MediaMonkeyEngine.exe|01422444|ceflib | |cef_render_process_handler_on_render_thread_created |15240[3] |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| |
|Running Thread: ID=8848; Parent=0; Priority=0 |
|Class=; Name= |
|DeadLock=0; Wait Chain=thread: [ 2290 / 8848 ] is blocked |
|Comment= |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|03 |00000000|77AF122C|ntdll.dll |0007122C|ntdll | |ZwWaitForWorkViaWorkerFactory | |
|00000008|03 |05DBFF84|75B88672|kernel32.dll |00018672|KERNEL32 | |BaseThreadInitThunk | |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| |
|Running Thread: ID=10096; Parent=10640; Priority=-2 |
|Class=TBQThread; Name=[Unnamed thread] Kind: TThread. Thread function: GenThread.TGenThread.Execute. Thread caller: GenThread.TGenThread.Create (GenThread.TGenThread.Execute) |
|DeadLock=0; Wait Chain=thread: [ 2770 / 10096 ] is blocked |
|Comment= |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|03 |00000000|77AEFB4C|ntdll.dll |0006FB4C|ntdll | |ZwWaitForMultipleObjects | |
|00000008|03 |0C89FD14|75BDDD80|kernel32.dll |0006DD80|KERNEL32 | | (possible MulDiv+912) | |
|00000008|04 |0C89FD14|00445A5E|MediaMonkeyEngine.exe|00045A5E|System.SyncObjs |THandleObject |WaitFor |707[13] |
|00000008|04 |0C89FD38|00581DCA|MediaMonkeyEngine.exe|00181DCA|Utils |TMMEvent |WaitFor |7279[5] |
|00000008|04 |0C89FD4C|017A42F7|MediaMonkeyEngine.exe|013A42F7|BaseShared |TFastTask |waitForFinished |8561[1] |
|00000008|04 |0C89FD54|0179BA1F|MediaMonkeyEngine.exe|0139BA1F|BaseShared | |runInJSThread |2450[82] |
|00000008|04 |0C89FD90|017D7E1B|MediaMonkeyEngine.exe|013D7E1B|BaseShared |{BaseShared}_TSharedList`1 |modifyAsync$7299$ActRec<BaseShared.ISharedString>.$1$Body|5878[4] |
|00000008|04 |0C89FDC0|0179E142|MediaMonkeyEngine.exe|0139E142|BaseShared |TSharedBase |RunAsPromise$7118$ActRec.$0$Body |3031[1] |
|00000008|04 |0C89FDCC|007A8CDA|MediaMonkeyEngine.exe|003A8CDA|Workers |TAnonProcTask |execute |946[3] |
|00000008|04 |0C89FDD4|007A8D21|MediaMonkeyEngine.exe|003A8D21|Workers |TAnonProcTask |execute |955[12] |
|00000008|04 |0C89FDD4|007A8CE5|MediaMonkeyEngine.exe|003A8CE5|Workers |TAnonProcTask |execute |946[3] |
|00000008|04 |0C89FDEC|007A83F9|MediaMonkeyEngine.exe|003A83F9|Workers |TBackgroundQueue |ProcessTasks |768[107] |
|00000008|04 |0C89FE54|004053F4|MediaMonkeyEngine.exe|000053F4|System | |SysGetMem |1874[0] |
|00000008|04 |0C89FE54|004069EC|MediaMonkeyEngine.exe|000069EC|System | |_GetMem |4316[20] |
|00000008|04 |0C89FE78|007A8074|MediaMonkeyEngine.exe|003A8074|Workers |TBackgroundQueue |ProcessTasks |661[0] |
|00000008|04 |0C89FE78|007A976F|MediaMonkeyEngine.exe|003A976F|Workers |TBQThread |GenExecute |1170[2] |
|00000008|04 |0C89FE94|016F1CB6|MediaMonkeyEngine.exe|012F1CB6|GenThread |TGenThread |Execute |915[31] |
|00000008|04 |0C89FE9C|016F1CDC|MediaMonkeyEngine.exe|012F1CDC|GenThread |TGenThread |Execute |920[36] |
|00000008|04 |0C89FE9C|016F1CC4|MediaMonkeyEngine.exe|012F1CC4|GenThread |TGenThread |Execute |915[31] |
|00000008|04 |0C89FEF0|004CE571|MediaMonkeyEngine.exe|000CE571|System.Classes | |ThreadProc |14561[16] |
|00000008|04 |0C89FEF8|004CE58E|MediaMonkeyEngine.exe|000CE58E|System.Classes | |ThreadProc |14563[18] |
|00000008|04 |0C89FEF8|004CE57C|MediaMonkeyEngine.exe|000CE57C|System.Classes | |ThreadProc |14561[16] |
|00000008|04 |0C89FF20|006B1F80|MediaMonkeyEngine.exe|002B1F80|EThreadsManager | |NakedBeginThreadWrapper |1287[5] |
|00000008|04 |0C89FF30|0077D77C|MediaMonkeyEngine.exe|0037D77C|EExceptionManager| |DefaultThreadHandleException |2767[6] |
|00000008|04 |0C89FF3C|0077D7C9|MediaMonkeyEngine.exe|0037D7C9|EExceptionManager| |DefaultThreadHandleException |2772[11] |
|00000008|04 |0C89FF3C|0077D7A2|MediaMonkeyEngine.exe|0037D7A2|EExceptionManager| |DefaultThreadHandleException |2769[8] |
|00000008|04 |0C89FF54|006B2B08|MediaMonkeyEngine.exe|002B2B08|EThreadsManager | |ThreadWrapperCT |1677[17] |
|00000008|03 |0C89FF84|75B88672|kernel32.dll |00018672|KERNEL32 | |BaseThreadInitThunk | |
|7FFFFFFE|04 |00000000|016F14A3|MediaMonkeyEngine.exe|012F14A3|GenThread |TGenThread |Create |651[36] |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| |
|Running Thread: ID=11376; Parent=10640; Priority=0 |
|Class=TAnonymousThread; Name=[Unnamed thread] Kind: TThread. Thread function: System.Classes.TAnonymousThread.Execute. Thread caller: EAppCEF.throwELException (System.Classes.TAnonymousThread.Execute)|
|DeadLock=0; Wait Chain=thread: [ 2C70 / 11376 ] is blocked |
|Comment= |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|03 |00000000|76722A9C|win32u.dll |00002A9C|win32u | |NtUserWaitMessage | |
|00000008|03 |0FAFFB6C|74A05E86|user32.dll |00035E86|user32 | |LoadImageW | |
|00000008|03 |0FAFFB6C|74A06555|user32.dll |00036555|user32 | |RegisterClassExW | |
|00000008|03 |0FAFFB84|74A21CEB|user32.dll |00051CEB|user32 | |GetMagnificationDesktopSamplingMode | |
|00000008|03 |0FAFFB84|74A403D9|user32.dll |000703D9|user32 | | (possible SoftModalMessageBox+1737) | |
|00000008|03 |0FAFFB9C|74A0646B|user32.dll |0003646B|user32 | |CharUpperW | |
|00000008|03 |0FAFFB9C|74A40436|user32.dll |00070436|user32 | | (possible SoftModalMessageBox+1830) | |
|00000008|03 |0FAFFBBC|77AF16B0|ntdll.dll |000716B0|ntdll | | (possible CsrIdentifyAlertableThread+1104) | |
|00000008|03 |0FAFFBBC|77AC8CBC|ntdll.dll |00048CBC|ntdll | | (possible LdrShutdownThread+1452) | |
|00000008|03 |0FAFFC50|749EE19B|user32.dll |0001E19B|user32 | | (possible GetOpenClipboardWindow+67) | |
|00000008|03 |0FAFFC50|749F7C1F|user32.dll |00027C1F|user32 | |IsIconic | |
|00000008|03 |0FAFFC68|767239EA|win32u.dll |000039EA|win32u | |NtUserModifyUserStartupInfoFlags | |
|00000008|03 |0FAFFC70|74A3FD10|user32.dll |0006FD10|user32 | |SoftModalMessageBox | |
|00000008|03 |0FAFFC70|74A2208E|user32.dll |0005208E|user32 | |GetMagnificationDesktopSamplingMode | |
|00000008|03 |0FAFFCF0|77B09F21|ntdll.dll |00089F21|ntdll | | (possible EtwCheckCoverage+3249) | |
|00000008|03 |0FAFFCF0|77AE4C61|ntdll.dll |00064C61|ntdll | | (possible LdrInitializeThunk+1249) | |
|00000008|03 |0FAFFCF4|77AE47F9|ntdll.dll |000647F9|ntdll | | (possible LdrInitializeThunk+121) | |
|00000008|03 |0FAFFCF4|77AE47E9|ntdll.dll |000647E9|ntdll | |LdrInitializeThunk | |
|00000008|03 |0FAFFCF8|77AEF9CA|ntdll.dll |0006F9CA|ntdll | |ZwContinue | |
|00000008|03 |0FAFFCFC|77AEF9C0|ntdll.dll |0006F9C0|ntdll | |ZwContinue | |
|00000008|03 |0FAFFCFC|77AE47AF|ntdll.dll |000647AF|ntdll | |LdrInitializeThunk | |
|00000008|03 |0FAFFD20|77AEFB4A|ntdll.dll |0006FB4A|ntdll | |ZwWaitForMultipleObjects | |
|00000008|03 |0FAFFD24|77AEFB40|ntdll.dll |0006FB40|ntdll | |ZwWaitForMultipleObjects | |
|00000008|03 |0FAFFD24|75E04B4D|KERNELBASE.dll |00104B4D|KERNELBASE | |WaitForMultipleObjectsEx | |
|00000008|03 |0FAFFD38|75E04BED|KERNELBASE.dll |00104BED|KERNELBASE | | (possible WaitForMultipleObjectsEx+413) | |
|00000008|03 |0FAFFD38|75E04B6A|KERNELBASE.dll |00104B6A|KERNELBASE | |WaitForMultipleObjectsEx | |
|00000008|03 |0FAFFD48|75E13120|KERNELBASE.dll |00113120|KERNELBASE | | (possible GetCurrentApplicationUserModelId+32) | |
|00000008|03 |0FAFFD48|75E04B8C|KERNELBASE.dll |00104B8C|KERNELBASE | |WaitForMultipleObjectsEx | |
|00000008|03 |0FAFFDBC|77AD4010|ntdll.dll |00054010|ntdll | | (possible SbSelectProcedure+192) | |
|00000008|03 |0FAFFDBC|77B09B5D|ntdll.dll |00089B5D|ntdll | | (possible EtwCheckCoverage+2285) | |
|00000008|03 |0FAFFDC8|77AF5AB0|ntdll.dll |00075AB0|ntdll | |memset | |
|00000008|03 |0FAFFDC8|74A3FB7B|user32.dll |0006FB7B|user32 | |MessageBoxTimeoutW | |
|00000008|03 |0FAFFDD4|74A21DF9|user32.dll |00051DF9|user32 | |GetMagnificationDesktopSamplingMode | |
|00000008|03 |0FAFFDD4|74A3FCB0|user32.dll |0006FCB0|user32 | |MessageBoxTimeoutW | |
|00000008|03 |0FAFFE60|74A3FB50|user32.dll |0006FB50|user32 | |MessageBoxTimeoutW | |
|00000008|03 |0FAFFE60|74A3FCF5|user32.dll |0006FCF5|user32 | |MessageBoxW | |
|00000008|03 |0FAFFE80|74A3FCE0|user32.dll |0006FCE0|user32 | |MessageBoxW | |
|00000008|04 |0FAFFE80|00B05A96|MediaMonkeyEngine.exe|00705A96|ExceptionHandler | |MyMessageDialog |220[3] |
|00000008|04 |0FAFFEA8|00B05C82|MediaMonkeyEngine.exe|00705C82|ExceptionHandler | |handleExceptionDialog |303[49] |
|00000008|04 |0FAFFEDC|00B06057|MediaMonkeyEngine.exe|00706057|ExceptionHandler |processSafeRun$11996$ActRec |$0$Body |351[7] |
|00000008|04 |0FAFFEEC|004CC929|MediaMonkeyEngine.exe|000CC929|System.Classes |TAnonymousThread |Execute |14363[0] |
|00000008|04 |0FAFFEF0|004CE571|MediaMonkeyEngine.exe|000CE571|System.Classes | |ThreadProc |14561[16] |
|00000008|04 |0FAFFEF8|004CE58E|MediaMonkeyEngine.exe|000CE58E|System.Classes | |ThreadProc |14563[18] |
|00000008|04 |0FAFFEF8|004CE57C|MediaMonkeyEngine.exe|000CE57C|System.Classes | |ThreadProc |14561[16] |
|00000008|04 |0FAFFF20|006B1F80|MediaMonkeyEngine.exe|002B1F80|EThreadsManager | |NakedBeginThreadWrapper |1287[5] |
|00000008|04 |0FAFFF30|0077D77C|MediaMonkeyEngine.exe|0037D77C|EExceptionManager| |DefaultThreadHandleException |2767[6] |
|00000008|04 |0FAFFF3C|0077D7C9|MediaMonkeyEngine.exe|0037D7C9|EExceptionManager| |DefaultThreadHandleException |2772[11] |
|00000008|04 |0FAFFF3C|0077D7A2|MediaMonkeyEngine.exe|0037D7A2|EExceptionManager| |DefaultThreadHandleException |2769[8] |
|00000008|04 |0FAFFF54|006B2B08|MediaMonkeyEngine.exe|002B2B08|EThreadsManager | |ThreadWrapperCT |1677[17] |
|00000008|03 |0FAFFF84|75B88672|kernel32.dll |00018672|KERNEL32 | |BaseThreadInitThunk | |
|7FFFFFFE|04 |00000000|00B05114|MediaMonkeyEngine.exe|00705114|EAppCEF | |throwELException |236[2] |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------