| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
Add symbol exports needed to build content shell.
BUG=158821
Review URL: https://codereview.chromium.org/11368031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165420 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
See http://www.chromium.org/developers/tree-sheriffs/sheriff-details-chromium/handling-a-failing-test
and https://groups.google.com/a/chromium.org/d/topic/chromium-dev/_OwJ_GWfOaY/discussion
BUG=none
Review URL: https://codereview.chromium.org/11293028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165415 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
IDR_INFOBARBUTTON_<STATE>_<POSITION>.
To match IDR_TEXTBUTTON_*_*.
R=msw@chromium.org
TBR=sky@chromium.org
Review URL: https://codereview.chromium.org/11341049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165413 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The hung renderer dialog is showing up while waiting for the
monitor profile to be read from disk on the FILE thread. Try to
avoid this by using the thread pool.
The hung renderer dialog may still show up if the disk is very
busy, but this will help if we have some long running task on the
FILE thread.
BUG=158182
Review URL: https://codereview.chromium.org/11340052
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165412 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This class represents a distance along 3 dimensions. It supports operations
such as the cross product and dot product between two such vectors, in addition
to the standard operations also supported by the Vector2dF class.
BUG=147395
R=sky,pkasting
Review URL: https://chromiumcodereview.appspot.com/11367025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165402 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
This uses the GLX_OML_sync_control extension to get vsync timebase
and interval information and forward it to the browser compositor
on Aura, and to the renderer compositor on non-Aura.
BUG=143466
Review URL: https://chromiumcodereview.appspot.com/11195011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165389 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Vector2d.
This method should return a Vector instead of a Point.
Covered by existing tests; no change in behaviour.
R=sky,pkasting
Review URL: https://codereview.chromium.org/11367012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165388 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
this CL creates most of the basic inputs
BUG=157270,157273
Review URL: https://codereview.chromium.org/11273104
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165386 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows renderer-side compositor contexts to create
native EGL surfaces when running kInProcessGpu (i.e.
the window handle is set for the RWHV's surface).
Essentially, this allows for creating SurfaceTexture producer
contexts on Android.
Review URL: https://codereview.chromium.org/11336040
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165385 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
No new tests, fixing includes.
BUG=147395
TBR=sky@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11359018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165382 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=154291
TEST=None
Review URL: https://chromiumcodereview.appspot.com/11361009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165355 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Tabs are now draggable into a window.
- You can no longer drag with the right mouse button.
- We now create an invisible window over the screen while dragging a
tab. Previously, if you moved your mouse cursor quickly, you could
end up with your cursor outside the window you were dragging and
this broke tab dragging.
BUG=125106
Review URL: https://chromiumcodereview.appspot.com/11364013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165335 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This CL makes cursor's device scale factor be set in RootWindow::MoveCursor.
Thus cursor's device scale factor is updated properly even when cursor moves
to another root window without cursor warp (e.g. when swapping primary display).
BUG=157940
TEST=Manually check cursor's device scale factor is updated properly when swapping primary display for a display with a different device scale factor.
Review URL: https://chromiumcodereview.appspot.com/11307019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165331 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
state to per object state.
R=ben@chromium.org
BUG=none
Review URL: https://chromiumcodereview.appspot.com/11367017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165305 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The EventDispatcher interface is not acually used for dispatching events yet.
That will happen once RootView is turned into an EventDispatcher. But this first
step prepares scroll, touch, and gesture event dispatching in views so that it
is compatible with the EventDispatcher interface.
BUG=none
Review URL: https://codereview.chromium.org/11364015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165288 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
This method gives a Rect whose position and size are determined by two input
points.
BUG=147395
R=sky
Review URL: https://codereview.chromium.org/11318015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165279 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This acts like ToRoundedSize, it returns a Point from a PointF, where each
component is rounded to the nearest integer.
Tests:
ui_unittests:PointTest.ToRoundedPoint
BUG=147395
R=sky
Review URL: https://codereview.chromium.org/11369013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165261 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts code to be more like it was before http://codereview.chromium.org/11269022 landed. We need to convert things to ints before passing them to SkIntToScalar.
BUG=147395
TBR=sky,pkasting
Review URL: https://codereview.chromium.org/11366013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165204 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously Point served two purposes, to be a position in 2d space, and also
an offset from the origin. This introduces a Vector2d class to represent an
offset, allowing typesafety checks for geometric operations.
The following are now the case:
Point +/- Vector = Point
- A point plus/minus an offset gives you a point at a position offset by the
vector.
Vector +/- Vector = Vector
- Two offsets can be added together to make a new offset.
Point - Point = Vector
- Subtracting one point from another gives you the offset between the two
points.
We add some new methods to perform these operations:
Rect::OffsetFromOrigin() gives the offset between the position of the rect
and the origin.
Point::OffsetFromOrigin() gives the offset between the point and the origin.
PointAtOffsetFromOrigin(Vector2d) converts a Vector2d to a Point at the given
offset away from the origin.
Rect::Offset(), Point::Add(), and Point::Subtract() now receive a Vector2d
instead of a point.
BUG=147395
R=sky
Review URL: https://codereview.chromium.org/11269022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165198 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Point3F::AsPoint() method converts from float to integer by doing an
implicit floor() on the values. Instead, we should have AsPointF() return
floating point values, and use the ToFlooredPoint() conversion method to
explicitly floor the values at the call-site if desired.
Also, move the point3.h header to point3_f.h so that it is consistent with
other geometry header file namings.
BUG=147395
R=sky
Review URL: https://chromiumcodereview.appspot.com/11301043
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165102 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a window that has a DesktopNativeWidgetAura as screen coordinates.
BUG=none
TEST=none
R=ben@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11346039
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165083 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=133312
Review URL: https://chromiumcodereview.appspot.com/11266047
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165054 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
display the run.
This fixes an issue where missing glyphs could fail to show up as anything at all. This would happen when ScriptShape() would return an error for every font tried, thus failing to initialize any of its output parameters. This code handles that case by initializing them manually to contain the "box" glyph of the original font.
BUG=157949,136815
TEST=Per http://crbug.com/157949.
Review URL: https://chromiumcodereview.appspot.com/11340043
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165051 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Stop event processing if the event target is invalidated or deleted during
processing of a list of events.
BUG=158332
TEST=added to ui_unittests:EventDispatcherTest
Review URL: https://chromiumcodereview.appspot.com/11339052
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165045 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reverted due to interactive test failures
on the linux_chromeos builder.
Disabled the failing BookmarkBarViewTest8.DNDBackToOriginatingMenu test on AURA for now and logged a bug
http://code.google.com/p/chromium/issues/detail?id=158564&thanks=158564 to track this. Will work on that in a subsequent
change.
Register a separate default ui::EventTarget for Aura (Ash) to ensure that it does not interfere with the
event handling in desktop chrome in Aura.
On Windows 8 in chrome metro mode we have a desktop chrome process
which runs as a server to the viewer process in Metro. Reusing the default EventTarget across both environments
causes desktop chrome to crash as a number of EventFilters registered on the default EventTarget get called twice.
The Ash specific EventTarget is implemented by the Ash::Shell class. The RootWindow in its GetParentTarget implementation
delegates this call to the EventClient implementation if one exists and if not it returns the default Aura::Env interface.
The EventClient interface is implemented by Ash and has been updated to return the default EventTarget via the new method
GetToplevelEventTarget
Fixes bug http://code.google.com/p/chromium/issues/detail?id=158105
BUG=158105
R=ben
Review URL: https://codereview.chromium.org/11273098
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165026 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=154934
Review URL: https://chromiumcodereview.appspot.com/11346033
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164985 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AboutToRequestFocusFromTabTraversal() another view is focused.
BUG=153038
TEST=covered by unit test
R=ben@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11336023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164961 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
component build.
https://codereview.chromium.org/11193037/
Review URL: https://codereview.chromium.org/11338013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164905 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This CL is dependent on http://codereview.chromium.org/11189099/
This will complete the migration of the message center code from Ash to UI so that it can be used on other Views platforms.
BUG=150872
Review URL: https://chromiumcodereview.appspot.com/11229022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164857 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
dispatching an event.
BUG=158351
Review URL: https://codereview.chromium.org/11342018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164846 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=157796
Review URL: https://chromiumcodereview.appspot.com/11275028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164844 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes a couple of other obvious bugs in the desktop implementations.
BUG=none
R=sky@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11320010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164834 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
This makes it easier to merge with both removing ModelChanged http://codereview.chromium.org/10928119/ and passing DownloadItem to OnDownloadStarted http://codereview.chromium.org/11068027/
Review URL: https://chromiumcodereview.appspot.com/11029059
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164833 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=None
Test=None
Review URL: https://chromiumcodereview.appspot.com/11269054
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164823 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=100666
Review URL: https://chromiumcodereview.appspot.com/11274057
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164815 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=158389
Review URL: https://chromiumcodereview.appspot.com/11348014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164810 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
running animations.
To ensure that these pointers don't go stale, internally, the layer animator
will use weak pointers and check that the instances they point to are still
live before using them.
A consequence of this change is that the animator methods have to be prepared
for NULL sequences (RunningAnimation::sequence() can now return NULL if the
sequence is dead).
BUG=
Review URL: https://chromiumcodereview.appspot.com/11300018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164799 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=none
R=ben@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11339021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164795 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds non-member methods that return a new Rect (or RectF) object
as their result instead of mutating an existing rect. We add:
Rect gfx::IntersectRects(Rect, Rect)
RectF gfx::IntersectRects(RectF, RectF)
Rect gfx::UnionRects(Rect, Rect)
RectF gfx::UnionRects(RectF, RectF)
Rect gfx::SubtractRects(Rect, Rect)
RectF gfx::SubtractRects(RectF, RectF)
RectF gfx::ScaleRect(RectF, scale)
RectF gfx::ScaleRect(RectF, x_scale, y_scale)
In CL https://codereview.chromium.org/11110004/ we made all
member methods of Rect (and RectF) mutate the existing
object, so these methods are added for cases where we want
the result to create a new object instead.
BUG=147395
R=sky
Review URL: https://codereview.chromium.org/11270042
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164760 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
This was causing the main frame to Blur(). Use #ifdefs for OS_WIN.
BUG=158118
Review URL: https://chromiumcodereview.appspot.com/11314015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164731 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Chrome OS - Register a separate default ui::EventTarget for Aura (Ash) to ensure that it does not interfere with the
event handling in desktop chrome in Aura.
On Windows 8 in chrome metro mode we have a desktop chrome process
which runs as a server to the viewer process in Metro. Reusing the default EventTarget across both environments
causes desktop chrome to crash as a number of EventFilters registered on the default EventTarget get called twice.
The Ash specific EventTarget is implemented by the Ash::Shell class. The RootWindow in its GetParentTarget implementation
delegates this call to the EventClient implementation if one exists and if not it returns the default Aura::Env interface.
The EventClient interface is implemented by Ash and has been updated to return the default EventTarget via the new method
GetToplevelEventTarget
Fixes bug http://code.google.com/p/chromium/issues/detail?id=158105
BUG=158105
R=ben
Review URL: https://codereview.chromium.org/11314013
TBR=ananta@chromium.org
Review URL: https://codereview.chromium.org/11301024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164728 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
TEST=ui_unittests
R=asvitkine@chromium.org
Review URL: https://codereview.chromium.org/11304017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164724 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds a SystemBackgroundController class that's
responsible for a ui::Layer that's stacked underneath all
other layers.
I'm also adding an --ash-copy-host-background-at-boot flag
that can be set to instruct the controller to copy the host
window's content into the system background layer at
startup; otherwise, we display the same background color
used by Chrome OS's boot splash screen.
I suspect that there's a small performance hit from copying
(I've seen the XGetImage() take between 25 and 170 ms
depending on hardware), although it seems to be hidden in
the noise of our total boot times. Regardless, I figure
that we should only turn this on right now for systems that
need it (to hide an even-longer delay where the compositor
is drawing but the login background images hasn't been
loaded).
In any case, once the login background is visible, the
system background layer is reset to display the black
background that's needed for fullscreen animations that
manipulate the desktop background (for the workspace or
power button).
BUG=152309
Review URL: https://chromiumcodereview.appspot.com/11273059
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164704 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
does not interfere with the
event handling in desktop chrome in Aura.
On Windows 8 in chrome metro mode we have a desktop chrome process
which runs as a server to the viewer process in Metro. Reusing the default EventTarget across both environments
causes desktop chrome to crash as a number of EventFilters registered on the default EventTarget get called twice.
The Ash specific EventTarget is implemented by the Ash::Shell class. The RootWindow in its GetParentTarget implementation
delegates this call to the EventClient implementation if one exists and if not it returns the default Aura::Env interface.
The EventClient interface is implemented by Ash and has been updated to return the default EventTarget via the new method
GetToplevelEventTarget
Fixes bug http://code.google.com/p/chromium/issues/detail?id=158105
BUG=158105
R=ben
Review URL: https://codereview.chromium.org/11314013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164703 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes app_list cpplint clean, i.e, ZERO warnings!
$ cpplint.py ui/app_list/* 2>&1
Total errors found: 0
R=xiyuan@chromium.org
Review URL: https://codereview.chromium.org/11264042
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164674 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
Incremental page search does not work due to TSF unawareness of NativeTextField.
I introduced the same approach used in Omnibox (http://crrev.com/163233).
BUG=157702
TEST=Manually done on Windows 8
Review URL: https://chromiumcodereview.appspot.com/11305002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164667 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
gfx::Canvas. Greatly
simplifies source-code-readability, and will allow us to move the impl into
a .cc file, rather than carry it to every call-site.
This is also a necessary precursor to a subsequent change to remove initialize()
from PlatformCanvas, and make it just a typedef for SkCanvas.
Review URL: https://codereview.chromium.org/11193037
TBR=reed@google.com
Review URL: https://codereview.chromium.org/11347017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164666 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
simplifies source-code-readability, and will allow us to move the impl into
a .cc file, rather than carry it to every call-site.
This is also a necessary precursor to a subsequent change to remove initialize()
from PlatformCanvas, and make it just a typedef for SkCanvas.
Review URL: https://codereview.chromium.org/11193037
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164660 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce WaitUntilReceivedGesture to make sure the timing-dependant gestures
(e.g. long-press) are tested properly. Also, fix a case of calling a virtual
function from the GestureSequence constructor.
BUG=157596
Review URL: https://codereview.chromium.org/11348003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164658 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
BUG=127983
TBR=apatrick@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11345003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164569 0039d316-1c4b-4281-b951-d872f2087c98
|