gecko-dev/layout/generic
Ting-Yu Lin 7a0febcd1b Bug 1309467 Part 5 - Make flow area of <shape-box> values respect border-radius. r=dbaron
In GetFlowArea(), "Shrink our band's height if needed." computation was
moved to the end because we need to pass the unmodified |blockEnd| to
compute LineRight() and LineLeft().

Revamp OutsetBorderRadii() to allow negative margin to reduce the radius,
but not below zero. Also implement the cubic formula required by the spec.
https://drafts.csswg.org/css-shapes/#valdef-shape-box-margin-box

OutsetBorderRadii() is now tailored only for margin-box with border-radius,
so it might no longer be suitable for other scenarios.

MozReview-Commit-ID: HKxW7rp6sIA

--HG--
extra : rebase_source : d416433016304feefc9ed9dcd1c22f7f2f92e27e
2016-10-13 16:28:38 +08:00
..
crashtests Bug 1316649 - Crashtest. 2016-11-11 18:28:43 +01:00
test Bug 1310297 - Remove test annotations using b2g, mulet or gonk: layout/generic. r=RyanVM 2016-11-05 11:29:20 +01:00
AsyncScrollBase.cpp
AsyncScrollBase.h
BlockReflowInput.cpp Bug 1309467 Part 4 - Implement <shape-box> values for shape-outside. r=dbaron 2016-10-12 16:06:25 +08:00
BlockReflowInput.h Bug 1309467 Part 4 - Implement <shape-box> values for shape-outside. r=dbaron 2016-10-12 16:06:25 +08:00
broken-image.png
CSSAlignUtils.cpp Bug 1313254 part 2 - [css-align] Change "last-baseline" to "last baseline" in layout/ (scripted change). r=dholbert 2016-11-05 02:57:07 +01:00
CSSAlignUtils.h Bug 1269046 part 9: Add a flag to control whether CSSAlignUtils::AlignJustifySelf() expands "auto" margins. r=mats 2016-10-31 08:59:40 -07:00
DetailsFrame.cpp Bug 1304441 Part 3 - Insert main summary's frame construction item at front of the list. r=bz 2016-10-05 14:43:32 +08:00
DetailsFrame.h Bug 1304441 Part 3 - Insert main summary's frame construction item at front of the list. r=bz 2016-10-05 14:43:32 +08:00
folder.png
frame-graph.py
FrameChildList.cpp
FrameChildList.h
jar.mn
JustificationUtils.h Bug 1277775 - Replace MOZ_CONSTEXPR{_VAR,_TMPL} with constexpr. r=froydnj 2016-07-08 14:39:53 -07:00
loading-image.png
MathMLTextRunFactory.cpp Bug 1280887 - patch 2 - Make gfxTextRun refcounted, replace usage of UniquePtr<> with RefPtr<> for textruns, and make nsTextFrame hold a strong reference to its run(s). r=mats 2016-08-19 13:14:22 +01:00
MathMLTextRunFactory.h Bug 1283273 - Change nsAutoPtr to UniquePtr in classes within layout/generic. r=dholbert 2016-07-08 08:08:00 +02:00
moz.build Bug 1269046 part 1: Spin out some grid alignment code into a helper method, in a new CSSAlignUtils class. r=mats 2016-10-31 08:58:18 -07:00
nsAbsoluteContainingBlock.cpp Bug 1269017 part 3 - [css-grid] Reduce scope of a mStaticPosIsCBOrigin check to *just* cover hypothetical-position calculation, and update comments. r=mats 2016-11-08 16:30:00 -08:00
nsAbsoluteContainingBlock.h Bug 1269046 part 2: Spin out a helper function to hold nsAbsoluteContainingBlock's code for resolving abspos offsets. r=mats 2016-10-31 08:58:18 -07:00
nsAtomicContainerFrame.h
nsAutoCopyListener.h Bug 1261299 - Add new clipboard kSelectionCache to cache the current selection for OSX service menu. Add a constructor to nsAutoCopyListener which sets the clipboard to copy to. Pass in kSelectionCache for OSX or kSelectionClipboard for linux. r=mstange 2016-06-03 12:04:22 -04:00
nsBackdropFrame.cpp Bug 1300369 part 4 - Refactor all ComputeAutoSize methods to take the full ComputeSizeFlags instead of just a "bool aShrinkWrap" for the eShrinkWrap flag (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsBackdropFrame.h Bug 1300369 part 4 - Refactor all ComputeAutoSize methods to take the full ComputeSizeFlags instead of just a "bool aShrinkWrap" for the eShrinkWrap flag (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsBlockDebugFlags.h Bug 1302758 Part 2 - Replace NOISY_FLOATMANAGER with nsBlockFrame::gNoisyFloatManager. r=dholbert 2016-09-15 14:32:12 +08:00
nsBlockFrame.cpp Bug 1309467 Part 4 - Implement <shape-box> values for shape-outside. r=dbaron 2016-10-12 16:06:25 +08:00
nsBlockFrame.h Bug 1291110 Part 2 - Rename availableSpaceHeight to availableSpaceBSize. r=dbaron 2016-11-08 13:42:14 +08:00
nsBlockReflowContext.cpp Bug 1286468 followup - Fix naming issues. 2016-10-24 15:01:25 +08:00
nsBlockReflowContext.h Bug 1277129 Part 7c - Rename various RS variables to RI. r=dbaron 2016-07-21 18:36:39 +08:00
nsBRFrame.cpp Bug 1297306 - part6:replace NS_STYLE_CLEAR_* with StyleClear enum class. r=xidorn 2016-09-07 10:20:17 +08:00
nsBulletFrame.cpp Bug 1288992 Part 3 - Rename local variables named metrics to reflowOutput. r=dholbert 2016-07-26 17:10:52 +08:00
nsBulletFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsCanvasFrame.cpp Bug 1284837 - Disallow implicit conversions from float to integer when creating IntPoint and IntSize objects. r=botond 2016-07-26 16:48:30 +02:00
nsCanvasFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsColumnSetFrame.cpp Bug 1266621 part 5 - Convert border-color to store complex color. r=heycam 2016-09-27 20:16:35 +10:00
nsColumnSetFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsContainerFrame.cpp Bug 1300369 part 4 - Refactor all ComputeAutoSize methods to take the full ComputeSizeFlags instead of just a "bool aShrinkWrap" for the eShrinkWrap flag (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsContainerFrame.h Bug 1300369 part 4 - Refactor all ComputeAutoSize methods to take the full ComputeSizeFlags instead of just a "bool aShrinkWrap" for the eShrinkWrap flag (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsDirection.h
nsFirstLetterFrame.cpp Bug 1307402 - use a more precise bounding box for initial letter texts. r=jfkthame 2016-10-04 22:22:52 +08:00
nsFirstLetterFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsFlexContainerFrame.cpp Bug 1221524 Part 3: Implement align-self:last baseline behavior in flex containers. r=dholbert 2016-11-07 09:53:14 -08:00
nsFlexContainerFrame.h Bug 1269046 part 7: Give nsFlexContainerFrame a CSSAlignmentForAbsPosChild() implementation (to determine appropriate align enum for abspos children). r=mats 2016-10-31 08:59:40 -07:00
nsFloatManager.cpp Bug 1309467 Part 5 - Make flow area of <shape-box> values respect border-radius. r=dbaron 2016-10-13 16:28:38 +08:00
nsFloatManager.h Bug 1309467 Part 5 - Make flow area of <shape-box> values respect border-radius. r=dbaron 2016-10-13 16:28:38 +08:00
nsFontInflationData.cpp Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsFontInflationData.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsFrame.cpp Bug 1309467 Part 5 - Make flow area of <shape-box> values respect border-radius. r=dbaron 2016-10-13 16:28:38 +08:00
nsFrame.h Bug 1300369 part 9 - Add a ComputeSizeFlags param to nsFrame::ComputeSizeWithIntrinsicDimensions (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsFrameIdList.h Bug 1288591 - Implement the layout for <input type=time>. r=mconley, r=dholbert, r=smaug 2016-10-06 00:17:00 -04:00
nsFrameList.cpp Bug 1295192 - part 1 - remove CPP_THROW_NEW on layout struct operator new overloads that forward to nsPresShell::AllocateByObjectID; r=dholbert 2016-08-17 15:28:45 -04:00
nsFrameList.h Bug 1295192 - part 1 - remove CPP_THROW_NEW on layout struct operator new overloads that forward to nsPresShell::AllocateByObjectID; r=dholbert 2016-08-17 15:28:45 -04:00
nsFrameSelection.h Bug 1309628 - Hide support for dispatching selection events on the contents of text controls behind a pref; r=mystor 2016-10-13 16:52:07 -04:00
nsFrameSetFrame.cpp Bug 712936 - Convert users of PR_STATIC_ASSERT to C++11 static_assert(). r=Ms2ger 2016-08-23 11:24:54 -04:00
nsFrameSetFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsFrameState.cpp Bug 1144096 part 5 - [css-grid] Create a couple of Grid container frame bits. r=dholbert 2016-03-11 17:39:26 +01:00
nsFrameState.h Bug 1265624 - Remove unnecessary compiler version check for MSVS 2010 in nsFrameState.h. r=heycam 2016-04-17 17:09:32 -07:00
nsFrameStateBits.h Bug 1269046 part 4: Set flags on nsPlaceholderFrame & ReflowInput to track abspos frames that need CSS Box Alignment to resolve static position. r=mats 2016-10-31 08:58:18 -07:00
nsFrameUtil.cpp
nsGfxScrollFrame.cpp Bug 1310900 - Speed up ScrollFrameHelper::GetScrolledRect for the case where there is no overflow. r=mattwoodrow 2016-10-18 11:12:01 -04:00
nsGfxScrollFrame.h Bug 1304689 - Ensure frame reconstructions don't clobber a 'stronger' scroll origin with a 'weaker' one. r=tnikkel 2016-10-11 09:36:22 -04:00
nsGridContainerFrame.cpp Bug 1269017 part 5 - [css-grid] Tag grid placeholder children as needing CSS Box Alignment, & consolidate their placement code. r=mats 2016-11-08 16:30:00 -08:00
nsGridContainerFrame.h Bug 1269017 part 2 - [css-grid] Give grid an implementation of CSSAlignmentForAbsPosChild(). r=mats 2016-11-08 16:30:00 -08:00
nsHTMLCanvasFrame.cpp Bug 1300369 part 9 - Add a ComputeSizeFlags param to nsFrame::ComputeSizeWithIntrinsicDimensions (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsHTMLCanvasFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsHTMLParts.h Bug 1288591 - Implement the layout for <input type=time>. r=mconley, r=dholbert, r=smaug 2016-10-06 00:17:00 -04:00
nsIAnonymousContentCreator.h
nsIFrame.h Bug 1309467 Part 5 - Make flow area of <shape-box> values respect border-radius. r=dbaron 2016-10-13 16:28:38 +08:00
nsIFrameInlines.h Bug 1299066: Make NS_STYLE_DISPLAY_* an enum class. Prefer indexing instead of linear search in the frame constructor r=heycam,bz 2016-09-01 20:41:17 -07:00
nsIFrameUtil.h
nsILineIterator.h
nsImageFrame.cpp Bug 1300369 part 9 - Add a ComputeSizeFlags param to nsFrame::ComputeSizeWithIntrinsicDimensions (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsImageFrame.h Bug 1284350. Backed out changeset d6a286242f2d (Bug 1268348 - Pass the previous visibility state to OnVisibilityChange(). r=mstange) 2016-09-12 00:19:07 -05:00
nsImageMap.cpp Bug 1263782 - Kill off the deprecated nsINode::IsInDoc(). r=baku 2016-03-31 11:58:25 +01:00
nsImageMap.h
nsInlineFrame.cpp Bug 1260031 - Not force break before a block when calculating intrinsic width if the current line is empty and the block cannot intersect floats. r=dbaron 2016-08-23 09:29:45 +10:00
nsInlineFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsIntervalSet.cpp
nsIntervalSet.h
nsIObjectFrame.h
nsIPageSequenceFrame.h
nsIScrollableFrame.h Bug 1304689 - Ensure frame reconstructions don't clobber a 'stronger' scroll origin with a 'weaker' one. r=tnikkel 2016-10-11 09:36:22 -04:00
nsIScrollPositionListener.h
nsIStatefulFrame.h Bug 1300206: Add some missing #includes & namespaces in layout/generic, to prevent unified build bustage. r=mats 2016-09-02 15:01:09 -07:00
nsLeafFrame.cpp Bug 1300369 part 4 - Refactor all ComputeAutoSize methods to take the full ComputeSizeFlags instead of just a "bool aShrinkWrap" for the eShrinkWrap flag (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsLeafFrame.h Bug 1300369 part 4 - Refactor all ComputeAutoSize methods to take the full ComputeSizeFlags instead of just a "bool aShrinkWrap" for the eShrinkWrap flag (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsLineBox.cpp Bug 1308077 - remove default branch of switch-case-statement in nsLineBox::BreakTypeToString. r=xidorn 2016-10-06 15:22:22 +08:00
nsLineBox.h Bug 1297306 - part7:replace StyleClear related NS_ASSERTION with MOZ_ASSERT. r=xidorn 2016-09-07 10:20:17 +08:00
nsLineLayout.cpp Bug 1267515 part 1 - Refactor ruby leadings into a helper RubyBlockLeadings struct. r=dholbert 2016-11-10 11:10:42 +11:00
nsLineLayout.h Bug 1277129 Part 7c - Rename various RS variables to RI. r=dbaron 2016-07-21 18:36:39 +08:00
nsPageContentFrame.cpp Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsPageContentFrame.h Bug 1277129 Part 5c - Rename nsHTMLReflowMetrics to ReflowOutput. r=dbaron 2016-07-21 18:36:38 +08:00
nsPageFrame.cpp Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsPageFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsPlaceholderFrame.cpp Bug 1296509 - Optimize GetFlattenedTreeParent. r=smaug 2016-08-19 14:43:53 -07:00
nsPlaceholderFrame.h Bug 1171419 part 3 - Override RenumberFrameAndDescendants in nsPlaceholderFrame instead and deal with it there rather than nsContainerFrame. r=xidorn 2016-09-01 17:36:22 +02:00
nsPluginFrame.cpp Bug 1316290 - Use C++11's override and remove already-implied virtual where applicable, in /layout. r=dholbert 2016-11-09 15:37:59 +02:00
nsPluginFrame.h Bug 1313560: Undefine LoadImage in nsPluginFrame.h (alongside other undefines) to prevent windows.h macros from causing unified bustage in other files. rs=dmajor 2016-10-28 05:59:17 -07:00
nsQueryFrame.h
nsRubyBaseContainerFrame.cpp Bug 1267515 part 2 - Place ruby annotations outside annotations from ruby descendants. r=dholbert 2016-10-26 17:40:58 +11:00
nsRubyBaseContainerFrame.h Bug 1267515 part 2 - Place ruby annotations outside annotations from ruby descendants. r=dholbert 2016-10-26 17:40:58 +11:00
nsRubyBaseFrame.cpp Bug 1264837 Part 9 - Remove nsRubyBaseFrameSuper. r=dholbert 2016-04-18 14:04:03 +08:00
nsRubyBaseFrame.h Bug 1264837 Part 9 - Remove nsRubyBaseFrameSuper. r=dholbert 2016-04-18 14:04:03 +08:00
nsRubyContentFrame.cpp Bug 1264837 Part 10 - Remove nsRubyContentFrameSuper. r=dholbert 2016-04-18 14:06:23 +08:00
nsRubyContentFrame.h Bug 1264837 Part 10 - Remove nsRubyContentFrameSuper. r=dholbert 2016-04-18 14:06:23 +08:00
nsRubyFrame.cpp Bug 1267515 part 1 - Refactor ruby leadings into a helper RubyBlockLeadings struct. r=dholbert 2016-11-10 11:10:42 +11:00
nsRubyFrame.h Bug 1267515 part 1 - Refactor ruby leadings into a helper RubyBlockLeadings struct. r=dholbert 2016-11-10 11:10:42 +11:00
nsRubyTextContainerFrame.cpp Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsRubyTextContainerFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsRubyTextFrame.cpp Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsRubyTextFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsSelection.cpp Bug 1316432 - Fix nsCOMPtr constructions&assignments from 0 - r=froydnj 2016-11-10 14:11:27 +11:00
nsSimplePageSequenceFrame.cpp Bug 1313525 - Remove the nsIPrintOptions interface. r=mstange 2016-10-28 00:31:14 +01:00
nsSimplePageSequenceFrame.h Bug 1313525 - Remove the nsIPrintOptions interface. r=mstange 2016-10-28 00:31:14 +01:00
nsSplittableFrame.cpp Bug 1297982 - Replace NS_STYLE_BOX_DECORATION_BREAK_* with enum class; r=xidorn 2016-08-26 12:44:32 +05:30
nsSplittableFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsSubDocumentFrame.cpp Bug 1307242 - Call nsPresContext::NotifyNonBlankPaint when building the display list for a presshell that contains more than just canvas backgrounds. r=mattwoodrow 2016-11-09 22:46:26 -05:00
nsSubDocumentFrame.h Bug 1300369 part 4 - Refactor all ComputeAutoSize methods to take the full ComputeSizeFlags instead of just a "bool aShrinkWrap" for the eShrinkWrap flag (idempotent patch). r=dholbert 2016-11-05 02:57:06 +01:00
nsTextFrame.cpp Bug 1267515 part 1 - Refactor ruby leadings into a helper RubyBlockLeadings struct. r=dholbert 2016-11-10 11:10:42 +11:00
nsTextFrame.h Bug 1307402 - use a more precise bounding box for initial letter texts. r=jfkthame 2016-10-04 22:22:52 +08:00
nsTextFrameUtils.cpp Bug 1081858 - Part 4. Implement segment break transformation rules. r=jfkthame 2016-10-27 14:52:22 +08:00
nsTextFrameUtils.h Bug 1288938: layout: Move the GlyphObserver to the text run instead of the frame. r=jfkthame 2016-08-03 10:53:37 -07:00
nsTextRunTransformations.cpp Bug 1291016 - Initialize irishMarkSrc. r=jfkthame 2016-10-20 05:01:57 +02:00
nsTextRunTransformations.h Bug 1308502 followup, add missing const-ness to gfxTextRun::SetPotentialLineBreaks param, tidy up a bit. r=m_kato 2016-10-11 13:47:11 +01:00
nsVideoFrame.cpp Backed out 3 changesets (bug 1271765) for -Werror bustage 2016-11-07 18:51:18 -08:00
nsVideoFrame.h Bug 1284350. Backed out changeset d6a286242f2d (Bug 1268348 - Pass the previous visibility state to OnVisibilityChange(). r=mstange) 2016-09-12 00:19:07 -05:00
nsViewportFrame.cpp Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
nsViewportFrame.h Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron 2016-07-21 18:36:39 +08:00
ReflowInput.cpp Bug 1316649 - A parent dummy ReflowInput is also the CB ReflowInput. r=dholbert 2016-11-11 18:28:43 +01:00
ReflowInput.h Bug 1317203 - Change ReflowInputFlags to use bool : 1. r=mats 2016-11-14 11:39:25 +08:00
ReflowOutput.cpp Bug 1277129 Part 5c - Rename nsHTMLReflowMetrics to ReflowOutput. r=dbaron 2016-07-21 18:36:38 +08:00
ReflowOutput.h Bug 1277129 Part 5c - Rename nsHTMLReflowMetrics to ReflowOutput. r=dbaron 2016-07-21 18:36:38 +08:00
RubyUtils.cpp
RubyUtils.h Bug 1267515 part 1 - Refactor ruby leadings into a helper RubyBlockLeadings struct. r=dholbert 2016-11-10 11:10:42 +11:00
ScrollbarActivity.cpp Bug 824592 part 3. Get rid of nsIDOMElementCSSInlineStyle. r=peterv 2016-08-02 11:05:38 -07:00
ScrollbarActivity.h
ScrollSnap.cpp Bug 1219296 - Move the layout.css.scroll-snap.proximity-threshold pref to gfxPrefs, so it can be queried on the compositor thread. r=kats 2016-03-18 21:15:45 -04:00
ScrollSnap.h Bug 1219296 - Scroll snap directly in APZ instead of going through the main thread. r=kats 2016-03-28 18:36:02 -04:00
ScrollVelocityQueue.cpp
ScrollVelocityQueue.h
Selection.h Bug 1300905 - When long-pressing on a selection, don't dismiss the selection and start a new one. Show the context menu instead. r=TYLin,mats 2016-09-30 09:36:10 -04:00
SelectionChangeListener.h
StickyScrollContainer.cpp Bug 1293125 - Work around a layout issue that causes StickyScrollContainer::GetScrollRanges() to compute malformed rects. r=mstange 2016-10-07 19:31:14 -04:00
StickyScrollContainer.h
TextOverflow.cpp Bug 1299741 part 11 - Change text-{emphasis,fill,stroke}-color to using StyleComplexColor. r=dbaron 2016-09-16 14:40:45 +10:00
TextOverflow.h Bug 1279451 - Remove a lot of unnecessary includes of nsAutoPtr.h. rs=sparky 2016-06-07 21:10:18 +01:00
Visibility.h Bug 1284350. Backed out changeset 69abdc731a99 (Bug 1261554 (Part 1) - Prepare for implementing in-displayport visibility tracking. r=mstange) 2016-09-12 00:19:08 -05:00
WritingModes.h Bug 1311865: Refactor the grid "same sides" code into a simpler WritingMode::ParallelAxisHasSamePolarity() utility function. r=mats 2016-10-20 17:45:07 -07:00