summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2013-04-0432-563/+698
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-04-0332-563/+698
| |\ | | | | | | | | | Change-Id: Id96d4076610366a7cc66c8d8382ca25c33eaa71d
| | * Correct location of mtdev define.Robin Burchell2013-04-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | evdevtouch moved to platform support, so the location in the plugin is now wrong (as was the file name) Change-Id: I976f5d7ee68f5da5ed1f61773b3d5da683e12c6f Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| | * Move the dbmstype to QSqlDriverPrivate so it can be used for all driversAndy Shaw2013-04-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | By moving it to QSqlDriverPrivate we make it easier to check what database is actually connected which is particularly useful for the autotests. Change-Id: I54d1c2c998919c1d54efb1b6ac9303070ece54aa Reviewed-by: Mark Brand <mabrand@mabrand.nl>
| | * Cache QAccessibleInterfaces.Frederik Gladhorn2013-04-0221-443/+598
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since there already is a one-to-one relationship between QObject and QAccessibleInterface it makes little sense to create and destroy the interfaces on each call to queryAccessibleInterface. Add a cache and keep created interfaces around for the lifetime of the corresponding QObject. This changes the memory management rules: accessible interfaces must no longer be deleted. If you get an QAccessibleIntrface pointer that pointer will stay valid as long as the corresponding QObject is not deleted. This also re-enables accessibility for Mac. We limit the range of the IDs so that they are useable for Windows directly. That means we can get rid of the event cache there. This is based on: Iebf2f374916fc70a9dd29e95f45a6444b85f6cee Change-Id: I9fe6531812c0dbc5b41101ac05830a6dd75e13a3 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| | * Let EglFS pick up a platform input context if installedGunnar Sletta2013-04-022-0/+7
| | | | | | | | | | | | | | | Change-Id: Ia3765997682f8f90c7f7da712527beea365e01ed Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| | * Fix reporting writing systems for non-TrueType fontsKonstantin Ritt2013-04-012-68/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to EnumFontFamExProc docs: > The ENUMLOGFONTEX structure includes the localized name > of the script (character set). lfCharSet ENUMLOGFONT's member must be used instead of comparing these names to non-localized ones. Also, when the font supports more than a single charset, EnumFontFamExProc callback is called for it once per charset; thus, we shouldn't "unsupport" writing systems in a subsequent call. Task-number: QTBUG-30448 Change-Id: I58fcf32958490cf5a3e873db8335e71a39a9c518 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * QFontConfigDatabase: fix fallbacksForFamily() for CJK languagesKonstantin Ritt2013-04-012-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For Han Unicode script, the language couldn't be determined algorithmically, the only way is guessing based on the user's locale. The is a regression introduced in 9b0fab6b62df98519ebfab117f14b9d3465d8c68 Change-Id: I84645885a825fdfb6c268edaf10185bf5e447eb5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * Remove unused header file.Gatis Paeglis2013-03-301-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | As Thomas Senyk found out, the compose input context plugin had a redundant include for the X11 keysym header file. Change-Id: Iad603b545803867d02d915acffe27991bb0b7ee4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Mac style: Fix disabled menu item palette entryGabriel de Dietrich2013-03-291-1/+2
| | | | | | | | | | | | | | | | | | | | | Also, removed an "magic color" form the style implementation. Change-Id: Iefd3ddc0d9d651d2b87f20eb1f9990a214b651df Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| | * Make qt_setDockMenu work and call it.Morten Johan Sørvig2013-03-292-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | The application delegate code from Qt 4 implements a non-working qt_setDockMenu. Correct the signature of the applicationDockMenu method. Change-Id: I6f531a78f91e0550b0e66cc4f2fa072006a030f4 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| | * Remove QMacQuartzPaintDevice.Morten Johan Sørvig2013-03-291-39/+0
| | | | | | | | | | | | | | | | | | | | | Not used in Qt 5. Change-Id: Ia0e14414afa524c5cc04151d20c168d93d8dcadb Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | | [QNX]Add an option to not run fullscreenAndreas Holzammer2013-04-043-5/+30
|/ / | | | | | | | | | | | | | | | | | | Add commandline option to set the default for fullscreen option. Change-Id: Ieaf2be3858082fb0e572c8fbaabfd38a698f14f6 Reviewed-by: Frank Osterfeld <frank.osterfeld@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
* | BlackBerry: fix compilationRafael Roquetto2013-04-011-1/+0
| | | | | | | | | | | | | | | | Remove a leftover #endif from the merge with stable Change-Id: Idd0509d2ddcc3e8e7914aaa59beabc8036f45fff Reviewed-by: Peter Hartmann <phartmann@blackberry.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* | iOS: Specify framework dependencies in the right placeTor Arne Vestbø2013-03-311-1/+1
| | | | | | | | | | | | | | | | | | Instead of unconditionally linking to Foundation, UIKit, and QuartzCore, we leave the dependencies for the iOS platform plugin, where the libs are actually used. Change-Id: Ie8cfad2c8230d1f1af6933b831e443fecb0c93f1 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* | QNX: Added warning when low memory event is receivedBernd Weimer2013-03-281-0/+6
| | | | | | | | | | | | | | | | | | Low memory warning has been added for debug purposes. Change-Id: I3ca4f1e68cec0914ce8d77b5bed4cde210c031fa Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Fabian Bumberger <fbumberger@rim.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-03-2868-149/+1501
|\| | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/qnx/qqnxtheme.cpp src/widgets/dialogs/qfileinfogatherer.cpp src/widgets/dialogs/qfilesystemmodel.cpp Change-Id: Ifa536969c4beafcdfeebbf6beda1674b86750be8
| * QCocoaScreen: Properly align secondary screens w.r.t. primary screenGabriel de Dietrich2013-03-271-5/+22
| | | | | | | | | | | | | | | | | | | | | | | | When using different resolution screens, one can arrange them around the primary screen. However, the vertical offset has to take into account the fact that NSScreen origin is bottom-left, whereas QScreen origin is top-left. This usualy impacts the geometry's y coordinate, and can result in popups showing in the wrong screen. Task-number: QTBUG-30348 Change-Id: I159e6be2b590bd2d9a31f3f36c3785afcc62123e Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Allow tslib to be specified at configure time.Michael Brasser2013-03-261-0/+4
| | | | | | | | | | Change-Id: I0ebf0eeea7e6a0b8136fb805f34f04082bc58c5e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| * Cocoa: Make touch events work again.Morten Johan Sørvig2013-03-264-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Bring back the ref-counted enable on enter/leave workaround we had in Qt 4: If any widget in a window sets WA_AcceptTouchEvents then that window will start processing touch events. Enabling touch events has implications for delivery of other events, for example by causing scrolling event lag. Change-Id: I307488937f417612eff624bf9892b82a7f69c1b7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Cocoa: Correct enter/leave event handling.Morten Johan Sørvig2013-03-263-4/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make top-level windows generate enter/leave events for sub-windows. Keep track of the current "under mouse" window in mouseMoved and send EnterLeave events when it changes. mouseEntered/mouseExited handles enters and leaves from the top-level window. Add tests/manual/cocoa/nativewidgets. Task-number: QTBUG-27550 Task-number: QTBUG-29751 Change-Id: If4b9f9e0f39d9fb05fdab45a100ffdcf107965ad Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * QNX: Code cleanup: normalize 'if' macro usageRafael Roquetto2013-03-2627-41/+41
| | | | | | | | | | | | | | | | | | Always use "if defined" instead of "ifdef". The same is valid for "ifndef" macros Change-Id: I8e8f65e36dc636c10b3d656ce9a89ab3a664a80b Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
| * Fixed shortcuts for some (e.g. Russian) layoutsCyril Oblikov2013-03-261-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | If CMD modificator is active [nsevent characters] is used now to get keyCode. In this case for example English "X" is returned instead of Russian "Ч" even if Russian input source is selected. Task-number: QTBUG-30306 Change-Id: I93cd292633e68327df0c580ed74fe8ad1c9ed27d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
| * Clean up touch window registration.Friedemann Kleint2013-03-252-7/+16
| | | | | | | | | | | | | | | | | | Stop processing for Qt::Desktop windows (which caused RegisterTouchWindow() to fail with access denied) and set a flag to cleanly unregister. Change-Id: I3d10c93ec92536d3ab1c0503f088c40b0c08a01f Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
| * OSX: WindowTransparentForInput QNSView pass events to next responderShawn Rutledge2013-03-241-2/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The default implementation (in the super class) passes the event to the next responder. This seems to be one valid way to handle the Qt::WindowTransparentForInput flag. So if a non-alien widget for which a native NSView is created has the flag WA_TransparentForMouseEvents, that means the window will have Qt::WindowTransparentForInput, and the NSView which is created on its behalf will pass on each event so that other NSViews have a chance to handle it. (It will also try to reject becoming first responder, but that doesn't seem to be enough for the following events to be passed on.) This is a followup to I979be9f72f7d225d7b960fc5db4c3956d2749982 which purported to obey the WindowTransparentForInput flag, but actually doesn't. Change-Id: Ia72a3573c2e3cbfa7ede70bee41ac36df6924598 Task-number: QTBUG-28816 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Guard usage of [NSApp setDockMenu].Morten Johan Sørvig2013-03-241-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | setDockMenu is not documented an may disappear. Closest documented replacement seems to be [NSApplicationDelegate applicationDockMenu:]. It can't be used as a direct replacement since it's a "virtual" getter that the application delegate implements. Change-Id: Id161196018057b75cbe7d6f6d2610c0932345c5f Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Use [NSSavePanel directoryUrl].Morten Johan Sørvig2013-03-241-1/+1
| | | | | | | | | | | | | | [NSSavePanel directory] is deprecated. Change-Id: I3515b565a25028dc5b7c966481707e001e44a077 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Call [m_qtView hasMask]Morten Johan Sørvig2013-03-241-1/+1
| | | | | | | | | | | | | | | | hasMask is a function on QNSView, m_contentView can be any NSView subclass. Change-Id: I88b5acbb8aad9aa4664e0f71f37add9dfa64f1b7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Remove unused variables in the Cocoa pluginMorten Johan Sørvig2013-03-242-2/+0
| | | | | | | | | | Change-Id: I7cdd369e2fbab02954da6ba3c05b31d93f1e7995 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Accessibility: Fix crash when updating in dtorFrederik Gladhorn2013-03-232-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This happens for example when running several tests. Widgets in destructor should be treated as invalid since their window pointer and other properties are no longer valid. When deleting a window containing only a table view there would be a table model reset update comming from the window being destroyed. Change-Id: Ia387c814333ce373fe132b189fc180787e36cdd5 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
| * Accessibility: Fix crash in windowHelperFrederik Gladhorn2013-03-233-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When accessing the parent, we cannot be sure that the parent interfaces are all valid. Invalid parents can happen during destruction. Another cause is unusual hierarchies, the QAbstractItemView::columnDelegate test triggers a situation where this used to crash. In addition to the actual problem, add checks for every parent() call. Change-Id: I70b2bf7bc3c02b0f33e22b81023fd24519adeba9 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
| * Do not update accessibility for invalid interfacesFrederik Gladhorn2013-03-231-1/+3
| | | | | | | | | | Change-Id: I8dc29ea51393406e529c76f25bf2f8cf426e26cf Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
| * Inform android input method when cursor is movedPaul Olav Tvete2013-03-222-0/+11
| | | | | | | | | | | | | | | | | | | | Google Japanese Input Beta keeps track of the cursor position, and bails out if the cursor is not where it thinks it should be. We have to tell the IM every time we move the cursor, not only when we are composing. Change-Id: I9cdb28f81c76e76d3b0125d08bf0595616ca443f Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
| * Remove QtWidgets dependency from Android platform pluginEskil Abrahamsen Blomfeldt2013-03-222-25/+4
| | | | | | | | | | | | | | | | | | | | | | The setFullScreen() function was never called from anywhere, so it was just removed. The update() loop for top level widgets has been replaced by a loop sending expose events to top level windows. Task-number: QTBUG-29313 Change-Id: Ic31a05ad3a0693f1d3f61457cee9d78f6b334b4d Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
| * Only instantiate QAccessibleWidget after trying inherited classesFrederik Gladhorn2013-03-222-10/+9
| | | | | | | | | | | | | | | | | | | | | | | | The plugin should try each class name from the meta object in succession instead of giving up right away and just using QWidget. This improves the handling of the itemviews and makes many sub-classes of QWidget outside of Qt work. Change-Id: Id81017c648fe229c3eb85d6d9ae6696d5f16a1ef Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
| * Implement [QNSView isOpaque]Morten Johan Sørvig2013-03-224-13/+17
| | | | | | | | | | | | | | | | | | | | | | Re-use the QCocoaWindow implementation. This gives a small performance boost since NSWindow can skip drawing the background if it knows that the content view will fill with opaque pixels. Change-Id: I4a9a14135d890e9132dd1cb0af5a1c1a769d7e2f Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Add qMenuToNSMenu() and qMenuBarToNSMenu() to QCocoaNativeInterface.Dmytro Tyshchenko2013-03-212-0/+25
| | | | | | | | | | | | | | | | | | | | | | Preparing the addition of toNSMenu() functions to QtMacExtras which will expose the native handle of a QMenu or QMenuBar. Task-number: QTBUG-28869 Change-Id: Ib07712f5da0758addbbf8a84d6881297420e7ac8 Reviewed-by: Harri Porten <porten@froglogic.com> Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Introducing QComposeInputContextGatis Paeglis2013-03-219-0/+1087
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When switching from Xlib to xcb platform plugin it was agreed that XIM is deprecated. Users should be using QT_IM_MODULE to load input context plugin for a more advance input method framework support. The proposed solution is to parse the compose file directly from Qt. This approach removes the overhead of communication protocols used in Xlib and/or IBUS. TableGenerator class follows [1]. The compose file is searched for in the following order: 1) If the environment variable $XCOMPOSEFILE is set, its value is used as the name of the Compose file. 2) If the user’s home directory has a file named .XCompose, it is used as the Compose file. 3) The system provided compose file is used by mapping the locale to a compose file from the list in /usr/share/X11/locale/compose.dir. Regarding step 3 - TableGenerator searches in hard-coded locations for system-provided compose files. Here I have introcuded a new environment variable QTCOMPOSE which can be used to prepend an extra location to be searched. [1] http://www.x.org/archive/X11R7.7/doc/man/man5/Compose.5.xhtml Task-number: QTBUG-28183 Change-Id: I76dcfd454f3acc23db98192a3673c1ab2af4425f Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| * Merge "Merge remote-tracking branch 'gerrit/release' into stable" into ↵Sergio Ahumada2013-03-212-2/+4
| |\ | | | | | | | | | refs/staging/stable
| | * Merge remote-tracking branch 'gerrit/release' into stableSamuel Rødal2013-03-212-2/+4
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/features/qt_module_headers.prf mkspecs/features/qt_tool.prf src/angle/angle.pro src/tools/bootstrap/bootstrap.pro tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp Change-Id: Ide5759fe419a50f1c944211a48f7c66f662684e0
| | | * qtbase: Fix duplicate symbol errors in static build on MacGabriel de Dietrich2013-03-202-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is some code duplication between QMacStyle anf the Cocoa QPA plugin regarding painting and bridging with Cocoa. Task-number: QTBUG-29725 Change-Id: I347407a9bca47b6fccd77fb924688bd35135d96b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> (cherry picked from commit 5f948eb62ddb9f429f46ade08f32072212cda493) Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
| | | * Windows native file dialogs: Split suffix list correctly.Friedemann Kleint2013-03-201-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-30185 Change-Id: I9a3d16eafb5417d6720a702af662fb219487549d Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| | | * Fixed crash when VNCing and trying to use non-present XFixes extension.Mitch Curtis2013-03-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-29978 Change-Id: I1a6759bafaac7a1d2b598412f0d32077a42192a4 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| * | | Send expose when we get a geometry change.Gunnar Sletta2013-03-211-0/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: I4c0c5130e6513fb4031e847be01feff3653f256e Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * | | window should not be resizable while its transient popup is openShawn Rutledge2013-03-211-4/+11
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a popup is transient for another window, the other window should not be resizable while the popup is open. (Resizing didn't close the popup, either.) The popup is emulated with an NSPanel rather than being a native popup, so we don't get this behavior for free. Task-number: QTBUG-30266 Change-Id: I49d04a095b428d169fe36ae1768c889578c3c054 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * | Merge branch 'dev' into stableOswald Buddenhagen2013-03-20236-1212/+13935
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This starts Qt 5.1 release cycle Conflicts: src/gui/text/qfontdatabase.cpp src/gui/text/qharfbuzz_copy_p.h src/widgets/kernel/qapplication.cpp src/widgets/kernel/qcoreapplication.cpp Change-Id: I72fbf83ab3c2206aeea1b089428b0fc2a89bd62b
| * | | Fix duplicated application menu items on Mac OSChris Meyer2013-03-203-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added code to check to see if the menu item already exists in the application menu before adding it. Change-Id: Ie0a5eab3c61d5a3413a834d2e57bab40660f6802 Task-number: QTBUG-27202 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * | | Set StyleMask to NSBorderless if FramelessWindowHint is set.Irfan Omair2013-03-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-29815 Change-Id: Idb93843a2ad8332c81587c245fe73aa2bf5cc661 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * | | Merge "Merge remote-tracking branch 'origin/release' into stable" into ↵Stephen Kelly2013-03-135-10/+71
| |\ \ \ | | | | | | | | | | | | | | | refs/staging/stable
| | * \ \ Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-03-085-10/+71
| | |\ \ \ | | | | |/ | | | |/| | | | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/opengl/qgl/tst_qgl.cpp Change-Id: I3c601351c984c1f4b00478d3c47ac9eeb021e892