Age | Commit message (Collapse) | Author | Files | Lines |
|
...and neither exclusively nor additionally as an environment variable (where
bootstrap variables include environment variables, see the @file comment in
include/rtl/bootstrap.h). Note that LibLibreOffice_Impl::initialize
(desktop/source/lib/init.cxx) sets it as a bootstrap, not as an environment
variable. (Though desktop/unx/source/start.c still only reads it as an
environment variable; could potentially check argv for
-env:SAL_USE_VCLPLUGIN=...)
Change-Id: I9315f585cdb4f0783181359e030686167c4e4625
|
|
Change-Id: Ibe31a105972cee2aff9b6896cdd80bd93a1a0e7d
|
|
Change-Id: I6118c55caa12d9ba52000f89e869e27b218859be
|
|
Change-Id: If0983696bf9a44bda6edeb746c121446106a95c5
|
|
Change-Id: I7bfd221f89718ba8634417c93a26b3a199178694
|
|
does not work yet - needs fix by tor after refactoring of ios-bootstrap.h
Change-Id: I0728306beb734511bd3f16e2e4922fd726bb37da
|
|
Change-Id: I6f640c0c4459f8330261ca59145a10b7a624bbe8
|
|
Change-Id: Id3691ab81af466dd21cc86592c5ac0c2c7a1c8f7
Reviewed-on: https://gerrit.libreoffice.org/6244
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I0b4c2ba6679c8d2754f2a7cd8b8f693db335e004
|
|
Change-Id: I93bd132b1d536843d4d8627230bfa9ef22cd623b
Reviewed-on: https://gerrit.libreoffice.org/6245
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I475bee35ca5d24903d85e7f2427fab0e47d8db4d
|
|
Change-Id: Ic41348b7ebce95325c8449c21b6f303ca54c2417
|
|
Change-Id: I2e494843226b4dcb72eadfabd55f6e6de42ddfc6
|
|
Change-Id: Iefef3ac1e56444e387916dd1eae65007152c831e
|
|
Change-Id: Iafb0b074ee9705d96d6deac9ade5baeb94586d74
|
|
Change-Id: I0f929843d73eb445c8b1aa56d59cbbce844b9008
|
|
Change-Id: I0d842cc951cb5a3e7e990f835f541ccf1bd89df6
|
|
Rename functions so that functions called by the UI layer for actions
to happen in the LO layer and functions called by the LO layer for
things to happen in the UI layer use different prefixes. Move
declarations to the generic <touch/touch.h> and avoid iOS-specific
types in the API.
Change-Id: Ieb8979065e02a87c4a415c934163265f2790d011
|
|
Change-Id: I9ea868ed5bf6e2e2defbd51d5a0a1e6362c3be8d
|
|
Change-Id: Ie03696eccde6b1a02a839321f84c6a23b73419ca
|
|
Change-Id: I39023acc08e652fcc9d365fe50a8240cbe0b610d
|
|
Change-Id: Id8a5df0151fa07ca36fc84206501b94a3405b114
|
|
Change-Id: Ib7a71797a2dc967f9d8ddd60fdc10c78201a87c8
Reviewed-on: https://gerrit.libreoffice.org/5911
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
|
|
Change-Id: Ib54df2162b92da92d1b9ba14185d0e7f837e7cab
|
|
Change-Id: Icb0e2b1bd7dabc14a3dce9e70ea5e7ef870484e8
|
|
Change-Id: I9e6c8ab9e2c113ec0f207a2f96e34c0fcdb70a62
|
|
Change-Id: I45762d167d04252e32155a7b23a3290688bccdf6
|
|
Needs a deleted canvastools method, move code into more idiomatic
vcl/qa place, adapt to new unit test framework.
Change-Id: Iddb9c2249673b4d580e46a1d72029be0a8c4d9ba
|
|
Minor further changes by tml to match the coding style of surrounding
code mainly.
Change-Id: Ied6087a264f1c6b00763ea36fba9808329afede4
Reviewed-on: https://gerrit.libreoffice.org/5742
Tested-by: Tor Lillqvist <tml@collabora.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
|
|
Change-Id: I01e2067b4e410809be1278ab709a374d9a0ce314
|
|
Change-Id: Ibff239592b517f8ba2ccd0649184e36f95cf1c2d
|
|
Change-Id: I45fbcaae87b8ecff5fc25eca646e19849beda293
|
|
Change-Id: I4bf9e0c7a548c0f22ce670803bc8334277f80c9e
|
|
Let's revert this for the time being, before we have the full solution that
works both for sidebars, as well as for the normal docked windows.
This reverts commit 16ea2dc1f572d698923c770a2a58f7ab402d1298.
|
|
Change-Id: I9b004005ac1136861759a33cee08cd945ac7d993
|
|
Change-Id: I875f11347c8d73297ef19c7da858b7246ebd44ca
|
|
Change-Id: I09ff8a9e7c15c45d6d95c6abd750a4f1386a87ac
|
|
Change-Id: Ic63defe9c14c6ee2b86bd5b7730a570238ca3981
|
|
(cherry picked from commit d519b07ecd4b67cedf1fe3e1860ef33a48a01ae4)
Conflicts:
vcl/source/fontsubset/sft.cxx
Change-Id: I51d4a97f1f01be49cb5ab058019cd153e23437bd
|
|
Change-Id: I72e497fb97edf8782c69000576f42896594e1556
|
|
Change-Id: I866934c9cf92a642d81f20cb10e8c3f666a8dcfb
|
|
Change-Id: I543e00048544eb7835cf1f0f31794e5a8bbb1962
|
|
It is evidently possible that SelectionManager::run() exits while
shutdown() is still trying to write to its end of the pipe, so close the
pipe when run() exits to avoid that.
(regression from ec5a7256ca549d358b9c5380194ea2d1b991a73e)
Change-Id: Ibc2823c61ea5df5b5227676c6e37ae5de44cde6b
|
|
Check that SolarMutex is locked after return from
Yield(), and in LazyDelete::flush().
Change-Id: I12ff312bd946b97b5f2c79169892719910884381
|
|
Frame #10 in libatk-bridge.so calls atk_misc_threads_enter(),
and having a look at the RHEL 6.5 at-spi package in
./at-spi-1.28.1/atk-bridge/bridge.c there is always the same call
pattern:
bridge_threads_leave ();
[one function call]
bridge_threads_enter ();
... so the bridge_threads_leave() has called the VCL gtk-plug function
GtkHookedYieldMutex::ThreadsLeave() which releases the SolarMutex.
This is of course not a good idea while there is a Window being deleted,
and is the reason why the same Window is being deleted in thread 1 and
thread 2:
31 0x00000fff94a5fc00 in Window::~Window (this=0xfff702b2d30,
__in_chrg=<value optimized out>) at
/usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:4272
16 0x00000fff94a5fc00 in Window::~Window (this=0xfff702b2d30,
__in_chrg=<value optimized out>) at
/usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:4272
Try to avoid the problem by delaying the
atk_object_notify_state_change() that will release SolarMutex until idle,
when deletion of the Window is finished.
Thread 2 (Thread 0xfff4cbcf110 (LWP 17011)):
2 0x0000008013c6e718 in .pthread_mutex_lock () from /lib64/libc.so.6
3 0x000000801576e4fc in osl_acquireMutex (Mutex=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/sal/osl/unx/mutex.c:114
4 0x00000fff963a7908 in acquire (this=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/solver/unxlngppc64.pro/inc/osl/mutex.hxx:58
5 ClearableGuard (this=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/solver/unxlngppc64.pro/inc/osl/mutex.hxx:177
6 cppu::WeakAggComponentImplHelperBase::dispose (this=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/cppuhelper/source/implbase.cxx:392
7 0x00000fff5f1b3444 in comphelper::disposeComponent<com::sun::star::accessibility::XAccessible> (_rxComp=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/solver/unxlngppc64.pro/inc/comphelper/types.hxx:114
8 0x00000fff5f273ba8 in VCLXAccessibleToolBox::implReleaseToolboxItem (this=<value optimized out>, _rMapPos=<value optimized out>, _bNotifyRemoval=<value optimized out>, _bDispose=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/accessibility/source/standard/vclxaccessibletoolbox.cxx:326
9 0x00000fff5f2747e4 in VCLXAccessibleToolBox::ProcessWindowEvent (this=0xfff5f8b8fe0, rVclWindowEvent=...) at /usr/src/debug/libreoffice-4.0.4.2/accessibility/source/standard/vclxaccessibletoolbox.cxx:612
10 0x00000fff951e4ad4 in VCLXAccessibleComponent::WindowEventListener (this=0xfff5f8b8fe0, pEvent=0xfff4cbcc950) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxaccessiblecomponent.cxx:136
11 0x00000fff951e4b20 in VCLXAccessibleComponent::LinkStubWindowEventListener (pThis=<value optimized out>, pCaller=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxaccessiblecomponent.cxx:121
12 0x00000fff946dd420 in Call (this=0xfff702b32a0, pEvent=0xfff4cbcc950) at /usr/src/debug/libreoffice-4.0.4.2/solver/unxlngppc64.pro/inc/tools/link.hxx:123
13 VclEventListeners::Call (this=0xfff702b32a0, pEvent=0xfff4cbcc950) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/app/vclevent.cxx:66
14 0x00000fff94a4bab0 in Window::CallEventListeners (this=0xfff702b2d30, nEvent=<value optimized out>, pData=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:5272
15 0x00000fff94a4bc80 in Window::ImplCallEventListeners (this=<value optimized out>, nEvent=<value optimized out>, pData=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:5255
16 0x00000fff94a5fc00 in Window::~Window (this=0xfff702b2d30, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:4272
17 0x00000fff94a61138 in Window::~Window (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:4683
18 0x00000fff951efcf0 in VCLXDevice::DestroyOutputDevice (this=0xfff6801f010) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxdevice.cxx:56
19 0x00000fff952347a8 in VCLXWindow::dispose (this=0xfff6801f010) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxwindow.cxx:957
20 0x00000fff953c5f28 in UnoWrapper::WindowDestroyed (this=<value optimized out>, pWindow=0xfff70115a80) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/helper/unowrapper.cxx:263
21 0x00000fff94a60130 in Window::~Window (this=0xfff70115a80, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:4334
22 0x00000fff949cc8b4 in DockingAreaWindow::~DockingAreaWindow (this=0xfff70115a80, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/dockingarea.cxx:96
23 0x00000fff949cc918 in DockingAreaWindow::~DockingAreaWindow (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/dockingarea.cxx:96
24 0x00000fff951efcf0 in VCLXDevice::DestroyOutputDevice (this=0xfff6801c310) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxdevice.cxx:56
25 0x00000fff952347a8 in VCLXWindow::dispose (this=0xfff6801c310) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxwindow.cxx:957
26 0x00000fff953c5f28 in UnoWrapper::WindowDestroyed (this=<value optimized out>, pWindow=0xfff7001a320) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/helper/unowrapper.cxx:263
27 0x00000fff94a60130 in Window::~Window (this=0xfff7001a320, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:4334
28 0x00000fff94a1f7fc in SystemWindow::~SystemWindow (this=0xfff7001a320, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/syswin.cxx:89
29 0x00000fff94a6c744 in WorkWindow::~WorkWindow (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/wrkwin.cxx:150
30 0x00000fff94a6c7e8 in WorkWindow::~WorkWindow (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/wrkwin.cxx:150
31 0x00000fff951efcf0 in VCLXDevice::DestroyOutputDevice (this=0xfff8c486f48) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxdevice.cxx:56
32 0x00000fff952347a8 in VCLXWindow::dispose (this=0xfff8c486f48) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxwindow.cxx:957
33 0x00000fff88258ec0 in framework::Frame::impl_disposeContainerWindow (this=<value optimized out>, xWindow=...) at /usr/src/debug/libreoffice-4.0.4.2/framework/source/services/frame.cxx:2689
34 0x00000fff8826d71c in framework::Frame::dispose (this=0xfff8c308a08) at /usr/src/debug/libreoffice-4.0.4.2/framework/source/services/frame.cxx:1887
35 0x00000fff88263018 in framework::Frame::close (this=0xfff8c308a08, bDeliverOwnerShip=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/framework/source/services/frame.cxx:1650
36 0x00000fff88255908 in framework::Desktop::impl_closeFrames (this=<value optimized out>, bAllowUI=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/framework/source/services/desktop.cxx:1928
37 0x00000fff88256120 in framework::Desktop::terminate (this=0xfff8b3de388) at /usr/src/debug/libreoffice-4.0.4.2/framework/source/services/desktop.cxx:292
Thread 1 (Thread 0xfff930e82a0 (LWP 16956)):
2 0x0000008013c6e718 in .pthread_mutex_lock () from /lib64/libc.so.6
3 0x000000801576e4fc in osl_acquireMutex (Mutex=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/sal/osl/unx/mutex.c:114
4 0x00000fff946cd114 in vcl::SolarMutexObject::acquire (this=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/app/solarmutex.cxx:35
5 0x00000fff94a6ecb8 in SalYieldMutex::acquire (this=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/generic/app/geninst.cxx:49
6 0x00000fff8c24cb90 in GtkHookedYieldMutex::acquire (this=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/unx/gtk/app/gtkinst.cxx:91
7 0x00000fff8c24cd2c in GtkHookedYieldMutex::ThreadsEnter (this=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/unx/gtk/app/gtkinst.cxx:64
8 0x00000fff8b6dfabc in ?? () from /usr/lib64/gtk-2.0/modules/libgail.so
9 0x00000fff8b9f333c in .atk_misc_threads_enter () from /usr/lib64/libatk-1.0.so.0
10 0x00000fff8c1d534c in ?? () from /usr/lib64/gtk-2.0/modules/libatk-bridge.so
11 0x00000fff8c1d65fc in ?? () from /usr/lib64/gtk-2.0/modules/libatk-bridge.so
12 0x00000fff936af4e0 in ?? () from /lib64/libgobject-2.0.so.0
13 0x00000fff936b13d0 in .g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
14 0x00000fff936b18f8 in .g_signal_emit () from /lib64/libgobject-2.0.so.0
15 0x00000fff8b9e5f3c in .atk_object_notify_state_change () from /usr/lib64/libatk-1.0.so.0
16 0x00000fff8c23083c in AtkListener::disposing (this=0xfff5f98dbc8) at /usr/src/debug/libreoffice-4.0.4.2/vcl/unx/gtk/a11y/atklistener.cxx:81
17 0x00000fff963aee2c in cppu::OInterfaceContainerHelper::disposeAndClear (this=<value optimized out>, rEvt=...) at /usr/src/debug/libreoffice-4.0.4.2/cppuhelper/source/interfacecontainer.cxx:316
18 0x00000fff9659d944 in comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing (_nClient=<value optimized out>, _rxEventSource=...) at /usr/src/debug/libreoffice-4.0.4.2/comphelper/source/misc/accessibleeventnotifier.cxx:162
19 0x00000fff9659b20c in comphelper::OAccessibleContextHelper::disposing (this=0xfff5f8bb7e0) at /usr/src/debug/libreoffice-4.0.4.2/comphelper/source/misc/accessiblecontexthelper.cxx:130
20 0x00000fff5f275898 in VCLXAccessibleToolBoxItem::disposing (this=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/accessibility/source/standard/vclxaccessibletoolboxitem.cxx:265
21 0x00000fff963a79fc in cppu::WeakAggComponentImplHelperBase::dispose (this=0xfff5f8bb7e0) at /usr/src/debug/libreoffice-4.0.4.2/cppuhelper/source/implbase.cxx:404
22 0x00000fff5f1b3444 in comphelper::disposeComponent<com::sun::star::accessibility::XAccessible> (_rxComp=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/solver/unxlngppc64.pro/inc/comphelper/types.hxx:114
23 0x00000fff5f273ba8 in VCLXAccessibleToolBox::implReleaseToolboxItem (this=<value optimized out>, _rMapPos=<value optimized out>, _bNotifyRemoval=<value optimized out>, _bDispose=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/accessibility/source/standard/vclxaccessibletoolbox.cxx:326
24 0x00000fff5f2747e4 in VCLXAccessibleToolBox::ProcessWindowEvent (this=0xfff5f8b8fe0, rVclWindowEvent=...) at /usr/src/debug/libreoffice-4.0.4.2/accessibility/source/standard/vclxaccessibletoolbox.cxx:612
25 0x00000fff951e4ad4 in VCLXAccessibleComponent::WindowEventListener (this=0xfff5f8b8fe0, pEvent=0xfffdc31f990) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxaccessiblecomponent.cxx:136
26 0x00000fff951e4b20 in VCLXAccessibleComponent::LinkStubWindowEventListener (pThis=<value optimized out>, pCaller=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/toolkit/source/awt/vclxaccessiblecomponent.cxx:121
27 0x00000fff946dd420 in Call (this=0xfff702b32a0, pEvent=0xfffdc31f990) at /usr/src/debug/libreoffice-4.0.4.2/solver/unxlngppc64.pro/inc/tools/link.hxx:123
28 VclEventListeners::Call (this=0xfff702b32a0, pEvent=0xfffdc31f990) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/app/vclevent.cxx:66
29 0x00000fff94a4bab0 in Window::CallEventListeners (this=0xfff702b2d30, nEvent=<value optimized out>, pData=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:5272
30 0x00000fff94a4bc80 in Window::ImplCallEventListeners (this=<value optimized out>, nEvent=<value optimized out>, pData=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:5255
31 0x00000fff94a5fc00 in Window::~Window (this=0xfff702b2d30, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/window.cxx:4272
32 0x00000fff949d41c4 in DockingWindow::~DockingWindow (this=0xfff702b2d30, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/dockwin.cxx:473
33 0x00000fff94a35944 in ToolBox::~ToolBox (this=0xfff702b2d30, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/window/toolbox.cxx:1698
34 0x00000fff88343e40 in framework::ToolBar::~ToolBar (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/framework/source/uielement/toolbar.cxx:35
35 0x00000fff88343e88 in framework::ToolBar::~ToolBar (this=0xfff702b2d30, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/framework/source/uielement/toolbar.cxx:35
36 0x00000fff94a66a00 in ~LazyDeletor (this=0xfff40007720, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/solver/unxlngppc64.pro/inc/vcl/lazydelete.hxx:162
37 vcl::LazyDeletor<Window>::~LazyDeletor (this=0xfff40007720, __in_chrg=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/solver/unxlngppc64.pro/inc/vcl/lazydelete.hxx:164
38 0x00000fff94998868 in vcl::LazyDelete::flush () at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/helper/lazydelete.cxx:54
39 0x00000fff946d2294 in ImplYield (i_bAllEvents=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/app/svapp.cxx:434
40 Application::Yield (i_bAllEvents=<value optimized out>) at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/app/svapp.cxx:463
41 0x00000fff946d22f8 in Application::Execute () at /usr/src/debug/libreoffice-4.0.4.2/vcl/source/app/svapp.cxx:408
Change-Id: Ic742442dd6ffeba59655c2e66df8dbabc906f061
|
|
Change-Id: I63b1de195bf2f3f8bfd185181f48b1520cdd849f
|
|
Change-Id: I5edfd48f499c0b06ae50baefa208875ac51653f7
|
|
Change-Id: I80848606487626a50fce93f0c6df3cfc8a50b35b
|
|
Change-Id: I6149e9e4491aee1ca9924584caa94064bccdcc83
|
|
Change-Id: Ib436192fc4fc30a0e6efa1618e5258f545abc36a
|