From a5799f7593706a0b47b38629b5377eb8c66a1215 Mon Sep 17 00:00:00 2001 From: Nick Entin Date: Wed, 28 Aug 2024 12:50:39 -0700 Subject: [PATCH 1/9] Strict concurrency and project maintenance * Support strict conncurrency * Update CI builds to run on macOS 14 * Update snapshot tests to run on iOS 17 and iPadOS 17 * Bump minimum deployment target to iOS 13 --- .github/workflows/ci.yml | 24 ++++++++---------- BUILD.bazel | 4 +-- .../ParalayoutDemo.xcodeproj/project.pbxproj | 2 +- .../SnapshotTestCase.swift | 8 +++--- .../ViewAlignmentSnapshotTests.swift | 10 ++++++++ ...lignmentUsingCapInsets.375x812-13-7-3x.png | Bin 18552 -> 0 bytes ...lignmentUsingCapInsets.390x844-14-4-3x.png | Bin 18655 -> 0 bytes ...lignmentUsingCapInsets.393x852-17-5-3x.png | Bin 0 -> 18657 bytes ...ignmentUsingCapInsets.820x1180-17-5-2x.png | Bin 0 -> 10857 bytes ...lignmentUsingFirstLine.375x812-13-7-3x.png | Bin 17213 -> 0 bytes ...ignmentUsingFirstLine.393x852-17-5-3x.png} | Bin 17182 -> 17194 bytes ...ignmentUsingFirstLine.820x1180-17-5-2x.png | Bin 0 -> 11061 bytes ...singFirstLineCapInsets.375x812-13-7-3x.png | Bin 17269 -> 0 bytes ...ingFirstLineCapInsets.393x852-17-5-3x.png} | Bin 17168 -> 17180 bytes ...ingFirstLineCapInsets.820x1180-17-5-2x.png | Bin 0 -> 11053 bytes ...tWithFrame.bothProxies_375x812-13-7-3x.png | Bin 11268 -> 0 bytes ...tWithFrame.bothProxies_390x844-14-4-3x.png | Bin 11268 -> 0 bytes ...tWithFrame.bothProxies_393x852-17-5-3x.png | Bin 0 -> 11280 bytes ...WithFrame.bothProxies_820x1180-17-5-2x.png | Bin 0 -> 6145 bytes ...entWithFrame.noProxies_375x812-13-7-3x.png | Bin 11974 -> 0 bytes ...ntWithFrame.noProxies_393x852-17-5-3x.png} | Bin 11974 -> 11986 bytes ...ntWithFrame.noProxies_820x1180-17-5-2x.png | Bin 0 -> 5883 bytes ...ithFrame.receiverProxy_375x812-13-7-3x.png | Bin 12433 -> 0 bytes ...ithFrame.receiverProxy_390x844-14-4-3x.png | Bin 12433 -> 0 bytes ...ithFrame.receiverProxy_393x852-17-5-3x.png | Bin 0 -> 12446 bytes ...thFrame.receiverProxy_820x1180-17-5-2x.png | Bin 0 -> 6339 bytes ...tWithFrame.targetProxy_390x844-14-4-3x.png | Bin 11653 -> 0 bytes ...WithFrame.targetProxy_393x852-17-5-3x.png} | Bin 11653 -> 11664 bytes ...WithFrame.targetProxy_820x1180-17-5-2x.png | Bin 0 -> 5895 bytes ...gins.bothLayoutMargins_375x812-13-7-3x.png | Bin 13154 -> 0 bytes ...ins.bothLayoutMargins_393x852-17-5-3x.png} | Bin 13154 -> 13166 bytes ...ins.bothLayoutMargins_820x1180-17-5-2x.png | Bin 0 -> 6595 bytes ...argins.noLayoutMargins_375x812-13-7-3x.png | Bin 13259 -> 0 bytes ...rgins.noLayoutMargins_393x852-17-5-3x.png} | Bin 13259 -> 13271 bytes ...rgins.noLayoutMargins_820x1180-17-5-2x.png | Bin 0 -> 6516 bytes ....receiverLayoutMargins_390x844-14-4-3x.png | Bin 13417 -> 0 bytes ...receiverLayoutMargins_393x852-17-5-3x.png} | Bin 13417 -> 13429 bytes ...receiverLayoutMargins_820x1180-17-5-2x.png | Bin 0 -> 7191 bytes ...ns.targetLayoutMargins_390x844-14-4-3x.png | Bin 13063 -> 0 bytes ...s.targetLayoutMargins_393x852-17-5-3x.png} | Bin 13063 -> 13075 bytes ...s.targetLayoutMargins_820x1180-17-5-2x.png | Bin 0 -> 6889 bytes .../testAlignmentWithRect.390x844-14-4-3x.png | Bin 11378 -> 0 bytes ...testAlignmentWithRect.393x852-17-5-3x.png} | Bin 11378 -> 11390 bytes ...testAlignmentWithRect.820x1180-17-5-2x.png | Bin 0 -> 6180 bytes .../testLayoutDirection.390x844-14-4-3x.png | Bin 3819 -> 0 bytes ...> testLayoutDirection.393x852-17-5-3x.png} | Bin 3819 -> 3831 bytes .../testLayoutDirection.820x1180-17-5-2x.png | Bin 0 -> 1734 bytes ...estNonZeroBoundsOrigin.390x844-14-4-3x.png | Bin 11854 -> 0 bytes ...stNonZeroBoundsOrigin.393x852-17-5-3x.png} | Bin 11854 -> 11866 bytes ...stNonZeroBoundsOrigin.820x1180-17-5-2x.png | Bin 0 -> 6395 bytes ...igningCenterToTopRight_390x844-14-4-3x.png | Bin 10513 -> 0 bytes ...gningCenterToTopRight_393x852-17-5-3x.png} | Bin 10513 -> 10525 bytes ...gningCenterToTopRight_820x1180-17-5-2x.png | Bin 0 -> 5217 bytes ...gativeHorizontalOffset_390x844-14-4-3x.png | Bin 10527 -> 0 bytes ...ativeHorizontalOffset_393x852-17-5-3x.png} | Bin 10527 -> 10539 bytes ...ativeHorizontalOffset_820x1180-17-5-2x.png | Bin 0 -> 5269 bytes ...negativeVerticalOffset_390x844-14-4-3x.png | Bin 10848 -> 0 bytes ...egativeVerticalOffset_393x852-17-5-3x.png} | Bin 10848 -> 10860 bytes ...egativeVerticalOffset_820x1180-17-5-2x.png | Bin 0 -> 5348 bytes ...sitiveHorizontalOffset_390x844-14-4-3x.png | Bin 10687 -> 0 bytes ...itiveHorizontalOffset_393x852-17-5-3x.png} | Bin 10687 -> 10699 bytes ...itiveHorizontalOffset_820x1180-17-5-2x.png | Bin 0 -> 5287 bytes ...positiveVerticalOffset_375x812-13-7-3x.png | Bin 10424 -> 0 bytes ...ositiveVerticalOffset_393x852-17-5-3x.png} | Bin 10424 -> 10436 bytes ...ositiveVerticalOffset_820x1180-17-5-2x.png | Bin 0 -> 5215 bytes ...stTransformHasNoEffect.390x844-14-4-3x.png | Bin 3355 -> 0 bytes ...tTransformHasNoEffect.393x852-17-5-3x.png} | Bin 3355 -> 3367 bytes ...tTransformHasNoEffect.820x1180-17-5-2x.png | Bin 0 -> 1953 bytes ...tDistribution.vertical_390x844-14-4-3x.png | Bin 6203 -> 0 bytes ...Distribution.vertical_393x852-17-5-3x.png} | Bin 6203 -> 6215 bytes ...Distribution.vertical_820x1180-17-5-2x.png | Bin 0 -> 3387 bytes ...butionIgnoresTransform.375x812-13-7-3x.png | Bin 10089 -> 0 bytes ...utionIgnoresTransform.393x852-17-5-3x.png} | Bin 10089 -> 10101 bytes ...utionIgnoresTransform.820x1180-17-5-2x.png | Bin 0 -> 5993 bytes ...ributionUsingCapInsets.375x812-13-7-3x.png | Bin 7311 -> 0 bytes ...ributionUsingCapInsets.390x844-14-4-3x.png | Bin 7274 -> 0 bytes ...ributionUsingCapInsets.393x852-17-5-3x.png | Bin 0 -> 7292 bytes ...ibutionUsingCapInsets.820x1180-17-5-2x.png | Bin 0 -> 4639 bytes ...owsLayoutDirection.LTR_390x844-14-4-3x.png | Bin 4685 -> 0 bytes ...wsLayoutDirection.LTR_393x852-17-5-3x.png} | Bin 4685 -> 4697 bytes ...wsLayoutDirection.LTR_820x1180-17-5-2x.png | Bin 0 -> 2195 bytes ...owsLayoutDirection.RTL_375x812-13-7-3x.png | Bin 3991 -> 0 bytes ...owsLayoutDirection.RTL_390x844-14-4-3x.png | Bin 3991 -> 0 bytes ...owsLayoutDirection.RTL_393x852-17-5-3x.png | Bin 0 -> 4003 bytes ...wsLayoutDirection.RTL_820x1180-17-5-2x.png | Bin 0 -> 2503 bytes ...allySpreadSubviews.LTR_390x844-14-4-3x.png | Bin 10429 -> 0 bytes ...llySpreadSubviews.LTR_393x852-17-5-3x.png} | Bin 10429 -> 10441 bytes ...llySpreadSubviews.LTR_820x1180-17-5-2x.png | Bin 0 -> 5433 bytes ...allySpreadSubviews.RTL_375x812-13-7-3x.png | Bin 9977 -> 0 bytes ...allySpreadSubviews.RTL_390x844-14-4-3x.png | Bin 9977 -> 0 bytes ...allySpreadSubviews.RTL_393x852-17-5-3x.png | Bin 0 -> 9989 bytes ...llySpreadSubviews.RTL_820x1180-17-5-2x.png | Bin 0 -> 5266 bytes ...mWithPositiveInset_LTR_390x844-14-4-3x.png | Bin 8629 -> 0 bytes ...WithPositiveInset_LTR_393x852-17-5-3x.png} | Bin 8629 -> 8641 bytes ...WithPositiveInset_LTR_820x1180-17-5-2x.png | Bin 0 -> 4256 bytes ...eadSubviews.bottom_LTR_375x812-13-7-3x.png | Bin 8643 -> 0 bytes ...eadSubviews.bottom_LTR_390x844-14-4-3x.png | Bin 8643 -> 0 bytes ...eadSubviews.bottom_LTR_393x852-17-5-3x.png | Bin 0 -> 8655 bytes ...adSubviews.bottom_LTR_820x1180-17-5-2x.png | Bin 0 -> 4264 bytes ...WithPositiveOffset_LTR_390x844-14-4-3x.png | Bin 8505 -> 0 bytes ...ithPositiveOffset_LTR_393x852-17-5-3x.png} | Bin 8505 -> 8517 bytes ...ithPositiveOffset_LTR_820x1180-17-5-2x.png | Bin 0 -> 4377 bytes ...dSubviews.centered_LTR_390x844-14-4-3x.png | Bin 8635 -> 0 bytes ...Subviews.centered_LTR_393x852-17-5-3x.png} | Bin 8635 -> 8647 bytes ...Subviews.centered_LTR_820x1180-17-5-2x.png | Bin 0 -> 4373 bytes ...views.inLayoutRect_LTR_390x844-14-4-3x.png | Bin 9757 -> 0 bytes ...iews.inLayoutRect_LTR_393x852-17-5-3x.png} | Bin 9757 -> 9769 bytes ...iews.inLayoutRect_LTR_820x1180-17-5-2x.png | Bin 0 -> 5072 bytes ...ayoutRect_centered_LTR_390x844-14-4-3x.png | Bin 9079 -> 0 bytes ...youtRect_centered_LTR_393x852-17-5-3x.png} | Bin 9079 -> 9091 bytes ...youtRect_centered_LTR_820x1180-17-5-2x.png | Bin 0 -> 4827 bytes ...iews.nonZeroMargin_LTR_390x844-14-4-3x.png | Bin 10905 -> 0 bytes ...ews.nonZeroMargin_LTR_393x852-17-5-3x.png} | Bin 10905 -> 10917 bytes ...ews.nonZeroMargin_LTR_820x1180-17-5-2x.png | Bin 0 -> 7385 bytes ...iews.nonZeroMargin_RTL_390x844-14-4-3x.png | Bin 10781 -> 0 bytes ...ews.nonZeroMargin_RTL_393x852-17-5-3x.png} | Bin 10781 -> 10793 bytes ...ews.nonZeroMargin_RTL_820x1180-17-5-2x.png | Bin 0 -> 6424 bytes ...argin_inLayoutRect_LTR_390x844-14-4-3x.png | Bin 10744 -> 0 bytes ...rgin_inLayoutRect_LTR_393x852-17-5-3x.png} | Bin 10744 -> 10756 bytes ...rgin_inLayoutRect_LTR_820x1180-17-5-2x.png | Bin 0 -> 5818 bytes ...pWithPositiveInset_LTR_390x844-14-4-3x.png | Bin 8378 -> 0 bytes ...WithPositiveInset_LTR_393x852-17-5-3x.png} | Bin 8378 -> 8390 bytes ...WithPositiveInset_LTR_820x1180-17-5-2x.png | Bin 0 -> 4216 bytes ...SpreadSubviews.top_LTR_390x844-14-4-3x.png | Bin 8367 -> 0 bytes ...preadSubviews.top_LTR_393x852-17-5-3x.png} | Bin 8367 -> 8379 bytes ...preadSubviews.top_LTR_820x1180-17-5-2x.png | Bin 0 -> 4206 bytes ...allySpreadSubviews.LTR_390x844-14-4-3x.png | Bin 8063 -> 0 bytes ...llySpreadSubviews.LTR_393x852-17-5-3x.png} | Bin 8063 -> 8075 bytes ...llySpreadSubviews.LTR_820x1180-17-5-2x.png | Bin 0 -> 3964 bytes ...WithPositiveOffset_LTR_375x812-13-7-3x.png | Bin 10070 -> 0 bytes ...ithPositiveOffset_LTR_393x852-17-5-3x.png} | Bin 10070 -> 10082 bytes ...ithPositiveOffset_LTR_820x1180-17-5-2x.png | Bin 0 -> 5413 bytes ...WithPositiveOffset_RTL_390x844-14-4-3x.png | Bin 10149 -> 0 bytes ...ithPositiveOffset_RTL_393x852-17-5-3x.png} | Bin 10149 -> 10161 bytes ...ithPositiveOffset_RTL_820x1180-17-5-2x.png | Bin 0 -> 5296 bytes ...dSubviews.centered_LTR_390x844-14-4-3x.png | Bin 9601 -> 0 bytes ...Subviews.centered_LTR_393x852-17-5-3x.png} | Bin 9601 -> 9613 bytes ...Subviews.centered_LTR_820x1180-17-5-2x.png | Bin 0 -> 4970 bytes ...dSubviews.centered_RTL_390x844-14-4-3x.png | Bin 9601 -> 0 bytes ...Subviews.centered_RTL_393x852-17-5-3x.png} | Bin 9601 -> 9613 bytes ...Subviews.centered_RTL_820x1180-17-5-2x.png | Bin 0 -> 4970 bytes ...views.inLayoutRect_LTR_390x844-14-4-3x.png | Bin 8612 -> 0 bytes ...iews.inLayoutRect_LTR_393x852-17-5-3x.png} | Bin 8612 -> 8624 bytes ...iews.inLayoutRect_LTR_820x1180-17-5-2x.png | Bin 0 -> 4532 bytes ...ayoutRect_centered_LTR_390x844-14-4-3x.png | Bin 8969 -> 0 bytes ...youtRect_centered_LTR_393x852-17-5-3x.png} | Bin 8969 -> 8981 bytes ...youtRect_centered_LTR_820x1180-17-5-2x.png | Bin 0 -> 4644 bytes ...WithPositiveInset_LTR_393x852-17-5-3x.png} | Bin 8786 -> 8798 bytes ...WithPositiveInset_LTR_820x1180-17-5-2x.png | Bin 0 -> 4384 bytes ...gWithPositiveInset_RTL_375x812-13-7-3x.png | Bin 9868 -> 0 bytes ...gWithPositiveInset_RTL_390x844-14-4-3x.png | Bin 9868 -> 0 bytes ...WithPositiveInset_RTL_393x852-17-5-3x.png} | Bin 9868 -> 9880 bytes ...WithPositiveInset_RTL_820x1180-17-5-2x.png | Bin 0 -> 4837 bytes ...dSubviews.leading_LTR_393x852-17-5-3x.png} | Bin 8554 -> 8566 bytes ...dSubviews.leading_LTR_820x1180-17-5-2x.png | Bin 0 -> 4298 bytes ...adSubviews.leading_RTL_375x812-13-7-3x.png | Bin 8498 -> 0 bytes ...adSubviews.leading_RTL_390x844-14-4-3x.png | Bin 8498 -> 0 bytes ...dSubviews.leading_RTL_393x852-17-5-3x.png} | Bin 8498 -> 8510 bytes ...dSubviews.leading_RTL_820x1180-17-5-2x.png | Bin 0 -> 4257 bytes ...iews.nonZeroMargin_LTR_390x844-14-4-3x.png | Bin 8022 -> 0 bytes ...ews.nonZeroMargin_LTR_393x852-17-5-3x.png} | Bin 8022 -> 8034 bytes ...ews.nonZeroMargin_LTR_820x1180-17-5-2x.png | Bin 0 -> 3935 bytes ...WithPositiveInset_LTR_393x852-17-5-3x.png} | Bin 9868 -> 9880 bytes ...WithPositiveInset_LTR_820x1180-17-5-2x.png | Bin 0 -> 4837 bytes ...gWithPositiveInset_RTL_375x812-13-7-3x.png | Bin 8786 -> 0 bytes ...gWithPositiveInset_RTL_390x844-14-4-3x.png | Bin 8786 -> 0 bytes ...WithPositiveInset_RTL_393x852-17-5-3x.png} | Bin 8786 -> 8798 bytes ...WithPositiveInset_RTL_820x1180-17-5-2x.png | Bin 0 -> 4384 bytes ...Subviews.trailing_LTR_393x852-17-5-3x.png} | Bin 8498 -> 8510 bytes ...Subviews.trailing_LTR_820x1180-17-5-2x.png | Bin 0 -> 4257 bytes ...dSubviews.trailing_RTL_375x812-13-7-3x.png | Bin 8554 -> 0 bytes ...dSubviews.trailing_RTL_390x844-14-4-3x.png | Bin 8554 -> 0 bytes ...Subviews.trailing_RTL_393x852-17-5-3x.png} | Bin 8554 -> 8566 bytes ...Subviews.trailing_RTL_820x1180-17-5-2x.png | Bin 0 -> 4298 bytes Example/Podfile.lock | 8 +++--- Package.swift | 11 +++++--- Paralayout.podspec | 6 ++--- Paralayout/Alignable.swift | 2 ++ Paralayout/Angle.swift | 2 +- Paralayout/AspectRatio.swift | 13 +++++++++- Paralayout/Interpolation.swift | 2 +- Paralayout/LayoutDirection.swift | 1 + Paralayout/PixelRounding.swift | 13 ++++++++++ Paralayout/UIFont+CapInsets.swift | 3 ++- Paralayout/UIView+Alignment.swift | 3 +++ Paralayout/UIView+Sizing.swift | 2 +- Paralayout/ViewDistributionItem.swift | 3 ++- ParalayoutTests/AspectRatioTests.swift | 6 +++++ ParalayoutTests/PixelRoundingTests.swift | 6 +++++ .../ViewDistributionBuilderTests.swift | 9 +++++++ README.md | 6 ++--- Scripts/build.swift | 21 +++++---------- Scripts/github/prepare-simulators.sh | 24 ------------------ 193 files changed, 110 insertions(+), 79 deletions(-) delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.390x844-14-4-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.393x852-17-5-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.375x812-13-7-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testAlignmentUsingFirstLine.390x844-14-4-3x.png => testAlignmentUsingFirstLine.393x852-17-5-3x.png} (96%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.375x812-13-7-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testAlignmentUsingFirstLineCapInsets.390x844-14-4-3x.png => testAlignmentUsingFirstLineCapInsets.393x852-17-5-3x.png} (96%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.bothProxies_375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.bothProxies_390x844-14-4-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.bothProxies_393x852-17-5-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.bothProxies_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_375x812-13-7-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testAlignmentWithFrame.noProxies_390x844-14-4-3x.png => testAlignmentWithFrame.noProxies_393x852-17-5-3x.png} (50%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_390x844-14-4-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_393x852-17-5-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.targetProxy_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testAlignmentWithFrame.targetProxy_375x812-13-7-3x.png => testAlignmentWithFrame.targetProxy_393x852-17-5-3x.png} (54%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.targetProxy_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.bothLayoutMargins_375x812-13-7-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testAlignmentWithLayoutMargins.bothLayoutMargins_390x844-14-4-3x.png => testAlignmentWithLayoutMargins.bothLayoutMargins_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.bothLayoutMargins_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.noLayoutMargins_375x812-13-7-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testAlignmentWithLayoutMargins.noLayoutMargins_390x844-14-4-3x.png => testAlignmentWithLayoutMargins.noLayoutMargins_393x852-17-5-3x.png} (96%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.noLayoutMargins_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.receiverLayoutMargins_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testAlignmentWithLayoutMargins.receiverLayoutMargins_375x812-13-7-3x.png => testAlignmentWithLayoutMargins.receiverLayoutMargins_393x852-17-5-3x.png} (87%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.receiverLayoutMargins_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.targetLayoutMargins_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testAlignmentWithLayoutMargins.targetLayoutMargins_375x812-13-7-3x.png => testAlignmentWithLayoutMargins.targetLayoutMargins_393x852-17-5-3x.png} (96%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.targetLayoutMargins_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testAlignmentWithRect.375x812-13-7-3x.png => testAlignmentWithRect.393x852-17-5-3x.png} (97%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testLayoutDirection.390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testLayoutDirection.375x812-13-7-3x.png => testLayoutDirection.393x852-17-5-3x.png} (91%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testLayoutDirection.820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testNonZeroBoundsOrigin.390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testNonZeroBoundsOrigin.375x812-13-7-3x.png => testNonZeroBoundsOrigin.393x852-17-5-3x.png} (97%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testNonZeroBoundsOrigin.820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testSiblingAlignment.aligningCenterToTopRight_375x812-13-7-3x.png => testSiblingAlignment.aligningCenterToTopRight_393x852-17-5-3x.png} (75%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_375x812-13-7-3x.png => testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_393x852-17-5-3x.png} (70%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeVerticalOffset_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testSiblingAlignment.aligningCenterToTopRight_negativeVerticalOffset_375x812-13-7-3x.png => testSiblingAlignment.aligningCenterToTopRight_negativeVerticalOffset_393x852-17-5-3x.png} (96%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeVerticalOffset_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_375x812-13-7-3x.png => testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_375x812-13-7-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_390x844-14-4-3x.png => testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_393x852-17-5-3x.png} (66%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testTransformHasNoEffect.390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/{testTransformHasNoEffect.375x812-13-7-3x.png => testTransformHasNoEffect.393x852-17-5-3x.png} (77%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testTransformHasNoEffect.820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistribution.vertical_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/{testDistribution.vertical_375x812-13-7-3x.png => testDistribution.vertical_393x852-17-5-3x.png} (96%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistribution.vertical_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionIgnoresTransform.375x812-13-7-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/{testDistributionIgnoresTransform.390x844-14-4-3x.png => testDistributionIgnoresTransform.393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionIgnoresTransform.820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.390x844-14-4-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.393x852-17-5-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/{testHorizontalDistributionFollowsLayoutDirection.LTR_375x812-13-7-3x.png => testHorizontalDistributionFollowsLayoutDirection.LTR_393x852-17-5-3x.png} (84%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_390x844-14-4-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_393x852-17-5-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.LTR_393x852-17-5-3x.png} (97%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_390x844-14-4-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_393x852-17-5-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_393x852-17-5-3x.png} (56%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_390x844-14-4-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_393x852-17-5-3x.png create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_393x852-17-5-3x.png} (50%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.centered_LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.centered_LTR_393x852-17-5-3x.png} (75%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.inLayoutRect_LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.inLayoutRect_LTR_393x852-17-5-3x.png} (89%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.nonZeroMargin_LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.nonZeroMargin_LTR_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_RTL_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.nonZeroMargin_RTL_375x812-13-7-3x.png => testHorizontallySpreadSubviews.nonZeroMargin_RTL_393x852-17-5-3x.png} (52%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_RTL_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_393x852-17-5-3x.png} (82%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.topWithPositiveInset_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.topWithPositiveInset_LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.topWithPositiveInset_LTR_393x852-17-5-3x.png} (62%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.topWithPositiveInset_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.top_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testHorizontallySpreadSubviews.top_LTR_375x812-13-7-3x.png => testHorizontallySpreadSubviews.top_LTR_393x852-17-5-3x.png} (66%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.top_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.LTR_375x812-13-7-3x.png => testVerticallySpreadSubviews.LTR_393x852-17-5-3x.png} (92%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_375x812-13-7-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_390x844-14-4-3x.png => testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_RTL_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.centeredWithPositiveOffset_RTL_375x812-13-7-3x.png => testVerticallySpreadSubviews.centeredWithPositiveOffset_RTL_393x852-17-5-3x.png} (96%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_RTL_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.centered_LTR_375x812-13-7-3x.png => testVerticallySpreadSubviews.centered_LTR_393x852-17-5-3x.png} (94%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_RTL_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.centered_RTL_375x812-13-7-3x.png => testVerticallySpreadSubviews.centered_RTL_393x852-17-5-3x.png} (94%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_RTL_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.inLayoutRect_LTR_375x812-13-7-3x.png => testVerticallySpreadSubviews.inLayoutRect_LTR_393x852-17-5-3x.png} (86%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.inLayoutRect_centered_LTR_375x812-13-7-3x.png => testVerticallySpreadSubviews.inLayoutRect_centered_LTR_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_820x1180-17-5-2x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_375x812-13-7-3x.png => testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_RTL_375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_RTL_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_375x812-13-7-3x.png => testVerticallySpreadSubviews.leadingWithPositiveInset_RTL_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_RTL_820x1180-17-5-2x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.leading_LTR_375x812-13-7-3x.png => testVerticallySpreadSubviews.leading_LTR_393x852-17-5-3x.png} (94%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_RTL_375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_RTL_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.trailing_LTR_375x812-13-7-3x.png => testVerticallySpreadSubviews.leading_RTL_393x852-17-5-3x.png} (94%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_RTL_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.nonZeroMargin_LTR_375x812-13-7-3x.png => testVerticallySpreadSubviews.nonZeroMargin_LTR_393x852-17-5-3x.png} (83%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_820x1180-17-5-2x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_390x844-14-4-3x.png => testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_390x844-14-4-3x.png => testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_393x852-17-5-3x.png} (95%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_820x1180-17-5-2x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.trailing_LTR_390x844-14-4-3x.png => testVerticallySpreadSubviews.trailing_LTR_393x852-17-5-3x.png} (94%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_LTR_820x1180-17-5-2x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_375x812-13-7-3x.png delete mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_390x844-14-4-3x.png rename Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/{testVerticallySpreadSubviews.leading_LTR_390x844-14-4-3x.png => testVerticallySpreadSubviews.trailing_RTL_393x852-17-5-3x.png} (94%) create mode 100644 Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_820x1180-17-5-2x.png delete mode 100755 Scripts/github/prepare-simulators.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0051490..5de0d90 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,18 +9,16 @@ on: jobs: xcode-build: name: Xcode Build - runs-on: macOS-11 + runs-on: macOS-14 strategy: matrix: - platform: ['iOS_14', 'iOS_13'] + platform: ['iOS_17', 'iPadOS_17'] fail-fast: false steps: - name: Checkout Repo uses: actions/checkout@v4 - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_13.2.1.app/Contents/Developer - - name: Prepare Simulator Runtimes - run: Scripts/github/prepare-simulators.sh ${{ matrix.platform }} + run: sudo xcode-select --switch /Applications/Xcode_15.4.app/Contents/Developer - name: Bundle Install run: bundle install - name: Pod Install @@ -35,37 +33,37 @@ jobs: path: .build/derivedData/**/Logs/Test/*.xcresult pod-lint: name: Lint Pod - runs-on: macOS-12 + runs-on: macOS-14 steps: - name: Checkout Repo uses: actions/checkout@v4 - name: Bundle Install run: bundle install - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_14.1.app/Contents/Developer + run: sudo xcode-select --switch /Applications/Xcode_15.4.app/Contents/Developer - name: Lint Podspec run: bundle exec pod lib lint --verbose --fail-fast spm: name: SPM Build - runs-on: macOS-12 + runs-on: macOS-14 strategy: matrix: - platform: ['iOS_16', 'iOS_15'] + platform: ['iOS_17'] fail-fast: false steps: - name: Checkout Repo uses: actions/checkout@v4 - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_14.1.app/Contents/Developer - - name: Prepare Simulator Runtimes - run: Scripts/github/prepare-simulators.sh ${{ matrix.platform }} + run: sudo xcode-select --switch /Applications/Xcode_15.4.app/Contents/Developer - name: Build run: Scripts/build.swift spm ${{ matrix.platform }} `which xcpretty` bazel: name: Bazel - runs-on: macOS-12 + runs-on: macOS-14 steps: - name: Checkout Repo uses: actions/checkout@v4 + - name: Select Xcode Version + run: sudo xcode-select --switch /Applications/Xcode_15.4.app/Contents/Developer - name: Build and Test run: bazel test //... diff --git a/BUILD.bazel b/BUILD.bazel index 776f42e..5bb5d1c 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -34,7 +34,7 @@ ios_framework( "ipad", ], infoplists = ["Paralayout/Info.plist"], - minimum_os_version = "12.0", + minimum_os_version = "13.0", visibility = ["//visibility:public"], deps = [":Paralayout.lib"], ) @@ -42,7 +42,7 @@ ios_framework( ios_unit_test( name = "ParalayoutTests", bundle_name = "ParalayoutTests", - minimum_os_version = "12.0", + minimum_os_version = "13.0", runner = "@rules_apple//apple/testing/default_runner:ios_xctestrun_ordered_runner", deps = [":ParalayoutTests.lib"], ) diff --git a/Example/ParalayoutDemo.xcodeproj/project.pbxproj b/Example/ParalayoutDemo.xcodeproj/project.pbxproj index 3484bfd..2637993 100644 --- a/Example/ParalayoutDemo.xcodeproj/project.pbxproj +++ b/Example/ParalayoutDemo.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ diff --git a/Example/ParalayoutSnapshotTests/SnapshotTestCase.swift b/Example/ParalayoutSnapshotTests/SnapshotTestCase.swift index 663d05a..211220a 100644 --- a/Example/ParalayoutSnapshotTests/SnapshotTestCase.swift +++ b/Example/ParalayoutSnapshotTests/SnapshotTestCase.swift @@ -46,11 +46,11 @@ class SnapshotTestCase: XCTestCase { private static let testedDevices = [ - // iPhone 12 Pro (14.4) - TestDeviceConfig(systemVersion: "14.4", screenSize: CGSize(width: 390, height: 844), screenScale: 3), + // iPhone 15 Pro - iOS 17.5 + TestDeviceConfig(systemVersion: "17.5", screenSize: CGSize(width: 393, height: 852), screenScale: 3), - // iPhone 11 Pro (13.7) - TestDeviceConfig(systemVersion: "13.7", screenSize: CGSize(width: 375, height: 812), screenScale: 3), + // iPad (10th Generation) - iPadOS 17.5 + TestDeviceConfig(systemVersion: "17.5", screenSize: CGSize(width: 820, height: 1180), screenScale: 2), ] diff --git a/Example/ParalayoutSnapshotTests/ViewAlignmentSnapshotTests.swift b/Example/ParalayoutSnapshotTests/ViewAlignmentSnapshotTests.swift index e9250ba..dd549d6 100644 --- a/Example/ParalayoutSnapshotTests/ViewAlignmentSnapshotTests.swift +++ b/Example/ParalayoutSnapshotTests/ViewAlignmentSnapshotTests.swift @@ -19,6 +19,7 @@ import SnapshotTesting final class ViewAlignmentSnapshotTests: SnapshotTestCase { + @MainActor func testSiblingAlignment() { let containerView = UIView(frame: .init(x: 0, y: 0, width: 200, height: 200)) containerView.backgroundColor = .white @@ -80,6 +81,7 @@ final class ViewAlignmentSnapshotTests: SnapshotTestCase { verifySnapshot(receiverPosition: .center, targetPosition: .topRight, verticalOffset: -15) } + @MainActor func testLayoutDirection() { let containerView = UIView(frame: .init(x: 0, y: 0, width: 100, height: 100)) containerView.backgroundColor = .white @@ -140,6 +142,7 @@ final class ViewAlignmentSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: [])) } + @MainActor func testTransformHasNoEffect() { let containerView = UIView(frame: .init(x: 0, y: 0, width: 100, height: 100)) containerView.backgroundColor = .white @@ -185,6 +188,7 @@ final class ViewAlignmentSnapshotTests: SnapshotTestCase { verifySnapshot(receiverTransform: .identity, targetTransform: .init(scaleX: 2, y: 3)) } + @MainActor func testNonZeroBoundsOrigin() { let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) containerView.backgroundColor = .white @@ -213,6 +217,7 @@ final class ViewAlignmentSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: [])) } + @MainActor func testAlignmentWithLayoutMargins() { let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) containerView.backgroundColor = .white @@ -246,6 +251,7 @@ final class ViewAlignmentSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: ["bothLayoutMargins"])) } + @MainActor func testAlignmentUsingCapInsets() { let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 250, height: 100)) containerView.backgroundColor = .white @@ -269,6 +275,7 @@ final class ViewAlignmentSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: [])) } + @MainActor func testAlignmentUsingFirstLine() { let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 250, height: 100)) containerView.backgroundColor = .white @@ -299,6 +306,7 @@ final class ViewAlignmentSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: [])) } + @MainActor func testAlignmentUsingFirstLineCapInsets() { let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 250, height: 100)) containerView.backgroundColor = .white @@ -329,6 +337,7 @@ final class ViewAlignmentSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: [])) } + @MainActor func testAlignmentWithRect() { let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) containerView.backgroundColor = .white @@ -365,6 +374,7 @@ final class ViewAlignmentSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: [])) } + @MainActor func testAlignmentWithFrame() { let targetTransform = CGAffineTransform(translationX: -20, y: 10) let receiverTransform = CGAffineTransform(scaleX: 0.8, y: 0.8) diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.375x812-13-7-3x.png deleted file mode 100644 index 57633e571bcfd986e5f141a00c25fd4efffa08a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18552 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 R4&tFuSJ6=}z5DpZ{{;_xiMRj& diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.390x844-14-4-3x.png deleted file mode 100644 index 6eab1014c4b2badb967b8a6f7bf3fc4319f9bcff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18655 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.393x852-17-5-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingCapInsets.393x852-17-5-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c18862bba1f5b78977bf4caede581995aa6a74e1 GIT binary patch literal 18657 zcmeHvXIK+k_b*scMA{KVq$>yrIUq$TL8OT^1q6|%bfgm@QUij3(v;p26p$`O0tAvH zAT9I`NkF8x0HK7I`mv^<*=uTfaO+`gT zr+!;mmx}5Lo{Eb4D$NPtOxmE-Jg}pN=&IeKD(Sko0DK9yexPonr9~wK9Me!8r)Hu$ zde{W`qoTe*b^QA=71bST_Fu=k)K~s(bA*a2)Sl|tzil1@`@_!&umM;9yFdDt`u82* z9{Jh&2>$KSpU2c!4=>XcJXQnjPPyJTf>2TMTtD2XRT9J=0VgloE9>Y3d!WPbp9J9l z6<|Bu1KTCqkE}u2R8)M!>dK1x�Hvy{c!FlSA2ajPzOF*tCQ=hd5E4`%6)^>dgto zEVZiU< z0~K|!57o(2tUP~^5#X9f_lqRpX53UqXoys2nM7~>r1P+cNp1G;H2>%=;3m~E20Zn} zOD4gG1NrwPRYSVeuj9kH!p z6NS-oOmP&RvgYBBU6DhapuPA@fdSu&$Nmyayxuc5!ZcDN;e0WcF>k|xhM15^b1hdV znqM=Cfno}4yR0OPrR*(N^uk0;l8h!CsCtNn(b`=47=vel}q8GU@ia1kzMc!hz!|q$t%U(5u2RyY4 zeHwZf$ty2dvvpi*7ibD2hs+fo?ldvy`_a^ioUIc9(`&#}dwgEhlIZ70m>_DF$Hbs< zDhuZs?xwCP;})ZgMBt&WF6*bNFj2D2*?u$XvDvVdm;KslR+p1e5-w&PiaK0FMm{U^ zFnM;{Oka14%y;zQXIG5qEcfk9(~UVdTX6ELCQi6@aWW%hg1NBCMA;{`yFboligSR) zDUb%rT&WlNn323aje`mV&pR2KN><+5oXK#7>u?UG%Sc|vcHfwZJ639W_J)<6*Qb0A z`W#TWR4%-9Q{}uGx>CUc|KY*q*{Jd>{UIYzMmGoZ0fzy;U>^d})?ng;h+t&GL$c zA@|&q#RtdEvlLcGxVk)6@^kGr=mgC2cfa-9qb$s=%}W**JycuAIz}8>J^RhN&y3vWgpDA2$e=72sn%QAs^^ zGu`P?tIV6g!Qxnvs_TaKM=PmObZ5@o!i`Z+;-#sEf@n@t2nQQ{I((a9`&%ts(d4;e z`13U%yVbCyjm2-H6?}Bm5SUDY2c%{-H`QWa$acIKK4hk9o{1P#(=Uy@vF(>!*1hwo zTdbUaHe_G_d6Kbw#HY4~o>N2=62a{b(*gV2R<0s_nqbmog21|qbEf!05Q^gAsNv~? zT4~qx@vj*QEk~EuZQjiiFBs}{Un7>HdZdhN}bW;=eo zl;vyMSK?83NQJYcZFM#Ns0j$H4(>ToikN+_%qET7=^sPSw@l)~CcJ1RY1{b5<=F5wrB} zzJZY-7>vIjuO1Cvd^?}np_hhKJ(aBphR*;>g!rYlILir2LoEB!T3a(}X_5G{h7?UN23KJJ#1kyrP%m~w>h>VV znHC|e2hlUN7=FHgBD|i5xk}r)248yvaVNEMrM+gcol8x__RLEo%gFm`cx`jf1*2Y< zIWn*JvvHALx?%H+q^}*!?>Ib1WY)9z1=gTAkB6H>>^fHN?lbXPrO3s)U{}#=CbL*b z3|DweW;h7>Y;zI4aeBYHS9Pgn2837^&sp6`EOtrX=ff5kt&q!|WIbBWS~w$<%9l@y zFhe$sm>?Uw+*tP5V!=kNo6BboVgYoo;)pwrt5eP$*Z%T|_`va=?TNc zs-&GJN_c-m*2(Zn=4wm!L$zwCc@gHqn5O}B`Fx?P0H8t60~(~U%IJ`$-7v-m`J7UA zOn|Febs~$O2NWrFn>=MsX7DSJc5Hg7n-eQg%D9jtg)kp44{5&mw}Wa!^Zo>d{6==u zYqy=8J1NrDZJlV$AF~?dShwHR|7P1`*Rg;#_TadxgKQDzI=Bk_JtKt~l0{$sS z`na;Ali&w;jmSoT9DP3XvL=X)2g}~SAlOI)%(s27A#~0`Huf5lQXG6GU1EW+_kk_P zdP|l|^<-_Ytc(2pTI7%dqKNfQ@fwl{l|EDHM@%2SL@276eX?FFdbfz=kM{O{g!cPZ zCVP5j$=0O~&WA;ShMee}_6uY^xv?i{h0qEP$w{(FJYvwl0d0K8T)K*SGRhSsvbTu$ zHMPx_ogt$?u$sAg+f&l&6;OM(+cTPT5fg>ENE!-xp@qKE&%|Y$RiHM}*njl))E!)H zUkg{g-`mJ&*n!KGoXQvEVnL#Xq{z4EE)u@=%pD8axmk2JYX$=LC^=zJ0|fqC920Gm zxdtkb(59qtPK{RRoKHqxTiUtLh);Q?x3Zc|i{e_Se~yOvceVBi!3;7L)5AFZ&@du# zJ5?vaVy$^8`iqyf~5?pmd_%y{IRMc};V zR^Fw;wkojY>7cRUnL+ICScw2z=*5G<`J-G9WXM|k^Dkeb=laTMpq*L19bzZd(6DDU z!G3cs1%<_OytBA7w}OKAcNM^rkMovY`6y?xB;xq_Vdk=oOJAc9eYKV+8|qU43Dyn+ zjF!`t_emICKU|XWp~zgl?szg4ZUUWKYL8ii+|pdwolAc>CT)w(VTwav-N+g#v3Vru z105V~zf&A$`uN2RBrjvY)J(Y6WB7p-9OsE1L2>wihHT=esz`(ojc&1rKtV%(_2+@G$ zA{Aq&t$Y)F6iQ=-L4fYFJ0_mrTG$~0(4R*qGel~yZq!*@;Df`GQk|8uzF?dGa@U~a z!!qJe^}b=9#<>8Cu&X53`{^ysirjg$A095Wz>2C?ax~n&>|Z!i;nfXZl0Ai?mv@Dj zW44cSR{8HO<`)t}!JD74ZaWj#-3{tWMUOlcdqi?WUm%x95#I>JuTPGD`68gOTlS{w zNvxJs*yj2b!zzu-4WulAt`c4I>ddW1mpsS$E`(@O!D;CF!0|U5ojGH<0^%v1wn21c z{*>ybre~QT-$}^P7l_5IJWy9gRLe&9cw$@MkSQ7hgP5l2?4pRccg(x57uAm>n13HB zi)jM!?Y|>+RN`sICM+&BV{aV_W47hpx5KNzNXvI;8(NqxZhtEe1F3BHUUv}aiDO|4 zH)|@{?sb$Ns+x^mO(Z&)(gv9@3bbma8S08RmHBuf3r)=sX`GRJRAG_&aZ4o-uR);s)V-Njf7t} zk}4$P>nN3m^mNqao{~f49wih@_f#q3t5jz5Hiq=6$jLJ^yV3frtRw1rrf9~28(Dp{ zJ!Qu1aJ31jBwEYc0eWO_UBv?LvvOr136pfoIsY+Wl;khloj86_D{CGvO=+7RRwiOM zXmd!5bMV#GH)W7V#(HSqY+<&^@gDX)%U($MU z+U|2d1hV9|u3~#BgzpBWJQ$Jtx&JN~T&H(ZeEa&7D>0Vyy6?SX0;aMD6j%$p@}gY1 z5Wu=BIhVQLge8vM`yd9-*{c$c8Jv*8Q1TIbHPp_PHzqU2*t&Vo7q#m!Yx_g8%*s8)i5( zyPN>tZgpA*6BIL9;QJizt@AtnpA`2~jfc?hsyN{jp4PMe+s7Z!QNOtYl_K=fb}5KF zHs5L=n_$H=m8#5sgjT&e4W$co+cE`$itHMwdE!EJ#gZ=U!rjq%Xvsyl9kLsnN(g%1 zp}tEX$NSY}yNA7QRrzf7m8~fzF?iD2b`2xsWla;d7m_FT0;}6dLo@@7%{Q6E@YBSy zgnXW(ReF_Ztz+J{s8bknWmw8$cf6tGV0c)9+mLCWko68yVQ;Nia6(c(d*ks;yg-hb z1!+qwu^FXtb1~9?BG0l@Kjy+%jO1BUJ?1;pwdGF*u<(8t(`a=ML(I(J&Sp{9XI4D^ zGREJNw4xG>P&k&~8X;eDv8+OeUq92o!PI=rW9z<*U3CNp|2xaKdE6x?iM)fc$1bww z_%DB4UV6Yk8}*6}E$=WIZ47An68V!#uWCdFha+oV02VwiSk2%y9COeGk3uNaLhOS= z%tk7$4UC4aiVs!gsuo#vcNdNtFFT5*2;e4c$10sHxNJH`M79vV0~)$r-9@rBo_AW( z_d3Au#J0Oa`c^aC^$V^}NF$uhNA&%*SZ!g$`(=$)gE9$>_%APH#S)Vox;tN6I$NHu z$q8WuL`>tn{ZLdHdAB0*uN7tR{-{oL$Gu`Pv^ANtnqrvTpeXQeLUD+v1gAb8ymAAD zyvm}y_)j!=?=8{;;{TVH2kY3Y=XGxLDo%U*qmzPUlXa#U&utbziPr8?58R}y|K2w< zsaG9Dyw0j;;})xJLi~MXRet()uDB;V5vbC0cv8rTU9V+t#!3Hwir7vmlu*8?2r3k5 z!Muo|m9*AO0qjaYgK5B4s%bM9fB)(Wsl$~cFXaz7>@3Vt4YF0jr=F#u>z(wBVi#n~!-COK*F-xJ1Cuy*tUVGo#D<@iyCb_y=#>&$Bhw zUENaz*39Z>n`6TC0{+l_@{Za>II(}k9B!K5T!E3X>!>5)L@14$=}h}{-pTzlko<{| zimp?_SU-jI^t#G0*WoYm#V(`XJFMJZ4LGic{VvrVlQvRpI4>xd4`C@KuDHku>_K}M zRnJmy6f;;-oM~xPf^Z%R<#%L;uqp!!0xUcIhyK!|8q;nxcg|+^TKIC3>6TNEnwW1U zVTcsHe*60DibBGKFMmqe=g~4q=^Wjcp4ZH>U|iRt`?ph}ExraNc50#4#_Mlon5DflA9xS*6BLJRn6I;ScW6;b%E;don=RSlMawn6$X zY>UM1HLA5EHI3e1t-m4^xS(9YVUbPGQL{pB@%F_W#z1we`4h7IU@46AwLOo)QvVr^ zbx#FUh-po^gk0W)>0^aVW1{WXUhF(xIx#BLwe(?hVW|vg_O5a@hILEAM3w8K`_}ye zqkxNsIp3^caP*-$u>S6RMV|(tYv#qppo+>Jex-CTE<)J#T16xyfQ3ms$4z<;!=;xB z&jGG^B7@omi*NpgF=O^Jl9u6=&uKzcPG&yCo|zPw+dXsGCur~1v$5Ir#KVXw>2npv z`9^uE=;`J2UY-5;Imi-u1fQ2tUAT%Ajn*m-h`-tCUE?7K=#uF?M|tg?p~qq^ybYvu zc*Y&ytU)eO%e=^e{WA&4s0e)>rjNdhQ5-bHCk^RI2yWh4_ta zTDFE<-DOZodbvlLeaIWeqV<$dsku|?b@~BT2t94N9&iO z3a3bk554o>fZEBkB@R`bYFrnLZshqlcxee|+E)FBD?4?PMqt?D1LN*ue} zDhB_dzXA8Jgr+RL#JB{p;o)iSwUBiiuwN02f|9$JnJ_#ZkvoM`5M< z&UTR#%m^tn5&uMr-EXD3pbACQUdZd;#?)q@E*X(h_89~{M z3D!DtX!i8#Ga6{U)%;@7=6mMo)?#?K8^^}whch5v>`IZCXLSVl(TwlCRDIbkbj8x` ztxMGCT>MC&YbihWWeu$=^1fn+>EDFUw^`?Ih5zLFs>fnU86jK0O#3Y$%AU*QxD?st zj~*qr%e_d}bb@Xz2Kmj9gmefNe!~too=j@HY^z#WRIawCsq+sX3?3f-) zoE(?gvY)Tr`WH2je-#FQt!CfY_=0FQo7=?-f6!+@lwsS+K1@mxRSTv8M&=s{l1C$h z;f0}nybY#O!=}(XY29>*Hwar$V(>&mx`0jp`_HOL{$fd67qC4YkaL$FO5{*-I_ zzj*!MmLfJjZF?j>G=E>2tuYn80#-?o^vm`$(%;sW-5Tlhd=+O+?3GC9B5n<(UH~m+ zPjw%CFS7t zmyt~5zs^mNA7~Bc+nLEmzGoMG_gE(?+~$h=#l4*Gtj_<=YEgjIZ9I{HHcL%bnVQZ1 zL%0E2tEL9sfko&-DdO^%Wx1pMw>^J+c7x%yS9ZSD=t6zoyN!1b$`{R0-v|)q85ypp z!*zB>DY=~}%d4_XYqi4Q)+lh1g?ZSZDJ7J%?uK+Gc)%(-zbJ2x!hfy%*(s>shxT>7 zT0(m)udIp|l$z!vExrA@QekW1e*no%^bm9Zome_gB4) z4wnVT^7~m?byS4}?SR#L7F9I&kLxAsOtGFk1)dmxFf3^!q45;)m{n!Pc|5hIX?Imu zOfUt8B5i9=z8OWtX;bN8%HSM`nSs4Bo%CRJ|uWD3NtxgED8x zr9Pl!&RE68(96J+TKd72OR!(F-rngik}IpOy!t;?Mhcz`kbbw!BxAfqFc4T9zKI^M z*^p@Z8KV(dfZ+dZyXex{EZIrNMd)kmm0A)7zbd6O>e5$L*oat_<5)pa%ucP(`05H# z=k4~wvF;Ub+(z-D`8YMSo)1XS!0+?muD%4$u|iANzZ>>sGe}cqc_+}oBUyewc%W?F zc4=#vGqP&LqCbx7+k3Uo?8Mpd;TNyFHI}Z~EGNiP_Me@G;`JUJU%|y;8(zkS~YMq^P;XDmjF`#P|cJclrBpq)>z3 z|UGzM@i{XITW(W`dlYP^@yg16W938*=1Z#R>6KBC}Qc z=F+n)4IGmh!eJ~P0@-hivcyiy)#@!n-N}1Rm-$tFmdiBW=aUY;g3Xo=)0qw3jb||~ zn#iK^#rX({T7;YdWfi%R!pNV}-ZPi8b(rAk`}?)pEKc`B#5xPUfN1O@$C&QZCD;q3 z5w9)1%>zN4kyp1-uUrkiycZuCovV54)*>KiYy>fh_Eys6lll3)_#+WwLO1(5r08uqt=H4}&uf<>u?4K6k{6XLI_1doE4>&OFdOZ-)K2nT&^WB;BVT<$;eynl zB67RE@zXvGaO}!lhhxLU`@;^MX+o3$>XYm?6Qq!X%fi{s|GtIuzn+`Vt$?nhhdJy3 zhogsiQL9W(M-<5*$3ppg3=!iV)qBG3sFBm#CqIb)8(^~8oj9xXr;dE*q4{(>T=>4Y zAnV0Yz|>x8jPiSVxiWCl;plzKpB*sbbCgdhdh9%3{F`HAF0&rAzBMAKCyt*SX zSgF5#o!-9u-JhT4x8ML-Uut-Gi(Dad?^W@`=iUWdguQZh0rpS7E7JFA-p4t$NOJ?J zpg#)WicIs>+B)~?CpoRI6}vm#G5bY+58V+#Ys@+wkO7nZMMuER*T-Z^`t=5ts!xt; zBHZFNMSj(`Z=U;)7ZjSL#<2ck13>MaQBU8a0Qb-Su2M5x3XEFX)Zb#jD@ye{n_SkT z{YBE<7yt1Bq2b)=7r*M_IPTZFRU8wC`RD(Qb8n|)L|S?(UvbTChcc*8HTVDECbUjf`3F>Zbz zwY3T!91MzSB^PV#(EqXKj|8?_If`GA3RSXuzw-w`=A)<-Texdp?;opoN1a=0ri&RG z()9-<=NX_3Ij>VItO^K9{#I52THLOqi`6a6P|zx9#Re_&>!+~jfOn2Z|EFSjrq1n} zj;{`NC6*^QL)9W%eksa-_`hDk{PRDRrx_ECNuDg82V3u$yG`O>`qi8pd?c!z?tf~w zua^V=@u-~w(iCW$3lkiYoWDnv`k%-dBc>MpY96>lbG=<^?SH7|fW%`*h8LoIXrQ1} zdtd0lvopUK?D(I^c{1Tr{#yrsGQEc}=G z|EGoc|3mVX1+bK|65;g)m(C@P*u2a-5Xrda+vC#qRc43w#o$ z+f_O)pOtW6cjQWP;`^aLxW3*ZxAF;G3OYe|hvJ;!b-%KK)LklFRNWw7lh1JMk^>t_wiyyvM73cy~Tpvx6m;322EfvGfgvRLQ zHEh!mF&KE>R$P)GQTqtnc>!szCI@(lKzShP1=700FZdc!b@TU ztGa&>ZG6P_twihP=*~8pUIf05=OIsRHV<|SM9-%d=^DJBlbDu1DQSJW!S8M5%t$+9 zrUYnvBymq*b~_9RmFQ{B$6PvQ&iv4;CqKAOxJ=aR@pvzng{laTY5gr@O=!Yri5p9> z32p2-bmu5pdydXjoQY?9yD~Ol+iG7H5$RG2^3dw&dE+WuHD+fh($woSgSii~Fe0HY5p7oOWv5o_E)1l7C<457| zw`b(&L3Q=p5D8((;ox1aX*&`%G#MeJ0+65I3r+}!HTzD;hZhJMB(sj33<*I&rphj2 zGhv=)Pc)Xngf)(u?d6R{aedQ-(t`!sfvcFg`2lH5!@lv#;_i2eIsMi14cB7Rp`7uK zmFubtvQ)EE`ds@XEisQ9;diE|1j9LNt|h*#8g3)V!i7u2)onZGG3b6j|S zN6Kp48)uMf>ZO=-a35_vx2{k#U!+N@-^w^sDGb!!rF)xFnk_;4IOF=;j_ z$HGc~P5Jxk-8c3nY`ci%b08V~bZm5IoW^W`sEpaFkNuWqa^1IXGxI&)g#(MF0lld1 z5eCKg-D0m38Sz=bGKM`hR<4G#@-5BgE-8bUA*sUvOz8%@y%JDm>|cm_9K27(fG2Dk z%rZF7m5vVU`&{cG<~sGi#Co-q#zaCwnjGP{HGE!wg>y}=PXxkuQpYB^dar;s_9#78 zdLxUUZ;f8T*B5PnsnZLcOHjOOY2GK)XkCKB$7q_hDLh;IdZ*tXUxi5;XwFS_*4=#x zGg9!Gy8e?ZN**myo?HnG5K~6g4v*ydDvb`2*`S|Hp$CH1g;;+Mla513Qkk&5%NWZ( zZ}Uo)n6c9*YjH?(Wx^4Ug^dkn(x^LM35r5ucJSjR4W-QBEHER9sV6!=*zE$<^Nd%{ zvF3fU&J=4wc7j<@#DcUJea1&vzORb)BHE9J*z?}2Orh2ZNGy+?!#81zX!vGryym5Z zffSYnxPfMJ+(8B>c33kp{0>KwxlLXQh22IDoR_jt&VSFR>NrfgRRk`v+g*+1<~1kv zOM%Jj(ZgT?)BqEx_?;8hqLIXz{bVJ;F3xf&JLS3UFO@3sY3Xw`~JUrAA^u-@Ie znF$?iSIHqrRtyhgehSGC7?LrqP^W@RauOzm2j~}oA(bvXZTX&2GTI!(?WS}oXT)JZ z@5p=2nfFCA%ZPAk!|U5tjlCWc&2_F_6w`|>1$`4KD+ z5rnKWerJ7*oK>wxqSqIiR#^ZPl6ZS~ojIAn+Aqgnsy_2&MCt4e?qteW7us&8cHWkh zI&mn{F_Hd})(ukdG;`+2b(}y;D~O*zQyrKM@lZmv|5I;qtBp?aZLJ$2E)^c|Bvu~Y zIs41lJjx;=BE6t7a#_H&Th0TvXzSZoH)5%``eTIYr=S-2x4}uN6Cu8@YJS=U`EwU* zgG3$zl_<$Mrb*l2r1wA>w$6PtLL~OpTdY;APL8MbiG%_j!^q+~{qPZys`I+nx8BRm z3}zc=TnO)Uo7z@KLwgjbPWvHO$CDSz8a~*Sczf;n{X=cucCmDKRzxS`sR^1j;8Qm* zcE%pw5f*1#dUg_-yo=*m-r;i>&@Rr;4qgBJ&iUbKW;EK}N z&5w;|HCJBwF{08(`n^i)XY<%F8kwmR16AaJ&}|*0_mcziKpxoW`dP|JTP^MA_*AMI zww@U=wD^Iwz!IO1dsHX8G^_c+x4Bx`Liz2H%WtC9k|C-3%GL6lO(XFGEcoGrZvs(t zUIbBT&GggINkM7lTu1(RCqj5c$7}^!G*fG6;t^>x$;E$zUE~E~hX;i`@1x5F^PgET zNf?6~nGtr
N_%Y6{>-EXn8UpO874{Iz4;aZ7R13)KnL7gy{n%yUAuhISXUN^KTLOj;H>$?*!PmF1y zY&Mo5Ev@~|HE+DO7f$xEc{U+elt#0}#g|pC+e=}jGU_O~lc8s*`#i0SNJJzN_mmUn zb-HAuZN%TN?kZZ!PjhrqTrV#pZZ1R9~_16B}+7jM(#ur2a?@RVtM(x_nxJwGdO~)&`()3fEZp@vP_2ob3F78}!bYpYv zwDI|9U7eP0@??IE)bxwnBrBt4-?{XqA*12k8OFyl-kYt{@e1H%pQ1L3m8I%MuL~~0 zMQM4Xr6(U&r%ufX5)XYfxzHPiMw8C44^O5)FscuuHBNVnP2~z-YkZ@*O9)121_>zn zb%hUa$of!MCu}H}#>r>>S|@yIDpzxXZ35(Ucl8>Y zK=`md^(J(+RbCrKC9HH)IgXuOWg)V^v~`3PMTmmGK!gp8Lq^z*tzRI{1d5SM;N#wH zF)g#x2`wX%`SNrhM(jL`)4ZD77H+hkN%XR4lV4c3F!cZO_nhPpKX{TipCd7>W+oWk z83`1aF3)b8$o|lk^}V|n-0ngj8dSr5%-F==%Bs|3*#pN%R_QR?m0^h{2aUPNWcN6& z85QNu>#KtHM#f$(qt>v;ySMU|#pSaF8;6YPJJ#UtwHs&pW303Q`!+W7UvAnZPkS)o1y`MA3 zh>u!pr6qW$;&zADH`Ovs7T@xK92X&;cqZ86v8)>hNeb1%FiK z8D;^_$>l`xb`9O!G%p?Zt+*)WlnyYT<#HsQI;eiyan8hZbhFm~u^s{a)Xf`p71Kb{ zF-1Y5$~NY=#2awrE1LK3Wn~V9b9DwI;xxL$C!SPyY-3zf38d|Hwb?z>tCmxk!lm&j zj@sg(vItkuq0}{*_&M!e{8uF+nDD$2Rzp#ql;u&4c28dO{V@e-_dOBIgu(-PVne`Fr{k0`m5I@NLp;d`Dh;NT3%t^gI&BimLfa&KvP2H!ma-CdS)eG3 zKIN2Z%(0#ZNY~(SZnv29kNDTHp}zl7Yq;)=3=hZE4nlbjt@y3N!O$0)Nbv=|NU`yU z5gDF~aN(E#h|l$yE5}1wo@RuyU{f++YkNVl@S&^S%hE06#l*y%mbMY|3R7LS?h?P( zVjJElBXT02fK`;kmUv#9tuBIY&XoCKHD*S_^HraCgQ;^#CF(xuqsz@#!3g=v+)>x$ zYXgqrglU}ba@+Q&2hGiJ!;O67fU%WN%Z)L0p2g_VE_WPqL3}gB$->$2R>#Uhg;R?-s4Q2B?p4+3ER?R0Y)w=7=B>qwgNt<6^ z@HR-K1zqQx;j2hFkMR`Rj{F)Qtu?xDT#UJ=Fko|#1lP_h9fqA#*&8Rc1sHLhNgSYIn z1fiDI>~Rs8(z&Gq0pB^}1y5Pj8HD&;%;b&EjMJFij#~Mn(H)V_+sT!nV4pmHtj8Rk zU?{+1)CYk^>*=Egz(TcV;cmRIJNcftH1j=&(fJ*Z@}1hzAJmdQ(Cz*dbimoor?O`` z04znP*IB@4SH0NAzzi6EeVu;6YgHp$9ScoWU4@xroD>R3w0+ooOYiBf*TcE8L?B?Q zjQd>ew*Qn%So*kkL|sR}^W3$i?GZeX=y38bYI~M`V^_P>J zd7xSiTN_{OV12kUDegUX+bdJ?T1Dd2cgqd_j*hSefJ&Hn28hBFr9Zf8cIDR7Jck5; z&`8tWXHotIUWz!<1!+ysXz`6mjkpF`0Z~Fc+ICsJ7I<(eZ@UTKU2?sY&u6Tv{;IX4 zb)vpa#hYmPWT)5*4Lx0!rRcf^;}4*uS6}1u86qRgETN!Ew;=D&_X+wO-7d6d`%3q8 z$B{s!8I!ec)E6!)SJC5=I;Fj+Q5l1Za2>8_o}UyaPz&p^*vIy1uWT%A?EpbpOUieA z`gk$`1@`oS6+TbG43a+IW}fp6|JPsgd8a2G8PA&2?r{V_Zr57E^9JPB{_&$#iRp3x zp<~N20{*sjP*l?FK}^P zkgJ}XwWW|yCeP}sE;p)Jsa|X>8rAp+EJ5?#sn}#5)qP3lf1VnJCs?1jz&PGauMSwH zvKxQ{B9X}^3K>d{?Q`k_hj)qWzdFo#NtS+pNWi3H$m0Fg#z`WR9!Cjq4Ur1$bv_?DP;g7uyJ$UV+0|hei53M_U*`xu6KRb zHTDnoyTWt2N<)Vo`x*N78Z{4-IXQHUHMwVEx?pQ?k&Q6=2DQ1^)DtVIMtIsu(Yd__ zR!?+XUeQif%ad0+)*FjJyza`zwry42dPXHgsY2qrdY%Oy`np*SJwz;x9wL@9LX)kh zY+%22$GC3Te3ap#lsoModdB&8#h&g4H6mL)ts2Sm(rTjqNQ2MxZ2EdEZ-t}TK_^xW)%@T4eL zf%w5CocB`J%M9LY(T!i8Jb2S(Ty>O*kq`8@hFSj6NsDF2ni-ZH8yTVR!oBsA>Ky+t zz)sqqL^hlJNS%$(ztw8Nnk!jPYozk-jO{w`+pL@|$3a?S9dPUI?uXd~@fVXj>-#xd z7K^s?Jvz|n(S%8E&t&DE_VA=V+Fbt32y@5FJB~gpCFrDHxn8Fb)3{FvL(5qvJ^$F# zvE{ouG7CwXWS&%)A$bFGr*wj~W9vsIukw-!k=GmN>H|g%8%%xUlRY9RG3^pr;CAV^`?rk@ke$Tpkq<*qIDK;Dl;NG7|^EF|I>e_ub zyG-)H&Hrj}KPnoi$k_r>H1jRU=Y;`0cj1_13v8><=f<{Af7SY9+)0ptK&G#ws&BHm zy3i5rS+xns4%wbpp#EIb zuLCOAj9pM$x5|m*mg(*^0=t6Gh|Rw1?tE4oFOn6Ma$CczbV-Ev&R$Op z-D*aVk@KAnPxTqqCi1+&xk)gPoQaUPG)De|iGYureRpX_N6Oxzf)V-sp1KyIVuo=0 z3eApsF=pv~@!5Zqt*UA+&!y9E)6+J-2O6FV5vT14VRuRzdLw9085R(68O>rjolGNqH%#Y1>&|8BE z@pX~e6F(BTG{jqq0~6_C$E?{d@CB-6{DnzRt4ESgED5M_`PuR6?T>!0FCAi)cel+= z10tdU1EUbS)#Nv-8KQ7watlj0-iB9?ZLH49ufJ1D-RgYnD{K0A88vfS==y#=)bR4K zIaFQTeLBp9YkD~G_=auH%&KxVdUx9JWM@GKU1WadcYE2Wq8q&b4=Y|*2Z$YUsQHB| zV`~7u%l9c@vWqljdW}YajmC%u%ioIs3O6Ulp=Xa@JyG6)!81`;l zhOr}yP3vX6Jjd&-@Eyr*;o+ZbTho45?xQuv=l1Mt z%VP^?TMy+9k?!auV{kbyc0s?Lmg&J~q32R-=BuboM_J!zLRfn6*MKKmW?*u&o7FL= zkkr?NBXkBI%P~}9@P~%Ls}%I|`R@Q&qJJ>|)EQOi_KG%IbJp+UpLm#woCt+I{krmn zg{O#5)Bfn-*x?n@zpn_u{G(vzb$Qeu`B{46AIrx^)EyK> zi_~MiOwOW@h*i~l9+R#j%z;5Z` zqMT@`H4i~*$bkL1kx zHtkJE%|fnKCt)VtlsUa+=HpccOIZhACRBeGZAg~7n??7O zGqJJ!W`xSKJ^)NsKYF6!Rgy@(Vl~mmvO((eD=7wZb~`ptKG^^VZlptiOkUT1Ih`_# zE+gJ=wE8;h=LjhVfA+8e}F3yLB8@E;uLW6 z67af;H~JFJe*l_xw5TTWP|`i`Ul<^&z}vtpGx+lDuz$Q)V=a}c0k^vMZu1X9-T*Jn zP}A+LKJ}a4uhP`Ph>0z=g+B=42VxcG<6cDM366s2j5<=)DKqv~=AeK)Q4iuGCOMO$ZP|egVASH}jkM-TD3XX5P#TbFz0%*4cZlwbxqvQuM?dnZ7Hg*cD|AYGg>s{ukFp1T$2j4U`Vnek{&9FW^^t@ws-_nxp46D!0 zwx3;yZQqUv>yM3Hf^Gk9pN;K0yX1fRH`!19k>Oxtd*s8$`A5cq)$Y7runyMMf7*Qr z_Wv3Y!SRnYI|Z@tpFZ1LfqaC4;hJ&Si`yRJ z@g=7OjtS-q9Ix7U=3&X>^muth+;t9i4<7RYqdP*^28`I!8sd0w9D^(t&}WF4+h|l% z0o7 z?A!)_$&qex?0splpZgd|^wia_JLg%_2A!Yx?Obw(#HL*XVb8Cg}seR0bor4>)pZBHmpV0+EX8%}#U^$P%D{|ca&*;ZUzxMQx z`=4tN#*+i!944_kgjSk6tfK+{MtRPs*SG)K&8z+iAcWd&1SGU5hjYp7f=){+CCy(3Vtk-#JTp6+gv62`O@rX4%b`B#Qox%Xpio~5_G=*f)p z8bj|7r#Xqmcy*8+O+V`iP!8;?T6!CNTu>(~D+_Ya8y{2f`7 zF1h-6bfVnL0y)6l?`Mk79{Tp;0Ys%V`EDLJq*FuX)4NI2WJJcmk+d6v>VR!4kX$a& zgEHk}@)mcbsmQhf6Wo*%-t*C7=5ZG@X322E^`3H$W^vxRtg6XjU^wPeCZBqm`L~Ta z6Nc8w0dM*gk+l-CN-p7>TPux7LOj50z_s+Ud;en3s)u}$#`j#e>Q=Mip83rSj$1;`*!~4-ZiSjt z!1iFEjN|0J2YiiHkEYw_PoYi&qE(Z}`HMR`4vniWo(-#e#GgW_U0KO{dSC}gf3;>0251g>SFemf{bE!}LZ0eZ zBXcFeRcHLGzI;y<33;+n+9V_PY#Nf+A3B<))}%LJR3*;`|}V zFJG@uSaE0pr$Q|^O133qYPFHyMuFQyGSWW2BQ7>J zau`}KhPdZZjWXs0hm*C<=`_|&-iF@as*XHK=GZo-h4i`>v@%Q?!q=76^6MK+G zh3V@|nj||Z3e~HiM@Dc=;aX$ROh+)z^W&&W<$!Wf zS>54W7-|ls-4a9j)_seX%iMB#DOq%-esfo5=`=ElmRT4MgXOw@!%c(++ol?r-DCkXpHX%6cg zPWa}$milZ&I~JnR+fmcxrCk)-Y3lD1y)75MQ0-ME9k%tw7M^O$771(6*MqbXf_f_a zM`OZM#3WHz;wf~K4E9nfV6zOuL~pN&-`JWhDVI>cA(N(`Pwh5WFy1(A<<`pAJnO2+ zLAv;e_zX-M@Ky(@A?%`zVF(%mu~^ZMdU<4)Z$QE}7s=UjbtCC0pmLH%MvK)4FXK0; z9obt$B5}m-v~*qC$jPU3@1M2%1kta70^#}N)rrAbaO>PK}5|aB-#-w+HR!{lH6bp)fcO6=&n3|kmn_=_*Oy}J27_fJwALG)TDrhoJh+A zeQh?e>`)uKt28-DQ`E2RoKab*97@mzJ+W0Zfl@1LYVH-vohA+Y)8BYIj8S^50{X3S zBW<-HhjN?Fh;ku{$0N54=gO3B1Sn-zASZgIv@6UY`+|+bs|3^%wXcZIC0%Z9yR8fz zzj&X~weSG1@?=C*v2-%YBhsjoi&I*%2n9Rv%eVMblyxU?`2DZH=+Wh>c6>-Z`{6!$ znGT)M@C8K>T&w;CT{f2K@wPziUPYrix$vHcqg437JuZ)@mRYWZGL@jAVR%Sh=xnsw;g>+7ljre3i=;fcmC(MU>-VI1e1_aEKdB7$w$l0iNsDP_ z*e{0IupY6e=^O>5Bj(zmZGu3P8Cxy|6+VC~^#Q56x5&gWH;gess!n=ZmPAnJJI0*- za0kr?5AV&FImu5jT7C*do zE_tfo70KtUn0pfM*kqJb`r)p^erNESnLcc^jFT{>mv#We1X8?W714(@crk~UOOtJf zN}_^r-)frfHwB99I@`jcvj|!l)nLL!Tq^BiKg=rj>=i>wzMMD(e?2~HH23Cs3Q?v& z^YrV!PgBmIPZ3yhWpbi?M~ZHLXNk&vY)l`uG*;M+9I1)Mzymj*+;B*(qg(&Pp1>5~ zmch6i_$vRVlu?K9(U@sWz^i++*p}}t%GIiRr%5oyeHuwGd+!YRLe&dl&{whM^(uU@ zgtOt}jndM(){hQ)E(gRANn#kUDQQXm|W7Cy7=KU%F?%$m=3!B3+0xiuWh7>fQ1_aP219OIv6j4;O1}J!iYWU8f5(ND?xpzz z`k2}Wo=sL^7THxZ*?gSmL4%oJwcJr#;SfI&$)dtPk$bbVh`kwW7iew~guOK`87RXq zJ?v}rN%Mye&8MT{rqey|WXBHm2~hA5tZrhFNo`n<0OV+@(jLh|Z6@%`e$hG6UW!AL zd>KkoAa`4>cJsHTt`8Bzf#s1to!*J17Q!J#fPwP9moKv?O6adLWS%UXE{4_YMIYpq zNC-9~d}m>2VZs_(KTaTfq`OUUx6~0QIB`vO)vZevAakRa(W?~)-t|(G2YcKFTZWi~ z7Ce0BntekNbzdxFb+xMn%qY4&=>t_4LQHG%yBse#;Y&pm?@AJeziWYx0;AKn99Joo zP{ZSH9Zv;9w51dmx!lvw9*sU|E*z5Y)4gB#eT@QtM>VB8UUb`m2Ru^=3>0$ozm^W= zjInuM(&ankZBVrKRKjr4(6IjvS;#o1JaZ*`dX-!E6TVn8AU%>^Kn5Fp9`pBCFaw zNURXO^Z4A~&3ky(BzggICjC!v3Vj++*49bx8Ido}N=etID@RWeEohC#{_4gEW80P< zY%4riD<~`*RQdG#4Y*oL&hr9pLqLQUxxKrv9C+|;HzK+tQ?CJ3vwR0Vct5+*-+>1s z#y9liabjc#fvPX;8+mGX5AOzh_P4hS78?h`H4!Kw_;YNwu=;B zMcuwMbisQj^+;t9(yLiha-+w(R>6MmZdQ5Blrayc^6CP5R3

g|9Npb*8i-9@2Nc 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 TdjQ(bvzKPZR##C*cN6{(*7;65 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.375x812-13-7-3x.png deleted file mode 100644 index 1bf8e0f1eddd45e73455eb2ef841696785aa2687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17213 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 H@w@*6q#^r5 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.393x852-17-5-3x.png similarity index 96% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.393x852-17-5-3x.png index 9f2e88871f65afe0967e88b0055c2a6d9999d961..ddc3f303da9b6d9b7e0a83ecaf04e8e88487f03c 100644 GIT binary patch delta 96 zcmbQ&#<;4Dae|?DOKOB?ny)W|76StV2Lmgk5Cb!i#R!B9j8Y7&U^WAT7o#+s9mJ>s cRl~%<(4NV_0#y?=vA~YSN0Vje#!Wd+0E=D?9{>OV delta 84 zcmZ40#yGEyae|?JMQVg+ny)W|76StV2LlVE6ay=e#R$Z9jM8wn8>0pTGgzF7fuTK< Vfd#6@Z(@xdOV6Cx-i`ZmoB%dY4Z;8b diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLine.820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d1dcc74476a1b0c0913fe01bd64efaa84d6664f6 GIT binary patch literal 11061 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 R1C9kvURvcvsig7y{{cn?Nh<&V literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.375x812-13-7-3x.png deleted file mode 100644 index 966b6ed1961fdb866ba21d01e5da870063d631a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17269 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.393x852-17-5-3x.png similarity index 96% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.393x852-17-5-3x.png index c73761c7560621b7971c07f894f3c042cc629dfd..6c88b8dc37f62e862ee0a106a1d2b47e44d8c909 100644 GIT binary patch delta 96 zcmbQx#yF>qae|?DOKOB?ny)W|76StV2Lmgk5Cb!i#R!B9j8Y7&U^WAT7o#+s9mJ>s cRl~%<(4NV_0#y?=vA~YSN0Vje#!Ycf0D$Za^#A|> delta 84 zcmbQ!#yA0p4DBmYBRtc5eHpYE7#KJhSQw=kSb;1?Ahu(ahO^xmH5iz|;!F$-?U@WL UP&IxNYwTEh=EU}H+!yBr04*ℑe9( diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentUsingFirstLineCapInsets.820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5b3bdbcd9551066db8a96eb7eac3ee83de62b692 GIT binary patch literal 11053 zcmeI2^;=Zk`tU)NP(n(&y9N*>25IRArKDqU9!k1P5J9?z1`%cuDP?FR1nD6hx|I&; z?swxk&+$2b!1ssuy3U?!&suxUz3#QvJ*)1|UXj|GN(6VQ?_ywJ5U40W(Z#^PJOJWd zxY)oqJr(IH5Ma9LD#>A#_0z5a4`H^3Di93~3~nHfi*W~&1Ow|v1o&WJQe)it9ml{> z#iaR9To;q`-!iu_Fy25hZvR`x7zl5!c;E(d|2xEbhxte2yIX%tV;;Q2`a6!%b(5`U zsz?+F@Lnn#xnW>DV7s|7RdiW*fJ9p86RoE}2o(7HvH`w1f%_%|ZnmpMo^Apl>`{3l z`_vorSGHFwZ&g)09=3YFxSe|cxP@!Dy{mvYPADFGIxRt(L&ewIr1)tA3;g?6A4Qw@ zrY`$eRpIMvIT9n14PzhSA9cZ#iT$wHg7rh{>*!!&fm@0#xRfF3N*0aj{2})&ZvUMo z%FvM8+1+aZk$IV>QV_z^OtMJr)lhI>=#&9eW07f z8KZ8a?z$UM#D9q*Vt-X+)ZU14bAO-3Qfvt`E28BQ;}NUDtO*$z{zq!o$Z&$GK56Py z@RW=K+oWF$&fl23`5IJ-cTY#G_gj5_GY^&{wyTGiAmQc#=2OFQb)sak3DX z@9TScIA)+B`RwWYMx5wiyheTT4L+I5mnu}(2SZwY8lp49v|iILebrM=4L_>P{2Xg$ zJo|P#8Rn*4I_dhFuP?WCyxWoXat1UfQ*&1$e~I!pUsO!>$lzU`Z#OfH422R&iPaod zYIiAs%Mc`+(k8dnSF7srVlI36n;i(HFLrb|DAEf-HrE3|S8h(^!4XidEsrtNu@WOB z;&dqYN?6Pv!8B!leKuC@pZs|kTR&s)ysI|3KD$PYM`3lNK2Ux25lI@|bvnzz^+h3+ zKCl)_C|L=u9-nWfIR4V+JSok^g({HPs$GacX-OUqFDEF`L$&+2zwGzRT@lp?xhI^L zHEc~@?6eVuvhbzY!KY0I3hCDSp2pH#X=?n9?gbwjP|h{8 zz8jp=)^U=sXRE4ikLrgQ`<7ZAsVfe3I@k{;3V* zhd0o~@~cwWbn)|c(|PriKGgGVSJ1{v!*-J&4eZgON!rMT6LmqI$%%%%2g=+?j~u^qLv#|53|cplqYl9p7RDjL<2| zr(|^avfI(8|J-qe_GJs^W_Uw+(;0VWr+stX7(q^krq;#a{1}ccx>tk=vjw z&ZFaLw}JPy15)P>Zo@iCRWv8nKr=m!ejH6Xo0BQpMuU7Vk7}A78S7$1CO=FBo^NL6 z$4S-u%tvx`%pP=VI@v70FX2`Dl&8Jj|9Br&@_3xW#^X}ZV%OXyD_Z;~B5Msxh-ETEAbP2{w~NUaq#D4YgC4PY0V)+tE@D)voQIuH??a zHet`5p!>4=Fr60zna)iHFc8QGrJ;u)GE!od{>*R5rf=H*u8+AE|xfl>S@>B@V?KTv~KG16OjzP#tr7G zm!Gt-eAdpBL#`BZC6|)*GE&Wap(Ph=bHWFRAw#O$*jlS4QC{g2ZZ`cA^Xk?brZE=< zNt%C=ABs#l2ze?!qjudkr*wQ#D!H-+3{E~vo-fmdIlh09Z39E@1-UusYQipe#&b~( zRA)mbMeqh~P+xT3DSh>sGS0oMcK)r^v@l=JobN_y{{iDy;aOc9i%+lpGaV{a_JPq| zp2Dui*!pv=FxTlamH9b0&j3e`_dKWL67fteo&X70wT1^Iwzy|4!x<%qQaZ+Or4Kmx zuHe$J$7Gf)m}=*bgGu@(1ZOwdd0n>#-WL+TD|P-$FIvs~d@)JuK?+lk0M!3XhPyl` zVIzvaiSl#>HbMD`C4asEbeVQUZo5^_P!rfvbx(Tn=dgxBj(BrQ9`g#A;Km{jp3h&T zs?|qGtZ5NQmBlc)b}?x{+mc#SO(JYUUw_BWCV+b{#E6Rg`pb5?x8#k{t-$EoA>u$* z_xbm{!0_4f)T5_4IGPK(76I)Jh%H1P(IchbX2inHr}hvnmMNy z{R*@`qjP(^?NLN~*ki_I8mHR4m?(UF<0sV{<;{Up)ns0@ROE$=+(adKl@!=|D9`SN zbh{jADRwK9sJD%0v~7q0sz;n$=CLvf@6$NcX!GfEroxgELS>;-_R(c{pt3{(eqnB) zFY;$NP4xrZ6ec$JNzzdE3#JhYGw-~V{mbJy=ktOH`eu^wwR4yCHzL8Wqb`C@d(Eq{ zc-C{8eE0iAYetzaUSKV3Eu}xT17Gzp33$ud;hf7gn4lG=Rf5*t(+HXHJYJIV(Y+-W z$bU%|-3l`SOJv6hYcq?xv9hXhu;R0Cr|GjEWP46RONk~0tS5X{vXvfMd8#d0F)~w? zec9_#SQDaY{iQOiMCrt7-dp!L6bGy4RCPNDAC^E2*a?SjB@ZMIe-IHc47+ zX|bdm7M0XQ<3&KH8?o#SKmM-75QD9MKWlbD7gTb8_*s9Y=BY4a?bX=^MLSy{1C@1P zogXnc&FtmZJN8Smw8VtA>Qi|oN(U^k*XYMDp5K>TTY=TFM_z9=Y{zz`VLmHksNjWr zhS5xsRP3Sr7UM!6r7Qr`g!4JoVKQMC8DjCMh=G?Sk-zF&JSZSF634P7D60uv)bDLb+@%j3flnn+X1^*h2{Tu-YF zuqjz$l6&(>w?f|}LeWtW6k_3ne)o{BgcAfBWttzNU+BzWkKwncxfJLj-(QwGI!qo6 zI&PS&s`%dV-T_Lj=2JF8ge78xqZ-P!XB%MtpgAk0fOV<>JhW>-h)L>u=iDUU?&upL zRg4BU-`YM6JAYc>*<-Ca05A4Rqf42UCz2GtOM}-~Dbl&jJ^%iN+FNWACVW*RpLtak z2G4QJsM$_|>8KaF_vENS$0jU&(5_&r>^`GpVtDif%nw^tJpG`IJ+sxL?vbtfwDKx% zdNP_6`srsW8RFpTeH7@gUiFC~fdCuzg@S>P9FUNr+?<80uotf*HpQ9@9@nMC6^Vk5 zqE{~qc5Q9JJ1tmBQ0~puzaD5_aphTOq&hfM@)87F`vz>=AGYmf?LpGt^O*8FhS^Fs z^OzhIe|X|YL>cmx^h{fQ>+{!6KgguJlXBwsdNB2Jt9zAHd3YJhgDX$zG<^vM>K2JjjK_b3&Vu2ideRfrMjMZ38_x1_GaR_( zQ=jW~e2WR2ts*rVy*rwu=JWCLvnSDK0U^7&u%5>0u-OqrP`LMNrMSm z_Q#3HWs)WvrxaAtltRW3OcslxXLm*V+9%AKJ1M8ZMlUVnruK1RIfQ3cXQpBOGBQeB z4eQW4Ji6$7)Na$0)wGEQoBmTl3!TZNjxof5v9yhkN<~3fEN?tGlyg%;$IwJ1_aP+* zLHEp9X%$ln1CI$`pO|;6>$7`t%|XbhmLGTloSma*?zdn6G!>SU5_pcyjtzu5I?$W9}!>f!U^K;J^`~m0dztHJy43G2l z6nHKzsYDPizoLq@3S|U~b;K3$issqRr1u4w?rF>$03E-Z z5h)~5S|!K{GGFY`PU55B2r$s=2+K_#G&+aVF*$Fs-ty@J3qFy1Lpvg^N+YUgvanyU zTQyNSO0;0?L6N64QQNs#7Qmj2Jm3ov&dITNj0nlx*{Ilw&pE>^q)!g)d&Jidx+NsL z%5%A90C~JFbH=D*P#9m7EVg@H2DcF`^op6xPcNyYdLceKXr%W9qFxt(4Kk%nzIc*R za=6^8E*~y^@sr3=oYD0qNluzERr1o_lBq_u?w1oOZfl75cdg^3``}PDz8Lp_T`jD9 z>bz8&&m@1>sl@?#yva%(op|HEnYFxOKqivcn?}RB{S6S!*(yrWLV6K zF^$!X$;oFtkyPyM`AD)W^^atr0OHdk@^Nr>)LH zB;C?#_`Io1gf&D5)L-!MCBBLp&3$nn0kN-(niB$%Fi6#-3D-Tu_8DrOoymQYo+gX4 z7jTDQ?ePPjKGM5|%_?Xp` zaw2ACJ4!nk%(x8xK{jLcZqpWQLDNzd?K^dT$;CUe*j-q^=3AUd zPMv}J;z9F?S2tH)r$|qy-)eIrv1yBp>}GIZ$lk^Ru(CqdCdndgBLm2PC{e8<&tP{R z4#(Of9;zHqWJ}(L#14*$f4fI#m1kE?mzdy5TQy{~da`b~-je2d+M+(GbAT#TB7ZXF+M?7l z+XRzz@3ES|c&$+S?)y`BwkZwc&A9ky^XF>GAlVy+c4ChJcli-#Qb#OTtm%*S%JrSv zECqPdid1J&|Epey7@dHpt?TiqCPQT0Pmks@Tsqq~Y_dX}Da6b+$L=ap-9~OYv7Ax_ zR<2=EW%%(0*mM`?&or?|)lO|dOH2dPXcdMDS7@gfDo4}&gx;H#$J31mRS>2LE(qzS zKxRd?Hv+%>d=({C(b?#%K>+?RE=#1Ll+MjFRF z9)=4>H_+?iq9^A>6u{;I?ljz`mm2#D8YPWxdD7_+LYNc2;Tt}_R*R~QV2G>rXn$@H z*!4zNQ3|&p&XrP01l_5g#i9>KPCw+#9o}SlPR(%~efkWsm~~yS{ed(Yd`&9gbgnns z%a^~m<_bMOz{IT=W-%{2xi9*F4!2e$n6q2vaTDRhA=iZN^yInJq5M^HNRw(V{Bjh{ zcWUrA7SR=lD{dc4^BY-GN?5Om2u%Nz))?;M8|>CPnTR@J4LM_xr@Yv{0dwU~W63)X z$ioF6A)K(<9RDkQ;3aw7Mu*3Oh`{B4DY8^Ix1`jwUjP51fC1hSg1M3v^P^fRfS<4h zhyWh@w&QjD62MFhbuU0)5KQIH~%nQ1+uMiGwFY7 z;5_4cyHVCqW`u-jkX|28jbBQ8ntr>Zc`-zB;vzfC<#|zf2x|C+CYc7@P$VpfI&gX= z!+!xWChBj{bP<(zMR)-CXSu%V=RLKPt^Xlmy5hy9Li|-v^G6#O%nTUM;kt%KubiQ02QNppR3&0^W{k?->YfxZ1_i;rhkrY?TD+Zug-{#MD&I=neFfO z^4sx|)*UT-&1^c7`2Rz7Zs1vw_|dp^W*d?87oWXu4&>dH-<~^O((~&AH&d5(a>umV zx|NIl0q40H*Iquy`d?O3yWdDN`Krg?Pk2r_j`eH+ILW@O@n}*%=Y|nYI3W8nfNgqZ z9e`Fc#{leCy0h5pw>W>cUR+My<2E39ER4h8|1xvnh81mPK^pfu8G=v<9bLj-qxzFH z&R<;YA1XREO6;SAkZYETlAD!78Kzz{RZR2`Z^+VbuGnMPQ@#;k-2We@vs~M-z6L`LW=S?Es*taf+3`I#~vI(m)T28npDD@0&2%Z~fIv(OK_>_b=Jxn%6%T zPwoIP3eR=h!KT!9mz39`8s~gnV4?qS8U@nL8lG?ez z^QwW*vt*w7({EKPj{)YNXTbeN(|a*Nsk*27i8kP&pD9yGpRMK_v0*?zEBdZvd&OQb z3C`xd(BU?gZ+{*3{#NkqNB3fXy2rWpEnN=lX~m!~0i=@AMkwKMP*UsKX?h(980;-H zft{7Sx8)M>>*uKK0A%}|q^Q$X&Y06Sg{R&wH^7sJbdhqd(@$AEh2}j6K34oNztr`* zLGxd2d5a6@Brbx%Q9gyoE=fO$m1w_*-_WTCa1E)?e6miH#JLEZwJ+ye4fgH)-4wm| zMT_8Td#HDh!nfV#Quu{Dm*i{H%y{`JxlGp4*lM8;U0DR-P+Cc6WSo2&ChN)#)y~FC!1kGW*+xJh6bwv7*1l9T2Gv|7IGEqx|zL?wf=6rn0WBbpS}6!G1TO;3-Q+#wzKW|~r`i_1UXFgTrm z6B>9tWUL!z=M>D|OJkXq;#ME*z32k~ff{|93rfmBfZf=qtX1@a>^Gv0qDP`-S+Q=H zNEs?7AMREAAz?uB{qla(^~b~U+=NtBL`MFm^>!45a-=Sq?lk431H)NqOz$Du>>?(V~CT=Sq z5>ha6EGgZS_j(%RmI^>p*BAQ=yI&(Psi1Cxy&Ag+r}VG$K}#tHptsE?VPzEuM)KS8 zt6iGUy8*zJ1=CYd^s|!7J3JJ;J^sG7CN0L{g1VM-T(fh zY#P@Q2@^=~7rW}Z8`6GUq(b^yCM^n7|3b%v7%cSh>CbPE&!+A5gP9|LvV8ySu5G*$ zhGFFQM6=|!V2sqUE-({y(yC3Sm8e0~_acQDMla46HPQ_GftL>~G(_!j_$F-V?=9@@ zE->8ei2yv&BXaFPNL4~wLqv)!qsxmzwtbIEX3Ou~OSw(kJvBsm@)_`^&_jj8OJH$| zvuQoc51~QsK4q7*XVk2-Znk{+!M*eI3$B^GhJS20z`3KnhTEeOCZ#IY)#OlUQf6y6 zE79629k4eXa`tad_QSr%Nu?ep7|2>*8_3YMN>9QP<9@_`4XROGrT%3>vZczwz59mV z_k)mwItMJN>T_%N|}-S#p%LBMkag@(z$`Vc}N46p6prcSB3s2#DyTMXA(|#RCFFH!DYG;75W>9excu(v6{ zYPuQO#GIZJbahG$%J5m}{E`2ZonQ-BDK}~l$uEB{yHkidP?}9Gp%lD|-{$%A#?Iq0 zxCs0SH?+^h9YXvNA>GBCD5~@gH?;0Kw43hD;6ySjQhF_=3?z3wAH_eKC|mJERUZv$ zdwx(n<3$WcT6SmBuk^rqZdnE=><=^wst+E7er5BjMF z+2O=FhWqbs$gi&ZLF*r<;?fEEmEspkW337kiTHF7z~9PW+od~l`RSk^>(AG{C)t#= z0KAKoo=7^?Yy+i8?HqTj2-BaGyZf>I{SA6rl2rlyr94Lf8^Li9VK#*fq>Tw;S|_qI zpgufI1uDn>q&wXWzM7`7a?vpBK@8rl{K{Dq$%*KNh!bRuOVR@7)>yq}JDA)fu%7{= zAB+VxL_FK*%lf=LgoNMYfnBJoQA6oGml}Wpug7!10U1sdU-_uM)|6&Qh}xxLIyj zGU{_~tBK~D*wN@Dvb#fesS*+w2R^yMM0{%39Pl2X47MwUnS)M<4SAw}4gMEYJXX9>jn zsw*7_;AUsfKJ@9JNeO_x<5PN=H{(G07Uz&`Rkf^vSppEb(E*1%^SRC?N zrd!&o-~L_W@_xKf7wj0*CFRSLW7(xVwt8WdcJ7}(n>D_s4Kbce@d4YZjzwoIn7gl| zb;_i|V)3Yl=+>rz?V?e|Vy}fRJplJwFs$C%q8mNClL!$?joTaRQP1&tU0udCc&YR% z^t^GiSmeU6Xd1T{6kGYY2317b6A+8dz*fDYf-9gEZu^TF)Khp#`As8E@#94RUN$^0 zi|tLwt5|l#W`SB0@M^;HspnO`$=(x+;yW81e%p;+=LxXYF^{>FZD3j5TlHq<&{oCb z6hZ6Imx#O<(*|bzepfMBo2$n32TBhVhCzxd$s)L_TjYJ>>-~vRkKfQ(LCwbj7B$ zF{v&`SQ~QRLY2EDa$%s|82o?;TgAT$KiZ~jOSghe+)6w(bgWVG7qce4KPQp#kB(aV=oVPyo)&8L0NljRLMIR0zVveb@Pzr?Fkw+dI8^?T@> zZQk5@bCS$(`a=G%{DL_TGTu_akpduW`pw`8ZBd$&#Ng*upuQ;J!1>@jBIF`YUsx@3 z`hw;{6vHrCiXwYnpkU?CHj`uX#jf8d{7^N0d2O(y4i@|QfXzL&4XP0LqBg!}lxuq~n1=ZFD^D;=;a(<){7Ik4^b(h=){YrOm>uY<^q))?xN zEWamLNN>X@tG{(BM4gfv^1XJ>)xe1H_EoY1w0i_wz4egE9VT+%LXU2l&m%~w6HW=D z_{@#JSRkD2`7P9oZR0gsdFFS!5<){Fc;&kKF&-Zg&3?~yEtEH`A6%Ae{T@pd(SCBU zT^7d)H^g81$Hb)~L4~ve3mB|L-0v}BaZh&72+uhu0sqwTPdj~2VhPLwhXQLr`H(Vy z!Fxj=N^p{~UJp#xKsFPdO(^sPSwXM*fpr}$rIktlRh}N=^J|!k^nJIl1$x2!(0d&)&PAa!PnGv&zm6qiO+9uO)A9qkkpDPO1bmy`v z3{_`5mKvtRH0vlA_lSHyO9!W33CWHMSl%~jvTIOq-Y0o? zE*co+6(YGp{kdWZ_#x)8N`tT%Sw~u0zEQ1K23#OHHJ!r)hiQP@rG4-F)r&Xx{hbu) z+YrY;dcYUJt3|1!V;Xd2_>Re+Ln`=rp&HEck%Js6LoPu%;1I31P~bshZ1;`9Sg$F^ zpV8Fs>XoykITzLhCab^;@EG2A-MEK7cJ{pSYSx`h-QO*t+HQVq{MV1`cj2agO8Jm5 z@bMftI8fCvG4Va;JnokfU+R*Xy2XV7hQ}93U&dEHoZ7MnV*G#ofe_~+VesXiFYjXq>IN^ocCUB97O~>2*)h}@XeCsyueMXrdjV)ia7%?z^ zKYhZUAqCQcF+zfaWr>nGZ~aadSPcyREpYobzVEvy#5dW1-;c3=D_~@_7{p?G3uFR> z@#`6GvSZ%D#0;h9)VcjztHt2uzx3ncQXa@eGXE|CGjt2*w;~ytmUlR+WFfyrDBY$1 zrRdfzY)S3+xW7wid3XM=>fOIDuo^<5@UIfEXNdk+)f@Z%&#M3HtN+KtO3b_SE@L)N S{U;3IQc=)+QYL5d>i+@E-Y5M4 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.bothProxies_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.bothProxies_375x812-13-7-3x.png deleted file mode 100644 index c992f8d192e181a90d4f7ce3010a4408aebbe4e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11268 zcmeHN3s6&68b0^tCJ^3*@-&sGpdASyD=b(A;uDaf)+$^PM=Z$D>%PKzB z;ED>8<&;OtQ zb9UY5C|B zH;U&orr)(uS!sgoR$J`^MX-h}nbP>pr=1@2;W#UQ+}!;{$D@ z`Ws!-R+DNpO_)RZlK|D{Y8#G)8Ge_aW->KuhI1yxpzKk$zIa={&*3RveV)mLjJCOp zVM@1kdCMnMzy`C@d#w)$wxMW;%?0_aDJ5tYV^SHHq}>ofg3+VaDPBZydrC83b(*B# zW3|Um@sjkjDb3v2_xZ#-jQ&MaPVtGoQ<}}Z=5nc{f)UPZkGNdQYf7`uJze&6i}UrS z{X_1(=w`a9A}?EG6H78UDmrE{RiDxuk11D^P2)=!HLYs}dS0}^UQeBCW`KO-tT}jR`OqRX+L1Q&ou85U^gF}^P9iF|_VptQu?3HeJhb0ANtFUcV^-cADj2=l z^W`f~n=X!af+;;)Pk6`n@Rvc&sdi5sy;tfM$7bgk}PN71@jd=`?87^w^KR1WM zgioU?<4DHGdRXxM)ZiRT92I%v&cWSs1WIj;|HpT4;ixQDLM);MUolW8OCOQUfG1GQ z6kCY~;V#0ImlmyW)#nLzTo0u*M|VGdZ4{5?5wRk!fCZU^ug^G!1+9rt2#BC;Ic|K+B75; z^6G7Dj#-%>ywuXLH6+9D4mc2|P8olk-EY#hHru{mUQ?Xy*VZb_x%+jt(S6c(0i)QH z(IoYrS&(Nh8QhjP`n_pc3_HX=v48z30UX__^4OJsP?TLZ(s}{|9rIu8zbtLZQVc#z zabxTRlndh5xf~c$Hz7P&NU-V`0^DOXEG~jZ#RFLo8ja;5kd#AyIWUW4;#-QW#Bk0| zTOdA@=2GfPAi<-zqb`q(SCNnuNPjSDMx#8}5JRQWX~BRI2(I$UX|Se%Xl$zlPt)wA zjeycobs|LY0X5G#>aMC z-eV;SYaVf91cs%ZHO7NJLg0WE5qa1BU>nTGTvByWF z{Ie7P025@v@7Tv!hcyyGzTyH`OZOkmFM8zH+ zXIdwv5FyJ6CP#ri7*S5n+tz%kvKrcV#;&SwQVIlSo`R`~LU*S{Ypp@WKg21BND4#; z9cdY!lp+f%SHr}3ASF@{tq(|Wa%mLhj+2squIfvjkmAwRL;+0884%iJr?mz+m4|uY zc04-t!!P&yOh`fJscN`jgFs=7@r0wNwiMa%jID^miw~FBPe>WUX@3zOV#Vbzx7-?FgkYLBk= z=xWcebZXIUF5Tw(-EXcN2Dnda@3G47ZPf$)vTehCeZ`v8q2o&vSW@q=G|{ha6(X|g zjN~@P_cgLBo1e8mf7!k@A?AYmw7|JodVG~T0&$4!7}ze)G@|%`l?YM82gs4)3Dn>T zVPm~>NbGTE;z+?;-ZQB^RG5da+|#%F#5=@Npx*_N^B1UH#0&~zn}ke=wVuQ=t?N)F zZujsx(!rAThlkn>CP_bI@bp3D6Ns}m@SjIR#1u*Gfw)z&xkxp8Gi?_*CwU3+geZ+l zKOd9c=(w0Z0L&Vy0I`zkF8wov$gB<)w5qJxz~u^4eA)ery9}kVu%oPGL0508g&uAO z4wOOF7sxv`5aw0GnOGqDT3F@EuSgH!svnZ*8s}WsJr^s z^}BsRoHq*J#=gGPzCM>a#0n!-dsx6}etxe6f=PG$zh$PW;LzUe)?BYQ3ZJN@b-1N9 z{K}hUMjB}Ne5TxU?;C|Lq)OgbB`@3lKQl9AuP5HEDsmR=GRIv(Yakyj!_E&c?v^+B z!s`l6;tQ4l+gF@E4-Rx-Xz{xt>MVG5txZ7l#(ZKMz0H9* zC3S7OED7yks#4khL=Iowf2!Pv*in&eUGd>Gdt!3UP`IxvLXX_!opTUu`jMZ0d0VB* zSp%poBOSf60F{RQa?98nA&Dv3N!cD2K-@CerSuFW%E4Jzg#FU|dR@nz;?V#$P|jnv z*|2%jF5}V}XUA^9fsS;~^o4Boc{&;Kia^b49eYM2wrftT2Gsh9YqCZU!4px_w=jI~ z3Cg62>c*xVK%_;akC$LB0n=*!?f7*078it0E-n7X)j{ApZ#o;T6%WS)XCd_bR9RQj z=yWn3SCC<5z5z&5b*`5DNXhWQh~P_UEJK$4Jb?0pNPeUVVx=a3^VAaK)SpkX_Xd wPS8|*m|U(y_GM=Z$D>%PKzB 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 wPS8|*m|U(y_Gr>7?gcV_a> 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 N(AxED3SS}){TryF+|d94 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.bothProxies_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.bothProxies_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..390f3c3232829060822fb3cdf1b80bfa37342ec2 GIT binary patch literal 6145 zcmeHL`BxKJ7OtuU3`-yc5fp(kLW`o{agduTOTyc}2L-ZB$K9FDDcg-};0m0Kh6cw1U2Ywo}O9+T--S2M~!Yxb%pTUwfpY5~=#5 zwwqhB5n1g^_c)LO%DO#b*X|+X1FnSM>+eV`=<3Y}?_>t3b)Qnq->nxL}4Tg6B5tF*=8L&PvBBf z0dJ+i@cI*Op6EP@6t`qmB%Mav{US9BormFGR4g0#`;Oo|q?~y>I%K2U%c4%1#ueS( z2q{f-#Th?du4A`RVc2OyKSw$zx+{?KQ*ch*$J9)m%g^wOFw zeMAka&2ah)EB6ySd*;qir<9Sy{0;D4*G&vwKJ}?W_gSTry8+iGx!Jg&shGeP4H_x17Hw?Mv|#wo<2hzEWZS(Bt>pCQnHGXwL>pkAdq-{7qgizLrB( zYqIOYXx!nSePms=msrIj=Kvcm(parFtE?*Cxf=S~Z+r zMWT$a%#+5+9pTc4;uf7OpV+fav4sLXAD7hkn_>F%jTAwjB%BuXeO|r+Ay2aMjMRl; z%1fLb52bN$?58I;)(Tj+b=NzYlPI+t$$}*L7x0^@&T1AZ;5t{9p1=S@iMt~l;bljc zcXavaF2AG8$>@JA>uQj%ZH>mEvjh2jHFQEhUniv=Im2|4&OZ4sS4zL-gjNpV(@bpd zN=kxH)Or>77MrlS{I*!mG;x#Oc|*p0PtNs3;uGVF(v150`Ur+Pb>YM5Ik9lp)@kdM zjEs7@s`dfDSC!%(*3htXNO8yc+*i7CcI}L?P%#_Q6V(Wm{Qb$vFUqCNZX@^}MISDB z%JdWO;D6T&LOiF%9QyRd9@ns)$Rq%Aos?UUcn_2eTjMAT-L}{xV;*DpGY{#d2&dO*k<;|ko+l_0cK(Vty2@Z$oDD+z# zHdj;vgJxZe8l0DaAmCp3PWVv)jS^NU(b{Ms!3++Gh$^eI4){*f{Y^xaS6cd^JS*;} z;*(|gF|u0rV!38b%*Yz%4`%P@PI@K7$?(-=xKaIKsAW`Q2voIZjtNoQi?-_?Wzi8f z6HLE}0h?@Fatht2ru?yX4Ou#4Gn%eZoSLkEbaq~Km$H-esqhG^KSg2C>?g#?Q@a+- z@`FPH_wvIkCa#d)Dt_pCpOvN8ls;}iT&)3kB%oJwOps;F^HX& zaQjcUXZOCqzH7_{M8* zgkJ04HK=%}TX*JPMlc_Fjw?G=H;C<9APju~PHY}MNGe;4ZS1ojN(yXh25P;uX#Fht zY?wjG1#}Y;M;`1uFn!h8^&SC32eO}9@xSr-M?4l1AM>*@>CgWPnxENk66#wfJLu7>DfPTK4#?JZ&) z_fFt%jAiPoQjweLzLu6loe#gh0!zv-JELsU!?d&_%f<5FaM*gX@k(QNM~rrO;9Pq5 z8*NrkPI|$yF~?|?Q@a}{-f8b4fs0I(Yk<)*Q?B+Uo&I+>>aBU46|diQkwX?uN1pGA zv}4x@g5S^R0mBP))pQp=$U41-9O4%_(VEu(5RC8l(mdWDaS|A}t2{3Z?p@fcdI>NG zzpht&S>~#Wv8yZ)p0hcZw+AN{w>UF8N{O_3d=UBK!muP^1gITNV#;o53H$FDcbOMj z&>HM#_h-mraQmFt7x4aR^5jA)E!l43zNSFELo@Z zZrk!C)iL9EAn@2w-wB_{k%3?bb|>Ch^32J~*n4tl9-D~*g#;2k^M z*Hb9fGD_rZiw2lw*vR_rr^Z*nlGn%ETcq6vJi*~&PFb9m(E7t4)8^g)!!1q^Lk&W- zPKWO8QCI7T)!B<#8Mc+msnQF=7)W#9Y;jTt30fw}$`c~py29SrJ)@c^15 sp<|sb(!P8Vp!wI0w}qmh|5F7O(O%L`zR92*MgJ4`_422edq!sd3zxJVM*si- literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_375x812-13-7-3x.png deleted file mode 100644 index ea218852fa18d4fe1d8dc0ec2da65f11611e6c04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11974 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_393x852-17-5-3x.png similarity index 50% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_393x852-17-5-3x.png index ea218852fa18d4fe1d8dc0ec2da65f11611e6c04..0d2a902bae50b17393eab2f9bc5952769857b284 100644 GIT binary patch literal 11986 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.noProxies_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4e077062901b0bb3e77c4a7c7e7c0732aec31855 GIT binary patch literal 5883 zcmeHJc~}$I7N1NOlNd_^loDkb3P_48M6n{uC?PC;3Mdo>4Io>sR1^yYSw|44r6E{Q zP-L;LUlTLv^o4W?f)+SA^0q<{L5z1Q137QZQhkynV7D8n87=oM$i{6j75;(IM7=lvvK%`lW7ohkB?BUY0lvqIcps@gc zhbD*%h#$td7>y>{fs_4?I}SpSjw#*=PFqbzz@*+Do{Kx6z@Yk)f+q)boPs{zZ|zW5 z2cXNGcpKe?grRN=(ar`|Qg79%kIEtoj2z6K*pmi0WwOQx`d$cPN45KHaj>Mpa&wr7DV-$F-)?o3DSab2Fu26Kp2Yvv;D5qa3%q5 z0?LqtJE;(sR@#|_Gbj=?;|wnW<#&W^!Wo3g#jPSMKSdGa5Gx~`VWzU@-1}dSUV#f@ z8~2M~gKjo~JHqC=_G!c8X+{ce){pFgTml^RIYA?$KXF-PrNp0NAjlsd?LvRIaBp@M z1QqyGuK5{OFJ@{))F&pF6VO zPu6ZMj$~wUGf%JwvayhkloDE9V)skmdpnwkv$2%<#u5YU7ypa7g}*eR^^Abp4KbS$ zgCWs8@8+<$dWOwT-SJVXOy5q1R3V?osTgdevaj;eQEYZsM+iP+NQ*f%Fpn+|=A@?80Z zh%LOiQZdMqu1juYH{N4>+k{#T)wYxVxcjHDRKB!7vguCkkqn>o{|Ld95Q~|fIut8! zsR%7Op+O0H(#MDiXW6Qqg-LSOVVCK~ z8fHxUu?%slH9wKD`I1yg+&> zN!kK5Bg0x67?X;<(NFCG52@5zZ4h4}DdHy;c`FS}(_+raKR)icUEue_&Xtd3luev; zO*$@=23Q^r75GIRk$))(4j*Rfv@Uz?|qU3xf#^w}2;oNbh$!VFW2+ZR_KRlMyj z>QBtv_~z2DvBjgyFX$;G-vmz|itR4Xv0Z-R8)d6iVvnt$JR?0{QXRUX@BR}-e_-*1 za9a47zoFUS!gZhF$In*m?^E2YwvxA6CuS&aUhyzc9mnZaz}5F&!gH>{~lvE-Jj|H@g`2l4dO&A`4WnQb_bf` ztBwsq4O#W!u%y836AP48A5GQw(|H(2taA316@QE?`<=L>?{*8nu~+H^SC(v18vu|A z)oW8gy5iF9{mRVKCa-22FLl`NaQ5ZHb`Fz#2F<%^0>sCQ^h6WYKnsA@**42sd(J;^ zk?cxv0P6R?Q?+U`M_?@9AMo=G4v1?`b}a=u-T}JW$*rC$tKZEG%2mU@&qpfPw1!Gj zO5a8=br2QutCP_`2U!5_73*DstB_S|>W+V{mXCKFFw}gTlH``Ic4|hU?7_6Nr`lfUEv)_88!@k++^6QEf8kR6wJ(zCb{zi@lQp0 zuT79flr0qu)WRmL2Z6px2FT4;FSTi4F{M$x47NG8v{VcdT3PxIg{J_ijjXy>)G^ zpmPZ~x`?EmS{T5IqO?U(&M(Xtq`?+8ZESxEB#LK*4d$thLWJcGvEX&k0qgR6pZS;_d@>J3%8 z=mRe2dA)3jbn@cgD$<4_`!CXo?d^Caz$|mz>+eO%VcZl?#fk z>hY~GBhVZRfYV#EE)P1Ru;y2J3GklkyZc;VO)(1Wo;Bamo&{td*bvCS#Uys;kxUQ_ zM90zN+La}^Y!twZQ*N)PIij!!jUz4!*yV}KDgj2hAR-#KTm*ddXt;F+m+b?XzC}Z0 zCcp`I5Xqur;k$6z`&zEZ{WTpgoPZM-K``7+2XEoBC(R1blcA-Lf1KOEU%r8O0>ksg UEAqE($q=}l?6>f)Z1O$)FA~a8e*gdg literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_375x812-13-7-3x.png deleted file mode 100644 index de1c8d62787ef97996d11404062430006802a1f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12433 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 amKRWT>0v>Nr3e0h{lM3E`_;aN=Kcrey!!zF diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_390x844-14-4-3x.png deleted file mode 100644 index de1c8d62787ef97996d11404062430006802a1f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12433 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 amKRWT>0v>Nr3e0h{lM3E`_;aN=Kcrey!!zF diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_393x852-17-5-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.receiverProxy_393x852-17-5-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..eeeb1d4470808135ab994f4e2b0de3ffb8557589 GIT binary patch literal 12446 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 n)b?3L(f-}e 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.targetProxy_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.targetProxy_393x852-17-5-3x.png similarity index 54% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.targetProxy_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.targetProxy_393x852-17-5-3x.png index ef00d265ef2f1d0adc3c789feb03f472a9451a26..5ea8335ebcbf04da08405385482adf60b1bf2018 100644 GIT binary patch delta 1232 zcmZpTo)A63(7Poy!ZXd+mqCkxfq{d8l~IU+8OUM;LIy@D239befx(MW8qN-4)PSmC zVqj>`WMF}+iJDko$MR_D^ZJdOaz*L`JY5_^-rhdAQTF6omVlqj_Qp))-+UoWXMwVj zLtGF0Z zmi&*a_hi^`uSqU}aoRNR)6aQ(YM2|oc9~z}Wz;#aOUf?aw0)LX1h%O~ysxDvw_ty>F{2A1$5K;isZWjV7+Uup8mRa+L1XseI*Gh4Bc$9J+kWcZH8-B^#m-3 zICBckTv?CDKS<6b*_FQ-HvIeZ9+)~N9=v8=AhjGGtH3~RGH;Om%f|3}{d{*p(H(tO zGr5@|@fWu)I$HYsx?@6;L{xZeE-J;K}~A_xHcG=bYogut6{Gmw9vAt-F5u4Qsov?p^rlyR^mM_pgr>eVr}D z08CK3BCEKQmWwlFG#q9fS@uN&viX5Cxu`1{}efB)2{ zt-e2n0hr6!UN@R29IUH8_^WRBetC%hzaA*M$~8B$b>EcLI5bFO>i8RU`O*8TWx1Ot zZ&%mcyk6aok?l!?YBi_F<{z46%##bW9mF2|KisLT?7l+M9$4})c)I$ztaD0e0st4v BJKF#N delta 1197 zcmbOb-5Nc?(7qxy!ZXd+mqCkxfq{d8g;9!u706-)Vmn4@INOa;gMk?=&cwjbp2@%h zRpU3Y#*RfvV4wHKeYqm_fu1goA#ZOVT&sF=Ela>nHRhDA9tnrl8yE0SWHd^)kjo<12|HtZI@2`)yx1as*&&T8E`|Yo%efVDg@9*P&o;{8E z`x@u(|Mx5MtNPaO)6f2Of3t6P!PnpG3Q9}a#9o_=uYUh*_uo3^)dgRrC;zLiS7kg< z#a-3F8WE+ZJKx;k6EDLx?RydCEE^bJXZ_f7RVK^HMDgB%^7{-4Yd4?Q7H88rz_f<_ zmh0)SyH8);{`oD#Ytj5Q(o7LR0~$;})o){z|4{iFXol7AJw=HJn1HHv4t%PY-ueq+ zF82n8?5{<&t5prt^OWn^BVNDxe5#cZC<;X0&6p~$>YUA;cJG&2!`5?l>tiIq>bN(U zM63q7Y44-nQfH7x?hRr3*SALr6+bgeC8#j`?4>(tFW2TXN4%~lU^&E@!ECg0Wj!AM zAUTs{SH5OG@ayyb|9?KZvqj%OkU5757OSAJy2nuVMVevF{yI5V(FazqQuKHr@mIAo zFE{tjZYl50fiihqn-x^%GXaV3jP-k2b&Bii^v*qaA7B4x&Y#cE|Nr|6Ol#ZrHBSD& zt?vJ}|0)Gaj0bjAyu8mdE3@2sFT*yyu8tr(48ZjCD($6i$J{uE z1&mU&?;m(sAFrX%D9p(qmcV$88K{!!#-5nFvU>jie_L&g`MZpT;dSHFUt!)!=hla8 zl(5;$pulWow!iW6|9t@tOzJ`mItQe>r|CC-!qf-!;_F89f-1%ze>eY+pY`ePTzxK& z2QEwvUk?=h4Z8g3ebux2v@Mf6G&DCiXxK4M?$wm4zpihp`)^(PEi>+_?@izS?*IGO zUnhLOCL=KY@&a9Vpy}_ormug?>g`1)9Owi)ZI!6iWv*JyaH2K*TDt7${jWZ^(;VN& zUD)@3`~Lr(PhXjU tOkke&Mpa>Qqt4IGwOV_b#2f!JpS&^UX!@47+kr(4gQu&X%Q~loCIFjfBKQCR diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.targetProxy_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithFrame.targetProxy_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0f37ee586b6469245b36b58a17b3dafa3c9cae6a GIT binary patch literal 5895 zcmeHLdr(tn7XR)|2nj3@2o(X5Diiy3{DOG+=|xH?Mt-(f zj4o*-{9?k-d;A!MlI4$+Kd}9y09dsiUkJy?;sd<7<^;?00HhF5d5Pfn2Doqvmxk2B zMw|(06^G?=APyPoaEVy6M~~=TbohQ>>)AiO=*dTJf9|ayeQ#zkMcXdf(U_Pd*FlI> zCP+b2Djw1qE&%8H%(1lyO2&8%89ZKQrHqWOF&nTIo6aXFP5sq`v{#bmm7CZ^$X4C}$kii5xG49=qC)1%UUQ&JC){(%-*TyBky z)3Qa}+=7~v7CMI6TJ@!O%Np+qy9IFs+m0|ryuwsO%YJGy@J8!wP0IEmu>^gc-aXcM zuc{E&&~aD9qvMbNd`3M!o?sG*Y0ZsS@n(+1$}5M%rB*!+;?x{&5zle#Mwd%K53|Xb z-B>5L!IC>ooWpm%l3k#G7!Mi{SYe)y8)NzT^zX+=&ns=6H8V_Onsi>Z#3aAgs&QN` zlTvy}bfSq+(hsQRcJZ8U4en-^o?+u+Hqah;!5l(tVky=`Y zgIn$hu2c&2Ar(Mxd9p1D!OmV3Zv zY$ec@imtTo%5QXK82#F&?gD(tJ&>pd~!9FnxNXufwiW=*a$gOSy^%OO>; zpop5`yL2S<&Bz_yxsG#=CJJd%!t6BNFneyAlzsg-545$X&%c;=+G3QwGs0j_2V=&Q z_0_9WYbKlk-`^D>VqmMd_L&WZ%9~VV5m)P^oGy|(aA(g(4y$7T5gD7mrN(B&)~N%O z$^!$ZEOT2LpV!tO)q)&6JC=~&mH?n4ndy_BE)dl#Sjl(yDs_pN5qr=HDD`eO_Mdb< zl~5aKY`|0sSp-h4%A`ef+{^{}d(VM`VrUQA0VOG=Jp|?Ml7r)|pMJR4F?aVg?kE&) z=d0jE=MkBrH!wZ>eQ4!B{;I+=GdQo0RRO>G2zk^Bsn; zUJf!)tsXZmAgSV($rC+%5e;mORgG=4y)APmd+Hk<$Oii6z!2+ z%OcoMda<~vxhHX&!pIoJh!6i=oy;g&YEJbP<~RdjI3a1Hx*g<&ZqI?oP21QSo zgKgg`{x&Re$F?KaTi)F^IDwZ{SzWe<^-^Q1x+(WH{5QaNIoR?n|0hoURachl0dax8 zAlKoJ-Ey$e&2}S(f@jP2z)I`kb^DKwUunJnHhzAMt=BqbBpQxMD;|rkZ+<5o?)Q_; zDEdbmo1(Y*#gBGXO!bx%0eUgeb!=zwK^+kHnL+kkRbbLWvjZcEj?dh`mE_-bCim#&{&--*&32FK z5uV4bp5K@j5M%eidjp~xAM78$oph5zbmef8=C(?&Eiu>npBog?fNDk;c)APH^%j}5 ztUZBeJybTq8HQof+TDwcp2Oy(R{KTUB3bZc{Qm){PsS@4?TezYnW$c;9l{Hj`PFW~ zxhV=LWgLs;^N1FeAt-n`e*2ua9^?jTfSvSY1Vbq7ATbf#d2?*4!~$|{R)9a7+3kYr z@f-3eAXwZq=*EFYZ+HT1%21d}w7^n6rU6l2cKa8XpiwUYU=D7JQOB_kSpxpYrey}} zq0wRn!fOi~(#Emw?FHB&hOg~zXq1_Rf}4^~6C5l23Siz#ED!h+H#$oMK7!jjR|5Fo b73kx3ZhGK6Jkw*3|1->S^I+X_4f_0FK-9V# literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.bothLayoutMargins_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.bothLayoutMargins_375x812-13-7-3x.png deleted file mode 100644 index c90e2d9c58f436f7c7dada1cc8707abcb1bd74c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13154 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 delta 129 zcmaEt_9$(Fp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU9`Uz&`JZ`@)%ZE==1j!T3d-W!c6ZY?B2fC78Vqyxy!WsV^mR)!JbOmoLj% Ppf(0iS3j3^P65rPe(Esa82WhVgy6os@1 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.noLayoutMargins_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.noLayoutMargins_393x852-17-5-3x.png similarity index 96% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.noLayoutMargins_390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.noLayoutMargins_393x852-17-5-3x.png index 205464915b585262a00eedafe4492b99b972dc15..ea261fc9af9efe58416d6571275c6dfd871b3e14 100644 GIT binary patch delta 124 zcmX?|em#AHp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O z#K6#=$-n|t6E(5Gj^)wP=k*&m-4tiGU0|`fPeM~##OvrW)47v8UjS7xc)I$ztaD0e F0ssTF8Cw7V delta 112 zcmcbfemZ@Ep?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU9`Uz&`Jd`)-Oe>n^a`JWE1TS|lgVCOmXqe>?eOQr{vczD@)Vjn{SY}ixVl9&;_ak5UDu&dwAs%UM zmv!mx5}VECNl4kU$t9O0Wxf#&YWU7MjK1glqv!da=lknhXMVqV-}(LC`}@xOoB5^f zbh1~JSCa<-Kyf>p^Sja(2TYrjU4=uy;Ld;t-pPApyXq2n?EU zXW6(#k>32-e!{0w$??;`<0p$L)YqA()-q0%NKY z0kjEMnaE@%GPQ$`5+*?`%93gSb<}!jO=9uz0GH~=q|7E$E&DaV=@oS^Pwa4^^xOx~ zX>u+bEN5gPav({u+b{RD|010_hZVs0F<|w?Z znldup@9RJw;X#8#{F#s)9uzZEzS;Xu2I^7PBKyuKRv<84wM_CTOvBEXNz+C(&CT>xD{N*M;9>Kk_#CCvXbZLI#1=DqL?xJaH&(TGXoz||4T)Qh zRx?~{9p##T3!pq|(8yU0E8MK`tvMzf52rM+_*N-Q&hm@BKPUV9n#u(3%V?pc%656L z>#dJGY%a4;o1JgBX@yTIGQ{D>eR9)9^8L7@S^_4B?Fft2rbnh*6f$QBui~(sZsysPZBft zpx%VJNs;h(>g@DP>=$zuFVQJ;vMus${j7f4X-kdMjlwzJI>U_K(3l}jPzwe{#hK#S z4cm~F_B05EvBCD-eCkJIZ(9W8!iUnxQ6`kUFs#Znwy)tzAO*`6d3rQsJGoV-*>U$Z7&#+t(li!QF%u^qx1Yr z>QKsnJCr?f{^8zhHNZBY-LYIVEj~6o@8jmN@!`?Y%_ScvqZlcr&FiLSJ`BGYZJ@?) zNiS7M==T3p5++FV_R?@J&uqM~ir;u*NK|cpyUg-jU;Nr#ZVV=y>$5BDGZ9*xGALyCR37kQ5)hT5;)=Q?h|i+ABVm{y@U4jPKudL1GeK) z_p4nr+Tv(U72n|kie9uUp>UH$mN_?F9CM0D-e7!2uX2-;x-`vNxsk8?PYHdlRvJgG zAQFMQ!rruyc0BWvsI^2%5QQXm;K+t$$^=)rYCsa|dqJ^dT8#ScqH@ zc^1lw#-fHN6(1R8cnC)KW@K4SI#(;(Mu|85QLDKnLh|LWPgEI2%z36F*h#RtM$EHO zWu>sBMQ4j>>^Yn~L_2NoF(+YpYmqa`w7DNm*r*;Xi-nM_l`FJ&_DPs4R|=g0r8csQ z)-CD=MfB7*W-O)O6wXIkMyV8if)O_p&jDesPPokmsl-%_6PJu{WGWQeV7|<&!qUC4 zk>(96y5dd}3y_q6J(zTWKkq%ZVY^76t;#wg4T~PUNT5`Ks7YOCq3}Z7^!QD(?TFL> z`Q!x)v4Ad_z7+MpX2FDyfS$SrLSA+Fm$8y)Mjkg~FX^gexZLze>%pOl(yEUxh{|(; z%JbbSLwPmDF*cot!w$W<@w~EB6|7JrX|K{xa`Wm|NZNXvlN=e)5qHNsWZEIa9);W3 zqC>`zg>icNozquDfBa0? zSw9^h?T>t(opPy?lur55=3WPB>ka=twcj153xwI?P=hY6aLzMfXvzS{y>nz zo9>ML>UPS@b}VomD@FJE^aPmV78`Ob$KoSH;wJ}gg-~4>dPI9p1wCUGl}E?Ta`5xc zPt^Zn`JEcOT8s0aAqf*#9ej6L;ov7lg-jK$%%UZp)ls+YN`()Ftp`3s@?0|Z?BnaY zXAN*YI`6R_zy2w++$i)K5knPYjj@NL786ybpCgH^tum{vEW2sK3M-fow!EKcJ_uv<~CS=I( z!9_C{Y`s7LpcCWQH({tRl?2jxmmHO`+u2vTOyrK`TSW|AWtYfo$PHSt6}z>KmV?>G v&M|fv+5jVblj3JA8YXW^^#5N#W@U327QZ-+edCP%UDgRAt5R literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.receiverLayoutMargins_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.receiverLayoutMargins_390x844-14-4-3x.png deleted file mode 100644 index e08edfdbc4b24549ef0b6f2b8d2a729c92da1b0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13417 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.receiverLayoutMargins_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.receiverLayoutMargins_393x852-17-5-3x.png similarity index 87% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.receiverLayoutMargins_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.receiverLayoutMargins_393x852-17-5-3x.png index e08edfdbc4b24549ef0b6f2b8d2a729c92da1b0c..712ac1696281d189f1fd4a4db36c06c7fca51def 100644 GIT binary patch delta 124 zcmaEv@ik+Dp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O z#K6#=$-n|t6E(5Gj^)wP=k*&mMT;{x|2wl;K*CiSlz^%jJYD@<);T3K F0RSy88Vdjb delta 112 zcmeyG@iJqAp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU9`Uz&`Jd`=Z5}oBo~MEF6?U5GXy>zQ^h>cky!w>xTY4-C-09Kb>9 z03!)Oe*n?~xVb(6yP)MC`!3L$_c1U4=lucpeT*k+B^Qb($$oD!Oz2ZZCj229qBAj{ z`jRv}KEXp`zO(fR1z?Guq(OErtA^2s+WtEn-B61H&RuNuz6Na)i#DYr$D3J1)NZib zVeJ+P^>Zsu_-#DcA$ww(U#)%JRmDR zgSi}b8J*S-xL+4SfT=q(2ikYC+~C{b%WqoH0|e>_~1JC0Vt*{5Hn_(B;4X ztE%vz$hYjrp^;q7;cw`cMA}2cjJDNrruTaZ*BcLq%2&poSa)rxz2sqkxw~2##~Cr+ z-B*Y|s2sG7zIvkZ2At!Ytk7LDwa(aV{XT4O=puIY6~PIcYnWu^w0MiH=>)^Z?%3&d zW!2Tn7Z+O#v~g1S{~z-GjT$E>dpcAw%3<2a2g0K`?-Y^&xTY1)@ya(s#G$-m#=z*D z(CAl9V(ssTFnb7r+4ZEy7Z7p+Y=`^f8UC_Qr0=EiaI5B?`bwQ-SHvhJ?z&S4fkSKX zNuPWtnk(|(-PF)29WK}6^C=HF>2u2RY?s?|>oF|_lUeF8v}|qcn5q1##k_6$=25R{ zTN=1CK@3L?Qjh~Jzfvv0<`Tw2){}Izb<>cl(vEy`p6obv1E3M%(< z$_9@KqvuvmnqGpFMu7Gk)7n@3v6P&zY#FHp7bq+AQL3hn`(bhmXJUGDPF43J+uho? zR=+T*4P_Q^doA8A!Zg^cCyr=re*dvxK7ls&cccVL36v@@bdhukOLkZ3H&D8XNH>xB ze?0!N3$xJk)9maIZMI*dho>sZ;c1}7IzhWi4drVn6Mb0ah z{dqvmyH}s4%5&H`Cdv|IzuMfXo9!wVh@wkdr@2*C{H`QLFN_7Z+$^GkOET-s);%xM z9=cS;#ig3~@wDEQ$bdSR0nl4q`!n&tX|`vB_vCoQWc~}`%x*B!qQDdgf4=S#sx;<} zc`3{jie_3`b0NfAGhyV-S{0A#Vt$!;Fy(3#D+W&}BSCI43>VjcELvG0Gb-kL28-3a ze=A7iKXTR~cdZEYh-l%qwbZ)|O&UY&2xDsBkZZuMzqiyzD7g)B21h3&NYygbFmIEm zsoCa!M*J+HpoHYvHzU>q(}Ost8S*asj3OC97Oiili7XbM3~mDSECu4}vBWAu17lV+ zJ;J}VajK(ZeEJ#7hw+@XKYuD&4?yhaf3=PW18UXs*Kf~Gn{~V$Z+#RqYhPF>A_7Q` z0JpgVn6B;#{GmZ^QkeB{iv{gUU)1#n>0;wDtQ-N1@WW>)`mFu^-YgY_7*mhtfDwwJ zNMP0%%PS!PST&}$b<%3{@G*qddXp7W$Dl=P#`O(h&^VYrThYxSP|jqUQ34BUOE?%T zA^{ydK3iUMQuVG7&87k@Ld#_x-tlF=r^ATute~noyN%6jvpS#~EUKRU?F4f)b>-c& ztz;c^y0*F(f-hES27&koF~06!%e^E^C;%h+K>!~{37bFfUkez^8d-0MosCi28dKN`>a{!##yX2U`%gN$4HRr*7)rbTb+o9G%01 z>Bk3p&V`?GYLR_c?MXN#%w-4{ATj@)jvYReSt@p+y(LyuEo~J1@WgLzr>YmCOm*2JHEOAyjAiW)&lIZ z%@w&DVfK-qR7%&o>*!lL3x5e{y9;uksx1;4f{mS(U7pk_nT?T3!0*6yUyo%_XYP~p zK1&T%9Qg(5;~Jyz$B}9z1w!r1*}N@)PWF#Ias*4SUacE-@V>c2^sf_}UY70s4E&Ua zKu5lQH;%qHf!TNrqOZ_j$Av4urvKag$-jRFzIi4$rNOaA0r_3qI)?)z+a0{Ja6bei zXSjec@f-eXq8edca`c$ zf=o6rP9mXL zwdN;+9xWsJLr!9Hiw8bU<67}AU}NILQlcJx9d>k;lij?WuA>qA;NE#8;2cP IHomd{1GE&orT_o{ literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.targetLayoutMargins_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithLayoutMargins.targetLayoutMargins_390x844-14-4-3x.png deleted file mode 100644 index 128e767a163133135cbfdece130960b3c95f86d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13063 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 delta 128 zcmbQ7)}A)O(7qxy!ZXd+mqCkxfq{d8g;9!u706-)Vmn4@INOa;gMk?=&cwjbp2@%h zRpU3Y#*RfvV4wHIec?>3w>FD2s!Ff~|9r$f*+Ei*S?tf+&C!xeBt;&$_OzzD$5jJ$ OF?hQAxvX0D0{B*x!+GhA!19;R+mLU;QJ zwr__O6mJBEhy|cp5$XiQ5)5@bz*fZSpS(Y^{H+WPAT=Be-pcHusP>@jX=lHsXfE=T z#$4Jzq!CFj`V+66W^8;WP)nkCfiVE@EYl9e$KQUOdT1TK#cwA?DTBI0MqQUvLrbZ_ z%<61Hq9_{bv&Cy?95N!WE_!x*QF4#*@!qHvHV^oU(7{*v_Y}>i&}~iZ*%w#V97@|} zQd6yYRhurdRsh|#N?ax8(wN2+hnPhv=tK&MYF{j+gMIPoG#w9HFx^``8i=JGX*wPV zzFzQ`ogRfPIj5eV>f@U82~2IwzMbL$lYU0ooE0CiZ?8n5xE?`|$;mQ5)rlDF{EuPr z*1@<->f^f(``E2n;u}R@4MPn%YQ0v~8+5p#%88X%i%7EHfBy7rA!DSTXm72Hg-@%F znPm!(IJ$&|u#KAgK=x?K^x>_$v10=K&`78otP9yhuP?v-RW_%PVK96I`UfQOF3VP- zn>Z3@rIQW$ZsA3AAgHtM5qme5^vV^YV|eA+7U#tm**q&@mKnilZ9rli$DR!^R-s<; z)=;)FuWP$;T~z}k?{v8@9mgUD$+E?&Xv%*v?qNoDTKm7uPYDeP!Hy;hVOT5LDGvCI(nyZp@`PQM;CjCeoL3m%t;x(gC*sjx?%}8^e%F6W)FqtZjcXqE-Y9x z_#S=uO@Qsaf$3P!ju$Q3Rh8_DI{UT%m*OC7Pt3)!5?x{0Gplx9a*uyjeK5%HUlm?< z*q~Ra&!N6-^k2$<-yGD9TSryFn%M~{JvdZx>EF8((3a=!sRJ^PmpKf4lcZP=^6|sI zg39>OyMw1p2?5RvKzSx9m(2*MS<9nI7 z11sMR5LPgLlL5TXQz!_`$9Zy;_pN)yY=OK&SaA~gSW@f;GLOi74hFhF3la*Fe}oL$zAGpTCJg<5#>qPRufWMk?z!6QBF#*nrrg$j zej39$th@rm-thiTIu5iX&2&0|&&s)vZAf1)$u&BQ$}w!5pE&fATe^w7V4Cp8m=ePw zI)0$YM59cF{!fNF{Io)dq=nP1RPVow%F3EW{8E^0!FZ&|h-mn%V%}guna7k~ z*)KY0Ly^>;OQVtZe(^N`L$~1?ZLR*+Du7|wbT-?q`SXK3df=Vk8wPcTlH7pzyyh|Ap3?VjQTjAu zzu0XrLa79M;lR5Fqemda^x`$GO33hNIXtpI0e<*wM}Sr({E)K|^AcK<{hKeXTyUdN z?}k1b`r6QcDf+(gpStJ?Q;Afh`CBj+oFkUMnwlF^-O{z~E}N9=O0>VuoVzMyW{d%R zZ%gvzBJwzw&LZQIcV{Cc^as*ju6aG2NM2o?eq5uxqM7O@VKO42RI0?BnBEn3I80#0 z&M1WY#8GX2)$3ss$<1dy%-*SPysP|u(mgqMem#-jBU7OUco*?R0QhR-##zWP3ci`Icu+aw*hd@(*FqoH2gY91k3)u;pOg1FM?BO0RpuR5*co zy$L6MAAIqWZbaM@Uws6`9*Z0bK}-|x(D;W=+2zWF3KWLGQ#{!cgfXylI^O4ySPk` zdO;Nl$`;=?5 z5l*28y6__~T0J2=e~xmc7C(@Vvdl|T+bBEwkpKUy+)bA_BMBA~(!l=1WguDMyj{lw yi-RM^Jc9NI8eIOg#a_q5I#e(C>r2nLqvfB6jy~VH#D&^1Fr; literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.390x844-14-4-3x.png deleted file mode 100644 index 89a190f2b1f0ce04f7113ef6cd94ed6dbb9d3d28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11378 zcmeHNeNYoe6u-+Q0n#*33dT?@!HSI`&;quDI^v09IfC`mTkB1)kegXtRo{Uw_Ux6STf;rv!K+>>gPbbLGycG+hk*XH|8{p4+ z4H3I$$r3~k%I*jk^+R|}6L3bM&y1HBpfUt=$vFs8ycXe(wpj{t=GOsErVpEACUmql zkeN7RtvQ4V`?Jh+o9xvP2QrTw<;pw+35;Y;G{zW40-^uf`O6YO4gi@SssM?M&6)Cq z_~y5I`#~NMJAZD%dh}Mu+-*UzLhglz=&R2CmdaHH9;?>`bq4;Y@P>6-qf?t9V*P84Dlyk2aQ?$lURU#8eX*f(^_V z?T6#mp0SHcsl~We&A*w)Vn}s5ee>A$adNLtZxLSXW8nZM&w!1!YYInsS(1wLwFoK>!d%jb!`#2MK+X6FH5??(WE_^!a(G7*I<+`@h_~p_iP4ljh)Ws zR?T$;@x_@}#kcKY*eplVy*VorR z2b1hTB|8e+gvX3S2kc~C1m{S=uDs-_;Zh77&WP3r@s#>bd0ps4@pj=Eo$ySPmLKi- z9XvaT&elGw*qqRkeV7sJgvY+B*SD2;p3AR0o|2C9!C{Q>QrBi|*XJu62FSsK+Jd+k zMx1W4fW^M?oy;n_xpy)H6Hb*Cw${%E&l&UXRJzdtrC%n?Sp_O9t4IrYen<@s6|m>R_p`@ppwitz;p=;_}HP%tz#8ZWJr%?pP$Hc?0Cmvy|b|Q zmT{ZQ0zB(TFcAXY`Rq2(tU}}rtUUki(=wv?TC%5cjy$6_fwe%L3?k9l;_LM(DWR-F zw8XvgO2h)|%qdqlQbWsUocN5jp!M=iL1J9g^!DB!EvpdGf@gN^4-?n}2kr0meq_58 z;>%iKPXvoR#--xj2Ix{L23-nADV+F_OaB*K`tV-=`Tp-4>5CdU6ZxuzL&L*^mj*rm z3@Qm#BL~`=ZLSEKCh3@#f8l;tcnK;YXz-zepaqH1b&>O|>JyRsl2(F{xn6@?7nwD@ z;PRBRa`I%TUt{tDpi`DaMR{kfv@Vi~Gh{@T_|RSX6E0O{#8!)$4BBOg@G-Z?{Jf4< z^3%ar;ztm(Zuh*ErkTr6?=D4o!AFh0<|1wG`}%?U%%N<_S)I`Q7-D5=S<4Xx2-aVR zo5&!0jlNVB+M=S;#2;J@c@8W}EW$?-EruU9l=6T$i7{P0X1e3kUr%VJfF*?SQAA5Y z?#${Mu(J5Y_NeI_Q>SmL-40^A{V_y)=+eGdCIE5TW2Qgu>~TcsZ0Kw_vj5dI^74BK z%Hg_u?eSJopQqJ+>n+7~K;i)?qWpEft4jJ}kcnJ!GP^j)RmJt@0D8P6WO_+)auII* zcw?6+j_Jj9p8__Z6xB#vRl25KI{ixn^^=S&gwkC`cxWP+UOJ?38rb4;Gk=zXh1lT* znAEn$RfTfm!4{W`jsk*(kOl(I+jWjrjQcr2INW}lVj=KoK+LjF=CbIE!4{YJ>MN@} zScoD(XewwRa5%h!aEQ7l8k~cWWEeJvEDFQK-wgC4=);_ivc2u}7tDs-*qEjBtD;H$ EA9%Kfo&W#< diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.393x852-17-5-3x.png similarity index 97% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.393x852-17-5-3x.png index 89a190f2b1f0ce04f7113ef6cd94ed6dbb9d3d28..d35a851d4e9d5236925688240c3dac738c22dfef 100644 GIT binary patch delta 94 zcmewq@h@V6p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O b#K6#=$-n|t6E(5Gj^)wP=k*&m9nb~W|(jU9`Uz&`Jd`wnOW07Ur>asU7T diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testAlignmentWithRect.820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8ed79631205f709b0f8df978e4f00cb49366cf53 GIT binary patch literal 6180 zcmeHLYfuwe7QWq`kPreJAP@o>=>aSV$iv`3*g>adhy;*_(M4cE(BUbo5@10EhcqIi zfEr!Yp%jb?tIjG=f+LbqKn4uTpfK*D2+Pw4jv%AU01hVGO(pt&tNgQ-PTic-r_Swr zzpu}|ed{|A9vWcGux0=Nj045~5&$4M+2{sDMAq!pMHnbk65t1Fx_J}CO<`hWU{Xj3 za3*{@ph9KCEdO;oT7MrppFiYb3*(rz$a1gwCvE3Swl2Nk?rlF^YpY>l z0HUzy^aVyzDJlan9i2Xhi5DG~X*g=?^(CDQGYXMKYYI`#HhUJ5c?wLZPlNS@=qjY@ zdCTdc=6v;w<}dQUR?oG`5KRfvtXWXcpVSmfua&yUshxu*%}u^)SMOFFqN%-U>Zh;g zX1B*_)}x}cj2|`WWh-b!2&2mCLhV5p*2wZ(ZH^qaD$O{2;ReG$#mU5kNn?wbhsW7$ zL~ngn_)VCblf2JbF_&wx|9&`+XJz6f-=etbRf84YrvKq|OgLKm8TRX}GwaM5q0oaD zj<#caw#DG|!=_7CT~}b6(qyBr{)GB{DNTa}7inV*|DC1N)16f6>u7|X zUkjUB7w<*dAgYAN-|_fEbn1r)awd3@Ir`Z?2pp0Pj5pe zYkOuo&%yjH4Q0oVBE09L*z&34QtB1-dTx)1H_Oi84Y$NLRfM_7Jx7r z!TzuT=-8X;oy?2IPjR<}MQZtrw@GR}!Elgy9o7N&Nbcj@V^oQIbgDbGe$X<0B>n{D?ahaCCI^+7`V5%8*GC&9X+xlNhlBtra6dmj>1FmC?gw+|dXLal; zvpzo^fhMncY_8+)VNuj{HEgK($zBJ%>(NYmJ&;c9m$IsMOfTa_bhK1Eur# z;_~g`eD%WoFSZC*j++ZSoRu2Sg?pOoPkU*wV_^sP*h!|UC7(MtV~aBnM6WI3BZBlG zgQCCY*f`20{_8tcOLoaAp+|K(~(K7A;iWQ8}L3WE$7{+ zH_jx#g!(7xdD2(G|M_Ye9m>}%49>@;IvH~#%kg}TdcOXZ=Bsk5x1ob9`;$jeOEeWB zyW&yA#j~!~S8e{dRzpt^mthfZ=W~v9$-Jt10Yd3bl#TS6sqQ@a zkDK7(N`xY~^q@uxKiYGq;&4_(k_>BNdMrf4QP)rXTV$Y2mSIK5`acUrmF^91j&$E) zvcxB#qPSqx<;2fQRs1ZIrK*!CI}8(M_hql@jVg!W2|>$rnqk6|jNKgW%Ss65Mr`d9 z;xBLB?+*B*izkN08d!bpieHKeePy?IkhpIPnzVM54|4kF#mR{V^s2j{t#+yW*xiZP zgt}Y6QXK zVPNg2gnBhYp;xVf0jY3tA-J=#+>cPhUKp~(dnkYu#so0ssMK>GA$L76N9AwnfK)qp(zTmbl|5HZgv9m<)Si4@ikjZi>oFPx2`&Oi>B&2LS*O sE^3dVT<`Vd?DP}WGpeuAkGq&ONLl8)7(P`-tUdq&MWOyRe(?qW1w+=U*#H0l literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testLayoutDirection.390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testLayoutDirection.390x844-14-4-3x.png deleted file mode 100644 index 00759199fec1a4a6727d16dee0a1ee152576c93c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3819 zcmeHJdsNa{9{+))U}X4AO$xPA)Mk7{Ojb&zrJ1i3{Amv*GgsY}R?B>(kgp~iYbT2= zD5xnI6-ShuUX~+fC8n*KRF<`^+Q|pyh}Ni}b3vIoXV2MlcK_IOX3y!K`{jG@{eHgB z%lUopv5=rG3kL+Uug*8%XW(ahc*d5!Qp@dhuXmgzm9-39FYDUlCX0v z;K%%ZHiV}mhP&I7!vnBB?GrP>&A~=}mw1~)ZUkFjKTo0JvM4>lvWtY(ezIZQ$K4PGNYrTgT38;d1{sJHJxMq zYD`(284ep?PKJ!0x2dUN@=kpS(Ujwku~mCIYLpw+eyB^}}H7kUcMdxH|cy zVE`TfB&5eQ+eGe-sVb0%8i3&uMFyr*+#EvR2J>n3CI3g#v{Q3Eie zsiVpL+k(_fis~cOi~D#n{Q=TDk(HRjCb6YO;~sd;tMJ!jri_TC%0mi)9<#7kl`yjx z#vZ4;xfD`AvANAgjM%l0JlqRw$rYrASskqN1I{3)hLe%j`9^?En&_Nvo)c8OU%93P z|LT5PX?zAYi9t)s)z|^9XeY>B4OLT&s9Vsi;))gyUACFqfUy0-> z5R}Hf$c9nQkR`u;9(a`FF6s}Sa?lBGUGLkLmcIA}{bIkH=wEX=-SbGoF(SvoExeDx zx+D)Wn$Hc7tp2faT}v#SC5bYf&96zEQdf4Dc>7#D8J{c@v%M8OonY|QDUauG{_^Le z8SDq*kNav@Xp04;{pn%ZVQC(ZlRaOarmtjnds}I$2n1bsmdDpLzIbM&bU8^^v?d0+ zY7@6;l>IE26b$dX*mK|pu`z1;8q(5c1Th&KJ`wvXLsa*8wvGSKK1y~ z@h=6NZYW%5)A2t1KZ5eRrJyg(%v>tIkqtox!J4L|co`amcf-vKWw&KMTb7}^zws8W zv$&P(r}~Eb@ye6aMQ0ruyqqSK7Z};}kqhGicrCo{CwzP<`S;_N_y*Ek=% z>bfH>CU)LZ=4tV28pW7+`2_wM-0)!Oa#6AQJDBF-zh5V0?Rj0B!i>_CdmdupqQQHQ6$`0J^EWf0} z&?XfU1C zgegI)*V$(8vkgx1T@$@ek4c^;%Xr$)xEWh|tBl)mh`Jzy6mv%6S)J?on)sn?{L1V{ zohZ5%mFy|B9!>lSs787?wC%o4WL_2nHPAMO1SwlzQ%QYYED-BG!@U;k6gcckPacGfL*`RA{|P*3w;2;e z#E$nHpd;=GsgwOG02iQfaW|(jU7wqn|&r5_gV4*03oRjLI3~& diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testLayoutDirection.820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testLayoutDirection.820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8972ee53980fdfd99971ef3d8ebe8115221f2a94 GIT binary patch literal 1734 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 Q{2yDJ?X)sU-$4rg7s0M~@Bjb+ diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testNonZeroBoundsOrigin.375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testNonZeroBoundsOrigin.393x852-17-5-3x.png similarity index 97% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testNonZeroBoundsOrigin.375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testNonZeroBoundsOrigin.393x852-17-5-3x.png index 8b73671975df4d0742745abd7ffaee0daf830c1f..e5422d6189c69e4801f1f7de4de4a7bdb3e9c4be 100644 GIT binary patch delta 94 zcmX>Xb1PW|(jU9`Uz&`Jd`{w8Z05EF}5C8xG diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testNonZeroBoundsOrigin.820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testNonZeroBoundsOrigin.820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e74acc5fb74b629c75e0d6610dae0b5aef2a858b GIT binary patch literal 6395 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 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_390x844-14-4-3x.png deleted file mode 100644 index 4cff3f315e8feedaae84b42dd308766b663ca042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10513 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_393x852-17-5-3x.png similarity index 75% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_393x852-17-5-3x.png index 4cff3f315e8feedaae84b42dd308766b663ca042..362c51f98080f45d1df2fc9393d3a630a620f947 100644 GIT binary patch delta 94 zcmbOjG&g91p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O b#K6#=$-n|t6E(5Gj^)wP=k*&m#cKcnWN8jB delta 82 zcmbOmG%;v`p?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU9`Uz&`Jd`{FeK0}>2C diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c04e0dddc22d3a7d83b82f98ee0097ecb6e2861b GIT binary patch literal 5217 zcmeHL`(G1R7M~dgO#mf=FGOKP9zqedTBzj%j0ztTlt2R(QG66pWVJ+I0s>*u-K{7^ zqEHru6t)ezYJ~+XMvQ>{1bM>;C?cW>1r#YSd5FX)?3vW!U$FbxADDb@?mctQ_nyZ+ z_vD_O^X9rQ(pja0Ajl#P+m(kPsEBTi1@MNduy244jo`WOKnj{x4*>DEqkB2WJUtN` z7&8!U)Bw?S`9s}OC?7(qNxpUH_g3Ly)r}2>zaDAN2GC@@Vw?UMmm%uwowe zCpRj})A}%`VNB))f4V!x_K!f2_yw}MsEJsUBc!6I0U zc>ILzT9QIg><}(zu?UhP%?V;jwi`W75Xa~l+zds}J+d{U+0e~e8X%LwmLFRJa|}k3 z5ugwun*|-30$r>uM+LQc`wb!(*OC1llpY`4!%%MHjA&G?AWNwsHv|Et+-a{ zIX0bGIAiwmYpV7P+P*=b#S&>PuKj4ljv(&lieAULlcXXns^bQZ_g(KT?c`(Fc*-xP z3<-u^s`HO7rKp?)fkL2*qMbb}W%5WA&Ek#--{H7Knf16O7*Jb01UtJ60p@2iTXd76 zZaM8U&bA_miJzQ8tN=E!RaXB`3=4m8KXy2ADNB@y-^!`%n9b6{F+Uwf&3DzIZOzb^ zd_QvfJV*=YDI$&lZ2FY!aWbrGRj@ z566BxbT10M^Je<186y;peb91%3ud%&8`Poe3BuUqyx(Q`(J&M_{cx9}B3-^zgKs3K z!@jG8q&@~4bH0Az|X-wecLCc85q_&zPEyZeI~xlhEN8}bN>jmHN{+;zo6*0 zAnM-phal$F*jsgdd#;zCcAql1ehq`co-h)f-$#;{^~;Anm#{?E4TC1UMCSv`L{VD? zY7@YKX8#Pwi!@7JSlGo%5ttGte%rQY5PGF2z#N_7~a6S{|)!S=MBqGicjyTQB}q!?JqC3Z@>DQN!wpb;+OwHDw>= z%W^4dDB3c${PTCJ$UUUVnk^1@Aw({l%6xwXbo|S&_z={)zdZO_q*3LkY>wB+I)X@O zDt>Z~X5n2(PR75%@t~wZnW;vXKAHd212qT|1dqQk=D2Mjh|~*N*#}@38uiOHj%!?~ zoVo&$xAb|GzQ*Q-s#K-HQ#pU|FE1Tdj3~_oDXp5Oq89~*c|k9_nB~02+xR&XIu%*5*`p> zz6s94&Vc@RQjMVg#$pGB7fDVzrnxKG^e)CmHar>PL8J*@zUpt=gN8UympZtS8a$9}4m4?N-y2=gP2?tXirAXE2GI6ZacodF}T3q`h-&eEK?$r&A zcFRD`g&UXsOi^1+U`qnnwe*dDJ)Wa%kT|yk0CN?kbR-8B<;6dh8yk8P&$KF{obO$kqoRxX z%=E(Sm?M~uB)%V=dn!G$mJ*h3X@GcMSNnx%RjSH2Z zXLvdySA&-vy4{93>vwk3Ac-RAf?^wdwTDiGfe%C~4Zfaq~O(K1k=oa{kQy_Y%qx ztrh=(LdzP}zI17F4b-9ELiQ^XChvmMHl4yaoHvW1Acg!@^Qf}Q0?K3$QYbM`I13m^ zuR$lfdkmnywa6oRm&$hn1`_1Q_NT&_EJ9@9O;~f3P-Ry_iZe2nN}-F}E0S1k6fE@$+iVdviWE|0hRCP71R`{0<;ka>K3w9j-`ahf-W=a46 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_390x844-14-4-3x.png deleted file mode 100644 index 2e3a98eed20ed07ca61eaa401ec30437f418ea6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10527 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_393x852-17-5-3x.png similarity index 70% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_negativeHorizontalOffset_393x852-17-5-3x.png index 2e3a98eed20ed07ca61eaa401ec30437f418ea6f..b13511d5e5b724b5666a1be619773a792331c696 100644 GIT binary patch delta 94 zcmbOqv^r>lp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O b#K6#=$-n|t6E(5Gj^)wP=k*&mW|(jU9`Uz&`Jd`*Jk^32*}bD>cWz?Ze?&lWf&uc@G@P1 zD)3xuOBLqGsNJCG;Xn(Lv?7a@QftKpO5zSefdmu?f%JPGihn`p%$bvybKiHrd+)cr z?|%1}`xV4Sht0KKXiX5rTxocyj37vsYy4R-!l?Z&0Ul>DH(y z!W;U0f=7x7D{cw=2y!98d(tO}2-0b$FC#st*C2w(OChM~H5-9)57^_Rr>RvL`BY;W z`eQZ8mRUXRb7BHP(FTs}2;Y!F5cU$Tky4ra5DYq}gvP`H1%pqX7I=F?<0v$1QSU^X zE68?BLtlza$FgFveRMZpMuy3$AZ>qk$op zTX8c&0YAKPtC-Wu&vyhVLKRNaZhj@4cACEQ#9k;uqN*FAoC@^TEN%viglvAB2WMC) ze1X%4_A^ZAcE9Oit5tRu?nONG(YF11LBp zHJvVX!zU`PyvdJ4NcP$K03VE-=jI?)i4DJ{&9|p2IEHq4CsX-X)jA$^H{L6E^f<%R zKe$&Z2#lp^7ez|(SSvE*ry3RuoaYPK#aWN1p2s-2b8G<$p{UI*Yq|#<(5|}Y^zZVs zH_~*_(uc!J0Y6`gmnGA5lU%=MwjH}ym$OtgOi_0O`;xToxNe{`h4cJkYVfU}&@ObQ z67TqmVG{d-M>~0&2Yy}YsL}$m*=12wdGpm%qFTVRuAUXIOxlr-naAdZl);BZT)4TD zBwtGF5%aqeX*x~$a`EIIWVrst@OeSKH^!9_<8`B8ag}dwlum_^K@<5-V~jl;mUz%r zs>^2>=gVhDw~^%djV86w!42aOAHzSJg=}Y1forJl3J9dUS~?m@(`%7RkI;}Djb zF^SY*s^HTl7(duBX!Ia&WNM@9WHkMH@`NDIo)xn>JXI=0aijSgtq;x^>}chi?1jP; zKP|?1RYlNYO(A&n%16r|p5nKh?)!%WI?OO}-W^4-6FWmnY2AH#h?N3bMC=3+lA3qli8ruD)-q#38(s9@R znt%_Ou7L;>Mx~HJF?)^ma)_shzi)w%)vwFGO!Dr!Ddds5K!{+w@j$xK*l=I1{Q((1 zH%LNsk%AZDUr5}a6!iFN-fvfOm*DE2r2F3w;voUV>%H5B!6%eW#&x`MzXtv3u@tHs zY}B+Kum1P+sIp^ZteTpFJj)&3V^VjtuQz|r{L)nH>Ny(^ z7l!I8ORJ{h$t`o|12M?GY8?2|vk-c*d$zSO+};-S3t=!FioH?GzX?aZj(0-I_2 zzHi%?x$*Sh?%cX_U-1K^@!0#+@?Pw0EcWW4*lOnXvh{WduFq(<19b8=^f>6 zdcR%$Zhs>^2WeV^Qvw7o-aU2d)VEVEOqk+r>f6l{)x#~~v}j$M#Kk7NSCO^1wDWp< zWl%+-k89P5oXE25UmKmovG|^qIy30p$r*0KGsSWQOZ%ZIHw^q}?tQc(MkSc4cYuYcpKHjT-9WwW#{#Bu^GJlI}DI$;1(Q{M!P5k23n=Y-L||R@4kPuvshel>6(OD7)}+P5QBzO0OC2SbqY#*XPlF zltEsuV_yyT{$+-%J!ttj%g#+FsU)+N)^ZnaUS zB-+AJ+eKRR+sLMvuH=?jEpmB2-*cwtdA+7TpZ}g$Uav97@j0LG=lg!YKbQG(#M{ed zs=`bK7K=62&DD7=i-q~27iSXOsoa+R4Bpt0Yh9MHF4fI?2S3Da^>f?i>B%yMYYq!% z&t%CX6L>kYwf^UNCEJ80N8iU-tmGXmTx#P5@93);Ug#O-T~5T7TEjgN_SqWq6UqJW zHF`{+SLqIK+z8hVkt~*;4SKOxWX=`9%~?B~SFeM2SP*@&&EcB~^Ny~k=ctX0#libF zH|M46V%gnIWVlwD%Hc;hC){uBP@H~f_C5bDeTVtW6;d)0V;SXV3epS@TBjyI`qQ_>?OPHb|vcwB4J#4<@Bn~dsxZaag_ z!7z70W1hzieI7ir#tXV<-$mrEZQ2nfUWXN5JkoYrmDe$wFUEa}kCX;rPAWVn$_d&rpT`&b5&~{fg=+f_JY1RQS0;`(A*+$MsX9q61qOWa+h?U2 zD(Cf3B&lv!6)|^tylHJviYmVknls*X+k1#j4!~~XVmh7i5JiqTxjuebPa5G&2v%rX zEE7_-$XkWIxudJ7SV(oo$3%OH&Y{p8jGtWM2ExX&%J*lp$TAe$zW5)^2~nkxx{%}& z?J6-x;ML`PcTTTw9U*Yo`e8YSXL4bU(w*hz9-=g`i`0l-COC}z%{O{JCm9s*LQXP- zUqg|UCUn>zqY{C~wr8r`hw4C2=*Pv>yJQZhNKd0D8-Kt-@ov)$J4o4rRbA5qoMW$w zSo}M1Xa;#3_O(%?(*}P)?<>(Y>=^Y4@J(2521;0gkTV;2S%T*%aEi`qY;VDzDuBPn z=-9A4stfF*%nA$%K8@X`w4$XVV8k?W=`|OL4cb?lR>)-iJ`=uJ$8+=`i#&;Nx|nAb zs%oOo7ylS|FpQ@O_~T948)F)3Ff6pc$Igzl!vUq=H}~3SP}?Bl8P8sEj%uKNjb^bZ zoJ}r#k(qy-n2r3K{&}W?=V!o+nVE`+5xi{?$bV88iQHEUNuhdKguGHA<$2+xiW=( z0Q&0hY1SfDX?^X!lz)UW27lZ?l2rI&KZMgAgKcq`8jkxM3J_1mGSIp?3*Oh+`VfND zihYxfBQlV;#i^(6sWi{wi=#v0)!A75%VmH3ya2<)fw{%O!h5Qk#{9&O&Tq@B_Xx03 zaCY&NSPN@Muh|U2)_P=M0agY~2Q)jJpaf`BlhUis)Pu?+d!M>- zAM*gV!n=k~<;hSjBeUR>0_m6PZu0cN4xNW7yYB^kkng| zw;&yLUBd>*pTP<{JL86L&^AwHgg(J7p&+;iIzkC)p|$Vetj_liCIpRD26l!KnP{Wi zJ+J=7i#6qoPhA<(V`H@l5C27h>PFr!V0T^7PS1Kd@;4)+_rz_;xIT8oeyjyW^3-v! zj;o+bNIl)vdj#Kx_P+3wmgJx1pw(k3(H_`VRpn_l4zC<`h&P>#`>+A?l*fJkN+}7$!jN5v-OWW_ zk|?nI{p4yD{xO7;*<6<qEuhxnkNNqOHbUw7+?Z2tf)d!*l-}L=U3y>R?kvFpA(azR zTjwhJ3Hd+y_E8YW9BM|2z`|WfX`m+)=FUv?kQhR7{ZE*!A~_A+i^~2c-mveiklLr( z5Nu3H{tG><;d1vLcP|8|z3b0Y+`XtA6b_6&wIekE;S_Jjl|sT5f!<)U;V=OduOE)? zPNj|@fB7~~>YOE@(GmQm6PM?Q@}cRaa)~{u0NTH0(JV(oQn?E}b7Hn@gZ%CWReY~n z?uNYOuB_k8?S@tDN*z*Iq{D8#mmV|O*kY(uxmMIG?om~qQ@noUGrMa)CI;#ZG?^XQ1zt{Gt9aO#~rso$tgsx|s zReBCkYoR)vc=8hJ8M-%UJw1_-*aJqb`L@dBQxt3CDeoHwJfK5)WeShqcLjN~Qc6)$ z>3|K4wC3llc0eZLKJ_)Fp;#6yI@?m$h>(OKPFr>K6?x~OQFXQ**H*D{M;k3Mdb)#S z4{@&EFbeHwD_X-s%TiJGJe0A{XNU56*{BpY9d(O&@B%V!h-KqQ_8_Y;U0WqXF=R;3 z;(whnx=H1XO^q1Q1FQQh?2O2H$m-;bm0EgYFG6s!q;wt|t4BKDw@4##rNkQc)qKcy z8re_V>8{l>?1LV%udP7==L90bbv?K_WKNz1c;DUmdl7jJ*_CPsX&LwZ4tCEU7;|~9 z2&a?T2BAC?OQ^rW$9le19U6R*)F|%=3;q7F^y3c90+OOOwB%hee&ODsv9a-!2I7yJ z`v+%#h{W(~K!U|Xoh$AH^%yF0u72c`thz|f=PcjoOOC{COonx%#>O_a;g`VN%-=B} zh^R#7SmCIZik2Y{5{vEZ{#f~Zfkw0mfS=!{3H^;py)n*B?dL02KLO7Ci~?QYM|UVM%@Pb{NPTMMry-X0uB0*F42vh|SKj-J)GUP=f&%ik>Be!^-HiF4*Z zW;JUjLj=`XNiQFDwI9+}fGYg*z0P+1z72#RLH$G9MR{qs{u4i4j{Dp>ijq+Tx6?3( zvu&1K-g#(Hrq2&o+_Y%;@FuK&P`*{iLy^a~2A)%I^p_|FPOJ}0)|RguZ?e&5V`d;j zh4rDWMpEN&t?!hK2oVfVA@Na*#yv#ig-@s1DcI*Obb^BdssPLj_Kt3_Bh##Q#b2^& z=uHva#yQV`;P5I;%T?iV()yN-F68T@{*an5MTOpVNMEw`URIgI6AjG)`90nkz6p*h zR_-{hfDHyWMmMh!-P+kA$Hpq4`xJk=(y|M;t-RTDy^>nIxjmf=X#`V|j_atXgc$QJ z)sCLtF`6%q!SG%X;lJhao%+&1#NP#?`UR6#m!vj7_UcG+h+Vgd^@kg;AL5*w#(Z(> zz(83FcklkVmdFHh)8=qHoU;J5G1an0Jy_%X#D!}BVDV}Z)M7#s%qF+0q^Wca^E$1GG;2aM?TQxkc zVMZ4X2_-5%c1DHIgVv+xTKkwMMP%XG7E2DV12k;=JhLLv%$rebrMA5;oOFF2f<1Pqb%mp9e@oP)ii+4eDIpWi%90@EBO^{o;zN;vK_W$edcCi z)v4t|Y6--VcVq8QZBnqQtQ7Fz3*B)2+ybl53AswC;!kD1_gX@5@}_$3$Zt~DL+|WI z;&IMHKs)mN`2CC+Mym!@=F?UPKewM7pQ-6x^3fi{M-)flP;_GA1eG%mCywpt#IdI- zAl!VhI!?S#`b+2ADFV)wErZ{mGtD^qv+lRQaB<$auK}TQ))yeP0QAWv(7$|@W3Gd zM0ynGJcb+Lwq8|ppu4Dei+}o$b!`i#npL=vdo#h>0`##PQ)t?K{C&kndi~a2sn204 zJ(0lky#K%=@6SGBvv8=SJMy^NT zr6xn~fAuxtlT?fR^r996YnZ-hw-4rrSYUV^&s$t~e>nSFFJu|BFabhCs98c$~JNK(!&54`9m$=cjrkFp1D4_c{IeWy-Gu%JqH8_ZQY zZ22yonAO@Uw5_0{9DUMAh4oW!JM0dTrjt2=7XbwY(#51!XE z(hXsd61^GC&0vwU*z#t^iW%lS8YgobRKH+Ck?#^yF>SrH`fgM${^$bbk1Zcs@tfMN z>9pmu*k2qV-PZyn3v4zgSy|Ka`}f?RyHK?(0rX2!tEMZ^+gAvdH&EqAz|E*gmQIxq zqrXzRaOLqug8XCsOXJrerOf(A;crtmmV!?&T5&A1hR2})YH#iV7HI@a&9NvMH>J@Z z8k7v9v-V1kiC-`=S`xrG?Jc|Y4|Gfr<@3|MKW}D0y(|~H5hfmh>RRf@hpC>lq~5k{ zc>>MLKqRO*(|%(&V_E)vI3L4b0{lZiOc^@LfLfoov|u*KUzaUkyQFy)Exs>!rWGC0 zI6OED!#^r}i$B)<$IB64$Hr7K8J_8ka@O5?Y%CcpljSQv zMXyJ3%JNKGO77BK>IBrDU#n+)if5Aa3!a&T9x~PZnMLLTe7SOcL!}I+GCb$eX)5x) z?*ku93`GKq16Mr`(~JjW^!E?r`EYCEkN45PFRrz8lKBZw- zw}*S6DiI;eGi~{Y_Fg%FA2Roj%NA-o!;=ipjG!(CspP^(Xcfo^m2FDb8TP;6*~rp2 zRHcs|PBwt$hPeglOyQB`nKq0av>(x7W9@)x`?jh#bu{|2JkyrtBeUYcatu@ONjeNlyqrweP)m8g2f|BK#VZX4hxE)R%(?LMO^GlPEr*2{A+d?g^dCMYG?f_5p(Gqd_?mxt-l%VJ%L>U}@dB>OWmmEoCzR59)B zY#0VSU>Gp(dtO$E8k8*0jOAjT9qI5HWF1j$I<>C3O_8q9U+~NXaLc#)K2%efCZ5j{ z-YZt4E58iSujnc@xnkM1RYFQ1dW7;XTjw#6%J9rcD$ya<5&jfPT0t|^;7xQhc_Pa* zQ>D5oe;5$L0IIMv4w0Mb4k^ns1Anhb3#QCifZtJH&e4Er&@w#Jg4#LwQ}YxymId5r zS;yaB&#*7cGhKRw^n6(lSz7<&@cyezjgsM+sZoXPkNySpeF6Q&pDbc7(df(Y%vd(I zHxIxBuHh{nnSb^B)y(Q&@J!3}yCoBE;XKxbsD4m$%TSSlREB3ey6g77PaRX{i-U-2 zfBN$U-ArV8W?ID9j)4G}I!1xgv7N814lx19^30&$Gp7_zevAPr<6rhS=+IS4mS;NB z`!>(d@(Ga}Q5~|Xwy26}`d{!&I~9GpXzjqpV!&z4`S`clOqG)1nIg;wboJkw4CqY@opkV}C1BH_x_3?;hs$neah z$)n`f2%O^#W|(jU9`Uz&`Jd`_^d!05tBXRFFl3D2fXZUL^>KER9sFfT)O;WrRWnbOOFuD&HMdoZA}Joi;dVS{NmOb=efh%8?gbI zfzVNXM2mvJAA-(6=$~W+S%aEP$UM|)9D^Z9au`Az$83U;`hY!Z_xPwKK|gDhVE;j* zLW$OAncBu=9@|I_(HH+ zwkP*%{{*zRy=hnb>aXa2V`ILS4X&8uiE~dX(+;|38@iTW2^g8jGf5;U(K zEySiVn)7x1oMW_5wB(vl^j#1^`iq6bg;QC$vV89=D->NE-kv!+7biaYeb5#76Qnez z;WZm4)Y;-!UJQm%Kg6&0HHJNpi&@xfi4(*1{_e+N*R+PbdfSF6=e4J=KwmxJK zPTNR+bzT~Yl|-g0i4_ zzc&1iVbZ>6QQR*ia+Rgbk-@Tc`s1#hDB9n0UCf}taVKJ>0ul+chBgfvFYeK`zbmMVR9b-gkl3YHh;Q!5Mb3^mns7Q#=f_i=R=Spla&2x0~S6~ zzxKvXuwifL98yjq)8$A=+cZ4Hz3A;b0Pi`K{aZSTw1jO6XG0W+^;U132D(!P&Pn@8 zcVY93+Rc7EaLhFIyc*ivKkB_ocLM5)x%1A;;Fy!9sX#~A z^oLTj0)jGi_igbe$Xr0huig79|8zc!+zFi56X_L=;`O7XpD7H za)uEL4|UJEoCwRDE4=PA;KEw(#u>oLLA@k?8@64ejU<5Os$DOcju84xS#IYxu-Ht9 zVu8S`%+`pNKwQJaM{P>j8)4!yyH5gKuVB!l z7ANviK?VeO_kh{uUm=q*k%tSRO2X@1m&SwPN@=yM7;4EWupkj?Uw-ZFTn~gfPpjjwf+ei3^?Z9R0?mK zf;|^HZ9zxIZ-Yxf$I;|VrBR?`+43Z=Y7v}))9F#WA@(QpE{f?8BwDe-82qCjlpJ^h zQNA(o-!~5@7B7=A_^>?7P7^1D+F24=uo;3bOdDu#g`}wY{$)P{7u(kEIT7We*=??J zF~1jo#}lgo6;Ua)Q z%rU~ngSBFYIh@OH+Fl;HupGQLVHfl6Lc&UNR>&^@(eqG-JmZ2!ILjm0gc%$HtQaqfL52M~=5rZ`SDx&?$q2k|{r))2IzGAWoN=Oo$?>b6iL zCB#3lBPQJK{P|Ogyz2vY7}f2bp@E~ro0PKf!tAmxgYtEtJFi+5RM@)-(^;>W&kO`! zY;y|Uswhl&K9xD^u`w_;X3(nX zqSTx%O7Ca#p&rG{hev;TJdl@}WRjb6n+ocEP)jK-v*@h)Ak-kHV z)X)%QY)pPrVgx@rPg6e}Uq8BbqL%myQ`~k5b7Y#?ysWH=_&)5$h~`_Js>U%3!K+Y% zT|TOM3o{*lcf#IOaa(g^5vTB|?X2RQL@x>dNv(;2AO1qCW;drgcVZS_62%l1olOYA zw55DiS%XaZdFG>L3;K5(M6D$RqA8lkL+>*uX6?7-7Jl+w&yF&!g#Ci2E5)1FP0Soy z%4m0#-c^fGI*-#A(Dg84Vis*Va*7zLNLe;dLfrW>sfWMUdt&xx`%`_Z;AL-b(hNO@ z6jA4Vi>xPR=XwLM7d`VjPLr7RtPch6x|dGO%F`!8xB?Ee!LAj?Pq literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_390x844-14-4-3x.png deleted file mode 100644 index 5935d03c1fbf2a05905c0ca962f73a5e72fd5c3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10687 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 ZW*sv!Wsb~Og8sYF+hftZf;qw+{{aQ{AFKcX diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_393x852-17-5-3x.png similarity index 95% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_393x852-17-5-3x.png index 5935d03c1fbf2a05905c0ca962f73a5e72fd5c3b..76965df7dc615e0a06842d9c775f285526cc8b1e 100644 GIT binary patch delta 94 zcmdlVd^&i7p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O b#K6#=$-n|t6E(5Gj^)wP=k*&m@oEA9h3XDG delta 82 zcmX>dygzt?p?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU9`Uz&`Jd`*<}0AS(<_ diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveHorizontalOffset_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4e6fa66a5f0b37c2f51cca105f3c34a04d33a562 GIT binary patch literal 5287 zcmeHKYfw{H5We@2*aUe*KxyT5wFHQYRXar~4jvRG0SORvl)@kiJ`e=tArB+oSQX!f zNQEj&rZDP^Em1lZEJ9L6d5G9nEk2Nhhed=EM39Fd-8eM<>0dkjk$dOd-96boyJxfK zo3jT4g+8Xn(~Sv&Fct8<$9SgOX`L3vO)zgzGNiyz1%`w0uUK#? zNYmD_?vBS;`SwX?J3~ow_+$-2Mkw`AwIX$(ONN|MYcHoiZ(}mrho%(t?m>yyttxJ$ zBb3;@(p>y0>7H;QypteF_lN@>$~|=clF0b92jfcfydVgo{u~6vw`8HaPdKE|`*M!IARPJ3J|hGLH!HmHT7- z_<~)|WEMYev$JH7&8m45JJy~H^tQ_wg+8<5NUb-F1Zlx6wRYqxwge1kw4=`pzd8Aq}gYQo1^(^$^GBIY=P?d!j5fXhEx{*vmqc(gBywm>(aiF76t6J zanT5m5k8xu6a)SDnj!x9^#jY;i+L0kfF3tPmhI{qsNM@Sy?EB9F`A}L*AKgWDD#Zr1w>0p*F)JSZ`n!I-0Wesi7TDYhY z$qNoy1c4>Jc6HW{h%-+0{mLv_xv?dmrt2S-=69c{@RKi2HfR|#@jtE!l{sAh#>W$_ zePiJ6m#4e?{q^9N>?&-6RJBW@J=pfMo|h|QwnX22GrD^6wY%e7$%~DaaYD@ru9gv`?b`vLHNIFL^vFWz;qLUz<-d zMV`H(9rt4NQiAiFlX&>&gA1MHxbCCOE^&sxUh0WbTez%S`0^IRia)H1KNFzf>7_H> zq3BtcQ*$1Tcn(89yz2ZyFO{7zY|ik{O%$o2EDdMw!vRX9k##O~&ODMSll9v{k8}jk z@3Q2uA9T?B2teQ?reR^=vIx-8_xDt2*XIF- z-kLObF1QpSV@GbM2iSZJ5N`<6kWE8v{wGH$)A(tcdzmm#3zs!Quw3X}yfk9Z-+=71 ACjbBd literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_375x812-13-7-3x.png deleted file mode 100644 index 930a48bdf588f86212d3728a1425153466da0b3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10424 zcmeHN`CAlM*6u2+rD+7421Es<#IPuv#zAnS3xYvJ7L8&nTk9B2LEYv*zv}V^rJjp`sX~1weg3$=BFMm%`?n>+;N1phQ8w{ zXN^jakNe-Y<}oXg(id*J(M#9v;PIxrX)a_*&KwzZnt$#UunO)lpymg0fM0gZUDFop z&iXzN+#BBY@$y&|kF-9h-rlfOOsp6l4k&uGF8;)=G%IJ);m*s9jLGLuZhVZdjWO+N zsgYm;5l)ai1pSdNh|ORB{$mtcEoQ&LHXxKq+Ej0i6?`v}e!;eIk)EJ<@*Ou#FE}CT zv*Xz3DJdbla{Q_x;~K+qEZCOdGK$)dcgbX2;kcreZ4vk+k#x=vF&qHuQymW3&m_Ia zW8aJsl$b!^u#jzuzUE^=6SkO-pu!14cAssLgafYF5ZKH)K&uV3p#W*xtY`(s%vJ4N zVatxTf@zB}vzlqw6?Tc%uJ+oE3$tC)?!lPd==<$tpNFcpDWWPh%eC*ZOJ4+vWtxbj zRRj6{B<+pF#3hIP71e5qVooOQju-#glx|cXNXT@H_3t&#XtTu?ZMIMa zpxlqrGf`A+yvfp&q$LPttr&7l8}?8sp;Osbcfc@jCa%EhZq&riLVqObW%KoC5Grqt zojgP=A!I2CRXVh=8^h|vA}JbidSBc+G(cBSe5!s>jGzH}0tc$6yR&Zzsul=};~Ebh z5SOKsv{>3(zcIi=6^u|lj#-r-5V$EkZ67{sobC-Hk+iEZ!^p7g{D@s+bbz-il#s2( zQ0ykeiK-v&>-rpXG89R374HI3GtCgC9Ro?-DFDK~?ZE+Y-gFJ*Z~S6~Xu42P{856w zBv@5@czC&Kyb(O#y7#vh!!p>Yhmvn*WEtg6Grif{d)-jlGTFS>W$qy!r2~$}EtPMy zK#;lNgzTvCA$4-((SOp8e5}qfT&kx}i%ou4W-h|NNl zO#27jH0-TN6+B!jlZUyTfL_<~?TdtzGkD1T+t7w3NdJf6S-04vZPI3&b`1@|b0m^= zoOPkIVfqXa&?vZ_Hw9%K&)ueX3Xd)(=>>K7x)1Q5x9m0&I#6+)rK)B@h!w7ITHkxZ zTlbILeobmEdj4|Fr9VI@mzR-l)zxTM*YCRg96GUo?=~LAhX7IMYlfDl`<=V^7<3Ps zy|&dYw#OB9DLeg#GU&mJ(VmcF_x@J{Yp`vgnr*$ydgVBa`q!wL0hN0p?q_~cokv*L z51uaQ%sUK!iq)8^wq-eoKi4EC?tD^Jm#A+!2<7`HO^)`nS>`@J=ukYLGz4R{_OYMrIk$Zo*tbCfqzq{vd5lQCu{UqQf8KHL!ARg?>}*G z3#9rJ9`Diwo~S$7U-mUgPwliaFEnHW+@gH_y(rHSS8S@ZJoWA*7oWVp^ldYiV=R*T zD(9sSEn{)0i`vel2B`dD4){m?dG2COt)8v16s=ypM5Y6JzZBf~V#+fH#k}(DMX#=+ zXhd^vYL$0EfvLY8XwRZ;TCJC=kfaCfp49s4u{m)}x#qTr(gDP2f%2{T9OBb4huy5H zdyta|xjZS4Og`kS(XS%nQjEYH@@lZ&rF#}<92zI-3qd!7tml@d)IH|3ksgk@lQa*~ zt+ICWwB=}iV-_W*E&#eW6)|URIp&V_ZFy&cR)f5rg&i7~`rf)td1)w<4h0~gjo-Dz zbK=+@YFO_<$X>VSxF%j@S&odgPPnrVBDv~3oSEgsCcCPlYOZ0Q9jcCy1<5=LfdFaW=w1G7`ikCNJ?tebA?f^g+m5vAa?~yExck-~%Yph* z{p*K1L!7m`qD@gbBia<9;&NSI&Tr%<*0XXeMH*=Qv13&CH{9F~^_dp;caT6wb!Bs5 zEh7tc=FY6mR_!Z5vgruuc9B#rUd}1M zzVxvhW&lMkT`@KBAZJ`sZkg;v%>|whJ#be?b5-M#Gipi5;G|<}yV(4MQ68hZpx%A1 z8FUC}p!bp6eIt&#faKD@gw!+0>h?1?s7lVdZfDc_RBx3N0C9@Cz2hP$(hDVmRyYv( zBEH&eaWh*6SdkCI!Orlojpy!Q9?#^K=78sQeM7ccg+4zJj&~L|AIY6LrE{rg_`E+3 zuKH=~y4LZg*RGZf4!o9Nlf->J4XJy!}#i<+Sb3fznV;_zx+F&wjJ>s_i7%m+g$pbfr2Waap(s znpdL!fi@Zbk!3o|7@X{U^GlOBZx$}|do({T7iHr+n0pVWu0VWO=Ee3td&et~>9W2MCjk#5O1cQ#a?61fT8xq=su8;G=_6+T&3}6b-sO&+dsGH5h-w6Pzq~rA#uQHUbw3JMX;x7l$J%e5;XQ zg0V<3ep`NafgTrMmsx8#ND-HvK9?KRX^ktN>ItN1PL>H}0aRFgkx=NurTXK74}2d< zfr|L9H6i6J754I^;taYF!n1qQR>)`78PVMcww!Xs zD1HS&CmLR_-6YU(>~EYGGqBo+B(h2J;4fxdKG$2mwQF3E*gTXJRM)>R?s16lz!ZTQBaH-H%xN39F zWH@sjvIfQZR#omZ%B#P4_lWcCH&%9eJgNa|K*M~&+V6f?y7}N zd7m#q5A3~6Z)B|xwC#GJD=LE`P+s*YI6%x;N8gU=k)qh7Ng~Ch#)lTUIZZ#Uc3UB< zs@PbA31H`3e5~O9derFf`TQ>a@0l023q+G~T&7?Dfwj_U|A?)s$LK|_W;{^Lc5x2t zS8>Ps=gI%CB95>T5-0yPokzui0pe16<<}0jjPNGyJS#Ou&{L4>Q=N%@cUiiU{u65wL14PjA{jvB$LS7W~*o!jD`ehA>U=@g1nYU+nJ=>;C2Jui3F9sfNvVvQ;F^B4>e$MF83gR+kcjlq#?SUK zs+(8tnX`4Afb>g~j>@)f!>h7!~ zcA}lPOuR?}RwI+jCBkHH*@mv59ZGuP=37y^BAi=d7~3%#V8|Gw0Vds}G{D%7)&S$U zeUt_QMkebR4KP%U(EtwvZn zXzRfL)xdvm9k6C!E*rx_Np1L=eNA)=HfjqJpToL3^0GjPAVtI+FXqL8=ml(OEEey8 zC1T{;-6XmC_+%^APb};PGLKzg4ib5kCqd5&oWQ*oUjT!6*M_j~&xz@{%*5_1?yWT( zf)y2Rc4FUY9~X%fLgSA(Kba(X_uq4KS$KhffWK!t=LfbyuU;JTW#QQY0`!WA^TRB8 z+Ay`*)QVO+H!*DqLQrj`*kQoR^DCuyN!fI^KX4VOZ>e`JY`@04~{Jy AjQ{`u diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_393x852-17-5-3x.png similarity index 66% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_393x852-17-5-3x.png index 930a48bdf588f86212d3728a1425153466da0b3f..c1028c5af58c20aba322e7cff016c242a76514c0 100644 GIT binary patch delta 94 zcmdlHcqDLwp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O b#K6#=$-n|t6E(5Gj^)wP=k*&mv1tGRe^m}5 delta 82 zcmX>SxFc|ap?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU9`Uz&`Jd``9!98g2|T diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testSiblingAlignment.aligningCenterToTopRight_positiveVerticalOffset_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1615313e68698ed99ca8a6a50f48ff2d28418141 GIT binary patch literal 5215 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testTransformHasNoEffect.375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testTransformHasNoEffect.393x852-17-5-3x.png similarity index 77% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testTransformHasNoEffect.375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testTransformHasNoEffect.393x852-17-5-3x.png index 09fa1c60aa27786f6ed0d4ca77685b646a80fed1..5ea2019d04066c7e35c2e4b240fb30f15a37d3cb 100644 GIT binary patch delta 94 zcmbO&wOnd~p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj%8}(bB2wZGI;W|(jU7wqn|&r5_hs?`0PT1T$^ZZW diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testTransformHasNoEffect.820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewAlignmentSnapshotTests/testTransformHasNoEffect.820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f3bbfed9955165902726544e38770c1ebe10e8e3 GIT binary patch literal 1953 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yF%}28J29*~C-V}>X-SRnO!M_+ z&;qhK7+4vF7??pyfRKSvih&i(W?=AQl!mi|7&V}3m>3w^GZ|Q*YNCKN2uuKCpl&G5 zynqp5;sPeP>Jtl?5p0mQ&g45FinG8YvY3HEOcjI~J%dy}00m_-UHn6UG|)mYNCA=> zKn$XRn7L=>zbH!}9pUNX7*fIb=FY*c*9HPE7ytbCf1Vl^=PUV9BB0R0qaeT`pmHG4sX@W0!9l@c0)smz zW77!+rbY%wCK**04khM6rFh@EFTeJj6aHt;5^t%&Y*Vx309X5wy~@{tnMNEGQqj&%0uA+H0J+vmdd^7|5`tCe_W?>|HZ9rQ~n0a z@c#3wO&niwDxGi?ZdE9?w|n^`c{=AO*2!s$eT0s%+LCxbsivmbokEt)BFCtv(-FqJapmNT60wD1dt_K89 z3%>R`{C6&A5>WX;;UY^Y4x8=hwgAFYqHG_TToW$?^4??dR*(>9GX!5e?%(`~x#`FHYr>5?_|@ec=e>H!YRTKh&*3ydovBdX&!)-d z>S698DG_;KF#EGSvYS)EQn{*K{E3N%odSpBJdPu^79Tl2h4Aa2$PB1)5NNUy?D$>q zNbt!@xwr|J7yM{YV5w9R`2O&S@`+&EJqpVmKQcOUd~#8EcevAi!t$yLM?aAL0#7;} z?z9W{EBJr?&@_kbC_69#40Z?EseAmH_o$asAcg13E-}WYE$=kX&R}pn=CC$fP{HH% iyh}Z!QuGgvAM83@UXiR>&su@mhr!d;&t;ucLK6V>2*H>D literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistribution.vertical_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistribution.vertical_390x844-14-4-3x.png deleted file mode 100644 index 10d6e158f14e1ac950a044126db9fe5f714871ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6203 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionIgnoresTransform.390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionIgnoresTransform.393x852-17-5-3x.png similarity index 95% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionIgnoresTransform.390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionIgnoresTransform.393x852-17-5-3x.png index 6750d001af7e7ee092e96d21d59810e024bafbf2..0477ea52239701ed85306ce1b378b7317add44db 100644 GIT binary patch delta 94 zcmaFq_tkHLp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O b#K6#=$-n|t6E(5Gjzxa{<%JtJZC3*ToEHvq delta 82 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 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.375x812-13-7-3x.png deleted file mode 100644 index 7d140fe9ddf6117f517ffa972f7828cda4084d17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7311 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.390x844-14-4-3x.png deleted file mode 100644 index b2195e718624fea3e6cfcb9a294dbdf52ef3d98e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7274 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.393x852-17-5-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.393x852-17-5-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..0c10e33367a60875b4ffbb33db9431fe9e38f6c3 GIT binary patch literal 7292 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 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testDistributionUsingCapInsets.820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ce66d8d428b253993b8a95bd854b743fcd5d88a9 GIT binary patch literal 4639 zcmd^B`9GBJ*Pj`K8D+_m!emHjvu_c`Qb?9WmQfNWyT)Y8I)wDe8X;k{(b$cp7^V=i zjLO*8Ph!m2vddVWyYK7s`aFNY^UL#kp6h;{`<&~(&wZWib=~Kj_dCJT+=!b?gbM@$ zahn($S^>HP5CV(?xSJfDd zi-6ewV}n3fz@q=!R$$qGd>|lDyax#SkB)kaz8lKgJE`=r2uhO$aX4TggKI_a!6q>Jf?@}+|X0;}J zf9Gb)m|W?rs>nJW+h`xX&SPu-5eAL1xghZ}`g!lxJ$Y_nj*T4{c-v8aN z@G2Rz3eEc5bNGiRkVuuw`Y!jr?>^Un!N3y8XinH8B+uPzauhfW?96fGA_@h?X6a?= z0dN10OjG=$Xj(Dhf@cq4Z1e@{@SagHat3tz9>ExQrT#h*4MrwXk9EDUS~~7kigRS9 zi}d~$U$G2H^ivOcEr^WN!gSu_0-g3g)pjN!QP^d_MFi)&5cZ5zPNMdaC#hsz{jPL~ zlrDzo^dkKFS;hYHN=3GmGhW>xm21P)yr^n9S?^y~94QpBlg{=TjC3ROO3v&~N)LZ= zvoc1m(xF#5eK$iX3iNpLg%v~bxk_+b1dqVmRovC%C@cHdMJ_E?Op8LKs3ghIXDhPU zcESDWboxt-Cymc5Str5|BYsUaDDTd8;M`XURi6wu>^gdrS0(eW=HDDCc7axZqIc|rl^<6^sMopxzgVd#C4fo8 z1njL$8`;uZ;(67JlZz51!O`&#MVk$h>&M9hC95G*Pbk1tQE9W^i;-z2rOEx<})()K*81CK6_cG*?g=qbg(fg{rtB& zZbnl$3)0Z0VK#n9SPnYCx&?;(kQHT5IZ%qJlR}1WEd_9^1uoca%=YA<JA5AP0I(y^2OZ0C#HCNOwsPC;=y)R(egolUUZd?Xh zN>Y{XS)}|evSoI5_Q-8Ej>DEUH8lk~nxUH|UK6p0gyRObZrIh|f9IF$1SdNcX-^|y1H!O30;iBTHFgOVsgAt4W(^Ru{>SH5erJ$;Ls zfeS?wjiJId*=6x>GVJ*qA8d3EZhng4^xf^uIJ?BMf4P;{o3DG;m1n&UM>ltJ(!g#o zZEAv7?x^0ILfx#hEx+ZtKKISDJqf{F9IbJSq+7rkXo=Tlyw(TZ z%u$ zsQHe~6{D|R`#b3sk=Q9LfBH0b8bjWU_)5@&_XN#$AFo49 zD8Gdm9B9%}l3G`wFO=I^)!bIS5N4FU5v+)b*fehHcD^xpi2t@Mtf+KP!uJGHFL4SNzM zq@|#J_Nmf7x>B8d_x|FDP4XdeXvKI_I9i+yvz!K7Mg&VMXs|ellMW|1#Lj0#bf)VXZDfjGH zH}R3_$X6BTPougCY2%z={+fJ4FUB(vR5|;&GN#Q{J#0mvm3q=hder(RIrv)L#`FEv znXa9SQzUM;rZ9w7V0YtDCBpBIQSj~wHSZw;>l5osU!ldK<(MDa8EN&=C^clq#qUR< zk3uLd$9{dd=uXnD3PmurciN#!d zcOetOxap+JpTiw34YA;a_fwn4GTu+c!F~{4zSo64exD|M3Q4n2fwnO!edFSp-hs9!Atk=eUZ)?cX!H7vBmQ=|D6W7hFKPXx|{7$E@%}aS!nCOMq@ww12lZPqlV;H_S#oeCPi4_-5e5Z1%ptF*Vx* z7PGneRNAZrDAw!;f|s8hEAXCfOT_hu%Kt*o*=dBVzE;fFjhvuO0)39g5(0Wx;fVPQ zjc;zZ$ibCFajn3T;)zh~k5;&{aOXtz?N1Q5d=-zhLD$8hN`qkzZV~I=S=-bZTSh64 zg9c<)>HXDGbX~XEYkp$`HX6fL5E8Pvko`dhiZQqj9KFo}nM{rgv{@{?n*DO899>6U z7uSAJP1Fk8u6SoqKp>#{w-|lxwB=!vQ9rk+S~rcMpDA}U-DkMUt-f=MHQo?JL>N|i z4a)VkoleP=cY6MSqJIYeQT~bOPXiN^gq2SgNZ{#>z}CSWbw5YBIZnNL-T{t7t*SZq zuyiT{CvYH)r_pFxp{qKT?1G)^KRzGo6SjD-;Bm0O=lSH?tIO|}wpVi0e2C0E-N+@8 zDxi;e_7gLzw8OS7hcVq*1!d~qLsOn;Tid&Tmqt$k=up=+8}zLdt==EFx3kgq0*-f& zj0yWVYEAjP3$;R{y*8G{(KQzytQW1Ue0eHEt2|nU9{yH=DDMrYZ{`5i- z?*h>Om35f_#C&I1m795Zyc1#b>+S5kGEaMVovA4!Q+Nw)J!KY)(!4hn6-!_YRlcfk z6Bx(=(68LvYp`tNx#OU?ZiGq~y5!vb&WEU-t>yACI}#@G#K0Dd(N{=BEcI9*=c+^2 zF#VX-pI z&_LQLQ|k~QcbZ!Cj%DGPw08r0tSy@l0rLY#qsMY8q>a$aO&>>>07M}oMowJtZ_QGc zNC8On>zSBaI?eIckWXlVK)RCG&yG~$(om&K+wwng<>lnmx>7y*-iDOyXC|M}u5zgL zei!kAU{-MeoAeYu@9?^9xZ2~X{bk37z(q8h5qwS3xQayT{|YvTPaQ~D^qg`J!B{O65)RaPw353bg>paM_OOyI;Ru1 zJ%v!3QDsl#H}h-(K(B{4oyjN-btx^*r`m}K0f2eE$PWsIyu#6`Owq2l@=i^!#k{6I z;>$Jx2;1-p1ppCe!B^naEJ^~Zl8A`z%~p~~Icr;XO#G;v=G1;im-QR0Hb__vDA(*eAQK6o_pHi;+Ym3Sor4B+v2S624%bw|Em(_3Tt(GK3O~hXK>4t-=R^+v#t6K9!3ytQ7}K<;X5)a=3wLgR7pr`M zO(J(6UFRDRXzR9%(4#bO9Mg#XB+vk~q%vgN?hq1lhFe@`3<`_Bd__Z#wlDEMI&E$7 zQADn0fKraXW1ZKaIeTf)i>q*Gq<%+FkE)KB___yT_glPBg$V?oOuE~v=Hh%1*YY?{ zimNs5@K>u%0T|MyG^wsN3d|P9GH4}Xda5eUb+|TH@$5^w|8mXXPcj^>^(h`Hbg0!} zxqOJzefxJh^$Qf|OiHe6bm~k;DFj}+6gwioaB!JN|aY_})PiD}&(wU;lA*iVu@NGjtF%F{NUG7{Jxm3WfB;NO&6X>^zcA6Hy> zxL^d)O#`)BV(5<#UkZ$i`<+_XU1@^Ugb2dmDN!ht!lgn7>Qx9<0))GRs>v- zEkRMxQKUyuK$di?osl+xpaD?`Z4U%NK#UL&Azi5oGw&zNoMWBya;xgyTi^Y@ck8}7 zN%!^HtgX3J6M`UZnitg{g5X}{yppJf{Cd|Z1c-sz{+m6Z@@C_A$VL2tAX+G$4y{1W zi4Xx^3e8ixAj1_l`p>y1Oos62eH;XxWkB^)4hI{$= zxpSye8K!L@)JBX(l-G7P1bw?!Ip9r~Y?;VSV-}SWh*$&=J$4|!WMn8UGKlwG>}d!`Byk{I zichb!g*U)OFNmZMD>*deE^;MM!{OrbF_}~dCg@Tq5F51+SDQfipf+HdjyiFme${h~ zh{Rs))(v_}X9$L$VV2;it1B?#|6qZE;d1d9&Jhxc<3y2rq0R(?jk+?3pxcSyL~=&5 zFef5&figoPse;RadZ6xQ3sEOsfiY?+Ogs$N!L^&sQ6~~--TzAB@8|dO6qyr>8ZF0R zam!tWrG970#cPKrqw7Wg*r^k0f6ZuwzQF9>lsq-%Ud*hhZS9%tqMt%Pk*}q_ID&gx zEG~=ojyabeQ0-ViJFeLqpp`penx2%F_iAikZK|E$@2nwKku=Rbo9}DExiV=Vy(lyF zHf_s7hkVLg%C*p!I|ka9pfN>K_PD`A^nTKIr~8$%>kcWqW!53) z8k(DM@fq%=BERzvEbFVG`d-F|UKHHl)pKw-jsJ&tTL82s;m%X179h0mPL-rN`se&G z3-@9#Xms{t0B<)C?7cI9z4M!lQ)_4p_?e*jqT|nZeb=l{_TJ`edH7xKfU$mQ)L9F% zfdr7W{xttPYP@Er;04kuWkLhMwwsN=<9o=>N;QFqp!UV*^fTyK#)RFA8P*` z`5LKKevJ%Y{-xY#ofct6;Wlhx({Cd%Zp+oPa2)(@aYJim(2AQETjDw-QrXPsl+`Eb zyOJ7aJG_}W-|yPm*D>yRH+H7NGwhS5Jnxb4)ojrfddh5Yv0S35n27C=H1NcS&hBE? zfBTZo_-EPLoB@h8pw`?|;ejJaUNG8+u)JSaLQyA(Ev z-x>)ucCTwxBwi(NeB|mG=*0C^zx`(4Y~r)vYUb6GXSI44pYX|FW{|aF^qg7gH5b}+ zL2O-!&NRtOiOZyi(i`IaPn}BosVo9lydY@mdKE9M{7iRp!jNNcsqJ0NN$M#$f+>^MG1 zf7H_71<1F+dGW+{c6VK0M!KG(9Y-=!AW3ocEB-MsA@0jslRjFP5F=FL>N~C$bq4u5 za9^@?!uD#d#z|*pU#ZFJjz_LUl~(sGce`v{c=O}PWVCZrPG!p+p#UXvyuA6rtShLq zX@KPuUTbly;o}MF=_nGq2 zNDvvw|E__KRy?|HBbKT5ji&y26_bkI#KjF9c6E~GKJ^WMnj?8FtRT09p z%GsW?y68gj9(!8O)PTNrAx*w#$DQ>{(R$_#(SbT>I%Ni()u)QLO zXiY3KF#`@C0#PwS886gt^+4js57P~FfP72Or6q|&oFZ%XqBZqky;RO)1d`3S_L#W& zY);6Y7{dtN)CsJI-|TH=v3-G}VhMjAuh79^T0On}^qUr-rr0V%9Vl{7z3fgS16bWV z!WT8kb2@XwiYft_g%}|$()9`F{xJYG;q_Qd(ew$N{_-RHp|H2z)QrtQzQuEdZYXQ& z!|OuXbcSzFl2kITr#I~Z=O{+AoCbT2#aLc^21F4)Sg(E zLg_4DK-Dl>BFKw(%6hvH=#OP{gwUG$5-a^OD@(r$^qb5nnQi1Bsc6dx)^ZL%2No4Z zh=gf%#bN3#4XCNh;^gw0Rk7?RDDuO&hH*L2G8h;kmCjM3oJ)Yr^;p-&B1;Wh?}MoA z7$H?_t;_cs;{*B5b?udCO(j2MCo86?X+Xch2xX%!<2$uNM{q;nVO?9L)w8_BF)g5` z<_KY%N%wlm=V?%9tZQSjORM{7Mu5z~HYA^C75rO z;?zET*${(M&gdC>2_VyI)~fBu42RIKZ^My}7V9f#&I>4rqkztSs+_T~;c;M>6rDol z42PhmXTwpC$lG!WnIUnf2wJ^UKMW8s$Mc9|RC~xjkr`OynH3Xik!-Y5K7z#MB97er z{_N$-yqK;qK7Q8JnTtAVSui1;H};qRhGr~7GM33(HBbUf65`l#vaV|pu6*Zpr d`TwQ%1>RQmTbBCjm|^9AEwoKO)N&7I>R;(M7C!(0 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.LTR_393x852-17-5-3x.png similarity index 84% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.LTR_393x852-17-5-3x.png index 9ed104544a69b7a2e2d907e4f92e4ef02aaa9152..793f376f52978784a2d40e8390935dc90ade381d 100644 GIT binary patch delta 94 zcmX@Ba#Ll3p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O b#K6#=$-n|t6E(5Gj^*sad6pYD%@zazYkCdH delta 82 zcmcbqa#m%6p?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU5ZG$Z_6{`(_IQ01F=sI{*Lx diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..be802442f99d88828a30a7132c17e0099959a085 GIT binary patch literal 2195 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 KcPyqe5B~xFdQi;( diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_390x844-14-4-3x.png deleted file mode 100644 index 4dba401ca7d4ebf9c6a563f9f37157920dc85c8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3991 zcmeHKc~BEq9DbV(M`%C>1p$?UMNkj~50Ik}0|=-bMHHeHBM8)@h#&%T804_hDkui1 z%4HRG8WBZC_PzbR-*3NfzxVC# zyrZ7(&dN&KN&o<5R~JVw01z=8-%yl?=M9xo9_)|^FK0R^Zk+!bUPK4_x(2zq0V6n8 z1Y|@T$YCk4*&*}(9Ir(d0~C*w064M>kYzdUu*Z%kuwgYsj}{=ZY#1vbO=TnE0(5E& zZeV4~bM7m{juPg=hyXxuHP#TPEORCd&fn$e;SGBTh#ycCKHtB%PKUP3$SE32gp=2(CM*`D5sXF zV99U}kmNO4{f3K(a(Q0`9GFG|2uh_%GI1!G#)@7 zO`a!s^FWV`G0MDlbY$O$=!drQBQ2lV3fQ9{ZqsNFwqJ z6V2P`=al+lOLCR~JsQYT4%>N?W;ah9PCDgtLXV*$EUR$v*J7gc+e|V9U86Cgq*(5f zs|y{%P3ZOAiTJ&)Z`I9L4zoh|KR?J=sxa`hQ|}tJ1UcTT0TCv8tDTRVe_h>@u5gfFVzMD~g#Z+W8PS&FjZ?apA=S)S^oA=Ax=;$;g-6^gOOgcSEL*h z_%!=*Hjy-WtK{M>Xg3Fn&jsmdZ>(u5(J?yJtwS1ocIevr;bYzW!AK90O7rXSL)$Lc zT6w*hbuvc6lkT*te6tUrw_a>-_1jb+I38gQ?=aAIFuLuXZU?%LC_4baKt{dBCaOOO~gEBW%-?S5wI%8KxA(NufmsJc>N z4CjivE&K4@%2@HT#XmZylFe8MRcubNZE9YZhdk3!+-Q|Or$LegpB(7a2pBip*qw2r zrnEelyG-GigLBypQ8n0{{9q3GPRKWbA_byGy|ER=;cEo^+_#*lJE6fTA~&KYtI@{+ zo5O3q4Z0vgi5d+-cap4zz!CD(xS0eu(|kdyf{a^S%L6`FrTR?L(^w<+2uz#j4?gj#%|rR9rv9-TI{H z>UmslOZKn%kAaNb$KA~KgjqO{aI*{7gZznbqgC;HCblWbzw1vt6tHB{S{>>J*TPlY z`m$^|f&gmqAG6ZJ^_(~xd1hN%gP^5sv~&*jWhW|q89rvdV5-LX`O}ZaiV|85KPGm~ zq`e+d!|Bix95ie;6x11}_+5-~NSU&M;;<`-s=n@TQdmtQp1m}*)VP8I!#)MAyB>P( zz`TUXOOIFM<(6=K*Iz0jtPLC<$jZYZ6 zVPR60dqAqvXEG&K-(-UR|k8WBE*2+#eFy(aKaQA zC%J>UbyQpsY-x3y4UrB?eOg&EF2mXJG42nRh6mgB0{79?`PrK%nJx+%e_Ne+K`n zHEV%NU+WEG7m=tz0k>++eUtI+LPr*0?X}rA&c^l(GgJSn8a#WSvbqx|jk2+AG;not KcPyqe5B~xFdQi;( diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_393x852-17-5-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_393x852-17-5-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e912fe0106e871c63b96e16eb47e2da240932371 GIT binary patch literal 4003 zcmeHKX;c$e7=4ooOK3n23Ib{h7C}J}T)+T@7@#c5QbZwIF@iuXiU=Ygi$NAEt%4#; zRW_@rrx8))s4OOepbbJSQV@Y8RuPp|6xqb|%}i)L{n7HPr{|Q(d3oFSy?f`rJDI%0 z9&V1xO4>>Q0A*(p2mOiKrtSpjPo zXZtl?QAlr&+40Zls(0Q>-Gl3j@|h0$@BEZmt_wYqyW(zrIL0CC=^zv*NjKTXR(j^s z6I1)szqR+Ae`naKw~viN(VfP}F3D@_bo_CVK%E4CeruY6?2tU5IpQ zi3%1B=Kx7wlhbdoh)9?BQNV#2B!Hk)#z+Q^rGubcRMz5f5cz@$XB;b?gR~H+>43op z=!40#1aCg*kue53Y!31w-jg8B=0p&v{|)*;Ln4%BPqx={v@Z!;r6(yKzBjpox#oIV zh{;ImxTDIm(lKKLMsxtDe(oZCPyj4=3M2jUeLst&8yt+k4HhTgS>Dbcx8Bzw<=LjBEFpS0fTJ9`{W`;Do+ONP!uyymOGQ*xVdtmCM(4K~rwhBrqQ!|Z zyd{?x+JzZ2>$?;1wXSZ~$yW}gBZ8mqr7u+&c-*Obg<66f?bUz??|ZAFW)LvNXH=T; z(#-SlKmOGiRscXMZPK^l!ndj=_EznCd^p65t}6H7z0^G@a3ymmtNfCQ*l>cZ%N)wf z?m46KMP=0?8<9vPp0u_|^k7x-#`f$bT`X_ns_cGLSUqm>>wSe-VeJU7)HM!__L4m# zn8p{E+4E~Qt`nrS(p|g@Mp5E$fnx?D>SBs+B8b#KX zilVuf)U7iQ-mZ+1EL;48V+z@ngHR=A6zisDmptSNO>sRvdrrehBD`}zs}ZuUw`F$5 ziknjNoNlv4pAXK>Y>2GE=Hv%+$hU&O4iGC4IqHqAC=OpE6y(0ZDQh6Mqs}~b6)pm=Fv;d53Bs6i?&=MGIlFym6`@?#!togR-w_HrO7AhRxO$4W z`BBm3v$)(AnZM*e1Tu0TcCy>!XW>AijZQpw@<+mrRmJUkzeP#@O@G1x|0R=_>QFbh z7tWH_=Vim;1W=3LI9&_Z^Zn_FQ(M{^ge_%brE{pyJ5lNLuyL~mQ#p=LAAc}X9AV@L zqGQ%f+UgQH+zu__euHKMVVyy;@A+uEZ^Xnh1DeD-b+JDjVdT`*t?*0 z$9<1&n3phlnQ?0T+!C(O+6yIwRf4)2qgt#AZ733@x0Xk=442AG!noj0x-mOTJ(!}d z@eyNJY?xH#=AWYUiA+h=R~eu`DWG-}6X!E!r0IYYKE*hxzlhLY;pKzv4PvdI;E_)b zHCSrYqDJuXA7$NKkvHr%9q^#eK<|CCA*W)-<%c+gMk!2r-~{aUV_x zoG=B(Np62`9TgV@+ghDw1EhmepIVlLi!rDfzp?-OpsHzs|8)rXwEO7J~z_IK{UpN#2%hqvt77ho|RcT9Qn zpTYlX&03(+*LsaOMI>lYz>QinpCtUa(2)f=yRG(2WMXHAnW=wO4Zf{+S>3VYhS}IL O8aO++*%vd}2Y&~Y+frr# literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewDistributionSnapshotTests/testHorizontalDistributionFollowsLayoutDirection.RTL_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c54f43291012c02044a4bd1751e7ba4ae4c2f07a GIT binary patch literal 2503 zcmeHIdr%W+5dZEtGdUGu!W4y23}XVR?}8IrPfOkLZ%|2mp?)n1-ydEfHS3KT^A56+JBcPDrvFN!i(xNsVL0P53L2B ziI!k2WMWi-2VvG|$sCW655|7M`(ylh9UP&P2N5x^vk$0osbPclJT)oA7CaW>&$ThC z(BwIf6h^bP;r%H#N5s1clr$lVV!1MKG0-~mOsoQPDM3_tM2?&l)>WDEX5YO_2Rhh0dEh^ z8_q;=1Td}kYEKVDE``TiCal~+YdOst>U_zBKaqd1fQ26GfkOsozGoL)ZQFgd9&>Q2yEl*Q~_!Dm_t zag|$S=dbaZt9@(wPod!6P!4JSOsJgJK4ps=6EueKAonXr^ofpYA_w)RkD6L*4Cztb zEY4e{%ek0+4dKG&jBfy@t7eojP&+6q5YI{|Lrzb{ScOd}$F+CWY_q&k*uSmGnbdKy z++9foT^-dxu{eG2Hbj=&kN7D!gA`Y#X3|`$K4i^xZFE8{Yn*I>1^uh-RS zb$!R2GYIA~2NRJ}UB@kN{-#NQ)e@1mq`9S-aT?iWeARc^$uUrB$h6Yxwl7k*s;DYc z)9J?Itj~jQ^|Z}wa*lB9CYX>rE+uuD%boM-+?M+IV7(;lQq_3J;&g}db>hRa5uvh7 z4ryh^_&REe8{#cEFaLoK;bGS`BdPzmpF5@N3R#?PbzJ4P>*p7lv^NR<9}+wRqt9T# zzY|=BS#rQQO9rz&!nq!Elf+h2al_Y1>cd|e6Tm+^c*(Wh?rv$t%t-9bZoNK<;rR9V z5AJ;Eg~!TdH9gbyi(Zsy$nFk2HYUMCNhqx#e1NT(fF}EKYWzy`#SBC5BSTo+Y5K{w zI>FFyhRGYe#`w0hPBwhzVO3;b@)OmgiMQ({Tj#5*jnTpA5DX8ScBDq6g@Dhg ziPbx1B_G|MIc_CnLq~S5lAYW1M^cX4Va0=mX|VZ{Kvw@sedauKY%%r|`Ta%6=q=LR{w0}jj1>f1?5@dw6YQJJzP1c1(c|g&N(cbc`vANVZO+#KokszkwW`WM z0MvarDc|sb0SKFyPvLIo_l&QjS<>Acti)T>11NhBP`b$CX(9k?1Yqyg1MK}cPaX?M zebn>MQo<)_15I4BJd^^^FP3nyeDU|wXDG55!1(tIhvaa97Od`(UsQvyt8neUE2bN1 zmdkdUP`G}p`w-`qou%;oX+PbD3yK`nNaE10UsSL)W`WD39_`X-m^lcEyv1H6oF%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fH2$w`y>v0AK;cK2Qjv*C{Z*DnuJ@F86alHHg(#=}d`tFE7Ms4?c1*$Ry zo;uxs|GVyA<^cv~9)k^11vM6Sk_iorY?B)AKeuNU32gORPP(I_%zaRU>V#)5|6?Q?dmd)UUvCh>vk^mK6^1E6sy8#tGNWgWB=S|lHV z#dbHEM18ycBhw@qXuvwjjKxPoLE4$PVyp#i`}cnW*&xog=fJ0@tU%`+a4V}p3azC9pE zN_epG7(isB7?sZmq=Uq6@GiNy>HabQ#gafv3eGx6>#hp|`cov}!L800m4Bul2ZqHS zg9ohB^!33$oy5rO1Cn-V3_Eb4+VIPrW@9#q9cc=^Vm#{%KiK#fA2^V=pjRv$;?xIM z?)t}`1^W=YM-tmCK%P60r_ej?uUVbcS&*-@*=}VNP6Y=h({(?W^N-itut_95Xl2yj zP*Zsj6gd-kBoZKjwS}qeUiZT1a&rt1957|h+>%hx+xR?j79(33bMBTMUSOv(E`L|| zDr*_YhuA&BVSEG}(Pcmb-faJPIRhB7JTb->+`3nTV_jrNnNpQp{Zm6=RO<6oG(J7e z4RlaLW6A-BU~ph95HXofLkX%4wSZdRG8Uj zKmu!R!@}=LFLtu0gQHSPS0X0)LFJ6JhQ_;ycs;Ok_xxS6GC@AX?vX=0g<#L!b&%5i zo%_dR7RcAvc@Rl!-Q13O$KxwO(ZIgJsX(_ZYAsCsu080|5}6WqAju1i$NEt5=0Fh|5|!K-)6*QJ4dh}9!K z2F`Opo=Y&F;C8xB+P)W*p@8WOp0paX)fYYg7%m4)S|1K!&uPx@k6tL|KL?IVlPH57 z#}0fpILpAi8xgM!!R7X)rk6oJL@qKA9vLk%kjlQ%A_GzOjTRY5W#4F#(J)$MU~Mjq z78#>O2G-`%Xpu2mWQ=x9Mmr{>9h1?H$>>=Q|B4f137+tGG@meMD_}-Ni_4PS^Or@Z; NeV(pR)=kMhP%+!_FRvJBDy delta 82 zcmX>ZxHoWup?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_i<|g045a;UjP6A diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c3cef2c6d6cfc36d5a1967d152c1f312d196cffa GIT binary patch literal 5433 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfyp$>agwaUjj->Eakt!T9EeW0#7dz|jkP{x8jb#`cSQ{UUka^`|6s zT$a3f|Gn1!zeGU;^V5dF#E_x}=E=GoL4laJp=kw69`L&dV{PEk3eEix1 z4h)Q!w=CCmlPEmEdgQe^yM=+J!Wy7xqng5+Bc|*Y7l0Zr-gf8}WM5}};b9^x(7^?@ zLRRzF+p@=5JYahCbvCoi3>kqi4uu8>VS#l0M`z@0cD)0-%w)&9#?OU&WM6#Pzyx%( zfp7J!q!vMhR}PJOWi(bs6WC~887;v^3**sxWweSM9u1cR^6DS>85sWm50?@JwjjB9 zKrO?!qwT`ccHwAieYE2-+J_qL4vu!xN5>mRhfbgaS|er@2;44o7ft)}sxyESG?wV; L>gTe~DWM4fs%G*v literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_375x812-13-7-3x.png deleted file mode 100644 index 2aaa4c97171808cda708f3d726918595d9181664..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9977 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz^KE)1{Arx*DC->F%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fHutrmP&=Up*p)Z~;jv*C{Z*E-VJfI-J>i9eV){~{pZ@w4YIIv;CbIa=j z3JwhnjS2}vE;wW`L^*8U@oNvrunn&dL&M;~-(2>~K#>KF7Z|oQq!oUxTnIEQ;d(pv0C@E3 zv(sn*jHZCmEHGLIj242UwZLdKINA;vZ3vCF1V@{~qkVzV&d_LYaI`x-Ivy}OATj_W zLU-6182dujeorz9sL>|{Tdzq8y)`~9RMC30Uw2YM5cN9Ow@Fl@#^$EIjjo3)>hNJYD@<);T3K0RZ#z BUZVg2 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_390x844-14-4-3x.png deleted file mode 100644 index 2aaa4c97171808cda708f3d726918595d9181664..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9977 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz^KE)1{Arx*DC->F%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fHutrmP&=Up*p)Z~;jv*C{Z*E-VJfI-J>i9eV){~{pZ@w4YIIv;CbIa=j z3JwhnjS2}vE;wW`L^*8U@oNvrunn&dL&M;~-(2>~K#>KF7Z|oQq!oUxTnIEQ;d(pv0C@E3 zv(sn*jHZCmEHGLIj242UwZLdKINA;vZ3vCF1V@{~qkVzV&d_LYaI`x-Ivy}OATj_W zLU-6182dujeorz9sL>|{Tdzq8y)`~9RMC30Uw2YM5cN9Ow@Fl@#^$EIjjo3)>hNJYD@<);T3K0RZ#z BUZVg2 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_393x852-17-5-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_393x852-17-5-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1291ef7af1b929878f321c776ad8f2cd00f38ba9 GIT binary patch literal 9989 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz^KE)1{Arx*DC->F%}28J29*~C-V}>X-SRn zO!M_+&;qhK7+4vF7??pyfRKSvih&i(W?=AQl!mi|7&V}3m>3w^GZ|Q*YNCKN2;2Z- zpl&G5ynqp5;sPd^YL*QPm|<*29gsH9v^~l|inG8YvY3HE(E@}SU8fl)00m_-UHn6U zG|)mYmWpDzwFtgKc7B&{I8 zvS1dxb{fK-Fn1)X(v`XIyJ{4xMZJ1B5e)Zab`63I|7VbEO=8B-ev^3RR0i6H3) z2Z0a&wl!x0MJ_mGFhn_Q-tlV>$gmBs4@1M?!QWi=%RrF@jTacUG^7=Nty~B+Ea7@P z_5gVF>a){m0F0)9(JU}p28|{u>?t932229RVMm0vMeG8Jz?g zodp}61{|FS9i0dsoe3XZ3NX4BVstUc=xUf@vK;6R`;`>+^(;K|fQ#IKOUPXPT-G@y GGywoxP+lSc literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.RTL_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..25461506f348603c09368f20c894875ce957db62 GIT binary patch literal 5266 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_393x852-17-5-3x.png similarity index 56% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_393x852-17-5-3x.png index 8e0db8401ca3b663cc120aa68643add0a8d3ecf5..6119d25bbc04fe26bbea01a80e4d6c68eb56f3b6 100644 GIT binary patch delta 94 zcmdn$e9(DR)=kMhP%%!&YMy9}2A delta 82 zcmX@;yw!Pvp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_c1F102nR}Bme*a diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottomWithPositiveInset_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..72f98f60cec185366ad8aa7ac6308bb63a778eff GIT binary patch literal 4256 zcmeHKc~BEq7=N1$Yk*J!as`nt)Fa{`80v^qT9!+Wq8tKJREP>H(gCcafJN9iSS%`_ z#g?j79JP2LV5@?Nu%iWoqD<9_6(|uDr)ntZfH+9fZXNKC@X@DR#RMtn{t4p#Omh8wiG6)(faEtc{0(l}X$ z>-R{(s)ZiB&4M#d5Bg*yLN?Rc8w-w{HUJMDlKsP?UHRns&%YW;XPT8@mqE&|s0hVgTAc-N1kq1yHN zjgv`A*>-v_M=b*-^!flA$(Jcl&M$0p(lu9~QGd@$BjBdKgnfu5FAyl_Tg?V0>*R%9 z-jMx{jZvGyU$@Cv}6Zt6AEJh*^Uu4h(wRe%8V=CtK_3RnGe3f1ZyZ;eMWCa#sb zC!9tiGF+EPK8EkWLWx8&vFv^G6mV=SXzE>S21t2FGMCRks_q|NPBa{rzm7A4yg7sJ zuBCi|6=-#&iHqgM^4ne&PLwR3LB8;w6cyxmsQ&0q9o;?Fyp-rmv4%7kP!h+-oA285 z_zkWyv|-d0mx`p}`}5~PeogHth)u-z9jr}VIM$`QD9rZ8U!FICm;y+vqO|U352nJF zK|RCE3_-fnkXcfY*Yj}m=x9wx&g#a&eR_4`#CKP@{+))0e{R2g81NDVyWL@7IXgs7%lO5#rV@vK-snyII;JP5=G0(rLP zZgV+EQy8b1$jp4^K%D zmsUl?3`hV&Nk;?}YUBcq{iLc9Dkue&?065F-%W;Ka3~Q3QYRkDsCgnC7!$U(yFkNP zLBtJPt5P!lW$6NmLhl0)>q7vQx{bOxdJbT1!qP&^zZWW)@1XeNXsAY#>~hSn-cTNx zg6rb?19(l`AXIvV7itV`yQ%~1}HsCsg;1VB6+)LRvHW@0> z-*e>P+`X7Ms0sfnFn~xbi(+RY);2xP(-mCz3%Q0mCah?88J!8$?`-m0uzDIUEiRZe zqo@F?agwb?^&I87^f(BsQ_S^JkT|v~dN>T43nu)t<{(I)wRxzcH6V}tke#3vO!C8X z?0kA~Gg2(Ajz9hUFbo}>ZjX2E0oyK)rCu(8{P-5Oz3S*YSCXA@Y5H3IcuW*zq9Ffa zLIgZ-jgA?0JUURwG^T|8?GcSVn!2_d4tJdlP>wguza2+xEFBH(2bp>66a2?zXw085 zu$;MwK`-pjy8$oi%`nIr*KwKlN&O5N%G&+FR{z5Rlx1j--X$v%KiQqGU#Qw?VAh>h z=*_WqtBmca_@l!C24?N3#J3)Sp4#E4t%?|R*0HztjgXX%gQA%f9#PzWVylILXF?=4 r`2Sfs55pBHcN=yXc*b`K|B?9#X3c(c|u-L!SSGMg>RyUyN literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_375x812-13-7-3x.png deleted file mode 100644 index 2eb6a67bd73a19e75fda3cf1094ba7f206b56c1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8643 zcmeHNeNa?Y6u)oZ?z(&|Ery8eQfp?QfKXwQWIhl?B!S2b5#2XU8f4&_U*s3>nMG=& zq$5l@7&tgYDr|~^whK=hCX>n?AOW>?p*ADXB}CEq>fZa1UD%rVtC?or&OGjW_nv#s zxxe!}=e>J}-SM$ea%ZJ806-qSFd_i}u?_&jUnYe;^@c_9up!nbM1_NrA5?AdA!Aiy z^yRcFEod5$$Vl+8usOj z9!iUK`Q*cU!XHiBU2mBP8z=3;W$OW$5`r!wGUsU;cB)b%;+DV`8pOXG_}3R+sD+pO z-s}|zeuHgwbVS&a45FjyX?FlzMPL3odvRJ{_6&2lPx?MUh{Q65nqr1;s6=yhbHr4; zo}r;2GRMbWkndjT;-#y*D~qxz7!s$sE^?G=IFd?`OV2;nGSVcP;hMO^K?S7_pt(hj zQ&kR5GDPhoBfQ2&3ni|JZCiFZ`W{3-a8Lo*GKTP5v0v-xq||?&BR!$P4%k6XU<-1N$j=<8mh6wyWJgPkS{z!bV1}UG(k6Rwbst+2urIW?04! zTP{QrQ@!v(z(w(%!-tmJZO%K-QqPrD?7=&8y&-eU7TYB89+5N%KW005%=RmP!nSWW zr?GFRteb#UW^5ho?zTHi@Q}FDypNCirY}v8wDa+rsM**$1FP)3H_+DRWIM|6b@t*g ztkhHS*H2vM9m2zGx#Uzq&8t|Y`Br~@{iC*Xfq0J~1}}zvDZgUbIo=_Dc&*DD^Y6*D7iaUHdYJuSqV zyCv%bvgH9KJU(l!pB*`3JLq7KGQ>yt@eNVU_m@r%Q%9!ASgxL&l+5E}GR>Pi*Y2n$ zk|2eE4P!sXfK^r9xI8#1g(8(ku2E__QuP9cbk{=~E1W~PcbFnV4n@Mq7IW(}DDp52 zs-ztyh!E^e$<6{xyQZywt7a3@)3nBX>p?AM9Oc{Dci-ZRkHHd%afy|BBO?vYXY*OD zcHJZtI(>i{?8TwpCAwg2joD)eoUVVxx`b5Tzsg;^lZz?H#zSj$Rad^kiZ+Q=^nZY1OZSF+mP_QCc z;Wl$72Buu1qWP?dS9>K@4jeL7^{mQ5>o?c~-C{g-r=Rheg0Nh|5jlZ@$e|QZtSdlwp6a4oB1v-(lSYP!LV3cc}2#(0zk3nBOZElKtUPQO=K*coehMV?|_ zL$1B7;fruMt4)a>OtQ{FikjTVfVO6Ek@ZIJsrjggB$F%KuKR7=*Y5MNG}xF*-;4n~ zNGpiYjc*qH`rR^EBHn_?lm0k_A1Z%y3%!kb9x7T+9wM518(-Orj9oti3{41{7QK5m_+_Y{sk7AH&rMKJ3n8Oeu3sh9&XXsmWa`9)7 zFhzEnxY(bXi=ST)Eu2-_a2FsFAQD)_P(q>!wMZz}!W-@HU;6HBX4CJ*SL&zhHSm8L NKy+kmL`gWk^DmN{E~o$i diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_390x844-14-4-3x.png deleted file mode 100644 index 2eb6a67bd73a19e75fda3cf1094ba7f206b56c1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8643 zcmeHNeNa?Y6u)oZ?z(&|Ery8eQfp?QfKXwQWIhl?B!S2b5#2XU8f4&_U*s3>nMG=& zq$5l@7&tgYDr|~^whK=hCX>n?AOW>?p*ADXB}CEq>fZa1UD%rVtC?or&OGjW_nv#s zxxe!}=e>J}-SM$ea%ZJ806-qSFd_i}u?_&jUnYe;^@c_9up!nbM1_NrA5?AdA!Aiy z^yRcFEod5$$Vl+8usOj z9!iUK`Q*cU!XHiBU2mBP8z=3;W$OW$5`r!wGUsU;cB)b%;+DV`8pOXG_}3R+sD+pO z-s}|zeuHgwbVS&a45FjyX?FlzMPL3odvRJ{_6&2lPx?MUh{Q65nqr1;s6=yhbHr4; zo}r;2GRMbWkndjT;-#y*D~qxz7!s$sE^?G=IFd?`OV2;nGSVcP;hMO^K?S7_pt(hj zQ&kR5GDPhoBfQ2&3ni|JZCiFZ`W{3-a8Lo*GKTP5v0v-xq||?&BR!$P4%k6XU<-1N$j=<8mh6wyWJgPkS{z!bV1}UG(k6Rwbst+2urIW?04! zTP{QrQ@!v(z(w(%!-tmJZO%K-QqPrD?7=&8y&-eU7TYB89+5N%KW005%=RmP!nSWW zr?GFRteb#UW^5ho?zTHi@Q}FDypNCirY}v8wDa+rsM**$1FP)3H_+DRWIM|6b@t*g ztkhHS*H2vM9m2zGx#Uzq&8t|Y`Br~@{iC*Xfq0J~1}}zvDZgUbIo=_Dc&*DD^Y6*D7iaUHdYJuSqV zyCv%bvgH9KJU(l!pB*`3JLq7KGQ>yt@eNVU_m@r%Q%9!ASgxL&l+5E}GR>Pi*Y2n$ zk|2eE4P!sXfK^r9xI8#1g(8(ku2E__QuP9cbk{=~E1W~PcbFnV4n@Mq7IW(}DDp52 zs-ztyh!E^e$<6{xyQZywt7a3@)3nBX>p?AM9Oc{Dci-ZRkHHd%afy|BBO?vYXY*OD zcHJZtI(>i{?8TwpCAwg2joD)eoUVVxx`b5Tzsg;^lZz?H#zSj$Rad^kiZ+Q=^nZY1OZSF+mP_QCc z;Wl$72Buu1qWP?dS9>K@4jeL7^{mQ5>o?c~-C{g-r=Rheg0Nh|5jlZ@$e|QZtSdlwp6a4oB1v-(lSYP!LV3cc}2#(0zk3nBOZElKtUPQO=K*coehMV?|_ zL$1B7;fruMt4)a>OtQ{FikjTVfVO6Ek@ZIJsrjggB$F%KuKR7=*Y5MNG}xF*-;4n~ zNGpiYjc*qH`rR^EBHn_?lm0k_A1Z%y3%!kb9x7T+9wM518(-Orj9oti3{41{7QK5m_+_Y{sk7AH&rMKJ3n8Oeu3sh9&XXsmWa`9)7 zFhzEnxY(bXi=ST)Eu2-_a2FsFAQD)_P(q>!wMZz}!W-@HU;6HBX4CJ*SL&zhHSm8L NKy+kmL`gWk^DmN{E~o$i diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_393x852-17-5-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_393x852-17-5-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..0fcf01f0da9d47e1b8a60804b64870aed1be2700 GIT binary patch literal 8655 zcmeHNdr(wW7(aLK?z%jd7DK{ysVy>4K&UWDa=ajfKmw5|BD!~)B*?%uU*wB>jiR(M zvJs{n3>+LH6*fgd+l4C)lS$?dkbv5{P-FzUgeV%X&N&y^g{_glnrY_3T+V%b=XbvI z`+nbd?>WPV@v)I|N2MbGKpwR?JOKc)4gkVWCWUtz4bkziAvPpLhJmslRh{r6dre|g z%915uHawRB2{9Fr$OQfZLJ1`J9DrzI#@KlR;WKI@0w5<1h(~RbV2gfQ-~oG&wqzk; zMJyEEw-)OP$@}MoALPB$g@E6f<^0C7Nqn z!@X?oj6Mn^^So^h`P++~Jai4WWsz2ZQFEH>B_}|`Cusz^?98KW|bfKIPW<{Jy%h+8?VguhODhyt)0ZXMbbcgnd{&-&$sdk z>$=^X&c2npej0|%+&0qJXS0{!CUK^DA0PI~Se6lCAPS23jd#!zG9!`6L)c(*_XPlkP|uxiC=-XZ?+I;Ync z?Ky%Wxhn%DCEix=3w>z7@0EN;tv~U$ug#QA?&scjU(Q2T_Q%D=S-q!T=D>^i@)@>0 zrDK`Rl=c3(a{n@(pLLcm4j!~_bg+jQ;v;kNFiWj+)pxKH8s~Rj!aLbNTrc$mYNRMynrdqzAs~iV=(tNQ$on0NhsN7Zhr}cw6hEeg1s);Rn*a?=^Wao*^F>n)|zkJtH+9?e0m1&cKG0JumoaCVzu7LNP`O5 zLRPC?KOKcm?{5ZsaHz9IXN~PKyA1)e^siW!lFGZ6xhuEwu>{$8I9fx^rEf6MX0eLC z*Bb^MW~95MwP)+rAXW98Vn{zMN`<3%QGIhw!$5y^HyTdYJRWFs^s0L~d*5A?(7hw7tzc`(M1I-R zRwXCnF1qdS6xqd}BiwQ7$zb&B^4+#+5;99nrP83DlWgVn z0KNtkQNb0(S;w|`BFk>sgW1k2&pO<1+0lxIqszwwb#Gs2jzR%aPt!6T^-f5TN|{nN z<&k_uGIs?!iXJnRkHXo%y0~RvUv0?k*tvylxm>>>>m6LAWs=&WnL}$0UC5G-oCMq3 zhkOlLmUKBzpp8-Kj3_i8Z_; zPc^S4*Im@`ML3Mrrbdk_|47S~Cztr>~7TpKvP2o;fJa&_lb-%WeFyg!i!8Pn+N zF@Ps&6%n%OjgsGfSOH7Kn~-_Z4~OsravX#ny4);>*w(-2C7zjx*Ur+02%6lKy|)`!RTX4 zzJP)$u|eWue{L;(eghogl+wz(K#@R^pdyA65>2Q@Lb(>+X#f1ucV)9${wTfFI7_dA Q|I+}XB4WeK!suOp1DZ`PCjbBd literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.bottom_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5fee07288c97fb64f5294cc07af0b244e6f1b942 GIT binary patch literal 4264 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 O0E>=@3oi|&*8UARJ(XSn diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_393x852-17-5-3x.png similarity index 50% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_393x852-17-5-3x.png index fbd6424011b9437af649aa37581a4942e3d1a5e6..ddd14239f5a679879229157e24c280a4565c7853 100644 GIT binary patch delta 94 zcmdn#bku2rp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%?Fs;F@(myW delta 82 zcmX@=w9{#Vp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_q8hk02>_*tpET3 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centeredWithPositiveOffset_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9d1c5832120a874e9ed5c543f82e00bf62bb93e8 GIT binary patch literal 4377 zcmeHKYgAKL7CtvO#E4-G2$nd3MiGc8C}9S9r1olQk!Jz%2`E(<$|w-jLL3$EWoiM3 z2|hryK*^NRLal-wC9EcuI}7AFAa%`Blvf0K%#vpr?E?$5Z%87mtTppz{>&_rb?!N5 z-@VV-`<(CW@7%1AU|%!S6{ZLwGrz4qVF=+OXg6><@Z{&5UI7($B+PdUy3s292XsD+ z-R1Y2pdjP~Z7wpwED+A9z#m~NkcqC1kU#cIV>=8J>vdQNWyB-4US|)~%hGl4a1wMM~VzMh%QvVBvknxy7=ryN@8W+@2|zU)bt#5DMdc-VKKuCe;06;3l^X68`Y(g2{S zVuof$x;87GdRVaOmouMTn_BeG-`kPgN9$gMv(^Y~0v!i8RKGa`Ors+ge-?D?2$Bv^ z-g;vFk)BA#Kew3{R9T02UY$^$6h26 zK-^pfk_hGPKI@EGhHh;&-|7C38?-aGM?;CZTQP$GL1FD~DXxcsf`P5Z71%bA9d z=uB&#Ye?c;;9nM{lvj1#Ii*hc_;ya+X7p}SM@*$n>ptPo(Nd%P3yI2 z3xr9C#I}j5v7W?;0|#F=(SrxA5NLxNt5qeRtR%FRB%axkBsfcnaKFiMxHA;LCPT0{ zgotmM^RT6~TKz^oH7Tg59n5d{?7a7$Bd$tHIBA2iY%uS{xcdHvi4=~I5E3y2=TqL% zrmRpdzsgyr{?(eh4|a0A1es@iJrLEZp31vOmGL~ts-G@mf=o%<8pn5Z z@v}B=*Z$4!V1XOoYH5JxSk~9-mnjm6;0IV%FIGxttD^Z_-^hGJdgT6}EhF{`hGIlc zwnb&@1ipgyLZhqgn&xAv)%PVE@(eo@%JJ&26|=dW%R{tRO$(33Bpl&<+WTJC#`QN- z^Lv6h5WzlQlJKP!9gmVd4{M6%8&*YqoV)+oTD*wobGO7T&%RHL7q}T+ElBko8{N5w zb5){6y)Pm-F`_2ovqJ0B46IB$!zs6%FA`dbaOt{<0s9xD-*z-Y1W%uF`9s|HWN&X5 zUxmtTzM(4MLfD~`vC0duAxE!%86%91K4Nq=deUXE>nHzaIvg;d1H6x5D0f*2UnGkl zr~)V1z`5HkfPoDAZcS}>RGPN{A~^AL@chgWa1wUrdO7c?gm0D88h$amgmF zevNuxyx>xk0k~qk=qmyG zgr424^9=zf{x_fJQNgew-&}4wpPWmz7+s}W)P&-nsy~N+6mX^gI8xuNe5YZOg20o01VVvB<%>_T?%h2b70Q$SHzz#iT^tNwT9Pu zkKF$@ll|ywOqa|6*eQ{4A{roNN}0TSJzN4U7UJ!aJ^|%ZEottte+!aN9edaWrqW{`tk@Q|a z{l}enu?Go`Xq`hI%Xn|;h4R;yf=|R;E%6SBL%t-}U09>zJ0PF#yEV%|Sh3T>$lGVE z7&+^TS^b7t>P1xQ#5fy-!+8e5`PrpZ5%D#yhHpx3lvKJICO>WustlnjS1WhH68s0Z zbi})o>S>c+)zd#?OVY)7Cg0#CNH#cVk>s6(RkK6uVg!QG$Eq8{6> z6|VP~aVZ;?DLb?v6Ijw9UBnmY<7Os}4y3V|?8iQax1i=hHq23H9RMyq@OKBeh!~_a z=EKoBJS(tXCPRV}ck@?MfQ96hI!Rw5@doSLS#xY;=-eE2b{zn%t~AKUI0XsGiTCf9 bVj4?%W5-j6rppy@XG4B(2m9RE5}p1p?nwJI literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_390x844-14-4-3x.png deleted file mode 100644 index dbfdfe55c66d395f0a99f9cdd564a6e306b76100..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8635 zcmeHNdr(tX8o&4EF+oTT=td2oLB&#qhFw9d3Pb?~S%kG}d00r@sRmFUvQ!?5xl{qA zQrl5!eL!$^Q7f1#tym-6YFTDPA)K>4ZgFKq<%Jd zr=$jFvsFsg;4|q6m+iRTG6CGo;(S9A2*PeIyhxvYzn6iRHj&fAQR#_SsTUaDYfD1Y{_xoFXKN*H{-viX6r5G>76?HfT8?ZCh;b4KtP%zhccxVss*N^AU0J@Q#;W&=>OBAuz7~Ar^^%Zj3Bm0 z>dHPlBhFE5zUQk7SDfq^}s88eo+FeTrqcq)pG zv-k4z@`eZnJ(go3Lqe2hn|n`pemEqM*C3R8Wq*gr3e(Bx@oPE~loH zo$McvH^Mt`ZflxmBDLdQzG`bT8=_3TK@71N@u>Ywrev0<&k(0#HqdiQN_Qg78q&6= zq!`%^OjG<1Ov|FSmfy=Cn5|K8U6l0J_1a6HR3ccJ`Bc2T?;PS~)#m-p%$k3EdcTn5 z%cZOVH!b#_fL;A%#Hx4*XAs9xwK=f>jTg|)C8gVtmBBJ>lY<~b7!lF?Vi8LOcDjPS zA?E#3aP)Qbg+~y6tu1Np7!eM{i!@TX*uv?3JA||_7rhA0C!Y4Bec3zsekfAaed3n&&6bDF6| z@o|HB{YhN%Bj$4{tTSQJ+C4 z9pMIhL{L+u39PF^88`dz_RCEQv~ZQ5na`0GGx-Evmq`gmIy1FI(_wQcw{q(2eH zvGzMI2wAm2u-*Pl2tJuDdh#b$^(XbpWE3D?0Y)Y#j4HG5)b$HBG1H z!-$G-mC-Hw;PU0Ko>IQR6Dqxeywv#7rM!FB_9I&&7Q-cQj{uA1wn_f%%9ZEbG(f z&T>|LrKBbhr@gA@rmA&Q30Mql5rt0IEvNE)YCs){HVVZ?b^Fz-UBClz=ig#i!(_%n zTO9!lP&Dv+d!db`8$?TDkd--2o zku9~FsdTQD&M~DvMDk@85-mMoZ%qNL+S zepf%6^UU$}Pbkt?vV_6<3P~HMs`KM5u8;d{i@;(D2t}cpdXHk=wKFK?4WX!Ti%sp? z*bG2yhI8Zz7~6|?N55Pcn&zjdaR`DxoQu!2h2{n*j4wkKLEAGor;3?M0wYf=*7^%13Ehv7uD|| zk;Am?*)Wo%OxRg<;-PE1U{xOK5K#(GPPJNJ(^V|T%mF_^Q{(AMbAy7&wv$rus^tw287kVoeex)+=;<Gu-dmD7 zTHCJ`oKrZP1G4$#+4WokGkrk*jP0sTfB_-jJ+$K!Q5 UAxsSTUk1X@XPI~LB3b&s01P459{>OV diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_393x852-17-5-3x.png similarity index 75% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_393x852-17-5-3x.png index dbfdfe55c66d395f0a99f9cdd564a6e306b76100..02032ecf6a158fe9e4834fc670d9963022f40780 100644 GIT binary patch delta 94 zcmdn(eB610p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%oQeQ$BMhkk delta 82 zcmX@^yxVz#p?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_i-u$02~GlHUIzs diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.centered_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a4480397cd16c107958644ea0d409c4bf9c8cb6b GIT binary patch literal 4373 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 mw%SIqJ0+|7`M=n(EfBG+_xyca# diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_LTR_393x852-17-5-3x.png similarity index 89% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_LTR_393x852-17-5-3x.png index 1e2901d34eea84ab735deeae92330b9f15fa4c05..77f6bc9a61cb35b41a16a4d4fcf2f1c73cbb1a31 100644 GIT binary patch delta 94 zcmbR1v(jgRp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%*{T3vmki|q delta 82 zcmZ4KGuLN=p?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_hqXB01t8vasU7T diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c02b2f48932dd3a374080296e7585b098c099f GIT binary patch literal 5072 zcmeHL3sVzU6u!GjWD^7;Z+VnOu^=MoNQ)MySupZ&c!@l;6ijVZv=%~rfG8x(AkY~U zbgVe77A%fhsgH4{fE3IkwlF#rfuTi#Bs5Z?1rm7}NJzFf0UM@2q0R2xJ!j83_q)4$ z_MZLjei0WFZpCro0068aBlz(EFmR~1VN2kVTXxC?3gmEncqq92i`xi1Dcrj=a$j^b z@P#@CScolP7((C<5EsBQ>Hus*T>sJI5ub$^6oBFbfVmL!0hETV95&c{K{Bck6Jizm zCYpg)G2ZB)&Co6CQkUW4*uscihXHV0WoSrbyq5|Z-45_$6QG0x8n;j2(FZnzgpD&< zQgnI%N=YO?Bq0YG?OlIR5Xt3-4A5QA$)n!wnr@rW&?MJXzSD|HdQRg>hyj8!F)mJs zsc@9%F`#f+I5pbmeDMpW2tal)?aMoEr1DKRF}laX*nJ*nCW=62OP_C@hcw!J@MEU% z|1<=pWxaUWQKEP5B_-qFg5=&z#h~mDI#{JuQ~=TwN9|@RP)-TcyZKZ$zPaICl~=!# z!qN`15mebK5iLJ6kQboRFWI(}Q{a9vSiG;Rzc_{Ud)~*aLO`w-daNHH1eQLy?Ios@ zlvE8Xi<4Q^bl8U6S$(vaI#U#b^&7pYt--4k)>JjpMH~!4cgWx0(?C*=afH`KmRBQV zuv2DphZ9Dh-ZwQd{WT!ntuAxxolIWsU{c6&+RA~8GOtm2kB%_NwN>H>Atxfo;$gMK zBh8^y@7g{*^j8pq2D`lHDGV@q)h)LQCiJepI1`H^wIw4<&=dkWE4MFKSr>+jc#Xc! zx}dK*pZu1IGLHow36-aryh?blL%N^@0^?pp)yulAn6+YbMe}NW&>bt&=jSA@(_{u# zSKN^?vC;J5LaNE+mD<#C9&0mih`IPW*7(Y6uGk@j#V^=FJPhW(rPHZy3Z`V~VF9}( zY;JGoQ#N_R7?#$LJ+>in>oJ7 zn_r(8Clzh^cVg#LXG*NboLF;W%`?_KW6h=5T#Da(f&T~JSQ@fsn(ncG+5~{bgn`PA z^@e1mhG0xWMt8-0d+2obZmaGgpHGX>XH!~@R6jXAtsCPpf>jD@!R*$g7mz>c~g;?~YRS zjPx)Ugb$WMCNi@XKYsFNGy$@j@5`-~)ZleX41M@ATVA1f5+p>&&=>(4i6DXXmok5TikkaA0Sa^!?1Eb*YO+R`SwVrP>WHu>mpzk;$*hmGz-$iDeAf z)W|5V%%|%e;$C;e0mx+RbF_^;1IHF!m`v2jaaQjS{AQlY=!oeDbu1>==@R%n$HJPY z(`T)z8m+tnAeZq`y*^&^u+C?u-YRNu>6 zEQo>%>9o~e#m+*CKM#l`hY94(xVQ2tY6N7WVIB{tgLJ3^Irt5ElWle`qH1f zjcm2nl1YR(0Cr|fUpLhV+gW;1A?n%g5a+Dc>tH{o54FvhN`9EnG9p3 zak-4ej8PZWXNi?h#=^}|GCwRDL2PEJF4RBGO$-kwZ14+S40kX%@RJ6=9pF;k;TrQm zk~Gr??mq|k{cUj^+E$me+3LCpF6`?MuJjaNlD?MD?`%8$e6|~Af8Mjr`?H$XX)E{* z^}R_5is1y8PfCXdq@2!I)EtETru4_oU(7UCb!^S*zOw9Zgbf0eiS^m8Rnc zV?=kW*UWm~E`l1QafW#^VAs#sL4G{!;>HB+8rZu*NSpb zn$MjoqrbjreZ@palY@M%E&}{zBxSzSd!Mb2CZYJITBX)2@~jkd?%BZ+s5RXf+tt}T z8Ul|Y9+xg!IA2QV;$uXm-~Cx_$OQgwzHH4GGwcAT?9$z@Lf#}1dyKlmCC{!|GO4PV zBzBxaO35U$EWRoeCwd)ZbkE(Z;WmunE-6{oxG@OKBq*wy(@pu@DKgsV0=J2=@et3x z3UIDBSs!1Tk&aNiAtU|Ex`Kxw{*k*rY(;s16rqBP8+$D<+!x%m8M~UJ&KY@1diV&0 zI~6;@Pw!_SxO_8v_gh4{Sc z&POupCkz3=$|VJ+d}WFhYqeSLvrnC4`4T$tQ-H^UI^D7QcYg(&dTW%ur6akmfwPum zk8_t?`86eSGAZ86xRD*#vV*|VjU43T(nKCk%hxLIa8~qOdVI!^`^-!oimYSgCcxw( z5Pl3R)`HbuSK_r+@%HG$9{~sMGzQT}xt}$e@Rj3HgQZtYH_eMk;?#amH53>3O@-hm z8;TM^x?)nwt9DOg6q{%!6g#rpUD&l3;co!l-r;6~TK8P->rnScIPvo^;P`!JR})lX0>-)G0sz}w zD4yYRX5HfRH|QUD&-$X=W}{d-1Dd3!wWi5bWGACTIJIG%g4j3pDb$jQUe@~%s+?h@ zynAI^4G}d~ThW7ehL5`muEdBL68J2V7eP z34h{acQO2EA@2s=!zpNd9on{}y(ub~eJ>OObuf9hvTk9JREm}DTR%4yCk37{Q5GK*p%AZW;4Zs0z-WgER7#PNPM)=wloQITTOf zq>2kgM>ADLdE}z)HY|5;232vU)1~&7S*#-~n&%L<;`d#-S6XnwlQ@YG1HjgB507={ zvwq?cR+~0IT4F6vrM!7UG1OL>pDcEp7eH;~GXD5WU-nwQC+nv*FTx5A+qZ|Xo85)K z70gWd=;{Grn7I%I{yNL(-)x+w!({UH;Lf>Ud->GIVnUMX7q7Y@jG*>cUM!m?+wC{C@fL$6M3gUDK)WuDx!1Gbb}hl~$v{ zv}z;VY_aMIx`6lK5Ncon6Dknj5gL2Qj6WQXV|$lxZ=4n(p2o6E+H@sm2fPG8~lOX~k>NzLLZd4nr=UPHQS zxx$_mm9ECqDV@5?ImV3hA0{mC)00kC?@E8&^V?lmI)v!$k!d3$iA$+?6e%7aHcn zq8(|_ymWy*G&YKCI&X`>=Np6y&{lXeza$TuD2Y(fR@4#$9^5vZkYGM11EEwKks<%C zOhgXagIB3^?Z%eLAeL!%+63sy z9Su`)kjdh8z5Asz5+L1UoVn8LhagDWY)V<3^(Vmd4ZYLg{ub9>)rM(cPfR5nYY38D z`lxplhKE3R>FBi@MguZrmWCP*JIlu%MW|SS)RNg#6A1yD&=OiAo_fKyI0SaJ3%dIx zjE+)`j%T}@c3{{W=)v1d;)B6GfS2G}njBd^^#?z2HV?C%?!6y!ZmQDppiijQL0fA$ zAb(ok8bH+A%jlwxJKn1OtjbmKVvQpQF7{5CC#C-dq!SeOxiUIF(bCZ|vMrIQwFMnd zbG#kZIuu`N7&+^uX^aDkB}1aDS9i`GL=45^4esO|4N|c;ldktVV{a=DC#iG&2fb|= z9VfMP^ti{&LNNiPQLx>LiT1&CO`bbTzxB4Epnc6QiEX{f7)d5Hc@eDodKUpYATI)u zRiGNN0)b|V)&6%~=g)Yjp@Y1$F3TRK`v9mPJGtgBo0ACRNCWGgvwK$K!~uYP-fSz~ zBQ96ii)C1BvsQz20#fLfN)5Mcv;VM4SYNCr6EqyXVhp+e_7&|-0 z`?4-!E#k7=b-Oir23Xo->1K~T)?K_|DsQ~4lt?oG$E~C!T+Hk0scXLIlkgA{{r)K1?T_( diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_393x852-17-5-3x.png similarity index 95% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_393x852-17-5-3x.png index 01c1a171bca19e0ac5588282d18fe7ec3b7cad6e..8ce3b94c158cc503490e09a4b27f56923f642ef7 100644 GIT binary patch delta 94 zcmezF*6cpP(7Poy!ZXd+mqCkxfq{d8l~IU+8OUM;LIy@D239befx(MW8qN-4)PSmC aVqj>`WMF}+iJDko$Ksi`M|tC>qe=j8w+&?g delta 82 zcmZp6|L!)y(7qxy!ZXd+mqCkxfq{d8g;9!u706-)Vmn4@INOa;gMk?=&cwjbp2@%h URpU3Y#*U@)@>B7R`;ICB034_d@&Et; diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.inLayoutRect_centered_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..11512683030a26bc0623402ea80a6d8fe4ab3eab GIT binary patch literal 4827 zcmeHLc~lff8n5o@VS7N5W(F@H+9(X@1R^LPQL%$4404A{KtV+xr?6rc!lBbXjK``R zf`XtRsNg1mL}Wl2m=%mb@Wcor4(JNVDhh&84t1*;2FQE+$0q!d_x9QIx~saXzUx=N z{_1L(~(8|#jw$R|{uXxUF{vCEqz00eB0g= zBqag}is7)+&Zmnq3jbw1`Z6~9b_S)6jLkDcVh&D22ZBn`uBP|dK=uUA4N=IwkhlrdkSEH@JM(8xkN zJWB+&XI&JiG4UKiz3fnI6Rj!ES*sQWW7%L6JBpkhE*Dw4F~PgK5`D+2Z7NzYbd1)B z@?{NM#5815<#PYBV_BB~ZAF3G&6Qyx<74OIl)< zw7h5>9v*n!U;PWGWX7#cT#`^JkyY>`D?}itIIgXE`~B*Ux7I0a?%No;?DZ>E1l?72 zVI*1Fg`)e`#3ZbF5Es2G%VL+(ELvJT=J#f^$~~dlq$nVy&8*bt*YNv~jW#D^C)MN# z^)?jla6>;p&S> z?8NEXr?yY)_&)X*%7wM@*>nl-S997Njq`F|oUTubmP(E^dV_P*J{A1rURm#bea?uHWsQzF8m- znV@h2XY)-Z_gbwf@YiU)JTdrjo{sC`Q?aQ<8a6>>h$JWSiiO@H>ug6s5TD0Zgq-?l z%HLO*c8Re>~*+-t(J6#zOw> z);PR;GBAU3kB_f6N-28f#uBQ=7kCUfG^!p=`s+fawj+<57}k*9QT6-@{lQ@ z4Vj$QJmAH!Y?J|L?SVum^Y7#gpwGWPAma>YO0}kjYiC7AsSBD!Wx3zA<3qN~Lta>2 zeV{m19x_g1cs$C>*bw|;zJdYk)VK?;ImsD7ly11aY-1KLZT^&SZORn4y4#Z6-;f@) z`F*4pMC(0|KqJP#y+4HO@&2O^Y&lj_BmL@^@o^4*ho^>XglxO_0@`M3r2lWpV&vI{GsIkLKcxnBHaBF;K28cJ>2c(F=JP}SVYm(+)OTEf1yu2dTHByABrj1`Lg zcYft}SQ@wNb}Bqmp<=VFPQ&Gr7lBy>*;^&ebic!x?#(89Ps1Z^e^bp%AC{xV3ZD!r zf_`R@?n}TgAa?k;>=8WYZ(PqSS8?3CGW+ucsU8~PB^2m}uWvsh=@4TU%z4>&{OyV0 z_C`HX8*iy+d-U4QnJ}ejRlGI`WsSS7I>-2|P5T1cyx?>yx6H8jZsm^kXcf$T_7(h{ zT^hYw%vo0^OCDsy4E^Y*J~pk14gDoilknNi)HXMGX^pmC3+QKPS5K6nMM#1B-P_Uy zOvNxVZgM1Q{@~v+WmpoSuB*6A&CoyY?cirYN=MjOVqIig3x^=X&r4q)ZTJFjP+J=H z%)3PiMyX_0rw(VR_Dc$M$|`e5c1yp6F`PJ)#1uN&NeZce5;yxT*&<-vd)C_+dcnsV z0(A>gq~Fk-n;`hPfD{c#%(kv!%BH!vPgot)qeXvOdNhms))SUgX}17V)7^4bY~zmB z3!O{gagiQTRFDFNa>sWte=mKtlt)l454pUFN-?|;Rz@!*7mXnROtl9^dSKjt6W7Em z-Z4BAx{(|wdD3JmxVA$r-@m8sI#b{&oFutr z0oSG}JZ47u)bh!Nb-D=D<*QB-A*m6CFr($;{6~B~^5f(8F`iOB=7<09{MZZBk5+wK Tq67cF0zkOh!K%>GZ})!y+oklb literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_LTR_390x844-14-4-3x.png deleted file mode 100644 index ba2545cd0edbc01c630212b4f8111480aa9b164b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10905 zcmeI2dsGuw9>-@gfdN?(C|l@4Kw4X*ZSYWQAyClB@(`*JTV4fvNVla$u_WbXkXHg) zaJTrVh`I`-Zo5Kq#FSGuPwR31jmVeh4xBs9yP``_f8;Z7!Z zxO0EM&+qrW`Q04mga%ozvtNfGh-L5&|926DDnk&IX=VzpbT@`@K!c{f8{~&nD;f8| z8$m*J@F%-=A+LdRGlYuTBPOs5IJTk=y7NHP6~R`nQxK$Z4?@-U2?Z^D^??K4^IMCF zQEhK8q}j@7^Bi#mOYTLqycD9Zuvo(9Tf}K_u=}>&T-v?KU9_Gg$4Vr(?(Sph9N)hKS z_dd>2_#r6u3e|_Je)(@o8vr7 z8BAHFw|o5O1E@5nefpbJAvQhLTrr5*!X7TeXnU_GW0?JuNORKyV4|V|w1p0zuu=1uF1L5v_OcKaR(qoltmLz50Xdboe&a zcZz(>4VUb1{%XKzY9Zal<6HV-3x0Vpy*LhT@m)I8H!?CgU_-THJA22~o=ftI=I%~+ zelPv(cEU&<(xKpK)B+4ohR8Brd&?gKMeH2S)6p|%(*{*-P)>>Z-hV@ z_>J?kTi~}(tB#o1G7`Nw4eD=iILWNE3^X;3AozJ&Nq@4tv}Mr#elD-s6S#W#$FKmJ z-rkb2xb_yx-y~So4+9pls+i=BfZ)3yJd6AbJsJ*nT8J~_hX9DX@t7RXQ$0nVcUEYs zFIaEEaH?+d-3~B0-&)(B_-oHN#9|%KZIdc2ohch;w~P84FOAI$4*_=^G#4ly&0FFu zt8{UX;G;}S1Co?Eo09eRj&hrbq1i@yr zuz zCEiM){JY2D`aYT5^zzWagAQ;@+T@Ad2KL_T)te$yoS$UZEM)ja)s_wf15mtAHJ$m% z2!Kx>bbRA+r&s_;n`Do71r>ZzDCLDgpWNkN^suk5&7_^fZr+JKyh|5uDHBpJBO)t3 zhIS+uG``iR8O-H@TaLe3QT!*py(8M|OAAbFBk&rP+`2(hdppz{XLZ#*`lZAOfV9iJ zm+Gx~Z6F*Y@aKZIGB)c&B&qi1wTm68!wj=iLw;$Jipgkhi>MSk7G=#f2<*%eg0MZ3gxx62P(Q=A{vW?IpXWvMwVdWh|G4@rVSV#@5qc(9cXylEv(S zY~3SGEjE^S8vUaKm{TWD?>FwVhKbQbdV{M{s>isZ0F@})WYCnOg}bk5=2qtKNfKjW zHtt%tDds-6Q!d&;`p*~y8~Tdi?}(1K%F3>_|w}`Y-Wrhs zkk$hY20;zz0W!mS{5;4ot~Nz9U4U`&FPMjGX@)8@HuBorAa-<#8qQcqkOMo6zYad; zxPWX=1Q(n#n;@ABCLHBdU9$m9S(jSjATQ{tIlXn}%9%@qZHd5I5i>2t?m4#)y-tq; z8ifEQ(`GR^<1Ymp%AvZ#4sXUosoQKARB*~VT%fK#;-7Scx=N%}IEaGFv&?9g51qv( zR@|(!tuCNShWAh+E{kdCll;~4(HT=1q_s!`xokh2~L@#3BO9QpncDP6Fyle zy$`0WPo;1W1L0b2TOyDk2$g%?6E1D%10BjR%1`ByU3J6rWCLsTG0(MrTh=wAXAF5 zZjdR3T&3XTDn-8nBv&ab1sQUc0!v=x7a!t_&mC$mC}}P)i}vNsf_ml^SkIg$tC?gq zldNWv)l9OQNmet-Y9?9DBufu#m8{9q16g_?H%OG^1_|7bBR5Elx8ukS5^~R#+;b)O rT%9LZHrB~KSMp~Z|Hq$kz-s2#ktdgL*w+d`SrZ8k2=%Y_R)=kMhP%&ou#LBMol= delta 82 zcmZ1)Ix}>Fp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_dVAH0277{`~Uy| diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..335488ba93131b10409d9c5374ce95cc3b144ee9 GIT binary patch literal 7385 zcmeHM`#+O^8^52ri zm2t`d0I1q;wRHmk6ds&6V$k3no0fnB2L#P+%O;?_S!WphCH|n7J=M_>SPjlGfFeR2 zK#3m#e*gpyP@I_qz+VXM*|{5HrSusj03;m(6r|7ifTQ@84qo85r6VdI@!MiPQuZ_o zpO2EwfkyGy9CBWY7dIzlt2Ye*wEhrZ2zxhu0r;lQAzNp6a0LJ0%9IzPly7G+Us+JZJq5M2d`iT;L-QBvek&^i@ z(+o~tGE<{8aPA`QPc^37&j+8j1 zfpBBnt8H5|-5$5$ftuif@3OcC3_|fyEFzzN6&)k2=Ebfxoy##zZ)*@HJxc@Z3ftL? z${lL{%kj~64-I(i^?rISx}4Fkd8GPK!UUfb`1UJdsC~*1kHH&nq99x;{`l+kJw2o2 zeMjbnQn#Dp%mkv0&%$q83O!$0-SJk-S|&E+S7gB?XJ3!0s=2!m|FleJ{E=`(W9WMi z)J)&h=&+^&mCi(0;=+GY<^;v)M{>GX?$o5OK>pXyG&;1oj7I#dvZ(j@HdEPZhJ^aJ z!W0z{3U-*4cx8;Ltyy|VZBl!O&LF$k-!$ND|A2nw*NhKs$DD&b6sQFa%hDAEj5ON{ruM2IA4uq9KHdNXBy*mKOY7oQL zGAucsWT{?9J$(Mg8H&cte#m}YvUWrwXY9@pZqI$@iEr6vf;WrL^;RHH0!TfD1z5#+ zbRlkQP2c`c!7{vbsHyjjZv7HaT|zWO5)|TF{6#^>3i^-0%Zg+9_~x$BfZ zc^JB(-sxN)S6{8HL-L`V*B`c&MiQ6rM zOTobY1EqScrNg;z$}ns!*1D*l)p~`UKNB!_YC)7gB-Wxab{ zzuO3F(hcfYd7rvYAa<_ z`Fgx{2Yc(6%lBQYRwEr}^3`CDH!o=L2YqAjm&REXAG40WwGgr^L4wWhFYH<1tY2!~ z`3yEx23ip66xl{K>7N z=t+3rj8sMe5{}n6$B&hGLh#o&aqz2xG*a%mn7N6%aHLweh$_U)uElyjkzEd{xruKE-wfUj zwZgG_{=QQN7Cy#{1l!QGt)JlIk|lM!T*J5THiVA8d9faj`jUD;X+zu$>40N3t$DXj#Wy1(8ngKZ!l+r2UN889TVT4GpeT>S)x0JXw#@-gmukM|>PE^9(<47cuxP>C>Rto1Sj{`|t>;^t#1LZ$z&1;F%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fH$ga!gX5K)$&C|s(q=NCyEyq3;cLC;uzy2>TmMZQtzu?QwSiAJF`IIHE ze$TV#P-t+NeBkqWlg9Ve=l4q#G%&leFYDi3@GnUGf6(bO)qH=fKOBC*&%~i{LFEDO z9^V7?&-Z?{IMBF?`S$f#tN-Q4{x5vQz`lx4VgpYFhr$Ha2b_C+7evK8HM<2g3aDgP zR^im!8HX8x3N~Hc`}1h;6^|Nrk#J&*w$k!%5tNWL8%j~pEug$x*v*2AOq@Mt|eS`Uxb!!)mlfzxxN zrR`{GJ6hU~mbRm%?PzH`ItVyg9gZ%X8C_1qGFlyuR)-_0I{d@9Fl_37JKby2ptX~p Lu6{1-oD!M<*V6XK diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_RTL_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_RTL_393x852-17-5-3x.png similarity index 52% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_RTL_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_RTL_393x852-17-5-3x.png index 161f3314fce394d11d3f836a8697fb5c61fdf219..36d95408e6ad8c22548961519bd9a357f9ddbb3b 100644 GIT binary patch delta 94 zcmbOmvNB|Xp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%*_r@lTMYRC delta 82 zcmZ1(GB;#`p?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_hoAW02Fo&h5!Hn diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_RTL_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_RTL_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..63c42a1ca77ea97bc604f680999b6d94d214a9ad GIT binary patch literal 6424 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 YJ#?z7rPOagQ3PggYP~OSkLUUS1F1~R#sB~S diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_393x852-17-5-3x.png similarity index 82% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_393x852-17-5-3x.png index 8084ede3b6acc0d05cc68b612cf9b30d7d9b42e2..ebfc551442ab84f36b54ea8dc0dfc750f945dd37 100644 GIT binary patch delta 94 zcmewn+!8Xu(7Poy!ZXd+mqCkxfq{d8l~IU+8OUM;LIy@D239befx(MW8qN-4)PSmC aVqj>`WMF}+iJDko$Ksi`M|tBWH%$O|(hUg! delta 82 zcmZn(`4K$9(7qxy!ZXd+mqCkxfq{d8g;9!u706-)Vmn4@INOa;gMk?=&cwjbp2@%h TRpU3Y#*U@)@>B7R``k1EBy$ax diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.nonZeroMargin_inLayoutRect_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..460531855717e8a15c43233201cde2d673edfb5e GIT binary patch literal 5818 zcmeHKd0bNI8a@ZH!O+CG<5Ep=r^YRFiAqIN>e@Dg&}a*3DP;}QGU4QsI-+2fIn!cu zbD0#Wrew;@N{ezq(@G~MtZ=Ce(O;1fiMVhT1i9yE7Qf5==l*>;{Jw?neDCwU&-;Au zch1RPPhMj)eb#gU0BqK+4G9AP3mnvMMooii%*n&EpazT!TeA|lDw-pQ{$%c=uKO-D z6mW<7D8Le&30S~WpdSFv0xT!`0Pr<9`(r;0bp0>~0RUOM0py1{5l{15mU1*aAz&1`am;mMk;y=J7*QUc1s)p*nb5Va9!8}6*M?!cL-$z)ItkRTsxuK z6)JEG6&pv@Jls0~uztNRWW|Og@O?+m&-1^TdFV;9A-}j*sPl209kXV`r47BF=+MTU z?t;@*e@h?N+JZ<75typ{j@EMzDSxy_!xoIO89EUmC+-W2uZyP;*w-BMvz3arpbE#aJxM%+HKGB6fQt>~k8|SEHtU zgjeyv1sa(Eh%CEntT{(stTOhJ2KE@6VEm4;EMI%KdanG)7D7U!Y>k+*>bFDCS?3b% zrntkaP>D&#Cde7{X`sLL&0mbYtVc9h7%%=`L!?1Ba}5i$!PBsFb4Iu*QXm^2qA|=> zNg2p-ojMqq=AtS@>-Qql=I0pP9#fa(x!LOSayt!*OZ3s9+(?_!kt^+wBGT@LXyT_KWIjGoejxg2iAvzMWWdTcrmDty zVS()BGv0sVoX;-m3_0;y%8{w%CsN%HCNv$8T#-4DPE+W(^>eYW4r8yez9&dRdk2_} zjRl_lb{Dz**uvv{@<>WmP@5Cm3Ly{Tl^3!scfL}*`|Gd7b{OaxLEOGMH9w&uFWURt zAP$?DOgiR3hMc}%?)yl(^sdUgL>N=uzb~s3&yO$XDZ)8+1-Kk#oVE%gUwNoE@$th8 z0YZiN=8J}{O$IBf?_P~1Rwi~roo>39)B|mZ7fl0wuRPws0Xo=Tafk19ULHm1;1T9~ zufR!qhZA6@eVKi4+6oit$;_(FRQ-66-I)}HiARgos}jg*Xfza|K>HT{=*BKri9)X3 zKu0>GE{qik_Cs5}H1)b%SF2BekO=lVNrvNi%xx3NmSl`oUWR#LbH_q!C$2DR}g zUG=HlXZvc@Ra=B!1+H8X@ob>;1GEbbd_G!5z*le%LqKyQ=`XZD_y4L?$1^YE5m@9? zCOO&{I(9y<>spfDfvko$^cS5>dce!#J7tA8bs5=%a%<$nm>o5-&`H$SedmkH#S|;Cx}GGsUp}~6@!g_2+WAz11$(f-(W?kLcHE=)5z-my6DgKa7l~<1w>FXN2}&ux zY)({jqM9U_IZ@4tYJQ@cpQy%fWas~%pQ!Z)=#$4_z=|yvK;LV8_u?I)$mnvN(wpe@UBzJTv4AWo|#HE3=Iru0O5iU09MEzSO(Mi8rsmm9CnzXnAcrkK3Xmb!XNO6AlU_2*lCdZ@^<7 zVuZWh7RGg^rIb;Exlewpw_?i^l&RI0NX$Q*<6KTjhour>2V;BZFH`T>HlBfP z={C#n}AWhoy$WNaX?WP|Yt9*2vF-h{R5y|G`(VJU}{5gF}nSvkQ zju&b_uM?WWCEt%`(8r%I@SEWITz}>LZGHc;iI5qi9hG+*1xyLzJP44dms z(R`S?@!oX*b7+fuL)qR~_@j2<^r&uTdM;y$iEquNx*Y-Z zVErW145rm$9X+X*nqSv_PbGIk=JB%?HVzmf3E7X|Xv26QZxXxri{1Hk>fs1(TF~!! zHWndPywoIq68%?I$qD98&+>gW{L1ZSO)GWztus*yaSJ`(Id&y2 zg%cp%|55Y`7;FEe=;JBZJ=5=I_lWT*4+gelwx@S6%lfnUKm-zn!4X*ih(I0y!3F#q zzrx+gF?JXca07pEnY;~;;UF>x7A~}!GC^TnEs;4hA16+km|@JZ0nGcxoKxn5;(t0s a#{s_^-*Wi+#7gL023WU>9CCFfE#u!s>LVQh literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.topWithPositiveInset_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.topWithPositiveInset_LTR_390x844-14-4-3x.png deleted file mode 100644 index 1418f27fff21534a7896470e3497e0c651b3be25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8378 zcmeHLdrVVT7(chSmWnMFraa2SI;WzRtws(KHG!c%`@SREE z94$1PNar)5WX1Nhb$h{Xa#rkz+W?pu#x`Q9aUlg?`lV}DB*7j|h(1R69S9rS!{*`p zR=wa10Pa0nO+->I(RU{zb5^*AI^v$ab(8P*orR^s1N)YgAKvrzkpT7Vipo=Vu}q<+ z0U;2MJiMnI$a{8XSkHOo9Q1>mSu=LHOfg`g$&<%7?4KGl21%yq0?WwpI4h=vG5OC2 zpJk2z%gr3jPXPCWH<8olpkw}PFRHZl^hjFlK6*7Nw=!nK{mQ$Www#k&X;JV%qrvu* z_`we3deqz0+`-Lpa1bqeC=Fvid00b8p-_!snAtc9Ma8q}H-`RLu!7YknshUF)U%41 z3_sJvS19y?iCvwSO+7yE!dYrV%8EUG*0nH0H!PxH)mD=N+vV(r}v_H*4=gAKBMt5E4d}O z3$$FDf)tOHdNW8-^&6^RGbH)nRV_kt>G}grXC;L*;y0_wC!#ynjnk1u%#W_;tWUej zqCks1iF6o5#2bV+2=5_$$nZIYtpRZ+uv<_d^LJoQ^TVr!~(+nOf- z0#xpv9J=I+YkIV!aMM5fy5u6(P$pLuVR=QD$P<;pF9o7=!FB5|Xz#zM^RFhP%YDUB zrLz&OP`CwU24Mc;qJxYURq9|$ge!FfLpTvq^oL$8XlTqi6UB0a22rzh<75mTRa)SJ zuo%Kv;e~XN$yK|YI)GAC&@~2?rB0h|o3lITx5Jy%WZQ%gmfH_@{&L}V70VVrB2)CI zixBw5s!I(dGRO#35KGIOFjbIc(MypTkEp$qJF4q)zG)60Ob9U<(kFy)%pPa6-RonC zQPwHADqSQ3e_(ykNg#`4(cKSsvm8uXB)UprGmFERHxc<+rH}+=CU(HRIGleRTGBEh zgti?=hlVmgXQQ{S9j;0_6M<*zvu*fbGeUPF$uvxNWI{g*Z%Ux7*fVrq|Gnyggof2p zJ#}Xy2*%#V))xh#;p{p)Hp5jJksBGpEOj~fT;xZc&trE=O;!<$ypd_d0yi_>lxfff zE2a%)CgvXRtbyz?V#9JCbR#G9xJ<3U4wt_+pC=yLVp|T9)HKorj9X+dao@ zS(PW@!i^B*v6?v(4$~Uly^ss1k1Ab*elr1a+}URnB;HznG5pT_gPXnl%&-IA`q=G- zUN4Toi!Fw|^7;MNLU#Zpg454K<1=2C&F_kwo4F5Vb8bM;YF$_JZ4E9*Tz^!kNaI{i zR5^Syc8a&Tbx=J1dWT{jzvg-;ogmkKA8;RKjZt$;bYF11+z~s9Ac~1=pXJ95B_v7{ zEmKEnjj*aGNp!vWMdNi>QN!aPfWbl&3)b&{%|(+)xdbOvu9{_@D(dJX_wg2E=x!J8 zKrGrS5S{$={brO9M$PSQemQF4NK~E7&R)=kMhP%90~wy_6(r_ delta 82 zcmX@+xXW>Zp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_i-oy02(0;E&u=k diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.topWithPositiveInset_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.topWithPositiveInset_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..31184cdb0ac61ead28c509322d48fd9848ab59d5 GIT binary patch literal 4216 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 bQO1Bb%Bxz+rW}caf9gQoyo8wQD0bW5z~21b diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.top_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.top_LTR_393x852-17-5-3x.png similarity index 66% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.top_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.top_LTR_393x852-17-5-3x.png index 53d7e0a02e0009e3727448be157a71082d759397..5c8aa5e30bd18986ddde2b4e26d95d8bfd042d96 100644 GIT binary patch delta 94 zcmZ4QxZ81pp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%f8_yX;SGNP delta 82 zcmdn(xZZJsp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_x+Uz02LGt3;+NC diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.top_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testHorizontallySpreadSubviews.top_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c825cbaabaaf79726d81330ba048e70399250196 GIT binary patch literal 4206 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 F69Aiu?GFF| diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.LTR_393x852-17-5-3x.png similarity index 92% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.LTR_393x852-17-5-3x.png index 20c2daacfeec9b84c1f28a0bf6ec4cbc4429a89d..32ca30499e7853916e22874e9d5abc53d196adb3 100644 GIT binary patch delta 94 zcmexw*KI$+(7Poy!ZXd+mqCkxfq{d8l~IU+8OUM;LIy@D239befx(MW8qN-4)PSmC aVqj>`WMF}+iJDko$Ksi`M|tC>vvL4$(+z0= delta 82 zcmeCS|8FB7R`_9S%035^(_5c6? diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4e014a42229a751942cb7d5ea25ad5c996a9dc GIT binary patch literal 3964 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfxw#&ZvE2Oyo|>Eakt!T9FpM&2V1JS>J^?|+fZOWMHL+<#tR#+iS6 zcRzp5#$#}Rff-5!NbGndn1A35TmUGwpONvAyu$wmLxi#kk^%}FQg5u03*%>#NN8XL z6O2j@EF3U{fNEzlGBQQCoqd$}5vGDoLO_AZr2)x4s6je%VxtB@LUA;VM$^$~79qJ9 zvDkhtPxl9_J(5P$lIDOzxb!^f~q#EQ5m7S}`-Zyfs3UhzA_f6skQ!%R*mX%R39#y&=n?VMQ#uoomHryx+u! zR0>`I7N=R$k&QQEzUjPb(`v8nW!Z4ujiK1=%-DLMW_l^K2nMNbJlDVwxEr}ppCEZc zE@*0O=&r5N#&8#}k-}!@YSw4F*C2%=ZRw7}6v4X=DJ!Iok*fzC?q=rw;dwUJx;?>yfypYxSQ|~oAWP$#e%gDH> z3=we>2@1v&Y?o;5UR9F4Jq_;S2vcl!hH;-Mk7S2eU2GCBc(6pfV(87#rO~@h;VwR~ z3d2sL55TJZ|9=s|e+mo?Y(GKu?b{m%Ihh>=m=B(`e`z}1MY$mH&%C8C`ro~~_c?t5 zBX5QSv($wKHWMJzgjYg=Z3dVL6P;i>L3WeIY}b=BHzULk6fv`PY+a3_H-$H)eOma8 z?LWPc&1_u8$b971RfzFWGdHnqau!S7tYKMv4Iv(pcYtAInJJ3iHH~jBeB%0S7S9QC z9Lz-*OcEL*cEg+u7InDhPzHHpO-5yF3jGD_ExlnsrYyPDhA0KE>`E z-Sr0fpQj>h2D-=>do=2tN((G{wgwU88}4BB&BCXm&vN$(fjtb3$px8Mqj7@kO&zau zbC9BUnlx75Y}s>Y&)IM$gl`~;5-l1pm=>JxXJBMv;Sf-8XaF)g9g2<|Q3Nv~Vh7X{ z8lZAu0R`a`d^fA%>VXUc2bgA%=mgG`_8eP;fh-&n3dpKYuxxVPCWmAr3y%P@>J+A% ziqR-eV&gzoZPfT?!diEbQ(>kuw;*wtW&#uNHDx3ZG%z|Lsc!TEM)Yezh-bkj9AH59 zu7esdmwrX|5Ek!O!K?Rhq5r~{q^J$8+(ZQvlm;$(x9JnSgb88SX{hk4!onkdU&BT%)5r1jd#N{Ifv}#D&!jEGusXw z+jjq%8N6vH_$*w_VvU%LUTn|Y2@-fXbcIL2e0T?j^j|LgD}on#hnG>bk&zo5GII3w zm^nX*{ic5V4`D8bT=Bp_z_c}nd;#~;(c}9Toy(H(3>%+J(vQoF>i^tk#^!MO0wE<; z9#x)LdO59kxQ6*IS;nB-&8b17C@JNq>bpGlGQEQZTfKM|!;VGIKYm?0sPBe!DI66U zBt+&6&7Po*h_GZM*?&tTD9vSZD-F-!vboxV`f+mQqm5tI21wC){%CIKu;b6?p8^7- z-%@dgLP{u?$auN2SO-?mER%dnT-nRzck)Gwl59++hc zQs%C&J;3E3H4{sYWdSVo21yuYBRAf~HjlZX?BT`Cgs026#v$gxWxxuFkk3;K5MNo= zR=|?kvUx$ZtITs50ged7IwIaON;A|^ysE?kiS=T}Sb-XWjIZYhEltZs7|o(&IlIfp zGe|0ezY5Tt|EOA9ATkn5axC*!VT3rc+%08Oa_k(18oc0A19;l*P06gZ82wnX73@Ex z^B4s0cNca6V}YSqk}erHn?cadG$y%Xf8dRg8jgyd(zA&i?s-sf@r$TX1_Aj@wE)y# z1+iZ6bSRsbJD9c)$XN7M0l${CI;4OPB{TWC+zu-cqCT&DQue4$TksP2Cl>5offdmF zs({|QQge8k00KnN=zlFz1OwTVlL ztQZm&+-%M)HnQ)aNsmjSM}uz~h$Y+DjChnJRQ{|rc8=BdLD!X?{mZ9=ew%^+h>%;@ z!rOW3^LCY`E5X9!f&atgeb~Y=0yTg&3B~(=1p$!(G`|_(n*rz$QhbYmZz-wV!Xqki9!8iix-w$Q_cGxTwd+xG2cI(1>fD49ocxc?vZ zJ1R$>bw}OtfUZd4A;Zg*Y6a(}byVO;jR4&<`qpSV$&+%%dc}n^jWT?{%QbwK?vxWz z_^i6n2v|^sQcl^s+kSpbt1YP5AwA{WkbPabvQp?wbFk;=95vG!AkD6@JqFA0+v+zR zXh;y+%au2W^m5fa)^W4_Zx(rIHgC&sp@oP5E#9}97ho}K#_tl@A1yJC8(5N8h@Lg; zh!oBHdo0xyw6sO}+5X!Gxr!>?GSH4;BDpd}cs6S!5hH0FLt}k`24*$c4N!8A>4BEnG5-=iOqRvD0a5VH#DyZy6H~~X#`qmd&ZFgjo+7p zg*Z|5atp2JJ=igOcvdU=f&}R{#U#4VU407=6@iqjyyJ1(evEa3HpaoKY9$|mGuT8d z+3{0oCSIph(=e1RH{_S;!O{{~>|E_=MX=80Z2M5Pf7Z!GsSD$Ofn&Eo%Uc=}7|3ZE zWXpB1Q%=0^mXF9f0)fo31w>13rI7K-UiZ#E6C}g`orA$g2@dzyU0Fh_IRoa@(P|i6 z{TYw?c!uhgAOc&pMT&?srYMMLDSP}Fhf{Ao4X@De8Nu7Z8rhz#cp7>8uLt@AtVj3p`pSRFEzJndp z4ji6Nu$YB|^N*!kku(!6*r1=#M}kjE1u;+v^Fzz%4HLoX?uxtjsWlzYVZ3s~C7MGj z5a=x^u_R6#i?dX0B})^Hfiimt&Pu;$_IRk~^8Iuf0!6E1(abGKs+4kGe_Af#U^SGX zI55hWiiV7VxYz+uy10ccLa~mZ4O`6Eb8Xk-d~_?ot%OwhxpH42V+tTS7< zDcwOzUCWHQ3{GrLBhJ^2mEIr0Yh`+{u2&qNMS$Fnoic3F+p8!!%7(+`QL6NXH?bBs z)f#){LfigHv{Z9d!{GvLV4yMS@-(rrj*a_#V?hY(#*GEhkGf(G~ zZPM-99G+Id9zaj18SKLD)b+8RWJ4sEJBL%8IWfUcBahCZVWtAf;-U{iLPHrV%WQY| zKUDu}bt&zxZ_EUewibVRxSTO@Md!B#@0MR}7czWx#%vD#&@nw*bTtg( z^A$m&Qnd>0yQK=>`s`JjOQvQnp}pW9hja8^W8_Z+=Vp$1Yx;iolg*1G6X98&jZnG& zKktJ4u>_(KSOUW>jiZt6BqdT-oK0~AJ`br2>#(j`z8op88pLMTnfETsB^+`&Ro3Bw zSIuJ@>`Xnu4_iTkRxRZRg3>e|1H!bsXHL@2;!R0&o|f9G4b5YR?@`!19TYY>W!MPh z$$tTiTUO@%OK_a3y==2ttj^z4ySA1iXHu?Xvvc?0P=ku#kL}p_-5D9p!5=tyl{u(6 z1Y;0RR2Q_+DI*zV?D%*)lgPM|%UH6eXr|p}Wc@Ej0!hDj>(}fVpv%Z`(Cyk)x}tAj zvx6#68mI%qO@Q4|>)M?xL{}vNp#IEX{)zx~9|KX`o&JfI;vGoQ;@?LzM08XmFcPk7 zHt5kwRbPj%7I>cdSOQj-YyYtza%|Dz=Wq5mU#_ZI>p=Tlj|U~~ z(%!k0WIz6Ybr?;43OGiKrud$cmVe)rr?z;SE<=J^kIq2kvV$&9FCU3xTR8!P8EK*P zp!GZ@WxaOH(IQxKgYbDt*OUcx^82XESA2XYGe@>V;9kWNTy@S)2O#7prL3~|&qGP? zBR`Lwy0mb82aR-02fn>pBlhvdR9b~{H7rhn3 zZ=qXT5!m`j+u0Bd5;YE6^1;++(X=JUf}O@1*Q!-W@?~<%$9v(OhRD3xkiK%7hwUNh ztJ9S6C+gktlT%^+Hb`*i@wzh75@ZV)334Vswx;vJY)Egjr(O(_ z3b50p&~)NTFZdhQci6Kzb7iZiHv7TTgoB{M#px3xu?otcWH0}2f<~<(bliZ04Yanh zLhgpBw5oP*vSU8GRfEl0B`ayse+}3vjey0N>>VV9ipC2rpDzP9fA8#qYW>i0ph8No z-$CpO3NNY?R>LIzE~Rv5{Z5;&XbyZok9o$Zj`Stw+mIS2>c-7!LE+DpL$7EF0Z(wT+!l@o7m1;Uz_dn7inK{Q6Fv^{5K zO-gLi62^Y2Pt{H%f#`FnpwHiw=aAasX1sN2(*p3!zcf2^5vY6splY)YjSlRuHWNT= zDlnToFk8ZdU61O&I~MzYXjHqc|+2q)y4*$H++C zo`ntICIaHZT|oWj=>_|+_a-?bo(=?jPajOmLPW9?sU{2>+52k8<&yxljA(Ek=S77t|_5Kh7fzCY$S#EmCN;~4-bFujkx2+6?Gch1u?8zObBzm`E z>kD4H|45hA<=|d-*Yxeg@;P|m=)L};$`R00ctWj9Z;})Cp_u)HSFxv|kWlte>rV8a zvB2z=v$6X2PKA3BBC6fseTIAJNfia?B_0#KFZ**8C`rFDfgZKXWhz!*z8MGqwrFQG zxKDy*r>2lwq>4N?z|J@4ZZiFg-CIa5ZGAPEe+^{t#Fp^aqy~fu7~iR=iDfz~GpG^vRmnT>`5Iq*eohNF4(aa%`j=Zy z7*6!p#PI7Ki}QhJnP9yg4Y9iT$20y0J0^K5uUS5KL6{0aK~LT#QbA&bO!BHx1xmDG zT?D~nd%?+C9XxX|{})s1d|*8fym$Y(7eVUa@yEe)?&=2(BvS|!m{6}00mfGqhJ&ZN zpOZHQ9=?L$ef92Fa}wS6cue-XH>8#Y#|PU%a9;eB3!Y3<=n2OB(|T_V(EgJG**7K7 zgk-;K+FOUgFs?iFVUINkCEEn?>XW++VfU3%ipuZ_|7Kvp{Z$~jeZ_KdqQ z&k5<@1M$^$I%5Ws6{(P+!(=~)&W`W~SWiOD9{==A<~W;Ej`fdS_n!vHn5uYCuc3GO zM?&8U`@h`^FHdwvwHP*BuuCP$C(jC3pVwvK<%oU|&_8`@g8+u{G-btwBNS zAuG%Y{jJ#lf7iN1&oqT#AGhxJi;ym$f|8Hz=e5Dk4*mCoe84wfrKg^MMlRqKS~R0cBtZ_zS?ND9ikyzc=+$m4p>GiSfP259eGFMArT1zoWp@Cy*N5I< z80E~Ra|84u=dt&8xw*`MGY24hOik{-O-irA2lMxAJ2D8Jxd^>kiq_v*1ikyXcPiTG zLf;<*fOj5z;7nf?fcwjjVDvp38_^U}<4#FyBZiD4#Z_R$WbdtshtAQ-Wg?)nd}=Cv znE`MN9*MK>uDj_`kdY+YVRYBMFq3#!Ic6W5Sl)ox?S}i$ zlvY6B%37baRw=qn^6UIEE5s5GeFX78ejY;97rSHi4e!Jof;cg@P@B)6%!NEabAb7S z?pza!U%1i%-3`&(ebJR%J;d1H;JcNz$rE_Ww}O1vz4A1%e3D|^J5&#IMl;xX$Q|e3 zDY}Sw<8kmO9IAC?ey;%emTc}&kCA(@`HFx18C@I5_XGV$JM+jbm1Gl!e@N)VT?o!m a?OHWO*)4}|jhD0F&)0K~$8mSb&;J96SVIi} diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_393x852-17-5-3x.png similarity index 95% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_393x852-17-5-3x.png index 87646c61f489b5779bc43527812ff344bd8b0386..00ac417cb789479d6b9821f86439f7ccae0cd1f8 100644 GIT binary patch delta 94 zcmccS_sDO8p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%OVj|0W|(jU7wp<)`8s_bpKa05vxbA^-pY diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c364c2709f172355082d8965f07c3d962bba3f1b GIT binary patch literal 5413 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 delta 82 zcmdn!ztn$%p?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_kC6a02gx(5dZ)H diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_RTL_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centeredWithPositiveOffset_RTL_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..19e8df0812f781f8c0f8d7a9c096a842b3b085a5 GIT binary patch literal 5296 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 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_LTR_390x844-14-4-3x.png deleted file mode 100644 index 9fb7f891cf4206ec1b0ef30c8974085153610735..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9601 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_LTR_393x852-17-5-3x.png similarity index 94% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_LTR_393x852-17-5-3x.png index 9fb7f891cf4206ec1b0ef30c8974085153610735..025f10bd8b339a578a4cd79388597de9cdc68f7c 100644 GIT binary patch delta 94 zcmZql?)9Ev=-rYU;hE;^%b>-;z`()4$|%IZ3}i6^Ap@fn11p%#z~IFw4QB^2YCzR6 aF)*}eGO$3^L`^KPWARMeqr7p`c@+RlP7MwK delta 82 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 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_RTL_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_RTL_393x852-17-5-3x.png similarity index 94% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_RTL_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.centered_RTL_393x852-17-5-3x.png index 9fb7f891cf4206ec1b0ef30c8974085153610735..025f10bd8b339a578a4cd79388597de9cdc68f7c 100644 GIT binary patch delta 94 zcmZql?)9Ev=-rYU;hE;^%b>-;z`()4$|%IZ3}i6^Ap@fn11p%#z~IFw4QB^2YCzR6 aF)*}eGO$3^L`^KPWARMeqr7p`c@+RlP7MwK delta 82 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 a#K6#=$-n|t6E(5Gj>R)=kMhP%pA-OJJ`H04 delta 82 zcmdnsyu^8ep?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_kB_T01rtG@Bjb+ diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe04761c62c14cf2fda496d608f8b16c52ee9f0c GIT binary patch literal 4532 zcmeHJeNkm9Q`kAIgOxh2ZfgneV0sNqq!o3;z zu?k_eQ+66KM~|cJELG_W2dmtQGdMWGqHZ8XLW4yFB*+e;0@-_WZ-AZc5C7WEcDOnB zzHgrQeV^y|e7?^ybz;mCfu{h1pe3;zqmm&Am4SIH_6qolbY-4kfD4jiBB45ybO`(@ z-I)@bm5>0v4(1rdg_%k<)G>!z>0|NwP8u9vvvF$y1T9@jzi@1_uN4rbIZ;Vlzz77|pG@$T zgO?t`%iq~#e7F~kfw55$TMFTk?)19tYn`L|8*B-+j}ccHyh?a;Z0XFK;-sb+V@AdF zMBA?+1d|btPuOeLiCtc8^8|XJpTFZh&x9jVF6&Tl#}-K9h(*HxF*xKj@?@g> zOi7>_;;ATDs3Fk(!Ya~bm#=}q>YEfTu5mO?YNnido=1}6fMKw|cti~8^={05g9%nD zkaD1U`dgB$lwaMn^N?2c;}&a94j@Ma`^c+L6nxL{zZ0DHO0?m(1oB$@qifD_Zv-c@!qQ*H7jvMwR znvMa0fWLZ>@Ng%i5y4T#ADxtMTpVCzwrdP|Q(p!FvO(|ik?Ce|9<30>dn8q$KDRdF zuuInd^usGpvNAn{LBi7~qXGFNrM5FT*q<=~UX5m@aXk5Q*|qbl+b>-IkddiqA#e2G z?gYW0&5u@x_zzxZ4Dd+-<$N6Xfw@stcgs9ZrsOj+vsAZKMcX_9S#82L4G!oRjZQm> z{BIgvl!|92?D%V%BfJRI7HW<#oWQ@)1__q5H=K*(jq2L_q&)tIZ$Zp){=@AzAvHSP@0RbSex*6Swv+2Aga9eQ4W zd6Xlr%vihps_zf)$EuXsH|#-pSGZ?|=1S@s5N+^yeJCS@K#kJYKtp=5_~)r(Ja zr)O)n`!X>O@#;b=*UfbI9sqUp;xgSZIXtt(i_MEs%jZwy{Qm{o5c=87s2>CE$KP#n zSb#RyrP}bzJ&8CRe8A#O?M9_ZVfJ)SJA?M{emQn30f#r^(<3G(Va!w@?~?INaKJo~ z*H-Lz|Mjl=9)$zfhhD8Uvm?2oFn6GYss~u*} z5N7IXftjg6%gLEW{<{TkTBV6qC3K++T28f92S~C<&)dP7559!ap6w`j+SmKYUKs7+ zTk=m{&_3_edanJ>9wBKbUP9S5y=w|34cQDjSm>)-=!DW+^}N)pEb_NsMp^HnE8gF% zC}HihexV=w<1+hB9aZlCgPotX;boNVi5{~ZbYklosGGAR_~hTS5B7jkXv_`cJUNYe ztSGW8Yu2*L%9@Gk=i{%=UEsJkIWm6d@mFqYToB&=nX6+#K~j_O-(Ktlbg{^B+nU|y zHdk;>rQ1CYMKM=7Ip*56-uzzk9y-~yjvHI*Q@O6@9uuM51Kf=)x zRJbtF4WHOwykXP}cd&_CI14|A6J zLJ%*LZk|T(eUsO#5Jg2iIQ^y9^(WR@!vkf?<#j)GYU%82p6ciew_zd~PCziixhg)I zYCFDmwe=T$V{NuQH5=?yuw2is{OJPY&4|Rp{4`DLLgLMG&_YdKd-mrq zg0lQrH1piWB8E3XWgxXZXInTGpx|T#==V0CF7#yNT0cOHFV0#x_R1Q`0xyg=?>n@w zirS3B?~asBe2|*c9?vWl{Y3M1cu1ld^eu9k9XA1yMowZw%n`nnE3P!Yt?DZd9}i-6 zl5i`Y#u)i}(4cTj8Es_NDr#u*p@KXM8pJNAK}mCG)$dtF-!d1L?9)@Rbj5O5OUKve z>V$48fn27$qPaR#{Cy51mkJO_$8;5LDv%%o?B824p!i&%l2!C`YJB#giabFVFo)-s zyQzAYd--X^t&&PhafKV}P#{|boD-SuUdDpP395-eF4bI^ap2-$rQkA9yGJ`bB9dKL zZ6MD3?+Is(4vu=mTwn3w>o@JIQ6k{2tvLTO2e-{IYcM{F!0kqxY^&`ml~(gkm?u oqE&EWF;+m9EN0OELtU}Ku0h64UD`$pT)a^1hQz44$TaOg0N71ma{vGU literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_390x844-14-4-3x.png deleted file mode 100644 index 9d51fe3d180e79b09086264589f482b5a3ad84c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8969 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 EA3su3;s5{u diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_393x852-17-5-3x.png similarity index 95% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_393x852-17-5-3x.png index 9d51fe3d180e79b09086264589f482b5a3ad84c2..8fe994aa241db71760a086ddfc679371620120b5 100644 GIT binary patch delta 94 zcmeBlo9Z^f(7Poy!ZXd+mqCkxfq{d8l~IU+8OUM;LIy@D239befx(MW8qN-4)PSmC aVqj>`WMF}+iJDko$Ksi`M|tC>a3ugtlnj~x delta 82 zcmbR0*6B9E(7qxy!ZXd+mqCkxfq{d8g;9!u706-)Vmn4@INOa;gMk?=&cwjbp2@%h TRpU3Y#*U@)@>B7R`@)p~{?H94 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.inLayoutRect_centered_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ce39dc736773058d8407b979a4f74d1fee336482 GIT binary patch literal 4644 zcmeHJX;>3k7Okozk^r_56cA{-z_5r5v>Pa>B?MVo0^-K1(FSQGVBCYyP^Bm!iW&V} zS`Z?N5gj9<4Y;6DTibR+1xMWDLgR|T73@g*y;ni!$NZX~GlsA7ikElqJ@?#mZ&g90 zB)F%!y*Y+qJwrppQ5eP{!TmXY5AZEqx6&Rg_`;~*08De)@hSKxHz_)FPIx%x3GVqA z54XZN@Cf+BaC?l0?lCM3cldlCg?pIJ5Ez!1f^kh}V!;YON^k*d)5=ldUp%Ua?$aDn z#p%As&Ox(@CD$N0fjlH;A%@ww!V3?L66wLFV~RLp3Rpov^hpHY9^is2xCC0q%oBXD zt_c;7pQ6BD+$@whhFbC>yNqgUDj-bgv@7%3tj!VA_R3W13yaSOX?~rTV{oBp3@5mJ zAxY6%7p6AodGxB!8{j6#lHB^`1jZy0J(NjJHveX(#mdc)IcpZ}CdFbVq&b^>!c9wZ z+5eLZe=9}i374)Um05Nh6TI~I4~QL#lwtyD)-PH$t?OK^<}$L4ahQHS7*Rmu;$A|9$Q0y1 zF{2!u_?)RTGi(8B1WEb;>G)j9+W8Mt_V%AVs-{B3cJ5NFU-Hv%cXR&D0LYl`H@|ri z5VCiI78|;)nW*5gxF&yGFt8MgaEZW{Q8YADVLspd?Q484nYye_1a-k!0ZS{g&m0uh?`j2&FGHx1$2= z@00Q(ZILqVlH$oI^}!b`lkv9RbiB_S0nx&>iP`vY@ zx6BwbVilvXYo7H+w>zs4xpefBVxzk9)0C7(U*BJ!95*=vDimWb10`Hm&wG`|t>)?5 z-W^KucYxyoC&mHsWK->~gj%qum*M97oY0J4_)pe;)?9zGhh7|M#0YQX5w?60*BaaIndm+p5Dn(VP00h58ImMyOx#B3z) za&l@u?f1`2g`&n78E__ZFLxrWS!fe|XYUswXi1=XlZwK&bK5LfXhzY`>yfu6P^G4E zfqtZZFI9uxt1q3|>mmms&`H5qIhmK5%013KV%8=5%Q)Kh1dF-|1S(ReH@q}akV-kY zp*TiBLDxxr8CTNxiBreHm&T^C2fdI`^lNDRaX;4vp~n!Ek6Ph3pbQ~6CX!+q1r2$E zCLyvpG2zB;7Td+%-t@)!@1_xzY@D5Qzc~Y+jTmzV063%D)W0fFm8ol}F@8Hn8jiv! zK}FZMh?>Sr%h_}af?r-o>5%m_F8b7afKvOM!(+YNqxbvL_IlXUTf|+k*Tiu7-c;C^>Q>wCR2rsLkUA zWu>n2XJe|6{(L9vyuhoO(fCledj^J?Wx)5cmp3LYupTcIkH2rc_9s>&SR1$?<%6r? zK~Vk1G0Q90MV#OZ6@Cm@1^z?yOU#-r*fulrvka}t*JT~xSEtlOA;HJR<2WD5_n!RB2Cx0IAG=mZS7JC6EpJj%3dB87Jj zo4bPVKSUP>t=c!Vgd#y#*+x?D{q#M!$N44kpgOt>_-iw^KiBg5D1BxWO@D4)7iI0+ z`$_g>kvnXTf#x3M^gCOZ9-g2s!@k zmdrHxLp~t!>Y2iDR)}yQJFDnHO_$ht3c(5cMpEU4wy1^J-~kjKv%5I-vkB>`qQ$me zBT@daahR1fQ61^C0Tu(9P*W(pV8{%a>0hvKf%6i#r@M6@z?j`MVU=*KnLQ5;Z2(yT zcPD-^nS}F1M-&H8mm$xC00}FP{PM-5oG=er)IJ-@5P6Q~dyp23hkY>-gMvPJc!nKq z(69;+X7g+g8ePcbDI D>V=KD literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_393x852-17-5-3x.png similarity index 95% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_393x852-17-5-3x.png index 6d9885b2f2924501555a7f5e496f91ce27a1e874..eedfaea0abd3cd7cd73d7fd3bde675ddb2cab6fb 100644 GIT binary patch delta 94 zcmccQa?fRgp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%3lsr>zYTBz delta 82 zcmccTa>-?ap?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_bpHa04!n+{Qv*} diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a473b58e303d2da70f3f27a56f438356bbf107ce GIT binary patch literal 4384 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfx$_rX>J7X}9Qo1QL?Ar*{ot~=%>If^hlysOV-s@}6%&P8v@&2#?K zcj^BAnDbw*|M_Kmws!}fTVJTl|7Xv{!XcpG&~U(BxMFSVC;yLsVr+I6RNiNVOYCsi zFQ|E|Yn%0i_XjE-SlBT_bR1v^oK_r}c6s|mONa>!jfITNE+^kj&slb}#HK)IJ_AH$ zLW9QXojRLe-aa7%vuj5Ktz ztIp0eljWB=uI>O)DWPzxNbhvcFEgWds2v7+KwED9opjb@b{~7+V_~3&Kr%c6sg~1I z&1$7*Iz#P{5C_`wrtW0gEZ^hI$3Jp{ybe^!*0E{MX`|Wude10A?dai_Q1B|-pJIG= z+2h8?KcHR&dNA@_>P+AJZqJ}PS&p&t2&nFk-!wDr^2Y;(HBc`CJ*e}1)0t)Y%EjQ| z1={f#Xv?I#`Zs+xzZ?z5(O?86l+n~UJTvtIJBO0M;h7~)YqKx^7Hndm+mM8^k2@Mho z>C?})!-^Lc4haRej&Nx41vKn|&jAKQhjV(f`32$nfaVIUhZcoE!2>fJ7?T?2#G1(~ z!S#X6jbnrszzqzI#*EBI7%X?^*tx*#Ze*ORb#~&R2zemm; z9(51wIscq&J^!z>|9xkF{eRs*h_vxTt+8J|khO#1=Q92~yWy#^W_km|PvsBweaqhe zy0eED7JUw}4hXIjG@$cp8dr8{{I|*wmQ@@o`tpbR&a7m*l(xBy_&P})}fixq2&fRy`+RL z*w+A0F;`evPQ3b9{mAd(HREjV^f+kzLy});<1eOJuml(&ETFLZ`1|PXqQd#n(H5VD zprzg`P(oS5bw&KbA82xFoYlY(XVfJFQ!z&#%#)QwdAW;5Z3meZ`#tOS=xf4h?JM_UGRX^VyS2jP{RJ+wCcn%KELu#nybDic;SePuPVhq+x%!6B^w{`Nd= zwR_u$v3}l;;2mGj5R*!NU&}pu(3zu_kpBG6?D!IRF?Tm`s#8^L?NJkSX;i8OQ biS!5iuh87XtUkg|8Gyjk)z4*}Q$iB}lS?!0 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_RTL_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_RTL_375x812-13-7-3x.png deleted file mode 100644 index 522f182309b879896413993b3b5ae9452b8834ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9868 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 delta 82 zcmbQ?+v7XI(7qxy!ZXd+mqCkxfq{d8g;9!u706-)Vmn4@INOa;gMk?=&cwjbp2@%h URpU3Y#*U@)@>B7R`);WM00u4%!2kdN diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_RTL_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_RTL_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d0b5c6d9955e0c5b0a72f6a1ab8821fb5e474c2 GIT binary patch literal 4837 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfxmt$xL#w?Mkm)5S5Qg7MAugIzL_JS+$P{hyzA`*~$$kd&etTTQ0M zRUuW~ne*4%GqG?8C^$46$QS=nvoHR?#Er)9d{h4a|M30RA3>lv10xel-Oh#wKl$dx z?D%uL@l$+#(og#f7BFq~;sRS(bFC+oFQ{qY@{qg&m3XkA;ls?s>e6OUCxaP^fwK;bfcd&n2Q0j8+svo#e=<7=2jd*re@F=qEZwV_q!n*l7r)HRZ(_P6X4(%a@D&^qR2J|&G1`!5{A)&kyXXY= zuKAGi8d#WrV=;5uR{reL<$ElwOLVj3Amux-it=!fJdv7kIPHs}JioRAzlc4og5r3? znbVT<{>;+ldpWs0qOaJ%T|BYDXu@frXI>=R$%Q${Y1An}>JScr8^Sj@Zr+>e?O!b{ zGGW__O1O)a8B-OeH}cNDc)Z4DO@mFq9~VfKA)v59eS_epy~fk$eN)p=$PN4qcd;AO zDF;1fX|u)sKPw^_D;NCegnQFJK{=&5UC;KdZ-B$CMbF?a?qQkI7{g|k<0k+4;|8Wr z4j+Z#-kf*9?ZmfpF;%x_FKF1}dKOyiaR^9oYB2BQ$+^*E_v~>Z>yySu>Tqw`!Xn0e zG-3ueVjkK9+hPCzH?#c71~wvnL5;At*8{U+0(o2x-u%Bz{Ue`_#WSuDzMsNXJD>8c zu#dNgCp;E0&KkS>>-Sglyvq3V|LZSBSW;Ek;O_AAMzCF7o%q-D@@v-o@B9W&M=?SH z4k8o0E5C=q6T@*Pt`4S87EN~ku!LLS>A)E1p!f7{G$*L42PIB9ZVd&l6OTE5*}&7C zDkG~4+Uqn*}pFVdsG- zKTNzA^lfGe>b?c5St9fvEKxHMT=96#sIjAgFq#rZvjc~~NG%gS+iO0|J$!n{{N2D7 O27{-opUXO@geCw>oew+! literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_LTR_393x852-17-5-3x.png similarity index 94% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_LTR_393x852-17-5-3x.png index 3177305e0856a5b783f1d10676be2b7748c295a9..57920f127e51a3d464e102b4218634fb4522f28b 100644 GIT binary patch delta 94 zcmaFm^v!94p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%I}`wr?hUg5 delta 82 zcmez7^vY?1p?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_w7&s06KvVKmY&$ diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..90146faf7f257a508e7beeb97085c1ac088f0a8c GIT binary patch literal 4298 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfzGu=K~nHbA=H)5S5Qg7M9D$1G<<0anMm|1a@bHr!t|vsKeMjHx!L zr{!1ez285Q6WI2hIdHt6fsu)YLqNe{fk=hiym+~JhkR!IJKrD=6>V_PQgCQ#yAWYK zLC$=(pn^jKSUtytuRpe^`P~r&YXym|Y+w+SR7yVUP<1EA4WdXuLBZkLg2%;NSn{>QC6Ox#}zuDv~x>cjLmL_j})e z{%*}SUmlTW4m0`x_%Zjx$N&33IKyg3hlEH6hMya`FMQhYvKLl=H#9IPHQZoA=rm_R5?}*|!Zx@)4Gz8z41x|>hnES!s$2$; zsT+|}aTXI(2SbpwSu3a!0nrIGwL=%i5l{#a7I0vhaBG963*2CksX2^rGaF}t9Dk+F z7df+ZFeGs!%)G(^bo>&t94>epL;z^2Kr}q-I4n?806KnaVsOW3kU&Frf!c?A&!-=V zU0^m75pF(Q!1#$!G1$pE3m)&FlyLF$?>fzhznd`BdSFvq{dHa8`_;s$9W{3}d?9&q nG#p05VYJ)<)w<|q>L13p!MTSESEpA38w?Ddu6{1-oD!MF%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fHz>dh!Ny$LE#nZ(xq=NCyEyu1W4kFHu_y1qgyRP`pX-~$CwTjGFRW!fs z`Ntuk;LyOp$ixC-EYSR5^ZvCwv*d)vMxL7g(La?Dat#cPOAZ`Z9C~nB$`nS)AL$N_ zQ}-;DnFZ4dGGl%NQ+FfJi31*NA`yAI5F;UGhp@WIt?M%5mXVym$Qt%_QBfYUtj2~l z`6&);Zbl0Z6r~CxyGP65Q^D4K8~06Qlnh7+)z^BihUB0IrqjRN*isTyn7MSq#h_jQ z+qa5InLqrs^lRx+>k#3!U^FmClgenm1D0~58DTUdjAn$&Z! ztWF+q46B`l+;jyte>=G5Oc7`EaLc%Oe{!-gQY#eHq-1B}(&1h+nMWq&syZiflNs17 zUU9&)GO;nWQS`5^r5SQF6xgH&T6kd70X!CpMTkX=S~wb{$o;U(F@2>16WO?m%{x$fgHJ93$xc%naor#63@oLK{Rm6xSxK#erFoB`b z=s@Uw7; zFufB(E0z<~0&MQ43Md#z2OdPLLmD0d{o-^W7K^)<@8)4*NmJIEf!2cvun|xQ;Mn1f z7Eg^c9X^&!cWgM2!| zOk+BFIhKu)X|tfH4_Z)a$Z-g0u-s8a^Wg!X1r@taD>x*WEowq*fHNLtW@Kt@*xiEW z!x@|+{^g^QG8!q!-Q&@mGMZCR3#rlKYqU-oty55H;lW(d-)H^DP|G#t{`oz&Dxd`g Mp00i_>zopr07b+AbpQYW diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_RTL_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_RTL_390x844-14-4-3x.png deleted file mode 100644 index 4d7c39e57d848a5aff88b1c91e34ac459b4256af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8498 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz^KE)1{Arx*DC->F%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fHz>dh!Ny$LE#nZ(xq=NCyEyu1W4kFHu_y1qgyRP`pX-~$CwTjGFRW!fs z`Ntuk;LyOp$ixC-EYSR5^ZvCwv*d)vMxL7g(La?Dat#cPOAZ`Z9C~nB$`nS)AL$N_ zQ}-;DnFZ4dGGl%NQ+FfJi31*NA`yAI5F;UGhp@WIt?M%5mXVym$Qt%_QBfYUtj2~l z`6&);Zbl0Z6r~CxyGP65Q^D4K8~06Qlnh7+)z^BihUB0IrqjRN*isTyn7MSq#h_jQ z+qa5InLqrs^lRx+>k#3!U^FmClgenm1D0~58DTUdjAn$&Z! ztWF+q46B`l+;jyte>=G5Oc7`EaLc%Oe{!-gQY#eHq-1B}(&1h+nMWq&syZiflNs17 zUU9&)GO;nWQS`5^r5SQF6xgH&T6kd70X!CpMTkX=S~wb{$o;U(F@2>16WO?m%{x$fgHJ93$xc%naor#63@oLK{Rm6xSxK#erFoB`b z=s@Uw7; zFufB(E0z<~0&MQ43Md#z2OdPLLmD0d{o-^W7K^)<@8)4*NmJIEf!2cvun|xQ;Mn1f z7Eg^c9X^&!cWgM2!| zOk+BFIhKu)X|tfH4_Z)a$Z-g0u-s8a^Wg!X1r@taD>x*WEowq*fHNLtW@Kt@*xiEW z!x@|+{^g^QG8!q!-Q&@mGMZCR3#rlKYqU-oty55H;lW(d-)H^DP|G#t{`oz&Dxd`g Mp00i_>zopr07b+AbpQYW diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_RTL_393x852-17-5-3x.png similarity index 94% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_RTL_393x852-17-5-3x.png index 4d7c39e57d848a5aff88b1c91e34ac459b4256af..8f182d86af698a45ac830ea049e1c1e8d6b196a5 100644 GIT binary patch delta 94 zcmdnww9jdRp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%4GI8f&J7Cy delta 82 zcmdnzw8?3Lp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_cbU002ZMQm;e9( diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_RTL_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_RTL_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9e3644b673a1e3af7b3edcc5f5d52551b714a60e GIT binary patch literal 4257 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfyh<^9%^1wdNB)5S5Qg7M8w$E@T)0cMB$|1a5}yLYS8Z-bV>?et|A z@}s`I{^;Joz{teHA)s(Uv|{hPD8+xXZPsG#9P-+-WA)~otv}9o6sM*?}C$Rg#eVHZutaASqgGy#_ zdHI=%tAoktzaRrNkT?W(2nRTbOxV5Urz*7gU}&slWOZSj`JaOUs)>c;4yT3!*NNC$ ze}rJ=`GGy4tahfJ1z15q&3eZoBEb4YFSo7}S{FDZ#5phqIy|!n)=)52$$jm>~{w<XX#meL6~38 zaD!a=$DILYw8H~GkOSUbdNv(qKg%;#pes}UDKo%~Rwz&hIiNiAvp3w8qrrqdnEtG1 z`UGss{Qn>Kd>ODA!(Iex8@vU!42}fwxHtk^27H!HX8f0fId9eqXx+M?bpCZaBEmKt z_`GNRett=w^s`y;kYX>Gc@{uj6HcMO#m(g z(sLvno;n;9gh9q`+8_x}u@0k78APFCpz>i)9cK(n+o60>cnK2sAjo#F>W43arW0W) zE5XxYsak<>gxCI9cwtb~82$6hEC;zjW=>ebn#LlM#bn;N^vms5m`(-p9aH_+b3PF? zod6R88n$rMu+cCZO&X)w2~;M~r_`vAeZX(_IQMYlnqX02FP*{D)z4*}Q$iB}7v;V} literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_390x844-14-4-3x.png deleted file mode 100644 index b1550460e5968c49762df4c2e5f6cf9b1f5d3248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8022 zcmeHMeN0nV6o0R;ePci;CR?qoj=IIgjk*;#kxT;*gHlZVh*9$JV|!paDGM+sDjVQl zU7T}HAX&i07-=&6h#)D7tJCS8E=Zyquo}N$h*@K5H$M=K2Ij}kYiUd0X-T$Z|7@?x zd-uNk?z!i8?m72&?|I$2XhD`bRu@YUggV=txtJi74uT+!F*LNCKQV6+6y(~)S+j}e zjtO3PD6_EH@6Df2yax3cLP_cfmDmNYG*Ta|&n2f2l&@Vu5L>K-a=6a|D8=7pxI`I$ zN!iKa-q2=O1bQnSb}CROjiT7r^Vi2g@$3iY+_eNTDOJ44Id#b#G)}N)E?fd7DD?g6 z;64Q|v4m^Pq0;VkZYVcqXJ#xZBX4%M6j2!o%2Pk5dp*fpGxU?02X73`>tG)CR&Jcm z@g%L4-1h5^{+@SxAnQkhiZ==2xBeNNFpyaAgsR4JX1$3cchZGcXX~31F@Yz~@fIN; zYje@@EWg*b?8?ELNEs(gUoT)t<9HX(ocGb;Pr@5gEl9iUeL&pxa;D zd$uFoCcsJ?sXB67bdxO3L$XP-m*l|nQ-!>i{G=3My#EP32uatnNY(R;7|G36Oj0=y zi&pIA6|qz7;kW)+t;2*QU;y(t6St?neGQU;0f4`;7E#j{?|nq63nod@=ggsc>h z4Sh6WUpOcqMo!3=8X^v1SSj$e8((aHRbq(vsC8&%Q>4=@dqoZ~d96rj>_5a{8%j+v&5|X4!2xO8%kS zE(>D_;^|ZCE0s__*CuA-w;&G}m;~z7ogchk9WbP5^;PS>?)$vI{7y$Ar7mD7T^CQk zWhX;bTd|mz?hbDpe$N~O57%|x9`F`@zdb^aMqg-z#u_i!S&kV9C26nRmYm^NbLO{epXN7e)u{=dqSZb8#a@ zWU|5t9w*feKuW6zZ@ylC^-NEMm~a%14!HQpZ-Z5BEOrg4E`_f%xojkl^R#OOgNB8m ze=1lX^+pHmXVE6?8lFDpA|ws!@7GKHI4c{1totg4qs z4DKJv#92f70*Vb&IbmLUwL2V*_%@!^jRfcyFvn>fu112TcKClcCGAE(eUfO#elO5z0L~5F7CfYpB?1-Hu-fgJXfPQB2q5Q7Wg?qehpR(Q)|+STdob# zNPt-$RiOFAu>BREBJ=F9w?q-RboI%KtRToh#gSm*#zxw7 z8mgBY%T8tl`UOFBX`%|eU-C&a-UHbftpjgUF%2qL`&7-WKCHU{HoPbTN1W-GFj^x} zxMXh^C&s1lx;1gTOCrTmRDtfE`aiI84Sb$N@j@!Ba3J5N>YRZEx}yu+y4AT3qm6^V zw@|#m_6*V8w#lQ%0!7gUi_@% diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_393x852-17-5-3x.png similarity index 83% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_375x812-13-7-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_393x852-17-5-3x.png index b1550460e5968c49762df4c2e5f6cf9b1f5d3248..c803f86b05cf65c5c24ec88dd801f989152534bd 100644 GIT binary patch delta 94 zcmca+_sDL7p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%OXL85Tn%ji delta 82 zcmaE4cg=2sp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_brhF04pyI`Tzg` diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.nonZeroMargin_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bc82ba3d50c257f2dd17b546cbf55e1dba4acf GIT binary patch literal 3935 zcmeHKeN0vhm>?AaN4H8|^k=fY3}vjmD=btZc&>3CIG8 z?@gALAX#0OZOBL}>M{+1trKNo8yzl7l@FOg6c(dHnE^q~NKg~Zysztf_hR~oiHZM6 z$-DR5^UnF*-#Pd8oYGiSxI02`(gOe@a&s(J04Ns8ejSZQ!|`J#G{GwC?rhLGym1;W z8p=v@%L@v?RwU~{7>opzY=Zs(G=Z>y3_u>-pvqPlAGFZ`;H&`Jpv^OAmOpOvAn)Kz zc_2pgXcTLT^-zio{IXmA*)L>r;V46hJlYAjq&J_ zXY{O)UVr#|5zPg;mK}R*;q3UuN@|BedwnQt`p0dJH;tS5g-p}b;Js_TpZC!W=L1x5 zC^Gg;u0HG=R2AseYZUEzUR>1N#7e&02c)D=?#|qqxvpvj(a6#|1qnH}KuY@&)7s>0 zTA^x1_#!eRwzSiX;p>z`$uY?>SWCN*89~b(&GEv(h0C=)wOEUGbHRRfd!IsT^3LQk zspU-l{Z4g>Sz%E{JX8kH7C}sFyV@>l^zokH&?Um760z3X!x(pBx0Ceqffq0clDrx^ z=hTE5gXrT0ky8)@Y8#~D_RPg9JIn4IZzQHHf&Apc6y`wQ!G6brD#EkOmjjZj!sx4#)u%Eek#?TBt{i9M5pHQ4nEp@H6&Rwv$8cqqhC3S}H@eyL$lFNK}-i*|(?G-o5>7 zIN|GHjO{ zTHz%#Orgfj>&h<0SC6%*YGEApg1Hpjdr$#q>l{ap{gJ*;qecK}Q>YMPo4mG@PyU4a z)P+MnaIq#Dr$b;<-I*U=>9221fNBJQY7P~Gd*^s!UR!m!8d+(&AeQzLA#sN2-%$_0 zf4{Z&(enV%^KxUIQ`+i4*7Tpp+qdm1c3*X7XPB@3_VZ%uh)Ab-V1$FGOh|kSrG&~4 zh>F&4@~@Q7>xV%b)(e+qeqS!}_0nGRK*Hed`aKvg%_E%)Z7HXDd({|5D1AxJ%;QUZ zJEU3p*wVj^4Dt(*@>GPh3}k2cEP-%p1IKqfr^FWUWe>6$DBD+tKGw?dDnU9-Aua92 z=}jk6_hSTUO1?Aua3WCJ#M3) z7P59kXJnf%C8!2k-J*teF@%X<%edc|h{YIM#t;#Nlil3mMmD27Ha9S~{|xIL9^-W|OG-Y{qEi*3-n< zmZDz=#1dU*yR&5dnO6z6Bj|oFQ~BRzCGR`xs}lF7`sS!x=zmO*yR*>JnJpas3liS7 A5&!@I literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_393x852-17-5-3x.png similarity index 95% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_393x852-17-5-3x.png index 522f182309b879896413993b3b5ae9452b8834ef..4605da851144328c64f370357697c9ed3f67fda0 100644 GIT binary patch delta 94 zcmeD2o#8vd(7Poy!ZXd+mqCkxfq{d8l~IU+8OUM;LIy@D239befx(MW8qN-4)PSmC aVqj>`WMF}+iJDko$Ksi`M|tC>TdDw5(+xBL delta 82 zcmbQ?+v7XI(7qxy!ZXd+mqCkxfq{d8g;9!u706-)Vmn4@INOa;gMk?=&cwjbp2@%h URpU3Y#*U@)@>B7R`);WM00u4%!2kdN diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d0b5c6d9955e0c5b0a72f6a1ab8821fb5e474c2 GIT binary patch literal 4837 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfxmt$xL#w?Mkm)5S5Qg7MAugIzL_JS+$P{hyzA`*~$$kd&etTTQ0M zRUuW~ne*4%GqG?8C^$46$QS=nvoHR?#Er)9d{h4a|M30RA3>lv10xel-Oh#wKl$dx z?D%uL@l$+#(og#f7BFq~;sRS(bFC+oFQ{qY@{qg&m3XkA;ls?s>e6OUCxaP^fwK;bfcd&n2Q0j8+svo#e=<7=2jd*re@F=qEZwV_q!n*l7r)HRZ(_P6X4(%a@D&^qR2J|&G1`!5{A)&kyXXY= zuKAGi8d#WrV=;5uR{reL<$ElwOLVj3Amux-it=!fJdv7kIPHs}JioRAzlc4og5r3? znbVT<{>;+ldpWs0qOaJ%T|BYDXu@frXI>=R$%Q${Y1An}>JScr8^Sj@Zr+>e?O!b{ zGGW__O1O)a8B-OeH}cNDc)Z4DO@mFq9~VfKA)v59eS_epy~fk$eN)p=$PN4qcd;AO zDF;1fX|u)sKPw^_D;NCegnQFJK{=&5UC;KdZ-B$CMbF?a?qQkI7{g|k<0k+4;|8Wr z4j+Z#-kf*9?ZmfpF;%x_FKF1}dKOyiaR^9oYB2BQ$+^*E_v~>Z>yySu>Tqw`!Xn0e zG-3ueVjkK9+hPCzH?#c71~wvnL5;At*8{U+0(o2x-u%Bz{Ue`_#WSuDzMsNXJD>8c zu#dNgCp;E0&KkS>>-Sglyvq3V|LZSBSW;Ek;O_AAMzCF7o%q-D@@v-o@B9W&M=?SH z4k8o0E5C=q6T@*Pt`4S87EN~ku!LLS>A)E1p!f7{G$*L42PIB9ZVd&l6OTE5*}&7C zDkG~4+Uqn*}pFVdsG- zKTNzA^lfGe>b?c5St9fvEKxHMT=96#sIjAgFq#rZvjc~~NG%gS+iO0|J$!n{{N2D7 O27{-opUXO@geCw>oew+! literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_375x812-13-7-3x.png deleted file mode 100644 index 6d9885b2f2924501555a7f5e496f91ce27a1e874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8786 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz^KE)1{Arx*DC->F%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fH!1G0o_kf-f*zD=z7*fIb=0;$iw4ng2;Gf%z;BZAM{2 z`+KUSM}KCwFp{wi4Gmk18o$j;>X&?xc3^uG%spTOf*2XSMP4josQ#vHJVEZVm^#8a zKzYXOr%Z2ckIETeINOlV3iSuX;w4N>(=;x)GJbm#o~B^COxF)04D}DwwNtFOs=I8{ z7R+Y6&js;6RDlO8i%#HzZl*Uk*Pn5y@`;{<;vSYYQ@OW%7pXquV9vZx6dZ0agC}rt zL@aU;XT7mGerDsB8QUyS+`|!}EuQgS^V^KZJhmEbv~U&J;L@nawIO}K5%WvK+(H!h z2y6(`yKpb~jUn@0o*!Yz@zLO*rI66c6f2T&zAlyRQu3`wDDF{6SR1oo@A4bTY`Y{s ztVIrRhQ<(w14693G!D%BI~tLr5jmP8M|0$8(K=eRj@FT|x*XWb7_B2&Mtoz(L2SdF zqq}$i$lvB)J{h&O3rrxwjEt|{ADFYx{r|S!`lhO!7gFj0wf#U%(1x$8nc{ZM)JK*@PQftwlTa$&#mu&g-_3w-4uV4SZ9nbdqexv*TbL&)5Mgo{v z{slZxSKj+GvYq>RXX5{Q_CKh;V`Q4I{^8C3KTVS#d=cNzJpX&=FL6PXPB9}B)3yEs z@hu|h`wG8$qKr@gOX&IPpi)_0^n=}d;jj8iXqL0+FnS-@#Ex3bFf?v~6xT2PuN0t_ ze9Ze1_k;;!A)S19h8=xhZ=C62&79etH*kQ0!PC{x JWt~$(695ab0qXz& diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_390x844-14-4-3x.png deleted file mode 100644 index 6d9885b2f2924501555a7f5e496f91ce27a1e874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8786 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz^KE)1{Arx*DC->F%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fH!1G0o_kf-f*zD=z7*fIb=0;$iw4ng2;Gf%z;BZAM{2 z`+KUSM}KCwFp{wi4Gmk18o$j;>X&?xc3^uG%spTOf*2XSMP4josQ#vHJVEZVm^#8a zKzYXOr%Z2ckIETeINOlV3iSuX;w4N>(=;x)GJbm#o~B^COxF)04D}DwwNtFOs=I8{ z7R+Y6&js;6RDlO8i%#HzZl*Uk*Pn5y@`;{<;vSYYQ@OW%7pXquV9vZx6dZ0agC}rt zL@aU;XT7mGerDsB8QUyS+`|!}EuQgS^V^KZJhmEbv~U&J;L@nawIO}K5%WvK+(H!h z2y6(`yKpb~jUn@0o*!Yz@zLO*rI66c6f2T&zAlyRQu3`wDDF{6SR1oo@A4bTY`Y{s ztVIrRhQ<(w14693G!D%BI~tLr5jmP8M|0$8(K=eRj@FT|x*XWb7_B2&Mtoz(L2SdF zqq}$i$lvB)J{h&O3rrxwjEt|{ADFYx{r|S!`lhO!7gFj0wf#U%(1x$8nc{ZM)JK*@PQftwlTa$&#mu&g-_3w-4uV4SZ9nbdqexv*TbL&)5Mgo{v z{slZxSKj+GvYq>RXX5{Q_CKh;V`Q4I{^8C3KTVS#d=cNzJpX&=FL6PXPB9}B)3yEs z@hu|h`wG8$qKr@gOX&IPpi)_0^n=}d;jj8iXqL0+FnS-@#Ex3bFf?v~6xT2PuN0t_ ze9Ze1_k;;!A)S19h8=xhZ=C62&79etH*kQ0!PC{x JWt~$(695ab0qXz& diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_393x852-17-5-3x.png similarity index 95% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leadingWithPositiveInset_LTR_390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_393x852-17-5-3x.png index 6d9885b2f2924501555a7f5e496f91ce27a1e874..eedfaea0abd3cd7cd73d7fd3bde675ddb2cab6fb 100644 GIT binary patch delta 94 zcmccQa?fRgp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%3lsr>zYTBz delta 82 zcmccTa>-?ap?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_bpHa04!n+{Qv*} diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailingWithPositiveInset_RTL_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a473b58e303d2da70f3f27a56f438356bbf107ce GIT binary patch literal 4384 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfx$_rX>J7X}9Qo1QL?Ar*{ot~=%>If^hlysOV-s@}6%&P8v@&2#?K zcj^BAnDbw*|M_Kmws!}fTVJTl|7Xv{!XcpG&~U(BxMFSVC;yLsVr+I6RNiNVOYCsi zFQ|E|Yn%0i_XjE-SlBT_bR1v^oK_r}c6s|mONa>!jfITNE+^kj&slb}#HK)IJ_AH$ zLW9QXojRLe-aa7%vuj5Ktz ztIp0eljWB=uI>O)DWPzxNbhvcFEgWds2v7+KwED9opjb@b{~7+V_~3&Kr%c6sg~1I z&1$7*Iz#P{5C_`wrtW0gEZ^hI$3Jp{ybe^!*0E{MX`|Wude10A?dai_Q1B|-pJIG= z+2h8?KcHR&dNA@_>P+AJZqJ}PS&p&t2&nFk-!wDr^2Y;(HBc`CJ*e}1)0t)Y%EjQ| z1={f#Xv?I#`Zs+xzZ?z5(O?86l+n~UJTvtIJBO0M;h7~)YqKx^7Hndm+mM8^k2@Mho z>C?})!-^Lc4haRej&Nx41vKn|&jAKQhjV(f`32$nfaVIUhZcoE!2>fJ7?T?2#G1(~ z!S#X6jbnrszzqzI#*EBI7%X?^*tx*#Ze*ORb#~&R2zemm; z9(51wIscq&J^!z>|9xkF{eRs*h_vxTt+8J|khO#1=Q92~yWy#^W_km|PvsBweaqhe zy0eED7JUw}4hXIjG@$cp8dr8{{I|*wmQ@@o`tpbR&a7m*l(xBy_&P})}fixq2&fRy`+RL z*w+A0F;`evPQ3b9{mAd(HREjV^f+kzLy});<1eOJuml(&ETFLZ`1|PXqQd#n(H5VD zprzg`P(oS5bw&KbA82xFoYlY(XVfJFQ!z&#%#)QwdAW;5Z3meZ`#tOS=xf4h?JM_UGRX^VyS2jP{RJ+wCcn%KELu#nybDic;SePuPVhq+x%!6B^w{`Nd= zwR_u$v3}l;;2mGj5R*!NU&}pu(3zu_kpBG6?D!IRF?Tm`s#8^L?NJkSX;i8OQ biS!5iuh87XtUkg|8Gyjk)z4*}Q$iB}lS?!0 literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_LTR_393x852-17-5-3x.png similarity index 94% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_LTR_390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_LTR_393x852-17-5-3x.png index 4d7c39e57d848a5aff88b1c91e34ac459b4256af..8f182d86af698a45ac830ea049e1c1e8d6b196a5 100644 GIT binary patch delta 94 zcmdnww9jdRp?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%4GI8f&J7Cy delta 82 zcmdnzw8?3Lp?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_cbU002ZMQm;e9( diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_LTR_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_LTR_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9e3644b673a1e3af7b3edcc5f5d52551b714a60e GIT binary patch literal 4257 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfyh<^9%^1wdNB)5S5Qg7M8w$E@T)0cMB$|1a5}yLYS8Z-bV>?et|A z@}s`I{^;Joz{teHA)s(Uv|{hPD8+xXZPsG#9P-+-WA)~otv}9o6sM*?}C$Rg#eVHZutaASqgGy#_ zdHI=%tAoktzaRrNkT?W(2nRTbOxV5Urz*7gU}&slWOZSj`JaOUs)>c;4yT3!*NNC$ ze}rJ=`GGy4tahfJ1z15q&3eZoBEb4YFSo7}S{FDZ#5phqIy|!n)=)52$$jm>~{w<XX#meL6~38 zaD!a=$DILYw8H~GkOSUbdNv(qKg%;#pes}UDKo%~Rwz&hIiNiAvp3w8qrrqdnEtG1 z`UGss{Qn>Kd>ODA!(Iex8@vU!42}fwxHtk^27H!HX8f0fId9eqXx+M?bpCZaBEmKt z_`GNRett=w^s`y;kYX>Gc@{uj6HcMO#m(g z(sLvno;n;9gh9q`+8_x}u@0k78APFCpz>i)9cK(n+o60>cnK2sAjo#F>W43arW0W) zE5XxYsak<>gxCI9cwtb~82$6hEC;zjW=>ebn#LlM#bn;N^vms5m`(-p9aH_+b3PF? zod6R88n$rMu+cCZO&X)w2~;M~r_`vAeZX(_IQMYlnqX02FP*{D)z4*}Q$iB}7v;V} literal 0 HcmV?d00001 diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_375x812-13-7-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_375x812-13-7-3x.png deleted file mode 100644 index 3177305e0856a5b783f1d10676be2b7748c295a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8554 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz^KE)1{Arx*DC->F%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fHfK11`uag)U_+NOsIEGX(zPaJp#cU|R;`sOf<>Wu@>zo4~P;h8qU}OR@HfVg%`j;ts)5Xm?f&HKL19zANSjA)}rfCLB zJvSQX$ri@ndp!Zxpr}%JjL@esiNMf%lOZYUiECcL1m@@@79O<4{krU7v{+Uy2_S{7Avw@~ULZ{NA4%rts8&9U+ zT8QF$pxgDU9<@f!oN7KB#k*>(EINTMA{&`)tqp$qSeu}@o+ILstN$JY?aiOkP`rC! z3DCn`9ZF>j(%IGKXSSob9_aQxFFM83Qp4`$pm=wNh`#>{ABAu{=B&O($^c%h^l0?&O+3jqjeUd z-XCpXAT@KyY+yXdWSZrW#IBY<8MP@03}rz^#@Cz?Okq#*erh0D1ZwXTs3;_GM$B(0 zEty@@hKLZbstyj02&QQbqC2DPyb$RYtSE*PELB=MyQY0q*Jx-Ux2s1(V>C2|a=Gyb z*zN!SU%zp;F0k*P59;&3z2(@I;>qK3aL50p^%K)4i0^3rYH<3#M(;GS{)+dt^Z!dO z`OjPP57GXGw*H)$^kwz_)F$0{f4{*VrFRMHR8MJWc*=Tf|DFThf0@62$I#58!{~jW zh#k?v0IO)s0(NH)2yIvuex(4-L|_*fSd_m*D~=TcbU`INQ`pxosXjD0fek=QPRkEokcRmZ>oX1W@khgLWk=z%gK3lr1h@&i9mixg1i51+(*)KU$UiyJEnYxh3>UEBCd*BmYLONfI?9wx@dkJbq_sD%}% zq-1?`^xtpA{SUMP_C7@~1s;QnAXfzigF5yef0X>d0xUAuIPBT6@7~A1`*4Mk7@jan z`u}%Ae1YhSdqrpotFaJNyeSC?NbF}mrjA-F0drxPLR?Jz`yX}jg}J1$FQ#2eh01oN{9iK z*BmS?$KE%5L>Vh?0M##|9pcxoTkpFsPEHuT*)RWzdmULx@bzoi`|r8Q38QcK`G2y8 zla&O&e(ihzovbkW{l5KA6V7akFA0ujQx0%ZhA)gpv#G;qHU&06p*6*5HXW@^flUZV pi(|AlRUq7;8?8<8hS39lj?+`_mkUq!1&%>5c)I$ztaD0e0ss&6VzvMP diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_390x844-14-4-3x.png deleted file mode 100644 index 3177305e0856a5b783f1d10676be2b7748c295a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8554 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz^KE)1{Arx*DC->F%}28J29*~C-V}>sYs3R zO!M_+&;qhK7+4sk7+66{fY^>v8qRiO)L>u+i!(7Wv}ZD~K-KsGX%M&p#2`Hont1^u zR5eg+0TWC$%Z3HaFgBwONL%OSr{X}0v%n*=n1Mmj0)!b|rx_*y1!Xc_{6l~=&_Xbn z1|&6r7(@fHfK11`uag)U_+NOsIEGX(zPaJp#cU|R;`sOf<>Wu@>zo4~P;h8qU}OR@HfVg%`j;ts)5Xm?f&HKL19zANSjA)}rfCLB zJvSQX$ri@ndp!Zxpr}%JjL@esiNMf%lOZYUiECcL1m@@@79O<4{krU7v{+Uy2_S{7Avw@~ULZ{NA4%rts8&9U+ zT8QF$pxgDU9<@f!oN7KB#k*>(EINTMA{&`)tqp$qSeu}@o+ILstN$JY?aiOkP`rC! z3DCn`9ZF>j(%IGKXSSob9_aQxFFM83Qp4`$pm=wNh`#>{ABAu{=B&O($^c%h^l0?&O+3jqjeUd z-XCpXAT@KyY+yXdWSZrW#IBY<8MP@03}rz^#@Cz?Okq#*erh0D1ZwXTs3;_GM$B(0 zEty@@hKLZbstyj02&QQbqC2DPyb$RYtSE*PELB=MyQY0q*Jx-Ux2s1(V>C2|a=Gyb z*zN!SU%zp;F0k*P59;&3z2(@I;>qK3aL50p^%K)4i0^3rYH<3#M(;GS{)+dt^Z!dO z`OjPP57GXGw*H)$^kwz_)F$0{f4{*VrFRMHR8MJWc*=Tf|DFThf0@62$I#58!{~jW zh#k?v0IO)s0(NH)2yIvuex(4-L|_*fSd_m*D~=TcbU`INQ`pxosXjD0fek=QPRkEokcRmZ>oX1W@khgLWk=z%gK3lr1h@&i9mixg1i51+(*)KU$UiyJEnYxh3>UEBCd*BmYLONfI?9wx@dkJbq_sD%}% zq-1?`^xtpA{SUMP_C7@~1s;QnAXfzigF5yef0X>d0xUAuIPBT6@7~A1`*4Mk7@jan z`u}%Ae1YhSdqrpotFaJNyeSC?NbF}mrjA-F0drxPLR?Jz`yX}jg}J1$FQ#2eh01oN{9iK z*BmS?$KE%5L>Vh?0M##|9pcxoTkpFsPEHuT*)RWzdmULx@bzoi`|r8Q38QcK`G2y8 zla&O&e(ihzovbkW{l5KA6V7akFA0ujQx0%ZhA)gpv#G;qHU&06p*6*5HXW@^flUZV pi(|AlRUq7;8?8<8hS39lj?+`_mkUq!1&%>5c)I$ztaD0e0ss&6VzvMP diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_LTR_390x844-14-4-3x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_393x852-17-5-3x.png similarity index 94% rename from Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.leading_LTR_390x844-14-4-3x.png rename to Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_393x852-17-5-3x.png index 3177305e0856a5b783f1d10676be2b7748c295a9..57920f127e51a3d464e102b4218634fb4522f28b 100644 GIT binary patch delta 94 zcmaFm^v!94p?6DaglC$sFM}2X0|N&GE29ttGmymygba*Q46I-_1A`Z%G@Kp8r~y^O a#K6#=$-n|t6E(5Gj>R)=kMhP%I}`wr?hUg5 delta 82 zcmez7^vY?1p?yVaglC$sFM}2X0|N&G3!@YRE0Dzq#CD9*aJCzx1_Lu#oQZ*W|(jU7wp<)`8s_w7&s06KvVKmY&$ diff --git a/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_820x1180-17-5-2x.png b/Example/ParalayoutSnapshotTests/__Snapshots__/ViewSpreadingSnapshotTests/testVerticallySpreadSubviews.trailing_RTL_820x1180-17-5-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..90146faf7f257a508e7beeb97085c1ac088f0a8c GIT binary patch literal 4298 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OKPjIjSNrC=WDImpI9OUlAuRWfWpy1}OnT21Y3cRxq1^!HZEE&JJSKfU03)U}(=|V1cTM0@5Hb0f>RR zp)~UXMudqAm|&`z6&5hV*bFB?+I;3*0y&Pez$3Dlfk8|agc&`9R6YO&Winm-Lx42U zLNG`Hk{Un^qJfzGu=K~nHbA=H)5S5Qg7M9D$1G<<0anMm|1a@bHr!t|vsKeMjHx!L zr{!1ez285Q6WI2hIdHt6fsu)YLqNe{fk=hiym+~JhkR!IJKrD=6>V_PQgCQ#yAWYK zLC$=(pn^jKSUtytuRpe^`P~r&YXym|Y+w+SR7yVUP<1EA4WdXuLBZkLg2%;NSn{>QC6Ox#}zuDv~x>cjLmL_j})e z{%*}SUmlTW4m0`x_%Zjx$N&33IKyg3hlEH6hMya`FMQhYvKLl=H#9IPHQZoA=rm_R5?}*|!Zx@)4Gz8z41x|>hnES!s$2$; zsT+|}aTXI(2SbpwSu3a!0nrIGwL=%i5l{#a7I0vhaBG963*2CksX2^rGaF}t9Dk+F z7df+ZFeGs!%)G(^bo>&t94>epL;z^2Kr}q-I4n?806KnaVsOW3kU&Frf!c?A&!-=V zU0^m75pF(Q!1#$!G1$pE3m)&FlyLF$?>fzhznd`BdSFvq{dHa8`_;s$9W{3}d?9&q nG#p05VYJ)<)w<|q>L13p!MTSESEpA38w?Ddu6{1-oD!M 'https://github.com/square/Paralayout.git', :tag => s.version } s.source_files = 'Paralayout/*.{swift}' - s.ios.deployment_target = '12.0' - s.swift_version = '5.0' + s.ios.deployment_target = '13.0' + s.swift_version = '5.9' s.test_spec 'Tests' do |test_spec| test_spec.source_files = 'ParalayoutTests/*{.swift}' diff --git a/Paralayout/Alignable.swift b/Paralayout/Alignable.swift index 5595602..5f782f4 100644 --- a/Paralayout/Alignable.swift +++ b/Paralayout/Alignable.swift @@ -17,12 +17,14 @@ import UIKit /// Describes an object that can participate in alignment. In practice, this represents a view. +@MainActor public protocol Alignable { var alignmentContext: AlignmentContext { get } } +@MainActor public struct AlignmentContext { // MARK: - Life Cycle diff --git a/Paralayout/Angle.swift b/Paralayout/Angle.swift index 4d9b716..ae41c9b 100644 --- a/Paralayout/Angle.swift +++ b/Paralayout/Angle.swift @@ -16,7 +16,7 @@ import CoreGraphics -public struct Angle: Comparable { +public struct Angle: Comparable, Sendable { // MARK: - Public Static Properties diff --git a/Paralayout/AspectRatio.swift b/Paralayout/AspectRatio.swift index a42684e..2080901 100644 --- a/Paralayout/AspectRatio.swift +++ b/Paralayout/AspectRatio.swift @@ -17,7 +17,7 @@ import UIKit /// A value type representing the ratio between a width and a height. -public struct AspectRatio: Comparable, CustomDebugStringConvertible { +public struct AspectRatio: Comparable, CustomDebugStringConvertible, Sendable { // MARK: - Public Static Properties @@ -105,6 +105,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// /// - parameter width: The desired width. /// - parameter scaleFactor: The view/window/screen to use for pixel rounding. + @MainActor public func height(forWidth width: CGFloat, in scaleFactor: ScaleFactorProviding) -> CGFloat { return (ratioHeight * width / ratioWidth).roundedToPixel(in: scaleFactor) } @@ -113,6 +114,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// /// - parameter height: The desired height. /// - parameter scaleFactor: The view/window/screen to use for pixel rounding. + @MainActor public func width(forHeight height: CGFloat, in scaleFactor: ScaleFactorProviding) -> CGFloat { return (ratioWidth * height / ratioHeight).roundedToPixel(in: scaleFactor) } @@ -122,6 +124,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// /// - parameter width: The desired width. /// - parameter scaleFactor: The view/window/screen to use for pixel rounding. + @MainActor public func size(forWidth width: CGFloat, in scaleFactor: ScaleFactorProviding) -> CGSize { return CGSize( width: width, @@ -134,6 +137,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// /// - parameter height: The desired height. /// - parameter scaleFactor: The view/window/screen to use for pixel rounding. + @MainActor public func size(forHeight height: CGFloat, in scaleFactor: ScaleFactorProviding) -> CGSize { return CGSize( width: width(forHeight: height, in: scaleFactor), @@ -147,6 +151,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// - parameter size: The bounding size. /// - parameter scaleFactor: The view/window/screen to use for pixel alignment. /// - returns: A size with the receiver's aspect ratio, no larger than the bounding size. + @MainActor public func size(toFit size: CGSize, in scaleFactor: ScaleFactorProviding) -> CGSize { if size.aspectRatio <= self { // Match width, narrow the height. @@ -169,6 +174,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// - parameter scaleFactor: The view/window/screen to use for pixel alignment. /// - parameter layoutDirection: The effective layout direction of the view in which the `rect` is defined. /// - returns: A rect with the receiver's aspect ratio, strictly within the bounding rect. + @MainActor public func rect( toFit rect: CGRect, at position: Position, @@ -193,6 +199,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// - parameter context: The view/window/screen that provides the scale factor and effective layout direction in /// which the rect should be positioned. /// - returns: A rect with the receiver's aspect ratio, strictly within the bounding rect. + @MainActor public func rect( toFit rect: CGRect, at position: Position, @@ -212,6 +219,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// - parameter size: The bounding size. /// - parameter scaleFactor: The view/window/screen to use for pixel alignment. /// - returns: A size with the receiver's aspect ratio, at least as large as the bounding size. + @MainActor public func size(toFill size: CGSize, in scaleFactor: ScaleFactorProviding) -> CGSize { if size.aspectRatio <= self { // Match height, expand the width. @@ -234,6 +242,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// - parameter scaleFactor: The view/window/screen to use for pixel alignment. /// - parameter layoutDirection: The effective layout direction of the view in which the `rect` is defined. /// - returns: A rect with the receiver's aspect ratio, strictly containing the bounding rect. + @MainActor public func rect( toFill rect: CGRect, at position: Position, @@ -257,6 +266,7 @@ public struct AspectRatio: Comparable, CustomDebugStringConvertible { /// - parameter context: The view/window/screen that provides the scale factor and effective layout direction in /// which the rect should be positioned. /// - returns: A rect with the receiver's aspect ratio, strictly containing the bounding rect. + @MainActor public func rect( toFill rect: CGRect, at position: Position, @@ -294,6 +304,7 @@ extension CGRect { // MARK: - Life Cycle + @MainActor fileprivate init( size newSize: CGSize, at position: Position, diff --git a/Paralayout/Interpolation.swift b/Paralayout/Interpolation.swift index 81a2143..b2ead9a 100644 --- a/Paralayout/Interpolation.swift +++ b/Paralayout/Interpolation.swift @@ -102,7 +102,7 @@ public enum Clamp { // MARK: - -public struct Interpolation: Comparable { +public struct Interpolation: Comparable, Sendable { // MARK: - Public Types diff --git a/Paralayout/LayoutDirection.swift b/Paralayout/LayoutDirection.swift index 1636ca1..632aabd 100644 --- a/Paralayout/LayoutDirection.swift +++ b/Paralayout/LayoutDirection.swift @@ -17,6 +17,7 @@ import UIKit /// Defines an object that vends its current user interface layout direction. +@MainActor public protocol LayoutDirectionProviding { var effectiveUserInterfaceLayoutDirection: UIUserInterfaceLayoutDirection { get } diff --git a/Paralayout/PixelRounding.swift b/Paralayout/PixelRounding.swift index 3ac4f17..afd1451 100644 --- a/Paralayout/PixelRounding.swift +++ b/Paralayout/PixelRounding.swift @@ -17,6 +17,7 @@ import UIKit /// The ratio of pixels to points, either of a UIScreen, a UIView's screen, or an explicit value. +@MainActor public protocol ScaleFactorProviding { var pixelsPerPoint: CGFloat { get } @@ -76,6 +77,7 @@ extension CGFloat { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: The adjusted coordinate. + @MainActor public func flooredToPixel(in scaleFactor: ScaleFactorProviding) -> CGFloat { return adjustedToPixel(scaleFactor) { floor($0) } } @@ -85,6 +87,7 @@ extension CGFloat { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: The adjusted coordinate. + @MainActor public func ceiledToPixel(in scaleFactor: ScaleFactorProviding) -> CGFloat { return adjustedToPixel(scaleFactor) { ceil($0) } } @@ -94,6 +97,7 @@ extension CGFloat { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: The adjusted coordinate. + @MainActor public func roundedToPixel(in scaleFactor: ScaleFactorProviding) -> CGFloat { // Invoke the namespaced Darwin.round() function since round() is ambiguous (it's also a mutating instance // method). @@ -102,6 +106,7 @@ extension CGFloat { // MARK: - Private Methods + @MainActor private func adjustedToPixel(_ scaleFactor: ScaleFactorProviding, _ adjustment: (CGFloat) -> CGFloat) -> CGFloat { let scale = scaleFactor.pixelsPerPoint return (scale > 0.0) ? (adjustment(self * scale) / scale) : self @@ -117,6 +122,7 @@ extension CGPoint { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: The adjusted coordinate. + @MainActor public func flooredToPixel(in scaleFactor: ScaleFactorProviding) -> CGPoint { return CGPoint(x: x.flooredToPixel(in: scaleFactor), y: y.flooredToPixel(in: scaleFactor)) } @@ -127,6 +133,7 @@ extension CGPoint { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: The adjusted coordinate. + @MainActor public func ceiledToPixel(in scaleFactor: ScaleFactorProviding) -> CGPoint { return CGPoint(x: x.ceiledToPixel(in: scaleFactor), y: y.ceiledToPixel(in: scaleFactor)) } @@ -137,6 +144,7 @@ extension CGPoint { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: The adjusted coordinate. + @MainActor public func roundedToPixel(in scaleFactor: ScaleFactorProviding) -> CGPoint { return CGPoint(x: x.roundedToPixel(in: scaleFactor), y: y.roundedToPixel(in: scaleFactor)) } @@ -150,6 +158,7 @@ extension CGSize { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: The adjusted coordinate. + @MainActor public func flooredToPixel(in scaleFactor: ScaleFactorProviding) -> CGSize { return CGSize(width: width.flooredToPixel(in: scaleFactor), height: height.flooredToPixel(in: scaleFactor)) } @@ -159,6 +168,7 @@ extension CGSize { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: The adjusted coordinate. + @MainActor public func ceiledToPixel(in scaleFactor: ScaleFactorProviding) -> CGSize { return CGSize(width: width.ceiledToPixel(in: scaleFactor), height: height.ceiledToPixel(in: scaleFactor)) } @@ -168,6 +178,7 @@ extension CGSize { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: The adjusted coordinate. + @MainActor public func roundedToPixel(in scaleFactor: ScaleFactorProviding) -> CGSize { return CGSize(width: width.roundedToPixel(in: scaleFactor), height: height.roundedToPixel(in: scaleFactor)) } @@ -181,6 +192,7 @@ extension CGRect { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: A new rect with pixel-aligned boundaries, enclosing the original rect. + @MainActor public func expandedToPixel(in scaleFactor: ScaleFactorProviding) -> CGRect { return CGRect( left: minX.flooredToPixel(in: scaleFactor), @@ -195,6 +207,7 @@ extension CGRect { /// - parameter scaleFactor: The pixel scale to use, e.g. a UIScreen, UIView, or explicit value (pass `0` to *not* /// snap to pixel). /// - returns: A new rect with pixel-aligned boundaries, enclosed by the original rect. + @MainActor public func contractedToPixel(in scaleFactor: ScaleFactorProviding) -> CGRect { return CGRect( left: minX.ceiledToPixel(in: scaleFactor), diff --git a/Paralayout/UIFont+CapInsets.swift b/Paralayout/UIFont+CapInsets.swift index 211cda8..e18d8aa 100644 --- a/Paralayout/UIFont+CapInsets.swift +++ b/Paralayout/UIFont+CapInsets.swift @@ -22,7 +22,7 @@ extension UIFont { /// The insets, in points, from the top of a UILabel to its font's capHeight, and from the font's baseline to the /// label's bottom. - public struct LabelCapInsets { + public struct LabelCapInsets: Sendable { // MARK: - Public Properties @@ -61,6 +61,7 @@ extension UIFont { /// The space above and below the receiver's capHeight and baseline, as displayed in a UILabel. /// - parameter scaleFactor: The UI scale factor for pixel rounding. /// - returns: The insets. + @MainActor public func labelCapInsets(in scaleFactor: ScaleFactorProviding) -> LabelCapInsets { // One would expect ceil(ascender) - floor(descender) so that the baseline would land on a pixel boundary, but // sadly no--this is what `UILabel.sizeToFit()` does. diff --git a/Paralayout/UIView+Alignment.swift b/Paralayout/UIView+Alignment.swift index affe041..a6e5564 100644 --- a/Paralayout/UIView+Alignment.swift +++ b/Paralayout/UIView+Alignment.swift @@ -170,11 +170,13 @@ extension AlignmentContext { // MARK: - +@MainActor private let ParalayoutLog = OSLog(subsystem: "com.squareup.Paralayout", category: "layout") /// Triggered when an alignment method is called that uses mismatched position types, i.e. aligning a view's leading or /// trailing edge to another view's left or right edge, or vice versa. This type of mismatch is likely to look correct /// under certain circumstance, but may look incorrect when using a different user interface layout direction. +@MainActor private func ParalayoutAlertForMismatchedAlignmentPositionTypes() { os_log( "%@", @@ -190,6 +192,7 @@ private func ParalayoutAlertForMismatchedAlignmentPositionTypes() { /// Triggered when an alignment method is called that involves two views that are not installed in the same view /// hierarchy. The behavior of aligning two views not in the same view hierarchy is undefined. +@MainActor private func ParalayoutAlertForInvalidViewHierarchy() { os_log( "%@", diff --git a/Paralayout/UIView+Sizing.swift b/Paralayout/UIView+Sizing.swift index 465a6f7..b782393 100644 --- a/Paralayout/UIView+Sizing.swift +++ b/Paralayout/UIView+Sizing.swift @@ -21,7 +21,7 @@ extension UIView { // MARK: - Public Types /// Constraints on the result of a call to `sizeThatFits(_:)`. - public struct SizingConstraints: OptionSet { + public struct SizingConstraints: OptionSet, Sendable { // MARK: - Life Cycle diff --git a/Paralayout/ViewDistributionItem.swift b/Paralayout/ViewDistributionItem.swift index dae79f8..ee61fae 100644 --- a/Paralayout/ViewDistributionItem.swift +++ b/Paralayout/ViewDistributionItem.swift @@ -17,7 +17,7 @@ import UIKit /// An element of a horizontal or vertical distribution. -public enum ViewDistributionItem: ViewDistributionSpecifying { +public enum ViewDistributionItem: ViewDistributionSpecifying, Sendable { /// A UIView, with adjustments to how much space it should take up. case view(UIView, UIEdgeInsets) @@ -146,6 +146,7 @@ public enum ViewDistributionItem: ViewDistributionSpecifying { // MARK: - /// A means of getting a `ViewDistributionItem`: either a UIView, or a number as `.fixed` or `.flexible`. +@MainActor public protocol ViewDistributionSpecifying { var distributionItem: ViewDistributionItem { get } diff --git a/ParalayoutTests/AspectRatioTests.swift b/ParalayoutTests/AspectRatioTests.swift index b3d1614..3d98f39 100644 --- a/ParalayoutTests/AspectRatioTests.swift +++ b/ParalayoutTests/AspectRatioTests.swift @@ -20,6 +20,7 @@ import XCTest final class AspectRatioTests: XCTestCase { + @MainActor func testStatics() { XCTAssert(AspectRatio.square.height(forWidth: 1, in: 0) == 1) XCTAssert(AspectRatio.square.width(forHeight: 1, in: 0) == 1) @@ -32,6 +33,7 @@ final class AspectRatioTests: XCTestCase { XCTAssert(AspectRatio.widescreen.height(forWidth: 16, in: 0) == 9) } + @MainActor func testCreation() { XCTAssert(AspectRatio(width: 1, height: 1) == AspectRatio.square) XCTAssert(AspectRatio(width: 2, height: 2) == AspectRatio.square) @@ -43,6 +45,7 @@ final class AspectRatioTests: XCTestCase { XCTAssert(CGRect(x: 25, y: 50, width: 100, height: 100).aspectRatio == AspectRatio.square) } + @MainActor func testInverted() { XCTAssert(AspectRatio.square.inverted == AspectRatio.square) XCTAssert(AspectRatio(width: 100, height: 50).inverted == AspectRatio(width: 5, height: 10)) @@ -53,6 +56,7 @@ final class AspectRatioTests: XCTestCase { XCTAssert(AspectRatio.widescreen.inverted.height(forWidth: 9, in: 0) == 16) } + @MainActor func testComparison() { // Aspect ratios in sorted order. let ratios = [ @@ -78,6 +82,7 @@ final class AspectRatioTests: XCTestCase { } } + @MainActor func testSizes() { // The core sizing methods round the resulting dimension. XCTAssert(AspectRatio.square.width(forHeight: 10.5, in: 1) == 11) @@ -97,6 +102,7 @@ final class AspectRatioTests: XCTestCase { } } + @MainActor func testRects() { // Use a set of rectangles with varying aspect ratios (square, landscape, portrait; origin offsets; // non-integral). diff --git a/ParalayoutTests/PixelRoundingTests.swift b/ParalayoutTests/PixelRoundingTests.swift index d1f90e1..4af73e1 100644 --- a/ParalayoutTests/PixelRoundingTests.swift +++ b/ParalayoutTests/PixelRoundingTests.swift @@ -37,6 +37,7 @@ final class PixelRoundingTests: XCTestCase { // MARK: - Tests - Pixel Rounding + @MainActor func testFloatPixelRounding() { XCTAssertEqual(CGFloat(1.75).flooredToPixel(in: 0), 1.75) XCTAssertEqual(CGFloat(1.75).flooredToPixel(in: TestScreen.at1x), 1) @@ -57,6 +58,7 @@ final class PixelRoundingTests: XCTestCase { XCTAssertEqual(CGFloat(-1.75).ceiledToPixel(in: TestScreen.at2x), -1.5) } + @MainActor func testPointPixelRounding() { XCTAssertEqual(CGPoint(x: 0.9, y: -1.1).flooredToPixel(in: 0), CGPoint(x: 0.9, y: -1.1)) XCTAssertEqual(CGPoint(x: 0.9, y: -1.1).flooredToPixel(in: 1), CGPoint(x: 0, y: -2)) @@ -71,6 +73,7 @@ final class PixelRoundingTests: XCTestCase { XCTAssertEqual(CGPoint(x: 0.4, y: -1.4).roundedToPixel(in: 2), CGPoint(x: 0.5, y: -1.5)) } + @MainActor func testSizePixelRounding() { XCTAssertEqual(CGSize(width: 0.9, height: -1.1).flooredToPixel(in: 0), CGSize(width: 0.9, height: -1.1)) XCTAssertEqual(CGSize(width: 0.9, height: -1.1).flooredToPixel(in: 1), CGSize(width: 0, height: -2)) @@ -85,6 +88,7 @@ final class PixelRoundingTests: XCTestCase { XCTAssertEqual(CGSize(width: 0.4, height: -1.4).roundedToPixel(in: 2), CGSize(width: 0.5, height: -1.5)) } + @MainActor func testRectPixelRounding() { XCTAssertEqual( CGRect(left: 10.6, top: 10.4, right: 50.6, bottom: 50.6).expandedToPixel(in: TestScreen.at2x), @@ -107,6 +111,7 @@ final class PixelRoundingTests: XCTestCase { // MARK: - Tests - Scale Factor + @MainActor func testViewScaleFactor() { // A view should inherit the scale factor of its parent screen. for screen in screensToTest() { @@ -121,6 +126,7 @@ final class PixelRoundingTests: XCTestCase { // MARK: - Private Methods + @MainActor private func screensToTest() -> [UIScreen] { if #available(iOS 13, *) { // In iOS 13 and later, there is a bug around setting `UIWindow.screen` that prevents us from testing diff --git a/ParalayoutTests/ViewDistributionBuilderTests.swift b/ParalayoutTests/ViewDistributionBuilderTests.swift index ba2288d..1353ec7 100644 --- a/ParalayoutTests/ViewDistributionBuilderTests.swift +++ b/ParalayoutTests/ViewDistributionBuilderTests.swift @@ -22,6 +22,7 @@ final class ViewDistributionBuilderTests: XCTestCase { // MARK: - Tests + @MainActor func testSimpleResultBuilder() throws { let view = UIView() XCTAssertEqual( @@ -38,6 +39,7 @@ final class ViewDistributionBuilderTests: XCTestCase { ) } + @MainActor func testIfTrueResultBuilder() throws { let view = UIView() let condition = true @@ -57,6 +59,7 @@ final class ViewDistributionBuilderTests: XCTestCase { ) } + @MainActor func testIfFalseResultBuilder() throws { let view = UIView() let condition = false @@ -75,6 +78,7 @@ final class ViewDistributionBuilderTests: XCTestCase { ) } + @MainActor func testIfElseFirstBranchResultBuilder() throws { let view = UIView() view.tag = 1 @@ -99,6 +103,7 @@ final class ViewDistributionBuilderTests: XCTestCase { ) } + @MainActor func testIfElseSecondBranchResultBuilder() throws { let view = UIView() view.tag = 1 @@ -123,6 +128,7 @@ final class ViewDistributionBuilderTests: XCTestCase { ) } + @MainActor func testSwitchCaseResultBuilder() throws { let view = UIView() let value = 1 @@ -145,6 +151,7 @@ final class ViewDistributionBuilderTests: XCTestCase { ) } + @MainActor func testSwitchDefaultResultBuilder() throws { let view = UIView() let value = 2 @@ -166,6 +173,7 @@ final class ViewDistributionBuilderTests: XCTestCase { ) } + @MainActor func testForLoopResultBuilder() throws { XCTAssertEqual( viewDistribution({ @@ -185,6 +193,7 @@ final class ViewDistributionBuilderTests: XCTestCase { // MARK: - Private Methods + @MainActor private func viewDistribution(@ViewDistributionBuilder _ builder: () -> [ViewDistributionSpecifying]) -> [ViewDistributionSpecifying] { builder() } diff --git a/README.md b/README.md index a636098..bd0de8d 100644 --- a/README.md +++ b/README.md @@ -156,9 +156,9 @@ The extra space within a label above the "cap height" and below the "baseline" o ## Requirements -* iOS 12.0 or later -* Xcode 12.0 or later -* Swift 5.0 +* iOS 13.0 or later +* Xcode 15.0 or later +* Swift 5.9 ## Contributing diff --git a/Scripts/build.swift b/Scripts/build.swift index d53a95c..56af8ce 100755 --- a/Scripts/build.swift +++ b/Scripts/build.swift @@ -46,24 +46,15 @@ enum TaskError: Error { } enum Platform: String, CustomStringConvertible { - case iOS_16 - case iOS_15 - case iOS_14 - case iOS_13 - case iOS_12 + case iOS_17 + case iPadOS_17 var destination: String { switch self { - case .iOS_16: - return "platform=iOS Simulator,OS=16.1,name=iPhone 14 Pro" - case .iOS_15: - return "platform=iOS Simulator,OS=15.5,name=iPhone 13 Pro" - case .iOS_14: - return "platform=iOS Simulator,OS=14.4,name=iPhone 12 Pro" - case .iOS_13: - return "platform=iOS Simulator,OS=13.7,name=iPhone 11 Pro" - case .iOS_12: - return "platform=iOS Simulator,OS=12.4,name=iPhone 5s" + case .iOS_17: + return "platform=iOS Simulator,OS=17.5,name=iPhone 15 Pro" + case .iPadOS_17: + return "platform=iOS Simulator,OS=17.5,name=iPad (10th generation)" } } diff --git a/Scripts/github/prepare-simulators.sh b/Scripts/github/prepare-simulators.sh deleted file mode 100755 index cb2e74c..0000000 --- a/Scripts/github/prepare-simulators.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -l -set -ex - -sudo mkdir -p /Library/Developer/CoreSimulator/Profiles/Runtimes - -case $1 in - iOS_12) - sudo ln -s /Applications/Xcode_10.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS\ 12.4.simruntime - ;; - - iOS_13) - sudo ln -s /Applications/Xcode_11.7.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS\ 13.7.simruntime - ;; - - iOS_14) - sudo ln -s /Applications/Xcode_12.4.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS\ 14.4.simruntime - ;; - - iOS_15) - sudo ln -s /Applications/Xcode_13.4.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS\ 15.5.simruntime - ;; -esac - -xcrun simctl list runtimes From 510c3178e1b1e841e690300efbde92710834aa58 Mon Sep 17 00:00:00 2001 From: Nick Entin Date: Wed, 28 Aug 2024 16:53:04 -0700 Subject: [PATCH 2/9] Enable strict concurrenct in demo project --- Example/ParalayoutDemo.xcodeproj/project.pbxproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Example/ParalayoutDemo.xcodeproj/project.pbxproj b/Example/ParalayoutDemo.xcodeproj/project.pbxproj index 2637993..61ac173 100644 --- a/Example/ParalayoutDemo.xcodeproj/project.pbxproj +++ b/Example/ParalayoutDemo.xcodeproj/project.pbxproj @@ -418,6 +418,7 @@ SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_STRICT_CONCURRENCY = complete; }; name = Debug; }; @@ -472,6 +473,7 @@ SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_STRICT_CONCURRENCY = complete; VALIDATE_PRODUCT = YES; }; name = Release; From 34dc4878da1d72ecbe2e4914b5470220f66906b3 Mon Sep 17 00:00:00 2001 From: Nick Entin Date: Wed, 28 Aug 2024 16:57:22 -0700 Subject: [PATCH 3/9] Enable strict concurrency for Bazel builds --- .github/workflows/ci.yml | 2 +- BUILD.bazel | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5de0d90..a52b69c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,4 +66,4 @@ jobs: - name: Select Xcode Version run: sudo xcode-select --switch /Applications/Xcode_15.4.app/Contents/Developer - name: Build and Test - run: bazel test //... + run: bazel test //... --xcode_version=15.4.0 diff --git a/BUILD.bazel b/BUILD.bazel index 5bb5d1c..09b6364 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -12,6 +12,7 @@ swift_library( name = "Paralayout.lib", srcs = glob(["Paralayout/**/*.swift"]), module_name = "Paralayout", + copts = ["-strict-concurrency=complete"], tags = ["manual"], visibility = ["//visibility:public"], deps = [], @@ -22,6 +23,7 @@ swift_library( testonly = True, srcs = glob(["ParalayoutTests/**/*.swift"]), module_name = "ParalayoutTests", + copts = ["-strict-concurrency=complete"], tags = ["manual"], deps = [":Paralayout.lib"], ) From a2ba600b5a62b7bbe859e337d6d639baed6c721f Mon Sep 17 00:00:00 2001 From: Nick Entin Date: Wed, 28 Aug 2024 16:59:41 -0700 Subject: [PATCH 4/9] Use tabs in Package.swift --- Package.swift | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Package.swift b/Package.swift index faf1871..d7bcab0 100644 --- a/Package.swift +++ b/Package.swift @@ -26,7 +26,7 @@ let package = Package( products: [ .library( name: "Paralayout", - targets: ["Paralayout"] + targets: ["Paralayout"] ), ], targets: [ @@ -34,15 +34,15 @@ let package = Package( name: "Paralayout", dependencies: [], path: "Paralayout", - swiftSettings: [ - .enableExperimentalFeature("StrictConcurrency") - ] + swiftSettings: [ + .enableExperimentalFeature("StrictConcurrency") + ] ), .testTarget( - name: "ParalayoutTests", - dependencies: ["Paralayout"], - path: "ParalayoutTests" - ), + name: "ParalayoutTests", + dependencies: ["Paralayout"], + path: "ParalayoutTests" + ), ], swiftLanguageVersions: [.v5] ) From 9799342fe93ceb4c1d2575021b82b862057741ca Mon Sep 17 00:00:00 2001 From: Nick Entin Date: Wed, 28 Aug 2024 17:06:29 -0700 Subject: [PATCH 5/9] Add some missing main actor annotations in unit tests --- ParalayoutTests/AngleTests.swift | 6 +++++ ParalayoutTests/DistributionTests.swift | 1 + ParalayoutTests/GeometryAdditionsTests.swift | 14 +++++++++++ ParalayoutTests/InterpolationTests.swift | 25 ++++++++++++++++++++ ParalayoutTests/PositionTests.swift | 2 ++ ParalayoutTests/UIViewFrameTests.swift | 14 +++++++++++ ParalayoutTests/UIViewSizingTests.swift | 12 ++++++++++ ParalayoutTests/ViewArrayBuilderTests.swift | 9 +++++++ 8 files changed, 83 insertions(+) diff --git a/ParalayoutTests/AngleTests.swift b/ParalayoutTests/AngleTests.swift index dd031bc..6ce4318 100644 --- a/ParalayoutTests/AngleTests.swift +++ b/ParalayoutTests/AngleTests.swift @@ -20,6 +20,7 @@ import XCTest final class AngleTests: XCTestCase { + @MainActor func testConstants() { XCTAssertEqual(Angle.zero.radians, 0) XCTAssertEqual(Angle.right.degrees, 90, accuracy: 1e-4) @@ -27,6 +28,7 @@ final class AngleTests: XCTestCase { XCTAssertEqual(Angle.fullCircle.degrees, 360, accuracy: 1e-4) } + @MainActor func testValueInitializers() { func assertRadianInitPreservesValue(_ radians: CGFloat) { XCTAssertEqual(Angle(radians: radians).radians, radians) @@ -45,6 +47,7 @@ final class AngleTests: XCTestCase { } } + @MainActor func testPointInitializer() { let rect = CGRect(x: -1, y: -1, width: 2, height: 2) let centerPoint = Position.center.point(in: rect, layoutDirection: .leftToRight) @@ -94,6 +97,7 @@ final class AngleTests: XCTestCase { ) } + @MainActor func testPointAtDistance() { let rect = CGRect(x: -1, y: -1, width: 2, height: 2) let diagonalUnit: CGFloat = sqrt(2) @@ -151,6 +155,7 @@ final class AngleTests: XCTestCase { } } + @MainActor func testPositiveNormalization() { // In the range [0,2π), the angle should be unmutated. XCTAssertEqual(Angle.zero.normalizedPositive.radians, Angle.zero.radians) @@ -168,6 +173,7 @@ final class AngleTests: XCTestCase { XCTAssertEqual(Angle(radians: -.pi / 2).normalizedPositive.radians, 1.5 * .pi, accuracy: 1e-4) } + @MainActor func testHalfCircleNormalization() { // In the range [-180º,180º), the angle should be unmutated. XCTAssertEqual(Angle.zero.normalizedHalfCircle.radians, Angle.zero.radians, accuracy: 1e-4) diff --git a/ParalayoutTests/DistributionTests.swift b/ParalayoutTests/DistributionTests.swift index 2b4695a..46eec39 100644 --- a/ParalayoutTests/DistributionTests.swift +++ b/ParalayoutTests/DistributionTests.swift @@ -22,6 +22,7 @@ final class DistributionTests: XCTestCase { // MARK: - Tests - Orthogonal Alignment + @MainActor func testOrthogonalAlignmentInHorizontalDistribution() { // The layout direction shouldn't affect the orthogonal alignment in a horizontal distribution. for forcedLayoutDirection in [UISemanticContentAttribute.forceLeftToRight, .forceRightToLeft] { diff --git a/ParalayoutTests/GeometryAdditionsTests.swift b/ParalayoutTests/GeometryAdditionsTests.swift index d189ae7..96303fc 100644 --- a/ParalayoutTests/GeometryAdditionsTests.swift +++ b/ParalayoutTests/GeometryAdditionsTests.swift @@ -22,6 +22,7 @@ final class GeometryAdditionsTests: XCTestCase { // MARK: - Tests - Operators + @MainActor func testOffsetOperators() { // Combine offsets. XCTAssertEqual( @@ -66,6 +67,7 @@ final class GeometryAdditionsTests: XCTestCase { // MARK: - Tests - CGPoint Extensions + @MainActor func testMidpoint() { // The midpoint between two of the same point should be that point. XCTAssertEqual(CGPoint(midpointBetween: .zero, and: .zero), .zero) @@ -85,6 +87,7 @@ final class GeometryAdditionsTests: XCTestCase { ) } + @MainActor func testDistanceBetweenPoints() { // A point's distance from itself is always zero. XCTAssertEqual(CGPoint.zero.distance(to: .zero), 0) @@ -102,12 +105,14 @@ final class GeometryAdditionsTests: XCTestCase { // MARK: - Tests - CGSize Extensions + @MainActor func testSizeOfGreatestFiniteMagnitude() { let size = CGSize.greatestFiniteMagnitude XCTAssertEqual(size.width, .greatestFiniteMagnitude) XCTAssertEqual(size.height, .greatestFiniteMagnitude) } + @MainActor func testScalingSize() { // A zero size scaled by anything should still be zero. XCTAssertEqual(CGSize.zero * 100, .zero) @@ -124,11 +129,13 @@ final class GeometryAdditionsTests: XCTestCase { // MARK: - Tests - CGRect Extensions + @MainActor func testCGRectCreation() { XCTAssertEqual(CGRect(left: 10, top: 10, right: 50, bottom: 50), CGRect(x: 10, y: 10, width: 40, height: 40)) XCTAssertEqual(CGRect(left: 50, top: 50, right: 10, bottom: 10), CGRect(x: 10, y: 10, width: 40, height: 40)) } + @MainActor func testCGRectInset() { // CGRect.insetBy(left:top:right:bottom:) XCTAssertEqual( @@ -165,6 +172,7 @@ final class GeometryAdditionsTests: XCTestCase { ) } + @MainActor func testCGRectSlice() { // CGRect.zero tests XCTAssert(CGRect.zero.slice(from: .minXEdge, amount: 0) == (.zero, .zero)) @@ -201,11 +209,13 @@ final class GeometryAdditionsTests: XCTestCase { // MARK: - Tests - UIEdgeInsets Extensions + @MainActor func testCreateUniformInsets() { XCTAssertEqual(UIEdgeInsets(uniform: 20), UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)) XCTAssertEqual(UIEdgeInsets(uniformOutset: 20), UIEdgeInsets(top: -20, left: -20, bottom: -20, right: -20)) } + @MainActor func testCreateInsetsByAxis() { XCTAssertEqual( UIEdgeInsets(vertical: 10, horizontal: 20), @@ -213,6 +223,7 @@ final class GeometryAdditionsTests: XCTestCase { ) } + @MainActor func testInsetAmountOnAxis() { XCTAssertEqual(UIEdgeInsets(top: 10, left: 20, bottom: 30, right: 40).horizontalAmount, 60) XCTAssertEqual(UIEdgeInsets(top: 10, left: 20, bottom: 15, right: 40).verticalAmount, 25) @@ -223,6 +234,7 @@ final class GeometryAdditionsTests: XCTestCase { // MARK: - Tests - NSDirectionalEdgeInsets Extensions + @MainActor func testCreateUniformDirectionalInsets() { XCTAssertEqual( NSDirectionalEdgeInsets(uniform: 20), @@ -234,6 +246,7 @@ final class GeometryAdditionsTests: XCTestCase { ) } + @MainActor func testCreateDirectionalInsetsByAxis() { XCTAssertEqual( NSDirectionalEdgeInsets(vertical: 10, horizontal: 20), @@ -241,6 +254,7 @@ final class GeometryAdditionsTests: XCTestCase { ) } + @MainActor func testDirectionalInsetAmountOnAxis() { XCTAssertEqual(NSDirectionalEdgeInsets(top: 10, leading: 20, bottom: 30, trailing: 40).horizontalAmount, 60) XCTAssertEqual(NSDirectionalEdgeInsets(top: 10, leading: 20, bottom: 15, trailing: 40).verticalAmount, 25) diff --git a/ParalayoutTests/InterpolationTests.swift b/ParalayoutTests/InterpolationTests.swift index 59ea32b..853a769 100644 --- a/ParalayoutTests/InterpolationTests.swift +++ b/ParalayoutTests/InterpolationTests.swift @@ -22,6 +22,7 @@ final class InterpolationTests: XCTestCase { // MARK: - CGRect + @MainActor func testCGRectInterpolation() { let startRect = CGRect(x: 1, y: 2, width: 5, height: 6) let endRect = CGRect(x: 3, y: 4, width: 7, height: 8) @@ -33,6 +34,7 @@ final class InterpolationTests: XCTestCase { // MARK: - Float + @MainActor func testLinearFloatInterpolation_fromMinToMax() { let value: Float = 3.0 let min: Float = 1.0 @@ -43,6 +45,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 3) } + @MainActor func testEaseInFloatInterpolation_fromMinToMax() { let value: Float = 3.0 let min: Float = 1.0 @@ -53,6 +56,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 2) } + @MainActor func testEaseOutFloatInterpolation_fromMinToMax() { let value: Float = 3.0 let min: Float = 1.0 @@ -63,6 +67,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 4) } + @MainActor func testEaseInOutFloatInterpolation_fromMinToMax() { let value: Float = 3.0 let min: Float = 1.0 @@ -73,6 +78,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 3) } + @MainActor func testLinearFloatInterpolation_ofUnit() { let value: Float = 3.0 let min: Float = 1.0 @@ -82,6 +88,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 5) } + @MainActor func testEaseInFloatInterpolation_ofUnit() { let value: Float = 3.0 let min: Float = 1.0 @@ -91,6 +98,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 5) } + @MainActor func testEaseOutFloatInterpolation_ofUnit() { let value: Float = 3.0 let min: Float = 1.0 @@ -100,6 +108,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 5) } + @MainActor func testEaseInOutFloatInterpolation_ofUnit() { let value: Float = 3.0 let min: Float = 1.0 @@ -109,6 +118,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 5) } + @MainActor func testLinearFloatInterpolation_fromMinToMax_withMidpoint() { let value: Float = 3.0 let min: Float = 1.0 @@ -120,6 +130,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 2) } + @MainActor func testEaseInFloatInterpolation_fromMinToMax_withMidpoint() { let value: Float = 3.0 let min: Float = 1.0 @@ -131,6 +142,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 2) } + @MainActor func testEaseOutFloatInterpolation_fromMinToMax_withMidpoint() { let value: Float = 3.0 let min: Float = 1.0 @@ -142,6 +154,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 2) } + @MainActor func testEaseInOutFloatInterpolation_fromMinToMax_withMidpoint() { let value: Float = 3.0 let min: Float = 1.0 @@ -155,6 +168,7 @@ final class InterpolationTests: XCTestCase { // MARK: - Double + @MainActor func testLinearDoubleInterpolation_fromMinToMax() { let value: Double = 3.0 let min: Double = 1.0 @@ -165,6 +179,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 3) } + @MainActor func testEaseInDoubleInterpolation_fromMinToMax() { let value: Double = 3.0 let min: Double = 1.0 @@ -175,6 +190,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 2) } + @MainActor func testEaseOutDoubleInterpolation_fromMinToMax() { let value: Double = 3.0 let min: Double = 1.0 @@ -185,6 +201,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 4) } + @MainActor func testEaseInOutDoubleInterpolation_fromMinToMax() { let value: Double = 3.0 let min: Double = 1.0 @@ -195,6 +212,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 3) } + @MainActor func testLinearDoubleInterpolation_ofUnit() { let value: Double = 3.0 let min: Double = 1.0 @@ -204,6 +222,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 5) } + @MainActor func testEaseInDoubleInterpolation_ofUnit() { let value: Double = 3.0 let min: Double = 1.0 @@ -213,6 +232,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 5) } + @MainActor func testEaseOutDoubleInterpolation_ofUnit() { let value: Double = 3.0 let min: Double = 1.0 @@ -222,6 +242,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 5) } + @MainActor func testEaseInOutDoubleInterpolation_ofUnit() { let value: Double = 3.0 let min: Double = 1.0 @@ -231,6 +252,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 5) } + @MainActor func testLinearDoubleInterpolation_fromMinToMax_withMidpoint() { let value: Double = 3.0 let min: Double = 1.0 @@ -242,6 +264,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 2) } + @MainActor func testEaseInDoubleInterpolation_fromMinToMax_withMidpoint() { let value: Double = 3.0 let min: Double = 1.0 @@ -253,6 +276,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 2) } + @MainActor func testEaseOutDoubleInterpolation_fromMinToMax_withMidpoint() { let value: Double = 3.0 let min: Double = 1.0 @@ -264,6 +288,7 @@ final class InterpolationTests: XCTestCase { XCTAssertEqual(interpolation, 2) } + @MainActor func testEaseInOutDoubleInterpolation_fromMinToMax_withMidpoint() { let value: Double = 3.0 let min: Double = 1.0 diff --git a/ParalayoutTests/PositionTests.swift b/ParalayoutTests/PositionTests.swift index e7b297d..5345851 100644 --- a/ParalayoutTests/PositionTests.swift +++ b/ParalayoutTests/PositionTests.swift @@ -20,6 +20,7 @@ import XCTest final class PositionTests: XCTestCase { + @MainActor func testResolvePositionsInLeftToRightLayout() { func resolve(_ position: Position) -> ResolvedPosition { return ResolvedPosition(resolving: position, with: .leftToRight) @@ -45,6 +46,7 @@ final class PositionTests: XCTestCase { XCTAssertEqual(resolve(.bottomTrailing), .bottomRight) } + @MainActor func testResolvePositionsInRightToLeftLayout() { func resolve(_ position: Position) -> ResolvedPosition { return ResolvedPosition(resolving: position, with: .rightToLeft) diff --git a/ParalayoutTests/UIViewFrameTests.swift b/ParalayoutTests/UIViewFrameTests.swift index 5826351..8a88c13 100644 --- a/ParalayoutTests/UIViewFrameTests.swift +++ b/ParalayoutTests/UIViewFrameTests.swift @@ -23,6 +23,7 @@ final class UIViewFrameTests: XCTestCase { // MARK: - Tests + @MainActor func testUntransformedFrameGetter_simpleFrames() { let view = UIView() @@ -36,6 +37,7 @@ final class UIViewFrameTests: XCTestCase { assertUntransformedFrameIsAccurate(for: view) } + @MainActor func testUntransformedFrameSetter_simpleFrames() { let view = UIView() @@ -44,6 +46,7 @@ final class UIViewFrameTests: XCTestCase { XCTAssertEqual(view.untransformedFrame, newValue) } + @MainActor func testUntransformedFrameGetter_nonIdentityTransform() { let view = UIView(frame: CGRect(x: 10, y: 20, width: 30, height: 40)) @@ -54,6 +57,7 @@ final class UIViewFrameTests: XCTestCase { assertUntransformedFrameIsAccurate(for: view) } + @MainActor func testUntransformedFrameSetter_nonIdentityTransform() { let view = UIView(frame: CGRect(x: 10, y: 20, width: 30, height: 40)) @@ -66,6 +70,7 @@ final class UIViewFrameTests: XCTestCase { XCTAssertEqual(view.transform, transform) } + @MainActor func testUntransformedFrameGetter_nonCenterAnchorPoint() { let view = UIView(frame: CGRect(x: 10, y: 20, width: 30, height: 40)) @@ -76,6 +81,7 @@ final class UIViewFrameTests: XCTestCase { assertUntransformedFrameIsAccurate(for: view) } + @MainActor func testUntransformedFrameSetter_nonCenterAnchorPoint() { let view = UIView(frame: CGRect(x: 10, y: 20, width: 30, height: 40)) @@ -88,6 +94,7 @@ final class UIViewFrameTests: XCTestCase { XCTAssertEqual(view.layer.anchorPoint, anchorPoint) } + @MainActor func testUntransformedFrameGetter_nonZeroOriginBounds() { let view = UIView(frame: CGRect(x: 10, y: 20, width: 30, height: 40)) @@ -95,6 +102,7 @@ final class UIViewFrameTests: XCTestCase { assertUntransformedFrameIsAccurate(for: view) } + @MainActor func testUntransformedFrameSetter_nonZeroOriginBounds() { let view = UIView(frame: CGRect(x: 10, y: 20, width: 30, height: 40)) @@ -107,6 +115,7 @@ final class UIViewFrameTests: XCTestCase { XCTAssertEqual(view.bounds.origin, boundsOrigin) } + @MainActor func testUntransformedConvert_siblingViews() throws { let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) @@ -139,6 +148,7 @@ final class UIViewFrameTests: XCTestCase { try assertUntransformedConvertIsAccurate(for: CGPoint(x: 2, y: 3), in: view2, convertedTo: view1) } + @MainActor func testUntransformedConvert_verticalHierarchy() throws { let view1 = UIView(frame: CGRect(x: 1, y: 2, width: 10, height: 10)) @@ -155,6 +165,7 @@ final class UIViewFrameTests: XCTestCase { try assertUntransformedConvertIsAccurate(for: CGPoint(x: -7, y: 8), in: view3, convertedTo: view1) } + @MainActor func testUntransformedConvert_nonZeroBounds() throws { let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) @@ -176,6 +187,7 @@ final class UIViewFrameTests: XCTestCase { try assertUntransformedConvertIsAccurate(for: CGPoint(x: 1, y: 2), in: view2, convertedTo: view3) } + @MainActor func testUntransformedConvert_nonIdentityTransforms() throws { let view1 = UIView(frame: CGRect(x: 1, y: 2, width: 10, height: 10)) view1.transform = .init(rotationAngle: 0.1) @@ -202,6 +214,7 @@ final class UIViewFrameTests: XCTestCase { // MARK: - Private Helper Methods + @MainActor func assertUntransformedFrameIsAccurate(for view: UIView, file: StaticString = #file, line: UInt = #line) { let actualValue = view.untransformedFrame @@ -213,6 +226,7 @@ final class UIViewFrameTests: XCTestCase { view.layer.transform = originalTransform } + @MainActor func assertUntransformedConvertIsAccurate( for point: CGPoint, in sourceView: UIView, diff --git a/ParalayoutTests/UIViewSizingTests.swift b/ParalayoutTests/UIViewSizingTests.swift index 4d8531e..7de01a5 100644 --- a/ParalayoutTests/UIViewSizingTests.swift +++ b/ParalayoutTests/UIViewSizingTests.swift @@ -22,6 +22,7 @@ final class UIViewSizingTests: XCTestCase { // MARK: - Tests - Size That Fits + @MainActor func testSizeThatFitsWithNoConstraints() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) @@ -31,6 +32,7 @@ final class UIViewSizingTests: XCTestCase { ) } + @MainActor func testSizeThatFitsWithMaxWidthConstraints() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) @@ -40,6 +42,7 @@ final class UIViewSizingTests: XCTestCase { ) } + @MainActor func testSizeThatFitsWithMaxHeightConstraints() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) @@ -49,6 +52,7 @@ final class UIViewSizingTests: XCTestCase { ) } + @MainActor func testSizeThatFitsWithMaxSizeConstraints() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) @@ -58,6 +62,7 @@ final class UIViewSizingTests: XCTestCase { ) } + @MainActor func testSizeThatFitsWithMinWidthConstraints() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) @@ -67,6 +72,7 @@ final class UIViewSizingTests: XCTestCase { ) } + @MainActor func testSizeThatFitsWithMinHeightConstraints() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) @@ -76,6 +82,7 @@ final class UIViewSizingTests: XCTestCase { ) } + @MainActor func testSizeThatFitsWithMinSizeConstraints() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) @@ -87,6 +94,7 @@ final class UIViewSizingTests: XCTestCase { // MARK: - Tests - Size To Fit + @MainActor func testSizeToFitWithNoConstraints() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) testView.sizeToFit(.zero) @@ -97,6 +105,7 @@ final class UIViewSizingTests: XCTestCase { ) } + @MainActor func testSizeToFitWithMaxSizeConstraints() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) testView.sizeToFit(.init(width: 100, height: 50), constraints: .maxSize) @@ -107,6 +116,7 @@ final class UIViewSizingTests: XCTestCase { ) } + @MainActor func testSizeToFitWithTransform() { let testView = TestView(sizeThatFits: .init(width: 300, height: 200)) testView.transform = .init(scaleX: 2, y: 2) @@ -117,6 +127,7 @@ final class UIViewSizingTests: XCTestCase { XCTAssertEqual(testView.frame.size, .init(width: 200, height: 100)) } + @MainActor func testSizeToFitWithNegativeWidth() { let testView = TestView(sizeThatFits: .init(width: -50, height: 200)) testView.sizeToFit(.init(width: 100, height: 50)) @@ -124,6 +135,7 @@ final class UIViewSizingTests: XCTestCase { XCTAssertEqual(testView.bounds.size, .init(width: 0, height: 200)) } + @MainActor func testSizeToFitWithNegativeHeight() { let testView = TestView(sizeThatFits: .init(width: 200, height: -50)) testView.sizeToFit(.init(width: 100, height: 50)) diff --git a/ParalayoutTests/ViewArrayBuilderTests.swift b/ParalayoutTests/ViewArrayBuilderTests.swift index 7f1f92d..921642d 100644 --- a/ParalayoutTests/ViewArrayBuilderTests.swift +++ b/ParalayoutTests/ViewArrayBuilderTests.swift @@ -22,6 +22,7 @@ final class ViewArrayBuilderTests: XCTestCase { // MARK: - Tests + @MainActor func testSimpleResultBuilder() throws { let view1 = UIView() let view2 = UIView() @@ -37,6 +38,7 @@ final class ViewArrayBuilderTests: XCTestCase { ) } + @MainActor func testIfTrueResultBuilder() throws { let view1 = UIView() let view2 = UIView() @@ -58,6 +60,7 @@ final class ViewArrayBuilderTests: XCTestCase { ) } + @MainActor func testIfFalseResultBuilder() throws { let view1 = UIView() let view2 = UIView() @@ -78,6 +81,7 @@ final class ViewArrayBuilderTests: XCTestCase { ) } + @MainActor func testIfElseFirstBranchResultBuilder() throws { let view1 = UIView() let view2 = UIView() @@ -102,6 +106,7 @@ final class ViewArrayBuilderTests: XCTestCase { ) } + @MainActor func testIfElseSecondBranchResultBuilder() throws { let view1 = UIView() let view2 = UIView() @@ -126,6 +131,7 @@ final class ViewArrayBuilderTests: XCTestCase { ) } + @MainActor func testSwitchCaseResultBuilder() throws { let view1 = UIView() let view2 = UIView() @@ -150,6 +156,7 @@ final class ViewArrayBuilderTests: XCTestCase { ) } + @MainActor func testSwitchDefaultResultBuilder() throws { let view1 = UIView() let view2 = UIView() @@ -173,6 +180,7 @@ final class ViewArrayBuilderTests: XCTestCase { ) } + @MainActor func testForLoopResultBuilder() throws { let views = [UIView(), UIView(), UIView()] XCTAssertEqual( @@ -187,6 +195,7 @@ final class ViewArrayBuilderTests: XCTestCase { // MARK: - Private Methods + @MainActor private func viewArray(@ViewArrayBuilder _ builder: () -> [UIView]) -> [UIView] { builder() } From 27fb23f48e93d8046f153a9215cf4cf4af69873c Mon Sep 17 00:00:00 2001 From: Nick Entin Date: Wed, 28 Aug 2024 17:09:46 -0700 Subject: [PATCH 6/9] Even more main actor --- ParalayoutTests/PixelRoundingTests.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ParalayoutTests/PixelRoundingTests.swift b/ParalayoutTests/PixelRoundingTests.swift index 4af73e1..7f2e43f 100644 --- a/ParalayoutTests/PixelRoundingTests.swift +++ b/ParalayoutTests/PixelRoundingTests.swift @@ -22,6 +22,7 @@ final class PixelRoundingTests: XCTestCase { // MARK: - Private Types + @MainActor private enum Samples { static let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) static let view = UIView() @@ -29,6 +30,7 @@ final class PixelRoundingTests: XCTestCase { // MARK: - XCTest + @MainActor override func setUp() { super.setUp() From b3750109a5b69b3cd39e53f3e3b1373f7400ff19 Mon Sep 17 00:00:00 2001 From: Nick Entin Date: Wed, 28 Aug 2024 17:20:28 -0700 Subject: [PATCH 7/9] So much main actor --- .../SnapshotTestCase.swift | 18 +++++++++++------- .../ViewDistributionSnapshotTests.swift | 4 ++++ .../ViewSpreadingSnapshotTests.swift | 2 ++ ParalayoutTests/PixelRoundingTests.swift | 9 +++++---- .../ViewDistributionBuilderTests.swift | 1 + 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/Example/ParalayoutSnapshotTests/SnapshotTestCase.swift b/Example/ParalayoutSnapshotTests/SnapshotTestCase.swift index 211220a..26623c8 100644 --- a/Example/ParalayoutSnapshotTests/SnapshotTestCase.swift +++ b/Example/ParalayoutSnapshotTests/SnapshotTestCase.swift @@ -14,7 +14,7 @@ // limitations under the License. // -import SnapshotTesting +@preconcurrency import SnapshotTesting import XCTest class SnapshotTestCase: XCTestCase { @@ -31,6 +31,7 @@ class SnapshotTestCase: XCTestCase { // MARK: - Public Methods + @MainActor func matchesCurrentDevice() -> Bool { let device = UIDevice.current let screen = UIScreen.main @@ -56,18 +57,21 @@ class SnapshotTestCase: XCTestCase { // MARK: - XCTestCase - override class func setUp() { - super.setUp() + override func setUp() async throws { + try await super.setUp() - guard SnapshotTestCase.testedDevices.contains(where: { $0.matchesCurrentDevice() }) else { - fatalError("Attempting to run tests on a device for which we have not collected test data") - } + await Task { @MainActor in + guard SnapshotTestCase.testedDevices.contains(where: { $0.matchesCurrentDevice() }) else { + fatalError("Attempting to run tests on a device for which we have not collected test data") + } - isRecording = false + isRecording = false + }.value } // MARK: - Public Methods + @MainActor func nameForSnapshot(with parameters: [String?]) -> String { let size = UIScreen.main.bounds.size let scale = UIScreen.main.scale diff --git a/Example/ParalayoutSnapshotTests/ViewDistributionSnapshotTests.swift b/Example/ParalayoutSnapshotTests/ViewDistributionSnapshotTests.swift index 7a63b0e..fd2f9f7 100644 --- a/Example/ParalayoutSnapshotTests/ViewDistributionSnapshotTests.swift +++ b/Example/ParalayoutSnapshotTests/ViewDistributionSnapshotTests.swift @@ -19,6 +19,7 @@ import SnapshotTesting final class ViewDistributionSnapshotTests: SnapshotTestCase { + @MainActor func testDistribution() { let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 200)) containerView.backgroundColor = .white @@ -45,6 +46,7 @@ final class ViewDistributionSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: ["vertical"])) } + @MainActor func testDistributionIgnoresTransform() { let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 200)) containerView.backgroundColor = .white @@ -72,6 +74,7 @@ final class ViewDistributionSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: [])) } + @MainActor func testDistributionUsingCapInsets() { let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 80)) containerView.backgroundColor = .white @@ -104,6 +107,7 @@ final class ViewDistributionSnapshotTests: SnapshotTestCase { assertSnapshot(matching: containerView, as: .image, named: nameForSnapshot(with: [])) } + @MainActor func testHorizontalDistributionFollowsLayoutDirection() { let view = HorizontalDistributionView(frame: CGRect(x: 0, y: 0, width: 160, height: 60)) diff --git a/Example/ParalayoutSnapshotTests/ViewSpreadingSnapshotTests.swift b/Example/ParalayoutSnapshotTests/ViewSpreadingSnapshotTests.swift index 6c03698..b86c8c8 100644 --- a/Example/ParalayoutSnapshotTests/ViewSpreadingSnapshotTests.swift +++ b/Example/ParalayoutSnapshotTests/ViewSpreadingSnapshotTests.swift @@ -19,6 +19,7 @@ import SnapshotTesting final class ViewSpeadingSnapshotTests: SnapshotTestCase { + @MainActor func testHorizontallySpreadSubviews() { let container = UIView(frame: CGRect(x: 0, y: 0, width: 400, height: 100)) container.backgroundColor = .white @@ -92,6 +93,7 @@ final class ViewSpeadingSnapshotTests: SnapshotTestCase { verifySnapshot(margin: 40, inRect: CGRect(x: 20, y: 10, width: 300, height: 50)) } + @MainActor func testVerticallySpreadSubviews() { let container = UIView(frame: CGRect(x: 0, y: 0, width: 400, height: 100)) container.backgroundColor = .white diff --git a/ParalayoutTests/PixelRoundingTests.swift b/ParalayoutTests/PixelRoundingTests.swift index 7f2e43f..357fcac 100644 --- a/ParalayoutTests/PixelRoundingTests.swift +++ b/ParalayoutTests/PixelRoundingTests.swift @@ -30,11 +30,12 @@ final class PixelRoundingTests: XCTestCase { // MARK: - XCTest - @MainActor - override func setUp() { - super.setUp() + override func setUp() async throws { + try await super.setUp() - Samples.window.addSubview(Samples.view) + await Task { @MainActor in + Samples.window.addSubview(Samples.view) + }.value } // MARK: - Tests - Pixel Rounding diff --git a/ParalayoutTests/ViewDistributionBuilderTests.swift b/ParalayoutTests/ViewDistributionBuilderTests.swift index 1353ec7..8937188 100644 --- a/ParalayoutTests/ViewDistributionBuilderTests.swift +++ b/ParalayoutTests/ViewDistributionBuilderTests.swift @@ -201,6 +201,7 @@ final class ViewDistributionBuilderTests: XCTestCase { #endif extension ViewDistributionItem: Equatable { + nonisolated public static func == (lhs: ViewDistributionItem, rhs: ViewDistributionItem) -> Bool { switch (lhs, rhs) { case let (.view(lhsView, lhsEdgeInsets), .view(rhsView, rhsEdgeInsets)): From 780f35e56657d7ccc25a5659f34d0372cabc3f53 Mon Sep 17 00:00:00 2001 From: Nick Entin Date: Wed, 28 Aug 2024 17:39:27 -0700 Subject: [PATCH 8/9] One more place I forgot --- ParalayoutTests/DistributionTests.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ParalayoutTests/DistributionTests.swift b/ParalayoutTests/DistributionTests.swift index 46eec39..03645df 100644 --- a/ParalayoutTests/DistributionTests.swift +++ b/ParalayoutTests/DistributionTests.swift @@ -88,6 +88,7 @@ final class DistributionTests: XCTestCase { } } + @MainActor func testOrthogonalAlignmentInVerticalDistribution_leftToRightLayout() { let container = UIView(frame: .init(x: 0, y: 0, width: 200, height: 1000)) container.semanticContentAttribute = .forceLeftToRight @@ -150,6 +151,7 @@ final class DistributionTests: XCTestCase { } } + @MainActor func testOrthogonalAlignmentInVerticalDistribution_rightToLeftLayout() { let container = UIView(frame: .init(x: 0, y: 0, width: 200, height: 1000)) container.semanticContentAttribute = .forceRightToLeft From c3d8e1d4cab875fc12159cacf34498a976fc3c7d Mon Sep 17 00:00:00 2001 From: Nick Entin Date: Wed, 28 Aug 2024 17:44:06 -0700 Subject: [PATCH 9/9] Remove test that relies on deprecated APIs --- ParalayoutTests/PixelRoundingTests.swift | 47 ------------------------ 1 file changed, 47 deletions(-) diff --git a/ParalayoutTests/PixelRoundingTests.swift b/ParalayoutTests/PixelRoundingTests.swift index 357fcac..5cc4178 100644 --- a/ParalayoutTests/PixelRoundingTests.swift +++ b/ParalayoutTests/PixelRoundingTests.swift @@ -20,24 +20,6 @@ import XCTest final class PixelRoundingTests: XCTestCase { - // MARK: - Private Types - - @MainActor - private enum Samples { - static let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) - static let view = UIView() - } - - // MARK: - XCTest - - override func setUp() async throws { - try await super.setUp() - - await Task { @MainActor in - Samples.window.addSubview(Samples.view) - }.value - } - // MARK: - Tests - Pixel Rounding @MainActor @@ -112,33 +94,4 @@ final class PixelRoundingTests: XCTestCase { ) } - // MARK: - Tests - Scale Factor - - @MainActor - func testViewScaleFactor() { - // A view should inherit the scale factor of its parent screen. - for screen in screensToTest() { - Samples.window.screen = screen - XCTAssertEqual(Samples.view.pixelsPerPoint, screen.pixelsPerPoint) - } - - // With no superview, the main screen's scale should be used. - Samples.view.removeFromSuperview() - XCTAssert(Samples.view.pixelsPerPoint == UIScreen.main.pixelsPerPoint) - } - - // MARK: - Private Methods - - @MainActor - private func screensToTest() -> [UIScreen] { - if #available(iOS 13, *) { - // In iOS 13 and later, there is a bug around setting `UIWindow.screen` that prevents us from testing - // multiple screens (FB8674601). - return [.main] - - } else { - return TestScreen.all - } - } - }