hunk.code_window:     if ([self _areDevToolsEnabledWithManifest:cachedManifest]) {
         [self _resolveManifestAndBundleWithTimeout:NO length:0];
         return;
       } else {
         id updates = _confirmedManifest[@"updates"];
         if (updates && [updates isKindOfClass:[NSDictionary class]]) {
           NSDictionary *updatesDict = (NSDictionary *)updates;
           id checkAutomaticallyVal = updatesDict[@"checkAutomatically"];
           if (checkAutomaticallyVal && [checkAutomaticallyVal isKindOfClass:[NSString class]] && [(NSString *)checkAutomaticallyVal isEqualToString:@"never"]) {
  
hunk.labels: keep keep keep keep add keep keep keep keep
hunk.after_edit:       id ios = _confirmedManifest[@"ios"];
  
hunk.file_path: ios/Exponent/Kernel/AppLoader/EXKernelAppLoader.m
hunk.type: add
file: package abi24_0_0.host.exp.exponent.modules.api.components.camera.events;
  
  import android.support.v4.util.Pools;
  
  import abi24_0_0.com.facebook.react.bridge.Arguments;
  import abi24_0_0.com.facebook.react.bridge.WritableMap;
  import abi24_0_0.com.facebook.react.uimanager.events.Event;
  import abi24_0_0.com.facebook.react.uimanager.events.RCTEventEmitter;
  
  import abi24_0_0.host.exp.exponent.modules.api.components.camera.CameraViewManager;
  import abi24_0_0.host.exp.exponent.modules.api.components.facedetector.ExpoFaceDetector;
  
  public class FaceDetectionErrorEvent extends Event<FaceDetectionErrorEvent> {
    private static final Pools.SynchronizedPool<FaceDetectionErrorEvent> EVENTS_POOL = new Pools.SynchronizedPool<>(3);
    private ExpoFaceDetector mFaceDetector;
    private FaceDetectionErrorEvent() {}
  
    public static FaceDetectionErrorEvent obtain(int viewTag, ExpoFaceDetector faceDetector) {
      FaceDetectionErrorEvent event = EVENTS_POOL.acquire();
      if (event == null) {
        event = new FaceDetectionErrorEvent();
      }
      event.init(viewTag, faceDetector);
      return event;
    }
  
    private void init(int viewTag, ExpoFaceDetector faceDetector) {
      super.init(viewTag);
      mFaceDetector = faceDetector;
    }
  
    @Override
    public short getCoalescingKey() {
      return 0;
    }
  
    @Override
    public String getEventName() {
      return CameraViewManager.Events.EVENT_ON_MOUNT_ERROR.toString();
    }
  
    @Override
    public void dispatch(RCTEventEmitter rctEventEmitter) {
      rctEventEmitter.receiveEvent(getViewTag(), getEventName(), serializeEventData());
    }
  
    private WritableMap serializeEventData() {
      WritableMap map = Arguments.createMap();
      map.putBoolean("isOperational", mFaceDetector.isOperational());
      return map;
    }
  }
  