15757 Commits

Author SHA1 Message Date
Héctor Ramos
af6de4e8c8 [0.59.0-rc.0] Bump version numbers 2019-02-13 12:03:09 -08:00
Héctor Ramos
b2f5e451cf Revert to prior Circle CI Android config
The new Docker image lacks git and is blocking the 0.59 release
2019-02-13 11:59:26 -08:00
Héctor Ramos
cef5ad6964 Revert "[0.59.0-rc.0] Bump version numbers"
This reverts commit 517c165daee27a7e6d61f4432599fd311186fc8f.
2019-02-13 11:52:49 -08:00
Mike Grabowski
517c165dae [0.59.0-rc.0] Bump version numbers 2019-02-13 20:15:31 +01:00
Mike Grabowski
8b75677fdb Revert "[0.59.0-rc.0] Bump version numbers"
This reverts commit d47aa28ef7dc0f7f8093a481c921cee202351fb7.
2019-02-13 20:15:00 +01:00
Mike Grabowski
d47aa28ef7 [0.59.0-rc.0] Bump version numbers 2019-02-13 18:04:43 +01:00
Mike Grabowski
aca5f05ffe Set ReactNativePath while building RNTester 2019-02-13 17:40:06 +01:00
Mike Grabowski
7f5e04443f Fix Android Gradle build 2019-02-13 17:33:10 +01:00
Dulmandakh
724d83a966 improve Android Network Security config (#23429)
Summary:
This PR is trying to improve Android Network Security configuration introduced in 84572c4051. I found that Android merges all manifest files into a single manifest file when building an app, so this PR provides AndroidManifest.xml with network security config in debug folder, that will be used only for debug builds. Also the network security configuration will be applied to only app that target API 28. Moved security config file to xml-v28, so that it'll only visible to API 28 and above.

See https://developer.android.com/studio/build/manifest-merge

[Android] [Changed] -  Android Network Security configuration.
Pull Request resolved: https://github.com/facebook/react-native/pull/23429

Differential Revision: D14065124

Pulled By: cpojer

fbshipit-source-id: 0f5ac5addbe968ed7e5cb57f356e2572de2690a8
2019-02-13 17:12:28 +01:00
Dulmandakh
e6d8ac8424 @Nonnull annotation for ReactPackage (#23415)
Summary:
Here are some leftovers from nullable annotations for native modules, discovered while developing native module in Kotlin. This will help improve Kotlin developer experience

[Android] [Changed] - Add Nonnull annotations to ReactPackage
Pull Request resolved: https://github.com/facebook/react-native/pull/23415

Differential Revision: D14064607

Pulled By: cpojer

fbshipit-source-id: af2ce1fc1911ee03c54b20a4fc3a6d1aba9267da
2019-02-13 17:12:21 +01:00
Dulmandakh
818f6bb248 bump targetSdkVersion to 28 (#23431)
Summary:
Bump targetSdkVersion to 28

[Android] [Changed] - Bump targetSdkVersion to 28
Pull Request resolved: https://github.com/facebook/react-native/pull/23431

Differential Revision: D14065177

Pulled By: cpojer

fbshipit-source-id: a161d1d385b7b40ec93d70851e5a41baeb58f830
2019-02-13 17:12:08 +01:00
Mike Grabowski
d37ffc3cfd Fix React Native calling CLI wo location 2019-02-13 17:10:41 +01:00
Mike Grabowski
a962cb659f Revert "[0.59.0-rc.0] Bump version numbers"
This reverts commit d059e747041296d79094ed0a8ad4e721134420b7.
2019-02-13 17:10:19 +01:00
Mike Grabowski
d059e74704 [0.59.0-rc.0] Bump version numbers 2019-02-13 16:47:58 +01:00
Mike Grabowski
1f099672be Fix React Native calling private CLI APIs 2019-02-13 16:47:52 +01:00
Mike Grabowski
9f96606d32 Revert "[0.59.0-rc.0] Bump version numbers"
This reverts commit 69e5c2ddc18eee8ee6108f5fc9bad91cba9407af.
2019-02-13 16:47:27 +01:00
Mike Grabowski
69e5c2ddc1 [0.59.0-rc.0] Bump version numbers 2019-02-13 16:37:12 +01:00
Mike Grabowski
977458442c Revert "add basic signature in template (#22665)"
This reverts commit 63ebbd6bfcc9b76c000ed72a875218d388a7ee09.
2019-02-13 16:35:06 +01:00
Mike Grabowski
a252aee2ea Bump CLI dependency 2019-02-13 16:35:02 +01:00
Mike Grabowski
06bc4b5b7c Explicitly set path to React Native for development 2019-02-13 15:23:30 +01:00
Mike Grabowski
5e1504b0fc Update CLI dependency 2019-02-13 15:21:28 +01:00
Wellinton Monge
e2bd7db732 Merge AlertIOS with Alert (#23318)
Summary:
Itwas merged AlertIOS into Alert and removed type parameter from Alert.alert line 60 at Alert.js

[AlertIOS] [Change and Replace] - Merge AlertIOS into Alert.
Pull Request resolved: https://github.com/facebook/react-native/pull/23318

Reviewed By: mjesun

Differential Revision: D14031421

Pulled By: cpojer

fbshipit-source-id: 98db173adeb65aa90d309f8a583993bc0cddb6e1
2019-02-12 07:38:42 -08:00
Mike Nedosekin
4ac65f5413 Add deprecation warning for MaskedViewIOS (#23398)
Summary:
Add a deprecation warning for the [MaskedViewIOS](https://facebook.github.io/react-native/docs/maskedviewios) module as part of #23313.
[General] [Deprecated] - Deprecated [MaskedViewIOS](https://facebook.github.io/react-native/docs/maskedviewios) as it has now been moved to [react-native-community/masked-view](https://github.com/react-native-community/react-native-masked-view)
Pull Request resolved: https://github.com/facebook/react-native/pull/23398

Differential Revision: D14045290

Pulled By: cpojer

fbshipit-source-id: e97230f6861cf35ee0b49376d0a5c9c47d4e99f8
2019-02-12 07:14:02 -08:00
Dulmandakh
7b33d6b0b9 fix WritableArray, WritableMap nullable annotations (#23397)
Summary:
Recently, I added nullable annotations to ReadableArray, ReadableMap, WritableArray, WritableMap and subclasses to improve Kotlin developer experience. But found that I made mistake with pushArray, pushMap, pushString method of WritableArray, and putArray, putMap, putString methods of WritableMap. This PR fixes previous mistake.

Excerpt from WritableNativeArray.cpp.
```cpp
void WritableNativeArray::pushString(jstring value) {
  if (value == NULL) {
    pushNull();
    return;
  }
  throwIfConsumed();
  array_.push_back(wrap_alias(value)->toStdString());
}

void WritableNativeArray::pushNativeArray(WritableNativeArray* otherArray) {
  if (otherArray == NULL) {
    pushNull();
    return;
  }
  throwIfConsumed();
  array_.push_back(otherArray->consume());
}

void WritableNativeArray::pushNativeMap(WritableNativeMap* map) {
  if (map == NULL) {
    pushNull();
    return;
  }
  throwIfConsumed();
  array_.push_back(map->consume());
}
```

Excerpt from WritableNativeMap.cpp
```cpp
void WritableNativeMap::putString(std::string key, alias_ref<jstring> val) {
  if (!val) {
    putNull(std::move(key));
    return;
  }
  throwIfConsumed();
  map_.insert(std::move(key), val->toString());
}

void WritableNativeMap::putNativeArray(std::string key, WritableNativeArray* otherArray) {
  if (!otherArray) {
    putNull(std::move(key));
    return;
  }
  throwIfConsumed();
  map_.insert(key, otherArray->consume());
}

void WritableNativeMap::putNativeMap(std::string key, WritableNativeMap *otherMap) {
  if (!otherMap) {
    putNull(std::move(key));
    return;
  }
  throwIfConsumed();
  map_.insert(std::move(key), otherMap->consume());
}
```

[Android] [Changed] - fix nullable annotations in WritableArray, WritableMap
Pull Request resolved: https://github.com/facebook/react-native/pull/23397

Differential Revision: D14044014

Pulled By: cpojer

fbshipit-source-id: c44ea2e097e7b1156223b516aa640a181f0d4a9b
2019-02-12 06:26:34 -08:00
ferrannp
77300ca91c Add deprecation warning for ViewPagerAndroid (#23395)
Summary:
Add a deprecation warning for the [ViewPagerAndroid](https://facebook.github.io/react-native/docs/viewpagerandroid) module as part of #23313.

[General] [Deprecated] - Deprecated [ViewPagerAndroid](https://facebook.github.io/react-native/docs/viewpagerandroid) as it has now been moved to [react-native-community/viewpager](https://github.com/react-native-community/react-native-viewpager)
Pull Request resolved: https://github.com/facebook/react-native/pull/23395

Differential Revision: D14043025

Pulled By: cpojer

fbshipit-source-id: 2f7988fe69dbeff0f3add9babcb15d7eb974863e
2019-02-12 05:26:11 -08:00
Alex Dvornikov
3c74b6ea34 Bring back the unit tests for the Cxx implementation
Reviewed By: jeanlauliac

Differential Revision: D14026623

fbshipit-source-id: 76a4089bb09b7e5152e992a91eae0427877767c0
2019-02-12 04:50:52 -08:00
Evan Bacon
daa79b0f97 Add Platform module for web target (#23387)
Summary:
Added a Platform file for module for instances where internal modules need Platform.
ex: 78be6efda9/Libraries/Utilities/Dimensions.js (L14)

* Added `Libraries/Utilities/Platform.web.js`
[CATEGORY] [TYPE] - Message
Pull Request resolved: https://github.com/facebook/react-native/pull/23387

Differential Revision: D14041834

Pulled By: cpojer

fbshipit-source-id: 9be7ad647d6a644956efa622b936fcecee7c1a1f
2019-02-12 03:32:29 -08:00
Kevin Gozali
344b32bb64 TM iOS: avoid bad memory access when passing prop name to a lambda
Summary: Depending on the timing of the method call from JS to a CxxModule, we may be accessing memory that has been deallocated, causing exception to RN runtime. This fixes it.

Reviewed By: JoshuaGross, mdvacca

Differential Revision: D14033831

fbshipit-source-id: 5a77aa41223b1fc3146dcf78b7f8e93375605d6d
2019-02-11 17:29:14 -08:00
Joshua Gross
2c09c06a4d Enable support for using new MobileConfigNativeModule in RN Core/Fabric C++
Summary: Enable support for using new MobileConfigNativeModule in RN Core/Fabric C++. Hack will be removed as part of T40273916 once MobileConfigNativeModule has rolled out to 100% of users and FbReactMobileConfigModule has been removed.

Reviewed By: mdvacca

Differential Revision: D14015962

fbshipit-source-id: 1b8ff0fb447040393a25fd03d9fb868877228ecc
2019-02-11 16:56:14 -08:00
Joshua Gross
a15e723476 Support MobileConfig in Fabric Core C++ in FB4A and Catalyst
Summary:
MobileConfig should be wrapped and presented as a ReactNativeConfig object so that core Fabric C++ code can use it.

This is just a noop plumbing diff. Real support will be added in follow-on diff.

Reviewed By: fkgozali

Differential Revision: D13985466

fbshipit-source-id: a2ac2175688e855eda3b89aa69faf07749c6bd31
2019-02-11 16:56:14 -08:00
Spencer Ahrens
864a30185d Add more init perf markers
Summary:
Adding some more systrace markers to track load application and the initial bits of MarketplaceHomeApp.

There are a couple big segments worth pointing out with timing from a local `__DEV__: false` run:

* JSBundleRequireTime_end -> BundlePreInitializeCore_start: 360ms
* MobileConfigModuleInit: 210ms
* renderApplication_React_render_start -> MarketplaceHomeAppConstructorSuper_start: 180ms
* MarketplaceHomeAppGetQueryParamsForCachedTopPicks: 100ms

I'm not sure what we can do about any of these except for MarketplaceHomeAppGetQueryParamsForCachedTopPicks where we could break the query params out into a separate file so we don't have to load this 11-thousand-line behemoth just so we can get this snippet:

diffusion/FBS/browse/master/xplat/js/RKJSModules/Apps/Wilde/Marketplace/apps/__generated__/MarketplaceHomeAppQuery.graphql.js$11831-11837

But maybe we have to load it anyway and the query just needs to be optimized (or maybe Relay can optimize the format here).

Reviewed By: yungsters

Differential Revision: D13969695

fbshipit-source-id: 4f39efa6cb591b814687bfe51b02ad92048f1c21
2019-02-11 16:50:40 -08:00
David Vacca
48ba44087f Remove unused code in ReactTextView
Summary: Trivial cleanup of variables and methods that were not being used in ReactTextView

Reviewed By: blairvanderhoof

Differential Revision: D14027630

fbshipit-source-id: e763d6d001d4a0c2970adebc9855190845cf5a1d
2019-02-11 16:01:05 -08:00
Valentin Shergin
222e650885 Fabric: Systraces are temporary disabled in Fabric C++ code
Summary: Now in BUCK file only, not in code.

Reviewed By: JoshuaGross

Differential Revision: D14019271

fbshipit-source-id: e1396be7156a374a1379a147ddecb83b51686121
2019-02-11 16:01:05 -08:00
Valentin Shergin
77838b5504 Fabric: Systraces are back
Summary:
It's better to comment `DWITH_FBSYSTRACE` out in BUCK files instead of removing them from the code.
I'll publish the BUCK changes as separate diff for simpler backout in the future.

Reviewed By: mdvacca

Differential Revision: D14019272

fbshipit-source-id: 8b322b5c115efe33c15929e008b97a05220813df
2019-02-11 16:01:05 -08:00
empyrical
78be6efda9 JSI: Minor tweaks for building on MSVC (#23367)
Summary:
This pull request makes two minor changes to `jsi.h`:

 * Tweak the `JSI_EXPORT` macro to automatically set itself to an empty value if `_MSC_VER` is defined - like how was done by acoates-ms [here](8beb4bb58a/ReactCommon/cxxreact/JSBigString.h (L15-L21)).
 * Tweak the call to constructor `Pointer(Runtime::PointerValue* ptr)` in the constructor for `PropNameID`. I am not sure why MSVC wasn't working with the original version, but it compiles after I tweak that.

[General] [Fixed] - Tweaked `jsi.h` to build on MSVC
Pull Request resolved: https://github.com/facebook/react-native/pull/23367

Differential Revision: D14032507

Pulled By: cpojer

fbshipit-source-id: 701c13e3509cc244dbe0c15f92067fae4382bee2
2019-02-11 15:42:18 -08:00
Andres Suarez
aefb05941a Exclude RN templates from internal linters
Reviewed By: cpojer

Differential Revision: D14032447

fbshipit-source-id: b36c2e01b10341077bec7fca43a35e980e9c13ce
2019-02-11 15:42:17 -08:00
Héctor Ramos
2af13b4477 React sync for revisions aa94237...f24a0da
Summary:
This sync includes the following changes:
- **[f24a0da6e](https://github.com/facebook/react/commit/f24a0da6e )**: Fix useImperativeHandle to have no deps by default (#14801) //<Dan Abramov>//
- **[1fecba923](https://github.com/facebook/react/commit/1fecba923 )**: Fix crash unmounting an empty Portal (#14820) //<Dan Abramov>//
- **[c11015ff4](https://github.com/facebook/react/commit/c11015ff4 )**: fix spelling mistakes (#14805) //<zhuoli99>//
- **[3e295edd5](https://github.com/facebook/react/commit/3e295edd5 )**: Typo fix in comment (#14787) //<Deniz Susman>//
- **[1d48b4a68](https://github.com/facebook/react/commit/1d48b4a68 )**: Fix hydration with createRoot warning (#14808) //<Sebastian Markbåge>//

Release Notes:
[GENERAL] [Changed] - React sync for revisions aa94237...f24a0da

Reviewed By: cpojer

Differential Revision: D14030552

fbshipit-source-id: f8df9d8e532b2afef59dbbc10715bd52fd22b355
2019-02-11 15:26:44 -08:00
Rick Hanlon
34763bf7f9 Update script to parse all specs in folder
Summary:
Updates the combine-js-to-schema to expose a cli and combine all passed files into a single schema output

Note: as far as I could tell, there isn't a way for buck to pass a glob of directories, so instead of accepting a dir and crawling it, this update accepts a list of files and combines them. Which makes sense, since buck is good at crawling already

Reviewed By: TheSavior

Differential Revision: D14007193

fbshipit-source-id: dbc209bb8d1cadd381269e9f70dc71a90f77878e
2019-02-11 15:18:39 -08:00
David Vacca
17e1694076 Stop preallocation views on the main thread
Summary:
There is no reason to allocate views ahead of time on the main thread.
There is a chance that this view will not be mounted and we are not saving any time because it's a sequential process anyway (because we are doing it on the main thread). Moreover, the switching context can only slowdown JS execution.

Reviewed By: JoshuaGross

Differential Revision: D14026379

fbshipit-source-id: 2dbe93ab32b611fae942468e7812b78afeaf34fc
2019-02-11 15:11:16 -08:00
Dulmandakh
c6c5a173bc DatePickerDialogModule supports only FragmentActivity (#23371)
Summary:
Now RN has only ReactActivity which extends AppCompatActivity, subclass of FragmentActivity, therefore no need to check if activity is FragmentActivity or not. This PR changes DatePickerDialogModule to work only with FragmentActivity.

Also DialogFragment from Android is deprecated in API 28, and recommends to use DialogFragment from Support Library. Excerpt from DialogFragment documentation.

> **This class was deprecated in API level 28.**
> Use the Support Library DialogFragment for consistent behavior across all devices and access to Lifecycle.

**BREAKING CHANGE**: Brown field apps must extend FragmentActivity or its subclasses

[Android] [Changed] - DatePickerDialogModule supports only FragmentActivity
Pull Request resolved: https://github.com/facebook/react-native/pull/23371

Differential Revision: D14030765

Pulled By: cpojer

fbshipit-source-id: 3a1811102cf68b82c139f0e20b2fc8dab5d98b69
2019-02-11 15:03:36 -08:00
Dulmandakh
be361d0fc1 TimePickerDialogModule supports only FragmentActivity (#23372)
Summary:
Now RN has only ReactActivity which extends AppCompatActivity, subclass of FragmentActivity, therefore no need to check if activity is FragmentActivity or not. This PR changes TimePickerDialogModule to work only with FragmentActivity.

Also DialogFragment from Android is deprecated in API 28, and recommends to use DialogFragment from Support Library. Excerpt from DialogFragment documentation.

> **This class was deprecated in API level 28.**
> Use the Support Library DialogFragment for consistent behavior across all devices and access to Lifecycle.

[Android] [Changed] - TimePickerDialogModule supports only FragmentActivity
Pull Request resolved: https://github.com/facebook/react-native/pull/23372

Differential Revision: D14030748

Pulled By: cpojer

fbshipit-source-id: 9b3778c90eb1c014260327513bc8709264b94431
2019-02-11 14:58:10 -08:00
zhongwuzw
9ff43abe65 Prevent crash when scrollEnabled used in singleline textinput (#23361)
Summary:
Fixes #22949 , #21339. Currently, multiline textInput uses `UITextView` but singleline textInput uses `UITextField`, so singleline textinput may crash when use `scrollEnabled` property.

[iOS] [Fixed] - Prevent crash when scrollEnabled used in singleline textinput
Pull Request resolved: https://github.com/facebook/react-native/pull/23361

Differential Revision: D14030586

Pulled By: cpojer

fbshipit-source-id: a8ae1b4e168469e65745c4d5e9329df8b6faa2aa
2019-02-11 14:52:59 -08:00
Emily Janzer
b8246ac89a Make REACT_CLASS public so we can use a provider
Summary: Make REACT_CLASS a public property on ReactSwitchManager (similar to our other UI managers) so we can more easily lazily load this class.

Reviewed By: mdvacca

Differential Revision: D14028452

fbshipit-source-id: 84aebd4e2e1e0039957d8c12490022386aab7847
2019-02-11 14:45:42 -08:00
David Vacca
f83281e2ce Disable OverlappingRendering for ReactTextView
Summary:
This diff disables OverlappingRendering for ReactTextView to avoid the exception:

```
java.lang.IllegalStateException: Unable to create layer for com.facebook.react.views.text.ReactTextView
```
during fade animations

OverlappingRendering enables an optimization during rendering of animations per component, disabling this might affect performance of animations inside TextView.

We will add a ReactFlag to experiment on how this affect other surfaces.

Reviewed By: blairvanderhoof

Differential Revision: D14027631

fbshipit-source-id: c1a84e7488c44582f7b7c78965aeb7bd27f82368
2019-02-11 14:39:18 -08:00
zhongwuzw
cdd615136f Revert RCTRootView's backgroundColor to white (#23358)
Summary:
Fixes #23314 , the change came from #20945 , its purpose is to fix orientation change issue in HelloWord template, but I think it's just a trick, to make rootView's backgroundColor the same as window backgroundColor, the orientation issue seems related to [UIManager setAvailableSize:forRootView:](d2fc19f4aa/React/Modules/RCTUIManager.m (L343)) async layout things.

[iOS] [Fixed] - Revert RCTRootView's backgroundColor to white.
Pull Request resolved: https://github.com/facebook/react-native/pull/23358

Differential Revision: D14030666

Pulled By: cpojer

fbshipit-source-id: 7c9a45f03b87c3be0f2b7c64a3c837c6ae14af3e
2019-02-11 14:31:26 -08:00
Christoph Nakazawa
ae11993d0f Add a Metro configuration with inline require/import
Summary:
We have been working on turning on inline-requires/imports and RAM bundles for React Native for a long time, however we have not made real progress on making it the default, even though it is easy. In this diff I am adding a Metro configuration to a new React Native template with the defaults set to `false` (off). This means that everyone creating a new project now or upgrading from an existing one will receive this template file. In a future release of React Native we will turn this setting on to default. From then on, new projects will be using inline-requires while existing ones that are upgrading can make an explicit choice when they are diffing their template and the latest version of it.

This approach was outlined in https://github.com/react-native-community/discussions-and-proposals/blob/master/core-meetings/2018-09-metro-meeting.md#actions-that-will-be-taken

Note: There is a weird lint-ignore thing in there like in the other template files. I'm working on getting rid of that separately.

Reviewed By: TheSavior

Differential Revision: D14030370

fbshipit-source-id: cf4c5551c795f2ea0fd1b731b352489f04b8c22e
2019-02-11 14:17:54 -08:00
Josh Justice
43b56ecb24 Separate RTL examples in RNTester (#23354)
Summary:
Splits RTLExample into separate exported examples, so they can be filtered. This will help with Detox tests.

Previously the single forceRTL toggle affected multiple examples because they all share state—although the box model examples at the end had their own toggles. Now each example has its own RTL toggle so it is always available even when examples are filtered, and so the examples don't have to share state. There is still the separate forceRTL toggle that changes the setting in `I18nManager`, which affects the default setting when the page appears, as well as the direction of the "with directional meaning" pointer icon.

[General] [Changed] - Split RTLExample into separate exported examples
Pull Request resolved: https://github.com/facebook/react-native/pull/23354

Differential Revision: D14030498

Pulled By: cpojer

fbshipit-source-id: 44eb493297f6a4832b55ef2b02a93dc5c213f337
2019-02-11 14:08:36 -08:00
Matt Oakes
d9c0dfe353 Add a deprecation warning when importing NetInfo (#23383)
Summary:
Add a deprecation warning for the `NetInfo` module as part of #23313.

[General] [Deprecated] - Deprecated NetInfo as it has now been moved to react-native-community/netinfo
Pull Request resolved: https://github.com/facebook/react-native/pull/23383

Differential Revision: D14024702

Pulled By: cpojer

fbshipit-source-id: 353a9fb86feba2ca7f948c618c642e40fcdbfada
2019-02-11 13:45:47 -08:00
michalchudziak
bf888a7582 Add deprecation warning while importing Slider component (#23385)
Summary:
Introducing the deprecation warning for those who are importing `Slider` component (https://github.com/facebook/react-native/issues/23313)

[General] [Deprecated] - Deprecated Slider as it has now been moved to `react-native-community/slider`
Pull Request resolved: https://github.com/facebook/react-native/pull/23385

Differential Revision: D14029819

Pulled By: cpojer

fbshipit-source-id: 7ad257124756c6bee57c3fbb1a056c09e8cc29a1
2019-02-11 13:40:52 -08:00
Krzysztof Borowy
ffe37487b2 Deprecation warning for AsyncStorage (#23384)
Summary:
Added a deprecation warning for the `Async Storage`,  module as part of #23313.

[General] [Deprecated] - Async Storage [was moved to community repo](https://github.com/react-native-community/react-native-async-storage)
Pull Request resolved: https://github.com/facebook/react-native/pull/23384

Differential Revision: D14025255

Pulled By: cpojer

fbshipit-source-id: 5cabd76c650126ed77dfb8b714e05980c4d0b6da
2019-02-11 13:35:01 -08:00