license import { Observable , Subscriber , Subscription } from 'rxjs' ; ( Zone as any ) . __load_patch ( 'rxjs' , ( global , Zone , api ) => { const symbol = ( Zone as any ) . __symbol__ ; const nextSource = 'rxjs.Subscriber.next' ; const errorSource = 'rxjs.Subscriber.error' ; const completeSource = 'rxjs.Subscriber.complete' ; const ObjectDefineProperties = Object . defineProperties ; const patchObservable = function ( ) { const ObservablePrototype = Observable . prototype ; const _symbolSubscribe = symbol ( '_subscribe' ) ; const _subscribe = ObservablePrototype [ _symbolSubscribe ] = ObservablePrototype . _subscribe ; ObjectDefineProperties ( Observable . prototype , { _zone : { value : null , writable : true , configurable : true } , _zoneSource : { value : null , writable : true , configurable : true } , _zoneSubscribe : { value : null , writable : true , configurable : true } , source : { configurable : true , get : function ( this ) { return ( this as any ) . _zoneSource ; } , set : function ( this , source ) { ( this as any ) . _zone = Zone . current ; ( this as any ) . _zoneSource = source ; } } , _subscribe : { configurable : true , get : function ( this ) { if ( ( this as any ) . _zoneSubscribe ) { return ( this as any ) . _zoneSubscribe ; } else if ( this . constructor === Observable ) { return _subscribe ; } const proto = Object . getPrototypeOf ( this ) ; return proto && proto . _subscribe ; } , set : function ( this , subscribe ) { ( this as any ) . _zone = Zone . current ; ( this as any ) . _zoneSubscribe = function ( ) { if ( this . _zone && this . _zone !== Zone . current ) { const tearDown = this . _zone . run ( subscribe , this , arguments ) ; if ( tearDown && typeof tearDown === 'function' ) { const zone = this . _zone ; return function ( ) { if ( zone !== Zone . current ) { return zone . run ( tearDown , this , arguments ) ; } return tearDown . apply ( this , arguments ) ; } ; } return tearDown ; } return subscribe . apply ( this , arguments ) ; } ; } } , subjectFactory : { get : function ( ) { return ( this as any ) . _zoneSubjectFactory ; } , set : function ( factory ) { const zone = this . _zone ; this . _zoneSubjectFactory = function ( ) { if ( zone && zone !== Zone . current ) { return zone . run ( factory , this , arguments ) ; } return factory . apply ( this , arguments ) ; } ; } } } ) ; } ; api . patchMethod ( Observable . prototype , 'lift' , ( delegate ) => ( self , args ) => { const observable = delegate . apply ( self , args ) ; if ( observable . operator ) { observable . operator . _zone = Zone . current ; api . patchMethod ( observable . operator , 'call' , ( operatorDelegate ) => ( operatorSelf , operatorArgs ) => { if ( operatorSelf . _zone && operatorSelf . _zone !== Zone . current ) { return operatorSelf . _zone . run ( operatorDelegate , operatorSelf , operatorArgs ) ; } return operatorDelegate . apply ( operatorSelf , operatorArgs ) ; } ) ; } return observable ; } ) ; const patchSubscription = function ( ) { ObjectDefineProperties ( Subscription . prototype , { _zone : { value : null , writable : true , configurable : true } , _zoneUnsubscribe : { value : null , writable : true , configurable : true } , _unsubscribe : { get : function ( this ) { if ( ( this as any ) . _zoneUnsubscribe ) { return ( this as any ) . _zoneUnsubscribe ; } const proto = Object . getPrototypeOf ( this ) ; return proto && proto . _unsubscribe ; } , set : function ( this , unsubscribe ) { ( this as any ) . _zone = Zone . current ; ( this as any ) . _zoneUnsubscribe = function ( ) { if ( this . _zone && this . _zone !== Zone . current ) { return this . _zone . run ( unsubscribe , this , arguments ) ; } return unsubscribe . apply ( this , arguments ) ; } ; } } } ) ; } ; const patchSubscriber = function ( ) { const next = Subscriber . prototype . next ; const error = Subscriber . prototype . error ; const complete = Subscriber . prototype . complete ; Object . defineProperty ( Subscriber . prototype , 'destination' , { configurable : true , get : function ( this ) { return ( this as any ) . _zoneDestination ; } , set : function ( this , destination ) { ( this as any ) . _zone = Zone . current ; ( this as any ) . _zoneDestination = destination ; } } ) ; Subscriber . prototype . next = function ( ) { const currentZone = Zone . current ; const subscriptionZone = this . _zone ; if ( subscriptionZone && subscriptionZone !== currentZone ) { return subscriptionZone . run ( next , this , arguments , nextSource ) ; } else { return next . apply ( this , arguments as any ) ; } } ; Subscriber . prototype . error = function ( ) { const currentZone = Zone . current ; const subscriptionZone = this . _zone ; if ( subscriptionZone && subscriptionZone !== currentZone ) { return subscriptionZone . run ( error , this , arguments , errorSource ) ; } else { return error . apply ( this , arguments as any ) ; } } ; Subscriber . prototype . complete = function ( ) { const currentZone = Zone . current ; const subscriptionZone = this . _zone ; if ( subscriptionZone && subscriptionZone !== currentZone ) { return subscriptionZone . run ( complete , this , arguments , completeSource ) ; } else { return complete . call ( this ) ; } } ; } ; patchObservable ( ) ; patchSubscription ( ) ; patchSubscriber ( ) ; } ) ;