Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/mets.corals.io/wp-content/themes/metras/node_modules/rxjs/bundles/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/mets.corals.io/wp-content/themes/metras/node_modules/rxjs/bundles/Rx.js.map
{"version":3,"file":null,"sources":["/usr/local/google/home/benlesh/github.com/benlesh/rxjs/node_modules/tslib/tslib.es6.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/root.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/isFunction.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/isArray.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/isObject.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/errorObject.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/tryCatch.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/UnsubscriptionError.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/Subscription.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/Observer.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/symbol/rxSubscriber.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/Subscriber.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/toSubscriber.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/symbol/observable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/noop.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/pipe.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/Observable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/ObjectUnsubscribedError.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/SubjectSubscription.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/Subject.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/AsyncSubject.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/BoundCallbackObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/bindCallback.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/bindCallback.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/BoundNodeCallbackObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/bindNodeCallback.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/bindNodeCallback.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/isScheduler.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/ScalarObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/EmptyObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/ArrayObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/OuterSubscriber.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/isArrayLike.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/isPromise.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/symbol/iterator.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/InnerSubscriber.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/subscribeToResult.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/combineLatest.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/combineLatest.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/combineLatest.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/of.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/PromiseObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/IteratorObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/ArrayLikeObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/Notification.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/observeOn.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/FromObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/from.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/mergeMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/identity.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/mergeAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/concatAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/concat.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/concat.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/DeferObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/defer.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/defer.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/empty.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/empty.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/ForkJoinObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/forkJoin.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/forkJoin.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/from.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/FromEventObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/fromEvent.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/fromEvent.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/FromEventPatternObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/fromEventPattern.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/fromEventPattern.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/fromPromise.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/fromPromise.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/GenerateObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/generate.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/generate.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/IfObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/if.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/if.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/isNumeric.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/Action.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/AsyncAction.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/Scheduler.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/AsyncScheduler.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/async.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/IntervalObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/interval.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/interval.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/merge.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/merge.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/race.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/race.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/NeverObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/never.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/never.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/of.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/onErrorResumeNext.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/onErrorResumeNext.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/onErrorResumeNext.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/PairsObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/pairs.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/pairs.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/RangeObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/range.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/range.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/UsingObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/using.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/using.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/ErrorObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/throw.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/throw.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/isDate.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/TimerObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/timer.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/timer.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/zip.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/zip.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/zip.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/map.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/dom/AjaxObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/dom/ajax.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/dom/ajax.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/QueueAction.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/QueueScheduler.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/queue.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/ReplaySubject.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/assign.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/dom/WebSocketSubject.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/dom/webSocket.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/observable/dom/webSocket.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/buffer.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/buffer.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/buffer.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/bufferCount.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/bufferCount.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/bufferCount.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/bufferTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/bufferTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/bufferTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/bufferToggle.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/bufferToggle.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/bufferToggle.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/bufferWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/bufferWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/bufferWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/catchError.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/catch.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/catch.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/combineAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/combineAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/combineAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/combineLatest.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/combineLatest.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/concat.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/concat.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/concat.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/concatAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/concatAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/concatMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/concatMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/concatMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/concatMapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/concatMapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/concatMapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/count.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/count.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/count.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/dematerialize.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/dematerialize.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/dematerialize.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/debounce.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/debounce.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/debounce.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/debounceTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/debounceTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/debounceTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/defaultIfEmpty.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/defaultIfEmpty.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/defaultIfEmpty.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/delay.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/delay.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/delay.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/delayWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/delayWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/delayWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/Set.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/distinct.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/distinct.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/distinct.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/distinctUntilChanged.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/distinctUntilChanged.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/distinctUntilChanged.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/distinctUntilKeyChanged.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/distinctUntilKeyChanged.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/distinctUntilKeyChanged.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/tap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/do.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/do.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/exhaust.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/exhaust.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/exhaust.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/exhaustMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/exhaustMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/exhaustMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/expand.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/expand.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/expand.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/ArgumentOutOfRangeError.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/elementAt.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/elementAt.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/elementAt.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/filter.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/filter.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/filter.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/finalize.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/finally.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/finally.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/find.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/find.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/find.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/findIndex.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/findIndex.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/findIndex.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/EmptyError.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/first.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/first.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/first.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/MapPolyfill.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/Map.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/FastMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/groupBy.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/groupBy.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/groupBy.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/ignoreElements.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/ignoreElements.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/ignoreElements.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/isEmpty.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/isEmpty.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/isEmpty.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/audit.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/audit.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/audit.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/auditTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/auditTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/auditTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/last.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/last.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/last.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/let.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/let.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/every.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/every.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/every.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/map.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/map.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/mapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/mapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/mapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/materialize.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/materialize.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/materialize.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/scan.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/takeLast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/reduce.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/max.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/max.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/max.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/merge.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/merge.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/merge.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/mergeAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/mergeAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/mergeMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/mergeMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/mergeMapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/mergeMapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/mergeMapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/mergeScan.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/mergeScan.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/mergeScan.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/min.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/min.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/min.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/refCount.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/ConnectableObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/multicast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/multicast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/multicast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/observeOn.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/observeOn.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/onErrorResumeNext.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/onErrorResumeNext.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/pairwise.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/pairwise.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/pairwise.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/not.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/partition.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/partition.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/partition.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/pluck.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/pluck.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/pluck.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/publish.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/publish.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/publish.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/BehaviorSubject.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/publishBehavior.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/publishBehavior.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/publishBehavior.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/publishReplay.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/publishReplay.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/publishReplay.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/publishLast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/publishLast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/publishLast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/race.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/race.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/race.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/reduce.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/reduce.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/repeat.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/repeat.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/repeat.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/repeatWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/repeatWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/repeatWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/retry.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/retry.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/retry.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/retryWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/retryWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/retryWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/sample.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/sample.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/sample.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/sampleTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/sampleTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/sampleTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/scan.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/scan.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/sequenceEqual.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/sequenceEqual.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/sequenceEqual.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/share.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/share.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/share.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/shareReplay.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/shareReplay.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/shareReplay.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/single.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/single.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/single.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/skip.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/skip.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/skip.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/skipLast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/skipLast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/skipLast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/skipUntil.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/skipUntil.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/skipUntil.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/skipWhile.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/skipWhile.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/skipWhile.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/startWith.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/startWith.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/startWith.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/Immediate.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/AsapAction.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/AsapScheduler.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/asap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/observable/SubscribeOnObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/subscribeOn.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/subscribeOn.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/subscribeOn.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/switchMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/switchAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/switch.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/switch.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/switchMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/switchMap.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/switchMapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/switchMapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/switchMapTo.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/take.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/take.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/take.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/takeLast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/takeLast.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/takeUntil.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/takeUntil.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/takeUntil.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/takeWhile.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/takeWhile.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/takeWhile.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/throttle.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/throttle.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/throttle.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/throttleTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/throttleTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/throttleTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/timeInterval.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/timeInterval.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/timeInterval.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/TimeoutError.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/timeout.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/timeout.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/timeout.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/timeoutWith.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/timeoutWith.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/timeoutWith.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/timestamp.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/timestamp.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/timestamp.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/toArray.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/toArray.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/toArray.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/toPromise.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/window.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/window.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/window.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/windowCount.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/windowCount.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/windowCount.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/windowTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/windowTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/windowTime.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/windowToggle.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/windowToggle.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/windowToggle.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/windowWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/windowWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/windowWhen.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/withLatestFrom.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/withLatestFrom.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/withLatestFrom.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/zip.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/zip.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operators/zipAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/operator/zipAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/add/operator/zipAll.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/testing/SubscriptionLog.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/testing/SubscriptionLoggable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/applyMixins.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/testing/ColdObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/testing/HotObservable.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/VirtualTimeScheduler.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/testing/TestScheduler.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/util/AnimationFrame.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/AnimationFrameAction.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/AnimationFrameScheduler.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/scheduler/animationFrame.js","/usr/local/google/home/benlesh/github.com/benlesh/rxjs/dist/esm5_for_rollup/Rx.js"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n    ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n    function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n    }\r\n    return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n            t[p[i]] = s[p[i]];\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n    if (m) return m.call(o);\r\n    return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator];\r\n    return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n    self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\nvar _root = __window || __global || __self;\n// Workaround Closure Compiler restriction: The body of a goog.module cannot use throw.\n// This is needed when used with angular/tsickle which inserts a goog.module statement.\n// Wrap in IIFE\n(function () {\n    if (!_root) {\n        throw new Error('RxJS could not find any global context (window, self, global)');\n    }\n})();\nexport { _root as root };\n//# sourceMappingURL=root.js.map","export function isFunction(x) {\n    return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export var isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map","export function isObject(x) {\n    return x != null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map","// typeof any so that it we don't have to cast when comparing a result to the error object\nexport var errorObject = { e: {} };\n//# sourceMappingURL=errorObject.js.map","import { errorObject } from './errorObject';\nvar tryCatchTarget;\nfunction tryCatcher() {\n    try {\n        return tryCatchTarget.apply(this, arguments);\n    }\n    catch (e) {\n        errorObject.e = e;\n        return errorObject;\n    }\n}\nexport function tryCatch(fn) {\n    tryCatchTarget = fn;\n    return tryCatcher;\n}\n;\n//# sourceMappingURL=tryCatch.js.map","/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport var UnsubscriptionError = (function (_super) {\n    __extends(UnsubscriptionError, _super);\n    function UnsubscriptionError(errors) {\n        _super.call(this);\n        this.errors = errors;\n        var err = Error.call(this, errors ?\n            errors.length + \" errors occurred during unsubscription:\\n  \" + errors.map(function (err, i) { return ((i + 1) + \") \" + err.toString()); }).join('\\n  ') : '');\n        this.name = err.name = 'UnsubscriptionError';\n        this.stack = err.stack;\n        this.message = err.message;\n    }\n    return UnsubscriptionError;\n}(Error));\n//# sourceMappingURL=UnsubscriptionError.js.map","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { tryCatch } from './util/tryCatch';\nimport { errorObject } from './util/errorObject';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport var Subscription = (function () {\n    /**\n     * @param {function(): void} [unsubscribe] A function describing how to\n     * perform the disposal of resources when the `unsubscribe` method is called.\n     */\n    function Subscription(unsubscribe) {\n        /**\n         * A flag to indicate whether this Subscription has already been unsubscribed.\n         * @type {boolean}\n         */\n        this.closed = false;\n        this._parent = null;\n        this._parents = null;\n        this._subscriptions = null;\n        if (unsubscribe) {\n            this._unsubscribe = unsubscribe;\n        }\n    }\n    /**\n     * Disposes the resources held by the subscription. May, for instance, cancel\n     * an ongoing Observable execution or cancel any other type of work that\n     * started when the Subscription was created.\n     * @return {void}\n     */\n    Subscription.prototype.unsubscribe = function () {\n        var hasErrors = false;\n        var errors;\n        if (this.closed) {\n            return;\n        }\n        var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n        this.closed = true;\n        this._parent = null;\n        this._parents = null;\n        // null out _subscriptions first so any child subscriptions that attempt\n        // to remove themselves from this subscription will noop\n        this._subscriptions = null;\n        var index = -1;\n        var len = _parents ? _parents.length : 0;\n        // if this._parent is null, then so is this._parents, and we\n        // don't have to remove ourselves from any parent subscriptions.\n        while (_parent) {\n            _parent.remove(this);\n            // if this._parents is null or index >= len,\n            // then _parent is set to null, and the loop exits\n            _parent = ++index < len && _parents[index] || null;\n        }\n        if (isFunction(_unsubscribe)) {\n            var trial = tryCatch(_unsubscribe).call(this);\n            if (trial === errorObject) {\n                hasErrors = true;\n                errors = errors || (errorObject.e instanceof UnsubscriptionError ?\n                    flattenUnsubscriptionErrors(errorObject.e.errors) : [errorObject.e]);\n            }\n        }\n        if (isArray(_subscriptions)) {\n            index = -1;\n            len = _subscriptions.length;\n            while (++index < len) {\n                var sub = _subscriptions[index];\n                if (isObject(sub)) {\n                    var trial = tryCatch(sub.unsubscribe).call(sub);\n                    if (trial === errorObject) {\n                        hasErrors = true;\n                        errors = errors || [];\n                        var err = errorObject.e;\n                        if (err instanceof UnsubscriptionError) {\n                            errors = errors.concat(flattenUnsubscriptionErrors(err.errors));\n                        }\n                        else {\n                            errors.push(err);\n                        }\n                    }\n                }\n            }\n        }\n        if (hasErrors) {\n            throw new UnsubscriptionError(errors);\n        }\n    };\n    /**\n     * Adds a tear down to be called during the unsubscribe() of this\n     * Subscription.\n     *\n     * If the tear down being added is a subscription that is already\n     * unsubscribed, is the same reference `add` is being called on, or is\n     * `Subscription.EMPTY`, it will not be added.\n     *\n     * If this subscription is already in an `closed` state, the passed\n     * tear down logic will be executed immediately.\n     *\n     * @param {TeardownLogic} teardown The additional logic to execute on\n     * teardown.\n     * @return {Subscription} Returns the Subscription used or created to be\n     * added to the inner subscriptions list. This Subscription can be used with\n     * `remove()` to remove the passed teardown logic from the inner subscriptions\n     * list.\n     */\n    Subscription.prototype.add = function (teardown) {\n        if (!teardown || (teardown === Subscription.EMPTY)) {\n            return Subscription.EMPTY;\n        }\n        if (teardown === this) {\n            return this;\n        }\n        var subscription = teardown;\n        switch (typeof teardown) {\n            case 'function':\n                subscription = new Subscription(teardown);\n            case 'object':\n                if (subscription.closed || typeof subscription.unsubscribe !== 'function') {\n                    return subscription;\n                }\n                else if (this.closed) {\n                    subscription.unsubscribe();\n                    return subscription;\n                }\n                else if (typeof subscription._addParent !== 'function' /* quack quack */) {\n                    var tmp = subscription;\n                    subscription = new Subscription();\n                    subscription._subscriptions = [tmp];\n                }\n                break;\n            default:\n                throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n        }\n        var subscriptions = this._subscriptions || (this._subscriptions = []);\n        subscriptions.push(subscription);\n        subscription._addParent(this);\n        return subscription;\n    };\n    /**\n     * Removes a Subscription from the internal list of subscriptions that will\n     * unsubscribe during the unsubscribe process of this Subscription.\n     * @param {Subscription} subscription The subscription to remove.\n     * @return {void}\n     */\n    Subscription.prototype.remove = function (subscription) {\n        var subscriptions = this._subscriptions;\n        if (subscriptions) {\n            var subscriptionIndex = subscriptions.indexOf(subscription);\n            if (subscriptionIndex !== -1) {\n                subscriptions.splice(subscriptionIndex, 1);\n            }\n        }\n    };\n    Subscription.prototype._addParent = function (parent) {\n        var _a = this, _parent = _a._parent, _parents = _a._parents;\n        if (!_parent || _parent === parent) {\n            // If we don't have a parent, or the new parent is the same as the\n            // current parent, then set this._parent to the new parent.\n            this._parent = parent;\n        }\n        else if (!_parents) {\n            // If there's already one parent, but not multiple, allocate an Array to\n            // store the rest of the parent Subscriptions.\n            this._parents = [parent];\n        }\n        else if (_parents.indexOf(parent) === -1) {\n            // Only add the new parent to the _parents list if it's not already there.\n            _parents.push(parent);\n        }\n    };\n    Subscription.EMPTY = (function (empty) {\n        empty.closed = true;\n        return empty;\n    }(new Subscription()));\n    return Subscription;\n}());\nfunction flattenUnsubscriptionErrors(errors) {\n    return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map","export var empty = {\n    closed: true,\n    next: function (value) { },\n    error: function (err) { throw err; },\n    complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map","import { root } from '../util/root';\nvar Symbol = root.Symbol;\nexport var rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ?\n    Symbol.for('rxSubscriber') : '@@rxSubscriber';\n/**\n * @deprecated use rxSubscriber instead\n */\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map","import { isFunction } from './util/isFunction';\nimport { Subscription } from './Subscription';\nimport { empty as emptyObserver } from './Observer';\nimport { rxSubscriber as rxSubscriberSymbol } from './symbol/rxSubscriber';\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nexport var Subscriber = (function (_super) {\n    __extends(Subscriber, _super);\n    /**\n     * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n     * defined Observer or a `next` callback function.\n     * @param {function(e: ?any): void} [error] The `error` callback of an\n     * Observer.\n     * @param {function(): void} [complete] The `complete` callback of an\n     * Observer.\n     */\n    function Subscriber(destinationOrNext, error, complete) {\n        _super.call(this);\n        this.syncErrorValue = null;\n        this.syncErrorThrown = false;\n        this.syncErrorThrowable = false;\n        this.isStopped = false;\n        switch (arguments.length) {\n            case 0:\n                this.destination = emptyObserver;\n                break;\n            case 1:\n                if (!destinationOrNext) {\n                    this.destination = emptyObserver;\n                    break;\n                }\n                if (typeof destinationOrNext === 'object') {\n                    // HACK(benlesh): To resolve an issue where Node users may have multiple\n                    // copies of rxjs in their node_modules directory.\n                    if (isTrustedSubscriber(destinationOrNext)) {\n                        var trustedSubscriber = destinationOrNext[rxSubscriberSymbol]();\n                        this.syncErrorThrowable = trustedSubscriber.syncErrorThrowable;\n                        this.destination = trustedSubscriber;\n                        trustedSubscriber.add(this);\n                    }\n                    else {\n                        this.syncErrorThrowable = true;\n                        this.destination = new SafeSubscriber(this, destinationOrNext);\n                    }\n                    break;\n                }\n            default:\n                this.syncErrorThrowable = true;\n                this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n                break;\n        }\n    }\n    Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n    /**\n     * A static factory for a Subscriber, given a (potentially partial) definition\n     * of an Observer.\n     * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n     * @param {function(e: ?any): void} [error] The `error` callback of an\n     * Observer.\n     * @param {function(): void} [complete] The `complete` callback of an\n     * Observer.\n     * @return {Subscriber<T>} A Subscriber wrapping the (partially defined)\n     * Observer represented by the given arguments.\n     */\n    Subscriber.create = function (next, error, complete) {\n        var subscriber = new Subscriber(next, error, complete);\n        subscriber.syncErrorThrowable = false;\n        return subscriber;\n    };\n    /**\n     * The {@link Observer} callback to receive notifications of type `next` from\n     * the Observable, with a value. The Observable may call this method 0 or more\n     * times.\n     * @param {T} [value] The `next` value.\n     * @return {void}\n     */\n    Subscriber.prototype.next = function (value) {\n        if (!this.isStopped) {\n            this._next(value);\n        }\n    };\n    /**\n     * The {@link Observer} callback to receive notifications of type `error` from\n     * the Observable, with an attached {@link Error}. Notifies the Observer that\n     * the Observable has experienced an error condition.\n     * @param {any} [err] The `error` exception.\n     * @return {void}\n     */\n    Subscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            this.isStopped = true;\n            this._error(err);\n        }\n    };\n    /**\n     * The {@link Observer} callback to receive a valueless notification of type\n     * `complete` from the Observable. Notifies the Observer that the Observable\n     * has finished sending push-based notifications.\n     * @return {void}\n     */\n    Subscriber.prototype.complete = function () {\n        if (!this.isStopped) {\n            this.isStopped = true;\n            this._complete();\n        }\n    };\n    Subscriber.prototype.unsubscribe = function () {\n        if (this.closed) {\n            return;\n        }\n        this.isStopped = true;\n        _super.prototype.unsubscribe.call(this);\n    };\n    Subscriber.prototype._next = function (value) {\n        this.destination.next(value);\n    };\n    Subscriber.prototype._error = function (err) {\n        this.destination.error(err);\n        this.unsubscribe();\n    };\n    Subscriber.prototype._complete = function () {\n        this.destination.complete();\n        this.unsubscribe();\n    };\n    /** @deprecated internal use only */ Subscriber.prototype._unsubscribeAndRecycle = function () {\n        var _a = this, _parent = _a._parent, _parents = _a._parents;\n        this._parent = null;\n        this._parents = null;\n        this.unsubscribe();\n        this.closed = false;\n        this.isStopped = false;\n        this._parent = _parent;\n        this._parents = _parents;\n        return this;\n    };\n    return Subscriber;\n}(Subscription));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SafeSubscriber = (function (_super) {\n    __extends(SafeSubscriber, _super);\n    function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n        _super.call(this);\n        this._parentSubscriber = _parentSubscriber;\n        var next;\n        var context = this;\n        if (isFunction(observerOrNext)) {\n            next = observerOrNext;\n        }\n        else if (observerOrNext) {\n            next = observerOrNext.next;\n            error = observerOrNext.error;\n            complete = observerOrNext.complete;\n            if (observerOrNext !== emptyObserver) {\n                context = Object.create(observerOrNext);\n                if (isFunction(context.unsubscribe)) {\n                    this.add(context.unsubscribe.bind(context));\n                }\n                context.unsubscribe = this.unsubscribe.bind(this);\n            }\n        }\n        this._context = context;\n        this._next = next;\n        this._error = error;\n        this._complete = complete;\n    }\n    SafeSubscriber.prototype.next = function (value) {\n        if (!this.isStopped && this._next) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (!_parentSubscriber.syncErrorThrowable) {\n                this.__tryOrUnsub(this._next, value);\n            }\n            else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (this._error) {\n                if (!_parentSubscriber.syncErrorThrowable) {\n                    this.__tryOrUnsub(this._error, err);\n                    this.unsubscribe();\n                }\n                else {\n                    this.__tryOrSetError(_parentSubscriber, this._error, err);\n                    this.unsubscribe();\n                }\n            }\n            else if (!_parentSubscriber.syncErrorThrowable) {\n                this.unsubscribe();\n                throw err;\n            }\n            else {\n                _parentSubscriber.syncErrorValue = err;\n                _parentSubscriber.syncErrorThrown = true;\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.complete = function () {\n        var _this = this;\n        if (!this.isStopped) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (this._complete) {\n                var wrappedComplete = function () { return _this._complete.call(_this._context); };\n                if (!_parentSubscriber.syncErrorThrowable) {\n                    this.__tryOrUnsub(wrappedComplete);\n                    this.unsubscribe();\n                }\n                else {\n                    this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n                    this.unsubscribe();\n                }\n            }\n            else {\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n        try {\n            fn.call(this._context, value);\n        }\n        catch (err) {\n            this.unsubscribe();\n            throw err;\n        }\n    };\n    SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n        try {\n            fn.call(this._context, value);\n        }\n        catch (err) {\n            parent.syncErrorValue = err;\n            parent.syncErrorThrown = true;\n            return true;\n        }\n        return false;\n    };\n    /** @deprecated internal use only */ SafeSubscriber.prototype._unsubscribe = function () {\n        var _parentSubscriber = this._parentSubscriber;\n        this._context = null;\n        this._parentSubscriber = null;\n        _parentSubscriber.unsubscribe();\n    };\n    return SafeSubscriber;\n}(Subscriber));\nfunction isTrustedSubscriber(obj) {\n    return obj instanceof Subscriber || ('syncErrorThrowable' in obj && obj[rxSubscriberSymbol]);\n}\n//# sourceMappingURL=Subscriber.js.map","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n    if (nextOrObserver) {\n        if (nextOrObserver instanceof Subscriber) {\n            return nextOrObserver;\n        }\n        if (nextOrObserver[rxSubscriberSymbol]) {\n            return nextOrObserver[rxSubscriberSymbol]();\n        }\n    }\n    if (!nextOrObserver && !error && !complete) {\n        return new Subscriber(emptyObserver);\n    }\n    return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map","import { root } from '../util/root';\nexport function getSymbolObservable(context) {\n    var $$observable;\n    var Symbol = context.Symbol;\n    if (typeof Symbol === 'function') {\n        if (Symbol.observable) {\n            $$observable = Symbol.observable;\n        }\n        else {\n            $$observable = Symbol('observable');\n            Symbol.observable = $$observable;\n        }\n    }\n    else {\n        $$observable = '@@observable';\n    }\n    return $$observable;\n}\nexport var observable = getSymbolObservable(root);\n/**\n * @deprecated use observable instead\n */\nexport var $$observable = observable;\n//# sourceMappingURL=observable.js.map","/* tslint:disable:no-empty */\nexport function noop() { }\n//# sourceMappingURL=noop.js.map","import { noop } from './noop';\n/* tslint:enable:max-line-length */\nexport function pipe() {\n    var fns = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        fns[_i - 0] = arguments[_i];\n    }\n    return pipeFromArray(fns);\n}\n/* @internal */\nexport function pipeFromArray(fns) {\n    if (!fns) {\n        return noop;\n    }\n    if (fns.length === 1) {\n        return fns[0];\n    }\n    return function piped(input) {\n        return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n    };\n}\n//# sourceMappingURL=pipe.js.map","import { root } from './util/root';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nexport var Observable = (function () {\n    /**\n     * @constructor\n     * @param {Function} subscribe the function that is called when the Observable is\n     * initially subscribed to. This function is given a Subscriber, to which new values\n     * can be `next`ed, or an `error` method can be called to raise an error, or\n     * `complete` can be called to notify of a successful completion.\n     */\n    function Observable(subscribe) {\n        this._isScalar = false;\n        if (subscribe) {\n            this._subscribe = subscribe;\n        }\n    }\n    /**\n     * Creates a new Observable, with this Observable as the source, and the passed\n     * operator defined as the new observable's operator.\n     * @method lift\n     * @param {Operator} operator the operator defining the operation to take on the observable\n     * @return {Observable} a new observable with the Operator applied\n     */\n    Observable.prototype.lift = function (operator) {\n        var observable = new Observable();\n        observable.source = this;\n        observable.operator = operator;\n        return observable;\n    };\n    /**\n     * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n     *\n     * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n     *\n     * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n     * might be for example a function that you passed to a {@link create} static factory, but most of the time it is\n     * a library implementation, which defines what and when will be emitted by an Observable. This means that calling\n     * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n     * thought.\n     *\n     * Apart from starting the execution of an Observable, this method allows you to listen for values\n     * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n     * following ways.\n     *\n     * The first way is creating an object that implements {@link Observer} interface. It should have methods\n     * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n     * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n     * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n     * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n     * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will\n     * be left uncaught.\n     *\n     * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n     * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent\n     * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer,\n     * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n     * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n     * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n     *\n     * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n     * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean\n     * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n     * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n     *\n     * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n     * It is an Observable itself that decides when these functions will be called. For example {@link of}\n     * by default emits all its values synchronously. Always check documentation for how given Observable\n     * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}.\n     *\n     * @example <caption>Subscribe with an Observer</caption>\n     * const sumObserver = {\n     *   sum: 0,\n     *   next(value) {\n     *     console.log('Adding: ' + value);\n     *     this.sum = this.sum + value;\n     *   },\n     *   error() { // We actually could just remove this method,\n     *   },        // since we do not really care about errors right now.\n     *   complete() {\n     *     console.log('Sum equals: ' + this.sum);\n     *   }\n     * };\n     *\n     * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n     * .subscribe(sumObserver);\n     *\n     * // Logs:\n     * // \"Adding: 1\"\n     * // \"Adding: 2\"\n     * // \"Adding: 3\"\n     * // \"Sum equals: 6\"\n     *\n     *\n     * @example <caption>Subscribe with functions</caption>\n     * let sum = 0;\n     *\n     * Rx.Observable.of(1, 2, 3)\n     * .subscribe(\n     *   function(value) {\n     *     console.log('Adding: ' + value);\n     *     sum = sum + value;\n     *   },\n     *   undefined,\n     *   function() {\n     *     console.log('Sum equals: ' + sum);\n     *   }\n     * );\n     *\n     * // Logs:\n     * // \"Adding: 1\"\n     * // \"Adding: 2\"\n     * // \"Adding: 3\"\n     * // \"Sum equals: 6\"\n     *\n     *\n     * @example <caption>Cancel a subscription</caption>\n     * const subscription = Rx.Observable.interval(1000).subscribe(\n     *   num => console.log(num),\n     *   undefined,\n     *   () => console.log('completed!') // Will not be called, even\n     * );                                // when cancelling subscription\n     *\n     *\n     * setTimeout(() => {\n     *   subscription.unsubscribe();\n     *   console.log('unsubscribed!');\n     * }, 2500);\n     *\n     * // Logs:\n     * // 0 after 1s\n     * // 1 after 2s\n     * // \"unsubscribed!\" after 2.5s\n     *\n     *\n     * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n     *  or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n     *  Observable.\n     * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n     *  the error will be thrown as unhandled.\n     * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n     * @return {ISubscription} a subscription reference to the registered handlers\n     * @method subscribe\n     */\n    Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n        var operator = this.operator;\n        var sink = toSubscriber(observerOrNext, error, complete);\n        if (operator) {\n            operator.call(sink, this.source);\n        }\n        else {\n            sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink));\n        }\n        if (sink.syncErrorThrowable) {\n            sink.syncErrorThrowable = false;\n            if (sink.syncErrorThrown) {\n                throw sink.syncErrorValue;\n            }\n        }\n        return sink;\n    };\n    Observable.prototype._trySubscribe = function (sink) {\n        try {\n            return this._subscribe(sink);\n        }\n        catch (err) {\n            sink.syncErrorThrown = true;\n            sink.syncErrorValue = err;\n            sink.error(err);\n        }\n    };\n    /**\n     * @method forEach\n     * @param {Function} next a handler for each value emitted by the observable\n     * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise\n     * @return {Promise} a promise that either resolves on observable completion or\n     *  rejects with the handled error\n     */\n    Observable.prototype.forEach = function (next, PromiseCtor) {\n        var _this = this;\n        if (!PromiseCtor) {\n            if (root.Rx && root.Rx.config && root.Rx.config.Promise) {\n                PromiseCtor = root.Rx.config.Promise;\n            }\n            else if (root.Promise) {\n                PromiseCtor = root.Promise;\n            }\n        }\n        if (!PromiseCtor) {\n            throw new Error('no Promise impl found');\n        }\n        return new PromiseCtor(function (resolve, reject) {\n            // Must be declared in a separate statement to avoid a RefernceError when\n            // accessing subscription below in the closure due to Temporal Dead Zone.\n            var subscription;\n            subscription = _this.subscribe(function (value) {\n                if (subscription) {\n                    // if there is a subscription, then we can surmise\n                    // the next handling is asynchronous. Any errors thrown\n                    // need to be rejected explicitly and unsubscribe must be\n                    // called manually\n                    try {\n                        next(value);\n                    }\n                    catch (err) {\n                        reject(err);\n                        subscription.unsubscribe();\n                    }\n                }\n                else {\n                    // if there is NO subscription, then we're getting a nexted\n                    // value synchronously during subscription. We can just call it.\n                    // If it errors, Observable's `subscribe` will ensure the\n                    // unsubscription logic is called, then synchronously rethrow the error.\n                    // After that, Promise will trap the error and send it\n                    // down the rejection path.\n                    next(value);\n                }\n            }, reject, resolve);\n        });\n    };\n    /** @deprecated internal use only */ Observable.prototype._subscribe = function (subscriber) {\n        return this.source.subscribe(subscriber);\n    };\n    /**\n     * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n     * @method Symbol.observable\n     * @return {Observable} this instance of the observable\n     */\n    Observable.prototype[Symbol_observable] = function () {\n        return this;\n    };\n    /* tslint:enable:max-line-length */\n    /**\n     * Used to stitch together functional operators into a chain.\n     * @method pipe\n     * @return {Observable} the Observable result of all of the operators having\n     * been called in the order they were passed in.\n     *\n     * @example\n     *\n     * import { map, filter, scan } from 'rxjs/operators';\n     *\n     * Rx.Observable.interval(1000)\n     *   .pipe(\n     *     filter(x => x % 2 === 0),\n     *     map(x => x + x),\n     *     scan((acc, x) => acc + x)\n     *   )\n     *   .subscribe(x => console.log(x))\n     */\n    Observable.prototype.pipe = function () {\n        var operations = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            operations[_i - 0] = arguments[_i];\n        }\n        if (operations.length === 0) {\n            return this;\n        }\n        return pipeFromArray(operations)(this);\n    };\n    /* tslint:enable:max-line-length */\n    Observable.prototype.toPromise = function (PromiseCtor) {\n        var _this = this;\n        if (!PromiseCtor) {\n            if (root.Rx && root.Rx.config && root.Rx.config.Promise) {\n                PromiseCtor = root.Rx.config.Promise;\n            }\n            else if (root.Promise) {\n                PromiseCtor = root.Promise;\n            }\n        }\n        if (!PromiseCtor) {\n            throw new Error('no Promise impl found');\n        }\n        return new PromiseCtor(function (resolve, reject) {\n            var value;\n            _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n        });\n    };\n    // HACK: Since TypeScript inherits static properties too, we have to\n    // fight against TypeScript here so Subject can have a different static create signature\n    /**\n     * Creates a new cold Observable by calling the Observable constructor\n     * @static true\n     * @owner Observable\n     * @method create\n     * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n     * @return {Observable} a new cold observable\n     */\n    Observable.create = function (subscribe) {\n        return new Observable(subscribe);\n    };\n    return Observable;\n}());\n//# sourceMappingURL=Observable.js.map","/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport var ObjectUnsubscribedError = (function (_super) {\n    __extends(ObjectUnsubscribedError, _super);\n    function ObjectUnsubscribedError() {\n        var err = _super.call(this, 'object unsubscribed');\n        this.name = err.name = 'ObjectUnsubscribedError';\n        this.stack = err.stack;\n        this.message = err.message;\n    }\n    return ObjectUnsubscribedError;\n}(Error));\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { Subscription } from './Subscription';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var SubjectSubscription = (function (_super) {\n    __extends(SubjectSubscription, _super);\n    function SubjectSubscription(subject, subscriber) {\n        _super.call(this);\n        this.subject = subject;\n        this.subscriber = subscriber;\n        this.closed = false;\n    }\n    SubjectSubscription.prototype.unsubscribe = function () {\n        if (this.closed) {\n            return;\n        }\n        this.closed = true;\n        var subject = this.subject;\n        var observers = subject.observers;\n        this.subject = null;\n        if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n            return;\n        }\n        var subscriberIndex = observers.indexOf(this.subscriber);\n        if (subscriberIndex !== -1) {\n            observers.splice(subscriberIndex, 1);\n        }\n    };\n    return SubjectSubscription;\n}(Subscription));\n//# sourceMappingURL=SubjectSubscription.js.map","import { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from './symbol/rxSubscriber';\n/**\n * @class SubjectSubscriber<T>\n */\nexport var SubjectSubscriber = (function (_super) {\n    __extends(SubjectSubscriber, _super);\n    function SubjectSubscriber(destination) {\n        _super.call(this, destination);\n        this.destination = destination;\n    }\n    return SubjectSubscriber;\n}(Subscriber));\n/**\n * @class Subject<T>\n */\nexport var Subject = (function (_super) {\n    __extends(Subject, _super);\n    function Subject() {\n        _super.call(this);\n        this.observers = [];\n        this.closed = false;\n        this.isStopped = false;\n        this.hasError = false;\n        this.thrownError = null;\n    }\n    Subject.prototype[rxSubscriberSymbol] = function () {\n        return new SubjectSubscriber(this);\n    };\n    Subject.prototype.lift = function (operator) {\n        var subject = new AnonymousSubject(this, this);\n        subject.operator = operator;\n        return subject;\n    };\n    Subject.prototype.next = function (value) {\n        if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n        if (!this.isStopped) {\n            var observers = this.observers;\n            var len = observers.length;\n            var copy = observers.slice();\n            for (var i = 0; i < len; i++) {\n                copy[i].next(value);\n            }\n        }\n    };\n    Subject.prototype.error = function (err) {\n        if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n        this.hasError = true;\n        this.thrownError = err;\n        this.isStopped = true;\n        var observers = this.observers;\n        var len = observers.length;\n        var copy = observers.slice();\n        for (var i = 0; i < len; i++) {\n            copy[i].error(err);\n        }\n        this.observers.length = 0;\n    };\n    Subject.prototype.complete = function () {\n        if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n        this.isStopped = true;\n        var observers = this.observers;\n        var len = observers.length;\n        var copy = observers.slice();\n        for (var i = 0; i < len; i++) {\n            copy[i].complete();\n        }\n        this.observers.length = 0;\n    };\n    Subject.prototype.unsubscribe = function () {\n        this.isStopped = true;\n        this.closed = true;\n        this.observers = null;\n    };\n    Subject.prototype._trySubscribe = function (subscriber) {\n        if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n        else {\n            return _super.prototype._trySubscribe.call(this, subscriber);\n        }\n    };\n    /** @deprecated internal use only */ Subject.prototype._subscribe = function (subscriber) {\n        if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n        else if (this.hasError) {\n            subscriber.error(this.thrownError);\n            return Subscription.EMPTY;\n        }\n        else if (this.isStopped) {\n            subscriber.complete();\n            return Subscription.EMPTY;\n        }\n        else {\n            this.observers.push(subscriber);\n            return new SubjectSubscription(this, subscriber);\n        }\n    };\n    Subject.prototype.asObservable = function () {\n        var observable = new Observable();\n        observable.source = this;\n        return observable;\n    };\n    Subject.create = function (destination, source) {\n        return new AnonymousSubject(destination, source);\n    };\n    return Subject;\n}(Observable));\n/**\n * @class AnonymousSubject<T>\n */\nexport var AnonymousSubject = (function (_super) {\n    __extends(AnonymousSubject, _super);\n    function AnonymousSubject(destination, source) {\n        _super.call(this);\n        this.destination = destination;\n        this.source = source;\n    }\n    AnonymousSubject.prototype.next = function (value) {\n        var destination = this.destination;\n        if (destination && destination.next) {\n            destination.next(value);\n        }\n    };\n    AnonymousSubject.prototype.error = function (err) {\n        var destination = this.destination;\n        if (destination && destination.error) {\n            this.destination.error(err);\n        }\n    };\n    AnonymousSubject.prototype.complete = function () {\n        var destination = this.destination;\n        if (destination && destination.complete) {\n            this.destination.complete();\n        }\n    };\n    /** @deprecated internal use only */ AnonymousSubject.prototype._subscribe = function (subscriber) {\n        var source = this.source;\n        if (source) {\n            return this.source.subscribe(subscriber);\n        }\n        else {\n            return Subscription.EMPTY;\n        }\n    };\n    return AnonymousSubject;\n}(Subject));\n//# sourceMappingURL=Subject.js.map","import { Subject } from './Subject';\nimport { Subscription } from './Subscription';\n/**\n * @class AsyncSubject<T>\n */\nexport var AsyncSubject = (function (_super) {\n    __extends(AsyncSubject, _super);\n    function AsyncSubject() {\n        _super.apply(this, arguments);\n        this.value = null;\n        this.hasNext = false;\n        this.hasCompleted = false;\n    }\n    /** @deprecated internal use only */ AsyncSubject.prototype._subscribe = function (subscriber) {\n        if (this.hasError) {\n            subscriber.error(this.thrownError);\n            return Subscription.EMPTY;\n        }\n        else if (this.hasCompleted && this.hasNext) {\n            subscriber.next(this.value);\n            subscriber.complete();\n            return Subscription.EMPTY;\n        }\n        return _super.prototype._subscribe.call(this, subscriber);\n    };\n    AsyncSubject.prototype.next = function (value) {\n        if (!this.hasCompleted) {\n            this.value = value;\n            this.hasNext = true;\n        }\n    };\n    AsyncSubject.prototype.error = function (error) {\n        if (!this.hasCompleted) {\n            _super.prototype.error.call(this, error);\n        }\n    };\n    AsyncSubject.prototype.complete = function () {\n        this.hasCompleted = true;\n        if (this.hasNext) {\n            _super.prototype.next.call(this, this.value);\n        }\n        _super.prototype.complete.call(this);\n    };\n    return AsyncSubject;\n}(Subject));\n//# sourceMappingURL=AsyncSubject.js.map","import { Observable } from '../Observable';\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { AsyncSubject } from '../AsyncSubject';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var BoundCallbackObservable = (function (_super) {\n    __extends(BoundCallbackObservable, _super);\n    function BoundCallbackObservable(callbackFunc, selector, args, context, scheduler) {\n        _super.call(this);\n        this.callbackFunc = callbackFunc;\n        this.selector = selector;\n        this.args = args;\n        this.context = context;\n        this.scheduler = scheduler;\n    }\n    /* tslint:enable:max-line-length */\n    /**\n     * Converts a callback API to a function that returns an Observable.\n     *\n     * <span class=\"informal\">Give it a function `f` of type `f(x, callback)` and\n     * it will return a function `g` that when called as `g(x)` will output an\n     * Observable.</span>\n     *\n     * `bindCallback` is not an operator because its input and output are not\n     * Observables. The input is a function `func` with some parameters, the\n     * last parameter must be a callback function that `func` calls when it is\n     * done.\n     *\n     * The output of `bindCallback` is a function that takes the same parameters\n     * as `func`, except the last one (the callback). When the output function\n     * is called with arguments it will return an Observable. If function `func`\n     * calls its callback with one argument the Observable will emit that value.\n     * If on the other hand the callback is called with multiple values the resulting\n     * Observable will emit an array with said values as arguments.\n     *\n     * It is very important to remember that input function `func` is not called\n     * when the output function is, but rather when the Observable returned by the output\n     * function is subscribed. This means if `func` makes an AJAX request, that request\n     * will be made every time someone subscribes to the resulting Observable, but not before.\n     *\n     * Optionally, a selector function can be passed to `bindObservable`. The selector function\n     * takes the same arguments as the callback and returns the value that will be emitted by the Observable.\n     * Even though by default multiple arguments passed to callback appear in the stream as an array\n     * the selector function will be called with arguments directly, just as the callback would.\n     * This means you can imagine the default selector (when one is not provided explicitly)\n     * as a function that aggregates all its arguments into an array, or simply returns first argument\n     * if there is only one.\n     *\n     * The last optional parameter - {@link Scheduler} - can be used to control when the call\n     * to `func` happens after someone subscribes to Observable, as well as when results\n     * passed to callback will be emitted. By default, the subscription to  an Observable calls `func`\n     * synchronously, but using `Scheduler.async` as the last parameter will defer the call to `func`,\n     * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you use the async Scheduler\n     * and call `subscribe` on the output Observable all function calls that are currently executing\n     * will end before `func` is invoked.\n     *\n     * By default results passed to the callback are emitted immediately after `func` invokes the callback.\n     * In particular, if the callback is called synchronously the subscription of the resulting Observable\n     * will call the `next` function synchronously as well.  If you want to defer that call,\n     * you may use `Scheduler.async` just as before.  This means that by using `Scheduler.async` you can\n     * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo.\n     *\n     * Note that the Observable created by the output function will always emit a single value\n     * and then complete immediately. If `func` calls the callback multiple times, values from subsequent\n     * calls will not appear in the stream. If you need to listen for multiple calls,\n     *  you probably want to use {@link fromEvent} or {@link fromEventPattern} instead.\n     *\n     * If `func` depends on some context (`this` property) and is not already bound the context of `func`\n     * will be the context that the output function has at call time. In particular, if `func`\n     * is called as a method of some objec and if `func` is not already bound, in order to preserve the context\n     * it is recommended that the context of the output function is set to that object as well.\n     *\n     * If the input function calls its callback in the \"node style\" (i.e. first argument to callback is\n     * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback}\n     * provides convenient error handling and probably is a better choice.\n     * `bindCallback` will treat such functions the same as any other and error parameters\n     * (whether passed or not) will always be interpreted as regular callback argument.\n     *\n     *\n     * @example <caption>Convert jQuery's getJSON to an Observable API</caption>\n     * // Suppose we have jQuery.getJSON('/my/url', callback)\n     * var getJSONAsObservable = Rx.Observable.bindCallback(jQuery.getJSON);\n     * var result = getJSONAsObservable('/my/url');\n     * result.subscribe(x => console.log(x), e => console.error(e));\n     *\n     *\n     * @example <caption>Receive an array of arguments passed to a callback</caption>\n     * someFunction((a, b, c) => {\n     *   console.log(a); // 5\n     *   console.log(b); // 'some string'\n     *   console.log(c); // {someProperty: 'someValue'}\n     * });\n     *\n     * const boundSomeFunction = Rx.Observable.bindCallback(someFunction);\n     * boundSomeFunction().subscribe(values => {\n     *   console.log(values) // [5, 'some string', {someProperty: 'someValue'}]\n     * });\n     *\n     *\n     * @example <caption>Use bindCallback with a selector function</caption>\n     * someFunction((a, b, c) => {\n     *   console.log(a); // 'a'\n     *   console.log(b); // 'b'\n     *   console.log(c); // 'c'\n     * });\n     *\n     * const boundSomeFunction = Rx.Observable.bindCallback(someFunction, (a, b, c) => a + b + c);\n     * boundSomeFunction().subscribe(value => {\n     *   console.log(value) // 'abc'\n     * });\n     *\n     *\n     * @example <caption>Compare behaviour with and without async Scheduler</caption>\n     * function iCallMyCallbackSynchronously(cb) {\n     *   cb();\n     * }\n     *\n     * const boundSyncFn = Rx.Observable.bindCallback(iCallMyCallbackSynchronously);\n     * const boundAsyncFn = Rx.Observable.bindCallback(iCallMyCallbackSynchronously, null, Rx.Scheduler.async);\n     *\n     * boundSyncFn().subscribe(() => console.log('I was sync!'));\n     * boundAsyncFn().subscribe(() => console.log('I was async!'));\n     * console.log('This happened...');\n     *\n     * // Logs:\n     * // I was sync!\n     * // This happened...\n     * // I was async!\n     *\n     *\n     * @example <caption>Use bindCallback on an object method</caption>\n     * const boundMethod = Rx.Observable.bindCallback(someObject.methodWithCallback);\n     * boundMethod.call(someObject) // make sure methodWithCallback has access to someObject\n     * .subscribe(subscriber);\n     *\n     *\n     * @see {@link bindNodeCallback}\n     * @see {@link from}\n     * @see {@link fromPromise}\n     *\n     * @param {function} func A function with a callback as the last parameter.\n     * @param {function} [selector] A function which takes the arguments from the\n     * callback and maps them to a value that is emitted on the output Observable.\n     * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n     * callbacks.\n     * @return {function(...params: *): Observable} A function which returns the\n     * Observable that delivers the same values the callback would deliver.\n     * @static true\n     * @name bindCallback\n     * @owner Observable\n     */\n    BoundCallbackObservable.create = function (func, selector, scheduler) {\n        if (selector === void 0) { selector = undefined; }\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i - 0] = arguments[_i];\n            }\n            return new BoundCallbackObservable(func, selector, args, this, scheduler);\n        };\n    };\n    /** @deprecated internal use only */ BoundCallbackObservable.prototype._subscribe = function (subscriber) {\n        var callbackFunc = this.callbackFunc;\n        var args = this.args;\n        var scheduler = this.scheduler;\n        var subject = this.subject;\n        if (!scheduler) {\n            if (!subject) {\n                subject = this.subject = new AsyncSubject();\n                var handler = function handlerFn() {\n                    var innerArgs = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        innerArgs[_i - 0] = arguments[_i];\n                    }\n                    var source = handlerFn.source;\n                    var selector = source.selector, subject = source.subject;\n                    if (selector) {\n                        var result_1 = tryCatch(selector).apply(this, innerArgs);\n                        if (result_1 === errorObject) {\n                            subject.error(errorObject.e);\n                        }\n                        else {\n                            subject.next(result_1);\n                            subject.complete();\n                        }\n                    }\n                    else {\n                        subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n                        subject.complete();\n                    }\n                };\n                // use named function instance to avoid closure.\n                handler.source = this;\n                var result = tryCatch(callbackFunc).apply(this.context, args.concat(handler));\n                if (result === errorObject) {\n                    subject.error(errorObject.e);\n                }\n            }\n            return subject.subscribe(subscriber);\n        }\n        else {\n            return scheduler.schedule(BoundCallbackObservable.dispatch, 0, { source: this, subscriber: subscriber, context: this.context });\n        }\n    };\n    BoundCallbackObservable.dispatch = function (state) {\n        var self = this;\n        var source = state.source, subscriber = state.subscriber, context = state.context;\n        var callbackFunc = source.callbackFunc, args = source.args, scheduler = source.scheduler;\n        var subject = source.subject;\n        if (!subject) {\n            subject = source.subject = new AsyncSubject();\n            var handler = function handlerFn() {\n                var innerArgs = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    innerArgs[_i - 0] = arguments[_i];\n                }\n                var source = handlerFn.source;\n                var selector = source.selector, subject = source.subject;\n                if (selector) {\n                    var result_2 = tryCatch(selector).apply(this, innerArgs);\n                    if (result_2 === errorObject) {\n                        self.add(scheduler.schedule(dispatchError, 0, { err: errorObject.e, subject: subject }));\n                    }\n                    else {\n                        self.add(scheduler.schedule(dispatchNext, 0, { value: result_2, subject: subject }));\n                    }\n                }\n                else {\n                    var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n                    self.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n                }\n            };\n            // use named function to pass values in without closure\n            handler.source = source;\n            var result = tryCatch(callbackFunc).apply(context, args.concat(handler));\n            if (result === errorObject) {\n                subject.error(errorObject.e);\n            }\n        }\n        self.add(subject.subscribe(subscriber));\n    };\n    return BoundCallbackObservable;\n}(Observable));\nfunction dispatchNext(arg) {\n    var value = arg.value, subject = arg.subject;\n    subject.next(value);\n    subject.complete();\n}\nfunction dispatchError(arg) {\n    var err = arg.err, subject = arg.subject;\n    subject.error(err);\n}\n//# sourceMappingURL=BoundCallbackObservable.js.map","import { BoundCallbackObservable } from './BoundCallbackObservable';\nexport var bindCallback = BoundCallbackObservable.create;\n//# sourceMappingURL=bindCallback.js.map","import { Observable } from '../../Observable';\nimport { bindCallback as staticBindCallback } from '../../observable/bindCallback';\nObservable.bindCallback = staticBindCallback;\n//# sourceMappingURL=bindCallback.js.map","import { Observable } from '../Observable';\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { AsyncSubject } from '../AsyncSubject';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var BoundNodeCallbackObservable = (function (_super) {\n    __extends(BoundNodeCallbackObservable, _super);\n    function BoundNodeCallbackObservable(callbackFunc, selector, args, context, scheduler) {\n        _super.call(this);\n        this.callbackFunc = callbackFunc;\n        this.selector = selector;\n        this.args = args;\n        this.context = context;\n        this.scheduler = scheduler;\n    }\n    /* tslint:enable:max-line-length */\n    /**\n     * Converts a Node.js-style callback API to a function that returns an\n     * Observable.\n     *\n     * <span class=\"informal\">It's just like {@link bindCallback}, but the\n     * callback is expected to be of type `callback(error, result)`.</span>\n     *\n     * `bindNodeCallback` is not an operator because its input and output are not\n     * Observables. The input is a function `func` with some parameters, but the\n     * last parameter must be a callback function that `func` calls when it is\n     * done. The callback function is expected to follow Node.js conventions,\n     * where the first argument to the callback is an error object, signaling\n     * whether call was successful. If that object is passed to callback, it means\n     * something went wrong.\n     *\n     * The output of `bindNodeCallback` is a function that takes the same\n     * parameters as `func`, except the last one (the callback). When the output\n     * function is called with arguments, it will return an Observable.\n     * If `func` calls its callback with error parameter present, Observable will\n     * error with that value as well. If error parameter is not passed, Observable will emit\n     * second parameter. If there are more parameters (third and so on),\n     * Observable will emit an array with all arguments, except first error argument.\n     *\n     * Optionally `bindNodeCallback` accepts selector function, which allows you to\n     * make resulting Observable emit value computed by selector, instead of regular\n     * callback arguments. It works similarly to {@link bindCallback} selector, but\n     * Node.js-style error argument will never be passed to that function.\n     *\n     * Note that `func` will not be called at the same time output function is,\n     * but rather whenever resulting Observable is subscribed. By default call to\n     * `func` will happen synchronously after subscription, but that can be changed\n     * with proper {@link Scheduler} provided as optional third parameter. Scheduler\n     * can also control when values from callback will be emitted by Observable.\n     * To find out more, check out documentation for {@link bindCallback}, where\n     * Scheduler works exactly the same.\n     *\n     * As in {@link bindCallback}, context (`this` property) of input function will be set to context\n     * of returned function, when it is called.\n     *\n     * After Observable emits value, it will complete immediately. This means\n     * even if `func` calls callback again, values from second and consecutive\n     * calls will never appear on the stream. If you need to handle functions\n     * that call callbacks multiple times, check out {@link fromEvent} or\n     * {@link fromEventPattern} instead.\n     *\n     * Note that `bindNodeCallback` can be used in non-Node.js environments as well.\n     * \"Node.js-style\" callbacks are just a convention, so if you write for\n     * browsers or any other environment and API you use implements that callback style,\n     * `bindNodeCallback` can be safely used on that API functions as well.\n     *\n     * Remember that Error object passed to callback does not have to be an instance\n     * of JavaScript built-in `Error` object. In fact, it does not even have to an object.\n     * Error parameter of callback function is interpreted as \"present\", when value\n     * of that parameter is truthy. It could be, for example, non-zero number, non-empty\n     * string or boolean `true`. In all of these cases resulting Observable would error\n     * with that value. This means usually regular style callbacks will fail very often when\n     * `bindNodeCallback` is used. If your Observable errors much more often then you\n     * would expect, check if callback really is called in Node.js-style and, if not,\n     * switch to {@link bindCallback} instead.\n     *\n     * Note that even if error parameter is technically present in callback, but its value\n     * is falsy, it still won't appear in array emitted by Observable or in selector function.\n     *\n     *\n     * @example <caption>Read a file from the filesystem and get the data as an Observable</caption>\n     * import * as fs from 'fs';\n     * var readFileAsObservable = Rx.Observable.bindNodeCallback(fs.readFile);\n     * var result = readFileAsObservable('./roadNames.txt', 'utf8');\n     * result.subscribe(x => console.log(x), e => console.error(e));\n     *\n     *\n     * @example <caption>Use on function calling callback with multiple arguments</caption>\n     * someFunction((err, a, b) => {\n     *   console.log(err); // null\n     *   console.log(a); // 5\n     *   console.log(b); // \"some string\"\n     * });\n     * var boundSomeFunction = Rx.Observable.bindNodeCallback(someFunction);\n     * boundSomeFunction()\n     * .subscribe(value => {\n     *   console.log(value); // [5, \"some string\"]\n     * });\n     *\n     *\n     * @example <caption>Use with selector function</caption>\n     * someFunction((err, a, b) => {\n     *   console.log(err); // undefined\n     *   console.log(a); // \"abc\"\n     *   console.log(b); // \"DEF\"\n     * });\n     * var boundSomeFunction = Rx.Observable.bindNodeCallback(someFunction, (a, b) => a + b);\n     * boundSomeFunction()\n     * .subscribe(value => {\n     *   console.log(value); // \"abcDEF\"\n     * });\n     *\n     *\n     * @example <caption>Use on function calling callback in regular style</caption>\n     * someFunction(a => {\n     *   console.log(a); // 5\n     * });\n     * var boundSomeFunction = Rx.Observable.bindNodeCallback(someFunction);\n     * boundSomeFunction()\n     * .subscribe(\n     *   value => {}             // never gets called\n     *   err => console.log(err) // 5\n     *);\n     *\n     *\n     * @see {@link bindCallback}\n     * @see {@link from}\n     * @see {@link fromPromise}\n     *\n     * @param {function} func Function with a Node.js-style callback as the last parameter.\n     * @param {function} [selector] A function which takes the arguments from the\n     * callback and maps those to a value to emit on the output Observable.\n     * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n     * callbacks.\n     * @return {function(...params: *): Observable} A function which returns the\n     * Observable that delivers the same values the Node.js callback would\n     * deliver.\n     * @static true\n     * @name bindNodeCallback\n     * @owner Observable\n     */\n    BoundNodeCallbackObservable.create = function (func, selector, scheduler) {\n        if (selector === void 0) { selector = undefined; }\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i - 0] = arguments[_i];\n            }\n            return new BoundNodeCallbackObservable(func, selector, args, this, scheduler);\n        };\n    };\n    /** @deprecated internal use only */ BoundNodeCallbackObservable.prototype._subscribe = function (subscriber) {\n        var callbackFunc = this.callbackFunc;\n        var args = this.args;\n        var scheduler = this.scheduler;\n        var subject = this.subject;\n        if (!scheduler) {\n            if (!subject) {\n                subject = this.subject = new AsyncSubject();\n                var handler = function handlerFn() {\n                    var innerArgs = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        innerArgs[_i - 0] = arguments[_i];\n                    }\n                    var source = handlerFn.source;\n                    var selector = source.selector, subject = source.subject;\n                    var err = innerArgs.shift();\n                    if (err) {\n                        subject.error(err);\n                    }\n                    else if (selector) {\n                        var result_1 = tryCatch(selector).apply(this, innerArgs);\n                        if (result_1 === errorObject) {\n                            subject.error(errorObject.e);\n                        }\n                        else {\n                            subject.next(result_1);\n                            subject.complete();\n                        }\n                    }\n                    else {\n                        subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n                        subject.complete();\n                    }\n                };\n                // use named function instance to avoid closure.\n                handler.source = this;\n                var result = tryCatch(callbackFunc).apply(this.context, args.concat(handler));\n                if (result === errorObject) {\n                    subject.error(errorObject.e);\n                }\n            }\n            return subject.subscribe(subscriber);\n        }\n        else {\n            return scheduler.schedule(dispatch, 0, { source: this, subscriber: subscriber, context: this.context });\n        }\n    };\n    return BoundNodeCallbackObservable;\n}(Observable));\nfunction dispatch(state) {\n    var self = this;\n    var source = state.source, subscriber = state.subscriber, context = state.context;\n    // XXX: cast to `any` to access to the private field in `source`.\n    var _a = source, callbackFunc = _a.callbackFunc, args = _a.args, scheduler = _a.scheduler;\n    var subject = source.subject;\n    if (!subject) {\n        subject = source.subject = new AsyncSubject();\n        var handler = function handlerFn() {\n            var innerArgs = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                innerArgs[_i - 0] = arguments[_i];\n            }\n            var source = handlerFn.source;\n            var selector = source.selector, subject = source.subject;\n            var err = innerArgs.shift();\n            if (err) {\n                self.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n            }\n            else if (selector) {\n                var result_2 = tryCatch(selector).apply(this, innerArgs);\n                if (result_2 === errorObject) {\n                    self.add(scheduler.schedule(dispatchError, 0, { err: errorObject.e, subject: subject }));\n                }\n                else {\n                    self.add(scheduler.schedule(dispatchNext, 0, { value: result_2, subject: subject }));\n                }\n            }\n            else {\n                var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n                self.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n            }\n        };\n        // use named function to pass values in without closure\n        handler.source = source;\n        var result = tryCatch(callbackFunc).apply(context, args.concat(handler));\n        if (result === errorObject) {\n            self.add(scheduler.schedule(dispatchError, 0, { err: errorObject.e, subject: subject }));\n        }\n    }\n    self.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(arg) {\n    var value = arg.value, subject = arg.subject;\n    subject.next(value);\n    subject.complete();\n}\nfunction dispatchError(arg) {\n    var err = arg.err, subject = arg.subject;\n    subject.error(err);\n}\n//# sourceMappingURL=BoundNodeCallbackObservable.js.map","import { BoundNodeCallbackObservable } from './BoundNodeCallbackObservable';\nexport var bindNodeCallback = BoundNodeCallbackObservable.create;\n//# sourceMappingURL=bindNodeCallback.js.map","import { Observable } from '../../Observable';\nimport { bindNodeCallback as staticBindNodeCallback } from '../../observable/bindNodeCallback';\nObservable.bindNodeCallback = staticBindNodeCallback;\n//# sourceMappingURL=bindNodeCallback.js.map","export function isScheduler(value) {\n    return value && typeof value.schedule === 'function';\n}\n//# sourceMappingURL=isScheduler.js.map","import { Observable } from '../Observable';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var ScalarObservable = (function (_super) {\n    __extends(ScalarObservable, _super);\n    function ScalarObservable(value, scheduler) {\n        _super.call(this);\n        this.value = value;\n        this.scheduler = scheduler;\n        this._isScalar = true;\n        if (scheduler) {\n            this._isScalar = false;\n        }\n    }\n    ScalarObservable.create = function (value, scheduler) {\n        return new ScalarObservable(value, scheduler);\n    };\n    ScalarObservable.dispatch = function (state) {\n        var done = state.done, value = state.value, subscriber = state.subscriber;\n        if (done) {\n            subscriber.complete();\n            return;\n        }\n        subscriber.next(value);\n        if (subscriber.closed) {\n            return;\n        }\n        state.done = true;\n        this.schedule(state);\n    };\n    /** @deprecated internal use only */ ScalarObservable.prototype._subscribe = function (subscriber) {\n        var value = this.value;\n        var scheduler = this.scheduler;\n        if (scheduler) {\n            return scheduler.schedule(ScalarObservable.dispatch, 0, {\n                done: false, value: value, subscriber: subscriber\n            });\n        }\n        else {\n            subscriber.next(value);\n            if (!subscriber.closed) {\n                subscriber.complete();\n            }\n        }\n    };\n    return ScalarObservable;\n}(Observable));\n//# sourceMappingURL=ScalarObservable.js.map","import { Observable } from '../Observable';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var EmptyObservable = (function (_super) {\n    __extends(EmptyObservable, _super);\n    function EmptyObservable(scheduler) {\n        _super.call(this);\n        this.scheduler = scheduler;\n    }\n    /**\n     * Creates an Observable that emits no items to the Observer and immediately\n     * emits a complete notification.\n     *\n     * <span class=\"informal\">Just emits 'complete', and nothing else.\n     * </span>\n     *\n     * <img src=\"./img/empty.png\" width=\"100%\">\n     *\n     * This static operator is useful for creating a simple Observable that only\n     * emits the complete notification. It can be used for composing with other\n     * Observables, such as in a {@link mergeMap}.\n     *\n     * @example <caption>Emit the number 7, then complete.</caption>\n     * var result = Rx.Observable.empty().startWith(7);\n     * result.subscribe(x => console.log(x));\n     *\n     * @example <caption>Map and flatten only odd numbers to the sequence 'a', 'b', 'c'</caption>\n     * var interval = Rx.Observable.interval(1000);\n     * var result = interval.mergeMap(x =>\n     *   x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty()\n     * );\n     * result.subscribe(x => console.log(x));\n     *\n     * // Results in the following to the console:\n     * // x is equal to the count on the interval eg(0,1,2,3,...)\n     * // x will occur every 1000ms\n     * // if x % 2 is equal to 1 print abc\n     * // if x % 2 is not equal to 1 nothing will be output\n     *\n     * @see {@link create}\n     * @see {@link never}\n     * @see {@link of}\n     * @see {@link throw}\n     *\n     * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n     * the emission of the complete notification.\n     * @return {Observable} An \"empty\" Observable: emits only the complete\n     * notification.\n     * @static true\n     * @name empty\n     * @owner Observable\n     */\n    EmptyObservable.create = function (scheduler) {\n        return new EmptyObservable(scheduler);\n    };\n    EmptyObservable.dispatch = function (arg) {\n        var subscriber = arg.subscriber;\n        subscriber.complete();\n    };\n    /** @deprecated internal use only */ EmptyObservable.prototype._subscribe = function (subscriber) {\n        var scheduler = this.scheduler;\n        if (scheduler) {\n            return scheduler.schedule(EmptyObservable.dispatch, 0, { subscriber: subscriber });\n        }\n        else {\n            subscriber.complete();\n        }\n    };\n    return EmptyObservable;\n}(Observable));\n//# sourceMappingURL=EmptyObservable.js.map","import { Observable } from '../Observable';\nimport { ScalarObservable } from './ScalarObservable';\nimport { EmptyObservable } from './EmptyObservable';\nimport { isScheduler } from '../util/isScheduler';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var ArrayObservable = (function (_super) {\n    __extends(ArrayObservable, _super);\n    function ArrayObservable(array, scheduler) {\n        _super.call(this);\n        this.array = array;\n        this.scheduler = scheduler;\n        if (!scheduler && array.length === 1) {\n            this._isScalar = true;\n            this.value = array[0];\n        }\n    }\n    ArrayObservable.create = function (array, scheduler) {\n        return new ArrayObservable(array, scheduler);\n    };\n    /**\n     * Creates an Observable that emits some values you specify as arguments,\n     * immediately one after the other, and then emits a complete notification.\n     *\n     * <span class=\"informal\">Emits the arguments you provide, then completes.\n     * </span>\n     *\n     * <img src=\"./img/of.png\" width=\"100%\">\n     *\n     * This static operator is useful for creating a simple Observable that only\n     * emits the arguments given, and the complete notification thereafter. It can\n     * be used for composing with other Observables, such as with {@link concat}.\n     * By default, it uses a `null` IScheduler, which means the `next`\n     * notifications are sent synchronously, although with a different IScheduler\n     * it is possible to determine when those notifications will be delivered.\n     *\n     * @example <caption>Emit 10, 20, 30, then 'a', 'b', 'c', then start ticking every second.</caption>\n     * var numbers = Rx.Observable.of(10, 20, 30);\n     * var letters = Rx.Observable.of('a', 'b', 'c');\n     * var interval = Rx.Observable.interval(1000);\n     * var result = numbers.concat(letters).concat(interval);\n     * result.subscribe(x => console.log(x));\n     *\n     * @see {@link create}\n     * @see {@link empty}\n     * @see {@link never}\n     * @see {@link throw}\n     *\n     * @param {...T} values Arguments that represent `next` values to be emitted.\n     * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n     * the emissions of the `next` notifications.\n     * @return {Observable<T>} An Observable that emits each given input value.\n     * @static true\n     * @name of\n     * @owner Observable\n     */\n    ArrayObservable.of = function () {\n        var array = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            array[_i - 0] = arguments[_i];\n        }\n        var scheduler = array[array.length - 1];\n        if (isScheduler(scheduler)) {\n            array.pop();\n        }\n        else {\n            scheduler = null;\n        }\n        var len = array.length;\n        if (len > 1) {\n            return new ArrayObservable(array, scheduler);\n        }\n        else if (len === 1) {\n            return new ScalarObservable(array[0], scheduler);\n        }\n        else {\n            return new EmptyObservable(scheduler);\n        }\n    };\n    ArrayObservable.dispatch = function (state) {\n        var array = state.array, index = state.index, count = state.count, subscriber = state.subscriber;\n        if (index >= count) {\n            subscriber.complete();\n            return;\n        }\n        subscriber.next(array[index]);\n        if (subscriber.closed) {\n            return;\n        }\n        state.index = index + 1;\n        this.schedule(state);\n    };\n    /** @deprecated internal use only */ ArrayObservable.prototype._subscribe = function (subscriber) {\n        var index = 0;\n        var array = this.array;\n        var count = array.length;\n        var scheduler = this.scheduler;\n        if (scheduler) {\n            return scheduler.schedule(ArrayObservable.dispatch, 0, {\n                array: array, index: index, count: count, subscriber: subscriber\n            });\n        }\n        else {\n            for (var i = 0; i < count && !subscriber.closed; i++) {\n                subscriber.next(array[i]);\n            }\n            subscriber.complete();\n        }\n    };\n    return ArrayObservable;\n}(Observable));\n//# sourceMappingURL=ArrayObservable.js.map","import { Subscriber } from './Subscriber';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var OuterSubscriber = (function (_super) {\n    __extends(OuterSubscriber, _super);\n    function OuterSubscriber() {\n        _super.apply(this, arguments);\n    }\n    OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.destination.next(innerValue);\n    };\n    OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n        this.destination.error(error);\n    };\n    OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n        this.destination.complete();\n    };\n    return OuterSubscriber;\n}(Subscriber));\n//# sourceMappingURL=OuterSubscriber.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArrayLike.js.map","export function isPromise(value) {\n    return value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map","import { root } from '../util/root';\nexport function symbolIteratorPonyfill(root) {\n    var Symbol = root.Symbol;\n    if (typeof Symbol === 'function') {\n        if (!Symbol.iterator) {\n            Symbol.iterator = Symbol('iterator polyfill');\n        }\n        return Symbol.iterator;\n    }\n    else {\n        // [for Mozilla Gecko 27-35:](https://mzl.la/2ewE1zC)\n        var Set_1 = root.Set;\n        if (Set_1 && typeof new Set_1()['@@iterator'] === 'function') {\n            return '@@iterator';\n        }\n        var Map_1 = root.Map;\n        // required for compatability with es6-shim\n        if (Map_1) {\n            var keys = Object.getOwnPropertyNames(Map_1.prototype);\n            for (var i = 0; i < keys.length; ++i) {\n                var key = keys[i];\n                // according to spec, Map.prototype[@@iterator] and Map.orototype.entries must be equal.\n                if (key !== 'entries' && key !== 'size' && Map_1.prototype[key] === Map_1.prototype['entries']) {\n                    return key;\n                }\n            }\n        }\n        return '@@iterator';\n    }\n}\nexport var iterator = symbolIteratorPonyfill(root);\n/**\n * @deprecated use iterator instead\n */\nexport var $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map","import { Subscriber } from './Subscriber';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var InnerSubscriber = (function (_super) {\n    __extends(InnerSubscriber, _super);\n    function InnerSubscriber(parent, outerValue, outerIndex) {\n        _super.call(this);\n        this.parent = parent;\n        this.outerValue = outerValue;\n        this.outerIndex = outerIndex;\n        this.index = 0;\n    }\n    InnerSubscriber.prototype._next = function (value) {\n        this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n    };\n    InnerSubscriber.prototype._error = function (error) {\n        this.parent.notifyError(error, this);\n        this.unsubscribe();\n    };\n    InnerSubscriber.prototype._complete = function () {\n        this.parent.notifyComplete(this);\n        this.unsubscribe();\n    };\n    return InnerSubscriber;\n}(Subscriber));\n//# sourceMappingURL=InnerSubscriber.js.map","import { root } from './root';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex) {\n    var destination = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n    if (destination.closed) {\n        return null;\n    }\n    if (result instanceof Observable) {\n        if (result._isScalar) {\n            destination.next(result.value);\n            destination.complete();\n            return null;\n        }\n        else {\n            destination.syncErrorThrowable = true;\n            return result.subscribe(destination);\n        }\n    }\n    else if (isArrayLike(result)) {\n        for (var i = 0, len = result.length; i < len && !destination.closed; i++) {\n            destination.next(result[i]);\n        }\n        if (!destination.closed) {\n            destination.complete();\n        }\n    }\n    else if (isPromise(result)) {\n        result.then(function (value) {\n            if (!destination.closed) {\n                destination.next(value);\n                destination.complete();\n            }\n        }, function (err) { return destination.error(err); })\n            .then(null, function (err) {\n            // Escaping the Promise trap: globally throw unhandled errors\n            root.setTimeout(function () { throw err; });\n        });\n        return destination;\n    }\n    else if (result && typeof result[Symbol_iterator] === 'function') {\n        var iterator = result[Symbol_iterator]();\n        do {\n            var item = iterator.next();\n            if (item.done) {\n                destination.complete();\n                break;\n            }\n            destination.next(item.value);\n            if (destination.closed) {\n                break;\n            }\n        } while (true);\n    }\n    else if (result && typeof result[Symbol_observable] === 'function') {\n        var obs = result[Symbol_observable]();\n        if (typeof obs.subscribe !== 'function') {\n            destination.error(new TypeError('Provided object does not correctly implement Symbol.observable'));\n        }\n        else {\n            return obs.subscribe(new InnerSubscriber(outerSubscriber, outerValue, outerIndex));\n        }\n    }\n    else {\n        var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n        var msg = (\"You provided \" + value + \" where a stream was expected.\")\n            + ' You can provide an Observable, Promise, Array, or Iterable.';\n        destination.error(new TypeError(msg));\n    }\n    return null;\n}\n//# sourceMappingURL=subscribeToResult.js.map","import { ArrayObservable } from '../observable/ArrayObservable';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nvar none = {};\n/* tslint:enable:max-line-length */\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * <span class=\"informal\">Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.</span>\n *\n * <img src=\"./img/combineLatest.png\" width=\"100%\">\n *\n * `combineLatest` combines the values from this Observable with values from\n * Observables passed as arguments. This is done by subscribing to each\n * Observable, in order, and collecting an array of each of the most recent\n * values any time any of the input Observables emits, then either taking that\n * array and passing it as arguments to an optional `project` function and\n * emitting the return value of that, or just emitting the array of recent\n * values directly if there is no `project` function.\n *\n * @example <caption>Dynamically calculate the Body-Mass Index from an Observable of weight and one for height</caption>\n * var weight = Rx.Observable.of(70, 72, 76, 79, 75);\n * var height = Rx.Observable.of(1.76, 1.77, 1.78);\n * var bmi = weight.combineLatest(height, (w, h) => w / (h * h));\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method combineLatest\n * @owner Observable\n */\nexport function combineLatest() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    var project = null;\n    if (typeof observables[observables.length - 1] === 'function') {\n        project = observables.pop();\n    }\n    // if the first and only other argument besides the resultSelector is an array\n    // assume it's been called with `combineLatest([obs1, obs2, obs3], project)`\n    if (observables.length === 1 && isArray(observables[0])) {\n        observables = observables[0].slice();\n    }\n    return function (source) { return source.lift.call(new ArrayObservable([source].concat(observables)), new CombineLatestOperator(project)); };\n}\nexport var CombineLatestOperator = (function () {\n    function CombineLatestOperator(project) {\n        this.project = project;\n    }\n    CombineLatestOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new CombineLatestSubscriber(subscriber, this.project));\n    };\n    return CombineLatestOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var CombineLatestSubscriber = (function (_super) {\n    __extends(CombineLatestSubscriber, _super);\n    function CombineLatestSubscriber(destination, project) {\n        _super.call(this, destination);\n        this.project = project;\n        this.active = 0;\n        this.values = [];\n        this.observables = [];\n    }\n    CombineLatestSubscriber.prototype._next = function (observable) {\n        this.values.push(none);\n        this.observables.push(observable);\n    };\n    CombineLatestSubscriber.prototype._complete = function () {\n        var observables = this.observables;\n        var len = observables.length;\n        if (len === 0) {\n            this.destination.complete();\n        }\n        else {\n            this.active = len;\n            this.toRespond = len;\n            for (var i = 0; i < len; i++) {\n                var observable = observables[i];\n                this.add(subscribeToResult(this, observable, observable, i));\n            }\n        }\n    };\n    CombineLatestSubscriber.prototype.notifyComplete = function (unused) {\n        if ((this.active -= 1) === 0) {\n            this.destination.complete();\n        }\n    };\n    CombineLatestSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        var values = this.values;\n        var oldVal = values[outerIndex];\n        var toRespond = !this.toRespond\n            ? 0\n            : oldVal === none ? --this.toRespond : this.toRespond;\n        values[outerIndex] = innerValue;\n        if (toRespond === 0) {\n            if (this.project) {\n                this._tryProject(values);\n            }\n            else {\n                this.destination.next(values.slice());\n            }\n        }\n    };\n    CombineLatestSubscriber.prototype._tryProject = function (values) {\n        var result;\n        try {\n            result = this.project.apply(this, values);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return CombineLatestSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=combineLatest.js.map","import { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { ArrayObservable } from './ArrayObservable';\nimport { CombineLatestOperator } from '../operators/combineLatest';\n/* tslint:enable:max-line-length */\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * <span class=\"informal\">Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.</span>\n *\n * <img src=\"./img/combineLatest.png\" width=\"100%\">\n *\n * `combineLatest` combines the values from all the Observables passed as\n * arguments. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to operator,\n * returned Observable will always emit an array of `n` values, in order\n * corresponding to order of passed Observables (value from the first Observable\n * on the first place and so on).\n *\n * Static version of `combineLatest` accepts either an array of Observables\n * or each Observable can be put directly as an argument. Note that array of\n * Observables is good choice, if you don't know beforehand how many Observables\n * you will combine. Passing empty array will result in Observable that\n * completes immediately.\n *\n * To ensure output array has always the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all that values but last\n * will be lost. On the other hand, is some Observable does not emit value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will be now impossible to include value from\n * completed Observable in resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * `combineLatest` accepts as optional parameter `project` function, which takes\n * as arguments all values that would normally be emitted by resulting Observable.\n * `project` can return any kind of value, which will be then emitted by Observable\n * instead of default array. Note that `project` does not take as argument that array\n * of values, but values themselves. That means default `project` can be imagined\n * as function that takes all its arguments and puts them into an array.\n *\n *\n * @example <caption>Combine two timer Observables</caption>\n * const firstTimer = Rx.Observable.timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = Rx.Observable.timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = Rx.Observable.combineLatest(firstTimer, secondTimer);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n *\n *\n * @example <caption>Combine an array of Observables</caption>\n * const observables = [1, 5, 10].map(\n *   n => Rx.Observable.of(n).delay(n * 1000).startWith(0) // emit 0 and then emit n after n seconds\n * );\n * const combined = Rx.Observable.combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n *\n *\n * @example <caption>Use project function to dynamically calculate the Body-Mass Index</caption>\n * var weight = Rx.Observable.of(70, 72, 76, 79, 75);\n * var height = Rx.Observable.of(1.76, 1.77, 1.78);\n * var bmi = Rx.Observable.combineLatest(weight, height, (w, h) => w / (h * h));\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n *\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} observable1 An input Observable to combine with other Observables.\n * @param {ObservableInput} observable2 An input Observable to combine with other Observables.\n * More than one input Observables may be given as arguments\n * or an array of Observables may be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @static true\n * @name combineLatest\n * @owner Observable\n */\nexport function combineLatest() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    var project = null;\n    var scheduler = null;\n    if (isScheduler(observables[observables.length - 1])) {\n        scheduler = observables.pop();\n    }\n    if (typeof observables[observables.length - 1] === 'function') {\n        project = observables.pop();\n    }\n    // if the first and only other argument besides the resultSelector is an array\n    // assume it's been called with `combineLatest([obs1, obs2, obs3], project)`\n    if (observables.length === 1 && isArray(observables[0])) {\n        observables = observables[0];\n    }\n    return new ArrayObservable(observables, scheduler).lift(new CombineLatestOperator(project));\n}\n//# sourceMappingURL=combineLatest.js.map","import { Observable } from '../../Observable';\nimport { combineLatest as combineLatestStatic } from '../../observable/combineLatest';\nObservable.combineLatest = combineLatestStatic;\n//# sourceMappingURL=combineLatest.js.map","import { ArrayObservable } from './ArrayObservable';\nexport var of = ArrayObservable.of;\n//# sourceMappingURL=of.js.map","import { root } from '../util/root';\nimport { Observable } from '../Observable';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var PromiseObservable = (function (_super) {\n    __extends(PromiseObservable, _super);\n    function PromiseObservable(promise, scheduler) {\n        _super.call(this);\n        this.promise = promise;\n        this.scheduler = scheduler;\n    }\n    /**\n     * Converts a Promise to an Observable.\n     *\n     * <span class=\"informal\">Returns an Observable that just emits the Promise's\n     * resolved value, then completes.</span>\n     *\n     * Converts an ES2015 Promise or a Promises/A+ spec compliant Promise to an\n     * Observable. If the Promise resolves with a value, the output Observable\n     * emits that resolved value as a `next`, and then completes. If the Promise\n     * is rejected, then the output Observable emits the corresponding Error.\n     *\n     * @example <caption>Convert the Promise returned by Fetch to an Observable</caption>\n     * var result = Rx.Observable.fromPromise(fetch('http://myserver.com/'));\n     * result.subscribe(x => console.log(x), e => console.error(e));\n     *\n     * @see {@link bindCallback}\n     * @see {@link from}\n     *\n     * @param {PromiseLike<T>} promise The promise to be converted.\n     * @param {Scheduler} [scheduler] An optional IScheduler to use for scheduling\n     * the delivery of the resolved value (or the rejection).\n     * @return {Observable<T>} An Observable which wraps the Promise.\n     * @static true\n     * @name fromPromise\n     * @owner Observable\n     */\n    PromiseObservable.create = function (promise, scheduler) {\n        return new PromiseObservable(promise, scheduler);\n    };\n    /** @deprecated internal use only */ PromiseObservable.prototype._subscribe = function (subscriber) {\n        var _this = this;\n        var promise = this.promise;\n        var scheduler = this.scheduler;\n        if (scheduler == null) {\n            if (this._isScalar) {\n                if (!subscriber.closed) {\n                    subscriber.next(this.value);\n                    subscriber.complete();\n                }\n            }\n            else {\n                promise.then(function (value) {\n                    _this.value = value;\n                    _this._isScalar = true;\n                    if (!subscriber.closed) {\n                        subscriber.next(value);\n                        subscriber.complete();\n                    }\n                }, function (err) {\n                    if (!subscriber.closed) {\n                        subscriber.error(err);\n                    }\n                })\n                    .then(null, function (err) {\n                    // escape the promise trap, throw unhandled errors\n                    root.setTimeout(function () { throw err; });\n                });\n            }\n        }\n        else {\n            if (this._isScalar) {\n                if (!subscriber.closed) {\n                    return scheduler.schedule(dispatchNext, 0, { value: this.value, subscriber: subscriber });\n                }\n            }\n            else {\n                promise.then(function (value) {\n                    _this.value = value;\n                    _this._isScalar = true;\n                    if (!subscriber.closed) {\n                        subscriber.add(scheduler.schedule(dispatchNext, 0, { value: value, subscriber: subscriber }));\n                    }\n                }, function (err) {\n                    if (!subscriber.closed) {\n                        subscriber.add(scheduler.schedule(dispatchError, 0, { err: err, subscriber: subscriber }));\n                    }\n                })\n                    .then(null, function (err) {\n                    // escape the promise trap, throw unhandled errors\n                    root.setTimeout(function () { throw err; });\n                });\n            }\n        }\n    };\n    return PromiseObservable;\n}(Observable));\nfunction dispatchNext(arg) {\n    var value = arg.value, subscriber = arg.subscriber;\n    if (!subscriber.closed) {\n        subscriber.next(value);\n        subscriber.complete();\n    }\n}\nfunction dispatchError(arg) {\n    var err = arg.err, subscriber = arg.subscriber;\n    if (!subscriber.closed) {\n        subscriber.error(err);\n    }\n}\n//# sourceMappingURL=PromiseObservable.js.map","import { root } from '../util/root';\nimport { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var IteratorObservable = (function (_super) {\n    __extends(IteratorObservable, _super);\n    function IteratorObservable(iterator, scheduler) {\n        _super.call(this);\n        this.scheduler = scheduler;\n        if (iterator == null) {\n            throw new Error('iterator cannot be null.');\n        }\n        this.iterator = getIterator(iterator);\n    }\n    IteratorObservable.create = function (iterator, scheduler) {\n        return new IteratorObservable(iterator, scheduler);\n    };\n    IteratorObservable.dispatch = function (state) {\n        var index = state.index, hasError = state.hasError, iterator = state.iterator, subscriber = state.subscriber;\n        if (hasError) {\n            subscriber.error(state.error);\n            return;\n        }\n        var result = iterator.next();\n        if (result.done) {\n            subscriber.complete();\n            return;\n        }\n        subscriber.next(result.value);\n        state.index = index + 1;\n        if (subscriber.closed) {\n            if (typeof iterator.return === 'function') {\n                iterator.return();\n            }\n            return;\n        }\n        this.schedule(state);\n    };\n    /** @deprecated internal use only */ IteratorObservable.prototype._subscribe = function (subscriber) {\n        var index = 0;\n        var _a = this, iterator = _a.iterator, scheduler = _a.scheduler;\n        if (scheduler) {\n            return scheduler.schedule(IteratorObservable.dispatch, 0, {\n                index: index, iterator: iterator, subscriber: subscriber\n            });\n        }\n        else {\n            do {\n                var result = iterator.next();\n                if (result.done) {\n                    subscriber.complete();\n                    break;\n                }\n                else {\n                    subscriber.next(result.value);\n                }\n                if (subscriber.closed) {\n                    if (typeof iterator.return === 'function') {\n                        iterator.return();\n                    }\n                    break;\n                }\n            } while (true);\n        }\n    };\n    return IteratorObservable;\n}(Observable));\nvar StringIterator = (function () {\n    function StringIterator(str, idx, len) {\n        if (idx === void 0) { idx = 0; }\n        if (len === void 0) { len = str.length; }\n        this.str = str;\n        this.idx = idx;\n        this.len = len;\n    }\n    StringIterator.prototype[Symbol_iterator] = function () { return (this); };\n    StringIterator.prototype.next = function () {\n        return this.idx < this.len ? {\n            done: false,\n            value: this.str.charAt(this.idx++)\n        } : {\n            done: true,\n            value: undefined\n        };\n    };\n    return StringIterator;\n}());\nvar ArrayIterator = (function () {\n    function ArrayIterator(arr, idx, len) {\n        if (idx === void 0) { idx = 0; }\n        if (len === void 0) { len = toLength(arr); }\n        this.arr = arr;\n        this.idx = idx;\n        this.len = len;\n    }\n    ArrayIterator.prototype[Symbol_iterator] = function () { return this; };\n    ArrayIterator.prototype.next = function () {\n        return this.idx < this.len ? {\n            done: false,\n            value: this.arr[this.idx++]\n        } : {\n            done: true,\n            value: undefined\n        };\n    };\n    return ArrayIterator;\n}());\nfunction getIterator(obj) {\n    var i = obj[Symbol_iterator];\n    if (!i && typeof obj === 'string') {\n        return new StringIterator(obj);\n    }\n    if (!i && obj.length !== undefined) {\n        return new ArrayIterator(obj);\n    }\n    if (!i) {\n        throw new TypeError('object is not iterable');\n    }\n    return obj[Symbol_iterator]();\n}\nvar maxSafeInteger = Math.pow(2, 53) - 1;\nfunction toLength(o) {\n    var len = +o.length;\n    if (isNaN(len)) {\n        return 0;\n    }\n    if (len === 0 || !numberIsFinite(len)) {\n        return len;\n    }\n    len = sign(len) * Math.floor(Math.abs(len));\n    if (len <= 0) {\n        return 0;\n    }\n    if (len > maxSafeInteger) {\n        return maxSafeInteger;\n    }\n    return len;\n}\nfunction numberIsFinite(value) {\n    return typeof value === 'number' && root.isFinite(value);\n}\nfunction sign(value) {\n    var valueAsNumber = +value;\n    if (valueAsNumber === 0) {\n        return valueAsNumber;\n    }\n    if (isNaN(valueAsNumber)) {\n        return valueAsNumber;\n    }\n    return valueAsNumber < 0 ? -1 : 1;\n}\n//# sourceMappingURL=IteratorObservable.js.map","import { Observable } from '../Observable';\nimport { ScalarObservable } from './ScalarObservable';\nimport { EmptyObservable } from './EmptyObservable';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var ArrayLikeObservable = (function (_super) {\n    __extends(ArrayLikeObservable, _super);\n    function ArrayLikeObservable(arrayLike, scheduler) {\n        _super.call(this);\n        this.arrayLike = arrayLike;\n        this.scheduler = scheduler;\n        if (!scheduler && arrayLike.length === 1) {\n            this._isScalar = true;\n            this.value = arrayLike[0];\n        }\n    }\n    ArrayLikeObservable.create = function (arrayLike, scheduler) {\n        var length = arrayLike.length;\n        if (length === 0) {\n            return new EmptyObservable();\n        }\n        else if (length === 1) {\n            return new ScalarObservable(arrayLike[0], scheduler);\n        }\n        else {\n            return new ArrayLikeObservable(arrayLike, scheduler);\n        }\n    };\n    ArrayLikeObservable.dispatch = function (state) {\n        var arrayLike = state.arrayLike, index = state.index, length = state.length, subscriber = state.subscriber;\n        if (subscriber.closed) {\n            return;\n        }\n        if (index >= length) {\n            subscriber.complete();\n            return;\n        }\n        subscriber.next(arrayLike[index]);\n        state.index = index + 1;\n        this.schedule(state);\n    };\n    /** @deprecated internal use only */ ArrayLikeObservable.prototype._subscribe = function (subscriber) {\n        var index = 0;\n        var _a = this, arrayLike = _a.arrayLike, scheduler = _a.scheduler;\n        var length = arrayLike.length;\n        if (scheduler) {\n            return scheduler.schedule(ArrayLikeObservable.dispatch, 0, {\n                arrayLike: arrayLike, index: index, length: length, subscriber: subscriber\n            });\n        }\n        else {\n            for (var i = 0; i < length && !subscriber.closed; i++) {\n                subscriber.next(arrayLike[i]);\n            }\n            subscriber.complete();\n        }\n    };\n    return ArrayLikeObservable;\n}(Observable));\n//# sourceMappingURL=ArrayLikeObservable.js.map","import { Observable } from './Observable';\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification<T>\n */\nexport var Notification = (function () {\n    function Notification(kind, value, error) {\n        this.kind = kind;\n        this.value = value;\n        this.error = error;\n        this.hasValue = kind === 'N';\n    }\n    /**\n     * Delivers to the given `observer` the value wrapped by this Notification.\n     * @param {Observer} observer\n     * @return\n     */\n    Notification.prototype.observe = function (observer) {\n        switch (this.kind) {\n            case 'N':\n                return observer.next && observer.next(this.value);\n            case 'E':\n                return observer.error && observer.error(this.error);\n            case 'C':\n                return observer.complete && observer.complete();\n        }\n    };\n    /**\n     * Given some {@link Observer} callbacks, deliver the value represented by the\n     * current Notification to the correctly corresponding callback.\n     * @param {function(value: T): void} next An Observer `next` callback.\n     * @param {function(err: any): void} [error] An Observer `error` callback.\n     * @param {function(): void} [complete] An Observer `complete` callback.\n     * @return {any}\n     */\n    Notification.prototype.do = function (next, error, complete) {\n        var kind = this.kind;\n        switch (kind) {\n            case 'N':\n                return next && next(this.value);\n            case 'E':\n                return error && error(this.error);\n            case 'C':\n                return complete && complete();\n        }\n    };\n    /**\n     * Takes an Observer or its individual callback functions, and calls `observe`\n     * or `do` methods accordingly.\n     * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n     * the `next` callback.\n     * @param {function(err: any): void} [error] An Observer `error` callback.\n     * @param {function(): void} [complete] An Observer `complete` callback.\n     * @return {any}\n     */\n    Notification.prototype.accept = function (nextOrObserver, error, complete) {\n        if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n            return this.observe(nextOrObserver);\n        }\n        else {\n            return this.do(nextOrObserver, error, complete);\n        }\n    };\n    /**\n     * Returns a simple Observable that just delivers the notification represented\n     * by this Notification instance.\n     * @return {any}\n     */\n    Notification.prototype.toObservable = function () {\n        var kind = this.kind;\n        switch (kind) {\n            case 'N':\n                return Observable.of(this.value);\n            case 'E':\n                return Observable.throw(this.error);\n            case 'C':\n                return Observable.empty();\n        }\n        throw new Error('unexpected notification kind value');\n    };\n    /**\n     * A shortcut to create a Notification instance of the type `next` from a\n     * given value.\n     * @param {T} value The `next` value.\n     * @return {Notification<T>} The \"next\" Notification representing the\n     * argument.\n     */\n    Notification.createNext = function (value) {\n        if (typeof value !== 'undefined') {\n            return new Notification('N', value);\n        }\n        return Notification.undefinedValueNotification;\n    };\n    /**\n     * A shortcut to create a Notification instance of the type `error` from a\n     * given error.\n     * @param {any} [err] The `error` error.\n     * @return {Notification<T>} The \"error\" Notification representing the\n     * argument.\n     */\n    Notification.createError = function (err) {\n        return new Notification('E', undefined, err);\n    };\n    /**\n     * A shortcut to create a Notification instance of the type `complete`.\n     * @return {Notification<any>} The valueless \"complete\" Notification.\n     */\n    Notification.createComplete = function () {\n        return Notification.completeNotification;\n    };\n    Notification.completeNotification = new Notification('C');\n    Notification.undefinedValueNotification = new Notification('N', undefined);\n    return Notification;\n}());\n//# sourceMappingURL=Notification.js.map","import { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * @example <caption>Ensure values in subscribe are called just before browser repaint.</caption>\n * const intervals = Rx.Observable.interval(10); // Intervals are scheduled\n *                                               // with async scheduler by default...\n *\n * intervals\n * .observeOn(Rx.Scheduler.animationFrame)       // ...but we will observe on animationFrame\n * .subscribe(val => {                           // scheduler to ensure smooth animation.\n *   someDiv.style.height = val + 'px';\n * });\n *\n * @see {@link delay}\n *\n * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable<T>} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nexport function observeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return function observeOnOperatorFunction(source) {\n        return source.lift(new ObserveOnOperator(scheduler, delay));\n    };\n}\nexport var ObserveOnOperator = (function () {\n    function ObserveOnOperator(scheduler, delay) {\n        if (delay === void 0) { delay = 0; }\n        this.scheduler = scheduler;\n        this.delay = delay;\n    }\n    ObserveOnOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n    };\n    return ObserveOnOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var ObserveOnSubscriber = (function (_super) {\n    __extends(ObserveOnSubscriber, _super);\n    function ObserveOnSubscriber(destination, scheduler, delay) {\n        if (delay === void 0) { delay = 0; }\n        _super.call(this, destination);\n        this.scheduler = scheduler;\n        this.delay = delay;\n    }\n    ObserveOnSubscriber.dispatch = function (arg) {\n        var notification = arg.notification, destination = arg.destination;\n        notification.observe(destination);\n        this.unsubscribe();\n    };\n    ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n        this.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n    };\n    ObserveOnSubscriber.prototype._next = function (value) {\n        this.scheduleMessage(Notification.createNext(value));\n    };\n    ObserveOnSubscriber.prototype._error = function (err) {\n        this.scheduleMessage(Notification.createError(err));\n    };\n    ObserveOnSubscriber.prototype._complete = function () {\n        this.scheduleMessage(Notification.createComplete());\n    };\n    return ObserveOnSubscriber;\n}(Subscriber));\nexport var ObserveOnMessage = (function () {\n    function ObserveOnMessage(notification, destination) {\n        this.notification = notification;\n        this.destination = destination;\n    }\n    return ObserveOnMessage;\n}());\n//# sourceMappingURL=observeOn.js.map","import { isArray } from '../util/isArray';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { PromiseObservable } from './PromiseObservable';\nimport { IteratorObservable } from './IteratorObservable';\nimport { ArrayObservable } from './ArrayObservable';\nimport { ArrayLikeObservable } from './ArrayLikeObservable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { Observable } from '../Observable';\nimport { ObserveOnSubscriber } from '../operators/observeOn';\nimport { observable as Symbol_observable } from '../symbol/observable';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var FromObservable = (function (_super) {\n    __extends(FromObservable, _super);\n    function FromObservable(ish, scheduler) {\n        _super.call(this, null);\n        this.ish = ish;\n        this.scheduler = scheduler;\n    }\n    /**\n     * Creates an Observable from an Array, an array-like object, a Promise, an\n     * iterable object, or an Observable-like object.\n     *\n     * <span class=\"informal\">Converts almost anything to an Observable.</span>\n     *\n     * <img src=\"./img/from.png\" width=\"100%\">\n     *\n     * Convert various other objects and data types into Observables. `from`\n     * converts a Promise or an array-like or an\n     * [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable)\n     * object into an Observable that emits the items in that promise or array or\n     * iterable. A String, in this context, is treated as an array of characters.\n     * Observable-like objects (contains a function named with the ES2015 Symbol\n     * for Observable) can also be converted through this operator.\n     *\n     * @example <caption>Converts an array to an Observable</caption>\n     * var array = [10, 20, 30];\n     * var result = Rx.Observable.from(array);\n     * result.subscribe(x => console.log(x));\n     *\n     * // Results in the following:\n     * // 10 20 30\n     *\n     * @example <caption>Convert an infinite iterable (from a generator) to an Observable</caption>\n     * function* generateDoubles(seed) {\n     *   var i = seed;\n     *   while (true) {\n     *     yield i;\n     *     i = 2 * i; // double it\n     *   }\n     * }\n     *\n     * var iterator = generateDoubles(3);\n     * var result = Rx.Observable.from(iterator).take(10);\n     * result.subscribe(x => console.log(x));\n     *\n     * // Results in the following:\n     * // 3 6 12 24 48 96 192 384 768 1536\n     *\n     * @see {@link create}\n     * @see {@link fromEvent}\n     * @see {@link fromEventPattern}\n     * @see {@link fromPromise}\n     *\n     * @param {ObservableInput<T>} ish A subscribable object, a Promise, an\n     * Observable-like, an Array, an iterable or an array-like object to be\n     * converted.\n     * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n     * emissions of values.\n     * @return {Observable<T>} The Observable whose values are originally from the\n     * input object that was converted.\n     * @static true\n     * @name from\n     * @owner Observable\n     */\n    FromObservable.create = function (ish, scheduler) {\n        if (ish != null) {\n            if (typeof ish[Symbol_observable] === 'function') {\n                if (ish instanceof Observable && !scheduler) {\n                    return ish;\n                }\n                return new FromObservable(ish, scheduler);\n            }\n            else if (isArray(ish)) {\n                return new ArrayObservable(ish, scheduler);\n            }\n            else if (isPromise(ish)) {\n                return new PromiseObservable(ish, scheduler);\n            }\n            else if (typeof ish[Symbol_iterator] === 'function' || typeof ish === 'string') {\n                return new IteratorObservable(ish, scheduler);\n            }\n            else if (isArrayLike(ish)) {\n                return new ArrayLikeObservable(ish, scheduler);\n            }\n        }\n        throw new TypeError((ish !== null && typeof ish || ish) + ' is not observable');\n    };\n    /** @deprecated internal use only */ FromObservable.prototype._subscribe = function (subscriber) {\n        var ish = this.ish;\n        var scheduler = this.scheduler;\n        if (scheduler == null) {\n            return ish[Symbol_observable]().subscribe(subscriber);\n        }\n        else {\n            return ish[Symbol_observable]().subscribe(new ObserveOnSubscriber(subscriber, scheduler, 0));\n        }\n    };\n    return FromObservable;\n}(Observable));\n//# sourceMappingURL=FromObservable.js.map","import { FromObservable } from './FromObservable';\nexport var from = FromObservable.create;\n//# sourceMappingURL=from.js.map","import { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * <img src=\"./img/mergeMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n *   Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nexport function mergeMap(project, resultSelector, concurrent) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    return function mergeMapOperatorFunction(source) {\n        if (typeof resultSelector === 'number') {\n            concurrent = resultSelector;\n            resultSelector = null;\n        }\n        return source.lift(new MergeMapOperator(project, resultSelector, concurrent));\n    };\n}\nexport var MergeMapOperator = (function () {\n    function MergeMapOperator(project, resultSelector, concurrent) {\n        if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n        this.project = project;\n        this.resultSelector = resultSelector;\n        this.concurrent = concurrent;\n    }\n    MergeMapOperator.prototype.call = function (observer, source) {\n        return source.subscribe(new MergeMapSubscriber(observer, this.project, this.resultSelector, this.concurrent));\n    };\n    return MergeMapOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var MergeMapSubscriber = (function (_super) {\n    __extends(MergeMapSubscriber, _super);\n    function MergeMapSubscriber(destination, project, resultSelector, concurrent) {\n        if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n        _super.call(this, destination);\n        this.project = project;\n        this.resultSelector = resultSelector;\n        this.concurrent = concurrent;\n        this.hasCompleted = false;\n        this.buffer = [];\n        this.active = 0;\n        this.index = 0;\n    }\n    MergeMapSubscriber.prototype._next = function (value) {\n        if (this.active < this.concurrent) {\n            this._tryNext(value);\n        }\n        else {\n            this.buffer.push(value);\n        }\n    };\n    MergeMapSubscriber.prototype._tryNext = function (value) {\n        var result;\n        var index = this.index++;\n        try {\n            result = this.project(value, index);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.active++;\n        this._innerSub(result, value, index);\n    };\n    MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n        this.add(subscribeToResult(this, ish, value, index));\n    };\n    MergeMapSubscriber.prototype._complete = function () {\n        this.hasCompleted = true;\n        if (this.active === 0 && this.buffer.length === 0) {\n            this.destination.complete();\n        }\n    };\n    MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        if (this.resultSelector) {\n            this._notifyResultSelector(outerValue, innerValue, outerIndex, innerIndex);\n        }\n        else {\n            this.destination.next(innerValue);\n        }\n    };\n    MergeMapSubscriber.prototype._notifyResultSelector = function (outerValue, innerValue, outerIndex, innerIndex) {\n        var result;\n        try {\n            result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n        var buffer = this.buffer;\n        this.remove(innerSub);\n        this.active--;\n        if (buffer.length > 0) {\n            this._next(buffer.shift());\n        }\n        else if (this.active === 0 && this.hasCompleted) {\n            this.destination.complete();\n        }\n    };\n    return MergeMapSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=mergeMap.js.map","export function identity(x) {\n    return x;\n}\n//# sourceMappingURL=identity.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * <img src=\"./img/mergeAll.png\" width=\"100%\">\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Spawn a new interval Observable for each click event, and blend their outputs as one Observable</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var firstOrder = higherOrder.mergeAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * @example <caption>Count from 0 to 9 every second for each click, but only allow 2 concurrent timers</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10));\n * var firstOrder = higherOrder.mergeAll(2);\n * firstOrder.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nexport function mergeAll(concurrent) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    return mergeMap(identity, null, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * <img src=\"./img/concatAll.png\" width=\"100%\">\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4));\n * var firstOrder = higherOrder.concatAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nexport function concatAll() {\n    return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { isScheduler } from '../util/isScheduler';\nimport { of } from './of';\nimport { from } from './from';\nimport { concatAll } from '../operators/concatAll';\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * <img src=\"./img/concat.png\" width=\"100%\">\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * @example <caption>Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10</caption>\n * var timer = Rx.Observable.interval(1000).take(4);\n * var sequence = Rx.Observable.range(1, 10);\n * var result = Rx.Observable.concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n *\n *\n * @example <caption>Concatenate an array of 3 Observables</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var result = Rx.Observable.concat([timer1, timer2, timer3]); // note that array is passed\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n *\n *\n * @example <caption>Concatenate the same Observable to repeat it</caption>\n * const timer = Rx.Observable.interval(1000).take(2);\n *\n * Rx.Observable.concat(timer, timer) // concating the same Observable!\n * .subscribe(\n *   value => console.log(value),\n *   err => {},\n *   () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nexport function concat() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    if (observables.length === 1 || (observables.length === 2 && isScheduler(observables[1]))) {\n        return from(observables[0]);\n    }\n    return concatAll()(of.apply(void 0, observables));\n}\n//# sourceMappingURL=concat.js.map","import { Observable } from '../../Observable';\nimport { concat as concatStatic } from '../../observable/concat';\nObservable.concat = concatStatic;\n//# sourceMappingURL=concat.js.map","import { Observable } from '../Observable';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var DeferObservable = (function (_super) {\n    __extends(DeferObservable, _super);\n    function DeferObservable(observableFactory) {\n        _super.call(this);\n        this.observableFactory = observableFactory;\n    }\n    /**\n     * Creates an Observable that, on subscribe, calls an Observable factory to\n     * make an Observable for each new Observer.\n     *\n     * <span class=\"informal\">Creates the Observable lazily, that is, only when it\n     * is subscribed.\n     * </span>\n     *\n     * <img src=\"./img/defer.png\" width=\"100%\">\n     *\n     * `defer` allows you to create the Observable only when the Observer\n     * subscribes, and create a fresh Observable for each Observer. It waits until\n     * an Observer subscribes to it, and then it generates an Observable,\n     * typically with an Observable factory function. It does this afresh for each\n     * subscriber, so although each subscriber may think it is subscribing to the\n     * same Observable, in fact each subscriber gets its own individual\n     * Observable.\n     *\n     * @example <caption>Subscribe to either an Observable of clicks or an Observable of interval, at random</caption>\n     * var clicksOrInterval = Rx.Observable.defer(function () {\n     *   if (Math.random() > 0.5) {\n     *     return Rx.Observable.fromEvent(document, 'click');\n     *   } else {\n     *     return Rx.Observable.interval(1000);\n     *   }\n     * });\n     * clicksOrInterval.subscribe(x => console.log(x));\n     *\n     * // Results in the following behavior:\n     * // If the result of Math.random() is greater than 0.5 it will listen\n     * // for clicks anywhere on the \"document\"; when document is clicked it\n     * // will log a MouseEvent object to the console. If the result is less\n     * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n     *\n     * @see {@link create}\n     *\n     * @param {function(): SubscribableOrPromise} observableFactory The Observable\n     * factory function to invoke for each Observer that subscribes to the output\n     * Observable. May also return a Promise, which will be converted on the fly\n     * to an Observable.\n     * @return {Observable} An Observable whose Observers' subscriptions trigger\n     * an invocation of the given Observable factory function.\n     * @static true\n     * @name defer\n     * @owner Observable\n     */\n    DeferObservable.create = function (observableFactory) {\n        return new DeferObservable(observableFactory);\n    };\n    /** @deprecated internal use only */ DeferObservable.prototype._subscribe = function (subscriber) {\n        return new DeferSubscriber(subscriber, this.observableFactory);\n    };\n    return DeferObservable;\n}(Observable));\nvar DeferSubscriber = (function (_super) {\n    __extends(DeferSubscriber, _super);\n    function DeferSubscriber(destination, factory) {\n        _super.call(this, destination);\n        this.factory = factory;\n        this.tryDefer();\n    }\n    DeferSubscriber.prototype.tryDefer = function () {\n        try {\n            this._callFactory();\n        }\n        catch (err) {\n            this._error(err);\n        }\n    };\n    DeferSubscriber.prototype._callFactory = function () {\n        var result = this.factory();\n        if (result) {\n            this.add(subscribeToResult(this, result));\n        }\n    };\n    return DeferSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=DeferObservable.js.map","import { DeferObservable } from './DeferObservable';\nexport var defer = DeferObservable.create;\n//# sourceMappingURL=defer.js.map","import { Observable } from '../../Observable';\nimport { defer as staticDefer } from '../../observable/defer';\nObservable.defer = staticDefer;\n//# sourceMappingURL=defer.js.map","import { EmptyObservable } from './EmptyObservable';\nexport var empty = EmptyObservable.create;\n//# sourceMappingURL=empty.js.map","import { Observable } from '../../Observable';\nimport { empty as staticEmpty } from '../../observable/empty';\nObservable.empty = staticEmpty;\n//# sourceMappingURL=empty.js.map","import { Observable } from '../Observable';\nimport { EmptyObservable } from './EmptyObservable';\nimport { isArray } from '../util/isArray';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var ForkJoinObservable = (function (_super) {\n    __extends(ForkJoinObservable, _super);\n    function ForkJoinObservable(sources, resultSelector) {\n        _super.call(this);\n        this.sources = sources;\n        this.resultSelector = resultSelector;\n    }\n    /* tslint:enable:max-line-length */\n    /**\n     * Joins last values emitted by passed Observables.\n     *\n     * <span class=\"informal\">Wait for Observables to complete and then combine last values they emitted.</span>\n     *\n     * <img src=\"./img/forkJoin.png\" width=\"100%\">\n     *\n     * `forkJoin` is an operator that takes any number of Observables which can be passed either as an array\n     * or directly as arguments. If no input Observables are provided, resulting stream will complete\n     * immediately.\n     *\n     * `forkJoin` will wait for all passed Observables to complete and then it will emit an array with last\n     * values from corresponding Observables. So if you pass `n` Observables to the operator, resulting\n     * array will have `n` values, where first value is the last thing emitted by the first Observable,\n     * second value is the last thing emitted by the second Observable and so on. That means `forkJoin` will\n     * not emit more than once and it will complete after that. If you need to emit combined values not only\n     * at the end of lifecycle of passed Observables, but also throughout it, try out {@link combineLatest}\n     * or {@link zip} instead.\n     *\n     * In order for resulting array to have the same length as the number of input Observables, whenever any of\n     * that Observables completes without emitting any value, `forkJoin` will complete at that moment as well\n     * and it will not emit anything either, even if it already has some last values from other Observables.\n     * Conversely, if there is an Observable that never completes, `forkJoin` will never complete as well,\n     * unless at any point some other Observable completes without emitting value, which brings us back to\n     * the previous case. Overall, in order for `forkJoin` to emit a value, all Observables passed as arguments\n     * have to emit something at least once and complete.\n     *\n     * If any input Observable errors at some point, `forkJoin` will error as well and all other Observables\n     * will be immediately unsubscribed.\n     *\n     * Optionally `forkJoin` accepts project function, that will be called with values which normally\n     * would land in emitted array. Whatever is returned by project function, will appear in output\n     * Observable instead. This means that default project can be thought of as a function that takes\n     * all its arguments and puts them into an array. Note that project function will be called only\n     * when output Observable is supposed to emit a result.\n     *\n     * @example <caption>Use forkJoin with operator emitting immediately</caption>\n     * const observable = Rx.Observable.forkJoin(\n     *   Rx.Observable.of(1, 2, 3, 4),\n     *   Rx.Observable.of(5, 6, 7, 8)\n     * );\n     * observable.subscribe(\n     *   value => console.log(value),\n     *   err => {},\n     *   () => console.log('This is how it ends!')\n     * );\n     *\n     * // Logs:\n     * // [4, 8]\n     * // \"This is how it ends!\"\n     *\n     *\n     * @example <caption>Use forkJoin with operator emitting after some time</caption>\n     * const observable = Rx.Observable.forkJoin(\n     *   Rx.Observable.interval(1000).take(3), // emit 0, 1, 2 every second and complete\n     *   Rx.Observable.interval(500).take(4) // emit 0, 1, 2, 3 every half a second and complete\n     * );\n     * observable.subscribe(\n     *   value => console.log(value),\n     *   err => {},\n     *   () => console.log('This is how it ends!')\n     * );\n     *\n     * // Logs:\n     * // [2, 3] after 3 seconds\n     * // \"This is how it ends!\" immediately after\n     *\n     *\n     * @example <caption>Use forkJoin with project function</caption>\n     * const observable = Rx.Observable.forkJoin(\n     *   Rx.Observable.interval(1000).take(3), // emit 0, 1, 2 every second and complete\n     *   Rx.Observable.interval(500).take(4), // emit 0, 1, 2, 3 every half a second and complete\n     *   (n, m) => n + m\n     * );\n     * observable.subscribe(\n     *   value => console.log(value),\n     *   err => {},\n     *   () => console.log('This is how it ends!')\n     * );\n     *\n     * // Logs:\n     * // 5 after 3 seconds\n     * // \"This is how it ends!\" immediately after\n     *\n     * @see {@link combineLatest}\n     * @see {@link zip}\n     *\n     * @param {...SubscribableOrPromise} sources Any number of Observables provided either as an array or as an arguments\n     * passed directly to the operator.\n     * @param {function} [project] Function that takes values emitted by input Observables and returns value\n     * that will appear in resulting Observable instead of default array.\n     * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n     * or value from project function.\n     * @static true\n     * @name forkJoin\n     * @owner Observable\n     */\n    ForkJoinObservable.create = function () {\n        var sources = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            sources[_i - 0] = arguments[_i];\n        }\n        if (sources === null || arguments.length === 0) {\n            return new EmptyObservable();\n        }\n        var resultSelector = null;\n        if (typeof sources[sources.length - 1] === 'function') {\n            resultSelector = sources.pop();\n        }\n        // if the first and only other argument besides the resultSelector is an array\n        // assume it's been called with `forkJoin([obs1, obs2, obs3], resultSelector)`\n        if (sources.length === 1 && isArray(sources[0])) {\n            sources = sources[0];\n        }\n        if (sources.length === 0) {\n            return new EmptyObservable();\n        }\n        return new ForkJoinObservable(sources, resultSelector);\n    };\n    /** @deprecated internal use only */ ForkJoinObservable.prototype._subscribe = function (subscriber) {\n        return new ForkJoinSubscriber(subscriber, this.sources, this.resultSelector);\n    };\n    return ForkJoinObservable;\n}(Observable));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ForkJoinSubscriber = (function (_super) {\n    __extends(ForkJoinSubscriber, _super);\n    function ForkJoinSubscriber(destination, sources, resultSelector) {\n        _super.call(this, destination);\n        this.sources = sources;\n        this.resultSelector = resultSelector;\n        this.completed = 0;\n        this.haveValues = 0;\n        var len = sources.length;\n        this.total = len;\n        this.values = new Array(len);\n        for (var i = 0; i < len; i++) {\n            var source = sources[i];\n            var innerSubscription = subscribeToResult(this, source, null, i);\n            if (innerSubscription) {\n                innerSubscription.outerIndex = i;\n                this.add(innerSubscription);\n            }\n        }\n    }\n    ForkJoinSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.values[outerIndex] = innerValue;\n        if (!innerSub._hasValue) {\n            innerSub._hasValue = true;\n            this.haveValues++;\n        }\n    };\n    ForkJoinSubscriber.prototype.notifyComplete = function (innerSub) {\n        var destination = this.destination;\n        var _a = this, haveValues = _a.haveValues, resultSelector = _a.resultSelector, values = _a.values;\n        var len = values.length;\n        if (!innerSub._hasValue) {\n            destination.complete();\n            return;\n        }\n        this.completed++;\n        if (this.completed !== len) {\n            return;\n        }\n        if (haveValues === len) {\n            var value = resultSelector ? resultSelector.apply(this, values) : values;\n            destination.next(value);\n        }\n        destination.complete();\n    };\n    return ForkJoinSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=ForkJoinObservable.js.map","import { ForkJoinObservable } from './ForkJoinObservable';\nexport var forkJoin = ForkJoinObservable.create;\n//# sourceMappingURL=forkJoin.js.map","import { Observable } from '../../Observable';\nimport { forkJoin as staticForkJoin } from '../../observable/forkJoin';\nObservable.forkJoin = staticForkJoin;\n//# sourceMappingURL=forkJoin.js.map","import { Observable } from '../../Observable';\nimport { from as staticFrom } from '../../observable/from';\nObservable.from = staticFrom;\n//# sourceMappingURL=from.js.map","import { Observable } from '../Observable';\nimport { tryCatch } from '../util/tryCatch';\nimport { isFunction } from '../util/isFunction';\nimport { errorObject } from '../util/errorObject';\nimport { Subscription } from '../Subscription';\nvar toString = Object.prototype.toString;\nfunction isNodeStyleEventEmitter(sourceObj) {\n    return !!sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n    return !!sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isNodeList(sourceObj) {\n    return !!sourceObj && toString.call(sourceObj) === '[object NodeList]';\n}\nfunction isHTMLCollection(sourceObj) {\n    return !!sourceObj && toString.call(sourceObj) === '[object HTMLCollection]';\n}\nfunction isEventTarget(sourceObj) {\n    return !!sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var FromEventObservable = (function (_super) {\n    __extends(FromEventObservable, _super);\n    function FromEventObservable(sourceObj, eventName, selector, options) {\n        _super.call(this);\n        this.sourceObj = sourceObj;\n        this.eventName = eventName;\n        this.selector = selector;\n        this.options = options;\n    }\n    /* tslint:enable:max-line-length */\n    /**\n     * Creates an Observable that emits events of a specific type coming from the\n     * given event target.\n     *\n     * <span class=\"informal\">Creates an Observable from DOM events, or Node.js\n     * EventEmitter events or others.</span>\n     *\n     * <img src=\"./img/fromEvent.png\" width=\"100%\">\n     *\n     * `fromEvent` accepts as a first argument event target, which is an object with methods\n     * for registering event handler functions. As a second argument it takes string that indicates\n     * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n     * which are described in detail below. If your event target does not match any of the ones listed,\n     * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n     * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n     * handler functions have different names, but they all accept a string describing event type\n     * and function itself, which will be called whenever said event happens.\n     *\n     * Every time resulting Observable is subscribed, event handler function will be registered\n     * to event target on given event type. When that event fires, value\n     * passed as a first argument to registered function will be emitted by output Observable.\n     * When Observable is unsubscribed, function will be unregistered from event target.\n     *\n     * Note that if event target calls registered function with more than one argument, second\n     * and following arguments will not appear in resulting stream. In order to get access to them,\n     * you can pass to `fromEvent` optional project function, which will be called with all arguments\n     * passed to event handler. Output Observable will then emit value returned by project function,\n     * instead of the usual value.\n     *\n     * Remember that event targets listed below are checked via duck typing. It means that\n     * no matter what kind of object you have and no matter what environment you work in,\n     * you can safely use `fromEvent` on that object if it exposes described methods (provided\n     * of course they behave as was described above). So for example if Node.js library exposes\n     * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n     * a good choice.\n     *\n     * If the API you use is more callback then event handler oriented (subscribed\n     * callback function fires only once and thus there is no need to manually\n     * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n     * instead.\n     *\n     * `fromEvent` supports following types of event targets:\n     *\n     * **DOM EventTarget**\n     *\n     * This is an object with `addEventListener` and `removeEventListener` methods.\n     *\n     * In the browser, `addEventListener` accepts - apart from event type string and event\n     * handler function arguments - optional third parameter, which is either an object or boolean,\n     * both used for additional configuration how and when passed function will be called. When\n     * `fromEvent` is used with event target of that type, you can provide this values\n     * as third parameter as well.\n     *\n     * **Node.js EventEmitter**\n     *\n     * An object with `addListener` and `removeListener` methods.\n     *\n     * **JQuery-style event target**\n     *\n     * An object with `on` and `off` methods\n     *\n     * **DOM NodeList**\n     *\n     * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n     *\n     * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n     * it contains and install event handler function in every of them. When returned Observable\n     * is unsubscribed, function will be removed from all Nodes.\n     *\n     * **DOM HtmlCollection**\n     *\n     * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n     * installed and removed in each of elements.\n     *\n     *\n     * @example <caption>Emits clicks happening on the DOM document</caption>\n     * var clicks = Rx.Observable.fromEvent(document, 'click');\n     * clicks.subscribe(x => console.log(x));\n     *\n     * // Results in:\n     * // MouseEvent object logged to console every time a click\n     * // occurs on the document.\n     *\n     *\n     * @example <caption>Use addEventListener with capture option</caption>\n     * var clicksInDocument = Rx.Observable.fromEvent(document, 'click', true); // note optional configuration parameter\n     *                                                                          // which will be passed to addEventListener\n     * var clicksInDiv = Rx.Observable.fromEvent(someDivInDocument, 'click');\n     *\n     * clicksInDocument.subscribe(() => console.log('document'));\n     * clicksInDiv.subscribe(() => console.log('div'));\n     *\n     * // By default events bubble UP in DOM tree, so normally\n     * // when we would click on div in document\n     * // \"div\" would be logged first and then \"document\".\n     * // Since we specified optional `capture` option, document\n     * // will catch event when it goes DOWN DOM tree, so console\n     * // will log \"document\" and then \"div\".\n     *\n     * @see {@link bindCallback}\n     * @see {@link bindNodeCallback}\n     * @see {@link fromEventPattern}\n     *\n     * @param {EventTargetLike} target The DOM EventTarget, Node.js\n     * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n     * @param {string} eventName The event name of interest, being emitted by the\n     * `target`.\n     * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n     * @param {SelectorMethodSignature<T>} [selector] An optional function to\n     * post-process results. It takes the arguments from the event handler and\n     * should return a single value.\n     * @return {Observable<T>}\n     * @static true\n     * @name fromEvent\n     * @owner Observable\n     */\n    FromEventObservable.create = function (target, eventName, options, selector) {\n        if (isFunction(options)) {\n            selector = options;\n            options = undefined;\n        }\n        return new FromEventObservable(target, eventName, selector, options);\n    };\n    FromEventObservable.setupSubscription = function (sourceObj, eventName, handler, subscriber, options) {\n        var unsubscribe;\n        if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) {\n            for (var i = 0, len = sourceObj.length; i < len; i++) {\n                FromEventObservable.setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n            }\n        }\n        else if (isEventTarget(sourceObj)) {\n            var source_1 = sourceObj;\n            sourceObj.addEventListener(eventName, handler, options);\n            unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n        }\n        else if (isJQueryStyleEventEmitter(sourceObj)) {\n            var source_2 = sourceObj;\n            sourceObj.on(eventName, handler);\n            unsubscribe = function () { return source_2.off(eventName, handler); };\n        }\n        else if (isNodeStyleEventEmitter(sourceObj)) {\n            var source_3 = sourceObj;\n            sourceObj.addListener(eventName, handler);\n            unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n        }\n        else {\n            throw new TypeError('Invalid event target');\n        }\n        subscriber.add(new Subscription(unsubscribe));\n    };\n    /** @deprecated internal use only */ FromEventObservable.prototype._subscribe = function (subscriber) {\n        var sourceObj = this.sourceObj;\n        var eventName = this.eventName;\n        var options = this.options;\n        var selector = this.selector;\n        var handler = selector ? function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i - 0] = arguments[_i];\n            }\n            var result = tryCatch(selector).apply(void 0, args);\n            if (result === errorObject) {\n                subscriber.error(errorObject.e);\n            }\n            else {\n                subscriber.next(result);\n            }\n        } : function (e) { return subscriber.next(e); };\n        FromEventObservable.setupSubscription(sourceObj, eventName, handler, subscriber, options);\n    };\n    return FromEventObservable;\n}(Observable));\n//# sourceMappingURL=FromEventObservable.js.map","import { FromEventObservable } from './FromEventObservable';\nexport var fromEvent = FromEventObservable.create;\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../../Observable';\nimport { fromEvent as staticFromEvent } from '../../observable/fromEvent';\nObservable.fromEvent = staticFromEvent;\n//# sourceMappingURL=fromEvent.js.map","import { isFunction } from '../util/isFunction';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var FromEventPatternObservable = (function (_super) {\n    __extends(FromEventPatternObservable, _super);\n    function FromEventPatternObservable(addHandler, removeHandler, selector) {\n        _super.call(this);\n        this.addHandler = addHandler;\n        this.removeHandler = removeHandler;\n        this.selector = selector;\n    }\n    /**\n     * Creates an Observable from an API based on addHandler/removeHandler\n     * functions.\n     *\n     * <span class=\"informal\">Converts any addHandler/removeHandler API to an\n     * Observable.</span>\n     *\n     * <img src=\"./img/fromEventPattern.png\" width=\"100%\">\n     *\n     * Creates an Observable by using the `addHandler` and `removeHandler`\n     * functions to add and remove the handlers, with an optional selector\n     * function to project the event arguments to a result. The `addHandler` is\n     * called when the output Observable is subscribed, and `removeHandler` is\n     * called when the Subscription is unsubscribed.\n     *\n     * @example <caption>Emits clicks happening on the DOM document</caption>\n     * function addClickHandler(handler) {\n     *   document.addEventListener('click', handler);\n     * }\n     *\n     * function removeClickHandler(handler) {\n     *   document.removeEventListener('click', handler);\n     * }\n     *\n     * var clicks = Rx.Observable.fromEventPattern(\n     *   addClickHandler,\n     *   removeClickHandler\n     * );\n     * clicks.subscribe(x => console.log(x));\n     *\n     * @see {@link from}\n     * @see {@link fromEvent}\n     *\n     * @param {function(handler: Function): any} addHandler A function that takes\n     * a `handler` function as argument and attaches it somehow to the actual\n     * source of events.\n     * @param {function(handler: Function, signal?: any): void} [removeHandler] An optional function that\n     * takes a `handler` function as argument and removes it in case it was\n     * previously attached using `addHandler`. if addHandler returns signal to teardown when remove,\n     * removeHandler function will forward it.\n     * @param {function(...args: any): T} [selector] An optional function to\n     * post-process results. It takes the arguments from the event handler and\n     * should return a single value.\n     * @return {Observable<T>}\n     * @static true\n     * @name fromEventPattern\n     * @owner Observable\n     */\n    FromEventPatternObservable.create = function (addHandler, removeHandler, selector) {\n        return new FromEventPatternObservable(addHandler, removeHandler, selector);\n    };\n    /** @deprecated internal use only */ FromEventPatternObservable.prototype._subscribe = function (subscriber) {\n        var _this = this;\n        var removeHandler = this.removeHandler;\n        var handler = !!this.selector ? function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i - 0] = arguments[_i];\n            }\n            _this._callSelector(subscriber, args);\n        } : function (e) { subscriber.next(e); };\n        var retValue = this._callAddHandler(handler, subscriber);\n        if (!isFunction(removeHandler)) {\n            return;\n        }\n        subscriber.add(new Subscription(function () {\n            //TODO: determine whether or not to forward to error handler\n            removeHandler(handler, retValue);\n        }));\n    };\n    FromEventPatternObservable.prototype._callSelector = function (subscriber, args) {\n        try {\n            var result = this.selector.apply(this, args);\n            subscriber.next(result);\n        }\n        catch (e) {\n            subscriber.error(e);\n        }\n    };\n    FromEventPatternObservable.prototype._callAddHandler = function (handler, errorSubscriber) {\n        try {\n            return this.addHandler(handler) || null;\n        }\n        catch (e) {\n            errorSubscriber.error(e);\n        }\n    };\n    return FromEventPatternObservable;\n}(Observable));\n//# sourceMappingURL=FromEventPatternObservable.js.map","import { FromEventPatternObservable } from './FromEventPatternObservable';\nexport var fromEventPattern = FromEventPatternObservable.create;\n//# sourceMappingURL=fromEventPattern.js.map","import { Observable } from '../../Observable';\nimport { fromEventPattern as staticFromEventPattern } from '../../observable/fromEventPattern';\nObservable.fromEventPattern = staticFromEventPattern;\n//# sourceMappingURL=fromEventPattern.js.map","import { PromiseObservable } from './PromiseObservable';\nexport var fromPromise = PromiseObservable.create;\n//# sourceMappingURL=fromPromise.js.map","import { Observable } from '../../Observable';\nimport { fromPromise as staticFromPromise } from '../../observable/fromPromise';\nObservable.fromPromise = staticFromPromise;\n//# sourceMappingURL=fromPromise.js.map","import { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nvar selfSelector = function (value) { return value; };\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var GenerateObservable = (function (_super) {\n    __extends(GenerateObservable, _super);\n    function GenerateObservable(initialState, condition, iterate, resultSelector, scheduler) {\n        _super.call(this);\n        this.initialState = initialState;\n        this.condition = condition;\n        this.iterate = iterate;\n        this.resultSelector = resultSelector;\n        this.scheduler = scheduler;\n    }\n    GenerateObservable.create = function (initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {\n        if (arguments.length == 1) {\n            return new GenerateObservable(initialStateOrOptions.initialState, initialStateOrOptions.condition, initialStateOrOptions.iterate, initialStateOrOptions.resultSelector || selfSelector, initialStateOrOptions.scheduler);\n        }\n        if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n            return new GenerateObservable(initialStateOrOptions, condition, iterate, selfSelector, resultSelectorOrObservable);\n        }\n        return new GenerateObservable(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler);\n    };\n    /** @deprecated internal use only */ GenerateObservable.prototype._subscribe = function (subscriber) {\n        var state = this.initialState;\n        if (this.scheduler) {\n            return this.scheduler.schedule(GenerateObservable.dispatch, 0, {\n                subscriber: subscriber,\n                iterate: this.iterate,\n                condition: this.condition,\n                resultSelector: this.resultSelector,\n                state: state });\n        }\n        var _a = this, condition = _a.condition, resultSelector = _a.resultSelector, iterate = _a.iterate;\n        do {\n            if (condition) {\n                var conditionResult = void 0;\n                try {\n                    conditionResult = condition(state);\n                }\n                catch (err) {\n                    subscriber.error(err);\n                    return;\n                }\n                if (!conditionResult) {\n                    subscriber.complete();\n                    break;\n                }\n            }\n            var value = void 0;\n            try {\n                value = resultSelector(state);\n            }\n            catch (err) {\n                subscriber.error(err);\n                return;\n            }\n            subscriber.next(value);\n            if (subscriber.closed) {\n                break;\n            }\n            try {\n                state = iterate(state);\n            }\n            catch (err) {\n                subscriber.error(err);\n                return;\n            }\n        } while (true);\n    };\n    GenerateObservable.dispatch = function (state) {\n        var subscriber = state.subscriber, condition = state.condition;\n        if (subscriber.closed) {\n            return;\n        }\n        if (state.needIterate) {\n            try {\n                state.state = state.iterate(state.state);\n            }\n            catch (err) {\n                subscriber.error(err);\n                return;\n            }\n        }\n        else {\n            state.needIterate = true;\n        }\n        if (condition) {\n            var conditionResult = void 0;\n            try {\n                conditionResult = condition(state.state);\n            }\n            catch (err) {\n                subscriber.error(err);\n                return;\n            }\n            if (!conditionResult) {\n                subscriber.complete();\n                return;\n            }\n            if (subscriber.closed) {\n                return;\n            }\n        }\n        var value;\n        try {\n            value = state.resultSelector(state.state);\n        }\n        catch (err) {\n            subscriber.error(err);\n            return;\n        }\n        if (subscriber.closed) {\n            return;\n        }\n        subscriber.next(value);\n        if (subscriber.closed) {\n            return;\n        }\n        return this.schedule(state);\n    };\n    return GenerateObservable;\n}(Observable));\n//# sourceMappingURL=GenerateObservable.js.map","import { GenerateObservable } from './GenerateObservable';\nexport var generate = GenerateObservable.create;\n//# sourceMappingURL=generate.js.map","import { Observable } from '../../Observable';\nimport { generate as staticGenerate } from '../../observable/generate';\nObservable.generate = staticGenerate;\n//# sourceMappingURL=generate.js.map","import { Observable } from '../Observable';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var IfObservable = (function (_super) {\n    __extends(IfObservable, _super);\n    function IfObservable(condition, thenSource, elseSource) {\n        _super.call(this);\n        this.condition = condition;\n        this.thenSource = thenSource;\n        this.elseSource = elseSource;\n    }\n    IfObservable.create = function (condition, thenSource, elseSource) {\n        return new IfObservable(condition, thenSource, elseSource);\n    };\n    /** @deprecated internal use only */ IfObservable.prototype._subscribe = function (subscriber) {\n        var _a = this, condition = _a.condition, thenSource = _a.thenSource, elseSource = _a.elseSource;\n        return new IfSubscriber(subscriber, condition, thenSource, elseSource);\n    };\n    return IfObservable;\n}(Observable));\nvar IfSubscriber = (function (_super) {\n    __extends(IfSubscriber, _super);\n    function IfSubscriber(destination, condition, thenSource, elseSource) {\n        _super.call(this, destination);\n        this.condition = condition;\n        this.thenSource = thenSource;\n        this.elseSource = elseSource;\n        this.tryIf();\n    }\n    IfSubscriber.prototype.tryIf = function () {\n        var _a = this, condition = _a.condition, thenSource = _a.thenSource, elseSource = _a.elseSource;\n        var result;\n        try {\n            result = condition();\n            var source = result ? thenSource : elseSource;\n            if (source) {\n                this.add(subscribeToResult(this, source));\n            }\n            else {\n                this._complete();\n            }\n        }\n        catch (err) {\n            this._error(err);\n        }\n    };\n    return IfSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=IfObservable.js.map","import { IfObservable } from './IfObservable';\nexport var _if = IfObservable.create;\n//# sourceMappingURL=if.js.map","import { Observable } from '../../Observable';\nimport { _if } from '../../observable/if';\nObservable.if = _if;\n//# sourceMappingURL=if.js.map","import { isArray } from '../util/isArray';\nexport function isNumeric(val) {\n    // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n    // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n    // subtraction forces infinities to NaN\n    // adding 1 corrects loss of precision from parseFloat (#15100)\n    return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n;\n//# sourceMappingURL=isNumeric.js.map","import { Subscription } from '../Subscription';\n/**\n * A unit of work to be executed in a {@link Scheduler}. An action is typically\n * created from within a Scheduler and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n *   new (scheduler: Scheduler, work: (state?: T) => void);\n *   schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nexport var Action = (function (_super) {\n    __extends(Action, _super);\n    function Action(scheduler, work) {\n        _super.call(this);\n    }\n    /**\n     * Schedules this action on its parent Scheduler for execution. May be passed\n     * some context object, `state`. May happen at some point in the future,\n     * according to the `delay` parameter, if specified.\n     * @param {T} [state] Some contextual data that the `work` function uses when\n     * called by the Scheduler.\n     * @param {number} [delay] Time to wait before executing the work, where the\n     * time unit is implicit and defined by the Scheduler.\n     * @return {void}\n     */\n    Action.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        return this;\n    };\n    return Action;\n}(Subscription));\n//# sourceMappingURL=Action.js.map","import { root } from '../util/root';\nimport { Action } from './Action';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var AsyncAction = (function (_super) {\n    __extends(AsyncAction, _super);\n    function AsyncAction(scheduler, work) {\n        _super.call(this, scheduler, work);\n        this.scheduler = scheduler;\n        this.pending = false;\n        this.work = work;\n    }\n    AsyncAction.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        if (this.closed) {\n            return this;\n        }\n        // Always replace the current state with the new state.\n        this.state = state;\n        // Set the pending flag indicating that this action has been scheduled, or\n        // has recursively rescheduled itself.\n        this.pending = true;\n        var id = this.id;\n        var scheduler = this.scheduler;\n        //\n        // Important implementation note:\n        //\n        // Actions only execute once by default, unless rescheduled from within the\n        // scheduled callback. This allows us to implement single and repeat\n        // actions via the same code path, without adding API surface area, as well\n        // as mimic traditional recursion but across asynchronous boundaries.\n        //\n        // However, JS runtimes and timers distinguish between intervals achieved by\n        // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n        // serial `setTimeout` calls can be individually delayed, which delays\n        // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n        // guarantee the interval callback will be invoked more precisely to the\n        // interval period, regardless of load.\n        //\n        // Therefore, we use `setInterval` to schedule single and repeat actions.\n        // If the action reschedules itself with the same delay, the interval is not\n        // canceled. If the action doesn't reschedule, or reschedules with a\n        // different delay, the interval will be canceled after scheduled callback\n        // execution.\n        //\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, delay);\n        }\n        this.delay = delay;\n        // If this action has already an async Id, don't request a new one.\n        this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n        return this;\n    };\n    AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        return root.setInterval(scheduler.flush.bind(scheduler, this), delay);\n    };\n    AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        // If this action is rescheduled with the same delay time, don't clear the interval id.\n        if (delay !== null && this.delay === delay && this.pending === false) {\n            return id;\n        }\n        // Otherwise, if the action's delay time is different from the current delay,\n        // or the action has been rescheduled before it's executed, clear the interval id\n        return root.clearInterval(id) && undefined || undefined;\n    };\n    /**\n     * Immediately executes this action and the `work` it contains.\n     * @return {any}\n     */\n    AsyncAction.prototype.execute = function (state, delay) {\n        if (this.closed) {\n            return new Error('executing a cancelled action');\n        }\n        this.pending = false;\n        var error = this._execute(state, delay);\n        if (error) {\n            return error;\n        }\n        else if (this.pending === false && this.id != null) {\n            // Dequeue if the action didn't reschedule itself. Don't call\n            // unsubscribe(), because the action could reschedule later.\n            // For example:\n            // ```\n            // scheduler.schedule(function doWork(counter) {\n            //   /* ... I'm a busy worker bee ... */\n            //   var originalAction = this;\n            //   /* wait 100ms before rescheduling the action */\n            //   setTimeout(function () {\n            //     originalAction.schedule(counter + 1);\n            //   }, 100);\n            // }, 1000);\n            // ```\n            this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n        }\n    };\n    AsyncAction.prototype._execute = function (state, delay) {\n        var errored = false;\n        var errorValue = undefined;\n        try {\n            this.work(state);\n        }\n        catch (e) {\n            errored = true;\n            errorValue = !!e && e || new Error(e);\n        }\n        if (errored) {\n            this.unsubscribe();\n            return errorValue;\n        }\n    };\n    /** @deprecated internal use only */ AsyncAction.prototype._unsubscribe = function () {\n        var id = this.id;\n        var scheduler = this.scheduler;\n        var actions = scheduler.actions;\n        var index = actions.indexOf(this);\n        this.work = null;\n        this.state = null;\n        this.pending = false;\n        this.scheduler = null;\n        if (index !== -1) {\n            actions.splice(index, 1);\n        }\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, null);\n        }\n        this.delay = null;\n    };\n    return AsyncAction;\n}(Action));\n//# sourceMappingURL=AsyncAction.js.map","/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an {@link Action}.\n *\n * ```ts\n * class Scheduler {\n *   now(): number;\n *   schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n */\nexport var Scheduler = (function () {\n    function Scheduler(SchedulerAction, now) {\n        if (now === void 0) { now = Scheduler.now; }\n        this.SchedulerAction = SchedulerAction;\n        this.now = now;\n    }\n    /**\n     * Schedules a function, `work`, for execution. May happen at some point in\n     * the future, according to the `delay` parameter, if specified. May be passed\n     * some context object, `state`, which will be passed to the `work` function.\n     *\n     * The given arguments will be processed an stored as an Action object in a\n     * queue of actions.\n     *\n     * @param {function(state: ?T): ?Subscription} work A function representing a\n     * task, or some unit of work to be executed by the Scheduler.\n     * @param {number} [delay] Time to wait before executing the work, where the\n     * time unit is implicit and defined by the Scheduler itself.\n     * @param {T} [state] Some contextual data that the `work` function uses when\n     * called by the Scheduler.\n     * @return {Subscription} A subscription in order to be able to unsubscribe\n     * the scheduled work.\n     */\n    Scheduler.prototype.schedule = function (work, delay, state) {\n        if (delay === void 0) { delay = 0; }\n        return new this.SchedulerAction(this, work).schedule(state, delay);\n    };\n    Scheduler.now = Date.now ? Date.now : function () { return +new Date(); };\n    return Scheduler;\n}());\n//# sourceMappingURL=Scheduler.js.map","import { Scheduler } from '../Scheduler';\nexport var AsyncScheduler = (function (_super) {\n    __extends(AsyncScheduler, _super);\n    function AsyncScheduler() {\n        _super.apply(this, arguments);\n        this.actions = [];\n        /**\n         * A flag to indicate whether the Scheduler is currently executing a batch of\n         * queued actions.\n         * @type {boolean}\n         */\n        this.active = false;\n        /**\n         * An internal ID used to track the latest asynchronous task such as those\n         * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n         * others.\n         * @type {any}\n         */\n        this.scheduled = undefined;\n    }\n    AsyncScheduler.prototype.flush = function (action) {\n        var actions = this.actions;\n        if (this.active) {\n            actions.push(action);\n            return;\n        }\n        var error;\n        this.active = true;\n        do {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        } while (action = actions.shift()); // exhaust the scheduler queue\n        this.active = false;\n        if (error) {\n            while (action = actions.shift()) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AsyncScheduler;\n}(Scheduler));\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asap} scheduler.\n *\n * @example <caption>Use async scheduler to delay task</caption>\n * const task = () => console.log('it works!');\n *\n * Rx.Scheduler.async.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n *\n *\n * @example <caption>Use async scheduler to repeat task in intervals</caption>\n * function task(state) {\n *   console.log(state);\n *   this.schedule(state + 1, 1000); // `this` references currently executing Action,\n *                                   // which we reschedule with new state and delay\n * }\n *\n * Rx.Scheduler.async.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n *\n * @static true\n * @name async\n * @owner Scheduler\n */\nexport var async = new AsyncScheduler(AsyncAction);\n//# sourceMappingURL=async.js.map","import { isNumeric } from '../util/isNumeric';\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var IntervalObservable = (function (_super) {\n    __extends(IntervalObservable, _super);\n    function IntervalObservable(period, scheduler) {\n        if (period === void 0) { period = 0; }\n        if (scheduler === void 0) { scheduler = async; }\n        _super.call(this);\n        this.period = period;\n        this.scheduler = scheduler;\n        if (!isNumeric(period) || period < 0) {\n            this.period = 0;\n        }\n        if (!scheduler || typeof scheduler.schedule !== 'function') {\n            this.scheduler = async;\n        }\n    }\n    /**\n     * Creates an Observable that emits sequential numbers every specified\n     * interval of time, on a specified IScheduler.\n     *\n     * <span class=\"informal\">Emits incremental numbers periodically in time.\n     * </span>\n     *\n     * <img src=\"./img/interval.png\" width=\"100%\">\n     *\n     * `interval` returns an Observable that emits an infinite sequence of\n     * ascending integers, with a constant interval of time of your choosing\n     * between those emissions. The first emission is not sent immediately, but\n     * only after the first period has passed. By default, this operator uses the\n     * `async` IScheduler to provide a notion of time, but you may pass any\n     * IScheduler to it.\n     *\n     * @example <caption>Emits ascending numbers, one every second (1000ms)</caption>\n     * var numbers = Rx.Observable.interval(1000);\n     * numbers.subscribe(x => console.log(x));\n     *\n     * @see {@link timer}\n     * @see {@link delay}\n     *\n     * @param {number} [period=0] The interval size in milliseconds (by default)\n     * or the time unit determined by the scheduler's clock.\n     * @param {Scheduler} [scheduler=async] The IScheduler to use for scheduling\n     * the emission of values, and providing a notion of \"time\".\n     * @return {Observable} An Observable that emits a sequential number each time\n     * interval.\n     * @static true\n     * @name interval\n     * @owner Observable\n     */\n    IntervalObservable.create = function (period, scheduler) {\n        if (period === void 0) { period = 0; }\n        if (scheduler === void 0) { scheduler = async; }\n        return new IntervalObservable(period, scheduler);\n    };\n    IntervalObservable.dispatch = function (state) {\n        var index = state.index, subscriber = state.subscriber, period = state.period;\n        subscriber.next(index);\n        if (subscriber.closed) {\n            return;\n        }\n        state.index += 1;\n        this.schedule(state, period);\n    };\n    /** @deprecated internal use only */ IntervalObservable.prototype._subscribe = function (subscriber) {\n        var index = 0;\n        var period = this.period;\n        var scheduler = this.scheduler;\n        subscriber.add(scheduler.schedule(IntervalObservable.dispatch, period, {\n            index: index, subscriber: subscriber, period: period\n        }));\n    };\n    return IntervalObservable;\n}(Observable));\n//# sourceMappingURL=IntervalObservable.js.map","import { IntervalObservable } from './IntervalObservable';\nexport var interval = IntervalObservable.create;\n//# sourceMappingURL=interval.js.map","import { Observable } from '../../Observable';\nimport { interval as staticInterval } from '../../observable/interval';\nObservable.interval = staticInterval;\n//# sourceMappingURL=interval.js.map","import { Observable } from '../Observable';\nimport { ArrayObservable } from './ArrayObservable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = Rx.Observable.merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = Rx.Observable.merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits it's max iteration, timer2 will\n * //   continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits it's max iteration it terminates, and\n * //   timer3 will continue to emit a value every 500ms until it is complete\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nexport function merge() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    var concurrent = Number.POSITIVE_INFINITY;\n    var scheduler = null;\n    var last = observables[observables.length - 1];\n    if (isScheduler(last)) {\n        scheduler = observables.pop();\n        if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n            concurrent = observables.pop();\n        }\n    }\n    else if (typeof last === 'number') {\n        concurrent = observables.pop();\n    }\n    if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n        return observables[0];\n    }\n    return mergeAll(concurrent)(new ArrayObservable(observables, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { Observable } from '../../Observable';\nimport { merge as mergeStatic } from '../../observable/merge';\nObservable.merge = mergeStatic;\n//# sourceMappingURL=merge.js.map","import { isArray } from '../util/isArray';\nimport { ArrayObservable } from '../observable/ArrayObservable';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function race() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    // if the only argument is an array, it was most likely called with\n    // `race([obs1, obs2, ...])`\n    if (observables.length === 1) {\n        if (isArray(observables[0])) {\n            observables = observables[0];\n        }\n        else {\n            return observables[0];\n        }\n    }\n    return new ArrayObservable(observables).lift(new RaceOperator());\n}\nexport var RaceOperator = (function () {\n    function RaceOperator() {\n    }\n    RaceOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new RaceSubscriber(subscriber));\n    };\n    return RaceOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var RaceSubscriber = (function (_super) {\n    __extends(RaceSubscriber, _super);\n    function RaceSubscriber(destination) {\n        _super.call(this, destination);\n        this.hasFirst = false;\n        this.observables = [];\n        this.subscriptions = [];\n    }\n    RaceSubscriber.prototype._next = function (observable) {\n        this.observables.push(observable);\n    };\n    RaceSubscriber.prototype._complete = function () {\n        var observables = this.observables;\n        var len = observables.length;\n        if (len === 0) {\n            this.destination.complete();\n        }\n        else {\n            for (var i = 0; i < len && !this.hasFirst; i++) {\n                var observable = observables[i];\n                var subscription = subscribeToResult(this, observable, observable, i);\n                if (this.subscriptions) {\n                    this.subscriptions.push(subscription);\n                }\n                this.add(subscription);\n            }\n            this.observables = null;\n        }\n    };\n    RaceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        if (!this.hasFirst) {\n            this.hasFirst = true;\n            for (var i = 0; i < this.subscriptions.length; i++) {\n                if (i !== outerIndex) {\n                    var subscription = this.subscriptions[i];\n                    subscription.unsubscribe();\n                    this.remove(subscription);\n                }\n            }\n            this.subscriptions = null;\n        }\n        this.destination.next(innerValue);\n    };\n    return RaceSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=race.js.map","import { Observable } from '../../Observable';\nimport { race as staticRace } from '../../observable/race';\nObservable.race = staticRace;\n//# sourceMappingURL=race.js.map","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var NeverObservable = (function (_super) {\n    __extends(NeverObservable, _super);\n    function NeverObservable() {\n        _super.call(this);\n    }\n    /**\n     * Creates an Observable that emits no items to the Observer.\n     *\n     * <span class=\"informal\">An Observable that never emits anything.</span>\n     *\n     * <img src=\"./img/never.png\" width=\"100%\">\n     *\n     * This static operator is useful for creating a simple Observable that emits\n     * neither values nor errors nor the completion notification. It can be used\n     * for testing purposes or for composing with other Observables. Please note\n     * that by never emitting a complete notification, this Observable keeps the\n     * subscription from being disposed automatically. Subscriptions need to be\n     * manually disposed.\n     *\n     * @example <caption>Emit the number 7, then never emit anything else (not even complete).</caption>\n     * function info() {\n     *   console.log('Will not be called');\n     * }\n     * var result = Rx.Observable.never().startWith(7);\n     * result.subscribe(x => console.log(x), info, info);\n     *\n     * @see {@link create}\n     * @see {@link empty}\n     * @see {@link of}\n     * @see {@link throw}\n     *\n     * @return {Observable} A \"never\" Observable: never emits anything.\n     * @static true\n     * @name never\n     * @owner Observable\n     */\n    NeverObservable.create = function () {\n        return new NeverObservable();\n    };\n    /** @deprecated internal use only */ NeverObservable.prototype._subscribe = function (subscriber) {\n        noop();\n    };\n    return NeverObservable;\n}(Observable));\n//# sourceMappingURL=NeverObservable.js.map","import { NeverObservable } from './NeverObservable';\nexport var never = NeverObservable.create;\n//# sourceMappingURL=never.js.map","import { Observable } from '../../Observable';\nimport { never as staticNever } from '../../observable/never';\nObservable.never = staticNever;\n//# sourceMappingURL=never.js.map","import { Observable } from '../../Observable';\nimport { of as staticOf } from '../../observable/of';\nObservable.of = staticOf;\n//# sourceMappingURL=of.js.map","import { FromObservable } from '../observable/FromObservable';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/* tslint:enable:max-line-length */\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * <span class=\"informal\">Execute series of Observables no matter what, even if it means swallowing errors.</span>\n *\n * <img src=\"./img/onErrorResumeNext.png\" width=\"100%\">\n *\n * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as\n * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same\n * as the source.\n *\n * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable.\n * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext`\n * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting\n * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another\n * Observable in provided series, no matter if previous Observable completed or ended with an error. This will\n * be happening until there is no more Observables left in the series, at which point returned Observable will\n * complete - even if the last subscribed stream ended with an error.\n *\n * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive\n * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable\n * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with\n * an error.\n *\n * Note that you do not get any access to errors emitted by the Observables. In particular do not\n * expect these errors to appear in error callback passed to {@link subscribe}. If you want to take\n * specific actions based on what error was emitted by an Observable, you should try out {@link catch} instead.\n *\n *\n * @example <caption>Subscribe to the next Observable after map fails</caption>\n * Rx.Observable.of(1, 2, 3, 0)\n *   .map(x => {\n *       if (x === 0) { throw Error(); }\n         return 10 / x;\n *   })\n *   .onErrorResumeNext(Rx.Observable.of(1, 2, 3))\n *   .subscribe(\n *     val => console.log(val),\n *     err => console.log(err),          // Will never be called.\n *     () => console.log('that\\'s it!')\n *   );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"that's it!\"\n *\n * @see {@link concat}\n * @see {@link catch}\n *\n * @param {...ObservableInput} observables Observables passed either directly or as an array.\n * @return {Observable} An Observable that emits values from source Observable, but - if it errors - subscribes\n * to the next passed Observable and so on, until it completes or runs out of Observables.\n * @method onErrorResumeNext\n * @owner Observable\n */\nexport function onErrorResumeNext() {\n    var nextSources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        nextSources[_i - 0] = arguments[_i];\n    }\n    if (nextSources.length === 1 && isArray(nextSources[0])) {\n        nextSources = nextSources[0];\n    }\n    return function (source) { return source.lift(new OnErrorResumeNextOperator(nextSources)); };\n}\n/* tslint:enable:max-line-length */\nexport function onErrorResumeNextStatic() {\n    var nextSources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        nextSources[_i - 0] = arguments[_i];\n    }\n    var source = null;\n    if (nextSources.length === 1 && isArray(nextSources[0])) {\n        nextSources = nextSources[0];\n    }\n    source = nextSources.shift();\n    return new FromObservable(source, null).lift(new OnErrorResumeNextOperator(nextSources));\n}\nvar OnErrorResumeNextOperator = (function () {\n    function OnErrorResumeNextOperator(nextSources) {\n        this.nextSources = nextSources;\n    }\n    OnErrorResumeNextOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));\n    };\n    return OnErrorResumeNextOperator;\n}());\nvar OnErrorResumeNextSubscriber = (function (_super) {\n    __extends(OnErrorResumeNextSubscriber, _super);\n    function OnErrorResumeNextSubscriber(destination, nextSources) {\n        _super.call(this, destination);\n        this.destination = destination;\n        this.nextSources = nextSources;\n    }\n    OnErrorResumeNextSubscriber.prototype.notifyError = function (error, innerSub) {\n        this.subscribeToNextSource();\n    };\n    OnErrorResumeNextSubscriber.prototype.notifyComplete = function (innerSub) {\n        this.subscribeToNextSource();\n    };\n    OnErrorResumeNextSubscriber.prototype._error = function (err) {\n        this.subscribeToNextSource();\n    };\n    OnErrorResumeNextSubscriber.prototype._complete = function () {\n        this.subscribeToNextSource();\n    };\n    OnErrorResumeNextSubscriber.prototype.subscribeToNextSource = function () {\n        var next = this.nextSources.shift();\n        if (next) {\n            this.add(subscribeToResult(this, next));\n        }\n        else {\n            this.destination.complete();\n        }\n    };\n    return OnErrorResumeNextSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=onErrorResumeNext.js.map","import { onErrorResumeNextStatic } from '../operators/onErrorResumeNext';\nexport var onErrorResumeNext = onErrorResumeNextStatic;\n//# sourceMappingURL=onErrorResumeNext.js.map","import { Observable } from '../../Observable';\nimport { onErrorResumeNext as staticOnErrorResumeNext } from '../../observable/onErrorResumeNext';\nObservable.onErrorResumeNext = staticOnErrorResumeNext;\n//# sourceMappingURL=onErrorResumeNext.js.map","import { Observable } from '../Observable';\nfunction dispatch(state) {\n    var obj = state.obj, keys = state.keys, length = state.length, index = state.index, subscriber = state.subscriber;\n    if (index === length) {\n        subscriber.complete();\n        return;\n    }\n    var key = keys[index];\n    subscriber.next([key, obj[key]]);\n    state.index = index + 1;\n    this.schedule(state);\n}\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var PairsObservable = (function (_super) {\n    __extends(PairsObservable, _super);\n    function PairsObservable(obj, scheduler) {\n        _super.call(this);\n        this.obj = obj;\n        this.scheduler = scheduler;\n        this.keys = Object.keys(obj);\n    }\n    /**\n     * Convert an object into an observable sequence of [key, value] pairs\n     * using an optional IScheduler to enumerate the object.\n     *\n     * @example <caption>Converts a javascript object to an Observable</caption>\n     * var obj = {\n     *   foo: 42,\n     *   bar: 56,\n     *   baz: 78\n     * };\n     *\n     * var source = Rx.Observable.pairs(obj);\n     *\n     * var subscription = source.subscribe(\n     *   function (x) {\n     *     console.log('Next: %s', x);\n     *   },\n     *   function (err) {\n     *     console.log('Error: %s', err);\n     *   },\n     *   function () {\n     *     console.log('Completed');\n     *   });\n     *\n     * @param {Object} obj The object to inspect and turn into an\n     * Observable sequence.\n     * @param {Scheduler} [scheduler] An optional IScheduler to run the\n     * enumeration of the input sequence on.\n     * @returns {(Observable<Array<string | T>>)} An observable sequence of\n     * [key, value] pairs from the object.\n     */\n    PairsObservable.create = function (obj, scheduler) {\n        return new PairsObservable(obj, scheduler);\n    };\n    /** @deprecated internal use only */ PairsObservable.prototype._subscribe = function (subscriber) {\n        var _a = this, keys = _a.keys, scheduler = _a.scheduler;\n        var length = keys.length;\n        if (scheduler) {\n            return scheduler.schedule(dispatch, 0, {\n                obj: this.obj, keys: keys, length: length, index: 0, subscriber: subscriber\n            });\n        }\n        else {\n            for (var idx = 0; idx < length; idx++) {\n                var key = keys[idx];\n                subscriber.next([key, this.obj[key]]);\n            }\n            subscriber.complete();\n        }\n    };\n    return PairsObservable;\n}(Observable));\n//# sourceMappingURL=PairsObservable.js.map","import { PairsObservable } from './PairsObservable';\nexport var pairs = PairsObservable.create;\n//# sourceMappingURL=pairs.js.map","import { Observable } from '../../Observable';\nimport { pairs as staticPairs } from '../../observable/pairs';\nObservable.pairs = staticPairs;\n//# sourceMappingURL=pairs.js.map","import { Observable } from '../Observable';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var RangeObservable = (function (_super) {\n    __extends(RangeObservable, _super);\n    function RangeObservable(start, count, scheduler) {\n        _super.call(this);\n        this.start = start;\n        this._count = count;\n        this.scheduler = scheduler;\n    }\n    /**\n     * Creates an Observable that emits a sequence of numbers within a specified\n     * range.\n     *\n     * <span class=\"informal\">Emits a sequence of numbers in a range.</span>\n     *\n     * <img src=\"./img/range.png\" width=\"100%\">\n     *\n     * `range` operator emits a range of sequential integers, in order, where you\n     * select the `start` of the range and its `length`. By default, uses no\n     * IScheduler and just delivers the notifications synchronously, but may use\n     * an optional IScheduler to regulate those deliveries.\n     *\n     * @example <caption>Emits the numbers 1 to 10</caption>\n     * var numbers = Rx.Observable.range(1, 10);\n     * numbers.subscribe(x => console.log(x));\n     *\n     * @see {@link timer}\n     * @see {@link interval}\n     *\n     * @param {number} [start=0] The value of the first integer in the sequence.\n     * @param {number} [count=0] The number of sequential integers to generate.\n     * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n     * the emissions of the notifications.\n     * @return {Observable} An Observable of numbers that emits a finite range of\n     * sequential integers.\n     * @static true\n     * @name range\n     * @owner Observable\n     */\n    RangeObservable.create = function (start, count, scheduler) {\n        if (start === void 0) { start = 0; }\n        if (count === void 0) { count = 0; }\n        return new RangeObservable(start, count, scheduler);\n    };\n    RangeObservable.dispatch = function (state) {\n        var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;\n        if (index >= count) {\n            subscriber.complete();\n            return;\n        }\n        subscriber.next(start);\n        if (subscriber.closed) {\n            return;\n        }\n        state.index = index + 1;\n        state.start = start + 1;\n        this.schedule(state);\n    };\n    /** @deprecated internal use only */ RangeObservable.prototype._subscribe = function (subscriber) {\n        var index = 0;\n        var start = this.start;\n        var count = this._count;\n        var scheduler = this.scheduler;\n        if (scheduler) {\n            return scheduler.schedule(RangeObservable.dispatch, 0, {\n                index: index, count: count, start: start, subscriber: subscriber\n            });\n        }\n        else {\n            do {\n                if (index++ >= count) {\n                    subscriber.complete();\n                    break;\n                }\n                subscriber.next(start++);\n                if (subscriber.closed) {\n                    break;\n                }\n            } while (true);\n        }\n    };\n    return RangeObservable;\n}(Observable));\n//# sourceMappingURL=RangeObservable.js.map","import { RangeObservable } from './RangeObservable';\nexport var range = RangeObservable.create;\n//# sourceMappingURL=range.js.map","import { Observable } from '../../Observable';\nimport { range as staticRange } from '../../observable/range';\nObservable.range = staticRange;\n//# sourceMappingURL=range.js.map","import { Observable } from '../Observable';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var UsingObservable = (function (_super) {\n    __extends(UsingObservable, _super);\n    function UsingObservable(resourceFactory, observableFactory) {\n        _super.call(this);\n        this.resourceFactory = resourceFactory;\n        this.observableFactory = observableFactory;\n    }\n    UsingObservable.create = function (resourceFactory, observableFactory) {\n        return new UsingObservable(resourceFactory, observableFactory);\n    };\n    /** @deprecated internal use only */ UsingObservable.prototype._subscribe = function (subscriber) {\n        var _a = this, resourceFactory = _a.resourceFactory, observableFactory = _a.observableFactory;\n        var resource;\n        try {\n            resource = resourceFactory();\n            return new UsingSubscriber(subscriber, resource, observableFactory);\n        }\n        catch (err) {\n            subscriber.error(err);\n        }\n    };\n    return UsingObservable;\n}(Observable));\nvar UsingSubscriber = (function (_super) {\n    __extends(UsingSubscriber, _super);\n    function UsingSubscriber(destination, resource, observableFactory) {\n        _super.call(this, destination);\n        this.resource = resource;\n        this.observableFactory = observableFactory;\n        destination.add(resource);\n        this.tryUse();\n    }\n    UsingSubscriber.prototype.tryUse = function () {\n        try {\n            var source = this.observableFactory.call(this, this.resource);\n            if (source) {\n                this.add(subscribeToResult(this, source));\n            }\n        }\n        catch (err) {\n            this._error(err);\n        }\n    };\n    return UsingSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=UsingObservable.js.map","import { UsingObservable } from './UsingObservable';\nexport var using = UsingObservable.create;\n//# sourceMappingURL=using.js.map","import { Observable } from '../../Observable';\nimport { using as staticUsing } from '../../observable/using';\nObservable.using = staticUsing;\n//# sourceMappingURL=using.js.map","import { Observable } from '../Observable';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var ErrorObservable = (function (_super) {\n    __extends(ErrorObservable, _super);\n    function ErrorObservable(error, scheduler) {\n        _super.call(this);\n        this.error = error;\n        this.scheduler = scheduler;\n    }\n    /**\n     * Creates an Observable that emits no items to the Observer and immediately\n     * emits an error notification.\n     *\n     * <span class=\"informal\">Just emits 'error', and nothing else.\n     * </span>\n     *\n     * <img src=\"./img/throw.png\" width=\"100%\">\n     *\n     * This static operator is useful for creating a simple Observable that only\n     * emits the error notification. It can be used for composing with other\n     * Observables, such as in a {@link mergeMap}.\n     *\n     * @example <caption>Emit the number 7, then emit an error.</caption>\n     * var result = Rx.Observable.throw(new Error('oops!')).startWith(7);\n     * result.subscribe(x => console.log(x), e => console.error(e));\n     *\n     * @example <caption>Map and flatten numbers to the sequence 'a', 'b', 'c', but throw an error for 13</caption>\n     * var interval = Rx.Observable.interval(1000);\n     * var result = interval.mergeMap(x =>\n     *   x === 13 ?\n     *     Rx.Observable.throw('Thirteens are bad') :\n     *     Rx.Observable.of('a', 'b', 'c')\n     * );\n     * result.subscribe(x => console.log(x), e => console.error(e));\n     *\n     * @see {@link create}\n     * @see {@link empty}\n     * @see {@link never}\n     * @see {@link of}\n     *\n     * @param {any} error The particular Error to pass to the error notification.\n     * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n     * the emission of the error notification.\n     * @return {Observable} An error Observable: emits only the error notification\n     * using the given error argument.\n     * @static true\n     * @name throw\n     * @owner Observable\n     */\n    ErrorObservable.create = function (error, scheduler) {\n        return new ErrorObservable(error, scheduler);\n    };\n    ErrorObservable.dispatch = function (arg) {\n        var error = arg.error, subscriber = arg.subscriber;\n        subscriber.error(error);\n    };\n    /** @deprecated internal use only */ ErrorObservable.prototype._subscribe = function (subscriber) {\n        var error = this.error;\n        var scheduler = this.scheduler;\n        subscriber.syncErrorThrowable = true;\n        if (scheduler) {\n            return scheduler.schedule(ErrorObservable.dispatch, 0, {\n                error: error, subscriber: subscriber\n            });\n        }\n        else {\n            subscriber.error(error);\n        }\n    };\n    return ErrorObservable;\n}(Observable));\n//# sourceMappingURL=ErrorObservable.js.map","import { ErrorObservable } from './ErrorObservable';\nexport var _throw = ErrorObservable.create;\n//# sourceMappingURL=throw.js.map","import { Observable } from '../../Observable';\nimport { _throw } from '../../observable/throw';\nObservable.throw = _throw;\n//# sourceMappingURL=throw.js.map","export function isDate(value) {\n    return value instanceof Date && !isNaN(+value);\n}\n//# sourceMappingURL=isDate.js.map","import { isNumeric } from '../util/isNumeric';\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isDate } from '../util/isDate';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var TimerObservable = (function (_super) {\n    __extends(TimerObservable, _super);\n    function TimerObservable(dueTime, period, scheduler) {\n        if (dueTime === void 0) { dueTime = 0; }\n        _super.call(this);\n        this.period = -1;\n        this.dueTime = 0;\n        if (isNumeric(period)) {\n            this.period = Number(period) < 1 && 1 || Number(period);\n        }\n        else if (isScheduler(period)) {\n            scheduler = period;\n        }\n        if (!isScheduler(scheduler)) {\n            scheduler = async;\n        }\n        this.scheduler = scheduler;\n        this.dueTime = isDate(dueTime) ?\n            (+dueTime - this.scheduler.now()) :\n            dueTime;\n    }\n    /**\n     * Creates an Observable that starts emitting after an `initialDelay` and\n     * emits ever increasing numbers after each `period` of time thereafter.\n     *\n     * <span class=\"informal\">Its like {@link interval}, but you can specify when\n     * should the emissions start.</span>\n     *\n     * <img src=\"./img/timer.png\" width=\"100%\">\n     *\n     * `timer` returns an Observable that emits an infinite sequence of ascending\n     * integers, with a constant interval of time, `period` of your choosing\n     * between those emissions. The first emission happens after the specified\n     * `initialDelay`. The initial delay may be a {@link Date}. By default, this\n     * operator uses the `async` IScheduler to provide a notion of time, but you\n     * may pass any IScheduler to it. If `period` is not specified, the output\n     * Observable emits only one value, `0`. Otherwise, it emits an infinite\n     * sequence.\n     *\n     * @example <caption>Emits ascending numbers, one every second (1000ms), starting after 3 seconds</caption>\n     * var numbers = Rx.Observable.timer(3000, 1000);\n     * numbers.subscribe(x => console.log(x));\n     *\n     * @example <caption>Emits one number after five seconds</caption>\n     * var numbers = Rx.Observable.timer(5000);\n     * numbers.subscribe(x => console.log(x));\n     *\n     * @see {@link interval}\n     * @see {@link delay}\n     *\n     * @param {number|Date} initialDelay The initial delay time to wait before\n     * emitting the first value of `0`.\n     * @param {number} [period] The period of time between emissions of the\n     * subsequent numbers.\n     * @param {Scheduler} [scheduler=async] The IScheduler to use for scheduling\n     * the emission of values, and providing a notion of \"time\".\n     * @return {Observable} An Observable that emits a `0` after the\n     * `initialDelay` and ever increasing numbers after each `period` of time\n     * thereafter.\n     * @static true\n     * @name timer\n     * @owner Observable\n     */\n    TimerObservable.create = function (initialDelay, period, scheduler) {\n        if (initialDelay === void 0) { initialDelay = 0; }\n        return new TimerObservable(initialDelay, period, scheduler);\n    };\n    TimerObservable.dispatch = function (state) {\n        var index = state.index, period = state.period, subscriber = state.subscriber;\n        var action = this;\n        subscriber.next(index);\n        if (subscriber.closed) {\n            return;\n        }\n        else if (period === -1) {\n            return subscriber.complete();\n        }\n        state.index = index + 1;\n        action.schedule(state, period);\n    };\n    /** @deprecated internal use only */ TimerObservable.prototype._subscribe = function (subscriber) {\n        var index = 0;\n        var _a = this, period = _a.period, dueTime = _a.dueTime, scheduler = _a.scheduler;\n        return scheduler.schedule(TimerObservable.dispatch, dueTime, {\n            index: index, period: period, subscriber: subscriber\n        });\n    };\n    return TimerObservable;\n}(Observable));\n//# sourceMappingURL=TimerObservable.js.map","import { TimerObservable } from './TimerObservable';\nexport var timer = TimerObservable.create;\n//# sourceMappingURL=timer.js.map","import { Observable } from '../../Observable';\nimport { timer as staticTimer } from '../../observable/timer';\nObservable.timer = staticTimer;\n//# sourceMappingURL=timer.js.map","import { ArrayObservable } from '../observable/ArrayObservable';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n/* tslint:enable:max-line-length */\n/**\n * @param observables\n * @return {Observable<R>}\n * @method zip\n * @owner Observable\n */\nexport function zip() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    return function zipOperatorFunction(source) {\n        return source.lift.call(zipStatic.apply(void 0, [source].concat(observables)));\n    };\n}\n/* tslint:enable:max-line-length */\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the latest parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * @example <caption>Combine age and name from different sources</caption>\n *\n * let age$ = Observable.of<number>(27, 25, 29);\n * let name$ = Observable.of<string>('Foo', 'Bar', 'Beer');\n * let isDev$ = Observable.of<boolean>(true, true, false);\n *\n * Observable\n *     .zip(age$,\n *          name$,\n *          isDev$,\n *          (age: number, name: string, isDev: boolean) => ({ age, name, isDev }))\n *     .subscribe(x => console.log(x));\n *\n * // outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n *\n * @param observables\n * @return {Observable<R>}\n * @static true\n * @name zip\n * @owner Observable\n */\nexport function zipStatic() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    var project = observables[observables.length - 1];\n    if (typeof project === 'function') {\n        observables.pop();\n    }\n    return new ArrayObservable(observables).lift(new ZipOperator(project));\n}\nexport var ZipOperator = (function () {\n    function ZipOperator(project) {\n        this.project = project;\n    }\n    ZipOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new ZipSubscriber(subscriber, this.project));\n    };\n    return ZipOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var ZipSubscriber = (function (_super) {\n    __extends(ZipSubscriber, _super);\n    function ZipSubscriber(destination, project, values) {\n        if (values === void 0) { values = Object.create(null); }\n        _super.call(this, destination);\n        this.iterators = [];\n        this.active = 0;\n        this.project = (typeof project === 'function') ? project : null;\n        this.values = values;\n    }\n    ZipSubscriber.prototype._next = function (value) {\n        var iterators = this.iterators;\n        if (isArray(value)) {\n            iterators.push(new StaticArrayIterator(value));\n        }\n        else if (typeof value[Symbol_iterator] === 'function') {\n            iterators.push(new StaticIterator(value[Symbol_iterator]()));\n        }\n        else {\n            iterators.push(new ZipBufferIterator(this.destination, this, value));\n        }\n    };\n    ZipSubscriber.prototype._complete = function () {\n        var iterators = this.iterators;\n        var len = iterators.length;\n        if (len === 0) {\n            this.destination.complete();\n            return;\n        }\n        this.active = len;\n        for (var i = 0; i < len; i++) {\n            var iterator = iterators[i];\n            if (iterator.stillUnsubscribed) {\n                this.add(iterator.subscribe(iterator, i));\n            }\n            else {\n                this.active--; // not an observable\n            }\n        }\n    };\n    ZipSubscriber.prototype.notifyInactive = function () {\n        this.active--;\n        if (this.active === 0) {\n            this.destination.complete();\n        }\n    };\n    ZipSubscriber.prototype.checkIterators = function () {\n        var iterators = this.iterators;\n        var len = iterators.length;\n        var destination = this.destination;\n        // abort if not all of them have values\n        for (var i = 0; i < len; i++) {\n            var iterator = iterators[i];\n            if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n                return;\n            }\n        }\n        var shouldComplete = false;\n        var args = [];\n        for (var i = 0; i < len; i++) {\n            var iterator = iterators[i];\n            var result = iterator.next();\n            // check to see if it's completed now that you've gotten\n            // the next value.\n            if (iterator.hasCompleted()) {\n                shouldComplete = true;\n            }\n            if (result.done) {\n                destination.complete();\n                return;\n            }\n            args.push(result.value);\n        }\n        if (this.project) {\n            this._tryProject(args);\n        }\n        else {\n            destination.next(args);\n        }\n        if (shouldComplete) {\n            destination.complete();\n        }\n    };\n    ZipSubscriber.prototype._tryProject = function (args) {\n        var result;\n        try {\n            result = this.project.apply(this, args);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return ZipSubscriber;\n}(Subscriber));\nvar StaticIterator = (function () {\n    function StaticIterator(iterator) {\n        this.iterator = iterator;\n        this.nextResult = iterator.next();\n    }\n    StaticIterator.prototype.hasValue = function () {\n        return true;\n    };\n    StaticIterator.prototype.next = function () {\n        var result = this.nextResult;\n        this.nextResult = this.iterator.next();\n        return result;\n    };\n    StaticIterator.prototype.hasCompleted = function () {\n        var nextResult = this.nextResult;\n        return nextResult && nextResult.done;\n    };\n    return StaticIterator;\n}());\nvar StaticArrayIterator = (function () {\n    function StaticArrayIterator(array) {\n        this.array = array;\n        this.index = 0;\n        this.length = 0;\n        this.length = array.length;\n    }\n    StaticArrayIterator.prototype[Symbol_iterator] = function () {\n        return this;\n    };\n    StaticArrayIterator.prototype.next = function (value) {\n        var i = this.index++;\n        var array = this.array;\n        return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n    };\n    StaticArrayIterator.prototype.hasValue = function () {\n        return this.array.length > this.index;\n    };\n    StaticArrayIterator.prototype.hasCompleted = function () {\n        return this.array.length === this.index;\n    };\n    return StaticArrayIterator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ZipBufferIterator = (function (_super) {\n    __extends(ZipBufferIterator, _super);\n    function ZipBufferIterator(destination, parent, observable) {\n        _super.call(this, destination);\n        this.parent = parent;\n        this.observable = observable;\n        this.stillUnsubscribed = true;\n        this.buffer = [];\n        this.isComplete = false;\n    }\n    ZipBufferIterator.prototype[Symbol_iterator] = function () {\n        return this;\n    };\n    // NOTE: there is actually a name collision here with Subscriber.next and Iterator.next\n    //    this is legit because `next()` will never be called by a subscription in this case.\n    ZipBufferIterator.prototype.next = function () {\n        var buffer = this.buffer;\n        if (buffer.length === 0 && this.isComplete) {\n            return { value: null, done: true };\n        }\n        else {\n            return { value: buffer.shift(), done: false };\n        }\n    };\n    ZipBufferIterator.prototype.hasValue = function () {\n        return this.buffer.length > 0;\n    };\n    ZipBufferIterator.prototype.hasCompleted = function () {\n        return this.buffer.length === 0 && this.isComplete;\n    };\n    ZipBufferIterator.prototype.notifyComplete = function () {\n        if (this.buffer.length > 0) {\n            this.isComplete = true;\n            this.parent.notifyInactive();\n        }\n        else {\n            this.destination.complete();\n        }\n    };\n    ZipBufferIterator.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.buffer.push(innerValue);\n        this.parent.checkIterators();\n    };\n    ZipBufferIterator.prototype.subscribe = function (value, index) {\n        return subscribeToResult(this, this.observable, this, index);\n    };\n    return ZipBufferIterator;\n}(OuterSubscriber));\n//# sourceMappingURL=zip.js.map","import { zipStatic } from '../operators/zip';\nexport var zip = zipStatic;\n//# sourceMappingURL=zip.js.map","import { Observable } from '../../Observable';\nimport { zip as zipStatic } from '../../observable/zip';\nObservable.zip = zipStatic;\n//# sourceMappingURL=zip.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nexport function map(project, thisArg) {\n    return function mapOperation(source) {\n        if (typeof project !== 'function') {\n            throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n        }\n        return source.lift(new MapOperator(project, thisArg));\n    };\n}\nexport var MapOperator = (function () {\n    function MapOperator(project, thisArg) {\n        this.project = project;\n        this.thisArg = thisArg;\n    }\n    MapOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n    };\n    return MapOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MapSubscriber = (function (_super) {\n    __extends(MapSubscriber, _super);\n    function MapSubscriber(destination, project, thisArg) {\n        _super.call(this, destination);\n        this.project = project;\n        this.count = 0;\n        this.thisArg = thisArg || this;\n    }\n    // NOTE: This looks unoptimized, but it's actually purposefully NOT\n    // using try/catch optimizations.\n    MapSubscriber.prototype._next = function (value) {\n        var result;\n        try {\n            result = this.project.call(this.thisArg, value, this.count++);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map","import { root } from '../../util/root';\nimport { tryCatch } from '../../util/tryCatch';\nimport { errorObject } from '../../util/errorObject';\nimport { Observable } from '../../Observable';\nimport { Subscriber } from '../../Subscriber';\nimport { map } from '../../operators/map';\nfunction getCORSRequest() {\n    if (root.XMLHttpRequest) {\n        return new root.XMLHttpRequest();\n    }\n    else if (!!root.XDomainRequest) {\n        return new root.XDomainRequest();\n    }\n    else {\n        throw new Error('CORS is not supported by your browser');\n    }\n}\nfunction getXMLHttpRequest() {\n    if (root.XMLHttpRequest) {\n        return new root.XMLHttpRequest();\n    }\n    else {\n        var progId = void 0;\n        try {\n            var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];\n            for (var i = 0; i < 3; i++) {\n                try {\n                    progId = progIds[i];\n                    if (new root.ActiveXObject(progId)) {\n                        break;\n                    }\n                }\n                catch (e) {\n                }\n            }\n            return new root.ActiveXObject(progId);\n        }\n        catch (e) {\n            throw new Error('XMLHttpRequest is not supported by your browser');\n        }\n    }\n}\nexport function ajaxGet(url, headers) {\n    if (headers === void 0) { headers = null; }\n    return new AjaxObservable({ method: 'GET', url: url, headers: headers });\n}\n;\nexport function ajaxPost(url, body, headers) {\n    return new AjaxObservable({ method: 'POST', url: url, body: body, headers: headers });\n}\n;\nexport function ajaxDelete(url, headers) {\n    return new AjaxObservable({ method: 'DELETE', url: url, headers: headers });\n}\n;\nexport function ajaxPut(url, body, headers) {\n    return new AjaxObservable({ method: 'PUT', url: url, body: body, headers: headers });\n}\n;\nexport function ajaxPatch(url, body, headers) {\n    return new AjaxObservable({ method: 'PATCH', url: url, body: body, headers: headers });\n}\n;\nvar mapResponse = map(function (x, index) { return x.response; });\nexport function ajaxGetJSON(url, headers) {\n    return mapResponse(new AjaxObservable({\n        method: 'GET',\n        url: url,\n        responseType: 'json',\n        headers: headers\n    }));\n}\n;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var AjaxObservable = (function (_super) {\n    __extends(AjaxObservable, _super);\n    function AjaxObservable(urlOrRequest) {\n        _super.call(this);\n        var request = {\n            async: true,\n            createXHR: function () {\n                return this.crossDomain ? getCORSRequest.call(this) : getXMLHttpRequest();\n            },\n            crossDomain: false,\n            withCredentials: false,\n            headers: {},\n            method: 'GET',\n            responseType: 'json',\n            timeout: 0\n        };\n        if (typeof urlOrRequest === 'string') {\n            request.url = urlOrRequest;\n        }\n        else {\n            for (var prop in urlOrRequest) {\n                if (urlOrRequest.hasOwnProperty(prop)) {\n                    request[prop] = urlOrRequest[prop];\n                }\n            }\n        }\n        this.request = request;\n    }\n    /** @deprecated internal use only */ AjaxObservable.prototype._subscribe = function (subscriber) {\n        return new AjaxSubscriber(subscriber, this.request);\n    };\n    /**\n     * Creates an observable for an Ajax request with either a request object with\n     * url, headers, etc or a string for a URL.\n     *\n     * @example\n     * source = Rx.Observable.ajax('/products');\n     * source = Rx.Observable.ajax({ url: 'products', method: 'GET' });\n     *\n     * @param {string|Object} request Can be one of the following:\n     *   A string of the URL to make the Ajax call.\n     *   An object with the following properties\n     *   - url: URL of the request\n     *   - body: The body of the request\n     *   - method: Method of the request, such as GET, POST, PUT, PATCH, DELETE\n     *   - async: Whether the request is async\n     *   - headers: Optional headers\n     *   - crossDomain: true if a cross domain request, else false\n     *   - createXHR: a function to override if you need to use an alternate\n     *   XMLHttpRequest implementation.\n     *   - resultSelector: a function to use to alter the output value type of\n     *   the Observable. Gets {@link AjaxResponse} as an argument.\n     * @return {Observable} An observable sequence containing the XMLHttpRequest.\n     * @static true\n     * @name ajax\n     * @owner Observable\n    */\n    AjaxObservable.create = (function () {\n        var create = function (urlOrRequest) {\n            return new AjaxObservable(urlOrRequest);\n        };\n        create.get = ajaxGet;\n        create.post = ajaxPost;\n        create.delete = ajaxDelete;\n        create.put = ajaxPut;\n        create.patch = ajaxPatch;\n        create.getJSON = ajaxGetJSON;\n        return create;\n    })();\n    return AjaxObservable;\n}(Observable));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var AjaxSubscriber = (function (_super) {\n    __extends(AjaxSubscriber, _super);\n    function AjaxSubscriber(destination, request) {\n        _super.call(this, destination);\n        this.request = request;\n        this.done = false;\n        var headers = request.headers = request.headers || {};\n        // force CORS if requested\n        if (!request.crossDomain && !headers['X-Requested-With']) {\n            headers['X-Requested-With'] = 'XMLHttpRequest';\n        }\n        // ensure content type is set\n        if (!('Content-Type' in headers) && !(root.FormData && request.body instanceof root.FormData) && typeof request.body !== 'undefined') {\n            headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n        }\n        // properly serialize body\n        request.body = this.serializeBody(request.body, request.headers['Content-Type']);\n        this.send();\n    }\n    AjaxSubscriber.prototype.next = function (e) {\n        this.done = true;\n        var _a = this, xhr = _a.xhr, request = _a.request, destination = _a.destination;\n        var response = new AjaxResponse(e, xhr, request);\n        destination.next(response);\n    };\n    AjaxSubscriber.prototype.send = function () {\n        var _a = this, request = _a.request, _b = _a.request, user = _b.user, method = _b.method, url = _b.url, async = _b.async, password = _b.password, headers = _b.headers, body = _b.body;\n        var createXHR = request.createXHR;\n        var xhr = tryCatch(createXHR).call(request);\n        if (xhr === errorObject) {\n            this.error(errorObject.e);\n        }\n        else {\n            this.xhr = xhr;\n            // set up the events before open XHR\n            // https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest\n            // You need to add the event listeners before calling open() on the request.\n            // Otherwise the progress events will not fire.\n            this.setupEvents(xhr, request);\n            // open XHR\n            var result = void 0;\n            if (user) {\n                result = tryCatch(xhr.open).call(xhr, method, url, async, user, password);\n            }\n            else {\n                result = tryCatch(xhr.open).call(xhr, method, url, async);\n            }\n            if (result === errorObject) {\n                this.error(errorObject.e);\n                return null;\n            }\n            // timeout, responseType and withCredentials can be set once the XHR is open\n            if (async) {\n                xhr.timeout = request.timeout;\n                xhr.responseType = request.responseType;\n            }\n            if ('withCredentials' in xhr) {\n                xhr.withCredentials = !!request.withCredentials;\n            }\n            // set headers\n            this.setHeaders(xhr, headers);\n            // finally send the request\n            result = body ? tryCatch(xhr.send).call(xhr, body) : tryCatch(xhr.send).call(xhr);\n            if (result === errorObject) {\n                this.error(errorObject.e);\n                return null;\n            }\n        }\n        return xhr;\n    };\n    AjaxSubscriber.prototype.serializeBody = function (body, contentType) {\n        if (!body || typeof body === 'string') {\n            return body;\n        }\n        else if (root.FormData && body instanceof root.FormData) {\n            return body;\n        }\n        if (contentType) {\n            var splitIndex = contentType.indexOf(';');\n            if (splitIndex !== -1) {\n                contentType = contentType.substring(0, splitIndex);\n            }\n        }\n        switch (contentType) {\n            case 'application/x-www-form-urlencoded':\n                return Object.keys(body).map(function (key) { return (encodeURIComponent(key) + \"=\" + encodeURIComponent(body[key])); }).join('&');\n            case 'application/json':\n                return JSON.stringify(body);\n            default:\n                return body;\n        }\n    };\n    AjaxSubscriber.prototype.setHeaders = function (xhr, headers) {\n        for (var key in headers) {\n            if (headers.hasOwnProperty(key)) {\n                xhr.setRequestHeader(key, headers[key]);\n            }\n        }\n    };\n    AjaxSubscriber.prototype.setupEvents = function (xhr, request) {\n        var progressSubscriber = request.progressSubscriber;\n        function xhrTimeout(e) {\n            var _a = xhrTimeout, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n            if (progressSubscriber) {\n                progressSubscriber.error(e);\n            }\n            subscriber.error(new AjaxTimeoutError(this, request)); //TODO: Make betterer.\n        }\n        ;\n        xhr.ontimeout = xhrTimeout;\n        xhrTimeout.request = request;\n        xhrTimeout.subscriber = this;\n        xhrTimeout.progressSubscriber = progressSubscriber;\n        if (xhr.upload && 'withCredentials' in xhr) {\n            if (progressSubscriber) {\n                var xhrProgress_1;\n                xhrProgress_1 = function (e) {\n                    var progressSubscriber = xhrProgress_1.progressSubscriber;\n                    progressSubscriber.next(e);\n                };\n                if (root.XDomainRequest) {\n                    xhr.onprogress = xhrProgress_1;\n                }\n                else {\n                    xhr.upload.onprogress = xhrProgress_1;\n                }\n                xhrProgress_1.progressSubscriber = progressSubscriber;\n            }\n            var xhrError_1;\n            xhrError_1 = function (e) {\n                var _a = xhrError_1, progressSubscriber = _a.progressSubscriber, subscriber = _a.subscriber, request = _a.request;\n                if (progressSubscriber) {\n                    progressSubscriber.error(e);\n                }\n                subscriber.error(new AjaxError('ajax error', this, request));\n            };\n            xhr.onerror = xhrError_1;\n            xhrError_1.request = request;\n            xhrError_1.subscriber = this;\n            xhrError_1.progressSubscriber = progressSubscriber;\n        }\n        function xhrReadyStateChange(e) {\n            var _a = xhrReadyStateChange, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n            if (this.readyState === 4) {\n                // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n                var status_1 = this.status === 1223 ? 204 : this.status;\n                var response = (this.responseType === 'text' ? (this.response || this.responseText) : this.response);\n                // fix status code when it is 0 (0 status is undocumented).\n                // Occurs when accessing file resources or on Android 4.1 stock browser\n                // while retrieving files from application cache.\n                if (status_1 === 0) {\n                    status_1 = response ? 200 : 0;\n                }\n                if (200 <= status_1 && status_1 < 300) {\n                    if (progressSubscriber) {\n                        progressSubscriber.complete();\n                    }\n                    subscriber.next(e);\n                    subscriber.complete();\n                }\n                else {\n                    if (progressSubscriber) {\n                        progressSubscriber.error(e);\n                    }\n                    subscriber.error(new AjaxError('ajax error ' + status_1, this, request));\n                }\n            }\n        }\n        ;\n        xhr.onreadystatechange = xhrReadyStateChange;\n        xhrReadyStateChange.subscriber = this;\n        xhrReadyStateChange.progressSubscriber = progressSubscriber;\n        xhrReadyStateChange.request = request;\n    };\n    AjaxSubscriber.prototype.unsubscribe = function () {\n        var _a = this, done = _a.done, xhr = _a.xhr;\n        if (!done && xhr && xhr.readyState !== 4 && typeof xhr.abort === 'function') {\n            xhr.abort();\n        }\n        _super.prototype.unsubscribe.call(this);\n    };\n    return AjaxSubscriber;\n}(Subscriber));\n/**\n * A normalized AJAX response.\n *\n * @see {@link ajax}\n *\n * @class AjaxResponse\n */\nexport var AjaxResponse = (function () {\n    function AjaxResponse(originalEvent, xhr, request) {\n        this.originalEvent = originalEvent;\n        this.xhr = xhr;\n        this.request = request;\n        this.status = xhr.status;\n        this.responseType = xhr.responseType || request.responseType;\n        this.response = parseXhrResponse(this.responseType, xhr);\n    }\n    return AjaxResponse;\n}());\n/**\n * A normalized AJAX error.\n *\n * @see {@link ajax}\n *\n * @class AjaxError\n */\nexport var AjaxError = (function (_super) {\n    __extends(AjaxError, _super);\n    function AjaxError(message, xhr, request) {\n        _super.call(this, message);\n        this.message = message;\n        this.xhr = xhr;\n        this.request = request;\n        this.status = xhr.status;\n        this.responseType = xhr.responseType || request.responseType;\n        this.response = parseXhrResponse(this.responseType, xhr);\n    }\n    return AjaxError;\n}(Error));\nfunction parseXhrResponse(responseType, xhr) {\n    switch (responseType) {\n        case 'json':\n            if ('response' in xhr) {\n                //IE does not support json as responseType, parse it internally\n                return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null');\n            }\n            else {\n                // HACK(benlesh): TypeScript shennanigans\n                // tslint:disable-next-line:no-any latest TS seems to think xhr is \"never\" here.\n                return JSON.parse(xhr.responseText || 'null');\n            }\n        case 'xml':\n            return xhr.responseXML;\n        case 'text':\n        default:\n            // HACK(benlesh): TypeScript shennanigans\n            // tslint:disable-next-line:no-any latest TS seems to think xhr is \"never\" here.\n            return ('response' in xhr) ? xhr.response : xhr.responseText;\n    }\n}\n/**\n * @see {@link ajax}\n *\n * @class AjaxTimeoutError\n */\nexport var AjaxTimeoutError = (function (_super) {\n    __extends(AjaxTimeoutError, _super);\n    function AjaxTimeoutError(xhr, request) {\n        _super.call(this, 'ajax timeout', xhr, request);\n    }\n    return AjaxTimeoutError;\n}(AjaxError));\n//# sourceMappingURL=AjaxObservable.js.map","import { AjaxObservable } from './AjaxObservable';\nexport var ajax = AjaxObservable.create;\n//# sourceMappingURL=ajax.js.map","import { Observable } from '../../../Observable';\nimport { ajax as staticAjax } from '../../../observable/dom/ajax';\nObservable.ajax = staticAjax;\n//# sourceMappingURL=ajax.js.map","import { AsyncAction } from './AsyncAction';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var QueueAction = (function (_super) {\n    __extends(QueueAction, _super);\n    function QueueAction(scheduler, work) {\n        _super.call(this, scheduler, work);\n        this.scheduler = scheduler;\n        this.work = work;\n    }\n    QueueAction.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        if (delay > 0) {\n            return _super.prototype.schedule.call(this, state, delay);\n        }\n        this.delay = delay;\n        this.state = state;\n        this.scheduler.flush(this);\n        return this;\n    };\n    QueueAction.prototype.execute = function (state, delay) {\n        return (delay > 0 || this.closed) ?\n            _super.prototype.execute.call(this, state, delay) :\n            this._execute(state, delay);\n    };\n    QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        // If delay exists and is greater than 0, or if the delay is null (the\n        // action wasn't rescheduled) but was originally scheduled as an async\n        // action, then recycle as an async action.\n        if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n            return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n        }\n        // Otherwise flush the scheduler starting with this action.\n        return scheduler.flush(this);\n    };\n    return QueueAction;\n}(AsyncAction));\n//# sourceMappingURL=QueueAction.js.map","import { AsyncScheduler } from './AsyncScheduler';\nexport var QueueScheduler = (function (_super) {\n    __extends(QueueScheduler, _super);\n    function QueueScheduler() {\n        _super.apply(this, arguments);\n    }\n    return QueueScheduler;\n}(AsyncScheduler));\n//# sourceMappingURL=QueueScheduler.js.map","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n/**\n *\n * Queue Scheduler\n *\n * <span class=\"informal\">Put every next task on a queue, instead of executing it immediately</span>\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link async} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * @examples <caption>Schedule recursively first, then do something</caption>\n *\n * Rx.Scheduler.queue.schedule(() => {\n *   Rx.Scheduler.queue.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n *   console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n *\n *\n * @example <caption>Reschedule itself recursively</caption>\n *\n * Rx.Scheduler.queue.schedule(function(state) {\n *   if (state !== 0) {\n *     console.log('before', state);\n *     this.schedule(state - 1); // `this` references currently executing Action,\n *                               // which we reschedule with new state\n *     console.log('after', state);\n *   }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n *\n *\n * @static true\n * @name queue\n * @owner Scheduler\n */\nexport var queue = new QueueScheduler(QueueAction);\n//# sourceMappingURL=queue.js.map","import { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\n/**\n * @class ReplaySubject<T>\n */\nexport var ReplaySubject = (function (_super) {\n    __extends(ReplaySubject, _super);\n    function ReplaySubject(bufferSize, windowTime, scheduler) {\n        if (bufferSize === void 0) { bufferSize = Number.POSITIVE_INFINITY; }\n        if (windowTime === void 0) { windowTime = Number.POSITIVE_INFINITY; }\n        _super.call(this);\n        this.scheduler = scheduler;\n        this._events = [];\n        this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n        this._windowTime = windowTime < 1 ? 1 : windowTime;\n    }\n    ReplaySubject.prototype.next = function (value) {\n        var now = this._getNow();\n        this._events.push(new ReplayEvent(now, value));\n        this._trimBufferThenGetEvents();\n        _super.prototype.next.call(this, value);\n    };\n    /** @deprecated internal use only */ ReplaySubject.prototype._subscribe = function (subscriber) {\n        var _events = this._trimBufferThenGetEvents();\n        var scheduler = this.scheduler;\n        var subscription;\n        if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n        else if (this.hasError) {\n            subscription = Subscription.EMPTY;\n        }\n        else if (this.isStopped) {\n            subscription = Subscription.EMPTY;\n        }\n        else {\n            this.observers.push(subscriber);\n            subscription = new SubjectSubscription(this, subscriber);\n        }\n        if (scheduler) {\n            subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n        }\n        var len = _events.length;\n        for (var i = 0; i < len && !subscriber.closed; i++) {\n            subscriber.next(_events[i].value);\n        }\n        if (this.hasError) {\n            subscriber.error(this.thrownError);\n        }\n        else if (this.isStopped) {\n            subscriber.complete();\n        }\n        return subscription;\n    };\n    ReplaySubject.prototype._getNow = function () {\n        return (this.scheduler || queue).now();\n    };\n    ReplaySubject.prototype._trimBufferThenGetEvents = function () {\n        var now = this._getNow();\n        var _bufferSize = this._bufferSize;\n        var _windowTime = this._windowTime;\n        var _events = this._events;\n        var eventsCount = _events.length;\n        var spliceCount = 0;\n        // Trim events that fall out of the time window.\n        // Start at the front of the list. Break early once\n        // we encounter an event that falls within the window.\n        while (spliceCount < eventsCount) {\n            if ((now - _events[spliceCount].time) < _windowTime) {\n                break;\n            }\n            spliceCount++;\n        }\n        if (eventsCount > _bufferSize) {\n            spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n        }\n        if (spliceCount > 0) {\n            _events.splice(0, spliceCount);\n        }\n        return _events;\n    };\n    return ReplaySubject;\n}(Subject));\nvar ReplayEvent = (function () {\n    function ReplayEvent(time, value) {\n        this.time = time;\n        this.value = value;\n    }\n    return ReplayEvent;\n}());\n//# sourceMappingURL=ReplaySubject.js.map","import { root } from './root';\nexport function assignImpl(target) {\n    var sources = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        sources[_i - 1] = arguments[_i];\n    }\n    var len = sources.length;\n    for (var i = 0; i < len; i++) {\n        var source = sources[i];\n        for (var k in source) {\n            if (source.hasOwnProperty(k)) {\n                target[k] = source[k];\n            }\n        }\n    }\n    return target;\n}\n;\nexport function getAssign(root) {\n    return root.Object.assign || assignImpl;\n}\nexport var assign = getAssign(root);\n//# sourceMappingURL=assign.js.map","import { Subject, AnonymousSubject } from '../../Subject';\nimport { Subscriber } from '../../Subscriber';\nimport { Observable } from '../../Observable';\nimport { Subscription } from '../../Subscription';\nimport { root } from '../../util/root';\nimport { ReplaySubject } from '../../ReplaySubject';\nimport { tryCatch } from '../../util/tryCatch';\nimport { errorObject } from '../../util/errorObject';\nimport { assign } from '../../util/assign';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var WebSocketSubject = (function (_super) {\n    __extends(WebSocketSubject, _super);\n    function WebSocketSubject(urlConfigOrSource, destination) {\n        if (urlConfigOrSource instanceof Observable) {\n            _super.call(this, destination, urlConfigOrSource);\n        }\n        else {\n            _super.call(this);\n            this.WebSocketCtor = root.WebSocket;\n            this._output = new Subject();\n            if (typeof urlConfigOrSource === 'string') {\n                this.url = urlConfigOrSource;\n            }\n            else {\n                // WARNING: config object could override important members here.\n                assign(this, urlConfigOrSource);\n            }\n            if (!this.WebSocketCtor) {\n                throw new Error('no WebSocket constructor can be found');\n            }\n            this.destination = new ReplaySubject();\n        }\n    }\n    WebSocketSubject.prototype.resultSelector = function (e) {\n        return JSON.parse(e.data);\n    };\n    /**\n     * Wrapper around the w3c-compatible WebSocket object provided by the browser.\n     *\n     * @example <caption>Wraps browser WebSocket</caption>\n     *\n     * let socket$ = Observable.webSocket('ws://localhost:8081');\n     *\n     * socket$.subscribe(\n     *    (msg) => console.log('message received: ' + msg),\n     *    (err) => console.log(err),\n     *    () => console.log('complete')\n     *  );\n     *\n     * socket$.next(JSON.stringify({ op: 'hello' }));\n     *\n     * @example <caption>Wraps WebSocket from nodejs-websocket (using node.js)</caption>\n     *\n     * import { w3cwebsocket } from 'websocket';\n     *\n     * let socket$ = Observable.webSocket({\n     *   url: 'ws://localhost:8081',\n     *   WebSocketCtor: w3cwebsocket\n     * });\n     *\n     * socket$.subscribe(\n     *    (msg) => console.log('message received: ' + msg),\n     *    (err) => console.log(err),\n     *    () => console.log('complete')\n     *  );\n     *\n     * socket$.next(JSON.stringify({ op: 'hello' }));\n     *\n     * @param {string | WebSocketSubjectConfig} urlConfigOrSource the source of the websocket as an url or a structure defining the websocket object\n     * @return {WebSocketSubject}\n     * @static true\n     * @name webSocket\n     * @owner Observable\n     */\n    WebSocketSubject.create = function (urlConfigOrSource) {\n        return new WebSocketSubject(urlConfigOrSource);\n    };\n    WebSocketSubject.prototype.lift = function (operator) {\n        var sock = new WebSocketSubject(this, this.destination);\n        sock.operator = operator;\n        return sock;\n    };\n    WebSocketSubject.prototype._resetState = function () {\n        this.socket = null;\n        if (!this.source) {\n            this.destination = new ReplaySubject();\n        }\n        this._output = new Subject();\n    };\n    // TODO: factor this out to be a proper Operator/Subscriber implementation and eliminate closures\n    WebSocketSubject.prototype.multiplex = function (subMsg, unsubMsg, messageFilter) {\n        var self = this;\n        return new Observable(function (observer) {\n            var result = tryCatch(subMsg)();\n            if (result === errorObject) {\n                observer.error(errorObject.e);\n            }\n            else {\n                self.next(result);\n            }\n            var subscription = self.subscribe(function (x) {\n                var result = tryCatch(messageFilter)(x);\n                if (result === errorObject) {\n                    observer.error(errorObject.e);\n                }\n                else if (result) {\n                    observer.next(x);\n                }\n            }, function (err) { return observer.error(err); }, function () { return observer.complete(); });\n            return function () {\n                var result = tryCatch(unsubMsg)();\n                if (result === errorObject) {\n                    observer.error(errorObject.e);\n                }\n                else {\n                    self.next(result);\n                }\n                subscription.unsubscribe();\n            };\n        });\n    };\n    WebSocketSubject.prototype._connectSocket = function () {\n        var _this = this;\n        var WebSocketCtor = this.WebSocketCtor;\n        var observer = this._output;\n        var socket = null;\n        try {\n            socket = this.protocol ?\n                new WebSocketCtor(this.url, this.protocol) :\n                new WebSocketCtor(this.url);\n            this.socket = socket;\n            if (this.binaryType) {\n                this.socket.binaryType = this.binaryType;\n            }\n        }\n        catch (e) {\n            observer.error(e);\n            return;\n        }\n        var subscription = new Subscription(function () {\n            _this.socket = null;\n            if (socket && socket.readyState === 1) {\n                socket.close();\n            }\n        });\n        socket.onopen = function (e) {\n            var openObserver = _this.openObserver;\n            if (openObserver) {\n                openObserver.next(e);\n            }\n            var queue = _this.destination;\n            _this.destination = Subscriber.create(function (x) { return socket.readyState === 1 && socket.send(x); }, function (e) {\n                var closingObserver = _this.closingObserver;\n                if (closingObserver) {\n                    closingObserver.next(undefined);\n                }\n                if (e && e.code) {\n                    socket.close(e.code, e.reason);\n                }\n                else {\n                    observer.error(new TypeError('WebSocketSubject.error must be called with an object with an error code, ' +\n                        'and an optional reason: { code: number, reason: string }'));\n                }\n                _this._resetState();\n            }, function () {\n                var closingObserver = _this.closingObserver;\n                if (closingObserver) {\n                    closingObserver.next(undefined);\n                }\n                socket.close();\n                _this._resetState();\n            });\n            if (queue && queue instanceof ReplaySubject) {\n                subscription.add(queue.subscribe(_this.destination));\n            }\n        };\n        socket.onerror = function (e) {\n            _this._resetState();\n            observer.error(e);\n        };\n        socket.onclose = function (e) {\n            _this._resetState();\n            var closeObserver = _this.closeObserver;\n            if (closeObserver) {\n                closeObserver.next(e);\n            }\n            if (e.wasClean) {\n                observer.complete();\n            }\n            else {\n                observer.error(e);\n            }\n        };\n        socket.onmessage = function (e) {\n            var result = tryCatch(_this.resultSelector)(e);\n            if (result === errorObject) {\n                observer.error(errorObject.e);\n            }\n            else {\n                observer.next(result);\n            }\n        };\n    };\n    /** @deprecated internal use only */ WebSocketSubject.prototype._subscribe = function (subscriber) {\n        var _this = this;\n        var source = this.source;\n        if (source) {\n            return source.subscribe(subscriber);\n        }\n        if (!this.socket) {\n            this._connectSocket();\n        }\n        var subscription = new Subscription();\n        subscription.add(this._output.subscribe(subscriber));\n        subscription.add(function () {\n            var socket = _this.socket;\n            if (_this._output.observers.length === 0) {\n                if (socket && socket.readyState === 1) {\n                    socket.close();\n                }\n                _this._resetState();\n            }\n        });\n        return subscription;\n    };\n    WebSocketSubject.prototype.unsubscribe = function () {\n        var _a = this, source = _a.source, socket = _a.socket;\n        if (socket && socket.readyState === 1) {\n            socket.close();\n            this._resetState();\n        }\n        _super.prototype.unsubscribe.call(this);\n        if (!source) {\n            this.destination = new ReplaySubject();\n        }\n    };\n    return WebSocketSubject;\n}(AnonymousSubject));\n//# sourceMappingURL=WebSocketSubject.js.map","import { WebSocketSubject } from './WebSocketSubject';\nexport var webSocket = WebSocketSubject.create;\n//# sourceMappingURL=webSocket.js.map","import { Observable } from '../../../Observable';\nimport { webSocket as staticWebSocket } from '../../../observable/dom/webSocket';\nObservable.webSocket = staticWebSocket;\n//# sourceMappingURL=webSocket.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Buffers the source Observable values until `closingNotifier` emits.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * that array only when another Observable emits.</span>\n *\n * <img src=\"./img/buffer.png\" width=\"100%\">\n *\n * Buffers the incoming Observable values until the given `closingNotifier`\n * Observable emits a value, at which point it emits the buffer on the output\n * Observable and starts a new buffer internally, awaiting the next time\n * `closingNotifier` emits.\n *\n * @example <caption>On every click, emit array of most recent interval events</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var interval = Rx.Observable.interval(1000);\n * var buffered = interval.buffer(clicks);\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link window}\n *\n * @param {Observable<any>} closingNotifier An Observable that signals the\n * buffer to be emitted on the output Observable.\n * @return {Observable<T[]>} An Observable of buffers, which are arrays of\n * values.\n * @method buffer\n * @owner Observable\n */\nexport function buffer(closingNotifier) {\n    return function bufferOperatorFunction(source) {\n        return source.lift(new BufferOperator(closingNotifier));\n    };\n}\nvar BufferOperator = (function () {\n    function BufferOperator(closingNotifier) {\n        this.closingNotifier = closingNotifier;\n    }\n    BufferOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));\n    };\n    return BufferOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar BufferSubscriber = (function (_super) {\n    __extends(BufferSubscriber, _super);\n    function BufferSubscriber(destination, closingNotifier) {\n        _super.call(this, destination);\n        this.buffer = [];\n        this.add(subscribeToResult(this, closingNotifier));\n    }\n    BufferSubscriber.prototype._next = function (value) {\n        this.buffer.push(value);\n    };\n    BufferSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        var buffer = this.buffer;\n        this.buffer = [];\n        this.destination.next(buffer);\n    };\n    return BufferSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=buffer.js.map","import { buffer as higherOrder } from '../operators/buffer';\n/**\n * Buffers the source Observable values until `closingNotifier` emits.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * that array only when another Observable emits.</span>\n *\n * <img src=\"./img/buffer.png\" width=\"100%\">\n *\n * Buffers the incoming Observable values until the given `closingNotifier`\n * Observable emits a value, at which point it emits the buffer on the output\n * Observable and starts a new buffer internally, awaiting the next time\n * `closingNotifier` emits.\n *\n * @example <caption>On every click, emit array of most recent interval events</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var interval = Rx.Observable.interval(1000);\n * var buffered = interval.buffer(clicks);\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link window}\n *\n * @param {Observable<any>} closingNotifier An Observable that signals the\n * buffer to be emitted on the output Observable.\n * @return {Observable<T[]>} An Observable of buffers, which are arrays of\n * values.\n * @method buffer\n * @owner Observable\n */\nexport function buffer(closingNotifier) {\n    return higherOrder(closingNotifier)(this);\n}\n//# sourceMappingURL=buffer.js.map","import { Observable } from '../../Observable';\nimport { buffer } from '../../operator/buffer';\nObservable.prototype.buffer = buffer;\n//# sourceMappingURL=buffer.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Buffers the source Observable values until the size hits the maximum\n * `bufferSize` given.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * that array only when its size reaches `bufferSize`.</span>\n *\n * <img src=\"./img/bufferCount.png\" width=\"100%\">\n *\n * Buffers a number of values from the source Observable by `bufferSize` then\n * emits the buffer and clears it, and starts a new buffer each\n * `startBufferEvery` values. If `startBufferEvery` is not provided or is\n * `null`, then new buffers are started immediately at the start of the source\n * and when each buffer closes and is emitted.\n *\n * @example <caption>Emit the last two click events as an array</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferCount(2);\n * buffered.subscribe(x => console.log(x));\n *\n * @example <caption>On every click, emit the last two click events as an array</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferCount(2, 1);\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link pairwise}\n * @see {@link windowCount}\n *\n * @param {number} bufferSize The maximum size of the buffer emitted.\n * @param {number} [startBufferEvery] Interval at which to start a new buffer.\n * For example if `startBufferEvery` is `2`, then a new buffer will be started\n * on every other value from the source. A new buffer is started at the\n * beginning of the source by default.\n * @return {Observable<T[]>} An Observable of arrays of buffered values.\n * @method bufferCount\n * @owner Observable\n */\nexport function bufferCount(bufferSize, startBufferEvery) {\n    if (startBufferEvery === void 0) { startBufferEvery = null; }\n    return function bufferCountOperatorFunction(source) {\n        return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n    };\n}\nvar BufferCountOperator = (function () {\n    function BufferCountOperator(bufferSize, startBufferEvery) {\n        this.bufferSize = bufferSize;\n        this.startBufferEvery = startBufferEvery;\n        if (!startBufferEvery || bufferSize === startBufferEvery) {\n            this.subscriberClass = BufferCountSubscriber;\n        }\n        else {\n            this.subscriberClass = BufferSkipCountSubscriber;\n        }\n    }\n    BufferCountOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n    };\n    return BufferCountOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar BufferCountSubscriber = (function (_super) {\n    __extends(BufferCountSubscriber, _super);\n    function BufferCountSubscriber(destination, bufferSize) {\n        _super.call(this, destination);\n        this.bufferSize = bufferSize;\n        this.buffer = [];\n    }\n    BufferCountSubscriber.prototype._next = function (value) {\n        var buffer = this.buffer;\n        buffer.push(value);\n        if (buffer.length == this.bufferSize) {\n            this.destination.next(buffer);\n            this.buffer = [];\n        }\n    };\n    BufferCountSubscriber.prototype._complete = function () {\n        var buffer = this.buffer;\n        if (buffer.length > 0) {\n            this.destination.next(buffer);\n        }\n        _super.prototype._complete.call(this);\n    };\n    return BufferCountSubscriber;\n}(Subscriber));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar BufferSkipCountSubscriber = (function (_super) {\n    __extends(BufferSkipCountSubscriber, _super);\n    function BufferSkipCountSubscriber(destination, bufferSize, startBufferEvery) {\n        _super.call(this, destination);\n        this.bufferSize = bufferSize;\n        this.startBufferEvery = startBufferEvery;\n        this.buffers = [];\n        this.count = 0;\n    }\n    BufferSkipCountSubscriber.prototype._next = function (value) {\n        var _a = this, bufferSize = _a.bufferSize, startBufferEvery = _a.startBufferEvery, buffers = _a.buffers, count = _a.count;\n        this.count++;\n        if (count % startBufferEvery === 0) {\n            buffers.push([]);\n        }\n        for (var i = buffers.length; i--;) {\n            var buffer = buffers[i];\n            buffer.push(value);\n            if (buffer.length === bufferSize) {\n                buffers.splice(i, 1);\n                this.destination.next(buffer);\n            }\n        }\n    };\n    BufferSkipCountSubscriber.prototype._complete = function () {\n        var _a = this, buffers = _a.buffers, destination = _a.destination;\n        while (buffers.length > 0) {\n            var buffer = buffers.shift();\n            if (buffer.length > 0) {\n                destination.next(buffer);\n            }\n        }\n        _super.prototype._complete.call(this);\n    };\n    return BufferSkipCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=bufferCount.js.map","import { bufferCount as higherOrder } from '../operators/bufferCount';\n/**\n * Buffers the source Observable values until the size hits the maximum\n * `bufferSize` given.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * that array only when its size reaches `bufferSize`.</span>\n *\n * <img src=\"./img/bufferCount.png\" width=\"100%\">\n *\n * Buffers a number of values from the source Observable by `bufferSize` then\n * emits the buffer and clears it, and starts a new buffer each\n * `startBufferEvery` values. If `startBufferEvery` is not provided or is\n * `null`, then new buffers are started immediately at the start of the source\n * and when each buffer closes and is emitted.\n *\n * @example <caption>Emit the last two click events as an array</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferCount(2);\n * buffered.subscribe(x => console.log(x));\n *\n * @example <caption>On every click, emit the last two click events as an array</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferCount(2, 1);\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link pairwise}\n * @see {@link windowCount}\n *\n * @param {number} bufferSize The maximum size of the buffer emitted.\n * @param {number} [startBufferEvery] Interval at which to start a new buffer.\n * For example if `startBufferEvery` is `2`, then a new buffer will be started\n * on every other value from the source. A new buffer is started at the\n * beginning of the source by default.\n * @return {Observable<T[]>} An Observable of arrays of buffered values.\n * @method bufferCount\n * @owner Observable\n */\nexport function bufferCount(bufferSize, startBufferEvery) {\n    if (startBufferEvery === void 0) { startBufferEvery = null; }\n    return higherOrder(bufferSize, startBufferEvery)(this);\n}\n//# sourceMappingURL=bufferCount.js.map","import { Observable } from '../../Observable';\nimport { bufferCount } from '../../operator/bufferCount';\nObservable.prototype.bufferCount = bufferCount;\n//# sourceMappingURL=bufferCount.js.map","import { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { isScheduler } from '../util/isScheduler';\n/* tslint:enable:max-line-length */\n/**\n * Buffers the source Observable values for a specific time period.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * those arrays periodically in time.</span>\n *\n * <img src=\"./img/bufferTime.png\" width=\"100%\">\n *\n * Buffers values from the source for a specific time duration `bufferTimeSpan`.\n * Unless the optional argument `bufferCreationInterval` is given, it emits and\n * resets the buffer every `bufferTimeSpan` milliseconds. If\n * `bufferCreationInterval` is given, this operator opens the buffer every\n * `bufferCreationInterval` milliseconds and closes (emits and resets) the\n * buffer every `bufferTimeSpan` milliseconds. When the optional argument\n * `maxBufferSize` is specified, the buffer will be closed either after\n * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements.\n *\n * @example <caption>Every second, emit an array of the recent click events</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferTime(1000);\n * buffered.subscribe(x => console.log(x));\n *\n * @example <caption>Every 5 seconds, emit the click events from the next 2 seconds</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferTime(2000, 5000);\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link windowTime}\n *\n * @param {number} bufferTimeSpan The amount of time to fill each buffer array.\n * @param {number} [bufferCreationInterval] The interval at which to start new\n * buffers.\n * @param {number} [maxBufferSize] The maximum buffer size.\n * @param {Scheduler} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine buffer boundaries.\n * @return {Observable<T[]>} An observable of arrays of buffered values.\n * @method bufferTime\n * @owner Observable\n */\nexport function bufferTime(bufferTimeSpan) {\n    var length = arguments.length;\n    var scheduler = async;\n    if (isScheduler(arguments[arguments.length - 1])) {\n        scheduler = arguments[arguments.length - 1];\n        length--;\n    }\n    var bufferCreationInterval = null;\n    if (length >= 2) {\n        bufferCreationInterval = arguments[1];\n    }\n    var maxBufferSize = Number.POSITIVE_INFINITY;\n    if (length >= 3) {\n        maxBufferSize = arguments[2];\n    }\n    return function bufferTimeOperatorFunction(source) {\n        return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));\n    };\n}\nvar BufferTimeOperator = (function () {\n    function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n        this.bufferTimeSpan = bufferTimeSpan;\n        this.bufferCreationInterval = bufferCreationInterval;\n        this.maxBufferSize = maxBufferSize;\n        this.scheduler = scheduler;\n    }\n    BufferTimeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler));\n    };\n    return BufferTimeOperator;\n}());\nvar Context = (function () {\n    function Context() {\n        this.buffer = [];\n    }\n    return Context;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar BufferTimeSubscriber = (function (_super) {\n    __extends(BufferTimeSubscriber, _super);\n    function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n        _super.call(this, destination);\n        this.bufferTimeSpan = bufferTimeSpan;\n        this.bufferCreationInterval = bufferCreationInterval;\n        this.maxBufferSize = maxBufferSize;\n        this.scheduler = scheduler;\n        this.contexts = [];\n        var context = this.openContext();\n        this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;\n        if (this.timespanOnly) {\n            var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan };\n            this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n        }\n        else {\n            var closeState = { subscriber: this, context: context };\n            var creationState = { bufferTimeSpan: bufferTimeSpan, bufferCreationInterval: bufferCreationInterval, subscriber: this, scheduler: scheduler };\n            this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState));\n            this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState));\n        }\n    }\n    BufferTimeSubscriber.prototype._next = function (value) {\n        var contexts = this.contexts;\n        var len = contexts.length;\n        var filledBufferContext;\n        for (var i = 0; i < len; i++) {\n            var context = contexts[i];\n            var buffer = context.buffer;\n            buffer.push(value);\n            if (buffer.length == this.maxBufferSize) {\n                filledBufferContext = context;\n            }\n        }\n        if (filledBufferContext) {\n            this.onBufferFull(filledBufferContext);\n        }\n    };\n    BufferTimeSubscriber.prototype._error = function (err) {\n        this.contexts.length = 0;\n        _super.prototype._error.call(this, err);\n    };\n    BufferTimeSubscriber.prototype._complete = function () {\n        var _a = this, contexts = _a.contexts, destination = _a.destination;\n        while (contexts.length > 0) {\n            var context = contexts.shift();\n            destination.next(context.buffer);\n        }\n        _super.prototype._complete.call(this);\n    };\n    /** @deprecated internal use only */ BufferTimeSubscriber.prototype._unsubscribe = function () {\n        this.contexts = null;\n    };\n    BufferTimeSubscriber.prototype.onBufferFull = function (context) {\n        this.closeContext(context);\n        var closeAction = context.closeAction;\n        closeAction.unsubscribe();\n        this.remove(closeAction);\n        if (!this.closed && this.timespanOnly) {\n            context = this.openContext();\n            var bufferTimeSpan = this.bufferTimeSpan;\n            var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan };\n            this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n        }\n    };\n    BufferTimeSubscriber.prototype.openContext = function () {\n        var context = new Context();\n        this.contexts.push(context);\n        return context;\n    };\n    BufferTimeSubscriber.prototype.closeContext = function (context) {\n        this.destination.next(context.buffer);\n        var contexts = this.contexts;\n        var spliceIndex = contexts ? contexts.indexOf(context) : -1;\n        if (spliceIndex >= 0) {\n            contexts.splice(contexts.indexOf(context), 1);\n        }\n    };\n    return BufferTimeSubscriber;\n}(Subscriber));\nfunction dispatchBufferTimeSpanOnly(state) {\n    var subscriber = state.subscriber;\n    var prevContext = state.context;\n    if (prevContext) {\n        subscriber.closeContext(prevContext);\n    }\n    if (!subscriber.closed) {\n        state.context = subscriber.openContext();\n        state.context.closeAction = this.schedule(state, state.bufferTimeSpan);\n    }\n}\nfunction dispatchBufferCreation(state) {\n    var bufferCreationInterval = state.bufferCreationInterval, bufferTimeSpan = state.bufferTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler;\n    var context = subscriber.openContext();\n    var action = this;\n    if (!subscriber.closed) {\n        subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber: subscriber, context: context }));\n        action.schedule(state, bufferCreationInterval);\n    }\n}\nfunction dispatchBufferClose(arg) {\n    var subscriber = arg.subscriber, context = arg.context;\n    subscriber.closeContext(context);\n}\n//# sourceMappingURL=bufferTime.js.map","import { async } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { bufferTime as higherOrder } from '../operators/bufferTime';\n/* tslint:enable:max-line-length */\n/**\n * Buffers the source Observable values for a specific time period.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * those arrays periodically in time.</span>\n *\n * <img src=\"./img/bufferTime.png\" width=\"100%\">\n *\n * Buffers values from the source for a specific time duration `bufferTimeSpan`.\n * Unless the optional argument `bufferCreationInterval` is given, it emits and\n * resets the buffer every `bufferTimeSpan` milliseconds. If\n * `bufferCreationInterval` is given, this operator opens the buffer every\n * `bufferCreationInterval` milliseconds and closes (emits and resets) the\n * buffer every `bufferTimeSpan` milliseconds. When the optional argument\n * `maxBufferSize` is specified, the buffer will be closed either after\n * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements.\n *\n * @example <caption>Every second, emit an array of the recent click events</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferTime(1000);\n * buffered.subscribe(x => console.log(x));\n *\n * @example <caption>Every 5 seconds, emit the click events from the next 2 seconds</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferTime(2000, 5000);\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link windowTime}\n *\n * @param {number} bufferTimeSpan The amount of time to fill each buffer array.\n * @param {number} [bufferCreationInterval] The interval at which to start new\n * buffers.\n * @param {number} [maxBufferSize] The maximum buffer size.\n * @param {Scheduler} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine buffer boundaries.\n * @return {Observable<T[]>} An observable of arrays of buffered values.\n * @method bufferTime\n * @owner Observable\n */\nexport function bufferTime(bufferTimeSpan) {\n    var length = arguments.length;\n    var scheduler = async;\n    if (isScheduler(arguments[arguments.length - 1])) {\n        scheduler = arguments[arguments.length - 1];\n        length--;\n    }\n    var bufferCreationInterval = null;\n    if (length >= 2) {\n        bufferCreationInterval = arguments[1];\n    }\n    var maxBufferSize = Number.POSITIVE_INFINITY;\n    if (length >= 3) {\n        maxBufferSize = arguments[2];\n    }\n    return higherOrder(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler)(this);\n}\n//# sourceMappingURL=bufferTime.js.map","import { Observable } from '../../Observable';\nimport { bufferTime } from '../../operator/bufferTime';\nObservable.prototype.bufferTime = bufferTime;\n//# sourceMappingURL=bufferTime.js.map","import { Subscription } from '../Subscription';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\n/**\n * Buffers the source Observable values starting from an emission from\n * `openings` and ending when the output of `closingSelector` emits.\n *\n * <span class=\"informal\">Collects values from the past as an array. Starts\n * collecting only when `opening` emits, and calls the `closingSelector`\n * function to get an Observable that tells when to close the buffer.</span>\n *\n * <img src=\"./img/bufferToggle.png\" width=\"100%\">\n *\n * Buffers values from the source by opening the buffer via signals from an\n * Observable provided to `openings`, and closing and sending the buffers when\n * a Subscribable or Promise returned by the `closingSelector` function emits.\n *\n * @example <caption>Every other second, emit the click events from the next 500ms</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var openings = Rx.Observable.interval(1000);\n * var buffered = clicks.bufferToggle(openings, i =>\n *   i % 2 ? Rx.Observable.interval(500) : Rx.Observable.empty()\n * );\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferWhen}\n * @see {@link windowToggle}\n *\n * @param {SubscribableOrPromise<O>} openings A Subscribable or Promise of notifications to start new\n * buffers.\n * @param {function(value: O): SubscribableOrPromise} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns a Subscribable or Promise,\n * which, when it emits, signals that the associated buffer should be emitted\n * and cleared.\n * @return {Observable<T[]>} An observable of arrays of buffered values.\n * @method bufferToggle\n * @owner Observable\n */\nexport function bufferToggle(openings, closingSelector) {\n    return function bufferToggleOperatorFunction(source) {\n        return source.lift(new BufferToggleOperator(openings, closingSelector));\n    };\n}\nvar BufferToggleOperator = (function () {\n    function BufferToggleOperator(openings, closingSelector) {\n        this.openings = openings;\n        this.closingSelector = closingSelector;\n    }\n    BufferToggleOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));\n    };\n    return BufferToggleOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar BufferToggleSubscriber = (function (_super) {\n    __extends(BufferToggleSubscriber, _super);\n    function BufferToggleSubscriber(destination, openings, closingSelector) {\n        _super.call(this, destination);\n        this.openings = openings;\n        this.closingSelector = closingSelector;\n        this.contexts = [];\n        this.add(subscribeToResult(this, openings));\n    }\n    BufferToggleSubscriber.prototype._next = function (value) {\n        var contexts = this.contexts;\n        var len = contexts.length;\n        for (var i = 0; i < len; i++) {\n            contexts[i].buffer.push(value);\n        }\n    };\n    BufferToggleSubscriber.prototype._error = function (err) {\n        var contexts = this.contexts;\n        while (contexts.length > 0) {\n            var context = contexts.shift();\n            context.subscription.unsubscribe();\n            context.buffer = null;\n            context.subscription = null;\n        }\n        this.contexts = null;\n        _super.prototype._error.call(this, err);\n    };\n    BufferToggleSubscriber.prototype._complete = function () {\n        var contexts = this.contexts;\n        while (contexts.length > 0) {\n            var context = contexts.shift();\n            this.destination.next(context.buffer);\n            context.subscription.unsubscribe();\n            context.buffer = null;\n            context.subscription = null;\n        }\n        this.contexts = null;\n        _super.prototype._complete.call(this);\n    };\n    BufferToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);\n    };\n    BufferToggleSubscriber.prototype.notifyComplete = function (innerSub) {\n        this.closeBuffer(innerSub.context);\n    };\n    BufferToggleSubscriber.prototype.openBuffer = function (value) {\n        try {\n            var closingSelector = this.closingSelector;\n            var closingNotifier = closingSelector.call(this, value);\n            if (closingNotifier) {\n                this.trySubscribe(closingNotifier);\n            }\n        }\n        catch (err) {\n            this._error(err);\n        }\n    };\n    BufferToggleSubscriber.prototype.closeBuffer = function (context) {\n        var contexts = this.contexts;\n        if (contexts && context) {\n            var buffer = context.buffer, subscription = context.subscription;\n            this.destination.next(buffer);\n            contexts.splice(contexts.indexOf(context), 1);\n            this.remove(subscription);\n            subscription.unsubscribe();\n        }\n    };\n    BufferToggleSubscriber.prototype.trySubscribe = function (closingNotifier) {\n        var contexts = this.contexts;\n        var buffer = [];\n        var subscription = new Subscription();\n        var context = { buffer: buffer, subscription: subscription };\n        contexts.push(context);\n        var innerSubscription = subscribeToResult(this, closingNotifier, context);\n        if (!innerSubscription || innerSubscription.closed) {\n            this.closeBuffer(context);\n        }\n        else {\n            innerSubscription.context = context;\n            this.add(innerSubscription);\n            subscription.add(innerSubscription);\n        }\n    };\n    return BufferToggleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=bufferToggle.js.map","import { bufferToggle as higherOrder } from '../operators/bufferToggle';\n/**\n * Buffers the source Observable values starting from an emission from\n * `openings` and ending when the output of `closingSelector` emits.\n *\n * <span class=\"informal\">Collects values from the past as an array. Starts\n * collecting only when `opening` emits, and calls the `closingSelector`\n * function to get an Observable that tells when to close the buffer.</span>\n *\n * <img src=\"./img/bufferToggle.png\" width=\"100%\">\n *\n * Buffers values from the source by opening the buffer via signals from an\n * Observable provided to `openings`, and closing and sending the buffers when\n * a Subscribable or Promise returned by the `closingSelector` function emits.\n *\n * @example <caption>Every other second, emit the click events from the next 500ms</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var openings = Rx.Observable.interval(1000);\n * var buffered = clicks.bufferToggle(openings, i =>\n *   i % 2 ? Rx.Observable.interval(500) : Rx.Observable.empty()\n * );\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferWhen}\n * @see {@link windowToggle}\n *\n * @param {SubscribableOrPromise<O>} openings A Subscribable or Promise of notifications to start new\n * buffers.\n * @param {function(value: O): SubscribableOrPromise} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns a Subscribable or Promise,\n * which, when it emits, signals that the associated buffer should be emitted\n * and cleared.\n * @return {Observable<T[]>} An observable of arrays of buffered values.\n * @method bufferToggle\n * @owner Observable\n */\nexport function bufferToggle(openings, closingSelector) {\n    return higherOrder(openings, closingSelector)(this);\n}\n//# sourceMappingURL=bufferToggle.js.map","import { Observable } from '../../Observable';\nimport { bufferToggle } from '../../operator/bufferToggle';\nObservable.prototype.bufferToggle = bufferToggle;\n//# sourceMappingURL=bufferToggle.js.map","import { Subscription } from '../Subscription';\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Buffers the source Observable values, using a factory function of closing\n * Observables to determine when to close, emit, and reset the buffer.\n *\n * <span class=\"informal\">Collects values from the past as an array. When it\n * starts collecting values, it calls a function that returns an Observable that\n * tells when to close the buffer and restart collecting.</span>\n *\n * <img src=\"./img/bufferWhen.png\" width=\"100%\">\n *\n * Opens a buffer immediately, then closes the buffer when the observable\n * returned by calling `closingSelector` function emits a value. When it closes\n * the buffer, it immediately opens a new buffer and repeats the process.\n *\n * @example <caption>Emit an array of the last clicks every [1-5] random seconds</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferWhen(() =>\n *   Rx.Observable.interval(1000 + Math.random() * 4000)\n * );\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link windowWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals buffer closure.\n * @return {Observable<T[]>} An observable of arrays of buffered values.\n * @method bufferWhen\n * @owner Observable\n */\nexport function bufferWhen(closingSelector) {\n    return function (source) {\n        return source.lift(new BufferWhenOperator(closingSelector));\n    };\n}\nvar BufferWhenOperator = (function () {\n    function BufferWhenOperator(closingSelector) {\n        this.closingSelector = closingSelector;\n    }\n    BufferWhenOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));\n    };\n    return BufferWhenOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar BufferWhenSubscriber = (function (_super) {\n    __extends(BufferWhenSubscriber, _super);\n    function BufferWhenSubscriber(destination, closingSelector) {\n        _super.call(this, destination);\n        this.closingSelector = closingSelector;\n        this.subscribing = false;\n        this.openBuffer();\n    }\n    BufferWhenSubscriber.prototype._next = function (value) {\n        this.buffer.push(value);\n    };\n    BufferWhenSubscriber.prototype._complete = function () {\n        var buffer = this.buffer;\n        if (buffer) {\n            this.destination.next(buffer);\n        }\n        _super.prototype._complete.call(this);\n    };\n    /** @deprecated internal use only */ BufferWhenSubscriber.prototype._unsubscribe = function () {\n        this.buffer = null;\n        this.subscribing = false;\n    };\n    BufferWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.openBuffer();\n    };\n    BufferWhenSubscriber.prototype.notifyComplete = function () {\n        if (this.subscribing) {\n            this.complete();\n        }\n        else {\n            this.openBuffer();\n        }\n    };\n    BufferWhenSubscriber.prototype.openBuffer = function () {\n        var closingSubscription = this.closingSubscription;\n        if (closingSubscription) {\n            this.remove(closingSubscription);\n            closingSubscription.unsubscribe();\n        }\n        var buffer = this.buffer;\n        if (this.buffer) {\n            this.destination.next(buffer);\n        }\n        this.buffer = [];\n        var closingNotifier = tryCatch(this.closingSelector)();\n        if (closingNotifier === errorObject) {\n            this.error(errorObject.e);\n        }\n        else {\n            closingSubscription = new Subscription();\n            this.closingSubscription = closingSubscription;\n            this.add(closingSubscription);\n            this.subscribing = true;\n            closingSubscription.add(subscribeToResult(this, closingNotifier));\n            this.subscribing = false;\n        }\n    };\n    return BufferWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=bufferWhen.js.map","import { bufferWhen as higherOrder } from '../operators/bufferWhen';\n/**\n * Buffers the source Observable values, using a factory function of closing\n * Observables to determine when to close, emit, and reset the buffer.\n *\n * <span class=\"informal\">Collects values from the past as an array. When it\n * starts collecting values, it calls a function that returns an Observable that\n * tells when to close the buffer and restart collecting.</span>\n *\n * <img src=\"./img/bufferWhen.png\" width=\"100%\">\n *\n * Opens a buffer immediately, then closes the buffer when the observable\n * returned by calling `closingSelector` function emits a value. When it closes\n * the buffer, it immediately opens a new buffer and repeats the process.\n *\n * @example <caption>Emit an array of the last clicks every [1-5] random seconds</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var buffered = clicks.bufferWhen(() =>\n *   Rx.Observable.interval(1000 + Math.random() * 4000)\n * );\n * buffered.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link windowWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals buffer closure.\n * @return {Observable<T[]>} An observable of arrays of buffered values.\n * @method bufferWhen\n * @owner Observable\n */\nexport function bufferWhen(closingSelector) {\n    return higherOrder(closingSelector)(this);\n}\n//# sourceMappingURL=bufferWhen.js.map","import { Observable } from '../../Observable';\nimport { bufferWhen } from '../../operator/bufferWhen';\nObservable.prototype.bufferWhen = bufferWhen;\n//# sourceMappingURL=bufferWhen.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * <img src=\"./img/catch.png\" width=\"100%\">\n *\n * @example <caption>Continues with a different Observable when there's an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n *   .map(n => {\n * \t   if (n == 4) {\n * \t     throw 'four!';\n *     }\n *\t   return n;\n *   })\n *   .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V'))\n *   .subscribe(x => console.log(x));\n *   // 1, 2, 3, I, II, III, IV, V\n *\n * @example <caption>Retries the caught source Observable again in case of error, similar to retry() operator</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n *   .map(n => {\n * \t   if (n === 4) {\n * \t     throw 'four!';\n *     }\n * \t   return n;\n *   })\n *   .catch((err, caught) => caught)\n *   .take(30)\n *   .subscribe(x => console.log(x));\n *   // 1, 2, 3, 1, 2, 3, ...\n *\n * @example <caption>Throws a new error when the source Observable throws an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n *   .map(n => {\n *     if (n == 4) {\n *       throw 'four!';\n *     }\n *     return n;\n *   })\n *   .catch(err => {\n *     throw 'error in source. Details: ' + err;\n *   })\n *   .subscribe(\n *     x => console.log(x),\n *     err => console.log(err)\n *   );\n *   // 1, 2, 3, error in source. Details: four!\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n *  is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n *  is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n *  catch `selector` function.\n * @name catchError\n */\nexport function catchError(selector) {\n    return function catchErrorOperatorFunction(source) {\n        var operator = new CatchOperator(selector);\n        var caught = source.lift(operator);\n        return (operator.caught = caught);\n    };\n}\nvar CatchOperator = (function () {\n    function CatchOperator(selector) {\n        this.selector = selector;\n    }\n    CatchOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n    };\n    return CatchOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar CatchSubscriber = (function (_super) {\n    __extends(CatchSubscriber, _super);\n    function CatchSubscriber(destination, selector, caught) {\n        _super.call(this, destination);\n        this.selector = selector;\n        this.caught = caught;\n    }\n    // NOTE: overriding `error` instead of `_error` because we don't want\n    // to have this flag this subscriber as `isStopped`. We can mimic the\n    // behavior of the RetrySubscriber (from the `retry` operator), where\n    // we unsubscribe from our source chain, reset our Subscriber flags,\n    // then subscribe to the selector result.\n    CatchSubscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            var result = void 0;\n            try {\n                result = this.selector(err, this.caught);\n            }\n            catch (err2) {\n                _super.prototype.error.call(this, err2);\n                return;\n            }\n            this._unsubscribeAndRecycle();\n            this.add(subscribeToResult(this, result));\n        }\n    };\n    return CatchSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=catchError.js.map","import { catchError as higherOrder } from '../operators/catchError';\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * <img src=\"./img/catch.png\" width=\"100%\">\n *\n * @example <caption>Continues with a different Observable when there's an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n *   .map(n => {\n * \t   if (n == 4) {\n * \t     throw 'four!';\n *     }\n *\t   return n;\n *   })\n *   .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V'))\n *   .subscribe(x => console.log(x));\n *   // 1, 2, 3, I, II, III, IV, V\n *\n * @example <caption>Retries the caught source Observable again in case of error, similar to retry() operator</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n *   .map(n => {\n * \t   if (n === 4) {\n * \t     throw 'four!';\n *     }\n * \t   return n;\n *   })\n *   .catch((err, caught) => caught)\n *   .take(30)\n *   .subscribe(x => console.log(x));\n *   // 1, 2, 3, 1, 2, 3, ...\n *\n * @example <caption>Throws a new error when the source Observable throws an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n *   .map(n => {\n *     if (n == 4) {\n *       throw 'four!';\n *     }\n *     return n;\n *   })\n *   .catch(err => {\n *     throw 'error in source. Details: ' + err;\n *   })\n *   .subscribe(\n *     x => console.log(x),\n *     err => console.log(err)\n *   );\n *   // 1, 2, 3, error in source. Details: four!\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n *  is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n *  is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n *  catch `selector` function.\n * @method catch\n * @name catch\n * @owner Observable\n */\nexport function _catch(selector) {\n    return higherOrder(selector)(this);\n}\n//# sourceMappingURL=catch.js.map","import { Observable } from '../../Observable';\nimport { _catch } from '../../operator/catch';\nObservable.prototype.catch = _catch;\nObservable.prototype._catch = _catch;\n//# sourceMappingURL=catch.js.map","import { CombineLatestOperator } from '../operators/combineLatest';\nexport function combineAll(project) {\n    return function (source) { return source.lift(new CombineLatestOperator(project)); };\n}\n//# sourceMappingURL=combineAll.js.map","import { combineAll as higherOrder } from '../operators/combineAll';\n/**\n * Converts a higher-order Observable into a first-order Observable by waiting\n * for the outer Observable to complete, then applying {@link combineLatest}.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by applying\n * {@link combineLatest} when the Observable-of-Observables completes.</span>\n *\n * <img src=\"./img/combineAll.png\" width=\"100%\">\n *\n * Takes an Observable of Observables, and collects all Observables from it.\n * Once the outer Observable completes, it subscribes to all collected\n * Observables and combines their values using the {@link combineLatest}\n * strategy, such that:\n * - Every time an inner Observable emits, the output Observable emits.\n * - When the returned observable emits, it emits all of the latest values by:\n *   - If a `project` function is provided, it is called with each recent value\n *     from each inner Observable in whatever order they arrived, and the result\n *     of the `project` function is what is emitted by the output Observable.\n *   - If there is no `project` function, an array of all of the most recent\n *     values is emitted by the output Observable.\n *\n * @example <caption>Map two click events to a finite interval Observable, then apply combineAll</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map(ev =>\n *   Rx.Observable.interval(Math.random()*2000).take(3)\n * ).take(2);\n * var result = higherOrder.combineAll();\n * result.subscribe(x => console.log(x));\n *\n * @see {@link combineLatest}\n * @see {@link mergeAll}\n *\n * @param {function} [project] An optional function to map the most recent\n * values from each inner Observable into a new result. Takes each of the most\n * recent values from each collected inner Observable as arguments, in order.\n * @return {Observable} An Observable of projected results or arrays of recent\n * values.\n * @method combineAll\n * @owner Observable\n */\nexport function combineAll(project) {\n    return higherOrder(project)(this);\n}\n//# sourceMappingURL=combineAll.js.map","import { Observable } from '../../Observable';\nimport { combineAll } from '../../operator/combineAll';\nObservable.prototype.combineAll = combineAll;\n//# sourceMappingURL=combineAll.js.map","import { combineLatest as higherOrder } from '../operators/combineLatest';\n/* tslint:enable:max-line-length */\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * <span class=\"informal\">Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.</span>\n *\n * <img src=\"./img/combineLatest.png\" width=\"100%\">\n *\n * `combineLatest` combines the values from this Observable with values from\n * Observables passed as arguments. This is done by subscribing to each\n * Observable, in order, and collecting an array of each of the most recent\n * values any time any of the input Observables emits, then either taking that\n * array and passing it as arguments to an optional `project` function and\n * emitting the return value of that, or just emitting the array of recent\n * values directly if there is no `project` function.\n *\n * @example <caption>Dynamically calculate the Body-Mass Index from an Observable of weight and one for height</caption>\n * var weight = Rx.Observable.of(70, 72, 76, 79, 75);\n * var height = Rx.Observable.of(1.76, 1.77, 1.78);\n * var bmi = weight.combineLatest(height, (w, h) => w / (h * h));\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method combineLatest\n * @owner Observable\n */\nexport function combineLatest() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    return higherOrder.apply(void 0, observables)(this);\n}\n//# sourceMappingURL=combineLatest.js.map","import { Observable } from '../../Observable';\nimport { combineLatest } from '../../operator/combineLatest';\nObservable.prototype.combineLatest = combineLatest;\n//# sourceMappingURL=combineLatest.js.map","import { concat as concatStatic } from '../observable/concat';\nexport { concat as concatStatic } from '../observable/concat';\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from every\n * given input Observable after the current Observable.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * <img src=\"./img/concat.png\" width=\"100%\">\n *\n * Joins this Observable with multiple other Observables by subscribing to them\n * one at a time, starting with the source, and merging their results into the\n * output Observable. Will wait for each Observable to complete before moving\n * on to the next.\n *\n * @example <caption>Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10</caption>\n * var timer = Rx.Observable.interval(1000).take(4);\n * var sequence = Rx.Observable.range(1, 10);\n * var result = timer.concat(sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n *\n * @example <caption>Concatenate 3 Observables</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var result = timer1.concat(timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n *\n * @param {ObservableInput} other An input Observable to concatenate after the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @method concat\n * @owner Observable\n */\nexport function concat() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    return function (source) { return source.lift.call(concatStatic.apply(void 0, [source].concat(observables))); };\n}\n//# sourceMappingURL=concat.js.map","import { concat as higherOrder } from '../operators/concat';\nexport { concat as concatStatic } from '../observable/concat';\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from every\n * given input Observable after the current Observable.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * <img src=\"./img/concat.png\" width=\"100%\">\n *\n * Joins this Observable with multiple other Observables by subscribing to them\n * one at a time, starting with the source, and merging their results into the\n * output Observable. Will wait for each Observable to complete before moving\n * on to the next.\n *\n * @example <caption>Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10</caption>\n * var timer = Rx.Observable.interval(1000).take(4);\n * var sequence = Rx.Observable.range(1, 10);\n * var result = timer.concat(sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n *\n * @example <caption>Concatenate 3 Observables</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var result = timer1.concat(timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n *\n * @param {ObservableInput} other An input Observable to concatenate after the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @method concat\n * @owner Observable\n */\nexport function concat() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    return higherOrder.apply(void 0, observables)(this);\n}\n//# sourceMappingURL=concat.js.map","import { Observable } from '../../Observable';\nimport { concat } from '../../operator/concat';\nObservable.prototype.concat = concat;\n//# sourceMappingURL=concat.js.map","import { concatAll as higherOrder } from '../operators/concatAll';\n/* tslint:enable:max-line-length */\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * <img src=\"./img/concatAll.png\" width=\"100%\">\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4));\n * var firstOrder = higherOrder.concatAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nexport function concatAll() {\n    return higherOrder()(this);\n}\n//# sourceMappingURL=concatAll.js.map","import { Observable } from '../../Observable';\nimport { concatAll } from '../../operator/concatAll';\nObservable.prototype.concatAll = concatAll;\n//# sourceMappingURL=concatAll.js.map","import { mergeMap } from './mergeMap';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.</span>\n *\n * <img src=\"./img/concatMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.concatMap(ev => Rx.Observable.interval(1000).take(4));\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking values from each projected inner\n * Observable sequentially.\n * @method concatMap\n * @owner Observable\n */\nexport function concatMap(project, resultSelector) {\n    return mergeMap(project, resultSelector, 1);\n}\n//# sourceMappingURL=concatMap.js.map","import { concatMap as higherOrderConcatMap } from '../operators/concatMap';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.</span>\n *\n * <img src=\"./img/concatMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.concatMap(ev => Rx.Observable.interval(1000).take(4));\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking values from each projected inner\n * Observable sequentially.\n * @method concatMap\n * @owner Observable\n */\nexport function concatMap(project, resultSelector) {\n    return higherOrderConcatMap(project, resultSelector)(this);\n}\n//# sourceMappingURL=concatMap.js.map","import { Observable } from '../../Observable';\nimport { concatMap } from '../../operator/concatMap';\nObservable.prototype.concatMap = concatMap;\n//# sourceMappingURL=concatMap.js.map","import { concatMap } from './concatMap';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in a serialized fashion on the output Observable.\n *\n * <span class=\"informal\">It's like {@link concatMap}, but maps each value\n * always to the same inner Observable.</span>\n *\n * <img src=\"./img/concatMapTo.png\" width=\"100%\">\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. Each new `innerObservable`\n * instance emitted on the output Observable is concatenated with the previous\n * `innerObservable` instance.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter\n * set to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.concatMapTo(Rx.Observable.interval(1000).take(4));\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link mergeMapTo}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An observable of values merged together by joining the\n * passed observable with itself, one after the other, for each value emitted\n * from the source.\n * @method concatMapTo\n * @owner Observable\n */\nexport function concatMapTo(innerObservable, resultSelector) {\n    return concatMap(function () { return innerObservable; }, resultSelector);\n}\n//# sourceMappingURL=concatMapTo.js.map","import { concatMapTo as higherOrder } from '../operators/concatMapTo';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in a serialized fashion on the output Observable.\n *\n * <span class=\"informal\">It's like {@link concatMap}, but maps each value\n * always to the same inner Observable.</span>\n *\n * <img src=\"./img/concatMapTo.png\" width=\"100%\">\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. Each new `innerObservable`\n * instance emitted on the output Observable is concatenated with the previous\n * `innerObservable` instance.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter\n * set to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.concatMapTo(Rx.Observable.interval(1000).take(4));\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link mergeMapTo}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An observable of values merged together by joining the\n * passed observable with itself, one after the other, for each value emitted\n * from the source.\n * @method concatMapTo\n * @owner Observable\n */\nexport function concatMapTo(innerObservable, resultSelector) {\n    return higherOrder(innerObservable, resultSelector)(this);\n}\n//# sourceMappingURL=concatMapTo.js.map","import { Observable } from '../../Observable';\nimport { concatMapTo } from '../../operator/concatMapTo';\nObservable.prototype.concatMapTo = concatMapTo;\n//# sourceMappingURL=concatMapTo.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Counts the number of emissions on the source and emits that number when the\n * source completes.\n *\n * <span class=\"informal\">Tells how many values were emitted, when the source\n * completes.</span>\n *\n * <img src=\"./img/count.png\" width=\"100%\">\n *\n * `count` transforms an Observable that emits values into an Observable that\n * emits a single value that represents the number of values emitted by the\n * source Observable. If the source Observable terminates with an error, `count`\n * will pass this error notification along without emitting a value first. If\n * the source Observable does not terminate at all, `count` will neither emit\n * a value nor terminate. This operator takes an optional `predicate` function\n * as argument, in which case the output emission will represent the number of\n * source values that matched `true` with the `predicate`.\n *\n * @example <caption>Counts how many seconds have passed before the first click happened</caption>\n * var seconds = Rx.Observable.interval(1000);\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var secondsBeforeClick = seconds.takeUntil(clicks);\n * var result = secondsBeforeClick.count();\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Counts how many odd numbers are there between 1 and 7</caption>\n * var numbers = Rx.Observable.range(1, 7);\n * var result = numbers.count(i => i % 2 === 1);\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 4\n *\n * @see {@link max}\n * @see {@link min}\n * @see {@link reduce}\n *\n * @param {function(value: T, i: number, source: Observable<T>): boolean} [predicate] A\n * boolean function to select what values are to be counted. It is provided with\n * arguments of:\n * - `value`: the value from the source Observable.\n * - `index`: the (zero-based) \"index\" of the value from the source Observable.\n * - `source`: the source Observable instance itself.\n * @return {Observable} An Observable of one number that represents the count as\n * described above.\n * @method count\n * @owner Observable\n */\nexport function count(predicate) {\n    return function (source) { return source.lift(new CountOperator(predicate, source)); };\n}\nvar CountOperator = (function () {\n    function CountOperator(predicate, source) {\n        this.predicate = predicate;\n        this.source = source;\n    }\n    CountOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n    };\n    return CountOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar CountSubscriber = (function (_super) {\n    __extends(CountSubscriber, _super);\n    function CountSubscriber(destination, predicate, source) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.source = source;\n        this.count = 0;\n        this.index = 0;\n    }\n    CountSubscriber.prototype._next = function (value) {\n        if (this.predicate) {\n            this._tryPredicate(value);\n        }\n        else {\n            this.count++;\n        }\n    };\n    CountSubscriber.prototype._tryPredicate = function (value) {\n        var result;\n        try {\n            result = this.predicate(value, this.index++, this.source);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        if (result) {\n            this.count++;\n        }\n    };\n    CountSubscriber.prototype._complete = function () {\n        this.destination.next(this.count);\n        this.destination.complete();\n    };\n    return CountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=count.js.map","import { count as higherOrder } from '../operators/count';\n/**\n * Counts the number of emissions on the source and emits that number when the\n * source completes.\n *\n * <span class=\"informal\">Tells how many values were emitted, when the source\n * completes.</span>\n *\n * <img src=\"./img/count.png\" width=\"100%\">\n *\n * `count` transforms an Observable that emits values into an Observable that\n * emits a single value that represents the number of values emitted by the\n * source Observable. If the source Observable terminates with an error, `count`\n * will pass this error notification along without emitting a value first. If\n * the source Observable does not terminate at all, `count` will neither emit\n * a value nor terminate. This operator takes an optional `predicate` function\n * as argument, in which case the output emission will represent the number of\n * source values that matched `true` with the `predicate`.\n *\n * @example <caption>Counts how many seconds have passed before the first click happened</caption>\n * var seconds = Rx.Observable.interval(1000);\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var secondsBeforeClick = seconds.takeUntil(clicks);\n * var result = secondsBeforeClick.count();\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Counts how many odd numbers are there between 1 and 7</caption>\n * var numbers = Rx.Observable.range(1, 7);\n * var result = numbers.count(i => i % 2 === 1);\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 4\n *\n * @see {@link max}\n * @see {@link min}\n * @see {@link reduce}\n *\n * @param {function(value: T, i: number, source: Observable<T>): boolean} [predicate] A\n * boolean function to select what values are to be counted. It is provided with\n * arguments of:\n * - `value`: the value from the source Observable.\n * - `index`: the (zero-based) \"index\" of the value from the source Observable.\n * - `source`: the source Observable instance itself.\n * @return {Observable} An Observable of one number that represents the count as\n * described above.\n * @method count\n * @owner Observable\n */\nexport function count(predicate) {\n    return higherOrder(predicate)(this);\n}\n//# sourceMappingURL=count.js.map","import { Observable } from '../../Observable';\nimport { count } from '../../operator/count';\nObservable.prototype.count = count;\n//# sourceMappingURL=count.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Converts an Observable of {@link Notification} objects into the emissions\n * that they represent.\n *\n * <span class=\"informal\">Unwraps {@link Notification} objects as actual `next`,\n * `error` and `complete` emissions. The opposite of {@link materialize}.</span>\n *\n * <img src=\"./img/dematerialize.png\" width=\"100%\">\n *\n * `dematerialize` is assumed to operate an Observable that only emits\n * {@link Notification} objects as `next` emissions, and does not emit any\n * `error`. Such Observable is the output of a `materialize` operation. Those\n * notifications are then unwrapped using the metadata they contain, and emitted\n * as `next`, `error`, and `complete` on the output Observable.\n *\n * Use this operator in conjunction with {@link materialize}.\n *\n * @example <caption>Convert an Observable of Notifications to an actual Observable</caption>\n * var notifA = new Rx.Notification('N', 'A');\n * var notifB = new Rx.Notification('N', 'B');\n * var notifE = new Rx.Notification('E', void 0,\n *   new TypeError('x.toUpperCase is not a function')\n * );\n * var materialized = Rx.Observable.of(notifA, notifB, notifE);\n * var upperCase = materialized.dematerialize();\n * upperCase.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Results in:\n * // A\n * // B\n * // TypeError: x.toUpperCase is not a function\n *\n * @see {@link Notification}\n * @see {@link materialize}\n *\n * @return {Observable} An Observable that emits items and notifications\n * embedded in Notification objects emitted by the source Observable.\n * @method dematerialize\n * @owner Observable\n */\nexport function dematerialize() {\n    return function dematerializeOperatorFunction(source) {\n        return source.lift(new DeMaterializeOperator());\n    };\n}\nvar DeMaterializeOperator = (function () {\n    function DeMaterializeOperator() {\n    }\n    DeMaterializeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DeMaterializeSubscriber(subscriber));\n    };\n    return DeMaterializeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DeMaterializeSubscriber = (function (_super) {\n    __extends(DeMaterializeSubscriber, _super);\n    function DeMaterializeSubscriber(destination) {\n        _super.call(this, destination);\n    }\n    DeMaterializeSubscriber.prototype._next = function (value) {\n        value.observe(this.destination);\n    };\n    return DeMaterializeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=dematerialize.js.map","import { dematerialize as higherOrder } from '../operators/dematerialize';\n/**\n * Converts an Observable of {@link Notification} objects into the emissions\n * that they represent.\n *\n * <span class=\"informal\">Unwraps {@link Notification} objects as actual `next`,\n * `error` and `complete` emissions. The opposite of {@link materialize}.</span>\n *\n * <img src=\"./img/dematerialize.png\" width=\"100%\">\n *\n * `dematerialize` is assumed to operate an Observable that only emits\n * {@link Notification} objects as `next` emissions, and does not emit any\n * `error`. Such Observable is the output of a `materialize` operation. Those\n * notifications are then unwrapped using the metadata they contain, and emitted\n * as `next`, `error`, and `complete` on the output Observable.\n *\n * Use this operator in conjunction with {@link materialize}.\n *\n * @example <caption>Convert an Observable of Notifications to an actual Observable</caption>\n * var notifA = new Rx.Notification('N', 'A');\n * var notifB = new Rx.Notification('N', 'B');\n * var notifE = new Rx.Notification('E', void 0,\n *   new TypeError('x.toUpperCase is not a function')\n * );\n * var materialized = Rx.Observable.of(notifA, notifB, notifE);\n * var upperCase = materialized.dematerialize();\n * upperCase.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Results in:\n * // A\n * // B\n * // TypeError: x.toUpperCase is not a function\n *\n * @see {@link Notification}\n * @see {@link materialize}\n *\n * @return {Observable} An Observable that emits items and notifications\n * embedded in Notification objects emitted by the source Observable.\n * @method dematerialize\n * @owner Observable\n */\nexport function dematerialize() {\n    return higherOrder()(this);\n}\n//# sourceMappingURL=dematerialize.js.map","import { Observable } from '../../Observable';\nimport { dematerialize } from '../../operator/dematerialize';\nObservable.prototype.dematerialize = dematerialize;\n//# sourceMappingURL=dematerialize.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Emits a value from the source Observable only after a particular time span\n * determined by another Observable has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link debounceTime}, but the time span of\n * emission silence is determined by a second Observable.</span>\n *\n * <img src=\"./img/debounce.png\" width=\"100%\">\n *\n * `debounce` delays values emitted by the source Observable, but drops previous\n * pending delayed emissions if a new value arrives on the source Observable.\n * This operator keeps track of the most recent value from the source\n * Observable, and spawns a duration Observable by calling the\n * `durationSelector` function. The value is emitted only when the duration\n * Observable emits a value or completes, and if no other value was emitted on\n * the source Observable since the duration Observable was spawned. If a new\n * value appears before the duration Observable emits, the previous value will\n * be dropped and will not be emitted on the output Observable.\n *\n * Like {@link debounceTime}, this is a rate-limiting operator, and also a\n * delay-like operator since output emissions do not necessarily occur at the\n * same time as they did on the source Observable.\n *\n * @example <caption>Emit the most recent click after a burst of clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.debounce(() => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the timeout\n * duration for each source value, returned as an Observable or a Promise.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified duration Observable returned by\n * `durationSelector`, and may drop some values if they occur too frequently.\n * @method debounce\n * @owner Observable\n */\nexport function debounce(durationSelector) {\n    return function (source) { return source.lift(new DebounceOperator(durationSelector)); };\n}\nvar DebounceOperator = (function () {\n    function DebounceOperator(durationSelector) {\n        this.durationSelector = durationSelector;\n    }\n    DebounceOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));\n    };\n    return DebounceOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DebounceSubscriber = (function (_super) {\n    __extends(DebounceSubscriber, _super);\n    function DebounceSubscriber(destination, durationSelector) {\n        _super.call(this, destination);\n        this.durationSelector = durationSelector;\n        this.hasValue = false;\n        this.durationSubscription = null;\n    }\n    DebounceSubscriber.prototype._next = function (value) {\n        try {\n            var result = this.durationSelector.call(this, value);\n            if (result) {\n                this._tryNext(value, result);\n            }\n        }\n        catch (err) {\n            this.destination.error(err);\n        }\n    };\n    DebounceSubscriber.prototype._complete = function () {\n        this.emitValue();\n        this.destination.complete();\n    };\n    DebounceSubscriber.prototype._tryNext = function (value, duration) {\n        var subscription = this.durationSubscription;\n        this.value = value;\n        this.hasValue = true;\n        if (subscription) {\n            subscription.unsubscribe();\n            this.remove(subscription);\n        }\n        subscription = subscribeToResult(this, duration);\n        if (!subscription.closed) {\n            this.add(this.durationSubscription = subscription);\n        }\n    };\n    DebounceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.emitValue();\n    };\n    DebounceSubscriber.prototype.notifyComplete = function () {\n        this.emitValue();\n    };\n    DebounceSubscriber.prototype.emitValue = function () {\n        if (this.hasValue) {\n            var value = this.value;\n            var subscription = this.durationSubscription;\n            if (subscription) {\n                this.durationSubscription = null;\n                subscription.unsubscribe();\n                this.remove(subscription);\n            }\n            this.value = null;\n            this.hasValue = false;\n            _super.prototype._next.call(this, value);\n        }\n    };\n    return DebounceSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=debounce.js.map","import { debounce as higherOrder } from '../operators/debounce';\n/**\n * Emits a value from the source Observable only after a particular time span\n * determined by another Observable has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link debounceTime}, but the time span of\n * emission silence is determined by a second Observable.</span>\n *\n * <img src=\"./img/debounce.png\" width=\"100%\">\n *\n * `debounce` delays values emitted by the source Observable, but drops previous\n * pending delayed emissions if a new value arrives on the source Observable.\n * This operator keeps track of the most recent value from the source\n * Observable, and spawns a duration Observable by calling the\n * `durationSelector` function. The value is emitted only when the duration\n * Observable emits a value or completes, and if no other value was emitted on\n * the source Observable since the duration Observable was spawned. If a new\n * value appears before the duration Observable emits, the previous value will\n * be dropped and will not be emitted on the output Observable.\n *\n * Like {@link debounceTime}, this is a rate-limiting operator, and also a\n * delay-like operator since output emissions do not necessarily occur at the\n * same time as they did on the source Observable.\n *\n * @example <caption>Emit the most recent click after a burst of clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.debounce(() => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the timeout\n * duration for each source value, returned as an Observable or a Promise.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified duration Observable returned by\n * `durationSelector`, and may drop some values if they occur too frequently.\n * @method debounce\n * @owner Observable\n */\nexport function debounce(durationSelector) {\n    return higherOrder(durationSelector)(this);\n}\n//# sourceMappingURL=debounce.js.map","import { Observable } from '../../Observable';\nimport { debounce } from '../../operator/debounce';\nObservable.prototype.debounce = debounce;\n//# sourceMappingURL=debounce.js.map","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.</span>\n *\n * <img src=\"./img/debounceTime.png\" width=\"100%\">\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link IScheduler} for\n * managing timers.\n *\n * @example <caption>Emit the most recent click after a burst of clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.debounceTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nexport function debounceTime(dueTime, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };\n}\nvar DebounceTimeOperator = (function () {\n    function DebounceTimeOperator(dueTime, scheduler) {\n        this.dueTime = dueTime;\n        this.scheduler = scheduler;\n    }\n    DebounceTimeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n    };\n    return DebounceTimeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DebounceTimeSubscriber = (function (_super) {\n    __extends(DebounceTimeSubscriber, _super);\n    function DebounceTimeSubscriber(destination, dueTime, scheduler) {\n        _super.call(this, destination);\n        this.dueTime = dueTime;\n        this.scheduler = scheduler;\n        this.debouncedSubscription = null;\n        this.lastValue = null;\n        this.hasValue = false;\n    }\n    DebounceTimeSubscriber.prototype._next = function (value) {\n        this.clearDebounce();\n        this.lastValue = value;\n        this.hasValue = true;\n        this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n    };\n    DebounceTimeSubscriber.prototype._complete = function () {\n        this.debouncedNext();\n        this.destination.complete();\n    };\n    DebounceTimeSubscriber.prototype.debouncedNext = function () {\n        this.clearDebounce();\n        if (this.hasValue) {\n            this.destination.next(this.lastValue);\n            this.lastValue = null;\n            this.hasValue = false;\n        }\n    };\n    DebounceTimeSubscriber.prototype.clearDebounce = function () {\n        var debouncedSubscription = this.debouncedSubscription;\n        if (debouncedSubscription !== null) {\n            this.remove(debouncedSubscription);\n            debouncedSubscription.unsubscribe();\n            this.debouncedSubscription = null;\n        }\n    };\n    return DebounceTimeSubscriber;\n}(Subscriber));\nfunction dispatchNext(subscriber) {\n    subscriber.debouncedNext();\n}\n//# sourceMappingURL=debounceTime.js.map","import { async } from '../scheduler/async';\nimport { debounceTime as higherOrder } from '../operators/debounceTime';\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.</span>\n *\n * <img src=\"./img/debounceTime.png\" width=\"100%\">\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link IScheduler} for\n * managing timers.\n *\n * @example <caption>Emit the most recent click after a burst of clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.debounceTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nexport function debounceTime(dueTime, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return higherOrder(dueTime, scheduler)(this);\n}\n//# sourceMappingURL=debounceTime.js.map","import { Observable } from '../../Observable';\nimport { debounceTime } from '../../operator/debounceTime';\nObservable.prototype.debounceTime = debounceTime;\n//# sourceMappingURL=debounceTime.js.map","import { Subscriber } from '../Subscriber';\n/* tslint:enable:max-line-length */\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * <span class=\"informal\">If the source Observable turns out to be empty, then\n * this operator will emit a default value.</span>\n *\n * <img src=\"./img/defaultIfEmpty.png\" width=\"100%\">\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * @example <caption>If no clicks happen in 5 seconds, then emit \"no clicks\"</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksBeforeFive = clicks.takeUntil(Rx.Observable.interval(5000));\n * var result = clicksBeforeFive.defaultIfEmpty('no clicks');\n * result.subscribe(x => console.log(x));\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param {any} [defaultValue=null] The default value used if the source\n * Observable is empty.\n * @return {Observable} An Observable that emits either the specified\n * `defaultValue` if the source Observable emits no items, or the values emitted\n * by the source Observable.\n * @method defaultIfEmpty\n * @owner Observable\n */\nexport function defaultIfEmpty(defaultValue) {\n    if (defaultValue === void 0) { defaultValue = null; }\n    return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); };\n}\nvar DefaultIfEmptyOperator = (function () {\n    function DefaultIfEmptyOperator(defaultValue) {\n        this.defaultValue = defaultValue;\n    }\n    DefaultIfEmptyOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n    };\n    return DefaultIfEmptyOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DefaultIfEmptySubscriber = (function (_super) {\n    __extends(DefaultIfEmptySubscriber, _super);\n    function DefaultIfEmptySubscriber(destination, defaultValue) {\n        _super.call(this, destination);\n        this.defaultValue = defaultValue;\n        this.isEmpty = true;\n    }\n    DefaultIfEmptySubscriber.prototype._next = function (value) {\n        this.isEmpty = false;\n        this.destination.next(value);\n    };\n    DefaultIfEmptySubscriber.prototype._complete = function () {\n        if (this.isEmpty) {\n            this.destination.next(this.defaultValue);\n        }\n        this.destination.complete();\n    };\n    return DefaultIfEmptySubscriber;\n}(Subscriber));\n//# sourceMappingURL=defaultIfEmpty.js.map","import { defaultIfEmpty as higherOrder } from '../operators/defaultIfEmpty';\n/* tslint:enable:max-line-length */\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * <span class=\"informal\">If the source Observable turns out to be empty, then\n * this operator will emit a default value.</span>\n *\n * <img src=\"./img/defaultIfEmpty.png\" width=\"100%\">\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * @example <caption>If no clicks happen in 5 seconds, then emit \"no clicks\"</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksBeforeFive = clicks.takeUntil(Rx.Observable.interval(5000));\n * var result = clicksBeforeFive.defaultIfEmpty('no clicks');\n * result.subscribe(x => console.log(x));\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param {any} [defaultValue=null] The default value used if the source\n * Observable is empty.\n * @return {Observable} An Observable that emits either the specified\n * `defaultValue` if the source Observable emits no items, or the values emitted\n * by the source Observable.\n * @method defaultIfEmpty\n * @owner Observable\n */\nexport function defaultIfEmpty(defaultValue) {\n    if (defaultValue === void 0) { defaultValue = null; }\n    return higherOrder(defaultValue)(this);\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { Observable } from '../../Observable';\nimport { defaultIfEmpty } from '../../operator/defaultIfEmpty';\nObservable.prototype.defaultIfEmpty = defaultIfEmpty;\n//# sourceMappingURL=defaultIfEmpty.js.map","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * <span class=\"informal\">Time shifts each item by some specified amount of\n * milliseconds.</span>\n *\n * <img src=\"./img/delay.png\" width=\"100%\">\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * @example <caption>Delay each click by one second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var delayedClicks = clicks.delay(1000); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n *\n * @example <caption>Delay all clicks until a future date happens</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var date = new Date('March 15, 2050 12:00:00'); // in the future\n * var delayedClicks = clicks.delay(date); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n *\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n *\n * @param {number|Date} delay The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {Scheduler} [scheduler=async] The IScheduler to use for\n * managing the timers that handle the time-shift for each item.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified timeout or Date.\n * @method delay\n * @owner Observable\n */\nexport function delay(delay, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    var absoluteDelay = isDate(delay);\n    var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n    return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); };\n}\nvar DelayOperator = (function () {\n    function DelayOperator(delay, scheduler) {\n        this.delay = delay;\n        this.scheduler = scheduler;\n    }\n    DelayOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n    };\n    return DelayOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DelaySubscriber = (function (_super) {\n    __extends(DelaySubscriber, _super);\n    function DelaySubscriber(destination, delay, scheduler) {\n        _super.call(this, destination);\n        this.delay = delay;\n        this.scheduler = scheduler;\n        this.queue = [];\n        this.active = false;\n        this.errored = false;\n    }\n    DelaySubscriber.dispatch = function (state) {\n        var source = state.source;\n        var queue = source.queue;\n        var scheduler = state.scheduler;\n        var destination = state.destination;\n        while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n            queue.shift().notification.observe(destination);\n        }\n        if (queue.length > 0) {\n            var delay_1 = Math.max(0, queue[0].time - scheduler.now());\n            this.schedule(state, delay_1);\n        }\n        else {\n            this.unsubscribe();\n            source.active = false;\n        }\n    };\n    DelaySubscriber.prototype._schedule = function (scheduler) {\n        this.active = true;\n        this.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n            source: this, destination: this.destination, scheduler: scheduler\n        }));\n    };\n    DelaySubscriber.prototype.scheduleNotification = function (notification) {\n        if (this.errored === true) {\n            return;\n        }\n        var scheduler = this.scheduler;\n        var message = new DelayMessage(scheduler.now() + this.delay, notification);\n        this.queue.push(message);\n        if (this.active === false) {\n            this._schedule(scheduler);\n        }\n    };\n    DelaySubscriber.prototype._next = function (value) {\n        this.scheduleNotification(Notification.createNext(value));\n    };\n    DelaySubscriber.prototype._error = function (err) {\n        this.errored = true;\n        this.queue = [];\n        this.destination.error(err);\n    };\n    DelaySubscriber.prototype._complete = function () {\n        this.scheduleNotification(Notification.createComplete());\n    };\n    return DelaySubscriber;\n}(Subscriber));\nvar DelayMessage = (function () {\n    function DelayMessage(time, notification) {\n        this.time = time;\n        this.notification = notification;\n    }\n    return DelayMessage;\n}());\n//# sourceMappingURL=delay.js.map","import { async } from '../scheduler/async';\nimport { delay as higherOrder } from '../operators/delay';\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * <span class=\"informal\">Time shifts each item by some specified amount of\n * milliseconds.</span>\n *\n * <img src=\"./img/delay.png\" width=\"100%\">\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * @example <caption>Delay each click by one second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var delayedClicks = clicks.delay(1000); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n *\n * @example <caption>Delay all clicks until a future date happens</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var date = new Date('March 15, 2050 12:00:00'); // in the future\n * var delayedClicks = clicks.delay(date); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n *\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n *\n * @param {number|Date} delay The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {Scheduler} [scheduler=async] The IScheduler to use for\n * managing the timers that handle the time-shift for each item.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified timeout or Date.\n * @method delay\n * @owner Observable\n */\nexport function delay(delay, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return higherOrder(delay, scheduler)(this);\n}\n//# sourceMappingURL=delay.js.map","import { Observable } from '../../Observable';\nimport { delay } from '../../operator/delay';\nObservable.prototype.delay = delay;\n//# sourceMappingURL=delay.js.map","import { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * <span class=\"informal\">It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.</span>\n *\n * <img src=\"./img/delayWhen.png\" width=\"100%\">\n *\n * `delayWhen` time shifts each emitted value from the source Observable by a\n * time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the source value as\n * argument, and should return an Observable, called the \"duration\" Observable.\n * The source value is emitted on the output Observable only when the duration\n * Observable emits a value or completes.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * @example <caption>Delay each click by a random amount of time, between 0 and 5 seconds</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var delayedClicks = clicks.delayWhen(event =>\n *   Rx.Observable.interval(Math.random() * 5000)\n * );\n * delayedClicks.subscribe(x => console.log(x));\n *\n * @see {@link debounce}\n * @see {@link delay}\n *\n * @param {function(value: T): Observable} delayDurationSelector A function that\n * returns an Observable for each value emitted by the source Observable, which\n * is then used to delay the emission of that item on the output Observable\n * until the Observable returned from this function emits a value.\n * @param {Observable} subscriptionDelay An Observable that triggers the\n * subscription to the source Observable once it emits any value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by an amount of time specified by the Observable returned by\n * `delayDurationSelector`.\n * @method delayWhen\n * @owner Observable\n */\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n    if (subscriptionDelay) {\n        return function (source) {\n            return new SubscriptionDelayObservable(source, subscriptionDelay)\n                .lift(new DelayWhenOperator(delayDurationSelector));\n        };\n    }\n    return function (source) { return source.lift(new DelayWhenOperator(delayDurationSelector)); };\n}\nvar DelayWhenOperator = (function () {\n    function DelayWhenOperator(delayDurationSelector) {\n        this.delayDurationSelector = delayDurationSelector;\n    }\n    DelayWhenOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));\n    };\n    return DelayWhenOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DelayWhenSubscriber = (function (_super) {\n    __extends(DelayWhenSubscriber, _super);\n    function DelayWhenSubscriber(destination, delayDurationSelector) {\n        _super.call(this, destination);\n        this.delayDurationSelector = delayDurationSelector;\n        this.completed = false;\n        this.delayNotifierSubscriptions = [];\n        this.values = [];\n    }\n    DelayWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.destination.next(outerValue);\n        this.removeSubscription(innerSub);\n        this.tryComplete();\n    };\n    DelayWhenSubscriber.prototype.notifyError = function (error, innerSub) {\n        this._error(error);\n    };\n    DelayWhenSubscriber.prototype.notifyComplete = function (innerSub) {\n        var value = this.removeSubscription(innerSub);\n        if (value) {\n            this.destination.next(value);\n        }\n        this.tryComplete();\n    };\n    DelayWhenSubscriber.prototype._next = function (value) {\n        try {\n            var delayNotifier = this.delayDurationSelector(value);\n            if (delayNotifier) {\n                this.tryDelay(delayNotifier, value);\n            }\n        }\n        catch (err) {\n            this.destination.error(err);\n        }\n    };\n    DelayWhenSubscriber.prototype._complete = function () {\n        this.completed = true;\n        this.tryComplete();\n    };\n    DelayWhenSubscriber.prototype.removeSubscription = function (subscription) {\n        subscription.unsubscribe();\n        var subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);\n        var value = null;\n        if (subscriptionIdx !== -1) {\n            value = this.values[subscriptionIdx];\n            this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);\n            this.values.splice(subscriptionIdx, 1);\n        }\n        return value;\n    };\n    DelayWhenSubscriber.prototype.tryDelay = function (delayNotifier, value) {\n        var notifierSubscription = subscribeToResult(this, delayNotifier, value);\n        if (notifierSubscription && !notifierSubscription.closed) {\n            this.add(notifierSubscription);\n            this.delayNotifierSubscriptions.push(notifierSubscription);\n        }\n        this.values.push(value);\n    };\n    DelayWhenSubscriber.prototype.tryComplete = function () {\n        if (this.completed && this.delayNotifierSubscriptions.length === 0) {\n            this.destination.complete();\n        }\n    };\n    return DelayWhenSubscriber;\n}(OuterSubscriber));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SubscriptionDelayObservable = (function (_super) {\n    __extends(SubscriptionDelayObservable, _super);\n    function SubscriptionDelayObservable(/** @deprecated internal use only */ source, subscriptionDelay) {\n        _super.call(this);\n        this.source = source;\n        this.subscriptionDelay = subscriptionDelay;\n    }\n    /** @deprecated internal use only */ SubscriptionDelayObservable.prototype._subscribe = function (subscriber) {\n        this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));\n    };\n    return SubscriptionDelayObservable;\n}(Observable));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SubscriptionDelaySubscriber = (function (_super) {\n    __extends(SubscriptionDelaySubscriber, _super);\n    function SubscriptionDelaySubscriber(parent, source) {\n        _super.call(this);\n        this.parent = parent;\n        this.source = source;\n        this.sourceSubscribed = false;\n    }\n    SubscriptionDelaySubscriber.prototype._next = function (unused) {\n        this.subscribeToSource();\n    };\n    SubscriptionDelaySubscriber.prototype._error = function (err) {\n        this.unsubscribe();\n        this.parent.error(err);\n    };\n    SubscriptionDelaySubscriber.prototype._complete = function () {\n        this.subscribeToSource();\n    };\n    SubscriptionDelaySubscriber.prototype.subscribeToSource = function () {\n        if (!this.sourceSubscribed) {\n            this.sourceSubscribed = true;\n            this.unsubscribe();\n            this.source.subscribe(this.parent);\n        }\n    };\n    return SubscriptionDelaySubscriber;\n}(Subscriber));\n//# sourceMappingURL=delayWhen.js.map","import { delayWhen as higherOrder } from '../operators/delayWhen';\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * <span class=\"informal\">It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.</span>\n *\n * <img src=\"./img/delayWhen.png\" width=\"100%\">\n *\n * `delayWhen` time shifts each emitted value from the source Observable by a\n * time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the source value as\n * argument, and should return an Observable, called the \"duration\" Observable.\n * The source value is emitted on the output Observable only when the duration\n * Observable emits a value or completes.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * @example <caption>Delay each click by a random amount of time, between 0 and 5 seconds</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var delayedClicks = clicks.delayWhen(event =>\n *   Rx.Observable.interval(Math.random() * 5000)\n * );\n * delayedClicks.subscribe(x => console.log(x));\n *\n * @see {@link debounce}\n * @see {@link delay}\n *\n * @param {function(value: T): Observable} delayDurationSelector A function that\n * returns an Observable for each value emitted by the source Observable, which\n * is then used to delay the emission of that item on the output Observable\n * until the Observable returned from this function emits a value.\n * @param {Observable} subscriptionDelay An Observable that triggers the\n * subscription to the source Observable once it emits any value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by an amount of time specified by the Observable returned by\n * `delayDurationSelector`.\n * @method delayWhen\n * @owner Observable\n */\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n    return higherOrder(delayDurationSelector, subscriptionDelay)(this);\n}\n//# sourceMappingURL=delayWhen.js.map","import { Observable } from '../../Observable';\nimport { delayWhen } from '../../operator/delayWhen';\nObservable.prototype.delayWhen = delayWhen;\n//# sourceMappingURL=delayWhen.js.map","import { root } from './root';\nexport function minimalSetImpl() {\n    // THIS IS NOT a full impl of Set, this is just the minimum\n    // bits of functionality we need for this library.\n    return (function () {\n        function MinimalSet() {\n            this._values = [];\n        }\n        MinimalSet.prototype.add = function (value) {\n            if (!this.has(value)) {\n                this._values.push(value);\n            }\n        };\n        MinimalSet.prototype.has = function (value) {\n            return this._values.indexOf(value) !== -1;\n        };\n        Object.defineProperty(MinimalSet.prototype, \"size\", {\n            get: function () {\n                return this._values.length;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        MinimalSet.prototype.clear = function () {\n            this._values.length = 0;\n        };\n        return MinimalSet;\n    }());\n}\nexport var Set = root.Set || minimalSetImpl();\n//# sourceMappingURL=Set.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { Set } from '../util/Set';\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * @example <caption>A simple example with numbers</caption>\n * Observable.of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1)\n *   .distinct()\n *   .subscribe(x => console.log(x)); // 1, 2, 3, 4\n *\n * @example <caption>An example using a keySelector function</caption>\n * interface Person {\n *    age: number,\n *    name: string\n * }\n *\n * Observable.of<Person>(\n *     { age: 4, name: 'Foo'},\n *     { age: 7, name: 'Bar'},\n *     { age: 5, name: 'Foo'})\n *     .distinct((p: Person) => p.name)\n *     .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n *\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [keySelector] Optional function to select which value you want to check as distinct.\n * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinct\n * @owner Observable\n */\nexport function distinct(keySelector, flushes) {\n    return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); };\n}\nvar DistinctOperator = (function () {\n    function DistinctOperator(keySelector, flushes) {\n        this.keySelector = keySelector;\n        this.flushes = flushes;\n    }\n    DistinctOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));\n    };\n    return DistinctOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var DistinctSubscriber = (function (_super) {\n    __extends(DistinctSubscriber, _super);\n    function DistinctSubscriber(destination, keySelector, flushes) {\n        _super.call(this, destination);\n        this.keySelector = keySelector;\n        this.values = new Set();\n        if (flushes) {\n            this.add(subscribeToResult(this, flushes));\n        }\n    }\n    DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.values.clear();\n    };\n    DistinctSubscriber.prototype.notifyError = function (error, innerSub) {\n        this._error(error);\n    };\n    DistinctSubscriber.prototype._next = function (value) {\n        if (this.keySelector) {\n            this._useKeySelector(value);\n        }\n        else {\n            this._finalizeNext(value, value);\n        }\n    };\n    DistinctSubscriber.prototype._useKeySelector = function (value) {\n        var key;\n        var destination = this.destination;\n        try {\n            key = this.keySelector(value);\n        }\n        catch (err) {\n            destination.error(err);\n            return;\n        }\n        this._finalizeNext(key, value);\n    };\n    DistinctSubscriber.prototype._finalizeNext = function (key, value) {\n        var values = this.values;\n        if (!values.has(key)) {\n            values.add(key);\n            this.destination.next(value);\n        }\n    };\n    return DistinctSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=distinct.js.map","import { distinct as higherOrder } from '../operators/distinct';\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * @example <caption>A simple example with numbers</caption>\n * Observable.of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1)\n *   .distinct()\n *   .subscribe(x => console.log(x)); // 1, 2, 3, 4\n *\n * @example <caption>An example using a keySelector function</caption>\n * interface Person {\n *    age: number,\n *    name: string\n * }\n *\n * Observable.of<Person>(\n *     { age: 4, name: 'Foo'},\n *     { age: 7, name: 'Bar'},\n *     { age: 5, name: 'Foo'})\n *     .distinct((p: Person) => p.name)\n *     .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n *\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [keySelector] Optional function to select which value you want to check as distinct.\n * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinct\n * @owner Observable\n */\nexport function distinct(keySelector, flushes) {\n    return higherOrder(keySelector, flushes)(this);\n}\n//# sourceMappingURL=distinct.js.map","import { Observable } from '../../Observable';\nimport { distinct } from '../../operator/distinct';\nObservable.prototype.distinct = distinct;\n//# sourceMappingURL=distinct.js.map","import { Subscriber } from '../Subscriber';\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * @example <caption>A simple example with numbers</caption>\n * Observable.of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4)\n *   .distinctUntilChanged()\n *   .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4\n *\n * @example <caption>An example using a compare function</caption>\n * interface Person {\n *    age: number,\n *    name: string\n * }\n *\n * Observable.of<Person>(\n *     { age: 4, name: 'Foo'},\n *     { age: 7, name: 'Bar'},\n *     { age: 5, name: 'Foo'})\n *     { age: 6, name: 'Foo'})\n *     .distinctUntilChanged((p: Person, q: Person) => p.name === q.name)\n *     .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinctUntilChanged\n * @owner Observable\n */\nexport function distinctUntilChanged(compare, keySelector) {\n    return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };\n}\nvar DistinctUntilChangedOperator = (function () {\n    function DistinctUntilChangedOperator(compare, keySelector) {\n        this.compare = compare;\n        this.keySelector = keySelector;\n    }\n    DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n    };\n    return DistinctUntilChangedOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DistinctUntilChangedSubscriber = (function (_super) {\n    __extends(DistinctUntilChangedSubscriber, _super);\n    function DistinctUntilChangedSubscriber(destination, compare, keySelector) {\n        _super.call(this, destination);\n        this.keySelector = keySelector;\n        this.hasKey = false;\n        if (typeof compare === 'function') {\n            this.compare = compare;\n        }\n    }\n    DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {\n        return x === y;\n    };\n    DistinctUntilChangedSubscriber.prototype._next = function (value) {\n        var keySelector = this.keySelector;\n        var key = value;\n        if (keySelector) {\n            key = tryCatch(this.keySelector)(value);\n            if (key === errorObject) {\n                return this.destination.error(errorObject.e);\n            }\n        }\n        var result = false;\n        if (this.hasKey) {\n            result = tryCatch(this.compare)(this.key, key);\n            if (result === errorObject) {\n                return this.destination.error(errorObject.e);\n            }\n        }\n        else {\n            this.hasKey = true;\n        }\n        if (Boolean(result) === false) {\n            this.key = key;\n            this.destination.next(value);\n        }\n    };\n    return DistinctUntilChangedSubscriber;\n}(Subscriber));\n//# sourceMappingURL=distinctUntilChanged.js.map","import { distinctUntilChanged as higherOrder } from '../operators/distinctUntilChanged';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * @example <caption>A simple example with numbers</caption>\n * Observable.of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4)\n *   .distinctUntilChanged()\n *   .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4\n *\n * @example <caption>An example using a compare function</caption>\n * interface Person {\n *    age: number,\n *    name: string\n * }\n *\n * Observable.of<Person>(\n *     { age: 4, name: 'Foo'},\n *     { age: 7, name: 'Bar'},\n *     { age: 5, name: 'Foo'})\n *     { age: 6, name: 'Foo'})\n *     .distinctUntilChanged((p: Person, q: Person) => p.name === q.name)\n *     .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinctUntilChanged\n * @owner Observable\n */\nexport function distinctUntilChanged(compare, keySelector) {\n    return higherOrder(compare, keySelector)(this);\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { Observable } from '../../Observable';\nimport { distinctUntilChanged } from '../../operator/distinctUntilChanged';\nObservable.prototype.distinctUntilChanged = distinctUntilChanged;\n//# sourceMappingURL=distinctUntilChanged.js.map","import { distinctUntilChanged } from './distinctUntilChanged';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item,\n * using a property accessed by using the key provided to check if the two items are distinct.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * @example <caption>An example comparing the name of persons</caption>\n *\n *  interface Person {\n *     age: number,\n *     name: string\n *  }\n *\n * Observable.of<Person>(\n *     { age: 4, name: 'Foo'},\n *     { age: 7, name: 'Bar'},\n *     { age: 5, name: 'Foo'},\n *     { age: 6, name: 'Foo'})\n *     .distinctUntilKeyChanged('name')\n *     .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n *\n * @example <caption>An example comparing the first letters of the name</caption>\n *\n * interface Person {\n *     age: number,\n *     name: string\n *  }\n *\n * Observable.of<Person>(\n *     { age: 4, name: 'Foo1'},\n *     { age: 7, name: 'Bar'},\n *     { age: 5, name: 'Foo2'},\n *     { age: 6, name: 'Foo3'})\n *     .distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3))\n *     .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo1' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo2' }\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n *\n * @param {string} key String key for object property lookup on each item.\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values based on the key specified.\n * @method distinctUntilKeyChanged\n * @owner Observable\n */\nexport function distinctUntilKeyChanged(key, compare) {\n    return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","import { distinctUntilKeyChanged as higherOrder } from '../operators/distinctUntilKeyChanged';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item,\n * using a property accessed by using the key provided to check if the two items are distinct.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * @example <caption>An example comparing the name of persons</caption>\n *\n *  interface Person {\n *     age: number,\n *     name: string\n *  }\n *\n * Observable.of<Person>(\n *     { age: 4, name: 'Foo'},\n *     { age: 7, name: 'Bar'},\n *     { age: 5, name: 'Foo'},\n *     { age: 6, name: 'Foo'})\n *     .distinctUntilKeyChanged('name')\n *     .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n *\n * @example <caption>An example comparing the first letters of the name</caption>\n *\n * interface Person {\n *     age: number,\n *     name: string\n *  }\n *\n * Observable.of<Person>(\n *     { age: 4, name: 'Foo1'},\n *     { age: 7, name: 'Bar'},\n *     { age: 5, name: 'Foo2'},\n *     { age: 6, name: 'Foo3'})\n *     .distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3))\n *     .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo1' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo2' }\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n *\n * @param {string} key String key for object property lookup on each item.\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values based on the key specified.\n * @method distinctUntilKeyChanged\n * @owner Observable\n */\nexport function distinctUntilKeyChanged(key, compare) {\n    return higherOrder(key, compare)(this);\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","import { Observable } from '../../Observable';\nimport { distinctUntilKeyChanged } from '../../operator/distinctUntilKeyChanged';\nObservable.prototype.distinctUntilKeyChanged = distinctUntilKeyChanged;\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","import { Subscriber } from '../Subscriber';\n/* tslint:enable:max-line-length */\n/**\n * Perform a side effect for every emission on the source Observable, but return\n * an Observable that is identical to the source.\n *\n * <span class=\"informal\">Intercepts each emission on the source and runs a\n * function, but returns an output which is identical to the source as long as errors don't occur.</span>\n *\n * <img src=\"./img/do.png\" width=\"100%\">\n *\n * Returns a mirrored Observable of the source Observable, but modified so that\n * the provided Observer is called to perform a side effect for every value,\n * error, and completion emitted by the source. Any errors that are thrown in\n * the aforementioned Observer or handlers are safely sent down the error path\n * of the output Observable.\n *\n * This operator is useful for debugging your Observables for the correct values\n * or performing other side effects.\n *\n * Note: this is different to a `subscribe` on the Observable. If the Observable\n * returned by `do` is not subscribed, the side effects specified by the\n * Observer will never happen. `do` therefore simply spies on existing\n * execution, it does not trigger an execution to happen like `subscribe` does.\n *\n * @example <caption>Map every click to the clientX position of that click, while also logging the click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks\n *   .do(ev => console.log(ev))\n *   .map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link map}\n * @see {@link subscribe}\n *\n * @param {Observer|function} [nextOrObserver] A normal Observer object or a\n * callback for `next`.\n * @param {function} [error] Callback for errors in the source.\n * @param {function} [complete] Callback for the completion of the source.\n * @return {Observable} An Observable identical to the source, but runs the\n * specified Observer or callback(s) for each item.\n * @name tap\n */\nexport function tap(nextOrObserver, error, complete) {\n    return function tapOperatorFunction(source) {\n        return source.lift(new DoOperator(nextOrObserver, error, complete));\n    };\n}\nvar DoOperator = (function () {\n    function DoOperator(nextOrObserver, error, complete) {\n        this.nextOrObserver = nextOrObserver;\n        this.error = error;\n        this.complete = complete;\n    }\n    DoOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DoSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n    };\n    return DoOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DoSubscriber = (function (_super) {\n    __extends(DoSubscriber, _super);\n    function DoSubscriber(destination, nextOrObserver, error, complete) {\n        _super.call(this, destination);\n        var safeSubscriber = new Subscriber(nextOrObserver, error, complete);\n        safeSubscriber.syncErrorThrowable = true;\n        this.add(safeSubscriber);\n        this.safeSubscriber = safeSubscriber;\n    }\n    DoSubscriber.prototype._next = function (value) {\n        var safeSubscriber = this.safeSubscriber;\n        safeSubscriber.next(value);\n        if (safeSubscriber.syncErrorThrown) {\n            this.destination.error(safeSubscriber.syncErrorValue);\n        }\n        else {\n            this.destination.next(value);\n        }\n    };\n    DoSubscriber.prototype._error = function (err) {\n        var safeSubscriber = this.safeSubscriber;\n        safeSubscriber.error(err);\n        if (safeSubscriber.syncErrorThrown) {\n            this.destination.error(safeSubscriber.syncErrorValue);\n        }\n        else {\n            this.destination.error(err);\n        }\n    };\n    DoSubscriber.prototype._complete = function () {\n        var safeSubscriber = this.safeSubscriber;\n        safeSubscriber.complete();\n        if (safeSubscriber.syncErrorThrown) {\n            this.destination.error(safeSubscriber.syncErrorValue);\n        }\n        else {\n            this.destination.complete();\n        }\n    };\n    return DoSubscriber;\n}(Subscriber));\n//# sourceMappingURL=tap.js.map","import { tap as higherOrder } from '../operators/tap';\n/* tslint:enable:max-line-length */\n/**\n * Perform a side effect for every emission on the source Observable, but return\n * an Observable that is identical to the source.\n *\n * <span class=\"informal\">Intercepts each emission on the source and runs a\n * function, but returns an output which is identical to the source as long as errors don't occur.</span>\n *\n * <img src=\"./img/do.png\" width=\"100%\">\n *\n * Returns a mirrored Observable of the source Observable, but modified so that\n * the provided Observer is called to perform a side effect for every value,\n * error, and completion emitted by the source. Any errors that are thrown in\n * the aforementioned Observer or handlers are safely sent down the error path\n * of the output Observable.\n *\n * This operator is useful for debugging your Observables for the correct values\n * or performing other side effects.\n *\n * Note: this is different to a `subscribe` on the Observable. If the Observable\n * returned by `do` is not subscribed, the side effects specified by the\n * Observer will never happen. `do` therefore simply spies on existing\n * execution, it does not trigger an execution to happen like `subscribe` does.\n *\n * @example <caption>Map every click to the clientX position of that click, while also logging the click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks\n *   .do(ev => console.log(ev))\n *   .map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link map}\n * @see {@link subscribe}\n *\n * @param {Observer|function} [nextOrObserver] A normal Observer object or a\n * callback for `next`.\n * @param {function} [error] Callback for errors in the source.\n * @param {function} [complete] Callback for the completion of the source.\n * @return {Observable} An Observable identical to the source, but runs the\n * specified Observer or callback(s) for each item.\n * @method do\n * @name do\n * @owner Observable\n */\nexport function _do(nextOrObserver, error, complete) {\n    return higherOrder(nextOrObserver, error, complete)(this);\n}\n//# sourceMappingURL=do.js.map","import { Observable } from '../../Observable';\nimport { _do } from '../../operator/do';\nObservable.prototype.do = _do;\nObservable.prototype._do = _do;\n//# sourceMappingURL=do.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.</span>\n *\n * <img src=\"./img/exhaust.png\" width=\"100%\">\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * @example <caption>Run a finite timer for each click, only if there is no currently active timer</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(5));\n * var result = higherOrder.exhaust();\n * result.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switch}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable that takes a source of Observables and propagates the first observable\n * exclusively until it completes before subscribing to the next.\n * @method exhaust\n * @owner Observable\n */\nexport function exhaust() {\n    return function (source) { return source.lift(new SwitchFirstOperator()); };\n}\nvar SwitchFirstOperator = (function () {\n    function SwitchFirstOperator() {\n    }\n    SwitchFirstOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SwitchFirstSubscriber(subscriber));\n    };\n    return SwitchFirstOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SwitchFirstSubscriber = (function (_super) {\n    __extends(SwitchFirstSubscriber, _super);\n    function SwitchFirstSubscriber(destination) {\n        _super.call(this, destination);\n        this.hasCompleted = false;\n        this.hasSubscription = false;\n    }\n    SwitchFirstSubscriber.prototype._next = function (value) {\n        if (!this.hasSubscription) {\n            this.hasSubscription = true;\n            this.add(subscribeToResult(this, value));\n        }\n    };\n    SwitchFirstSubscriber.prototype._complete = function () {\n        this.hasCompleted = true;\n        if (!this.hasSubscription) {\n            this.destination.complete();\n        }\n    };\n    SwitchFirstSubscriber.prototype.notifyComplete = function (innerSub) {\n        this.remove(innerSub);\n        this.hasSubscription = false;\n        if (this.hasCompleted) {\n            this.destination.complete();\n        }\n    };\n    return SwitchFirstSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=exhaust.js.map","import { exhaust as higherOrder } from '../operators/exhaust';\n/**\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.</span>\n *\n * <img src=\"./img/exhaust.png\" width=\"100%\">\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * @example <caption>Run a finite timer for each click, only if there is no currently active timer</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(5));\n * var result = higherOrder.exhaust();\n * result.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switch}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable that takes a source of Observables and propagates the first observable\n * exclusively until it completes before subscribing to the next.\n * @method exhaust\n * @owner Observable\n */\nexport function exhaust() {\n    return higherOrder()(this);\n}\n//# sourceMappingURL=exhaust.js.map","import { Observable } from '../../Observable';\nimport { exhaust } from '../../operator/exhaust';\nObservable.prototype.exhaust = exhaust;\n//# sourceMappingURL=exhaust.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable only if the previous projected Observable has completed.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link exhaust}.</span>\n *\n * <img src=\"./img/exhaustMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. When it projects a source value to\n * an Observable, the output Observable begins emitting the items emitted by\n * that projected Observable. However, `exhaustMap` ignores every new projected\n * Observable if the previous projected Observable has not yet completed. Once\n * that one completes, it will accept and flatten the next projected Observable\n * and repeat this process.\n *\n * @example <caption>Run a finite timer for each click, only if there is no currently active timer</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.exhaustMap((ev) => Rx.Observable.interval(1000).take(5));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMap}\n * @see {@link exhaust}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable containing projected Observables\n * of each item of the source, ignoring projected Observables that start before\n * their preceding Observable has completed.\n * @method exhaustMap\n * @owner Observable\n */\nexport function exhaustMap(project, resultSelector) {\n    return function (source) { return source.lift(new SwitchFirstMapOperator(project, resultSelector)); };\n}\nvar SwitchFirstMapOperator = (function () {\n    function SwitchFirstMapOperator(project, resultSelector) {\n        this.project = project;\n        this.resultSelector = resultSelector;\n    }\n    SwitchFirstMapOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SwitchFirstMapSubscriber(subscriber, this.project, this.resultSelector));\n    };\n    return SwitchFirstMapOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SwitchFirstMapSubscriber = (function (_super) {\n    __extends(SwitchFirstMapSubscriber, _super);\n    function SwitchFirstMapSubscriber(destination, project, resultSelector) {\n        _super.call(this, destination);\n        this.project = project;\n        this.resultSelector = resultSelector;\n        this.hasSubscription = false;\n        this.hasCompleted = false;\n        this.index = 0;\n    }\n    SwitchFirstMapSubscriber.prototype._next = function (value) {\n        if (!this.hasSubscription) {\n            this.tryNext(value);\n        }\n    };\n    SwitchFirstMapSubscriber.prototype.tryNext = function (value) {\n        var index = this.index++;\n        var destination = this.destination;\n        try {\n            var result = this.project(value, index);\n            this.hasSubscription = true;\n            this.add(subscribeToResult(this, result, value, index));\n        }\n        catch (err) {\n            destination.error(err);\n        }\n    };\n    SwitchFirstMapSubscriber.prototype._complete = function () {\n        this.hasCompleted = true;\n        if (!this.hasSubscription) {\n            this.destination.complete();\n        }\n    };\n    SwitchFirstMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        var _a = this, resultSelector = _a.resultSelector, destination = _a.destination;\n        if (resultSelector) {\n            this.trySelectResult(outerValue, innerValue, outerIndex, innerIndex);\n        }\n        else {\n            destination.next(innerValue);\n        }\n    };\n    SwitchFirstMapSubscriber.prototype.trySelectResult = function (outerValue, innerValue, outerIndex, innerIndex) {\n        var _a = this, resultSelector = _a.resultSelector, destination = _a.destination;\n        try {\n            var result = resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n            destination.next(result);\n        }\n        catch (err) {\n            destination.error(err);\n        }\n    };\n    SwitchFirstMapSubscriber.prototype.notifyError = function (err) {\n        this.destination.error(err);\n    };\n    SwitchFirstMapSubscriber.prototype.notifyComplete = function (innerSub) {\n        this.remove(innerSub);\n        this.hasSubscription = false;\n        if (this.hasCompleted) {\n            this.destination.complete();\n        }\n    };\n    return SwitchFirstMapSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=exhaustMap.js.map","import { exhaustMap as higherOrder } from '../operators/exhaustMap';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable only if the previous projected Observable has completed.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link exhaust}.</span>\n *\n * <img src=\"./img/exhaustMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. When it projects a source value to\n * an Observable, the output Observable begins emitting the items emitted by\n * that projected Observable. However, `exhaustMap` ignores every new projected\n * Observable if the previous projected Observable has not yet completed. Once\n * that one completes, it will accept and flatten the next projected Observable\n * and repeat this process.\n *\n * @example <caption>Run a finite timer for each click, only if there is no currently active timer</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.exhaustMap((ev) => Rx.Observable.interval(1000).take(5));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMap}\n * @see {@link exhaust}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable containing projected Observables\n * of each item of the source, ignoring projected Observables that start before\n * their preceding Observable has completed.\n * @method exhaustMap\n * @owner Observable\n */\nexport function exhaustMap(project, resultSelector) {\n    return higherOrder(project, resultSelector)(this);\n}\n//# sourceMappingURL=exhaustMap.js.map","import { Observable } from '../../Observable';\nimport { exhaustMap } from '../../operator/exhaustMap';\nObservable.prototype.exhaustMap = exhaustMap;\n//# sourceMappingURL=exhaustMap.js.map","import { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/* tslint:enable:max-line-length */\n/**\n * Recursively projects each source value to an Observable which is merged in\n * the output Observable.\n *\n * <span class=\"informal\">It's similar to {@link mergeMap}, but applies the\n * projection function to every source value as well as every output value.\n * It's recursive.</span>\n *\n * <img src=\"./img/expand.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger. *Expand* will re-emit on the output\n * Observable every source value. Then, each output value is given to the\n * `project` function which returns an inner Observable to be merged on the\n * output Observable. Those output values resulting from the projection are also\n * given to the `project` function to produce new output values. This is how\n * *expand* behaves recursively.\n *\n * @example <caption>Start emitting the powers of two on every click, at most 10 of them</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var powersOfTwo = clicks\n *   .mapTo(1)\n *   .expand(x => Rx.Observable.of(2 * x).delay(1000))\n *   .take(10);\n * powersOfTwo.subscribe(x => console.log(x));\n *\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n *\n * @param {function(value: T, index: number) => Observable} project A function\n * that, when applied to an item emitted by the source or the output Observable,\n * returns an Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for subscribing to\n * each projected inner Observable.\n * @return {Observable} An Observable that emits the source values and also\n * result of applying the projection function to each value emitted on the\n * output Observable and and merging the results of the Observables obtained\n * from this transformation.\n * @method expand\n * @owner Observable\n */\nexport function expand(project, concurrent, scheduler) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    if (scheduler === void 0) { scheduler = undefined; }\n    concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;\n    return function (source) { return source.lift(new ExpandOperator(project, concurrent, scheduler)); };\n}\nexport var ExpandOperator = (function () {\n    function ExpandOperator(project, concurrent, scheduler) {\n        this.project = project;\n        this.concurrent = concurrent;\n        this.scheduler = scheduler;\n    }\n    ExpandOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));\n    };\n    return ExpandOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var ExpandSubscriber = (function (_super) {\n    __extends(ExpandSubscriber, _super);\n    function ExpandSubscriber(destination, project, concurrent, scheduler) {\n        _super.call(this, destination);\n        this.project = project;\n        this.concurrent = concurrent;\n        this.scheduler = scheduler;\n        this.index = 0;\n        this.active = 0;\n        this.hasCompleted = false;\n        if (concurrent < Number.POSITIVE_INFINITY) {\n            this.buffer = [];\n        }\n    }\n    ExpandSubscriber.dispatch = function (arg) {\n        var subscriber = arg.subscriber, result = arg.result, value = arg.value, index = arg.index;\n        subscriber.subscribeToProjection(result, value, index);\n    };\n    ExpandSubscriber.prototype._next = function (value) {\n        var destination = this.destination;\n        if (destination.closed) {\n            this._complete();\n            return;\n        }\n        var index = this.index++;\n        if (this.active < this.concurrent) {\n            destination.next(value);\n            var result = tryCatch(this.project)(value, index);\n            if (result === errorObject) {\n                destination.error(errorObject.e);\n            }\n            else if (!this.scheduler) {\n                this.subscribeToProjection(result, value, index);\n            }\n            else {\n                var state = { subscriber: this, result: result, value: value, index: index };\n                this.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state));\n            }\n        }\n        else {\n            this.buffer.push(value);\n        }\n    };\n    ExpandSubscriber.prototype.subscribeToProjection = function (result, value, index) {\n        this.active++;\n        this.add(subscribeToResult(this, result, value, index));\n    };\n    ExpandSubscriber.prototype._complete = function () {\n        this.hasCompleted = true;\n        if (this.hasCompleted && this.active === 0) {\n            this.destination.complete();\n        }\n    };\n    ExpandSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this._next(innerValue);\n    };\n    ExpandSubscriber.prototype.notifyComplete = function (innerSub) {\n        var buffer = this.buffer;\n        this.remove(innerSub);\n        this.active--;\n        if (buffer && buffer.length > 0) {\n            this._next(buffer.shift());\n        }\n        if (this.hasCompleted && this.active === 0) {\n            this.destination.complete();\n        }\n    };\n    return ExpandSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=expand.js.map","import { expand as higherOrder } from '../operators/expand';\n/* tslint:enable:max-line-length */\n/**\n * Recursively projects each source value to an Observable which is merged in\n * the output Observable.\n *\n * <span class=\"informal\">It's similar to {@link mergeMap}, but applies the\n * projection function to every source value as well as every output value.\n * It's recursive.</span>\n *\n * <img src=\"./img/expand.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger. *Expand* will re-emit on the output\n * Observable every source value. Then, each output value is given to the\n * `project` function which returns an inner Observable to be merged on the\n * output Observable. Those output values resulting from the projection are also\n * given to the `project` function to produce new output values. This is how\n * *expand* behaves recursively.\n *\n * @example <caption>Start emitting the powers of two on every click, at most 10 of them</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var powersOfTwo = clicks\n *   .mapTo(1)\n *   .expand(x => Rx.Observable.of(2 * x).delay(1000))\n *   .take(10);\n * powersOfTwo.subscribe(x => console.log(x));\n *\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n *\n * @param {function(value: T, index: number) => Observable} project A function\n * that, when applied to an item emitted by the source or the output Observable,\n * returns an Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for subscribing to\n * each projected inner Observable.\n * @return {Observable} An Observable that emits the source values and also\n * result of applying the projection function to each value emitted on the\n * output Observable and and merging the results of the Observables obtained\n * from this transformation.\n * @method expand\n * @owner Observable\n */\nexport function expand(project, concurrent, scheduler) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    if (scheduler === void 0) { scheduler = undefined; }\n    concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;\n    return higherOrder(project, concurrent, scheduler)(this);\n}\n//# sourceMappingURL=expand.js.map","import { Observable } from '../../Observable';\nimport { expand } from '../../operator/expand';\nObservable.prototype.expand = expand;\n//# sourceMappingURL=expand.js.map","/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n *\n * @class ArgumentOutOfRangeError\n */\nexport var ArgumentOutOfRangeError = (function (_super) {\n    __extends(ArgumentOutOfRangeError, _super);\n    function ArgumentOutOfRangeError() {\n        var err = _super.call(this, 'argument out of range');\n        this.name = err.name = 'ArgumentOutOfRangeError';\n        this.stack = err.stack;\n        this.message = err.message;\n    }\n    return ArgumentOutOfRangeError;\n}(Error));\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\n/**\n * Emits the single value at the specified `index` in a sequence of emissions\n * from the source Observable.\n *\n * <span class=\"informal\">Emits only the i-th value, then completes.</span>\n *\n * <img src=\"./img/elementAt.png\" width=\"100%\">\n *\n * `elementAt` returns an Observable that emits the item at the specified\n * `index` in the source Observable, or a default value if that `index` is out\n * of range and the `default` argument is provided. If the `default` argument is\n * not given and the `index` is out of range, the output Observable will emit an\n * `ArgumentOutOfRangeError` error.\n *\n * @example <caption>Emit only the third click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.elementAt(2);\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // click 1 = nothing\n * // click 2 = nothing\n * // click 3 = MouseEvent object logged to console\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link skip}\n * @see {@link single}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0` or the\n * Observable has completed before emitting the i-th `next` notification.\n *\n * @param {number} index Is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {T} [defaultValue] The default value returned for missing indices.\n * @return {Observable} An Observable that emits a single item, if it is found.\n * Otherwise, will emit the default value if given. If not, then emits an error.\n * @method elementAt\n * @owner Observable\n */\nexport function elementAt(index, defaultValue) {\n    return function (source) { return source.lift(new ElementAtOperator(index, defaultValue)); };\n}\nvar ElementAtOperator = (function () {\n    function ElementAtOperator(index, defaultValue) {\n        this.index = index;\n        this.defaultValue = defaultValue;\n        if (index < 0) {\n            throw new ArgumentOutOfRangeError;\n        }\n    }\n    ElementAtOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new ElementAtSubscriber(subscriber, this.index, this.defaultValue));\n    };\n    return ElementAtOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ElementAtSubscriber = (function (_super) {\n    __extends(ElementAtSubscriber, _super);\n    function ElementAtSubscriber(destination, index, defaultValue) {\n        _super.call(this, destination);\n        this.index = index;\n        this.defaultValue = defaultValue;\n    }\n    ElementAtSubscriber.prototype._next = function (x) {\n        if (this.index-- === 0) {\n            this.destination.next(x);\n            this.destination.complete();\n        }\n    };\n    ElementAtSubscriber.prototype._complete = function () {\n        var destination = this.destination;\n        if (this.index >= 0) {\n            if (typeof this.defaultValue !== 'undefined') {\n                destination.next(this.defaultValue);\n            }\n            else {\n                destination.error(new ArgumentOutOfRangeError);\n            }\n        }\n        destination.complete();\n    };\n    return ElementAtSubscriber;\n}(Subscriber));\n//# sourceMappingURL=elementAt.js.map","import { elementAt as higherOrder } from '../operators/elementAt';\n/**\n * Emits the single value at the specified `index` in a sequence of emissions\n * from the source Observable.\n *\n * <span class=\"informal\">Emits only the i-th value, then completes.</span>\n *\n * <img src=\"./img/elementAt.png\" width=\"100%\">\n *\n * `elementAt` returns an Observable that emits the item at the specified\n * `index` in the source Observable, or a default value if that `index` is out\n * of range and the `default` argument is provided. If the `default` argument is\n * not given and the `index` is out of range, the output Observable will emit an\n * `ArgumentOutOfRangeError` error.\n *\n * @example <caption>Emit only the third click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.elementAt(2);\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // click 1 = nothing\n * // click 2 = nothing\n * // click 3 = MouseEvent object logged to console\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link skip}\n * @see {@link single}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0` or the\n * Observable has completed before emitting the i-th `next` notification.\n *\n * @param {number} index Is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {T} [defaultValue] The default value returned for missing indices.\n * @return {Observable} An Observable that emits a single item, if it is found.\n * Otherwise, will emit the default value if given. If not, then emits an error.\n * @method elementAt\n * @owner Observable\n */\nexport function elementAt(index, defaultValue) {\n    return higherOrder(index, defaultValue)(this);\n}\n//# sourceMappingURL=elementAt.js.map","import { Observable } from '../../Observable';\nimport { elementAt } from '../../operator/elementAt';\nObservable.prototype.elementAt = elementAt;\n//# sourceMappingURL=elementAt.js.map","import { Subscriber } from '../Subscriber';\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nexport function filter(predicate, thisArg) {\n    return function filterOperatorFunction(source) {\n        return source.lift(new FilterOperator(predicate, thisArg));\n    };\n}\nvar FilterOperator = (function () {\n    function FilterOperator(predicate, thisArg) {\n        this.predicate = predicate;\n        this.thisArg = thisArg;\n    }\n    FilterOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n    };\n    return FilterOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar FilterSubscriber = (function (_super) {\n    __extends(FilterSubscriber, _super);\n    function FilterSubscriber(destination, predicate, thisArg) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.thisArg = thisArg;\n        this.count = 0;\n    }\n    // the try catch block below is left specifically for\n    // optimization and perf reasons. a tryCatcher is not necessary here.\n    FilterSubscriber.prototype._next = function (value) {\n        var result;\n        try {\n            result = this.predicate.call(this.thisArg, value, this.count++);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        if (result) {\n            this.destination.next(value);\n        }\n    };\n    return FilterSubscriber;\n}(Subscriber));\n//# sourceMappingURL=filter.js.map","import { filter as higherOrderFilter } from '../operators/filter';\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nexport function filter(predicate, thisArg) {\n    return higherOrderFilter(predicate, thisArg)(this);\n}\n//# sourceMappingURL=filter.js.map","import { Observable } from '../../Observable';\nimport { filter } from '../../operator/filter';\nObservable.prototype.filter = filter;\n//# sourceMappingURL=filter.js.map","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * @param {function} callback Function to be called when source terminates.\n * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.\n * @method finally\n * @owner Observable\n */\nexport function finalize(callback) {\n    return function (source) { return source.lift(new FinallyOperator(callback)); };\n}\nvar FinallyOperator = (function () {\n    function FinallyOperator(callback) {\n        this.callback = callback;\n    }\n    FinallyOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n    };\n    return FinallyOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar FinallySubscriber = (function (_super) {\n    __extends(FinallySubscriber, _super);\n    function FinallySubscriber(destination, callback) {\n        _super.call(this, destination);\n        this.add(new Subscription(callback));\n    }\n    return FinallySubscriber;\n}(Subscriber));\n//# sourceMappingURL=finalize.js.map","import { finalize } from '../operators/finalize';\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * @param {function} callback Function to be called when source terminates.\n * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.\n * @method finally\n * @owner Observable\n */\nexport function _finally(callback) {\n    return finalize(callback)(this);\n}\n//# sourceMappingURL=finally.js.map","import { Observable } from '../../Observable';\nimport { _finally } from '../../operator/finally';\nObservable.prototype.finally = _finally;\nObservable.prototype._finally = _finally;\n//# sourceMappingURL=finally.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Emits only the first value emitted by the source Observable that meets some\n * condition.\n *\n * <span class=\"informal\">Finds the first value that passes some test and emits\n * that.</span>\n *\n * <img src=\"./img/find.png\" width=\"100%\">\n *\n * `find` searches for the first item in the source Observable that matches the\n * specified condition embodied by the `predicate`, and returns the first\n * occurrence in the source. Unlike {@link first}, the `predicate` is required\n * in `find`, and does not emit an error if a valid value is not found.\n *\n * @example <caption>Find and emit the first click that happens on a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.find(ev => ev.target.tagName === 'DIV');\n * result.subscribe(x => console.log(x));\n *\n * @see {@link filter}\n * @see {@link first}\n * @see {@link findIndex}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable<T>): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable<T>} An Observable of the first item that matches the\n * condition.\n * @method find\n * @owner Observable\n */\nexport function find(predicate, thisArg) {\n    if (typeof predicate !== 'function') {\n        throw new TypeError('predicate is not a function');\n    }\n    return function (source) { return source.lift(new FindValueOperator(predicate, source, false, thisArg)); };\n}\nexport var FindValueOperator = (function () {\n    function FindValueOperator(predicate, source, yieldIndex, thisArg) {\n        this.predicate = predicate;\n        this.source = source;\n        this.yieldIndex = yieldIndex;\n        this.thisArg = thisArg;\n    }\n    FindValueOperator.prototype.call = function (observer, source) {\n        return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));\n    };\n    return FindValueOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var FindValueSubscriber = (function (_super) {\n    __extends(FindValueSubscriber, _super);\n    function FindValueSubscriber(destination, predicate, source, yieldIndex, thisArg) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.source = source;\n        this.yieldIndex = yieldIndex;\n        this.thisArg = thisArg;\n        this.index = 0;\n    }\n    FindValueSubscriber.prototype.notifyComplete = function (value) {\n        var destination = this.destination;\n        destination.next(value);\n        destination.complete();\n    };\n    FindValueSubscriber.prototype._next = function (value) {\n        var _a = this, predicate = _a.predicate, thisArg = _a.thisArg;\n        var index = this.index++;\n        try {\n            var result = predicate.call(thisArg || this, value, index, this.source);\n            if (result) {\n                this.notifyComplete(this.yieldIndex ? index : value);\n            }\n        }\n        catch (err) {\n            this.destination.error(err);\n        }\n    };\n    FindValueSubscriber.prototype._complete = function () {\n        this.notifyComplete(this.yieldIndex ? -1 : undefined);\n    };\n    return FindValueSubscriber;\n}(Subscriber));\n//# sourceMappingURL=find.js.map","import { find as higherOrder } from '../operators/find';\n/* tslint:enable:max-line-length */\n/**\n * Emits only the first value emitted by the source Observable that meets some\n * condition.\n *\n * <span class=\"informal\">Finds the first value that passes some test and emits\n * that.</span>\n *\n * <img src=\"./img/find.png\" width=\"100%\">\n *\n * `find` searches for the first item in the source Observable that matches the\n * specified condition embodied by the `predicate`, and returns the first\n * occurrence in the source. Unlike {@link first}, the `predicate` is required\n * in `find`, and does not emit an error if a valid value is not found.\n *\n * @example <caption>Find and emit the first click that happens on a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.find(ev => ev.target.tagName === 'DIV');\n * result.subscribe(x => console.log(x));\n *\n * @see {@link filter}\n * @see {@link first}\n * @see {@link findIndex}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable<T>): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable<T>} An Observable of the first item that matches the\n * condition.\n * @method find\n * @owner Observable\n */\nexport function find(predicate, thisArg) {\n    return higherOrder(predicate, thisArg)(this);\n}\n//# sourceMappingURL=find.js.map","import { Observable } from '../../Observable';\nimport { find } from '../../operator/find';\nObservable.prototype.find = find;\n//# sourceMappingURL=find.js.map","import { FindValueOperator } from '../operators/find';\n/**\n * Emits only the index of the first value emitted by the source Observable that\n * meets some condition.\n *\n * <span class=\"informal\">It's like {@link find}, but emits the index of the\n * found value, not the value itself.</span>\n *\n * <img src=\"./img/findIndex.png\" width=\"100%\">\n *\n * `findIndex` searches for the first item in the source Observable that matches\n * the specified condition embodied by the `predicate`, and returns the\n * (zero-based) index of the first occurrence in the source. Unlike\n * {@link first}, the `predicate` is required in `findIndex`, and does not emit\n * an error if a valid value is not found.\n *\n * @example <caption>Emit the index of first click that happens on a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.findIndex(ev => ev.target.tagName === 'DIV');\n * result.subscribe(x => console.log(x));\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link first}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable<T>): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the index of the first item that\n * matches the condition.\n * @method find\n * @owner Observable\n */\nexport function findIndex(predicate, thisArg) {\n    return function (source) { return source.lift(new FindValueOperator(predicate, source, true, thisArg)); };\n}\n//# sourceMappingURL=findIndex.js.map","import { findIndex as higherOrder } from '../operators/findIndex';\n/**\n * Emits only the index of the first value emitted by the source Observable that\n * meets some condition.\n *\n * <span class=\"informal\">It's like {@link find}, but emits the index of the\n * found value, not the value itself.</span>\n *\n * <img src=\"./img/findIndex.png\" width=\"100%\">\n *\n * `findIndex` searches for the first item in the source Observable that matches\n * the specified condition embodied by the `predicate`, and returns the\n * (zero-based) index of the first occurrence in the source. Unlike\n * {@link first}, the `predicate` is required in `findIndex`, and does not emit\n * an error if a valid value is not found.\n *\n * @example <caption>Emit the index of first click that happens on a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.findIndex(ev => ev.target.tagName === 'DIV');\n * result.subscribe(x => console.log(x));\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link first}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable<T>): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the index of the first item that\n * matches the condition.\n * @method find\n * @owner Observable\n */\nexport function findIndex(predicate, thisArg) {\n    return higherOrder(predicate, thisArg)(this);\n}\n//# sourceMappingURL=findIndex.js.map","import { Observable } from '../../Observable';\nimport { findIndex } from '../../operator/findIndex';\nObservable.prototype.findIndex = findIndex;\n//# sourceMappingURL=findIndex.js.map","/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n *\n * @class EmptyError\n */\nexport var EmptyError = (function (_super) {\n    __extends(EmptyError, _super);\n    function EmptyError() {\n        var err = _super.call(this, 'no elements in sequence');\n        this.name = err.name = 'EmptyError';\n        this.stack = err.stack;\n        this.message = err.message;\n    }\n    return EmptyError;\n}(Error));\n//# sourceMappingURL=EmptyError.js.map","import { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * <span class=\"informal\">Emits only the first value. Or emits only the first\n * value that passes some test.</span>\n *\n * <img src=\"./img/first.png\" width=\"100%\">\n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. It\n * may also take a `resultSelector` function to produce the output value from\n * the input value, and a `defaultValue` to emit in case the source completes\n * before it is able to emit a valid value. Throws an error if `defaultValue`\n * was not provided and a matching element is not found.\n *\n * @example <caption>Emit only the first click that happens on the DOM</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.first();\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Emits the first click that happens on a DIV</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.first(ev => ev.target.tagName === 'DIV');\n * result.subscribe(x => console.log(x));\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n *\n * @param {function(value: T, index: number, source: Observable<T>): boolean} [predicate]\n * An optional function called with each item to test for condition matching.\n * @param {function(value: T, index: number): R} [resultSelector] A function to\n * produce the value on the output Observable based on the values\n * and the indices of the source Observable. The arguments passed to this\n * function are:\n * - `value`: the value that was emitted on the source.\n * - `index`: the \"index\" of the value from the source.\n * @param {R} [defaultValue] The default value emitted in case no valid value\n * was found on the source.\n * @return {Observable<T|R>} An Observable of the first item that matches the\n * condition.\n * @method first\n * @owner Observable\n */\nexport function first(predicate, resultSelector, defaultValue) {\n    return function (source) { return source.lift(new FirstOperator(predicate, resultSelector, defaultValue, source)); };\n}\nvar FirstOperator = (function () {\n    function FirstOperator(predicate, resultSelector, defaultValue, source) {\n        this.predicate = predicate;\n        this.resultSelector = resultSelector;\n        this.defaultValue = defaultValue;\n        this.source = source;\n    }\n    FirstOperator.prototype.call = function (observer, source) {\n        return source.subscribe(new FirstSubscriber(observer, this.predicate, this.resultSelector, this.defaultValue, this.source));\n    };\n    return FirstOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar FirstSubscriber = (function (_super) {\n    __extends(FirstSubscriber, _super);\n    function FirstSubscriber(destination, predicate, resultSelector, defaultValue, source) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.resultSelector = resultSelector;\n        this.defaultValue = defaultValue;\n        this.source = source;\n        this.index = 0;\n        this.hasCompleted = false;\n        this._emitted = false;\n    }\n    FirstSubscriber.prototype._next = function (value) {\n        var index = this.index++;\n        if (this.predicate) {\n            this._tryPredicate(value, index);\n        }\n        else {\n            this._emit(value, index);\n        }\n    };\n    FirstSubscriber.prototype._tryPredicate = function (value, index) {\n        var result;\n        try {\n            result = this.predicate(value, index, this.source);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        if (result) {\n            this._emit(value, index);\n        }\n    };\n    FirstSubscriber.prototype._emit = function (value, index) {\n        if (this.resultSelector) {\n            this._tryResultSelector(value, index);\n            return;\n        }\n        this._emitFinal(value);\n    };\n    FirstSubscriber.prototype._tryResultSelector = function (value, index) {\n        var result;\n        try {\n            result = this.resultSelector(value, index);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this._emitFinal(result);\n    };\n    FirstSubscriber.prototype._emitFinal = function (value) {\n        var destination = this.destination;\n        if (!this._emitted) {\n            this._emitted = true;\n            destination.next(value);\n            destination.complete();\n            this.hasCompleted = true;\n        }\n    };\n    FirstSubscriber.prototype._complete = function () {\n        var destination = this.destination;\n        if (!this.hasCompleted && typeof this.defaultValue !== 'undefined') {\n            destination.next(this.defaultValue);\n            destination.complete();\n        }\n        else if (!this.hasCompleted) {\n            destination.error(new EmptyError);\n        }\n    };\n    return FirstSubscriber;\n}(Subscriber));\n//# sourceMappingURL=first.js.map","import { first as higherOrder } from '../operators/first';\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * <span class=\"informal\">Emits only the first value. Or emits only the first\n * value that passes some test.</span>\n *\n * <img src=\"./img/first.png\" width=\"100%\">\n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. It\n * may also take a `resultSelector` function to produce the output value from\n * the input value, and a `defaultValue` to emit in case the source completes\n * before it is able to emit a valid value. Throws an error if `defaultValue`\n * was not provided and a matching element is not found.\n *\n * @example <caption>Emit only the first click that happens on the DOM</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.first();\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Emits the first click that happens on a DIV</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.first(ev => ev.target.tagName === 'DIV');\n * result.subscribe(x => console.log(x));\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n *\n * @param {function(value: T, index: number, source: Observable<T>): boolean} [predicate]\n * An optional function called with each item to test for condition matching.\n * @param {function(value: T, index: number): R} [resultSelector] A function to\n * produce the value on the output Observable based on the values\n * and the indices of the source Observable. The arguments passed to this\n * function are:\n * - `value`: the value that was emitted on the source.\n * - `index`: the \"index\" of the value from the source.\n * @param {R} [defaultValue] The default value emitted in case no valid value\n * was found on the source.\n * @return {Observable<T|R>} An Observable of the first item that matches the\n * condition.\n * @method first\n * @owner Observable\n */\nexport function first(predicate, resultSelector, defaultValue) {\n    return higherOrder(predicate, resultSelector, defaultValue)(this);\n}\n//# sourceMappingURL=first.js.map","import { Observable } from '../../Observable';\nimport { first } from '../../operator/first';\nObservable.prototype.first = first;\n//# sourceMappingURL=first.js.map","export var MapPolyfill = (function () {\n    function MapPolyfill() {\n        this.size = 0;\n        this._values = [];\n        this._keys = [];\n    }\n    MapPolyfill.prototype.get = function (key) {\n        var i = this._keys.indexOf(key);\n        return i === -1 ? undefined : this._values[i];\n    };\n    MapPolyfill.prototype.set = function (key, value) {\n        var i = this._keys.indexOf(key);\n        if (i === -1) {\n            this._keys.push(key);\n            this._values.push(value);\n            this.size++;\n        }\n        else {\n            this._values[i] = value;\n        }\n        return this;\n    };\n    MapPolyfill.prototype.delete = function (key) {\n        var i = this._keys.indexOf(key);\n        if (i === -1) {\n            return false;\n        }\n        this._values.splice(i, 1);\n        this._keys.splice(i, 1);\n        this.size--;\n        return true;\n    };\n    MapPolyfill.prototype.clear = function () {\n        this._keys.length = 0;\n        this._values.length = 0;\n        this.size = 0;\n    };\n    MapPolyfill.prototype.forEach = function (cb, thisArg) {\n        for (var i = 0; i < this.size; i++) {\n            cb.call(thisArg, this._values[i], this._keys[i]);\n        }\n    };\n    return MapPolyfill;\n}());\n//# sourceMappingURL=MapPolyfill.js.map","import { root } from './root';\nimport { MapPolyfill } from './MapPolyfill';\nexport var Map = root.Map || (function () { return MapPolyfill; })();\n//# sourceMappingURL=Map.js.map","export var FastMap = (function () {\n    function FastMap() {\n        this.values = {};\n    }\n    FastMap.prototype.delete = function (key) {\n        this.values[key] = null;\n        return true;\n    };\n    FastMap.prototype.set = function (key, value) {\n        this.values[key] = value;\n        return this;\n    };\n    FastMap.prototype.get = function (key) {\n        return this.values[key];\n    };\n    FastMap.prototype.forEach = function (cb, thisArg) {\n        var values = this.values;\n        for (var key in values) {\n            if (values.hasOwnProperty(key) && values[key] !== null) {\n                cb.call(thisArg, values[key], key);\n            }\n        }\n    };\n    FastMap.prototype.clear = function () {\n        this.values = {};\n    };\n    return FastMap;\n}());\n//# sourceMappingURL=FastMap.js.map","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Map } from '../util/Map';\nimport { FastMap } from '../util/FastMap';\n/* tslint:enable:max-line-length */\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * <img src=\"./img/groupBy.png\" width=\"100%\">\n *\n * @example <caption>Group objects by id and return as array</caption>\n * Observable.of<Obj>({id: 1, name: 'aze1'},\n *                    {id: 2, name: 'sf2'},\n *                    {id: 2, name: 'dg2'},\n *                    {id: 1, name: 'erg1'},\n *                    {id: 1, name: 'df1'},\n *                    {id: 2, name: 'sfqfb2'},\n *                    {id: 3, name: 'qfs3'},\n *                    {id: 2, name: 'qsgqsfg2'}\n *     )\n *     .groupBy(p => p.id)\n *     .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], []))\n *     .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'aze1' },\n * //   { id: 1, name: 'erg1' },\n * //   { id: 1, name: 'df1' } ]\n * //\n * // [ { id: 2, name: 'sf2' },\n * //   { id: 2, name: 'dg2' },\n * //   { id: 2, name: 'sfqfb2' },\n * //   { id: 2, name: 'qsgqsfg2' } ]\n * //\n * // [ { id: 3, name: 'qfs3' } ]\n *\n * @example <caption>Pivot data on the id field</caption>\n * Observable.of<Obj>({id: 1, name: 'aze1'},\n *                    {id: 2, name: 'sf2'},\n *                    {id: 2, name: 'dg2'},\n *                    {id: 1, name: 'erg1'},\n *                    {id: 1, name: 'df1'},\n *                    {id: 2, name: 'sfqfb2'},\n *                    {id: 3, name: 'qfs1'},\n *                    {id: 2, name: 'qsgqsfg2'}\n *                   )\n *     .groupBy(p => p.id, p => p.name)\n *     .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], [\"\" + group$.key]))\n *     .map(arr => ({'id': parseInt(arr[0]), 'values': arr.slice(1)}))\n *     .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'aze1', 'erg1', 'df1' ] }\n * // { id: 2, values: [ 'sf2', 'dg2', 'sfqfb2', 'qsgqsfg2' ] }\n * // { id: 3, values: [ 'qfs1' ] }\n *\n * @param {function(value: T): K} keySelector A function that extracts the key\n * for each item.\n * @param {function(value: T): R} [elementSelector] A function that extracts the\n * return element for each item.\n * @param {function(grouped: GroupedObservable<K,R>): Observable<any>} [durationSelector]\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @return {Observable<GroupedObservable<K,R>>} An Observable that emits\n * GroupedObservables, each of which corresponds to a unique key value and each\n * of which emits those items from the source Observable that share that key\n * value.\n * @method groupBy\n * @owner Observable\n */\nexport function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {\n    return function (source) {\n        return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n    };\n}\nvar GroupByOperator = (function () {\n    function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {\n        this.keySelector = keySelector;\n        this.elementSelector = elementSelector;\n        this.durationSelector = durationSelector;\n        this.subjectSelector = subjectSelector;\n    }\n    GroupByOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));\n    };\n    return GroupByOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar GroupBySubscriber = (function (_super) {\n    __extends(GroupBySubscriber, _super);\n    function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {\n        _super.call(this, destination);\n        this.keySelector = keySelector;\n        this.elementSelector = elementSelector;\n        this.durationSelector = durationSelector;\n        this.subjectSelector = subjectSelector;\n        this.groups = null;\n        this.attemptedToUnsubscribe = false;\n        this.count = 0;\n    }\n    GroupBySubscriber.prototype._next = function (value) {\n        var key;\n        try {\n            key = this.keySelector(value);\n        }\n        catch (err) {\n            this.error(err);\n            return;\n        }\n        this._group(value, key);\n    };\n    GroupBySubscriber.prototype._group = function (value, key) {\n        var groups = this.groups;\n        if (!groups) {\n            groups = this.groups = typeof key === 'string' ? new FastMap() : new Map();\n        }\n        var group = groups.get(key);\n        var element;\n        if (this.elementSelector) {\n            try {\n                element = this.elementSelector(value);\n            }\n            catch (err) {\n                this.error(err);\n            }\n        }\n        else {\n            element = value;\n        }\n        if (!group) {\n            group = this.subjectSelector ? this.subjectSelector() : new Subject();\n            groups.set(key, group);\n            var groupedObservable = new GroupedObservable(key, group, this);\n            this.destination.next(groupedObservable);\n            if (this.durationSelector) {\n                var duration = void 0;\n                try {\n                    duration = this.durationSelector(new GroupedObservable(key, group));\n                }\n                catch (err) {\n                    this.error(err);\n                    return;\n                }\n                this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n            }\n        }\n        if (!group.closed) {\n            group.next(element);\n        }\n    };\n    GroupBySubscriber.prototype._error = function (err) {\n        var groups = this.groups;\n        if (groups) {\n            groups.forEach(function (group, key) {\n                group.error(err);\n            });\n            groups.clear();\n        }\n        this.destination.error(err);\n    };\n    GroupBySubscriber.prototype._complete = function () {\n        var groups = this.groups;\n        if (groups) {\n            groups.forEach(function (group, key) {\n                group.complete();\n            });\n            groups.clear();\n        }\n        this.destination.complete();\n    };\n    GroupBySubscriber.prototype.removeGroup = function (key) {\n        this.groups.delete(key);\n    };\n    GroupBySubscriber.prototype.unsubscribe = function () {\n        if (!this.closed) {\n            this.attemptedToUnsubscribe = true;\n            if (this.count === 0) {\n                _super.prototype.unsubscribe.call(this);\n            }\n        }\n    };\n    return GroupBySubscriber;\n}(Subscriber));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar GroupDurationSubscriber = (function (_super) {\n    __extends(GroupDurationSubscriber, _super);\n    function GroupDurationSubscriber(key, group, parent) {\n        _super.call(this, group);\n        this.key = key;\n        this.group = group;\n        this.parent = parent;\n    }\n    GroupDurationSubscriber.prototype._next = function (value) {\n        this.complete();\n    };\n    /** @deprecated internal use only */ GroupDurationSubscriber.prototype._unsubscribe = function () {\n        var _a = this, parent = _a.parent, key = _a.key;\n        this.key = this.parent = null;\n        if (parent) {\n            parent.removeGroup(key);\n        }\n    };\n    return GroupDurationSubscriber;\n}(Subscriber));\n/**\n * An Observable representing values belonging to the same group represented by\n * a common key. The values emitted by a GroupedObservable come from the source\n * Observable. The common key is available as the field `key` on a\n * GroupedObservable instance.\n *\n * @class GroupedObservable<K, T>\n */\nexport var GroupedObservable = (function (_super) {\n    __extends(GroupedObservable, _super);\n    function GroupedObservable(key, groupSubject, refCountSubscription) {\n        _super.call(this);\n        this.key = key;\n        this.groupSubject = groupSubject;\n        this.refCountSubscription = refCountSubscription;\n    }\n    /** @deprecated internal use only */ GroupedObservable.prototype._subscribe = function (subscriber) {\n        var subscription = new Subscription();\n        var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;\n        if (refCountSubscription && !refCountSubscription.closed) {\n            subscription.add(new InnerRefCountSubscription(refCountSubscription));\n        }\n        subscription.add(groupSubject.subscribe(subscriber));\n        return subscription;\n    };\n    return GroupedObservable;\n}(Observable));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar InnerRefCountSubscription = (function (_super) {\n    __extends(InnerRefCountSubscription, _super);\n    function InnerRefCountSubscription(parent) {\n        _super.call(this);\n        this.parent = parent;\n        parent.count++;\n    }\n    InnerRefCountSubscription.prototype.unsubscribe = function () {\n        var parent = this.parent;\n        if (!parent.closed && !this.closed) {\n            _super.prototype.unsubscribe.call(this);\n            parent.count -= 1;\n            if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n                parent.unsubscribe();\n            }\n        }\n    };\n    return InnerRefCountSubscription;\n}(Subscription));\n//# sourceMappingURL=groupBy.js.map","import { groupBy as higherOrder, GroupedObservable } from '../operators/groupBy';\nexport { GroupedObservable };\n/* tslint:enable:max-line-length */\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * <img src=\"./img/groupBy.png\" width=\"100%\">\n *\n * @example <caption>Group objects by id and return as array</caption>\n * Observable.of<Obj>({id: 1, name: 'aze1'},\n *                    {id: 2, name: 'sf2'},\n *                    {id: 2, name: 'dg2'},\n *                    {id: 1, name: 'erg1'},\n *                    {id: 1, name: 'df1'},\n *                    {id: 2, name: 'sfqfb2'},\n *                    {id: 3, name: 'qfs3'},\n *                    {id: 2, name: 'qsgqsfg2'}\n *     )\n *     .groupBy(p => p.id)\n *     .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], []))\n *     .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'aze1' },\n * //   { id: 1, name: 'erg1' },\n * //   { id: 1, name: 'df1' } ]\n * //\n * // [ { id: 2, name: 'sf2' },\n * //   { id: 2, name: 'dg2' },\n * //   { id: 2, name: 'sfqfb2' },\n * //   { id: 2, name: 'qsgqsfg2' } ]\n * //\n * // [ { id: 3, name: 'qfs3' } ]\n *\n * @example <caption>Pivot data on the id field</caption>\n * Observable.of<Obj>({id: 1, name: 'aze1'},\n *                    {id: 2, name: 'sf2'},\n *                    {id: 2, name: 'dg2'},\n *                    {id: 1, name: 'erg1'},\n *                    {id: 1, name: 'df1'},\n *                    {id: 2, name: 'sfqfb2'},\n *                    {id: 3, name: 'qfs1'},\n *                    {id: 2, name: 'qsgqsfg2'}\n *                   )\n *     .groupBy(p => p.id, p => p.name)\n *     .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], [\"\" + group$.key]))\n *     .map(arr => ({'id': parseInt(arr[0]), 'values': arr.slice(1)}))\n *     .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'aze1', 'erg1', 'df1' ] }\n * // { id: 2, values: [ 'sf2', 'dg2', 'sfqfb2', 'qsgqsfg2' ] }\n * // { id: 3, values: [ 'qfs1' ] }\n *\n * @param {function(value: T): K} keySelector A function that extracts the key\n * for each item.\n * @param {function(value: T): R} [elementSelector] A function that extracts the\n * return element for each item.\n * @param {function(grouped: GroupedObservable<K,R>): Observable<any>} [durationSelector]\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @return {Observable<GroupedObservable<K,R>>} An Observable that emits\n * GroupedObservables, each of which corresponds to a unique key value and each\n * of which emits those items from the source Observable that share that key\n * value.\n * @method groupBy\n * @owner Observable\n */\nexport function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {\n    return higherOrder(keySelector, elementSelector, durationSelector, subjectSelector)(this);\n}\n//# sourceMappingURL=groupBy.js.map","import { Observable } from '../../Observable';\nimport { groupBy } from '../../operator/groupBy';\nObservable.prototype.groupBy = groupBy;\n//# sourceMappingURL=groupBy.js.map","import { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * <img src=\"./img/ignoreElements.png\" width=\"100%\">\n *\n * @return {Observable} An empty Observable that only calls `complete`\n * or `error`, based on which one is called by the source Observable.\n * @method ignoreElements\n * @owner Observable\n */\nexport function ignoreElements() {\n    return function ignoreElementsOperatorFunction(source) {\n        return source.lift(new IgnoreElementsOperator());\n    };\n}\nvar IgnoreElementsOperator = (function () {\n    function IgnoreElementsOperator() {\n    }\n    IgnoreElementsOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n    };\n    return IgnoreElementsOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar IgnoreElementsSubscriber = (function (_super) {\n    __extends(IgnoreElementsSubscriber, _super);\n    function IgnoreElementsSubscriber() {\n        _super.apply(this, arguments);\n    }\n    IgnoreElementsSubscriber.prototype._next = function (unused) {\n        noop();\n    };\n    return IgnoreElementsSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ignoreElements.js.map","import { ignoreElements as higherOrder } from '../operators/ignoreElements';\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * <img src=\"./img/ignoreElements.png\" width=\"100%\">\n *\n * @return {Observable} An empty Observable that only calls `complete`\n * or `error`, based on which one is called by the source Observable.\n * @method ignoreElements\n * @owner Observable\n */\nexport function ignoreElements() {\n    return higherOrder()(this);\n}\n;\n//# sourceMappingURL=ignoreElements.js.map","import { Observable } from '../../Observable';\nimport { ignoreElements } from '../../operator/ignoreElements';\nObservable.prototype.ignoreElements = ignoreElements;\n//# sourceMappingURL=ignoreElements.js.map","import { Subscriber } from '../Subscriber';\nexport function isEmpty() {\n    return function (source) { return source.lift(new IsEmptyOperator()); };\n}\nvar IsEmptyOperator = (function () {\n    function IsEmptyOperator() {\n    }\n    IsEmptyOperator.prototype.call = function (observer, source) {\n        return source.subscribe(new IsEmptySubscriber(observer));\n    };\n    return IsEmptyOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar IsEmptySubscriber = (function (_super) {\n    __extends(IsEmptySubscriber, _super);\n    function IsEmptySubscriber(destination) {\n        _super.call(this, destination);\n    }\n    IsEmptySubscriber.prototype.notifyComplete = function (isEmpty) {\n        var destination = this.destination;\n        destination.next(isEmpty);\n        destination.complete();\n    };\n    IsEmptySubscriber.prototype._next = function (value) {\n        this.notifyComplete(false);\n    };\n    IsEmptySubscriber.prototype._complete = function () {\n        this.notifyComplete(true);\n    };\n    return IsEmptySubscriber;\n}(Subscriber));\n//# sourceMappingURL=isEmpty.js.map","import { isEmpty as higherOrder } from '../operators/isEmpty';\n/**\n * If the source Observable is empty it returns an Observable that emits true, otherwise it emits false.\n *\n * <img src=\"./img/isEmpty.png\" width=\"100%\">\n *\n * @return {Observable} An Observable that emits a Boolean.\n * @method isEmpty\n * @owner Observable\n */\nexport function isEmpty() {\n    return higherOrder()(this);\n}\n//# sourceMappingURL=isEmpty.js.map","import { Observable } from '../../Observable';\nimport { isEmpty } from '../../operator/isEmpty';\nObservable.prototype.isEmpty = isEmpty;\n//# sourceMappingURL=isEmpty.js.map","import { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * <img src=\"./img/audit.png\" width=\"100%\">\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value or completes, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.audit(ev => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return {Observable<T>} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method audit\n * @owner Observable\n */\nexport function audit(durationSelector) {\n    return function auditOperatorFunction(source) {\n        return source.lift(new AuditOperator(durationSelector));\n    };\n}\nvar AuditOperator = (function () {\n    function AuditOperator(durationSelector) {\n        this.durationSelector = durationSelector;\n    }\n    AuditOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n    };\n    return AuditOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar AuditSubscriber = (function (_super) {\n    __extends(AuditSubscriber, _super);\n    function AuditSubscriber(destination, durationSelector) {\n        _super.call(this, destination);\n        this.durationSelector = durationSelector;\n        this.hasValue = false;\n    }\n    AuditSubscriber.prototype._next = function (value) {\n        this.value = value;\n        this.hasValue = true;\n        if (!this.throttled) {\n            var duration = tryCatch(this.durationSelector)(value);\n            if (duration === errorObject) {\n                this.destination.error(errorObject.e);\n            }\n            else {\n                var innerSubscription = subscribeToResult(this, duration);\n                if (innerSubscription.closed) {\n                    this.clearThrottle();\n                }\n                else {\n                    this.add(this.throttled = innerSubscription);\n                }\n            }\n        }\n    };\n    AuditSubscriber.prototype.clearThrottle = function () {\n        var _a = this, value = _a.value, hasValue = _a.hasValue, throttled = _a.throttled;\n        if (throttled) {\n            this.remove(throttled);\n            this.throttled = null;\n            throttled.unsubscribe();\n        }\n        if (hasValue) {\n            this.value = null;\n            this.hasValue = false;\n            this.destination.next(value);\n        }\n    };\n    AuditSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {\n        this.clearThrottle();\n    };\n    AuditSubscriber.prototype.notifyComplete = function () {\n        this.clearThrottle();\n    };\n    return AuditSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=audit.js.map","import { audit as higherOrder } from '../operators/audit';\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * <img src=\"./img/audit.png\" width=\"100%\">\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value or completes, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.audit(ev => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return {Observable<T>} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method audit\n * @owner Observable\n */\nexport function audit(durationSelector) {\n    return higherOrder(durationSelector)(this);\n}\n//# sourceMappingURL=audit.js.map","import { Observable } from '../../Observable';\nimport { audit } from '../../operator/audit';\nObservable.prototype.audit = audit;\n//# sourceMappingURL=audit.js.map","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * <span class=\"informal\">When it sees a source values, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.</span>\n *\n * <img src=\"./img/auditTime.png\" width=\"100%\">\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link IScheduler} for managing timers.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.auditTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return {Observable<T>} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method auditTime\n * @owner Observable\n */\nexport function auditTime(duration, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return audit(function () { return timer(duration, scheduler); });\n}\n//# sourceMappingURL=auditTime.js.map","import { async } from '../scheduler/async';\nimport { auditTime as higherOrder } from '../operators/auditTime';\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * <span class=\"informal\">When it sees a source values, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.</span>\n *\n * <img src=\"./img/auditTime.png\" width=\"100%\">\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link IScheduler} for managing timers.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.auditTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return {Observable<T>} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method auditTime\n * @owner Observable\n */\nexport function auditTime(duration, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return higherOrder(duration, scheduler)(this);\n}\n//# sourceMappingURL=auditTime.js.map","import { Observable } from '../../Observable';\nimport { auditTime } from '../../operator/auditTime';\nObservable.prototype.auditTime = auditTime;\n//# sourceMappingURL=auditTime.js.map","import { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits only the last item emitted by the source Observable.\n * It optionally takes a predicate function as a parameter, in which case, rather than emitting\n * the last item from the source Observable, the resulting Observable will emit the last item\n * from the source Observable that satisfies the predicate.\n *\n * <img src=\"./img/last.png\" width=\"100%\">\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {function} predicate - The condition any source emitted item has to satisfy.\n * @return {Observable} An Observable that emits only the last item satisfying the given condition\n * from the source, or an NoSuchElementException if no such items are emitted.\n * @throws - Throws if no items that match the predicate are emitted by the source Observable.\n * @method last\n * @owner Observable\n */\nexport function last(predicate, resultSelector, defaultValue) {\n    return function (source) { return source.lift(new LastOperator(predicate, resultSelector, defaultValue, source)); };\n}\nvar LastOperator = (function () {\n    function LastOperator(predicate, resultSelector, defaultValue, source) {\n        this.predicate = predicate;\n        this.resultSelector = resultSelector;\n        this.defaultValue = defaultValue;\n        this.source = source;\n    }\n    LastOperator.prototype.call = function (observer, source) {\n        return source.subscribe(new LastSubscriber(observer, this.predicate, this.resultSelector, this.defaultValue, this.source));\n    };\n    return LastOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar LastSubscriber = (function (_super) {\n    __extends(LastSubscriber, _super);\n    function LastSubscriber(destination, predicate, resultSelector, defaultValue, source) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.resultSelector = resultSelector;\n        this.defaultValue = defaultValue;\n        this.source = source;\n        this.hasValue = false;\n        this.index = 0;\n        if (typeof defaultValue !== 'undefined') {\n            this.lastValue = defaultValue;\n            this.hasValue = true;\n        }\n    }\n    LastSubscriber.prototype._next = function (value) {\n        var index = this.index++;\n        if (this.predicate) {\n            this._tryPredicate(value, index);\n        }\n        else {\n            if (this.resultSelector) {\n                this._tryResultSelector(value, index);\n                return;\n            }\n            this.lastValue = value;\n            this.hasValue = true;\n        }\n    };\n    LastSubscriber.prototype._tryPredicate = function (value, index) {\n        var result;\n        try {\n            result = this.predicate(value, index, this.source);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        if (result) {\n            if (this.resultSelector) {\n                this._tryResultSelector(value, index);\n                return;\n            }\n            this.lastValue = value;\n            this.hasValue = true;\n        }\n    };\n    LastSubscriber.prototype._tryResultSelector = function (value, index) {\n        var result;\n        try {\n            result = this.resultSelector(value, index);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.lastValue = result;\n        this.hasValue = true;\n    };\n    LastSubscriber.prototype._complete = function () {\n        var destination = this.destination;\n        if (this.hasValue) {\n            destination.next(this.lastValue);\n            destination.complete();\n        }\n        else {\n            destination.error(new EmptyError);\n        }\n    };\n    return LastSubscriber;\n}(Subscriber));\n//# sourceMappingURL=last.js.map","import { last as higherOrder } from '../operators/last';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits only the last item emitted by the source Observable.\n * It optionally takes a predicate function as a parameter, in which case, rather than emitting\n * the last item from the source Observable, the resulting Observable will emit the last item\n * from the source Observable that satisfies the predicate.\n *\n * <img src=\"./img/last.png\" width=\"100%\">\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {function} predicate - The condition any source emitted item has to satisfy.\n * @return {Observable} An Observable that emits only the last item satisfying the given condition\n * from the source, or an NoSuchElementException if no such items are emitted.\n * @throws - Throws if no items that match the predicate are emitted by the source Observable.\n * @method last\n * @owner Observable\n */\nexport function last(predicate, resultSelector, defaultValue) {\n    return higherOrder(predicate, resultSelector, defaultValue)(this);\n}\n//# sourceMappingURL=last.js.map","import { Observable } from '../../Observable';\nimport { last } from '../../operator/last';\nObservable.prototype.last = last;\n//# sourceMappingURL=last.js.map","/**\n * @param func\n * @return {Observable<R>}\n * @method let\n * @owner Observable\n */\nexport function letProto(func) {\n    return func(this);\n}\n//# sourceMappingURL=let.js.map","import { Observable } from '../../Observable';\nimport { letProto } from '../../operator/let';\nObservable.prototype.let = letProto;\nObservable.prototype.letBind = letProto;\n//# sourceMappingURL=let.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Returns an Observable that emits whether or not every item of the source satisfies the condition specified.\n *\n * @example <caption>A simple example emitting true if all elements are less than 5, false otherwise</caption>\n *  Observable.of(1, 2, 3, 4, 5, 6)\n *     .every(x => x < 5)\n *     .subscribe(x => console.log(x)); // -> false\n *\n * @param {function} predicate A function for determining if an item meets a specified condition.\n * @param {any} [thisArg] Optional object to use for `this` in the callback.\n * @return {Observable} An Observable of booleans that determines if all items of the source Observable meet the condition specified.\n * @method every\n * @owner Observable\n */\nexport function every(predicate, thisArg) {\n    return function (source) { return source.lift(new EveryOperator(predicate, thisArg, source)); };\n}\nvar EveryOperator = (function () {\n    function EveryOperator(predicate, thisArg, source) {\n        this.predicate = predicate;\n        this.thisArg = thisArg;\n        this.source = source;\n    }\n    EveryOperator.prototype.call = function (observer, source) {\n        return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));\n    };\n    return EveryOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar EverySubscriber = (function (_super) {\n    __extends(EverySubscriber, _super);\n    function EverySubscriber(destination, predicate, thisArg, source) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.thisArg = thisArg;\n        this.source = source;\n        this.index = 0;\n        this.thisArg = thisArg || this;\n    }\n    EverySubscriber.prototype.notifyComplete = function (everyValueMatch) {\n        this.destination.next(everyValueMatch);\n        this.destination.complete();\n    };\n    EverySubscriber.prototype._next = function (value) {\n        var result = false;\n        try {\n            result = this.predicate.call(this.thisArg, value, this.index++, this.source);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        if (!result) {\n            this.notifyComplete(false);\n        }\n    };\n    EverySubscriber.prototype._complete = function () {\n        this.notifyComplete(true);\n    };\n    return EverySubscriber;\n}(Subscriber));\n//# sourceMappingURL=every.js.map","import { every as higherOrder } from '../operators/every';\n/**\n * Returns an Observable that emits whether or not every item of the source satisfies the condition specified.\n *\n * @example <caption>A simple example emitting true if all elements are less than 5, false otherwise</caption>\n *  Observable.of(1, 2, 3, 4, 5, 6)\n *     .every(x => x < 5)\n *     .subscribe(x => console.log(x)); // -> false\n *\n * @param {function} predicate A function for determining if an item meets a specified condition.\n * @param {any} [thisArg] Optional object to use for `this` in the callback.\n * @return {Observable} An Observable of booleans that determines if all items of the source Observable meet the condition specified.\n * @method every\n * @owner Observable\n */\nexport function every(predicate, thisArg) {\n    return higherOrder(predicate, thisArg)(this);\n}\n//# sourceMappingURL=every.js.map","import { Observable } from '../../Observable';\nimport { every } from '../../operator/every';\nObservable.prototype.every = every;\n//# sourceMappingURL=every.js.map","import { map as higherOrderMap } from '../operators/map';\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nexport function map(project, thisArg) {\n    return higherOrderMap(project, thisArg)(this);\n}\n//# sourceMappingURL=map.js.map","import { Observable } from '../../Observable';\nimport { map } from '../../operator/map';\nObservable.prototype.map = map;\n//# sourceMappingURL=map.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * <span class=\"informal\">Like {@link map}, but it maps every source value to\n * the same output value every time.</span>\n *\n * <img src=\"./img/mapTo.png\" width=\"100%\">\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * @example <caption>Map every click to the string 'Hi'</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var greetings = clicks.mapTo('Hi');\n * greetings.subscribe(x => console.log(x));\n *\n * @see {@link map}\n *\n * @param {any} value The value to map each source value to.\n * @return {Observable} An Observable that emits the given `value` every time\n * the source Observable emits something.\n * @method mapTo\n * @owner Observable\n */\nexport function mapTo(value) {\n    return function (source) { return source.lift(new MapToOperator(value)); };\n}\nvar MapToOperator = (function () {\n    function MapToOperator(value) {\n        this.value = value;\n    }\n    MapToOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new MapToSubscriber(subscriber, this.value));\n    };\n    return MapToOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MapToSubscriber = (function (_super) {\n    __extends(MapToSubscriber, _super);\n    function MapToSubscriber(destination, value) {\n        _super.call(this, destination);\n        this.value = value;\n    }\n    MapToSubscriber.prototype._next = function (x) {\n        this.destination.next(this.value);\n    };\n    return MapToSubscriber;\n}(Subscriber));\n//# sourceMappingURL=mapTo.js.map","import { mapTo as higherOrder } from '../operators/mapTo';\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * <span class=\"informal\">Like {@link map}, but it maps every source value to\n * the same output value every time.</span>\n *\n * <img src=\"./img/mapTo.png\" width=\"100%\">\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * @example <caption>Map every click to the string 'Hi'</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var greetings = clicks.mapTo('Hi');\n * greetings.subscribe(x => console.log(x));\n *\n * @see {@link map}\n *\n * @param {any} value The value to map each source value to.\n * @return {Observable} An Observable that emits the given `value` every time\n * the source Observable emits something.\n * @method mapTo\n * @owner Observable\n */\nexport function mapTo(value) {\n    return higherOrder(value)(this);\n}\n//# sourceMappingURL=mapTo.js.map","import { Observable } from '../../Observable';\nimport { mapTo } from '../../operator/mapTo';\nObservable.prototype.mapTo = mapTo;\n//# sourceMappingURL=mapTo.js.map","import { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\n/**\n * Represents all of the notifications from the source Observable as `next`\n * emissions marked with their original types within {@link Notification}\n * objects.\n *\n * <span class=\"informal\">Wraps `next`, `error` and `complete` emissions in\n * {@link Notification} objects, emitted as `next` on the output Observable.\n * </span>\n *\n * <img src=\"./img/materialize.png\" width=\"100%\">\n *\n * `materialize` returns an Observable that emits a `next` notification for each\n * `next`, `error`, or `complete` emission of the source Observable. When the\n * source Observable emits `complete`, the output Observable will emit `next` as\n * a Notification of type \"complete\", and then it will emit `complete` as well.\n * When the source Observable emits `error`, the output will emit `next` as a\n * Notification of type \"error\", and then `complete`.\n *\n * This operator is useful for producing metadata of the source Observable, to\n * be consumed as `next` emissions. Use it in conjunction with\n * {@link dematerialize}.\n *\n * @example <caption>Convert a faulty Observable to an Observable of Notifications</caption>\n * var letters = Rx.Observable.of('a', 'b', 13, 'd');\n * var upperCase = letters.map(x => x.toUpperCase());\n * var materialized = upperCase.materialize();\n * materialized.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - Notification {kind: \"N\", value: \"A\", error: undefined, hasValue: true}\n * // - Notification {kind: \"N\", value: \"B\", error: undefined, hasValue: true}\n * // - Notification {kind: \"E\", value: undefined, error: TypeError:\n * //   x.toUpperCase is not a function at MapSubscriber.letters.map.x\n * //   [as project] (http://1…, hasValue: false}\n *\n * @see {@link Notification}\n * @see {@link dematerialize}\n *\n * @return {Observable<Notification<T>>} An Observable that emits\n * {@link Notification} objects that wrap the original emissions from the source\n * Observable with metadata.\n * @method materialize\n * @owner Observable\n */\nexport function materialize() {\n    return function materializeOperatorFunction(source) {\n        return source.lift(new MaterializeOperator());\n    };\n}\nvar MaterializeOperator = (function () {\n    function MaterializeOperator() {\n    }\n    MaterializeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new MaterializeSubscriber(subscriber));\n    };\n    return MaterializeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MaterializeSubscriber = (function (_super) {\n    __extends(MaterializeSubscriber, _super);\n    function MaterializeSubscriber(destination) {\n        _super.call(this, destination);\n    }\n    MaterializeSubscriber.prototype._next = function (value) {\n        this.destination.next(Notification.createNext(value));\n    };\n    MaterializeSubscriber.prototype._error = function (err) {\n        var destination = this.destination;\n        destination.next(Notification.createError(err));\n        destination.complete();\n    };\n    MaterializeSubscriber.prototype._complete = function () {\n        var destination = this.destination;\n        destination.next(Notification.createComplete());\n        destination.complete();\n    };\n    return MaterializeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=materialize.js.map","import { materialize as higherOrder } from '../operators/materialize';\n/**\n * Represents all of the notifications from the source Observable as `next`\n * emissions marked with their original types within {@link Notification}\n * objects.\n *\n * <span class=\"informal\">Wraps `next`, `error` and `complete` emissions in\n * {@link Notification} objects, emitted as `next` on the output Observable.\n * </span>\n *\n * <img src=\"./img/materialize.png\" width=\"100%\">\n *\n * `materialize` returns an Observable that emits a `next` notification for each\n * `next`, `error`, or `complete` emission of the source Observable. When the\n * source Observable emits `complete`, the output Observable will emit `next` as\n * a Notification of type \"complete\", and then it will emit `complete` as well.\n * When the source Observable emits `error`, the output will emit `next` as a\n * Notification of type \"error\", and then `complete`.\n *\n * This operator is useful for producing metadata of the source Observable, to\n * be consumed as `next` emissions. Use it in conjunction with\n * {@link dematerialize}.\n *\n * @example <caption>Convert a faulty Observable to an Observable of Notifications</caption>\n * var letters = Rx.Observable.of('a', 'b', 13, 'd');\n * var upperCase = letters.map(x => x.toUpperCase());\n * var materialized = upperCase.materialize();\n * materialized.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - Notification {kind: \"N\", value: \"A\", error: undefined, hasValue: true}\n * // - Notification {kind: \"N\", value: \"B\", error: undefined, hasValue: true}\n * // - Notification {kind: \"E\", value: undefined, error: TypeError:\n * //   x.toUpperCase is not a function at MapSubscriber.letters.map.x\n * //   [as project] (http://1…, hasValue: false}\n *\n * @see {@link Notification}\n * @see {@link dematerialize}\n *\n * @return {Observable<Notification<T>>} An Observable that emits\n * {@link Notification} objects that wrap the original emissions from the source\n * Observable with metadata.\n * @method materialize\n * @owner Observable\n */\nexport function materialize() {\n    return higherOrder()(this);\n}\n//# sourceMappingURL=materialize.js.map","import { Observable } from '../../Observable';\nimport { materialize } from '../../operator/materialize';\nObservable.prototype.materialize = materialize;\n//# sourceMappingURL=materialize.js.map","import { Subscriber } from '../Subscriber';\n/* tslint:enable:max-line-length */\n/**\n * Applies an accumulator function over the source Observable, and returns each\n * intermediate result, with an optional seed value.\n *\n * <span class=\"informal\">It's like {@link reduce}, but emits the current\n * accumulation whenever the source emits a value.</span>\n *\n * <img src=\"./img/scan.png\" width=\"100%\">\n *\n * Combines together all values emitted on the source, using an accumulator\n * function that knows how to join a new source value into the accumulation from\n * the past. Is similar to {@link reduce}, but emits the intermediate\n * accumulations.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * @example <caption>Count the number of click events</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var ones = clicks.mapTo(1);\n * var seed = 0;\n * var count = ones.scan((acc, one) => acc + one, seed);\n * count.subscribe(x => console.log(x));\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator\n * The accumulator function called on each source value.\n * @param {T|R} [seed] The initial accumulation value.\n * @return {Observable<R>} An observable of the accumulated values.\n * @method scan\n * @owner Observable\n */\nexport function scan(accumulator, seed) {\n    var hasSeed = false;\n    // providing a seed of `undefined` *should* be valid and trigger\n    // hasSeed! so don't use `seed !== undefined` checks!\n    // For this reason, we have to check it here at the original call site\n    // otherwise inside Operator/Subscriber we won't know if `undefined`\n    // means they didn't provide anything or if they literally provided `undefined`\n    if (arguments.length >= 2) {\n        hasSeed = true;\n    }\n    return function scanOperatorFunction(source) {\n        return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n    };\n}\nvar ScanOperator = (function () {\n    function ScanOperator(accumulator, seed, hasSeed) {\n        if (hasSeed === void 0) { hasSeed = false; }\n        this.accumulator = accumulator;\n        this.seed = seed;\n        this.hasSeed = hasSeed;\n    }\n    ScanOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n    };\n    return ScanOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ScanSubscriber = (function (_super) {\n    __extends(ScanSubscriber, _super);\n    function ScanSubscriber(destination, accumulator, _seed, hasSeed) {\n        _super.call(this, destination);\n        this.accumulator = accumulator;\n        this._seed = _seed;\n        this.hasSeed = hasSeed;\n        this.index = 0;\n    }\n    Object.defineProperty(ScanSubscriber.prototype, \"seed\", {\n        get: function () {\n            return this._seed;\n        },\n        set: function (value) {\n            this.hasSeed = true;\n            this._seed = value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ScanSubscriber.prototype._next = function (value) {\n        if (!this.hasSeed) {\n            this.seed = value;\n            this.destination.next(value);\n        }\n        else {\n            return this._tryNext(value);\n        }\n    };\n    ScanSubscriber.prototype._tryNext = function (value) {\n        var index = this.index++;\n        var result;\n        try {\n            result = this.accumulator(this.seed, value, index);\n        }\n        catch (err) {\n            this.destination.error(err);\n        }\n        this.seed = result;\n        this.destination.next(result);\n    };\n    return ScanSubscriber;\n}(Subscriber));\n//# sourceMappingURL=scan.js.map","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { EmptyObservable } from '../observable/EmptyObservable';\n/**\n * Emits only the last `count` values emitted by the source Observable.\n *\n * <span class=\"informal\">Remembers the latest `count` values, then emits those\n * only when the source completes.</span>\n *\n * <img src=\"./img/takeLast.png\" width=\"100%\">\n *\n * `takeLast` returns an Observable that emits at most the last `count` values\n * emitted by the source Observable. If the source emits fewer than `count`\n * values then all of its values are emitted. This operator must wait until the\n * `complete` notification emission from the source in order to emit the `next`\n * values on the output Observable, because otherwise it is impossible to know\n * whether or not more values will be emitted on the source. For this reason,\n * all values are emitted synchronously, followed by the complete notification.\n *\n * @example <caption>Take the last 3 values of an Observable with many values</caption>\n * var many = Rx.Observable.range(1, 100);\n * var lastThree = many.takeLast(3);\n * lastThree.subscribe(x => console.log(x));\n *\n * @see {@link take}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `takeLast(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of values to emit from the end of\n * the sequence of values emitted by the source Observable.\n * @return {Observable<T>} An Observable that emits at most the last count\n * values emitted by the source Observable.\n * @method takeLast\n * @owner Observable\n */\nexport function takeLast(count) {\n    return function takeLastOperatorFunction(source) {\n        if (count === 0) {\n            return new EmptyObservable();\n        }\n        else {\n            return source.lift(new TakeLastOperator(count));\n        }\n    };\n}\nvar TakeLastOperator = (function () {\n    function TakeLastOperator(total) {\n        this.total = total;\n        if (this.total < 0) {\n            throw new ArgumentOutOfRangeError;\n        }\n    }\n    TakeLastOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n    };\n    return TakeLastOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar TakeLastSubscriber = (function (_super) {\n    __extends(TakeLastSubscriber, _super);\n    function TakeLastSubscriber(destination, total) {\n        _super.call(this, destination);\n        this.total = total;\n        this.ring = new Array();\n        this.count = 0;\n    }\n    TakeLastSubscriber.prototype._next = function (value) {\n        var ring = this.ring;\n        var total = this.total;\n        var count = this.count++;\n        if (ring.length < total) {\n            ring.push(value);\n        }\n        else {\n            var index = count % total;\n            ring[index] = value;\n        }\n    };\n    TakeLastSubscriber.prototype._complete = function () {\n        var destination = this.destination;\n        var count = this.count;\n        if (count > 0) {\n            var total = this.count >= this.total ? this.total : this.count;\n            var ring = this.ring;\n            for (var i = 0; i < total; i++) {\n                var idx = (count++) % total;\n                destination.next(ring[idx]);\n            }\n        }\n        destination.complete();\n    };\n    return TakeLastSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeLast.js.map","import { scan } from './scan';\nimport { takeLast } from './takeLast';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { pipe } from '../util/pipe';\n/* tslint:enable:max-line-length */\n/**\n * Applies an accumulator function over the source Observable, and returns the\n * accumulated result when the source completes, given an optional seed value.\n *\n * <span class=\"informal\">Combines together all values emitted on the source,\n * using an accumulator function that knows how to join a new source value into\n * the accumulation from the past.</span>\n *\n * <img src=\"./img/reduce.png\" width=\"100%\">\n *\n * Like\n * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce),\n * `reduce` applies an `accumulator` function against an accumulation and each\n * value of the source Observable (from the past) to reduce it to a single\n * value, emitted on the output Observable. Note that `reduce` will only emit\n * one value, only when the source Observable completes. It is equivalent to\n * applying operator {@link scan} followed by operator {@link last}.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * @example <caption>Count the number of click events that happened in 5 seconds</caption>\n * var clicksInFiveSeconds = Rx.Observable.fromEvent(document, 'click')\n *   .takeUntil(Rx.Observable.interval(5000));\n * var ones = clicksInFiveSeconds.mapTo(1);\n * var seed = 0;\n * var count = ones.reduce((acc, one) => acc + one, seed);\n * count.subscribe(x => console.log(x));\n *\n * @see {@link count}\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link scan}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator The accumulator function\n * called on each source value.\n * @param {R} [seed] The initial accumulation value.\n * @return {Observable<R>} An Observable that emits a single value that is the\n * result of accumulating the values emitted by the source Observable.\n * @method reduce\n * @owner Observable\n */\nexport function reduce(accumulator, seed) {\n    // providing a seed of `undefined` *should* be valid and trigger\n    // hasSeed! so don't use `seed !== undefined` checks!\n    // For this reason, we have to check it here at the original call site\n    // otherwise inside Operator/Subscriber we won't know if `undefined`\n    // means they didn't provide anything or if they literally provided `undefined`\n    if (arguments.length >= 2) {\n        return function reduceOperatorFunctionWithSeed(source) {\n            return pipe(scan(accumulator, seed), takeLast(1), defaultIfEmpty(seed))(source);\n        };\n    }\n    return function reduceOperatorFunction(source) {\n        return pipe(scan(function (acc, value, index) {\n            return accumulator(acc, value, index + 1);\n        }), takeLast(1))(source);\n    };\n}\n//# sourceMappingURL=reduce.js.map","import { reduce } from './reduce';\n/**\n * The Max operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the largest value.\n *\n * <img src=\"./img/max.png\" width=\"100%\">\n *\n * @example <caption>Get the maximal value of a series of numbers</caption>\n * Rx.Observable.of(5, 4, 7, 2, 8)\n *   .max()\n *   .subscribe(x => console.log(x)); // -> 8\n *\n * @example <caption>Use a comparer function to get the maximal item</caption>\n * interface Person {\n *   age: number,\n *   name: string\n * }\n * Observable.of<Person>({age: 7, name: 'Foo'},\n *                       {age: 5, name: 'Bar'},\n *                       {age: 9, name: 'Beer'})\n *           .max<Person>((a: Person, b: Person) => a.age < b.age ? -1 : 1)\n *           .subscribe((x: Person) => console.log(x.name)); // -> 'Beer'\n * }\n *\n * @see {@link min}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the largest value.\n * @method max\n * @owner Observable\n */\nexport function max(comparer) {\n    var max = (typeof comparer === 'function')\n        ? function (x, y) { return comparer(x, y) > 0 ? x : y; }\n        : function (x, y) { return x > y ? x : y; };\n    return reduce(max);\n}\n//# sourceMappingURL=max.js.map","import { max as higherOrderMax } from '../operators/max';\n/**\n * The Max operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the largest value.\n *\n * <img src=\"./img/max.png\" width=\"100%\">\n *\n * @example <caption>Get the maximal value of a series of numbers</caption>\n * Rx.Observable.of(5, 4, 7, 2, 8)\n *   .max()\n *   .subscribe(x => console.log(x)); // -> 8\n *\n * @example <caption>Use a comparer function to get the maximal item</caption>\n * interface Person {\n *   age: number,\n *   name: string\n * }\n * Observable.of<Person>({age: 7, name: 'Foo'},\n *                       {age: 5, name: 'Bar'},\n *                       {age: 9, name: 'Beer'})\n *           .max<Person>((a: Person, b: Person) => a.age < b.age ? -1 : 1)\n *           .subscribe((x: Person) => console.log(x.name)); // -> 'Beer'\n * }\n *\n * @see {@link min}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the largest value.\n * @method max\n * @owner Observable\n */\nexport function max(comparer) {\n    return higherOrderMax(comparer)(this);\n}\n//# sourceMappingURL=max.js.map","import { Observable } from '../../Observable';\nimport { max } from '../../operator/max';\nObservable.prototype.max = max;\n//# sourceMappingURL=max.js.map","import { merge as mergeStatic } from '../observable/merge';\nexport { merge as mergeStatic } from '../observable/merge';\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (either the source or an\n * Observable given as argument), and simply forwards (without doing any\n * transformation) all the values from all the input Observables to the output\n * Observable. The output Observable only completes once all input Observables\n * have completed. Any error delivered by an input Observable will be immediately\n * emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = clicks.merge(timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = timer1.merge(timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {ObservableInput} other An input Observable to merge with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} An Observable that emits items that are the result of\n * every input Observable.\n * @method merge\n * @owner Observable\n */\nexport function merge() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    return function (source) { return source.lift.call(mergeStatic.apply(void 0, [source].concat(observables))); };\n}\n//# sourceMappingURL=merge.js.map","import { merge as higherOrder } from '../operators/merge';\nexport { merge as mergeStatic } from '../observable/merge';\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (either the source or an\n * Observable given as argument), and simply forwards (without doing any\n * transformation) all the values from all the input Observables to the output\n * Observable. The output Observable only completes once all input Observables\n * have completed. Any error delivered by an input Observable will be immediately\n * emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = clicks.merge(timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = timer1.merge(timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {ObservableInput} other An input Observable to merge with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} An Observable that emits items that are the result of\n * every input Observable.\n * @method merge\n * @owner Observable\n */\nexport function merge() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    return higherOrder.apply(void 0, observables)(this);\n}\n//# sourceMappingURL=merge.js.map","import { Observable } from '../../Observable';\nimport { merge } from '../../operator/merge';\nObservable.prototype.merge = merge;\n//# sourceMappingURL=merge.js.map","import { mergeAll as higherOrder } from '../operators/mergeAll';\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * <img src=\"./img/mergeAll.png\" width=\"100%\">\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Spawn a new interval Observable for each click event, and blend their outputs as one Observable</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var firstOrder = higherOrder.mergeAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * @example <caption>Count from 0 to 9 every second for each click, but only allow 2 concurrent timers</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10));\n * var firstOrder = higherOrder.mergeAll(2);\n * firstOrder.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nexport function mergeAll(concurrent) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    return higherOrder(concurrent)(this);\n}\n//# sourceMappingURL=mergeAll.js.map","import { Observable } from '../../Observable';\nimport { mergeAll } from '../../operator/mergeAll';\nObservable.prototype.mergeAll = mergeAll;\n//# sourceMappingURL=mergeAll.js.map","import { mergeMap as higherOrderMergeMap } from '../operators/mergeMap';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * <img src=\"./img/mergeMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n *   Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nexport function mergeMap(project, resultSelector, concurrent) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    return higherOrderMergeMap(project, resultSelector, concurrent)(this);\n}\n//# sourceMappingURL=mergeMap.js.map","import { Observable } from '../../Observable';\nimport { mergeMap } from '../../operator/mergeMap';\nObservable.prototype.mergeMap = mergeMap;\nObservable.prototype.flatMap = mergeMap;\n//# sourceMappingURL=mergeMap.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in the output Observable.\n *\n * <span class=\"informal\">It's like {@link mergeMap}, but maps each value always\n * to the same inner Observable.</span>\n *\n * <img src=\"./img/mergeMapTo.png\" width=\"100%\">\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then merges those resulting Observables into one\n * single Observable, which is the output Observable.\n *\n * @example <caption>For each click event, start an interval Observable ticking every 1 second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.mergeMapTo(Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMapTo}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable` (and optionally transformed through `resultSelector`) every\n * time a value is emitted on the source Observable.\n * @method mergeMapTo\n * @owner Observable\n */\nexport function mergeMapTo(innerObservable, resultSelector, concurrent) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    if (typeof resultSelector === 'number') {\n        concurrent = resultSelector;\n        resultSelector = null;\n    }\n    return function (source) { return source.lift(new MergeMapToOperator(innerObservable, resultSelector, concurrent)); };\n}\n// TODO: Figure out correct signature here: an Operator<Observable<T>, R>\n//       needs to implement call(observer: Subscriber<R>): Subscriber<Observable<T>>\nexport var MergeMapToOperator = (function () {\n    function MergeMapToOperator(ish, resultSelector, concurrent) {\n        if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n        this.ish = ish;\n        this.resultSelector = resultSelector;\n        this.concurrent = concurrent;\n    }\n    MergeMapToOperator.prototype.call = function (observer, source) {\n        return source.subscribe(new MergeMapToSubscriber(observer, this.ish, this.resultSelector, this.concurrent));\n    };\n    return MergeMapToOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var MergeMapToSubscriber = (function (_super) {\n    __extends(MergeMapToSubscriber, _super);\n    function MergeMapToSubscriber(destination, ish, resultSelector, concurrent) {\n        if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n        _super.call(this, destination);\n        this.ish = ish;\n        this.resultSelector = resultSelector;\n        this.concurrent = concurrent;\n        this.hasCompleted = false;\n        this.buffer = [];\n        this.active = 0;\n        this.index = 0;\n    }\n    MergeMapToSubscriber.prototype._next = function (value) {\n        if (this.active < this.concurrent) {\n            var resultSelector = this.resultSelector;\n            var index = this.index++;\n            var ish = this.ish;\n            var destination = this.destination;\n            this.active++;\n            this._innerSub(ish, destination, resultSelector, value, index);\n        }\n        else {\n            this.buffer.push(value);\n        }\n    };\n    MergeMapToSubscriber.prototype._innerSub = function (ish, destination, resultSelector, value, index) {\n        this.add(subscribeToResult(this, ish, value, index));\n    };\n    MergeMapToSubscriber.prototype._complete = function () {\n        this.hasCompleted = true;\n        if (this.active === 0 && this.buffer.length === 0) {\n            this.destination.complete();\n        }\n    };\n    MergeMapToSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        var _a = this, resultSelector = _a.resultSelector, destination = _a.destination;\n        if (resultSelector) {\n            this.trySelectResult(outerValue, innerValue, outerIndex, innerIndex);\n        }\n        else {\n            destination.next(innerValue);\n        }\n    };\n    MergeMapToSubscriber.prototype.trySelectResult = function (outerValue, innerValue, outerIndex, innerIndex) {\n        var _a = this, resultSelector = _a.resultSelector, destination = _a.destination;\n        var result;\n        try {\n            result = resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n        }\n        catch (err) {\n            destination.error(err);\n            return;\n        }\n        destination.next(result);\n    };\n    MergeMapToSubscriber.prototype.notifyError = function (err) {\n        this.destination.error(err);\n    };\n    MergeMapToSubscriber.prototype.notifyComplete = function (innerSub) {\n        var buffer = this.buffer;\n        this.remove(innerSub);\n        this.active--;\n        if (buffer.length > 0) {\n            this._next(buffer.shift());\n        }\n        else if (this.active === 0 && this.hasCompleted) {\n            this.destination.complete();\n        }\n    };\n    return MergeMapToSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=mergeMapTo.js.map","import { mergeMapTo as higherOrder } from '../operators/mergeMapTo';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in the output Observable.\n *\n * <span class=\"informal\">It's like {@link mergeMap}, but maps each value always\n * to the same inner Observable.</span>\n *\n * <img src=\"./img/mergeMapTo.png\" width=\"100%\">\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then merges those resulting Observables into one\n * single Observable, which is the output Observable.\n *\n * @example <caption>For each click event, start an interval Observable ticking every 1 second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.mergeMapTo(Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMapTo}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable` (and optionally transformed through `resultSelector`) every\n * time a value is emitted on the source Observable.\n * @method mergeMapTo\n * @owner Observable\n */\nexport function mergeMapTo(innerObservable, resultSelector, concurrent) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    return higherOrder(innerObservable, resultSelector, concurrent)(this);\n}\n//# sourceMappingURL=mergeMapTo.js.map","import { Observable } from '../../Observable';\nimport { mergeMapTo } from '../../operator/mergeMapTo';\nObservable.prototype.flatMapTo = mergeMapTo;\nObservable.prototype.mergeMapTo = mergeMapTo;\n//# sourceMappingURL=mergeMapTo.js.map","import { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, then each intermediate\n * Observable returned is merged into the output Observable.\n *\n * <span class=\"informal\">It's like {@link scan}, but the Observables returned\n * by the accumulator are merged into the outer Observable.</span>\n *\n * @example <caption>Count the number of click events</caption>\n * const click$ = Rx.Observable.fromEvent(document, 'click');\n * const one$ = click$.mapTo(1);\n * const seed = 0;\n * const count$ = one$.mergeScan((acc, one) => Rx.Observable.of(acc + one), seed);\n * count$.subscribe(x => console.log(x));\n *\n * // Results:\n * 1\n * 2\n * 3\n * 4\n * // ...and so on for each click\n *\n * @param {function(acc: R, value: T): Observable<R>} accumulator\n * The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of\n * input Observables being subscribed to concurrently.\n * @return {Observable<R>} An observable of the accumulated values.\n * @method mergeScan\n * @owner Observable\n */\nexport function mergeScan(accumulator, seed, concurrent) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    return function (source) { return source.lift(new MergeScanOperator(accumulator, seed, concurrent)); };\n}\nexport var MergeScanOperator = (function () {\n    function MergeScanOperator(accumulator, seed, concurrent) {\n        this.accumulator = accumulator;\n        this.seed = seed;\n        this.concurrent = concurrent;\n    }\n    MergeScanOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent));\n    };\n    return MergeScanOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var MergeScanSubscriber = (function (_super) {\n    __extends(MergeScanSubscriber, _super);\n    function MergeScanSubscriber(destination, accumulator, acc, concurrent) {\n        _super.call(this, destination);\n        this.accumulator = accumulator;\n        this.acc = acc;\n        this.concurrent = concurrent;\n        this.hasValue = false;\n        this.hasCompleted = false;\n        this.buffer = [];\n        this.active = 0;\n        this.index = 0;\n    }\n    MergeScanSubscriber.prototype._next = function (value) {\n        if (this.active < this.concurrent) {\n            var index = this.index++;\n            var ish = tryCatch(this.accumulator)(this.acc, value);\n            var destination = this.destination;\n            if (ish === errorObject) {\n                destination.error(errorObject.e);\n            }\n            else {\n                this.active++;\n                this._innerSub(ish, value, index);\n            }\n        }\n        else {\n            this.buffer.push(value);\n        }\n    };\n    MergeScanSubscriber.prototype._innerSub = function (ish, value, index) {\n        this.add(subscribeToResult(this, ish, value, index));\n    };\n    MergeScanSubscriber.prototype._complete = function () {\n        this.hasCompleted = true;\n        if (this.active === 0 && this.buffer.length === 0) {\n            if (this.hasValue === false) {\n                this.destination.next(this.acc);\n            }\n            this.destination.complete();\n        }\n    };\n    MergeScanSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        var destination = this.destination;\n        this.acc = innerValue;\n        this.hasValue = true;\n        destination.next(innerValue);\n    };\n    MergeScanSubscriber.prototype.notifyComplete = function (innerSub) {\n        var buffer = this.buffer;\n        this.remove(innerSub);\n        this.active--;\n        if (buffer.length > 0) {\n            this._next(buffer.shift());\n        }\n        else if (this.active === 0 && this.hasCompleted) {\n            if (this.hasValue === false) {\n                this.destination.next(this.acc);\n            }\n            this.destination.complete();\n        }\n    };\n    return MergeScanSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=mergeScan.js.map","import { mergeScan as higherOrder } from '../operators/mergeScan';\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, then each intermediate\n * Observable returned is merged into the output Observable.\n *\n * <span class=\"informal\">It's like {@link scan}, but the Observables returned\n * by the accumulator are merged into the outer Observable.</span>\n *\n * @example <caption>Count the number of click events</caption>\n * const click$ = Rx.Observable.fromEvent(document, 'click');\n * const one$ = click$.mapTo(1);\n * const seed = 0;\n * const count$ = one$.mergeScan((acc, one) => Rx.Observable.of(acc + one), seed);\n * count$.subscribe(x => console.log(x));\n *\n * // Results:\n * 1\n * 2\n * 3\n * 4\n * // ...and so on for each click\n *\n * @param {function(acc: R, value: T): Observable<R>} accumulator\n * The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of\n * input Observables being subscribed to concurrently.\n * @return {Observable<R>} An observable of the accumulated values.\n * @method mergeScan\n * @owner Observable\n */\nexport function mergeScan(accumulator, seed, concurrent) {\n    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n    return higherOrder(accumulator, seed, concurrent)(this);\n}\n//# sourceMappingURL=mergeScan.js.map","import { Observable } from '../../Observable';\nimport { mergeScan } from '../../operator/mergeScan';\nObservable.prototype.mergeScan = mergeScan;\n//# sourceMappingURL=mergeScan.js.map","import { reduce } from './reduce';\n/**\n * The Min operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the smallest value.\n *\n * <img src=\"./img/min.png\" width=\"100%\">\n *\n * @example <caption>Get the minimal value of a series of numbers</caption>\n * Rx.Observable.of(5, 4, 7, 2, 8)\n *   .min()\n *   .subscribe(x => console.log(x)); // -> 2\n *\n * @example <caption>Use a comparer function to get the minimal item</caption>\n * interface Person {\n *   age: number,\n *   name: string\n * }\n * Observable.of<Person>({age: 7, name: 'Foo'},\n *                       {age: 5, name: 'Bar'},\n *                       {age: 9, name: 'Beer'})\n *           .min<Person>( (a: Person, b: Person) => a.age < b.age ? -1 : 1)\n *           .subscribe((x: Person) => console.log(x.name)); // -> 'Bar'\n * }\n *\n * @see {@link max}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable<R>} An Observable that emits item with the smallest value.\n * @method min\n * @owner Observable\n */\nexport function min(comparer) {\n    var min = (typeof comparer === 'function')\n        ? function (x, y) { return comparer(x, y) < 0 ? x : y; }\n        : function (x, y) { return x < y ? x : y; };\n    return reduce(min);\n}\n//# sourceMappingURL=min.js.map","import { min as higherOrderMin } from '../operators/min';\n/**\n * The Min operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the smallest value.\n *\n * <img src=\"./img/min.png\" width=\"100%\">\n *\n * @example <caption>Get the minimal value of a series of numbers</caption>\n * Rx.Observable.of(5, 4, 7, 2, 8)\n *   .min()\n *   .subscribe(x => console.log(x)); // -> 2\n *\n * @example <caption>Use a comparer function to get the minimal item</caption>\n * interface Person {\n *   age: number,\n *   name: string\n * }\n * Observable.of<Person>({age: 7, name: 'Foo'},\n *                       {age: 5, name: 'Bar'},\n *                       {age: 9, name: 'Beer'})\n *           .min<Person>( (a: Person, b: Person) => a.age < b.age ? -1 : 1)\n *           .subscribe((x: Person) => console.log(x.name)); // -> 'Bar'\n * }\n *\n * @see {@link max}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable<R>} An Observable that emits item with the smallest value.\n * @method min\n * @owner Observable\n */\nexport function min(comparer) {\n    return higherOrderMin(comparer)(this);\n}\n//# sourceMappingURL=min.js.map","import { Observable } from '../../Observable';\nimport { min } from '../../operator/min';\nObservable.prototype.min = min;\n//# sourceMappingURL=min.js.map","import { Subscriber } from '../Subscriber';\nexport function refCount() {\n    return function refCountOperatorFunction(source) {\n        return source.lift(new RefCountOperator(source));\n    };\n}\nvar RefCountOperator = (function () {\n    function RefCountOperator(connectable) {\n        this.connectable = connectable;\n    }\n    RefCountOperator.prototype.call = function (subscriber, source) {\n        var connectable = this.connectable;\n        connectable._refCount++;\n        var refCounter = new RefCountSubscriber(subscriber, connectable);\n        var subscription = source.subscribe(refCounter);\n        if (!refCounter.closed) {\n            refCounter.connection = connectable.connect();\n        }\n        return subscription;\n    };\n    return RefCountOperator;\n}());\nvar RefCountSubscriber = (function (_super) {\n    __extends(RefCountSubscriber, _super);\n    function RefCountSubscriber(destination, connectable) {\n        _super.call(this, destination);\n        this.connectable = connectable;\n    }\n    /** @deprecated internal use only */ RefCountSubscriber.prototype._unsubscribe = function () {\n        var connectable = this.connectable;\n        if (!connectable) {\n            this.connection = null;\n            return;\n        }\n        this.connectable = null;\n        var refCount = connectable._refCount;\n        if (refCount <= 0) {\n            this.connection = null;\n            return;\n        }\n        connectable._refCount = refCount - 1;\n        if (refCount > 1) {\n            this.connection = null;\n            return;\n        }\n        ///\n        // Compare the local RefCountSubscriber's connection Subscription to the\n        // connection Subscription on the shared ConnectableObservable. In cases\n        // where the ConnectableObservable source synchronously emits values, and\n        // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n        // execution continues to here before the RefCountOperator has a chance to\n        // supply the RefCountSubscriber with the shared connection Subscription.\n        // For example:\n        // ```\n        // Observable.range(0, 10)\n        //   .publish()\n        //   .refCount()\n        //   .take(5)\n        //   .subscribe();\n        // ```\n        // In order to account for this case, RefCountSubscriber should only dispose\n        // the ConnectableObservable's shared connection Subscription if the\n        // connection Subscription exists, *and* either:\n        //   a. RefCountSubscriber doesn't have a reference to the shared connection\n        //      Subscription yet, or,\n        //   b. RefCountSubscriber's connection Subscription reference is identical\n        //      to the shared connection Subscription\n        ///\n        var connection = this.connection;\n        var sharedConnection = connectable._connection;\n        this.connection = null;\n        if (sharedConnection && (!connection || sharedConnection === connection)) {\n            sharedConnection.unsubscribe();\n        }\n    };\n    return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=refCount.js.map","import { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\n/**\n * @class ConnectableObservable<T>\n */\nexport var ConnectableObservable = (function (_super) {\n    __extends(ConnectableObservable, _super);\n    function ConnectableObservable(/** @deprecated internal use only */ source, \n        /** @deprecated internal use only */ subjectFactory) {\n        _super.call(this);\n        this.source = source;\n        this.subjectFactory = subjectFactory;\n        /** @deprecated internal use only */ this._refCount = 0;\n        this._isComplete = false;\n    }\n    /** @deprecated internal use only */ ConnectableObservable.prototype._subscribe = function (subscriber) {\n        return this.getSubject().subscribe(subscriber);\n    };\n    /** @deprecated internal use only */ ConnectableObservable.prototype.getSubject = function () {\n        var subject = this._subject;\n        if (!subject || subject.isStopped) {\n            this._subject = this.subjectFactory();\n        }\n        return this._subject;\n    };\n    ConnectableObservable.prototype.connect = function () {\n        var connection = this._connection;\n        if (!connection) {\n            this._isComplete = false;\n            connection = this._connection = new Subscription();\n            connection.add(this.source\n                .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n            if (connection.closed) {\n                this._connection = null;\n                connection = Subscription.EMPTY;\n            }\n            else {\n                this._connection = connection;\n            }\n        }\n        return connection;\n    };\n    ConnectableObservable.prototype.refCount = function () {\n        return higherOrderRefCount()(this);\n    };\n    return ConnectableObservable;\n}(Observable));\nvar connectableProto = ConnectableObservable.prototype;\nexport var connectableObservableDescriptor = {\n    operator: { value: null },\n    _refCount: { value: 0, writable: true },\n    _subject: { value: null, writable: true },\n    _connection: { value: null, writable: true },\n    _subscribe: { value: connectableProto._subscribe },\n    _isComplete: { value: connectableProto._isComplete, writable: true },\n    getSubject: { value: connectableProto.getSubject },\n    connect: { value: connectableProto.connect },\n    refCount: { value: connectableProto.refCount }\n};\nvar ConnectableSubscriber = (function (_super) {\n    __extends(ConnectableSubscriber, _super);\n    function ConnectableSubscriber(destination, connectable) {\n        _super.call(this, destination);\n        this.connectable = connectable;\n    }\n    ConnectableSubscriber.prototype._error = function (err) {\n        this._unsubscribe();\n        _super.prototype._error.call(this, err);\n    };\n    ConnectableSubscriber.prototype._complete = function () {\n        this.connectable._isComplete = true;\n        this._unsubscribe();\n        _super.prototype._complete.call(this);\n    };\n    /** @deprecated internal use only */ ConnectableSubscriber.prototype._unsubscribe = function () {\n        var connectable = this.connectable;\n        if (connectable) {\n            this.connectable = null;\n            var connection = connectable._connection;\n            connectable._refCount = 0;\n            connectable._subject = null;\n            connectable._connection = null;\n            if (connection) {\n                connection.unsubscribe();\n            }\n        }\n    };\n    return ConnectableSubscriber;\n}(SubjectSubscriber));\nvar RefCountOperator = (function () {\n    function RefCountOperator(connectable) {\n        this.connectable = connectable;\n    }\n    RefCountOperator.prototype.call = function (subscriber, source) {\n        var connectable = this.connectable;\n        connectable._refCount++;\n        var refCounter = new RefCountSubscriber(subscriber, connectable);\n        var subscription = source.subscribe(refCounter);\n        if (!refCounter.closed) {\n            refCounter.connection = connectable.connect();\n        }\n        return subscription;\n    };\n    return RefCountOperator;\n}());\nvar RefCountSubscriber = (function (_super) {\n    __extends(RefCountSubscriber, _super);\n    function RefCountSubscriber(destination, connectable) {\n        _super.call(this, destination);\n        this.connectable = connectable;\n    }\n    /** @deprecated internal use only */ RefCountSubscriber.prototype._unsubscribe = function () {\n        var connectable = this.connectable;\n        if (!connectable) {\n            this.connection = null;\n            return;\n        }\n        this.connectable = null;\n        var refCount = connectable._refCount;\n        if (refCount <= 0) {\n            this.connection = null;\n            return;\n        }\n        connectable._refCount = refCount - 1;\n        if (refCount > 1) {\n            this.connection = null;\n            return;\n        }\n        ///\n        // Compare the local RefCountSubscriber's connection Subscription to the\n        // connection Subscription on the shared ConnectableObservable. In cases\n        // where the ConnectableObservable source synchronously emits values, and\n        // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n        // execution continues to here before the RefCountOperator has a chance to\n        // supply the RefCountSubscriber with the shared connection Subscription.\n        // For example:\n        // ```\n        // Observable.range(0, 10)\n        //   .publish()\n        //   .refCount()\n        //   .take(5)\n        //   .subscribe();\n        // ```\n        // In order to account for this case, RefCountSubscriber should only dispose\n        // the ConnectableObservable's shared connection Subscription if the\n        // connection Subscription exists, *and* either:\n        //   a. RefCountSubscriber doesn't have a reference to the shared connection\n        //      Subscription yet, or,\n        //   b. RefCountSubscriber's connection Subscription reference is identical\n        //      to the shared connection Subscription\n        ///\n        var connection = this.connection;\n        var sharedConnection = connectable._connection;\n        this.connection = null;\n        if (sharedConnection && (!connection || sharedConnection === connection)) {\n            sharedConnection.unsubscribe();\n        }\n    };\n    return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ConnectableObservable.js.map","import { connectableObservableDescriptor } from '../observable/ConnectableObservable';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits the results of invoking a specified selector on items\n * emitted by a ConnectableObservable that shares a single subscription to the underlying stream.\n *\n * <img src=\"./img/multicast.png\" width=\"100%\">\n *\n * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate subject through\n * which the source sequence's elements will be multicast to the selector function\n * or Subject to push source elements into.\n * @param {Function} [selector] - Optional selector function that can use the multicasted source stream\n * as many times as needed, without causing multiple subscriptions to the source stream.\n * Subscribers to the given source will receive all notifications of the source from the\n * time of the subscription forward.\n * @return {Observable} An Observable that emits the results of invoking the selector\n * on the items emitted by a `ConnectableObservable` that shares a single subscription to\n * the underlying stream.\n * @method multicast\n * @owner Observable\n */\nexport function multicast(subjectOrSubjectFactory, selector) {\n    return function multicastOperatorFunction(source) {\n        var subjectFactory;\n        if (typeof subjectOrSubjectFactory === 'function') {\n            subjectFactory = subjectOrSubjectFactory;\n        }\n        else {\n            subjectFactory = function subjectFactory() {\n                return subjectOrSubjectFactory;\n            };\n        }\n        if (typeof selector === 'function') {\n            return source.lift(new MulticastOperator(subjectFactory, selector));\n        }\n        var connectable = Object.create(source, connectableObservableDescriptor);\n        connectable.source = source;\n        connectable.subjectFactory = subjectFactory;\n        return connectable;\n    };\n}\nexport var MulticastOperator = (function () {\n    function MulticastOperator(subjectFactory, selector) {\n        this.subjectFactory = subjectFactory;\n        this.selector = selector;\n    }\n    MulticastOperator.prototype.call = function (subscriber, source) {\n        var selector = this.selector;\n        var subject = this.subjectFactory();\n        var subscription = selector(subject).subscribe(subscriber);\n        subscription.add(source.subscribe(subject));\n        return subscription;\n    };\n    return MulticastOperator;\n}());\n//# sourceMappingURL=multicast.js.map","import { multicast as higherOrder } from '../operators/multicast';\n/* tslint:enable:max-line-length */\n/**\n * Allows source Observable to be subscribed only once with a Subject of choice,\n * while still sharing its values between multiple subscribers.\n *\n * <span class=\"informal\">Subscribe to Observable once, but send its values to multiple subscribers.</span>\n *\n * <img src=\"./img/multicast.png\" width=\"100%\">\n *\n * `multicast` is an operator that works in two modes.\n *\n * In the first mode you provide a single argument to it, which can be either an initialized Subject or a Subject\n * factory. As a result you will get a special kind of an Observable - a {@link ConnectableObservable}. It can be\n * subscribed multiple times, just as regular Observable, but it won't subscribe to the source Observable at that\n * moment. It will do it only if you call its `connect` method. This means you can essentially control by hand, when\n * source Observable will be actually subscribed. What is more, ConnectableObservable will share this one subscription\n * between all of its subscribers. This means that, for example, `ajax` Observable will only send a request once,\n * even though usually it would send a request per every subscriber. Since it sends a request at the moment of\n * subscription, here request would be sent when the `connect` method of a ConnectableObservable is called.\n *\n * The most common pattern of using ConnectableObservable is calling `connect` when the first consumer subscribes,\n * keeping the subscription alive while several consumers come and go and finally unsubscribing from the source\n * Observable, when the last consumer unsubscribes. To not implement that logic over and over again,\n * ConnectableObservable has a special operator, `refCount`. When called, it returns an Observable, which will count\n * the number of consumers subscribed to it and keep ConnectableObservable connected as long as there is at least\n * one consumer. So if you don't actually need to decide yourself when to connect and disconnect a\n * ConnectableObservable, use `refCount`.\n *\n * The second mode is invoked by calling `multicast` with an additional, second argument - selector function.\n * This function accepts an Observable - which basically mirrors the source Observable - and returns Observable\n * as well, which should be the input stream modified by any operators you want. Note that in this\n * mode you cannot provide initialized Subject as a first argument - it has to be a Subject factory. If\n * you provide selector function, `multicast` returns just a regular Observable, instead of ConnectableObservable.\n * Thus, as usual, each subscription to this stream triggers subscription to the source Observable. However,\n * if inside the selector function you subscribe to the input Observable multiple times, actual source stream\n * will be subscribed only once. So if you have a chain of operators that use some Observable many times,\n * but you want to subscribe to that Observable only once, this is the mode you would use.\n *\n * Subject provided as a first parameter of `multicast` is used as a proxy for the single subscription to the\n * source Observable. It means that all values from the source stream go through that Subject. Thus, if a Subject\n * has some special properties, Observable returned by `multicast` will have them as well. If you want to use\n * `multicast` with a Subject that is one of the ones included in RxJS by default - {@link Subject},\n * {@link AsyncSubject}, {@link BehaviorSubject}, or {@link ReplaySubject} - simply use {@link publish},\n * {@link publishLast}, {@link publishBehavior} or {@link publishReplay} respectively. These are actually\n * just wrappers around `multicast`, with a specific Subject hardcoded inside.\n *\n * Also, if you use {@link publish} or {@link publishReplay} with a ConnectableObservables `refCount` operator,\n * you can simply use {@link share} and {@link shareReplay} respectively, which chain these two.\n *\n * @example <caption>Use ConnectableObservable</caption>\n * const seconds = Rx.Observable.interval(1000);\n * const connectableSeconds = seconds.multicast(new Subject());\n *\n * connectableSeconds.subscribe(value => console.log('first: ' + value));\n * connectableSeconds.subscribe(value => console.log('second: ' + value));\n *\n * // At this point still nothing happens, even though we subscribed twice.\n *\n * connectableSeconds.connect();\n *\n * // From now on `seconds` are being logged to the console,\n * // twice per every second. `seconds` Observable was however only subscribed once,\n * // so under the hood Observable.interval had only one clock started.\n *\n * @example <caption>Use selector</caption>\n * const seconds = Rx.Observable.interval(1000);\n *\n * seconds\n *     .multicast(\n *         () => new Subject(),\n *         seconds => seconds.zip(seconds) // Usually zip would subscribe to `seconds` twice.\n *                                         // Because we are inside selector, `seconds` is subscribed once,\n *     )                                   // thus starting only one clock used internally by Observable.interval.\n *     .subscribe();\n *\n * @see {@link publish}\n * @see {@link publishLast}\n * @see {@link publishBehavior}\n * @see {@link publishReplay}\n * @see {@link share}\n * @see {@link shareReplay}\n *\n * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate Subject through\n * which the source sequence's elements will be multicast to the selector function input Observable or\n * ConnectableObservable returned by the operator.\n * @param {Function} [selector] - Optional selector function that can use the input stream\n * as many times as needed, without causing multiple subscriptions to the source stream.\n * Subscribers to the input source will receive all notifications of the source from the\n * time of the subscription forward.\n * @return {Observable<T>|ConnectableObservable<T>} An Observable that emits the results of invoking the selector\n * on the source stream or a special {@link ConnectableObservable}, if selector was not provided.\n *\n * @method multicast\n * @owner Observable\n */\nexport function multicast(subjectOrSubjectFactory, selector) {\n    return higherOrder(subjectOrSubjectFactory, selector)(this);\n}\n//# sourceMappingURL=multicast.js.map","import { Observable } from '../../Observable';\nimport { multicast } from '../../operator/multicast';\nObservable.prototype.multicast = multicast;\n//# sourceMappingURL=multicast.js.map","import { observeOn as higherOrder } from '../operators/observeOn';\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * @example <caption>Ensure values in subscribe are called just before browser repaint.</caption>\n * const intervals = Rx.Observable.interval(10); // Intervals are scheduled\n *                                               // with async scheduler by default...\n *\n * intervals\n * .observeOn(Rx.Scheduler.animationFrame)       // ...but we will observe on animationFrame\n * .subscribe(val => {                           // scheduler to ensure smooth animation.\n *   someDiv.style.height = val + 'px';\n * });\n *\n * @see {@link delay}\n *\n * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable<T>} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nexport function observeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return higherOrder(scheduler, delay)(this);\n}\n//# sourceMappingURL=observeOn.js.map","import { Observable } from '../../Observable';\nimport { observeOn } from '../../operator/observeOn';\nObservable.prototype.observeOn = observeOn;\n//# sourceMappingURL=observeOn.js.map","import { onErrorResumeNext as higherOrder } from '../operators/onErrorResumeNext';\n/* tslint:enable:max-line-length */\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * <span class=\"informal\">Execute series of Observables no matter what, even if it means swallowing errors.</span>\n *\n * <img src=\"./img/onErrorResumeNext.png\" width=\"100%\">\n *\n * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as\n * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same\n * as the source.\n *\n * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable.\n * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext`\n * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting\n * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another\n * Observable in provided series, no matter if previous Observable completed or ended with an error. This will\n * be happening until there is no more Observables left in the series, at which point returned Observable will\n * complete - even if the last subscribed stream ended with an error.\n *\n * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive\n * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable\n * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with\n * an error.\n *\n * Note that you do not get any access to errors emitted by the Observables. In particular do not\n * expect these errors to appear in error callback passed to {@link subscribe}. If you want to take\n * specific actions based on what error was emitted by an Observable, you should try out {@link catch} instead.\n *\n *\n * @example <caption>Subscribe to the next Observable after map fails</caption>\n * Rx.Observable.of(1, 2, 3, 0)\n *   .map(x => {\n *       if (x === 0) { throw Error(); }\n         return 10 / x;\n *   })\n *   .onErrorResumeNext(Rx.Observable.of(1, 2, 3))\n *   .subscribe(\n *     val => console.log(val),\n *     err => console.log(err),          // Will never be called.\n *     () => console.log('that\\'s it!')\n *   );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"that's it!\"\n *\n * @see {@link concat}\n * @see {@link catch}\n *\n * @param {...ObservableInput} observables Observables passed either directly or as an array.\n * @return {Observable} An Observable that emits values from source Observable, but - if it errors - subscribes\n * to the next passed Observable and so on, until it completes or runs out of Observables.\n * @method onErrorResumeNext\n * @owner Observable\n */\nexport function onErrorResumeNext() {\n    var nextSources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        nextSources[_i - 0] = arguments[_i];\n    }\n    return higherOrder.apply(void 0, nextSources)(this);\n}\n//# sourceMappingURL=onErrorResumeNext.js.map","import { Observable } from '../../Observable';\nimport { onErrorResumeNext } from '../../operator/onErrorResumeNext';\nObservable.prototype.onErrorResumeNext = onErrorResumeNext;\n//# sourceMappingURL=onErrorResumeNext.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * <span class=\"informal\">Puts the current value and previous value together as\n * an array, and emits that.</span>\n *\n * <img src=\"./img/pairwise.png\" width=\"100%\">\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * @example <caption>On every click (starting from the second), emit the relative distance to the previous click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var pairs = clicks.pairwise();\n * var distance = pairs.map(pair => {\n *   var x0 = pair[0].clientX;\n *   var y0 = pair[0].clientY;\n *   var x1 = pair[1].clientX;\n *   var y1 = pair[1].clientY;\n *   return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * });\n * distance.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable<Array<T>>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nexport function pairwise() {\n    return function (source) { return source.lift(new PairwiseOperator()); };\n}\nvar PairwiseOperator = (function () {\n    function PairwiseOperator() {\n    }\n    PairwiseOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new PairwiseSubscriber(subscriber));\n    };\n    return PairwiseOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar PairwiseSubscriber = (function (_super) {\n    __extends(PairwiseSubscriber, _super);\n    function PairwiseSubscriber(destination) {\n        _super.call(this, destination);\n        this.hasPrev = false;\n    }\n    PairwiseSubscriber.prototype._next = function (value) {\n        if (this.hasPrev) {\n            this.destination.next([this.prev, value]);\n        }\n        else {\n            this.hasPrev = true;\n        }\n        this.prev = value;\n    };\n    return PairwiseSubscriber;\n}(Subscriber));\n//# sourceMappingURL=pairwise.js.map","import { pairwise as higherOrder } from '../operators/pairwise';\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * <span class=\"informal\">Puts the current value and previous value together as\n * an array, and emits that.</span>\n *\n * <img src=\"./img/pairwise.png\" width=\"100%\">\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * @example <caption>On every click (starting from the second), emit the relative distance to the previous click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var pairs = clicks.pairwise();\n * var distance = pairs.map(pair => {\n *   var x0 = pair[0].clientX;\n *   var y0 = pair[0].clientY;\n *   var x1 = pair[1].clientX;\n *   var y1 = pair[1].clientY;\n *   return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * });\n * distance.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable<Array<T>>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nexport function pairwise() {\n    return higherOrder()(this);\n}\n//# sourceMappingURL=pairwise.js.map","import { Observable } from '../../Observable';\nimport { pairwise } from '../../operator/pairwise';\nObservable.prototype.pairwise = pairwise;\n//# sourceMappingURL=pairwise.js.map","export function not(pred, thisArg) {\n    function notPred() {\n        return !(notPred.pred.apply(notPred.thisArg, arguments));\n    }\n    notPred.pred = pred;\n    notPred.thisArg = thisArg;\n    return notPred;\n}\n//# sourceMappingURL=not.js.map","import { not } from '../util/not';\nimport { filter } from './filter';\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * <span class=\"informal\">It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.</span>\n *\n * <img src=\"./img/partition.png\" width=\"100%\">\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * @example <caption>Partition click events into those on DIV elements and those elsewhere</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var parts = clicks.partition(ev => ev.target.tagName === 'DIV');\n * var clicksOnDivs = parts[0];\n * var clicksElsewhere = parts[1];\n * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));\n * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x));\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable<T>, Observable<T>]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n * @method partition\n * @owner Observable\n */\nexport function partition(predicate, thisArg) {\n    return function (source) { return [\n        filter(predicate, thisArg)(source),\n        filter(not(predicate, thisArg))(source)\n    ]; };\n}\n//# sourceMappingURL=partition.js.map","import { partition as higherOrder } from '../operators/partition';\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * <span class=\"informal\">It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.</span>\n *\n * <img src=\"./img/partition.png\" width=\"100%\">\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * @example <caption>Partition click events into those on DIV elements and those elsewhere</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var parts = clicks.partition(ev => ev.target.tagName === 'DIV');\n * var clicksOnDivs = parts[0];\n * var clicksElsewhere = parts[1];\n * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));\n * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x));\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable<T>, Observable<T>]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n * @method partition\n * @owner Observable\n */\nexport function partition(predicate, thisArg) {\n    return higherOrder(predicate, thisArg)(this);\n}\n//# sourceMappingURL=partition.js.map","import { Observable } from '../../Observable';\nimport { partition } from '../../operator/partition';\nObservable.prototype.partition = partition;\n//# sourceMappingURL=partition.js.map","import { map } from './map';\n/**\n * Maps each source value (an object) to its specified nested property.\n *\n * <span class=\"informal\">Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted object.</span>\n *\n * <img src=\"./img/pluck.png\" width=\"100%\">\n *\n * Given a list of strings describing a path to an object property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * @example <caption>Map every click to the tagName of the clicked target element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var tagNames = clicks.pluck('target', 'tagName');\n * tagNames.subscribe(x => console.log(x));\n *\n * @see {@link map}\n *\n * @param {...string} properties The nested properties to pluck from each source\n * value (an object).\n * @return {Observable} A new Observable of property values from the source values.\n * @method pluck\n * @owner Observable\n */\nexport function pluck() {\n    var properties = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        properties[_i - 0] = arguments[_i];\n    }\n    var length = properties.length;\n    if (length === 0) {\n        throw new Error('list of properties cannot be empty.');\n    }\n    return function (source) { return map(plucker(properties, length))(source); };\n}\nfunction plucker(props, length) {\n    var mapper = function (x) {\n        var currentProp = x;\n        for (var i = 0; i < length; i++) {\n            var p = currentProp[props[i]];\n            if (typeof p !== 'undefined') {\n                currentProp = p;\n            }\n            else {\n                return undefined;\n            }\n        }\n        return currentProp;\n    };\n    return mapper;\n}\n//# sourceMappingURL=pluck.js.map","import { pluck as higherOrder } from '../operators/pluck';\n/**\n * Maps each source value (an object) to its specified nested property.\n *\n * <span class=\"informal\">Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted object.</span>\n *\n * <img src=\"./img/pluck.png\" width=\"100%\">\n *\n * Given a list of strings describing a path to an object property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * @example <caption>Map every click to the tagName of the clicked target element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var tagNames = clicks.pluck('target', 'tagName');\n * tagNames.subscribe(x => console.log(x));\n *\n * @see {@link map}\n *\n * @param {...string} properties The nested properties to pluck from each source\n * value (an object).\n * @return {Observable} A new Observable of property values from the source values.\n * @method pluck\n * @owner Observable\n */\nexport function pluck() {\n    var properties = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        properties[_i - 0] = arguments[_i];\n    }\n    return higherOrder.apply(void 0, properties)(this);\n}\n//# sourceMappingURL=pluck.js.map","import { Observable } from '../../Observable';\nimport { pluck } from '../../operator/pluck';\nObservable.prototype.pluck = pluck;\n//# sourceMappingURL=pluck.js.map","import { Subject } from '../Subject';\nimport { multicast } from './multicast';\n/* tslint:enable:max-line-length */\n/**\n * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called\n * before it begins emitting items to those Observers that have subscribed to it.\n *\n * <img src=\"./img/publish.png\" width=\"100%\">\n *\n * @param {Function} [selector] - Optional selector function which can use the multicasted source sequence as many times\n * as needed, without causing multiple subscriptions to the source sequence.\n * Subscribers to the given source will receive all notifications of the source from the time of the subscription on.\n * @return A ConnectableObservable that upon connection causes the source Observable to emit items to its Observers.\n * @method publish\n * @owner Observable\n */\nexport function publish(selector) {\n    return selector ?\n        multicast(function () { return new Subject(); }, selector) :\n        multicast(new Subject());\n}\n//# sourceMappingURL=publish.js.map","import { publish as higherOrder } from '../operators/publish';\n/* tslint:enable:max-line-length */\n/**\n * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called\n * before it begins emitting items to those Observers that have subscribed to it.\n *\n * <img src=\"./img/publish.png\" width=\"100%\">\n *\n * @param {Function} [selector] - Optional selector function which can use the multicasted source sequence as many times\n * as needed, without causing multiple subscriptions to the source sequence.\n * Subscribers to the given source will receive all notifications of the source from the time of the subscription on.\n * @return A ConnectableObservable that upon connection causes the source Observable to emit items to its Observers.\n * @method publish\n * @owner Observable\n */\nexport function publish(selector) {\n    return higherOrder(selector)(this);\n}\n//# sourceMappingURL=publish.js.map","import { Observable } from '../../Observable';\nimport { publish } from '../../operator/publish';\nObservable.prototype.publish = publish;\n//# sourceMappingURL=publish.js.map","import { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\n/**\n * @class BehaviorSubject<T>\n */\nexport var BehaviorSubject = (function (_super) {\n    __extends(BehaviorSubject, _super);\n    function BehaviorSubject(_value) {\n        _super.call(this);\n        this._value = _value;\n    }\n    Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n        get: function () {\n            return this.getValue();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /** @deprecated internal use only */ BehaviorSubject.prototype._subscribe = function (subscriber) {\n        var subscription = _super.prototype._subscribe.call(this, subscriber);\n        if (subscription && !subscription.closed) {\n            subscriber.next(this._value);\n        }\n        return subscription;\n    };\n    BehaviorSubject.prototype.getValue = function () {\n        if (this.hasError) {\n            throw this.thrownError;\n        }\n        else if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n        else {\n            return this._value;\n        }\n    };\n    BehaviorSubject.prototype.next = function (value) {\n        _super.prototype.next.call(this, this._value = value);\n    };\n    return BehaviorSubject;\n}(Subject));\n//# sourceMappingURL=BehaviorSubject.js.map","import { BehaviorSubject } from '../BehaviorSubject';\nimport { multicast } from './multicast';\n/**\n * @param value\n * @return {ConnectableObservable<T>}\n * @method publishBehavior\n * @owner Observable\n */\nexport function publishBehavior(value) {\n    return function (source) { return multicast(new BehaviorSubject(value))(source); };\n}\n//# sourceMappingURL=publishBehavior.js.map","import { publishBehavior as higherOrder } from '../operators/publishBehavior';\n/**\n * @param value\n * @return {ConnectableObservable<T>}\n * @method publishBehavior\n * @owner Observable\n */\nexport function publishBehavior(value) {\n    return higherOrder(value)(this);\n}\n//# sourceMappingURL=publishBehavior.js.map","import { Observable } from '../../Observable';\nimport { publishBehavior } from '../../operator/publishBehavior';\nObservable.prototype.publishBehavior = publishBehavior;\n//# sourceMappingURL=publishBehavior.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\n/* tslint:enable:max-line-length */\nexport function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) {\n    if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {\n        scheduler = selectorOrScheduler;\n    }\n    var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;\n    var subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n    return function (source) { return multicast(function () { return subject; }, selector)(source); };\n}\n//# sourceMappingURL=publishReplay.js.map","import { publishReplay as higherOrder } from '../operators/publishReplay';\n/* tslint:enable:max-line-length */\n/**\n * @param bufferSize\n * @param windowTime\n * @param selectorOrScheduler\n * @param scheduler\n * @return {Observable<T> | ConnectableObservable<T>}\n * @method publishReplay\n * @owner Observable\n */\nexport function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) {\n    return higherOrder(bufferSize, windowTime, selectorOrScheduler, scheduler)(this);\n}\n//# sourceMappingURL=publishReplay.js.map","import { Observable } from '../../Observable';\nimport { publishReplay } from '../../operator/publishReplay';\nObservable.prototype.publishReplay = publishReplay;\n//# sourceMappingURL=publishReplay.js.map","import { AsyncSubject } from '../AsyncSubject';\nimport { multicast } from './multicast';\nexport function publishLast() {\n    return function (source) { return multicast(new AsyncSubject())(source); };\n}\n//# sourceMappingURL=publishLast.js.map","import { publishLast as higherOrder } from '../operators/publishLast';\n/**\n * @return {ConnectableObservable<T>}\n * @method publishLast\n * @owner Observable\n */\nexport function publishLast() {\n    //TODO(benlesh): correct type-flow through here.\n    return higherOrder()(this);\n}\n//# sourceMappingURL=publishLast.js.map","import { Observable } from '../../Observable';\nimport { publishLast } from '../../operator/publishLast';\nObservable.prototype.publishLast = publishLast;\n//# sourceMappingURL=publishLast.js.map","import { isArray } from '../util/isArray';\nimport { race as raceStatic } from '../observable/race';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that mirrors the first source Observable to emit an item\n * from the combination of this Observable and supplied Observables.\n * @param {...Observables} ...observables Sources used to race for which Observable emits first.\n * @return {Observable} An Observable that mirrors the output of the first Observable to emit an item.\n * @method race\n * @owner Observable\n */\nexport function race() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    return function raceOperatorFunction(source) {\n        // if the only argument is an array, it was most likely called with\n        // `pair([obs1, obs2, ...])`\n        if (observables.length === 1 && isArray(observables[0])) {\n            observables = observables[0];\n        }\n        return source.lift.call(raceStatic.apply(void 0, [source].concat(observables)));\n    };\n}\n//# sourceMappingURL=race.js.map","import { race as higherOrder } from '../operators/race';\n// NOTE: to support backwards compatability with 5.4.* and lower\nexport { race as raceStatic } from '../observable/race';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that mirrors the first source Observable to emit an item\n * from the combination of this Observable and supplied Observables.\n * @param {...Observables} ...observables Sources used to race for which Observable emits first.\n * @return {Observable} An Observable that mirrors the output of the first Observable to emit an item.\n * @method race\n * @owner Observable\n */\nexport function race() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    return higherOrder.apply(void 0, observables)(this);\n}\n//# sourceMappingURL=race.js.map","import { Observable } from '../../Observable';\nimport { race } from '../../operator/race';\nObservable.prototype.race = race;\n//# sourceMappingURL=race.js.map","import { reduce as higherOrderReduce } from '../operators/reduce';\n/* tslint:enable:max-line-length */\n/**\n * Applies an accumulator function over the source Observable, and returns the\n * accumulated result when the source completes, given an optional seed value.\n *\n * <span class=\"informal\">Combines together all values emitted on the source,\n * using an accumulator function that knows how to join a new source value into\n * the accumulation from the past.</span>\n *\n * <img src=\"./img/reduce.png\" width=\"100%\">\n *\n * Like\n * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce),\n * `reduce` applies an `accumulator` function against an accumulation and each\n * value of the source Observable (from the past) to reduce it to a single\n * value, emitted on the output Observable. Note that `reduce` will only emit\n * one value, only when the source Observable completes. It is equivalent to\n * applying operator {@link scan} followed by operator {@link last}.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * @example <caption>Count the number of click events that happened in 5 seconds</caption>\n * var clicksInFiveSeconds = Rx.Observable.fromEvent(document, 'click')\n *   .takeUntil(Rx.Observable.interval(5000));\n * var ones = clicksInFiveSeconds.mapTo(1);\n * var seed = 0;\n * var count = ones.reduce((acc, one) => acc + one, seed);\n * count.subscribe(x => console.log(x));\n *\n * @see {@link count}\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link scan}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator The accumulator function\n * called on each source value.\n * @param {R} [seed] The initial accumulation value.\n * @return {Observable<R>} An Observable that emits a single value that is the\n * result of accumulating the values emitted by the source Observable.\n * @method reduce\n * @owner Observable\n */\nexport function reduce(accumulator, seed) {\n    // providing a seed of `undefined` *should* be valid and trigger\n    // hasSeed! so don't use `seed !== undefined` checks!\n    // For this reason, we have to check it here at the original call site\n    // otherwise inside Operator/Subscriber we won't know if `undefined`\n    // means they didn't provide anything or if they literally provided `undefined`\n    if (arguments.length >= 2) {\n        return higherOrderReduce(accumulator, seed)(this);\n    }\n    return higherOrderReduce(accumulator)(this);\n}\n//# sourceMappingURL=reduce.js.map","import { Observable } from '../../Observable';\nimport { reduce } from '../../operator/reduce';\nObservable.prototype.reduce = reduce;\n//# sourceMappingURL=reduce.js.map","import { Subscriber } from '../Subscriber';\nimport { EmptyObservable } from '../observable/EmptyObservable';\n/**\n * Returns an Observable that repeats the stream of items emitted by the source Observable at most count times.\n *\n * <img src=\"./img/repeat.png\" width=\"100%\">\n *\n * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield\n * an empty Observable.\n * @return {Observable} An Observable that repeats the stream of items emitted by the source Observable at most\n * count times.\n * @method repeat\n * @owner Observable\n */\nexport function repeat(count) {\n    if (count === void 0) { count = -1; }\n    return function (source) {\n        if (count === 0) {\n            return new EmptyObservable();\n        }\n        else if (count < 0) {\n            return source.lift(new RepeatOperator(-1, source));\n        }\n        else {\n            return source.lift(new RepeatOperator(count - 1, source));\n        }\n    };\n}\nvar RepeatOperator = (function () {\n    function RepeatOperator(count, source) {\n        this.count = count;\n        this.source = source;\n    }\n    RepeatOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));\n    };\n    return RepeatOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar RepeatSubscriber = (function (_super) {\n    __extends(RepeatSubscriber, _super);\n    function RepeatSubscriber(destination, count, source) {\n        _super.call(this, destination);\n        this.count = count;\n        this.source = source;\n    }\n    RepeatSubscriber.prototype.complete = function () {\n        if (!this.isStopped) {\n            var _a = this, source = _a.source, count = _a.count;\n            if (count === 0) {\n                return _super.prototype.complete.call(this);\n            }\n            else if (count > -1) {\n                this.count = count - 1;\n            }\n            source.subscribe(this._unsubscribeAndRecycle());\n        }\n    };\n    return RepeatSubscriber;\n}(Subscriber));\n//# sourceMappingURL=repeat.js.map","import { repeat as higherOrder } from '../operators/repeat';\n/**\n * Returns an Observable that repeats the stream of items emitted by the source Observable at most count times.\n *\n * <img src=\"./img/repeat.png\" width=\"100%\">\n *\n * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield\n * an empty Observable.\n * @return {Observable} An Observable that repeats the stream of items emitted by the source Observable at most\n * count times.\n * @method repeat\n * @owner Observable\n */\nexport function repeat(count) {\n    if (count === void 0) { count = -1; }\n    return higherOrder(count)(this);\n}\n//# sourceMappingURL=repeat.js.map","import { Observable } from '../../Observable';\nimport { repeat } from '../../operator/repeat';\nObservable.prototype.repeat = repeat;\n//# sourceMappingURL=repeat.js.map","import { Subject } from '../Subject';\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source\n * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable\n * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise\n * this method will resubscribe to the source Observable.\n *\n * <img src=\"./img/repeatWhen.png\" width=\"100%\">\n *\n * @param {function(notifications: Observable): Observable} notifier - Receives an Observable of notifications with\n * which a user can `complete` or `error`, aborting the repetition.\n * @return {Observable} The source Observable modified with repeat logic.\n * @method repeatWhen\n * @owner Observable\n */\nexport function repeatWhen(notifier) {\n    return function (source) { return source.lift(new RepeatWhenOperator(notifier)); };\n}\nvar RepeatWhenOperator = (function () {\n    function RepeatWhenOperator(notifier) {\n        this.notifier = notifier;\n    }\n    RepeatWhenOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));\n    };\n    return RepeatWhenOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar RepeatWhenSubscriber = (function (_super) {\n    __extends(RepeatWhenSubscriber, _super);\n    function RepeatWhenSubscriber(destination, notifier, source) {\n        _super.call(this, destination);\n        this.notifier = notifier;\n        this.source = source;\n        this.sourceIsBeingSubscribedTo = true;\n    }\n    RepeatWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.sourceIsBeingSubscribedTo = true;\n        this.source.subscribe(this);\n    };\n    RepeatWhenSubscriber.prototype.notifyComplete = function (innerSub) {\n        if (this.sourceIsBeingSubscribedTo === false) {\n            return _super.prototype.complete.call(this);\n        }\n    };\n    RepeatWhenSubscriber.prototype.complete = function () {\n        this.sourceIsBeingSubscribedTo = false;\n        if (!this.isStopped) {\n            if (!this.retries) {\n                this.subscribeToRetries();\n            }\n            if (!this.retriesSubscription || this.retriesSubscription.closed) {\n                return _super.prototype.complete.call(this);\n            }\n            this._unsubscribeAndRecycle();\n            this.notifications.next();\n        }\n    };\n    /** @deprecated internal use only */ RepeatWhenSubscriber.prototype._unsubscribe = function () {\n        var _a = this, notifications = _a.notifications, retriesSubscription = _a.retriesSubscription;\n        if (notifications) {\n            notifications.unsubscribe();\n            this.notifications = null;\n        }\n        if (retriesSubscription) {\n            retriesSubscription.unsubscribe();\n            this.retriesSubscription = null;\n        }\n        this.retries = null;\n    };\n    /** @deprecated internal use only */ RepeatWhenSubscriber.prototype._unsubscribeAndRecycle = function () {\n        var _a = this, notifications = _a.notifications, retries = _a.retries, retriesSubscription = _a.retriesSubscription;\n        this.notifications = null;\n        this.retries = null;\n        this.retriesSubscription = null;\n        _super.prototype._unsubscribeAndRecycle.call(this);\n        this.notifications = notifications;\n        this.retries = retries;\n        this.retriesSubscription = retriesSubscription;\n        return this;\n    };\n    RepeatWhenSubscriber.prototype.subscribeToRetries = function () {\n        this.notifications = new Subject();\n        var retries = tryCatch(this.notifier)(this.notifications);\n        if (retries === errorObject) {\n            return _super.prototype.complete.call(this);\n        }\n        this.retries = retries;\n        this.retriesSubscription = subscribeToResult(this, retries);\n    };\n    return RepeatWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=repeatWhen.js.map","import { repeatWhen as higherOrder } from '../operators/repeatWhen';\n/**\n * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source\n * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable\n * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise\n * this method will resubscribe to the source Observable.\n *\n * <img src=\"./img/repeatWhen.png\" width=\"100%\">\n *\n * @param {function(notifications: Observable): Observable} notifier - Receives an Observable of notifications with\n * which a user can `complete` or `error`, aborting the repetition.\n * @return {Observable} The source Observable modified with repeat logic.\n * @method repeatWhen\n * @owner Observable\n */\nexport function repeatWhen(notifier) {\n    return higherOrder(notifier)(this);\n}\n//# sourceMappingURL=repeatWhen.js.map","import { Observable } from '../../Observable';\nimport { repeatWhen } from '../../operator/repeatWhen';\nObservable.prototype.repeatWhen = repeatWhen;\n//# sourceMappingURL=repeatWhen.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given\n * as a number parameter) rather than propagating the `error` call.\n *\n * <img src=\"./img/retry.png\" width=\"100%\">\n *\n * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted\n * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second\n * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications\n * would be: [1, 2, 1, 2, 3, 4, 5, `complete`].\n * @param {number} count - Number of retry attempts before failing.\n * @return {Observable} The source Observable modified with the retry logic.\n * @method retry\n * @owner Observable\n */\nexport function retry(count) {\n    if (count === void 0) { count = -1; }\n    return function (source) { return source.lift(new RetryOperator(count, source)); };\n}\nvar RetryOperator = (function () {\n    function RetryOperator(count, source) {\n        this.count = count;\n        this.source = source;\n    }\n    RetryOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n    };\n    return RetryOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar RetrySubscriber = (function (_super) {\n    __extends(RetrySubscriber, _super);\n    function RetrySubscriber(destination, count, source) {\n        _super.call(this, destination);\n        this.count = count;\n        this.source = source;\n    }\n    RetrySubscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            var _a = this, source = _a.source, count = _a.count;\n            if (count === 0) {\n                return _super.prototype.error.call(this, err);\n            }\n            else if (count > -1) {\n                this.count = count - 1;\n            }\n            source.subscribe(this._unsubscribeAndRecycle());\n        }\n    };\n    return RetrySubscriber;\n}(Subscriber));\n//# sourceMappingURL=retry.js.map","import { retry as higherOrder } from '../operators/retry';\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given\n * as a number parameter) rather than propagating the `error` call.\n *\n * <img src=\"./img/retry.png\" width=\"100%\">\n *\n * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted\n * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second\n * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications\n * would be: [1, 2, 1, 2, 3, 4, 5, `complete`].\n * @param {number} count - Number of retry attempts before failing.\n * @return {Observable} The source Observable modified with the retry logic.\n * @method retry\n * @owner Observable\n */\nexport function retry(count) {\n    if (count === void 0) { count = -1; }\n    return higherOrder(count)(this);\n}\n//# sourceMappingURL=retry.js.map","import { Observable } from '../../Observable';\nimport { retry } from '../../operator/retry';\nObservable.prototype.retry = retry;\n//# sourceMappingURL=retry.js.map","import { Subject } from '../Subject';\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will emit the Throwable that caused the error to the Observable returned from `notifier`.\n * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child\n * subscription. Otherwise this method will resubscribe to the source Observable.\n *\n * <img src=\"./img/retryWhen.png\" width=\"100%\">\n *\n * @param {function(errors: Observable): Observable} notifier - Receives an Observable of notifications with which a\n * user can `complete` or `error`, aborting the retry.\n * @return {Observable} The source Observable modified with retry logic.\n * @method retryWhen\n * @owner Observable\n */\nexport function retryWhen(notifier) {\n    return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); };\n}\nvar RetryWhenOperator = (function () {\n    function RetryWhenOperator(notifier, source) {\n        this.notifier = notifier;\n        this.source = source;\n    }\n    RetryWhenOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n    };\n    return RetryWhenOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar RetryWhenSubscriber = (function (_super) {\n    __extends(RetryWhenSubscriber, _super);\n    function RetryWhenSubscriber(destination, notifier, source) {\n        _super.call(this, destination);\n        this.notifier = notifier;\n        this.source = source;\n    }\n    RetryWhenSubscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            var errors = this.errors;\n            var retries = this.retries;\n            var retriesSubscription = this.retriesSubscription;\n            if (!retries) {\n                errors = new Subject();\n                retries = tryCatch(this.notifier)(errors);\n                if (retries === errorObject) {\n                    return _super.prototype.error.call(this, errorObject.e);\n                }\n                retriesSubscription = subscribeToResult(this, retries);\n            }\n            else {\n                this.errors = null;\n                this.retriesSubscription = null;\n            }\n            this._unsubscribeAndRecycle();\n            this.errors = errors;\n            this.retries = retries;\n            this.retriesSubscription = retriesSubscription;\n            errors.next(err);\n        }\n    };\n    /** @deprecated internal use only */ RetryWhenSubscriber.prototype._unsubscribe = function () {\n        var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription;\n        if (errors) {\n            errors.unsubscribe();\n            this.errors = null;\n        }\n        if (retriesSubscription) {\n            retriesSubscription.unsubscribe();\n            this.retriesSubscription = null;\n        }\n        this.retries = null;\n    };\n    RetryWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        var _a = this, errors = _a.errors, retries = _a.retries, retriesSubscription = _a.retriesSubscription;\n        this.errors = null;\n        this.retries = null;\n        this.retriesSubscription = null;\n        this._unsubscribeAndRecycle();\n        this.errors = errors;\n        this.retries = retries;\n        this.retriesSubscription = retriesSubscription;\n        this.source.subscribe(this);\n    };\n    return RetryWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=retryWhen.js.map","import { retryWhen as higherOrder } from '../operators/retryWhen';\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will emit the Throwable that caused the error to the Observable returned from `notifier`.\n * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child\n * subscription. Otherwise this method will resubscribe to the source Observable.\n *\n * <img src=\"./img/retryWhen.png\" width=\"100%\">\n *\n * @param {function(errors: Observable): Observable} notifier - Receives an Observable of notifications with which a\n * user can `complete` or `error`, aborting the retry.\n * @return {Observable} The source Observable modified with retry logic.\n * @method retryWhen\n * @owner Observable\n */\nexport function retryWhen(notifier) {\n    return higherOrder(notifier)(this);\n}\n//# sourceMappingURL=retryWhen.js.map","import { Observable } from '../../Observable';\nimport { retryWhen } from '../../operator/retryWhen';\nObservable.prototype.retryWhen = retryWhen;\n//# sourceMappingURL=retryWhen.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Emits the most recently emitted value from the source Observable whenever\n * another Observable, the `notifier`, emits.\n *\n * <span class=\"informal\">It's like {@link sampleTime}, but samples whenever\n * the `notifier` Observable emits something.</span>\n *\n * <img src=\"./img/sample.png\" width=\"100%\">\n *\n * Whenever the `notifier` Observable emits a value or completes, `sample`\n * looks at the source Observable and emits whichever value it has most recently\n * emitted since the previous sampling, unless the source has not emitted\n * anything since the previous sampling. The `notifier` is subscribed to as soon\n * as the output Observable is subscribed.\n *\n * @example <caption>On every click, sample the most recent \"seconds\" timer</caption>\n * var seconds = Rx.Observable.interval(1000);\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = seconds.sample(clicks);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {Observable<any>} notifier The Observable to use for sampling the\n * source Observable.\n * @return {Observable<T>} An Observable that emits the results of sampling the\n * values emitted by the source Observable whenever the notifier Observable\n * emits value or completes.\n * @method sample\n * @owner Observable\n */\nexport function sample(notifier) {\n    return function (source) { return source.lift(new SampleOperator(notifier)); };\n}\nvar SampleOperator = (function () {\n    function SampleOperator(notifier) {\n        this.notifier = notifier;\n    }\n    SampleOperator.prototype.call = function (subscriber, source) {\n        var sampleSubscriber = new SampleSubscriber(subscriber);\n        var subscription = source.subscribe(sampleSubscriber);\n        subscription.add(subscribeToResult(sampleSubscriber, this.notifier));\n        return subscription;\n    };\n    return SampleOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SampleSubscriber = (function (_super) {\n    __extends(SampleSubscriber, _super);\n    function SampleSubscriber() {\n        _super.apply(this, arguments);\n        this.hasValue = false;\n    }\n    SampleSubscriber.prototype._next = function (value) {\n        this.value = value;\n        this.hasValue = true;\n    };\n    SampleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.emitValue();\n    };\n    SampleSubscriber.prototype.notifyComplete = function () {\n        this.emitValue();\n    };\n    SampleSubscriber.prototype.emitValue = function () {\n        if (this.hasValue) {\n            this.hasValue = false;\n            this.destination.next(this.value);\n        }\n    };\n    return SampleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=sample.js.map","import { sample as higherOrder } from '../operators/sample';\n/**\n * Emits the most recently emitted value from the source Observable whenever\n * another Observable, the `notifier`, emits.\n *\n * <span class=\"informal\">It's like {@link sampleTime}, but samples whenever\n * the `notifier` Observable emits something.</span>\n *\n * <img src=\"./img/sample.png\" width=\"100%\">\n *\n * Whenever the `notifier` Observable emits a value or completes, `sample`\n * looks at the source Observable and emits whichever value it has most recently\n * emitted since the previous sampling, unless the source has not emitted\n * anything since the previous sampling. The `notifier` is subscribed to as soon\n * as the output Observable is subscribed.\n *\n * @example <caption>On every click, sample the most recent \"seconds\" timer</caption>\n * var seconds = Rx.Observable.interval(1000);\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = seconds.sample(clicks);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {Observable<any>} notifier The Observable to use for sampling the\n * source Observable.\n * @return {Observable<T>} An Observable that emits the results of sampling the\n * values emitted by the source Observable whenever the notifier Observable\n * emits value or completes.\n * @method sample\n * @owner Observable\n */\nexport function sample(notifier) {\n    return higherOrder(notifier)(this);\n}\n//# sourceMappingURL=sample.js.map","import { Observable } from '../../Observable';\nimport { sample } from '../../operator/sample';\nObservable.prototype.sample = sample;\n//# sourceMappingURL=sample.js.map","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\n/**\n * Emits the most recently emitted value from the source Observable within\n * periodic time intervals.\n *\n * <span class=\"informal\">Samples the source Observable at periodic time\n * intervals, emitting what it samples.</span>\n *\n * <img src=\"./img/sampleTime.png\" width=\"100%\">\n *\n * `sampleTime` periodically looks at the source Observable and emits whichever\n * value it has most recently emitted since the previous sampling, unless the\n * source has not emitted anything since the previous sampling. The sampling\n * happens periodically in time every `period` milliseconds (or the time unit\n * defined by the optional `scheduler` argument). The sampling starts as soon as\n * the output Observable is subscribed.\n *\n * @example <caption>Every second, emit the most recent click at most once</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.sampleTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {number} period The sampling period expressed in milliseconds or the\n * time unit determined internally by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the sampling.\n * @return {Observable<T>} An Observable that emits the results of sampling the\n * values emitted by the source Observable at the specified time interval.\n * @method sampleTime\n * @owner Observable\n */\nexport function sampleTime(period, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return function (source) { return source.lift(new SampleTimeOperator(period, scheduler)); };\n}\nvar SampleTimeOperator = (function () {\n    function SampleTimeOperator(period, scheduler) {\n        this.period = period;\n        this.scheduler = scheduler;\n    }\n    SampleTimeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));\n    };\n    return SampleTimeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SampleTimeSubscriber = (function (_super) {\n    __extends(SampleTimeSubscriber, _super);\n    function SampleTimeSubscriber(destination, period, scheduler) {\n        _super.call(this, destination);\n        this.period = period;\n        this.scheduler = scheduler;\n        this.hasValue = false;\n        this.add(scheduler.schedule(dispatchNotification, period, { subscriber: this, period: period }));\n    }\n    SampleTimeSubscriber.prototype._next = function (value) {\n        this.lastValue = value;\n        this.hasValue = true;\n    };\n    SampleTimeSubscriber.prototype.notifyNext = function () {\n        if (this.hasValue) {\n            this.hasValue = false;\n            this.destination.next(this.lastValue);\n        }\n    };\n    return SampleTimeSubscriber;\n}(Subscriber));\nfunction dispatchNotification(state) {\n    var subscriber = state.subscriber, period = state.period;\n    subscriber.notifyNext();\n    this.schedule(state, period);\n}\n//# sourceMappingURL=sampleTime.js.map","import { async } from '../scheduler/async';\nimport { sampleTime as higherOrder } from '../operators/sampleTime';\n/**\n * Emits the most recently emitted value from the source Observable within\n * periodic time intervals.\n *\n * <span class=\"informal\">Samples the source Observable at periodic time\n * intervals, emitting what it samples.</span>\n *\n * <img src=\"./img/sampleTime.png\" width=\"100%\">\n *\n * `sampleTime` periodically looks at the source Observable and emits whichever\n * value it has most recently emitted since the previous sampling, unless the\n * source has not emitted anything since the previous sampling. The sampling\n * happens periodically in time every `period` milliseconds (or the time unit\n * defined by the optional `scheduler` argument). The sampling starts as soon as\n * the output Observable is subscribed.\n *\n * @example <caption>Every second, emit the most recent click at most once</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.sampleTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {number} period The sampling period expressed in milliseconds or the\n * time unit determined internally by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the sampling.\n * @return {Observable<T>} An Observable that emits the results of sampling the\n * values emitted by the source Observable at the specified time interval.\n * @method sampleTime\n * @owner Observable\n */\nexport function sampleTime(period, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return higherOrder(period, scheduler)(this);\n}\n//# sourceMappingURL=sampleTime.js.map","import { Observable } from '../../Observable';\nimport { sampleTime } from '../../operator/sampleTime';\nObservable.prototype.sampleTime = sampleTime;\n//# sourceMappingURL=sampleTime.js.map","import { scan as higherOrderScan } from '../operators/scan';\n/* tslint:enable:max-line-length */\n/**\n * Applies an accumulator function over the source Observable, and returns each\n * intermediate result, with an optional seed value.\n *\n * <span class=\"informal\">It's like {@link reduce}, but emits the current\n * accumulation whenever the source emits a value.</span>\n *\n * <img src=\"./img/scan.png\" width=\"100%\">\n *\n * Combines together all values emitted on the source, using an accumulator\n * function that knows how to join a new source value into the accumulation from\n * the past. Is similar to {@link reduce}, but emits the intermediate\n * accumulations.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * @example <caption>Count the number of click events</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var ones = clicks.mapTo(1);\n * var seed = 0;\n * var count = ones.scan((acc, one) => acc + one, seed);\n * count.subscribe(x => console.log(x));\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator\n * The accumulator function called on each source value.\n * @param {T|R} [seed] The initial accumulation value.\n * @return {Observable<R>} An observable of the accumulated values.\n * @method scan\n * @owner Observable\n */\nexport function scan(accumulator, seed) {\n    if (arguments.length >= 2) {\n        return higherOrderScan(accumulator, seed)(this);\n    }\n    return higherOrderScan(accumulator)(this);\n}\n//# sourceMappingURL=scan.js.map","import { Observable } from '../../Observable';\nimport { scan } from '../../operator/scan';\nObservable.prototype.scan = scan;\n//# sourceMappingURL=scan.js.map","import { Subscriber } from '../Subscriber';\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\n/**\n * Compares all values of two observables in sequence using an optional comparor function\n * and returns an observable of a single boolean value representing whether or not the two sequences\n * are equal.\n *\n * <span class=\"informal\">Checks to see of all values emitted by both observables are equal, in order.</span>\n *\n * <img src=\"./img/sequenceEqual.png\" width=\"100%\">\n *\n * `sequenceEqual` subscribes to two observables and buffers incoming values from each observable. Whenever either\n * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom\n * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the\n * observables completes, the operator will wait for the other observable to complete; If the other\n * observable emits before completing, the returned observable will emit `false` and complete. If one observable never\n * completes or emits after the other complets, the returned observable will never complete.\n *\n * @example <caption>figure out if the Konami code matches</caption>\n * var code = Rx.Observable.from([\n *  \"ArrowUp\",\n *  \"ArrowUp\",\n *  \"ArrowDown\",\n *  \"ArrowDown\",\n *  \"ArrowLeft\",\n *  \"ArrowRight\",\n *  \"ArrowLeft\",\n *  \"ArrowRight\",\n *  \"KeyB\",\n *  \"KeyA\",\n *  \"Enter\" // no start key, clearly.\n * ]);\n *\n * var keys = Rx.Observable.fromEvent(document, 'keyup')\n *  .map(e => e.code);\n * var matches = keys.bufferCount(11, 1)\n *  .mergeMap(\n *    last11 =>\n *      Rx.Observable.from(last11)\n *        .sequenceEqual(code)\n *   );\n * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched));\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n * @see {@link withLatestFrom}\n *\n * @param {Observable} compareTo The observable sequence to compare the source sequence to.\n * @param {function} [comparor] An optional function to compare each value pair\n * @return {Observable} An Observable of a single boolean value representing whether or not\n * the values emitted by both observables were equal in sequence.\n * @method sequenceEqual\n * @owner Observable\n */\nexport function sequenceEqual(compareTo, comparor) {\n    return function (source) { return source.lift(new SequenceEqualOperator(compareTo, comparor)); };\n}\nexport var SequenceEqualOperator = (function () {\n    function SequenceEqualOperator(compareTo, comparor) {\n        this.compareTo = compareTo;\n        this.comparor = comparor;\n    }\n    SequenceEqualOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparor));\n    };\n    return SequenceEqualOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var SequenceEqualSubscriber = (function (_super) {\n    __extends(SequenceEqualSubscriber, _super);\n    function SequenceEqualSubscriber(destination, compareTo, comparor) {\n        _super.call(this, destination);\n        this.compareTo = compareTo;\n        this.comparor = comparor;\n        this._a = [];\n        this._b = [];\n        this._oneComplete = false;\n        this.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, this)));\n    }\n    SequenceEqualSubscriber.prototype._next = function (value) {\n        if (this._oneComplete && this._b.length === 0) {\n            this.emit(false);\n        }\n        else {\n            this._a.push(value);\n            this.checkValues();\n        }\n    };\n    SequenceEqualSubscriber.prototype._complete = function () {\n        if (this._oneComplete) {\n            this.emit(this._a.length === 0 && this._b.length === 0);\n        }\n        else {\n            this._oneComplete = true;\n        }\n    };\n    SequenceEqualSubscriber.prototype.checkValues = function () {\n        var _c = this, _a = _c._a, _b = _c._b, comparor = _c.comparor;\n        while (_a.length > 0 && _b.length > 0) {\n            var a = _a.shift();\n            var b = _b.shift();\n            var areEqual = false;\n            if (comparor) {\n                areEqual = tryCatch(comparor)(a, b);\n                if (areEqual === errorObject) {\n                    this.destination.error(errorObject.e);\n                }\n            }\n            else {\n                areEqual = a === b;\n            }\n            if (!areEqual) {\n                this.emit(false);\n            }\n        }\n    };\n    SequenceEqualSubscriber.prototype.emit = function (value) {\n        var destination = this.destination;\n        destination.next(value);\n        destination.complete();\n    };\n    SequenceEqualSubscriber.prototype.nextB = function (value) {\n        if (this._oneComplete && this._a.length === 0) {\n            this.emit(false);\n        }\n        else {\n            this._b.push(value);\n            this.checkValues();\n        }\n    };\n    return SequenceEqualSubscriber;\n}(Subscriber));\nvar SequenceEqualCompareToSubscriber = (function (_super) {\n    __extends(SequenceEqualCompareToSubscriber, _super);\n    function SequenceEqualCompareToSubscriber(destination, parent) {\n        _super.call(this, destination);\n        this.parent = parent;\n    }\n    SequenceEqualCompareToSubscriber.prototype._next = function (value) {\n        this.parent.nextB(value);\n    };\n    SequenceEqualCompareToSubscriber.prototype._error = function (err) {\n        this.parent.error(err);\n    };\n    SequenceEqualCompareToSubscriber.prototype._complete = function () {\n        this.parent._complete();\n    };\n    return SequenceEqualCompareToSubscriber;\n}(Subscriber));\n//# sourceMappingURL=sequenceEqual.js.map","import { sequenceEqual as higherOrder } from '../operators/sequenceEqual';\n/**\n * Compares all values of two observables in sequence using an optional comparor function\n * and returns an observable of a single boolean value representing whether or not the two sequences\n * are equal.\n *\n * <span class=\"informal\">Checks to see of all values emitted by both observables are equal, in order.</span>\n *\n * <img src=\"./img/sequenceEqual.png\" width=\"100%\">\n *\n * `sequenceEqual` subscribes to two observables and buffers incoming values from each observable. Whenever either\n * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom\n * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the\n * observables completes, the operator will wait for the other observable to complete; If the other\n * observable emits before completing, the returned observable will emit `false` and complete. If one observable never\n * completes or emits after the other complets, the returned observable will never complete.\n *\n * @example <caption>figure out if the Konami code matches</caption>\n * var code = Rx.Observable.from([\n *  \"ArrowUp\",\n *  \"ArrowUp\",\n *  \"ArrowDown\",\n *  \"ArrowDown\",\n *  \"ArrowLeft\",\n *  \"ArrowRight\",\n *  \"ArrowLeft\",\n *  \"ArrowRight\",\n *  \"KeyB\",\n *  \"KeyA\",\n *  \"Enter\" // no start key, clearly.\n * ]);\n *\n * var keys = Rx.Observable.fromEvent(document, 'keyup')\n *  .map(e => e.code);\n * var matches = keys.bufferCount(11, 1)\n *  .mergeMap(\n *    last11 =>\n *      Rx.Observable.from(last11)\n *        .sequenceEqual(code)\n *   );\n * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched));\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n * @see {@link withLatestFrom}\n *\n * @param {Observable} compareTo The observable sequence to compare the source sequence to.\n * @param {function} [comparor] An optional function to compare each value pair\n * @return {Observable} An Observable of a single boolean value representing whether or not\n * the values emitted by both observables were equal in sequence.\n * @method sequenceEqual\n * @owner Observable\n */\nexport function sequenceEqual(compareTo, comparor) {\n    return higherOrder(compareTo, comparor)(this);\n}\n//# sourceMappingURL=sequenceEqual.js.map","import { Observable } from '../../Observable';\nimport { sequenceEqual } from '../../operator/sequenceEqual';\nObservable.prototype.sequenceEqual = sequenceEqual;\n//# sourceMappingURL=sequenceEqual.js.map","import { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n    return new Subject();\n}\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for .multicast(() => new Subject()).refCount().\n *\n * <img src=\"./img/share.png\" width=\"100%\">\n *\n * @return {Observable<T>} An Observable that upon connection causes the source Observable to emit items to its Observers.\n * @method share\n * @owner Observable\n */\nexport function share() {\n    return function (source) { return refCount()(multicast(shareSubjectFactory)(source)); };\n}\n;\n//# sourceMappingURL=share.js.map","import { share as higherOrder } from '../operators/share';\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n *\n * This behaves similarly to .publish().refCount(), with a behavior difference when the source observable emits complete.\n * .publish().refCount() will not resubscribe to the original source, however .share() will resubscribe to the original source.\n * Observable.of(\"test\").publish().refCount() will not re-emit \"test\" on new subscriptions, Observable.of(\"test\").share() will\n * re-emit \"test\" to new subscriptions.\n *\n * <img src=\"./img/share.png\" width=\"100%\">\n *\n * @return {Observable<T>} An Observable that upon connection causes the source Observable to emit items to its Observers.\n * @method share\n * @owner Observable\n */\nexport function share() {\n    return higherOrder()(this);\n}\n;\n//# sourceMappingURL=share.js.map","import { Observable } from '../../Observable';\nimport { share } from '../../operator/share';\nObservable.prototype.share = share;\n//# sourceMappingURL=share.js.map","import { ReplaySubject } from '../ReplaySubject';\n/**\n * @method shareReplay\n * @owner Observable\n */\nexport function shareReplay(bufferSize, windowTime, scheduler) {\n    return function (source) { return source.lift(shareReplayOperator(bufferSize, windowTime, scheduler)); };\n}\nfunction shareReplayOperator(bufferSize, windowTime, scheduler) {\n    var subject;\n    var refCount = 0;\n    var subscription;\n    var hasError = false;\n    var isComplete = false;\n    return function shareReplayOperation(source) {\n        refCount++;\n        if (!subject || hasError) {\n            hasError = false;\n            subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n            subscription = source.subscribe({\n                next: function (value) { subject.next(value); },\n                error: function (err) {\n                    hasError = true;\n                    subject.error(err);\n                },\n                complete: function () {\n                    isComplete = true;\n                    subject.complete();\n                },\n            });\n        }\n        var innerSub = subject.subscribe(this);\n        return function () {\n            refCount--;\n            innerSub.unsubscribe();\n            if (subscription && refCount === 0 && isComplete) {\n                subscription.unsubscribe();\n            }\n        };\n    };\n}\n;\n//# sourceMappingURL=shareReplay.js.map","import { shareReplay as higherOrder } from '../operators/shareReplay';\n/**\n * @method shareReplay\n * @owner Observable\n */\nexport function shareReplay(bufferSize, windowTime, scheduler) {\n    return higherOrder(bufferSize, windowTime, scheduler)(this);\n}\n;\n//# sourceMappingURL=shareReplay.js.map","import { Observable } from '../../Observable';\nimport { shareReplay } from '../../operator/shareReplay';\nObservable.prototype.shareReplay = shareReplay;\n//# sourceMappingURL=shareReplay.js.map","import { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\n/**\n * Returns an Observable that emits the single item emitted by the source Observable that matches a specified\n * predicate, if that Observable emits one such item. If the source Observable emits more than one such item or no\n * such items, notify of an IllegalArgumentException or NoSuchElementException respectively.\n *\n * <img src=\"./img/single.png\" width=\"100%\">\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {Function} predicate - A predicate function to evaluate items emitted by the source Observable.\n * @return {Observable<T>} An Observable that emits the single item emitted by the source Observable that matches\n * the predicate.\n .\n * @method single\n * @owner Observable\n */\nexport function single(predicate) {\n    return function (source) { return source.lift(new SingleOperator(predicate, source)); };\n}\nvar SingleOperator = (function () {\n    function SingleOperator(predicate, source) {\n        this.predicate = predicate;\n        this.source = source;\n    }\n    SingleOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));\n    };\n    return SingleOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SingleSubscriber = (function (_super) {\n    __extends(SingleSubscriber, _super);\n    function SingleSubscriber(destination, predicate, source) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.source = source;\n        this.seenValue = false;\n        this.index = 0;\n    }\n    SingleSubscriber.prototype.applySingleValue = function (value) {\n        if (this.seenValue) {\n            this.destination.error('Sequence contains more than one element');\n        }\n        else {\n            this.seenValue = true;\n            this.singleValue = value;\n        }\n    };\n    SingleSubscriber.prototype._next = function (value) {\n        var index = this.index++;\n        if (this.predicate) {\n            this.tryNext(value, index);\n        }\n        else {\n            this.applySingleValue(value);\n        }\n    };\n    SingleSubscriber.prototype.tryNext = function (value, index) {\n        try {\n            if (this.predicate(value, index, this.source)) {\n                this.applySingleValue(value);\n            }\n        }\n        catch (err) {\n            this.destination.error(err);\n        }\n    };\n    SingleSubscriber.prototype._complete = function () {\n        var destination = this.destination;\n        if (this.index > 0) {\n            destination.next(this.seenValue ? this.singleValue : undefined);\n            destination.complete();\n        }\n        else {\n            destination.error(new EmptyError);\n        }\n    };\n    return SingleSubscriber;\n}(Subscriber));\n//# sourceMappingURL=single.js.map","import { single as higherOrder } from '../operators/single';\n/**\n * Returns an Observable that emits the single item emitted by the source Observable that matches a specified\n * predicate, if that Observable emits one such item. If the source Observable emits more than one such item or no\n * such items, notify of an IllegalArgumentException or NoSuchElementException respectively.\n *\n * <img src=\"./img/single.png\" width=\"100%\">\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {Function} predicate - A predicate function to evaluate items emitted by the source Observable.\n * @return {Observable<T>} An Observable that emits the single item emitted by the source Observable that matches\n * the predicate.\n .\n * @method single\n * @owner Observable\n */\nexport function single(predicate) {\n    return higherOrder(predicate)(this);\n}\n//# sourceMappingURL=single.js.map","import { Observable } from '../../Observable';\nimport { single } from '../../operator/single';\nObservable.prototype.single = single;\n//# sourceMappingURL=single.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * <img src=\"./img/skip.png\" width=\"100%\">\n *\n * @param {Number} count - The number of times, items emitted by source Observable should be skipped.\n * @return {Observable} An Observable that skips values emitted by the source Observable.\n *\n * @method skip\n * @owner Observable\n */\nexport function skip(count) {\n    return function (source) { return source.lift(new SkipOperator(count)); };\n}\nvar SkipOperator = (function () {\n    function SkipOperator(total) {\n        this.total = total;\n    }\n    SkipOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SkipSubscriber(subscriber, this.total));\n    };\n    return SkipOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SkipSubscriber = (function (_super) {\n    __extends(SkipSubscriber, _super);\n    function SkipSubscriber(destination, total) {\n        _super.call(this, destination);\n        this.total = total;\n        this.count = 0;\n    }\n    SkipSubscriber.prototype._next = function (x) {\n        if (++this.count > this.total) {\n            this.destination.next(x);\n        }\n    };\n    return SkipSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skip.js.map","import { skip as higherOrder } from '../operators/skip';\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * <img src=\"./img/skip.png\" width=\"100%\">\n *\n * @param {Number} count - The number of times, items emitted by source Observable should be skipped.\n * @return {Observable} An Observable that skips values emitted by the source Observable.\n *\n * @method skip\n * @owner Observable\n */\nexport function skip(count) {\n    return higherOrder(count)(this);\n}\n//# sourceMappingURL=skip.js.map","import { Observable } from '../../Observable';\nimport { skip } from '../../operator/skip';\nObservable.prototype.skip = skip;\n//# sourceMappingURL=skip.js.map","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\n/**\n * Skip the last `count` values emitted by the source Observable.\n *\n * <img src=\"./img/skipLast.png\" width=\"100%\">\n *\n * `skipLast` returns an Observable that accumulates a queue with a length\n * enough to store the first `count` values. As more values are received,\n * values are taken from the front of the queue and produced on the result\n * sequence. This causes values to be delayed.\n *\n * @example <caption>Skip the last 2 values of an Observable with many values</caption>\n * var many = Rx.Observable.range(1, 5);\n * var skipLastTwo = many.skipLast(2);\n * skipLastTwo.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 1 2 3\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipWhile}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `skipLast(i)`, it throws\n * ArgumentOutOrRangeError if `i < 0`.\n *\n * @param {number} count Number of elements to skip from the end of the source Observable.\n * @returns {Observable<T>} An Observable that skips the last count values\n * emitted by the source Observable.\n * @method skipLast\n * @owner Observable\n */\nexport function skipLast(count) {\n    return function (source) { return source.lift(new SkipLastOperator(count)); };\n}\nvar SkipLastOperator = (function () {\n    function SkipLastOperator(_skipCount) {\n        this._skipCount = _skipCount;\n        if (this._skipCount < 0) {\n            throw new ArgumentOutOfRangeError;\n        }\n    }\n    SkipLastOperator.prototype.call = function (subscriber, source) {\n        if (this._skipCount === 0) {\n            // If we don't want to skip any values then just subscribe\n            // to Subscriber without any further logic.\n            return source.subscribe(new Subscriber(subscriber));\n        }\n        else {\n            return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));\n        }\n    };\n    return SkipLastOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SkipLastSubscriber = (function (_super) {\n    __extends(SkipLastSubscriber, _super);\n    function SkipLastSubscriber(destination, _skipCount) {\n        _super.call(this, destination);\n        this._skipCount = _skipCount;\n        this._count = 0;\n        this._ring = new Array(_skipCount);\n    }\n    SkipLastSubscriber.prototype._next = function (value) {\n        var skipCount = this._skipCount;\n        var count = this._count++;\n        if (count < skipCount) {\n            this._ring[count] = value;\n        }\n        else {\n            var currentIndex = count % skipCount;\n            var ring = this._ring;\n            var oldValue = ring[currentIndex];\n            ring[currentIndex] = value;\n            this.destination.next(oldValue);\n        }\n    };\n    return SkipLastSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skipLast.js.map","import { skipLast as higherOrder } from '../operators/skipLast';\n/**\n * Skip the last `count` values emitted by the source Observable.\n *\n * <img src=\"./img/skipLast.png\" width=\"100%\">\n *\n * `skipLast` returns an Observable that accumulates a queue with a length\n * enough to store the first `count` values. As more values are received,\n * values are taken from the front of the queue and produced on the result\n * sequence. This causes values to be delayed.\n *\n * @example <caption>Skip the last 2 values of an Observable with many values</caption>\n * var many = Rx.Observable.range(1, 5);\n * var skipLastTwo = many.skipLast(2);\n * skipLastTwo.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 1 2 3\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipWhile}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `skipLast(i)`, it throws\n * ArgumentOutOrRangeError if `i < 0`.\n *\n * @param {number} count Number of elements to skip from the end of the source Observable.\n * @returns {Observable<T>} An Observable that skips the last count values\n * emitted by the source Observable.\n * @method skipLast\n * @owner Observable\n */\nexport function skipLast(count) {\n    return higherOrder(count)(this);\n}\n//# sourceMappingURL=skipLast.js.map","import { Observable } from '../../Observable';\nimport { skipLast } from '../../operator/skipLast';\nObservable.prototype.skipLast = skipLast;\n//# sourceMappingURL=skipLast.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item.\n *\n * <img src=\"./img/skipUntil.png\" width=\"100%\">\n *\n * @param {Observable} notifier - The second Observable that has to emit an item before the source Observable's elements begin to\n * be mirrored by the resulting Observable.\n * @return {Observable<T>} An Observable that skips items from the source Observable until the second Observable emits\n * an item, then emits the remaining items.\n * @method skipUntil\n * @owner Observable\n */\nexport function skipUntil(notifier) {\n    return function (source) { return source.lift(new SkipUntilOperator(notifier)); };\n}\nvar SkipUntilOperator = (function () {\n    function SkipUntilOperator(notifier) {\n        this.notifier = notifier;\n    }\n    SkipUntilOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SkipUntilSubscriber(subscriber, this.notifier));\n    };\n    return SkipUntilOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SkipUntilSubscriber = (function (_super) {\n    __extends(SkipUntilSubscriber, _super);\n    function SkipUntilSubscriber(destination, notifier) {\n        _super.call(this, destination);\n        this.hasValue = false;\n        this.isInnerStopped = false;\n        this.add(subscribeToResult(this, notifier));\n    }\n    SkipUntilSubscriber.prototype._next = function (value) {\n        if (this.hasValue) {\n            _super.prototype._next.call(this, value);\n        }\n    };\n    SkipUntilSubscriber.prototype._complete = function () {\n        if (this.isInnerStopped) {\n            _super.prototype._complete.call(this);\n        }\n        else {\n            this.unsubscribe();\n        }\n    };\n    SkipUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.hasValue = true;\n    };\n    SkipUntilSubscriber.prototype.notifyComplete = function () {\n        this.isInnerStopped = true;\n        if (this.isStopped) {\n            _super.prototype._complete.call(this);\n        }\n    };\n    return SkipUntilSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=skipUntil.js.map","import { skipUntil as higherOrder } from '../operators/skipUntil';\n/**\n * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item.\n *\n * <img src=\"./img/skipUntil.png\" width=\"100%\">\n *\n * @param {Observable} notifier - The second Observable that has to emit an item before the source Observable's elements begin to\n * be mirrored by the resulting Observable.\n * @return {Observable<T>} An Observable that skips items from the source Observable until the second Observable emits\n * an item, then emits the remaining items.\n * @method skipUntil\n * @owner Observable\n */\nexport function skipUntil(notifier) {\n    return higherOrder(notifier)(this);\n}\n//# sourceMappingURL=skipUntil.js.map","import { Observable } from '../../Observable';\nimport { skipUntil } from '../../operator/skipUntil';\nObservable.prototype.skipUntil = skipUntil;\n//# sourceMappingURL=skipUntil.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds\n * true, but emits all further source items as soon as the condition becomes false.\n *\n * <img src=\"./img/skipWhile.png\" width=\"100%\">\n *\n * @param {Function} predicate - A function to test each item emitted from the source Observable.\n * @return {Observable<T>} An Observable that begins emitting items emitted by the source Observable when the\n * specified predicate becomes false.\n * @method skipWhile\n * @owner Observable\n */\nexport function skipWhile(predicate) {\n    return function (source) { return source.lift(new SkipWhileOperator(predicate)); };\n}\nvar SkipWhileOperator = (function () {\n    function SkipWhileOperator(predicate) {\n        this.predicate = predicate;\n    }\n    SkipWhileOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n    };\n    return SkipWhileOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SkipWhileSubscriber = (function (_super) {\n    __extends(SkipWhileSubscriber, _super);\n    function SkipWhileSubscriber(destination, predicate) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.skipping = true;\n        this.index = 0;\n    }\n    SkipWhileSubscriber.prototype._next = function (value) {\n        var destination = this.destination;\n        if (this.skipping) {\n            this.tryCallPredicate(value);\n        }\n        if (!this.skipping) {\n            destination.next(value);\n        }\n    };\n    SkipWhileSubscriber.prototype.tryCallPredicate = function (value) {\n        try {\n            var result = this.predicate(value, this.index++);\n            this.skipping = Boolean(result);\n        }\n        catch (err) {\n            this.destination.error(err);\n        }\n    };\n    return SkipWhileSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skipWhile.js.map","import { skipWhile as higherOrder } from '../operators/skipWhile';\n/**\n * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds\n * true, but emits all further source items as soon as the condition becomes false.\n *\n * <img src=\"./img/skipWhile.png\" width=\"100%\">\n *\n * @param {Function} predicate - A function to test each item emitted from the source Observable.\n * @return {Observable<T>} An Observable that begins emitting items emitted by the source Observable when the\n * specified predicate becomes false.\n * @method skipWhile\n * @owner Observable\n */\nexport function skipWhile(predicate) {\n    return higherOrder(predicate)(this);\n}\n//# sourceMappingURL=skipWhile.js.map","import { Observable } from '../../Observable';\nimport { skipWhile } from '../../operator/skipWhile';\nObservable.prototype.skipWhile = skipWhile;\n//# sourceMappingURL=skipWhile.js.map","import { ArrayObservable } from '../observable/ArrayObservable';\nimport { ScalarObservable } from '../observable/ScalarObservable';\nimport { EmptyObservable } from '../observable/EmptyObservable';\nimport { concat as concatStatic } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * <img src=\"./img/startWith.png\" width=\"100%\">\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nexport function startWith() {\n    var array = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        array[_i - 0] = arguments[_i];\n    }\n    return function (source) {\n        var scheduler = array[array.length - 1];\n        if (isScheduler(scheduler)) {\n            array.pop();\n        }\n        else {\n            scheduler = null;\n        }\n        var len = array.length;\n        if (len === 1) {\n            return concatStatic(new ScalarObservable(array[0], scheduler), source);\n        }\n        else if (len > 1) {\n            return concatStatic(new ArrayObservable(array, scheduler), source);\n        }\n        else {\n            return concatStatic(new EmptyObservable(scheduler), source);\n        }\n    };\n}\n//# sourceMappingURL=startWith.js.map","import { startWith as higherOrder } from '../operators/startWith';\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * <img src=\"./img/startWith.png\" width=\"100%\">\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nexport function startWith() {\n    var array = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        array[_i - 0] = arguments[_i];\n    }\n    return higherOrder.apply(void 0, array)(this);\n}\n//# sourceMappingURL=startWith.js.map","import { Observable } from '../../Observable';\nimport { startWith } from '../../operator/startWith';\nObservable.prototype.startWith = startWith;\n//# sourceMappingURL=startWith.js.map","/**\nSome credit for this helper goes to http://github.com/YuzuJS/setImmediate\n*/\nimport { root } from './root';\nexport var ImmediateDefinition = (function () {\n    function ImmediateDefinition(root) {\n        this.root = root;\n        if (root.setImmediate && typeof root.setImmediate === 'function') {\n            this.setImmediate = root.setImmediate.bind(root);\n            this.clearImmediate = root.clearImmediate.bind(root);\n        }\n        else {\n            this.nextHandle = 1;\n            this.tasksByHandle = {};\n            this.currentlyRunningATask = false;\n            // Don't get fooled by e.g. browserify environments.\n            if (this.canUseProcessNextTick()) {\n                // For Node.js before 0.9\n                this.setImmediate = this.createProcessNextTickSetImmediate();\n            }\n            else if (this.canUsePostMessage()) {\n                // For non-IE10 modern browsers\n                this.setImmediate = this.createPostMessageSetImmediate();\n            }\n            else if (this.canUseMessageChannel()) {\n                // For web workers, where supported\n                this.setImmediate = this.createMessageChannelSetImmediate();\n            }\n            else if (this.canUseReadyStateChange()) {\n                // For IE 6–8\n                this.setImmediate = this.createReadyStateChangeSetImmediate();\n            }\n            else {\n                // For older browsers\n                this.setImmediate = this.createSetTimeoutSetImmediate();\n            }\n            var ci = function clearImmediate(handle) {\n                delete clearImmediate.instance.tasksByHandle[handle];\n            };\n            ci.instance = this;\n            this.clearImmediate = ci;\n        }\n    }\n    ImmediateDefinition.prototype.identify = function (o) {\n        return this.root.Object.prototype.toString.call(o);\n    };\n    ImmediateDefinition.prototype.canUseProcessNextTick = function () {\n        return this.identify(this.root.process) === '[object process]';\n    };\n    ImmediateDefinition.prototype.canUseMessageChannel = function () {\n        return Boolean(this.root.MessageChannel);\n    };\n    ImmediateDefinition.prototype.canUseReadyStateChange = function () {\n        var document = this.root.document;\n        return Boolean(document && 'onreadystatechange' in document.createElement('script'));\n    };\n    ImmediateDefinition.prototype.canUsePostMessage = function () {\n        var root = this.root;\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `root.postMessage` means something completely different and can't be used for this purpose.\n        if (root.postMessage && !root.importScripts) {\n            var postMessageIsAsynchronous_1 = true;\n            var oldOnMessage = root.onmessage;\n            root.onmessage = function () {\n                postMessageIsAsynchronous_1 = false;\n            };\n            root.postMessage('', '*');\n            root.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous_1;\n        }\n        return false;\n    };\n    // This function accepts the same arguments as setImmediate, but\n    // returns a function that requires no arguments.\n    ImmediateDefinition.prototype.partiallyApplied = function (handler) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        var fn = function result() {\n            var _a = result, handler = _a.handler, args = _a.args;\n            if (typeof handler === 'function') {\n                handler.apply(undefined, args);\n            }\n            else {\n                (new Function('' + handler))();\n            }\n        };\n        fn.handler = handler;\n        fn.args = args;\n        return fn;\n    };\n    ImmediateDefinition.prototype.addFromSetImmediateArguments = function (args) {\n        this.tasksByHandle[this.nextHandle] = this.partiallyApplied.apply(undefined, args);\n        return this.nextHandle++;\n    };\n    ImmediateDefinition.prototype.createProcessNextTickSetImmediate = function () {\n        var fn = function setImmediate() {\n            var instance = setImmediate.instance;\n            var handle = instance.addFromSetImmediateArguments(arguments);\n            instance.root.process.nextTick(instance.partiallyApplied(instance.runIfPresent, handle));\n            return handle;\n        };\n        fn.instance = this;\n        return fn;\n    };\n    ImmediateDefinition.prototype.createPostMessageSetImmediate = function () {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n        var root = this.root;\n        var messagePrefix = 'setImmediate$' + root.Math.random() + '$';\n        var onGlobalMessage = function globalMessageHandler(event) {\n            var instance = globalMessageHandler.instance;\n            if (event.source === root &&\n                typeof event.data === 'string' &&\n                event.data.indexOf(messagePrefix) === 0) {\n                instance.runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n        onGlobalMessage.instance = this;\n        root.addEventListener('message', onGlobalMessage, false);\n        var fn = function setImmediate() {\n            var _a = setImmediate, messagePrefix = _a.messagePrefix, instance = _a.instance;\n            var handle = instance.addFromSetImmediateArguments(arguments);\n            instance.root.postMessage(messagePrefix + handle, '*');\n            return handle;\n        };\n        fn.instance = this;\n        fn.messagePrefix = messagePrefix;\n        return fn;\n    };\n    ImmediateDefinition.prototype.runIfPresent = function (handle) {\n        // From the spec: 'Wait until any invocations of this algorithm started before this one have completed.'\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (this.currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // 'too much recursion' error.\n            this.root.setTimeout(this.partiallyApplied(this.runIfPresent, handle), 0);\n        }\n        else {\n            var task = this.tasksByHandle[handle];\n            if (task) {\n                this.currentlyRunningATask = true;\n                try {\n                    task();\n                }\n                finally {\n                    this.clearImmediate(handle);\n                    this.currentlyRunningATask = false;\n                }\n            }\n        }\n    };\n    ImmediateDefinition.prototype.createMessageChannelSetImmediate = function () {\n        var _this = this;\n        var channel = new this.root.MessageChannel();\n        channel.port1.onmessage = function (event) {\n            var handle = event.data;\n            _this.runIfPresent(handle);\n        };\n        var fn = function setImmediate() {\n            var _a = setImmediate, channel = _a.channel, instance = _a.instance;\n            var handle = instance.addFromSetImmediateArguments(arguments);\n            channel.port2.postMessage(handle);\n            return handle;\n        };\n        fn.channel = channel;\n        fn.instance = this;\n        return fn;\n    };\n    ImmediateDefinition.prototype.createReadyStateChangeSetImmediate = function () {\n        var fn = function setImmediate() {\n            var instance = setImmediate.instance;\n            var root = instance.root;\n            var doc = root.document;\n            var html = doc.documentElement;\n            var handle = instance.addFromSetImmediateArguments(arguments);\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement('script');\n            script.onreadystatechange = function () {\n                instance.runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n            return handle;\n        };\n        fn.instance = this;\n        return fn;\n    };\n    ImmediateDefinition.prototype.createSetTimeoutSetImmediate = function () {\n        var fn = function setImmediate() {\n            var instance = setImmediate.instance;\n            var handle = instance.addFromSetImmediateArguments(arguments);\n            instance.root.setTimeout(instance.partiallyApplied(instance.runIfPresent, handle), 0);\n            return handle;\n        };\n        fn.instance = this;\n        return fn;\n    };\n    return ImmediateDefinition;\n}());\nexport var Immediate = new ImmediateDefinition(root);\n//# sourceMappingURL=Immediate.js.map","import { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var AsapAction = (function (_super) {\n    __extends(AsapAction, _super);\n    function AsapAction(scheduler, work) {\n        _super.call(this, scheduler, work);\n        this.scheduler = scheduler;\n        this.work = work;\n    }\n    AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        // If delay is greater than 0, request as an async action.\n        if (delay !== null && delay > 0) {\n            return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n        }\n        // Push the action to the end of the scheduler queue.\n        scheduler.actions.push(this);\n        // If a microtask has already been scheduled, don't schedule another\n        // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n        // the current scheduled microtask id.\n        return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));\n    };\n    AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        // If delay exists and is greater than 0, or if the delay is null (the\n        // action wasn't rescheduled) but was originally scheduled as an async\n        // action, then recycle as an async action.\n        if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n            return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n        }\n        // If the scheduler queue is empty, cancel the requested microtask and\n        // set the scheduled flag to undefined so the next AsapAction will schedule\n        // its own.\n        if (scheduler.actions.length === 0) {\n            Immediate.clearImmediate(id);\n            scheduler.scheduled = undefined;\n        }\n        // Return undefined so the action knows to request a new async id if it's rescheduled.\n        return undefined;\n    };\n    return AsapAction;\n}(AsyncAction));\n//# sourceMappingURL=AsapAction.js.map","import { AsyncScheduler } from './AsyncScheduler';\nexport var AsapScheduler = (function (_super) {\n    __extends(AsapScheduler, _super);\n    function AsapScheduler() {\n        _super.apply(this, arguments);\n    }\n    AsapScheduler.prototype.flush = function (action) {\n        this.active = true;\n        this.scheduled = undefined;\n        var actions = this.actions;\n        var error;\n        var index = -1;\n        var count = actions.length;\n        action = action || actions.shift();\n        do {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        } while (++index < count && (action = actions.shift()));\n        this.active = false;\n        if (error) {\n            while (++index < count && (action = actions.shift())) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AsapScheduler;\n}(AsyncScheduler));\n//# sourceMappingURL=AsapScheduler.js.map","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n/**\n *\n * Asap Scheduler\n *\n * <span class=\"informal\">Perform task as fast as it can be performed asynchronously</span>\n *\n * `asap` scheduler behaves the same as {@link async} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * @example <caption>Compare async and asap scheduler</caption>\n *\n * Rx.Scheduler.async.schedule(() => console.log('async')); // scheduling 'async' first...\n * Rx.Scheduler.asap.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n *\n * @static true\n * @name asap\n * @owner Scheduler\n */\nexport var asap = new AsapScheduler(AsapAction);\n//# sourceMappingURL=asap.js.map","import { Observable } from '../Observable';\nimport { asap } from '../scheduler/asap';\nimport { isNumeric } from '../util/isNumeric';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var SubscribeOnObservable = (function (_super) {\n    __extends(SubscribeOnObservable, _super);\n    function SubscribeOnObservable(source, delayTime, scheduler) {\n        if (delayTime === void 0) { delayTime = 0; }\n        if (scheduler === void 0) { scheduler = asap; }\n        _super.call(this);\n        this.source = source;\n        this.delayTime = delayTime;\n        this.scheduler = scheduler;\n        if (!isNumeric(delayTime) || delayTime < 0) {\n            this.delayTime = 0;\n        }\n        if (!scheduler || typeof scheduler.schedule !== 'function') {\n            this.scheduler = asap;\n        }\n    }\n    SubscribeOnObservable.create = function (source, delay, scheduler) {\n        if (delay === void 0) { delay = 0; }\n        if (scheduler === void 0) { scheduler = asap; }\n        return new SubscribeOnObservable(source, delay, scheduler);\n    };\n    SubscribeOnObservable.dispatch = function (arg) {\n        var source = arg.source, subscriber = arg.subscriber;\n        return this.add(source.subscribe(subscriber));\n    };\n    /** @deprecated internal use only */ SubscribeOnObservable.prototype._subscribe = function (subscriber) {\n        var delay = this.delayTime;\n        var source = this.source;\n        var scheduler = this.scheduler;\n        return scheduler.schedule(SubscribeOnObservable.dispatch, delay, {\n            source: source, subscriber: subscriber\n        });\n    };\n    return SubscribeOnObservable;\n}(Observable));\n//# sourceMappingURL=SubscribeOnObservable.js.map","import { SubscribeOnObservable } from '../observable/SubscribeOnObservable';\n/**\n * Asynchronously subscribes Observers to this Observable on the specified IScheduler.\n *\n * <img src=\"./img/subscribeOn.png\" width=\"100%\">\n *\n * @param {Scheduler} scheduler - The IScheduler to perform subscription actions on.\n * @return {Observable<T>} The source Observable modified so that its subscriptions happen on the specified IScheduler.\n .\n * @method subscribeOn\n * @owner Observable\n */\nexport function subscribeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return function subscribeOnOperatorFunction(source) {\n        return source.lift(new SubscribeOnOperator(scheduler, delay));\n    };\n}\nvar SubscribeOnOperator = (function () {\n    function SubscribeOnOperator(scheduler, delay) {\n        this.scheduler = scheduler;\n        this.delay = delay;\n    }\n    SubscribeOnOperator.prototype.call = function (subscriber, source) {\n        return new SubscribeOnObservable(source, this.delay, this.scheduler).subscribe(subscriber);\n    };\n    return SubscribeOnOperator;\n}());\n//# sourceMappingURL=subscribeOn.js.map","import { subscribeOn as higherOrder } from '../operators/subscribeOn';\n/**\n * Asynchronously subscribes Observers to this Observable on the specified IScheduler.\n *\n * <img src=\"./img/subscribeOn.png\" width=\"100%\">\n *\n * @param {Scheduler} scheduler - The IScheduler to perform subscription actions on.\n * @return {Observable<T>} The source Observable modified so that its subscriptions happen on the specified IScheduler.\n .\n * @method subscribeOn\n * @owner Observable\n */\nexport function subscribeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return higherOrder(scheduler, delay)(this);\n}\n//# sourceMappingURL=subscribeOn.js.map","import { Observable } from '../../Observable';\nimport { subscribeOn } from '../../operator/subscribeOn';\nObservable.prototype.subscribeOn = subscribeOn;\n//# sourceMappingURL=subscribeOn.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switch}.</span>\n *\n * <img src=\"./img/switchMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * @example <caption>Rerun an interval Observable on every click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switch}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nexport function switchMap(project, resultSelector) {\n    return function switchMapOperatorFunction(source) {\n        return source.lift(new SwitchMapOperator(project, resultSelector));\n    };\n}\nvar SwitchMapOperator = (function () {\n    function SwitchMapOperator(project, resultSelector) {\n        this.project = project;\n        this.resultSelector = resultSelector;\n    }\n    SwitchMapOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SwitchMapSubscriber(subscriber, this.project, this.resultSelector));\n    };\n    return SwitchMapOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SwitchMapSubscriber = (function (_super) {\n    __extends(SwitchMapSubscriber, _super);\n    function SwitchMapSubscriber(destination, project, resultSelector) {\n        _super.call(this, destination);\n        this.project = project;\n        this.resultSelector = resultSelector;\n        this.index = 0;\n    }\n    SwitchMapSubscriber.prototype._next = function (value) {\n        var result;\n        var index = this.index++;\n        try {\n            result = this.project(value, index);\n        }\n        catch (error) {\n            this.destination.error(error);\n            return;\n        }\n        this._innerSub(result, value, index);\n    };\n    SwitchMapSubscriber.prototype._innerSub = function (result, value, index) {\n        var innerSubscription = this.innerSubscription;\n        if (innerSubscription) {\n            innerSubscription.unsubscribe();\n        }\n        this.add(this.innerSubscription = subscribeToResult(this, result, value, index));\n    };\n    SwitchMapSubscriber.prototype._complete = function () {\n        var innerSubscription = this.innerSubscription;\n        if (!innerSubscription || innerSubscription.closed) {\n            _super.prototype._complete.call(this);\n        }\n    };\n    /** @deprecated internal use only */ SwitchMapSubscriber.prototype._unsubscribe = function () {\n        this.innerSubscription = null;\n    };\n    SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) {\n        this.remove(innerSub);\n        this.innerSubscription = null;\n        if (this.isStopped) {\n            _super.prototype._complete.call(this);\n        }\n    };\n    SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        if (this.resultSelector) {\n            this._tryNotifyNext(outerValue, innerValue, outerIndex, innerIndex);\n        }\n        else {\n            this.destination.next(innerValue);\n        }\n    };\n    SwitchMapSubscriber.prototype._tryNotifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {\n        var result;\n        try {\n            result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return SwitchMapSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=switchMap.js.map","import { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\nexport function switchAll() {\n    return switchMap(identity);\n}\n//# sourceMappingURL=switchAll.js.map","import { switchAll as higherOrder } from '../operators/switchAll';\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * subscribing to only the most recently emitted of those inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by dropping the\n * previous inner Observable once a new one appears.</span>\n *\n * <img src=\"./img/switch.png\" width=\"100%\">\n *\n * `switch` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable subscribes to the inner Observable and\n * begins emitting the items emitted by that. So far, it behaves\n * like {@link mergeAll}. However, when a new inner Observable is emitted,\n * `switch` unsubscribes from the earlier-emitted inner Observable and\n * subscribes to the new inner Observable and begins emitting items from it. It\n * continues to behave like this for subsequent inner Observables.\n *\n * @example <caption>Rerun an interval Observable on every click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * // Each click event is mapped to an Observable that ticks every second\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var switched = higherOrder.switch();\n * // The outcome is that `switched` is essentially a timer that restarts\n * // on every click. The interval Observables from older clicks do not merge\n * // with the current interval Observable.\n * switched.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switchMap}\n * @see {@link switchMapTo}\n * @see {@link zipAll}\n *\n * @return {Observable<T>} An Observable that emits the items emitted by the\n * Observable most recently emitted by the source Observable.\n * @method switch\n * @name switch\n * @owner Observable\n */\nexport function _switch() {\n    return higherOrder()(this);\n}\n//# sourceMappingURL=switch.js.map","import { Observable } from '../../Observable';\nimport { _switch } from '../../operator/switch';\nObservable.prototype.switch = _switch;\nObservable.prototype._switch = _switch;\n//# sourceMappingURL=switch.js.map","import { switchMap as higherOrderSwitchMap } from '../operators/switchMap';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switch}.</span>\n *\n * <img src=\"./img/switchMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * @example <caption>Rerun an interval Observable on every click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switch}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nexport function switchMap(project, resultSelector) {\n    return higherOrderSwitchMap(project, resultSelector)(this);\n}\n//# sourceMappingURL=switchMap.js.map","import { Observable } from '../../Observable';\nimport { switchMap } from '../../operator/switchMap';\nObservable.prototype.switchMap = switchMap;\n//# sourceMappingURL=switchMap.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to the same Observable which is flattened multiple\n * times with {@link switch} in the output Observable.\n *\n * <span class=\"informal\">It's like {@link switchMap}, but maps each value\n * always to the same inner Observable.</span>\n *\n * <img src=\"./img/switchMapTo.png\" width=\"100%\">\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. The output Observables\n * emits values only from the most recently emitted instance of\n * `innerObservable`.\n *\n * @example <caption>Rerun an interval Observable on every click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.switchMapTo(Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMapTo}\n * @see {@link switch}\n * @see {@link switchMap}\n * @see {@link mergeMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable` (and optionally transformed through `resultSelector`) every\n * time a value is emitted on the source Observable, and taking only the values\n * from the most recently projected inner Observable.\n * @method switchMapTo\n * @owner Observable\n */\nexport function switchMapTo(innerObservable, resultSelector) {\n    return function (source) { return source.lift(new SwitchMapToOperator(innerObservable, resultSelector)); };\n}\nvar SwitchMapToOperator = (function () {\n    function SwitchMapToOperator(observable, resultSelector) {\n        this.observable = observable;\n        this.resultSelector = resultSelector;\n    }\n    SwitchMapToOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new SwitchMapToSubscriber(subscriber, this.observable, this.resultSelector));\n    };\n    return SwitchMapToOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SwitchMapToSubscriber = (function (_super) {\n    __extends(SwitchMapToSubscriber, _super);\n    function SwitchMapToSubscriber(destination, inner, resultSelector) {\n        _super.call(this, destination);\n        this.inner = inner;\n        this.resultSelector = resultSelector;\n        this.index = 0;\n    }\n    SwitchMapToSubscriber.prototype._next = function (value) {\n        var innerSubscription = this.innerSubscription;\n        if (innerSubscription) {\n            innerSubscription.unsubscribe();\n        }\n        this.add(this.innerSubscription = subscribeToResult(this, this.inner, value, this.index++));\n    };\n    SwitchMapToSubscriber.prototype._complete = function () {\n        var innerSubscription = this.innerSubscription;\n        if (!innerSubscription || innerSubscription.closed) {\n            _super.prototype._complete.call(this);\n        }\n    };\n    /** @deprecated internal use only */ SwitchMapToSubscriber.prototype._unsubscribe = function () {\n        this.innerSubscription = null;\n    };\n    SwitchMapToSubscriber.prototype.notifyComplete = function (innerSub) {\n        this.remove(innerSub);\n        this.innerSubscription = null;\n        if (this.isStopped) {\n            _super.prototype._complete.call(this);\n        }\n    };\n    SwitchMapToSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        var _a = this, resultSelector = _a.resultSelector, destination = _a.destination;\n        if (resultSelector) {\n            this.tryResultSelector(outerValue, innerValue, outerIndex, innerIndex);\n        }\n        else {\n            destination.next(innerValue);\n        }\n    };\n    SwitchMapToSubscriber.prototype.tryResultSelector = function (outerValue, innerValue, outerIndex, innerIndex) {\n        var _a = this, resultSelector = _a.resultSelector, destination = _a.destination;\n        var result;\n        try {\n            result = resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n        }\n        catch (err) {\n            destination.error(err);\n            return;\n        }\n        destination.next(result);\n    };\n    return SwitchMapToSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=switchMapTo.js.map","import { switchMapTo as higherOrder } from '../operators/switchMapTo';\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to the same Observable which is flattened multiple\n * times with {@link switch} in the output Observable.\n *\n * <span class=\"informal\">It's like {@link switchMap}, but maps each value\n * always to the same inner Observable.</span>\n *\n * <img src=\"./img/switchMapTo.png\" width=\"100%\">\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. The output Observables\n * emits values only from the most recently emitted instance of\n * `innerObservable`.\n *\n * @example <caption>Rerun an interval Observable on every click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.switchMapTo(Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMapTo}\n * @see {@link switch}\n * @see {@link switchMap}\n * @see {@link mergeMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable` (and optionally transformed through `resultSelector`) every\n * time a value is emitted on the source Observable, and taking only the values\n * from the most recently projected inner Observable.\n * @method switchMapTo\n * @owner Observable\n */\nexport function switchMapTo(innerObservable, resultSelector) {\n    return higherOrder(innerObservable, resultSelector)(this);\n}\n//# sourceMappingURL=switchMapTo.js.map","import { Observable } from '../../Observable';\nimport { switchMapTo } from '../../operator/switchMapTo';\nObservable.prototype.switchMapTo = switchMapTo;\n//# sourceMappingURL=switchMapTo.js.map","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { EmptyObservable } from '../observable/EmptyObservable';\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * <span class=\"informal\">Takes the first `count` values from the source, then\n * completes.</span>\n *\n * <img src=\"./img/take.png\" width=\"100%\">\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * @example <caption>Take the first 5 seconds of an infinite 1-second interval Observable</caption>\n * var interval = Rx.Observable.interval(1000);\n * var five = interval.take(5);\n * five.subscribe(x => console.log(x));\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `take(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of `next` values to emit.\n * @return {Observable<T>} An Observable that emits only the first `count`\n * values emitted by the source Observable, or all of the values from the source\n * if the source emits fewer than `count` values.\n * @method take\n * @owner Observable\n */\nexport function take(count) {\n    return function (source) {\n        if (count === 0) {\n            return new EmptyObservable();\n        }\n        else {\n            return source.lift(new TakeOperator(count));\n        }\n    };\n}\nvar TakeOperator = (function () {\n    function TakeOperator(total) {\n        this.total = total;\n        if (this.total < 0) {\n            throw new ArgumentOutOfRangeError;\n        }\n    }\n    TakeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new TakeSubscriber(subscriber, this.total));\n    };\n    return TakeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar TakeSubscriber = (function (_super) {\n    __extends(TakeSubscriber, _super);\n    function TakeSubscriber(destination, total) {\n        _super.call(this, destination);\n        this.total = total;\n        this.count = 0;\n    }\n    TakeSubscriber.prototype._next = function (value) {\n        var total = this.total;\n        var count = ++this.count;\n        if (count <= total) {\n            this.destination.next(value);\n            if (count === total) {\n                this.destination.complete();\n                this.unsubscribe();\n            }\n        }\n    };\n    return TakeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=take.js.map","import { take as higherOrder } from '../operators/take';\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * <span class=\"informal\">Takes the first `count` values from the source, then\n * completes.</span>\n *\n * <img src=\"./img/take.png\" width=\"100%\">\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * @example <caption>Take the first 5 seconds of an infinite 1-second interval Observable</caption>\n * var interval = Rx.Observable.interval(1000);\n * var five = interval.take(5);\n * five.subscribe(x => console.log(x));\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `take(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of `next` values to emit.\n * @return {Observable<T>} An Observable that emits only the first `count`\n * values emitted by the source Observable, or all of the values from the source\n * if the source emits fewer than `count` values.\n * @method take\n * @owner Observable\n */\nexport function take(count) {\n    return higherOrder(count)(this);\n}\n//# sourceMappingURL=take.js.map","import { Observable } from '../../Observable';\nimport { take } from '../../operator/take';\nObservable.prototype.take = take;\n//# sourceMappingURL=take.js.map","import { takeLast as higherOrderTakeLast } from '../operators/takeLast';\n/**\n * Emits only the last `count` values emitted by the source Observable.\n *\n * <span class=\"informal\">Remembers the latest `count` values, then emits those\n * only when the source completes.</span>\n *\n * <img src=\"./img/takeLast.png\" width=\"100%\">\n *\n * `takeLast` returns an Observable that emits at most the last `count` values\n * emitted by the source Observable. If the source emits fewer than `count`\n * values then all of its values are emitted. This operator must wait until the\n * `complete` notification emission from the source in order to emit the `next`\n * values on the output Observable, because otherwise it is impossible to know\n * whether or not more values will be emitted on the source. For this reason,\n * all values are emitted synchronously, followed by the complete notification.\n *\n * @example <caption>Take the last 3 values of an Observable with many values</caption>\n * var many = Rx.Observable.range(1, 100);\n * var lastThree = many.takeLast(3);\n * lastThree.subscribe(x => console.log(x));\n *\n * @see {@link take}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `takeLast(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of values to emit from the end of\n * the sequence of values emitted by the source Observable.\n * @return {Observable<T>} An Observable that emits at most the last count\n * values emitted by the source Observable.\n * @method takeLast\n * @owner Observable\n */\nexport function takeLast(count) {\n    return higherOrderTakeLast(count)(this);\n}\n//# sourceMappingURL=takeLast.js.map","import { Observable } from '../../Observable';\nimport { takeLast } from '../../operator/takeLast';\nObservable.prototype.takeLast = takeLast;\n//# sourceMappingURL=takeLast.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * <span class=\"informal\">Lets values pass until a second Observable,\n * `notifier`, emits something. Then, it completes.</span>\n *\n * <img src=\"./img/takeUntil.png\" width=\"100%\">\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value or a complete notification, the output Observable stops\n * mirroring the source Observable and completes.\n *\n * @example <caption>Tick every second until the first click happens</caption>\n * var interval = Rx.Observable.interval(1000);\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = interval.takeUntil(clicks);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return {Observable<T>} An Observable that emits the values from the source\n * Observable until such time as `notifier` emits its first value.\n * @method takeUntil\n * @owner Observable\n */\nexport function takeUntil(notifier) {\n    return function (source) { return source.lift(new TakeUntilOperator(notifier)); };\n}\nvar TakeUntilOperator = (function () {\n    function TakeUntilOperator(notifier) {\n        this.notifier = notifier;\n    }\n    TakeUntilOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new TakeUntilSubscriber(subscriber, this.notifier));\n    };\n    return TakeUntilOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar TakeUntilSubscriber = (function (_super) {\n    __extends(TakeUntilSubscriber, _super);\n    function TakeUntilSubscriber(destination, notifier) {\n        _super.call(this, destination);\n        this.notifier = notifier;\n        this.add(subscribeToResult(this, notifier));\n    }\n    TakeUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.complete();\n    };\n    TakeUntilSubscriber.prototype.notifyComplete = function () {\n        // noop\n    };\n    return TakeUntilSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=takeUntil.js.map","import { takeUntil as higherOrder } from '../operators/takeUntil';\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * <span class=\"informal\">Lets values pass until a second Observable,\n * `notifier`, emits something. Then, it completes.</span>\n *\n * <img src=\"./img/takeUntil.png\" width=\"100%\">\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes.\n *\n * @example <caption>Tick every second until the first click happens</caption>\n * var interval = Rx.Observable.interval(1000);\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = interval.takeUntil(clicks);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return {Observable<T>} An Observable that emits the values from the source\n * Observable until such time as `notifier` emits its first value.\n * @method takeUntil\n * @owner Observable\n */\nexport function takeUntil(notifier) {\n    return higherOrder(notifier)(this);\n}\n//# sourceMappingURL=takeUntil.js.map","import { Observable } from '../../Observable';\nimport { takeUntil } from '../../operator/takeUntil';\nObservable.prototype.takeUntil = takeUntil;\n//# sourceMappingURL=takeUntil.js.map","import { Subscriber } from '../Subscriber';\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * <span class=\"informal\">Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.</span>\n *\n * <img src=\"./img/takeWhile.png\" width=\"100%\">\n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * @example <caption>Emit click events only while the clientX property is greater than 200</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.takeWhile(ev => ev.clientX > 200);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates a value emitted by the source Observable and returns a boolean.\n * Also takes the (zero-based) index as the second argument.\n * @return {Observable<T>} An Observable that emits the values from the source\n * Observable so long as each value satisfies the condition defined by the\n * `predicate`, then completes.\n * @method takeWhile\n * @owner Observable\n */\nexport function takeWhile(predicate) {\n    return function (source) { return source.lift(new TakeWhileOperator(predicate)); };\n}\nvar TakeWhileOperator = (function () {\n    function TakeWhileOperator(predicate) {\n        this.predicate = predicate;\n    }\n    TakeWhileOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate));\n    };\n    return TakeWhileOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar TakeWhileSubscriber = (function (_super) {\n    __extends(TakeWhileSubscriber, _super);\n    function TakeWhileSubscriber(destination, predicate) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.index = 0;\n    }\n    TakeWhileSubscriber.prototype._next = function (value) {\n        var destination = this.destination;\n        var result;\n        try {\n            result = this.predicate(value, this.index++);\n        }\n        catch (err) {\n            destination.error(err);\n            return;\n        }\n        this.nextOrComplete(value, result);\n    };\n    TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) {\n        var destination = this.destination;\n        if (Boolean(predicateResult)) {\n            destination.next(value);\n        }\n        else {\n            destination.complete();\n        }\n    };\n    return TakeWhileSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeWhile.js.map","import { takeWhile as higherOrder } from '../operators/takeWhile';\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * <span class=\"informal\">Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.</span>\n *\n * <img src=\"./img/takeWhile.png\" width=\"100%\">\n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * @example <caption>Emit click events only while the clientX property is greater than 200</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.takeWhile(ev => ev.clientX > 200);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates a value emitted by the source Observable and returns a boolean.\n * Also takes the (zero-based) index as the second argument.\n * @return {Observable<T>} An Observable that emits the values from the source\n * Observable so long as each value satisfies the condition defined by the\n * `predicate`, then completes.\n * @method takeWhile\n * @owner Observable\n */\nexport function takeWhile(predicate) {\n    return higherOrder(predicate)(this);\n}\n//# sourceMappingURL=takeWhile.js.map","import { Observable } from '../../Observable';\nimport { takeWhile } from '../../operator/takeWhile';\nObservable.prototype.takeWhile = takeWhile;\n//# sourceMappingURL=takeWhile.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport var defaultThrottleConfig = {\n    leading: true,\n    trailing: false\n};\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * <img src=\"./img/throttle.png\" width=\"100%\">\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value or completes, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttle(ev => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttle\n * @owner Observable\n */\nexport function throttle(durationSelector, config) {\n    if (config === void 0) { config = defaultThrottleConfig; }\n    return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); };\n}\nvar ThrottleOperator = (function () {\n    function ThrottleOperator(durationSelector, leading, trailing) {\n        this.durationSelector = durationSelector;\n        this.leading = leading;\n        this.trailing = trailing;\n    }\n    ThrottleOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n    };\n    return ThrottleOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc\n * @ignore\n * @extends {Ignored}\n */\nvar ThrottleSubscriber = (function (_super) {\n    __extends(ThrottleSubscriber, _super);\n    function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) {\n        _super.call(this, destination);\n        this.destination = destination;\n        this.durationSelector = durationSelector;\n        this._leading = _leading;\n        this._trailing = _trailing;\n        this._hasTrailingValue = false;\n    }\n    ThrottleSubscriber.prototype._next = function (value) {\n        if (this.throttled) {\n            if (this._trailing) {\n                this._hasTrailingValue = true;\n                this._trailingValue = value;\n            }\n        }\n        else {\n            var duration = this.tryDurationSelector(value);\n            if (duration) {\n                this.add(this.throttled = subscribeToResult(this, duration));\n            }\n            if (this._leading) {\n                this.destination.next(value);\n                if (this._trailing) {\n                    this._hasTrailingValue = true;\n                    this._trailingValue = value;\n                }\n            }\n        }\n    };\n    ThrottleSubscriber.prototype.tryDurationSelector = function (value) {\n        try {\n            return this.durationSelector(value);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return null;\n        }\n    };\n    /** @deprecated internal use only */ ThrottleSubscriber.prototype._unsubscribe = function () {\n        var _a = this, throttled = _a.throttled, _trailingValue = _a._trailingValue, _hasTrailingValue = _a._hasTrailingValue, _trailing = _a._trailing;\n        this._trailingValue = null;\n        this._hasTrailingValue = false;\n        if (throttled) {\n            this.remove(throttled);\n            this.throttled = null;\n            throttled.unsubscribe();\n        }\n    };\n    ThrottleSubscriber.prototype._sendTrailing = function () {\n        var _a = this, destination = _a.destination, throttled = _a.throttled, _trailing = _a._trailing, _trailingValue = _a._trailingValue, _hasTrailingValue = _a._hasTrailingValue;\n        if (throttled && _trailing && _hasTrailingValue) {\n            destination.next(_trailingValue);\n            this._trailingValue = null;\n            this._hasTrailingValue = false;\n        }\n    };\n    ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this._sendTrailing();\n        this._unsubscribe();\n    };\n    ThrottleSubscriber.prototype.notifyComplete = function () {\n        this._sendTrailing();\n        this._unsubscribe();\n    };\n    return ThrottleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=throttle.js.map","import { throttle as higherOrder, defaultThrottleConfig } from '../operators/throttle';\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * <img src=\"./img/throttle.png\" width=\"100%\">\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value or completes, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttle(ev => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttle\n * @owner Observable\n */\nexport function throttle(durationSelector, config) {\n    if (config === void 0) { config = defaultThrottleConfig; }\n    return higherOrder(durationSelector, config)(this);\n}\n//# sourceMappingURL=throttle.js.map","import { Observable } from '../../Observable';\nimport { throttle } from '../../operator/throttle';\nObservable.prototype.throttle = throttle;\n//# sourceMappingURL=throttle.js.map","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { defaultThrottleConfig } from './throttle';\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * <span class=\"informal\">Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.</span>\n *\n * <img src=\"./img/throttleTime.png\" width=\"100%\">\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link IScheduler} for managing timers.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttleTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the throttling.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nexport function throttleTime(duration, scheduler, config) {\n    if (scheduler === void 0) { scheduler = async; }\n    if (config === void 0) { config = defaultThrottleConfig; }\n    return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); };\n}\nvar ThrottleTimeOperator = (function () {\n    function ThrottleTimeOperator(duration, scheduler, leading, trailing) {\n        this.duration = duration;\n        this.scheduler = scheduler;\n        this.leading = leading;\n        this.trailing = trailing;\n    }\n    ThrottleTimeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));\n    };\n    return ThrottleTimeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ThrottleTimeSubscriber = (function (_super) {\n    __extends(ThrottleTimeSubscriber, _super);\n    function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) {\n        _super.call(this, destination);\n        this.duration = duration;\n        this.scheduler = scheduler;\n        this.leading = leading;\n        this.trailing = trailing;\n        this._hasTrailingValue = false;\n        this._trailingValue = null;\n    }\n    ThrottleTimeSubscriber.prototype._next = function (value) {\n        if (this.throttled) {\n            if (this.trailing) {\n                this._trailingValue = value;\n                this._hasTrailingValue = true;\n            }\n        }\n        else {\n            this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));\n            if (this.leading) {\n                this.destination.next(value);\n            }\n        }\n    };\n    ThrottleTimeSubscriber.prototype.clearThrottle = function () {\n        var throttled = this.throttled;\n        if (throttled) {\n            if (this.trailing && this._hasTrailingValue) {\n                this.destination.next(this._trailingValue);\n                this._trailingValue = null;\n                this._hasTrailingValue = false;\n            }\n            throttled.unsubscribe();\n            this.remove(throttled);\n            this.throttled = null;\n        }\n    };\n    return ThrottleTimeSubscriber;\n}(Subscriber));\nfunction dispatchNext(arg) {\n    var subscriber = arg.subscriber;\n    subscriber.clearThrottle();\n}\n//# sourceMappingURL=throttleTime.js.map","import { async } from '../scheduler/async';\nimport { defaultThrottleConfig } from '../operators/throttle';\nimport { throttleTime as higherOrder } from '../operators/throttleTime';\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * <span class=\"informal\">Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.</span>\n *\n * <img src=\"./img/throttleTime.png\" width=\"100%\">\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link IScheduler} for managing timers.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttleTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the throttling.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nexport function throttleTime(duration, scheduler, config) {\n    if (scheduler === void 0) { scheduler = async; }\n    if (config === void 0) { config = defaultThrottleConfig; }\n    return higherOrder(duration, scheduler, config)(this);\n}\n//# sourceMappingURL=throttleTime.js.map","import { Observable } from '../../Observable';\nimport { throttleTime } from '../../operator/throttleTime';\nObservable.prototype.throttleTime = throttleTime;\n//# sourceMappingURL=throttleTime.js.map","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function timeInterval(scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return function (source) { return source.lift(new TimeIntervalOperator(scheduler)); };\n}\nexport var TimeInterval = (function () {\n    function TimeInterval(value, interval) {\n        this.value = value;\n        this.interval = interval;\n    }\n    return TimeInterval;\n}());\n;\nvar TimeIntervalOperator = (function () {\n    function TimeIntervalOperator(scheduler) {\n        this.scheduler = scheduler;\n    }\n    TimeIntervalOperator.prototype.call = function (observer, source) {\n        return source.subscribe(new TimeIntervalSubscriber(observer, this.scheduler));\n    };\n    return TimeIntervalOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar TimeIntervalSubscriber = (function (_super) {\n    __extends(TimeIntervalSubscriber, _super);\n    function TimeIntervalSubscriber(destination, scheduler) {\n        _super.call(this, destination);\n        this.scheduler = scheduler;\n        this.lastTime = 0;\n        this.lastTime = scheduler.now();\n    }\n    TimeIntervalSubscriber.prototype._next = function (value) {\n        var now = this.scheduler.now();\n        var span = now - this.lastTime;\n        this.lastTime = now;\n        this.destination.next(new TimeInterval(value, span));\n    };\n    return TimeIntervalSubscriber;\n}(Subscriber));\n//# sourceMappingURL=timeInterval.js.map","import { async } from '../scheduler/async';\nimport { timeInterval as higherOrder, TimeInterval } from '../operators/timeInterval';\nexport { TimeInterval };\n/**\n * @param scheduler\n * @return {Observable<TimeInterval<any>>|WebSocketSubject<T>|Observable<T>}\n * @method timeInterval\n * @owner Observable\n */\nexport function timeInterval(scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return higherOrder(scheduler)(this);\n}\n//# sourceMappingURL=timeInterval.js.map","import { Observable } from '../../Observable';\nimport { timeInterval } from '../../operator/timeInterval';\nObservable.prototype.timeInterval = timeInterval;\n//# sourceMappingURL=timeInterval.js.map","/**\n * An error thrown when duetime elapses.\n *\n * @see {@link timeout}\n *\n * @class TimeoutError\n */\nexport var TimeoutError = (function (_super) {\n    __extends(TimeoutError, _super);\n    function TimeoutError() {\n        var err = _super.call(this, 'Timeout has occurred');\n        this.name = err.name = 'TimeoutError';\n        this.stack = err.stack;\n        this.message = err.message;\n    }\n    return TimeoutError;\n}(Error));\n//# sourceMappingURL=TimeoutError.js.map","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { TimeoutError } from '../util/TimeoutError';\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * <span class=\"informal\">Timeouts on Observable that doesn't emit values fast enough.</span>\n *\n * <img src=\"./img/timeout.png\" width=\"100%\">\n *\n * `timeout` operator accepts as an argument either a number or a Date.\n *\n * If number was provided, it returns an Observable that behaves like a source\n * Observable, unless there is a period of time where there is no value emitted.\n * So if you provide `100` as argument and first value comes after 50ms from\n * the moment of subscription, this value will be simply re-emitted by the resulting\n * Observable. If however after that 100ms passes without a second value being emitted,\n * stream will end with an error and source Observable will be unsubscribed.\n * These checks are performed throughout whole lifecycle of Observable - from the moment\n * it was subscribed to, until it completes or errors itself. Thus every value must be\n * emitted within specified period since previous value.\n *\n * If provided argument was Date, returned Observable behaves differently. It throws\n * if Observable did not complete before provided Date. This means that periods between\n * emission of particular values do not matter in this case. If Observable did not complete\n * before provided Date, source Observable will be unsubscribed. Other than that, resulting\n * stream behaves just as source Observable.\n *\n * `timeout` accepts also a Scheduler as a second parameter. It is used to schedule moment (or moments)\n * when returned Observable will check if source stream emitted value or completed.\n *\n * @example <caption>Check if ticks are emitted within certain timespan</caption>\n * const seconds = Rx.Observable.interval(1000);\n *\n * seconds.timeout(1100) // Let's use bigger timespan to be safe,\n *                       // since `interval` might fire a bit later then scheduled.\n * .subscribe(\n *     value => console.log(value), // Will emit numbers just as regular `interval` would.\n *     err => console.log(err) // Will never be called.\n * );\n *\n * seconds.timeout(900).subscribe(\n *     value => console.log(value), // Will never be called.\n *     err => console.log(err) // Will emit error before even first value is emitted,\n *                             // since it did not arrive within 900ms period.\n * );\n *\n * @example <caption>Use Date to check if Observable completed</caption>\n * const seconds = Rx.Observable.interval(1000);\n *\n * seconds.timeout(new Date(\"December 17, 2020 03:24:00\"))\n * .subscribe(\n *     value => console.log(value), // Will emit values as regular `interval` would\n *                                  // until December 17, 2020 at 03:24:00.\n *     err => console.log(err) // On December 17, 2020 at 03:24:00 it will emit an error,\n *                             // since Observable did not complete by then.\n * );\n *\n * @see {@link timeoutWith}\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n *                          or Date specifying before when Observable should complete\n * @param {Scheduler} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable<T>} Observable that mirrors behaviour of source, unless timeout checks fail.\n * @method timeout\n * @owner Observable\n */\nexport function timeout(due, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    var absoluteTimeout = isDate(due);\n    var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n    return function (source) { return source.lift(new TimeoutOperator(waitFor, absoluteTimeout, scheduler, new TimeoutError())); };\n}\nvar TimeoutOperator = (function () {\n    function TimeoutOperator(waitFor, absoluteTimeout, scheduler, errorInstance) {\n        this.waitFor = waitFor;\n        this.absoluteTimeout = absoluteTimeout;\n        this.scheduler = scheduler;\n        this.errorInstance = errorInstance;\n    }\n    TimeoutOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new TimeoutSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.scheduler, this.errorInstance));\n    };\n    return TimeoutOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar TimeoutSubscriber = (function (_super) {\n    __extends(TimeoutSubscriber, _super);\n    function TimeoutSubscriber(destination, absoluteTimeout, waitFor, scheduler, errorInstance) {\n        _super.call(this, destination);\n        this.absoluteTimeout = absoluteTimeout;\n        this.waitFor = waitFor;\n        this.scheduler = scheduler;\n        this.errorInstance = errorInstance;\n        this.action = null;\n        this.scheduleTimeout();\n    }\n    TimeoutSubscriber.dispatchTimeout = function (subscriber) {\n        subscriber.error(subscriber.errorInstance);\n    };\n    TimeoutSubscriber.prototype.scheduleTimeout = function () {\n        var action = this.action;\n        if (action) {\n            // Recycle the action if we've already scheduled one. All the production\n            // Scheduler Actions mutate their state/delay time and return themeselves.\n            // VirtualActions are immutable, so they create and return a clone. In this\n            // case, we need to set the action reference to the most recent VirtualAction,\n            // to ensure that's the one we clone from next time.\n            this.action = action.schedule(this, this.waitFor);\n        }\n        else {\n            this.add(this.action = this.scheduler.schedule(TimeoutSubscriber.dispatchTimeout, this.waitFor, this));\n        }\n    };\n    TimeoutSubscriber.prototype._next = function (value) {\n        if (!this.absoluteTimeout) {\n            this.scheduleTimeout();\n        }\n        _super.prototype._next.call(this, value);\n    };\n    /** @deprecated internal use only */ TimeoutSubscriber.prototype._unsubscribe = function () {\n        this.action = null;\n        this.scheduler = null;\n        this.errorInstance = null;\n    };\n    return TimeoutSubscriber;\n}(Subscriber));\n//# sourceMappingURL=timeout.js.map","import { async } from '../scheduler/async';\nimport { timeout as higherOrder } from '../operators/timeout';\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * <span class=\"informal\">Timeouts on Observable that doesn't emit values fast enough.</span>\n *\n * <img src=\"./img/timeout.png\" width=\"100%\">\n *\n * `timeout` operator accepts as an argument either a number or a Date.\n *\n * If number was provided, it returns an Observable that behaves like a source\n * Observable, unless there is a period of time where there is no value emitted.\n * So if you provide `100` as argument and first value comes after 50ms from\n * the moment of subscription, this value will be simply re-emitted by the resulting\n * Observable. If however after that 100ms passes without a second value being emitted,\n * stream will end with an error and source Observable will be unsubscribed.\n * These checks are performed throughout whole lifecycle of Observable - from the moment\n * it was subscribed to, until it completes or errors itself. Thus every value must be\n * emitted within specified period since previous value.\n *\n * If provided argument was Date, returned Observable behaves differently. It throws\n * if Observable did not complete before provided Date. This means that periods between\n * emission of particular values do not matter in this case. If Observable did not complete\n * before provided Date, source Observable will be unsubscribed. Other than that, resulting\n * stream behaves just as source Observable.\n *\n * `timeout` accepts also a Scheduler as a second parameter. It is used to schedule moment (or moments)\n * when returned Observable will check if source stream emitted value or completed.\n *\n * @example <caption>Check if ticks are emitted within certain timespan</caption>\n * const seconds = Rx.Observable.interval(1000);\n *\n * seconds.timeout(1100) // Let's use bigger timespan to be safe,\n *                       // since `interval` might fire a bit later then scheduled.\n * .subscribe(\n *     value => console.log(value), // Will emit numbers just as regular `interval` would.\n *     err => console.log(err) // Will never be called.\n * );\n *\n * seconds.timeout(900).subscribe(\n *     value => console.log(value), // Will never be called.\n *     err => console.log(err) // Will emit error before even first value is emitted,\n *                             // since it did not arrive within 900ms period.\n * );\n *\n * @example <caption>Use Date to check if Observable completed</caption>\n * const seconds = Rx.Observable.interval(1000);\n *\n * seconds.timeout(new Date(\"December 17, 2020 03:24:00\"))\n * .subscribe(\n *     value => console.log(value), // Will emit values as regular `interval` would\n *                                  // until December 17, 2020 at 03:24:00.\n *     err => console.log(err) // On December 17, 2020 at 03:24:00 it will emit an error,\n *                             // since Observable did not complete by then.\n * );\n *\n * @see {@link timeoutWith}\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n *                          or Date specifying before when Observable should complete\n * @param {Scheduler} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable<T>} Observable that mirrors behaviour of source, unless timeout checks fail.\n * @method timeout\n * @owner Observable\n */\nexport function timeout(due, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return higherOrder(due, scheduler)(this);\n}\n//# sourceMappingURL=timeout.js.map","import { Observable } from '../../Observable';\nimport { timeout } from '../../operator/timeout';\nObservable.prototype.timeout = timeout;\n//# sourceMappingURL=timeout.js.map","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/* tslint:enable:max-line-length */\n/**\n *\n * Errors if Observable does not emit a value in given time span, in case of which\n * subscribes to the second Observable.\n *\n * <span class=\"informal\">It's a version of `timeout` operator that let's you specify fallback Observable.</span>\n *\n * <img src=\"./img/timeoutWith.png\" width=\"100%\">\n *\n * `timeoutWith` is a variation of `timeout` operator. It behaves exactly the same,\n * still accepting as a first argument either a number or a Date, which control - respectively -\n * when values of source Observable should be emitted or when it should complete.\n *\n * The only difference is that it accepts a second, required parameter. This parameter\n * should be an Observable which will be subscribed when source Observable fails any timeout check.\n * So whenever regular `timeout` would emit an error, `timeoutWith` will instead start re-emitting\n * values from second Observable. Note that this fallback Observable is not checked for timeouts\n * itself, so it can emit values and complete at arbitrary points in time. From the moment of a second\n * subscription, Observable returned from `timeoutWith` simply mirrors fallback stream. When that\n * stream completes, it completes as well.\n *\n * Scheduler, which in case of `timeout` is provided as as second argument, can be still provided\n * here - as a third, optional parameter. It still is used to schedule timeout checks and -\n * as a consequence - when second Observable will be subscribed, since subscription happens\n * immediately after failing check.\n *\n * @example <caption>Add fallback observable</caption>\n * const seconds = Rx.Observable.interval(1000);\n * const minutes = Rx.Observable.interval(60 * 1000);\n *\n * seconds.timeoutWith(900, minutes)\n *     .subscribe(\n *         value => console.log(value), // After 900ms, will start emitting `minutes`,\n *                                      // since first value of `seconds` will not arrive fast enough.\n *         err => console.log(err) // Would be called after 900ms in case of `timeout`,\n *                                 // but here will never be called.\n *     );\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n *                          or Date specifying before when Observable should complete\n * @param {Observable<T>} withObservable Observable which will be subscribed if source fails timeout check.\n * @param {Scheduler} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable<T>} Observable that mirrors behaviour of source or, when timeout check fails, of an Observable\n *                          passed as a second parameter.\n * @method timeoutWith\n * @owner Observable\n */\nexport function timeoutWith(due, withObservable, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return function (source) {\n        var absoluteTimeout = isDate(due);\n        var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n        return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n    };\n}\nvar TimeoutWithOperator = (function () {\n    function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) {\n        this.waitFor = waitFor;\n        this.absoluteTimeout = absoluteTimeout;\n        this.withObservable = withObservable;\n        this.scheduler = scheduler;\n    }\n    TimeoutWithOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n    };\n    return TimeoutWithOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar TimeoutWithSubscriber = (function (_super) {\n    __extends(TimeoutWithSubscriber, _super);\n    function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n        _super.call(this, destination);\n        this.absoluteTimeout = absoluteTimeout;\n        this.waitFor = waitFor;\n        this.withObservable = withObservable;\n        this.scheduler = scheduler;\n        this.action = null;\n        this.scheduleTimeout();\n    }\n    TimeoutWithSubscriber.dispatchTimeout = function (subscriber) {\n        var withObservable = subscriber.withObservable;\n        subscriber._unsubscribeAndRecycle();\n        subscriber.add(subscribeToResult(subscriber, withObservable));\n    };\n    TimeoutWithSubscriber.prototype.scheduleTimeout = function () {\n        var action = this.action;\n        if (action) {\n            // Recycle the action if we've already scheduled one. All the production\n            // Scheduler Actions mutate their state/delay time and return themeselves.\n            // VirtualActions are immutable, so they create and return a clone. In this\n            // case, we need to set the action reference to the most recent VirtualAction,\n            // to ensure that's the one we clone from next time.\n            this.action = action.schedule(this, this.waitFor);\n        }\n        else {\n            this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n        }\n    };\n    TimeoutWithSubscriber.prototype._next = function (value) {\n        if (!this.absoluteTimeout) {\n            this.scheduleTimeout();\n        }\n        _super.prototype._next.call(this, value);\n    };\n    /** @deprecated internal use only */ TimeoutWithSubscriber.prototype._unsubscribe = function () {\n        this.action = null;\n        this.scheduler = null;\n        this.withObservable = null;\n    };\n    return TimeoutWithSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=timeoutWith.js.map","import { async } from '../scheduler/async';\nimport { timeoutWith as higherOrder } from '../operators/timeoutWith';\n/* tslint:enable:max-line-length */\n/**\n *\n * Errors if Observable does not emit a value in given time span, in case of which\n * subscribes to the second Observable.\n *\n * <span class=\"informal\">It's a version of `timeout` operator that let's you specify fallback Observable.</span>\n *\n * <img src=\"./img/timeoutWith.png\" width=\"100%\">\n *\n * `timeoutWith` is a variation of `timeout` operator. It behaves exactly the same,\n * still accepting as a first argument either a number or a Date, which control - respectively -\n * when values of source Observable should be emitted or when it should complete.\n *\n * The only difference is that it accepts a second, required parameter. This parameter\n * should be an Observable which will be subscribed when source Observable fails any timeout check.\n * So whenever regular `timeout` would emit an error, `timeoutWith` will instead start re-emitting\n * values from second Observable. Note that this fallback Observable is not checked for timeouts\n * itself, so it can emit values and complete at arbitrary points in time. From the moment of a second\n * subscription, Observable returned from `timeoutWith` simply mirrors fallback stream. When that\n * stream completes, it completes as well.\n *\n * Scheduler, which in case of `timeout` is provided as as second argument, can be still provided\n * here - as a third, optional parameter. It still is used to schedule timeout checks and -\n * as a consequence - when second Observable will be subscribed, since subscription happens\n * immediately after failing check.\n *\n * @example <caption>Add fallback observable</caption>\n * const seconds = Rx.Observable.interval(1000);\n * const minutes = Rx.Observable.interval(60 * 1000);\n *\n * seconds.timeoutWith(900, minutes)\n *     .subscribe(\n *         value => console.log(value), // After 900ms, will start emitting `minutes`,\n *                                      // since first value of `seconds` will not arrive fast enough.\n *         err => console.log(err) // Would be called after 900ms in case of `timeout`,\n *                                 // but here will never be called.\n *     );\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n *                          or Date specifying before when Observable should complete\n * @param {Observable<T>} withObservable Observable which will be subscribed if source fails timeout check.\n * @param {Scheduler} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable<T>} Observable that mirrors behaviour of source or, when timeout check fails, of an Observable\n *                          passed as a second parameter.\n * @method timeoutWith\n * @owner Observable\n */\nexport function timeoutWith(due, withObservable, scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return higherOrder(due, withObservable, scheduler)(this);\n}\n//# sourceMappingURL=timeoutWith.js.map","import { Observable } from '../../Observable';\nimport { timeoutWith } from '../../operator/timeoutWith';\nObservable.prototype.timeoutWith = timeoutWith;\n//# sourceMappingURL=timeoutWith.js.map","import { async } from '../scheduler/async';\nimport { map } from './map';\n/**\n * @param scheduler\n * @return {Observable<Timestamp<any>>|WebSocketSubject<T>|Observable<T>}\n * @method timestamp\n * @owner Observable\n */\nexport function timestamp(scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return map(function (value) { return new Timestamp(value, scheduler.now()); });\n    // return (source: Observable<T>) => source.lift(new TimestampOperator(scheduler));\n}\nexport var Timestamp = (function () {\n    function Timestamp(value, timestamp) {\n        this.value = value;\n        this.timestamp = timestamp;\n    }\n    return Timestamp;\n}());\n;\n//# sourceMappingURL=timestamp.js.map","import { async } from '../scheduler/async';\nimport { timestamp as higherOrder } from '../operators/timestamp';\n/**\n * @param scheduler\n * @return {Observable<Timestamp<any>>|WebSocketSubject<T>|Observable<T>}\n * @method timestamp\n * @owner Observable\n */\nexport function timestamp(scheduler) {\n    if (scheduler === void 0) { scheduler = async; }\n    return higherOrder(scheduler)(this);\n}\n//# sourceMappingURL=timestamp.js.map","import { Observable } from '../../Observable';\nimport { timestamp } from '../../operator/timestamp';\nObservable.prototype.timestamp = timestamp;\n//# sourceMappingURL=timestamp.js.map","import { reduce } from './reduce';\nfunction toArrayReducer(arr, item, index) {\n    if (index === 0) {\n        return [item];\n    }\n    arr.push(item);\n    return arr;\n}\nexport function toArray() {\n    return reduce(toArrayReducer, []);\n}\n//# sourceMappingURL=toArray.js.map","import { toArray as higherOrder } from '../operators/toArray';\n/**\n * Collects all source emissions and emits them as an array when the source completes.\n *\n * <span class=\"informal\">Get all values inside an array when the source completes</span>\n *\n * <img src=\"./img/toArray.png\" width=\"100%\">\n *\n * `toArray` will wait until the source Observable completes\n * before emitting the array containing all emissions.\n * When the source Observable errors no array will be emitted.\n *\n * @example <caption>Create array from input</caption>\n * const input = Rx.Observable.interval(100).take(4);\n *\n * input.toArray()\n *   .subscribe(arr => console.log(arr)); // [0,1,2,3]\n *\n * @see {@link buffer}\n *\n * @return {Observable<any[]>|WebSocketSubject<T>|Observable<T>}\n * @method toArray\n * @owner Observable\n */\nexport function toArray() {\n    return higherOrder()(this);\n}\n//# sourceMappingURL=toArray.js.map","import { Observable } from '../../Observable';\nimport { toArray } from '../../operator/toArray';\nObservable.prototype.toArray = toArray;\n//# sourceMappingURL=toArray.js.map","// HACK: does nothing, because `toPromise` now lives on the `Observable` itself.\n// leaving this module here to prevent breakage.\n//# sourceMappingURL=toPromise.js.map","import { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Branch out the source Observable values as a nested Observable whenever\n * `windowBoundaries` emits.\n *\n * <span class=\"informal\">It's like {@link buffer}, but emits a nested Observable\n * instead of an array.</span>\n *\n * <img src=\"./img/window.png\" width=\"100%\">\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping\n * windows. It emits the current window and opens a new one whenever the\n * Observable `windowBoundaries` emits an item. Because each window is an\n * Observable, the output is a higher-order Observable.\n *\n * @example <caption>In every window of 1 second each, emit at most 2 click events</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var interval = Rx.Observable.interval(1000);\n * var result = clicks.window(interval)\n *   .map(win => win.take(2)) // each window has at most 2 emissions\n *   .mergeAll(); // flatten the Observable-of-Observables\n * result.subscribe(x => console.log(x));\n *\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link buffer}\n *\n * @param {Observable<any>} windowBoundaries An Observable that completes the\n * previous window and starts a new window.\n * @return {Observable<Observable<T>>} An Observable of windows, which are\n * Observables emitting values of the source Observable.\n * @method window\n * @owner Observable\n */\nexport function window(windowBoundaries) {\n    return function windowOperatorFunction(source) {\n        return source.lift(new WindowOperator(windowBoundaries));\n    };\n}\nvar WindowOperator = (function () {\n    function WindowOperator(windowBoundaries) {\n        this.windowBoundaries = windowBoundaries;\n    }\n    WindowOperator.prototype.call = function (subscriber, source) {\n        var windowSubscriber = new WindowSubscriber(subscriber);\n        var sourceSubscription = source.subscribe(windowSubscriber);\n        if (!sourceSubscription.closed) {\n            windowSubscriber.add(subscribeToResult(windowSubscriber, this.windowBoundaries));\n        }\n        return sourceSubscription;\n    };\n    return WindowOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar WindowSubscriber = (function (_super) {\n    __extends(WindowSubscriber, _super);\n    function WindowSubscriber(destination) {\n        _super.call(this, destination);\n        this.window = new Subject();\n        destination.next(this.window);\n    }\n    WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.openWindow();\n    };\n    WindowSubscriber.prototype.notifyError = function (error, innerSub) {\n        this._error(error);\n    };\n    WindowSubscriber.prototype.notifyComplete = function (innerSub) {\n        this._complete();\n    };\n    WindowSubscriber.prototype._next = function (value) {\n        this.window.next(value);\n    };\n    WindowSubscriber.prototype._error = function (err) {\n        this.window.error(err);\n        this.destination.error(err);\n    };\n    WindowSubscriber.prototype._complete = function () {\n        this.window.complete();\n        this.destination.complete();\n    };\n    /** @deprecated internal use only */ WindowSubscriber.prototype._unsubscribe = function () {\n        this.window = null;\n    };\n    WindowSubscriber.prototype.openWindow = function () {\n        var prevWindow = this.window;\n        if (prevWindow) {\n            prevWindow.complete();\n        }\n        var destination = this.destination;\n        var newWindow = this.window = new Subject();\n        destination.next(newWindow);\n    };\n    return WindowSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=window.js.map","import { window as higherOrder } from '../operators/window';\n/**\n * Branch out the source Observable values as a nested Observable whenever\n * `windowBoundaries` emits.\n *\n * <span class=\"informal\">It's like {@link buffer}, but emits a nested Observable\n * instead of an array.</span>\n *\n * <img src=\"./img/window.png\" width=\"100%\">\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping\n * windows. It emits the current window and opens a new one whenever the\n * Observable `windowBoundaries` emits an item. Because each window is an\n * Observable, the output is a higher-order Observable.\n *\n * @example <caption>In every window of 1 second each, emit at most 2 click events</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var interval = Rx.Observable.interval(1000);\n * var result = clicks.window(interval)\n *   .map(win => win.take(2)) // each window has at most 2 emissions\n *   .mergeAll(); // flatten the Observable-of-Observables\n * result.subscribe(x => console.log(x));\n *\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link buffer}\n *\n * @param {Observable<any>} windowBoundaries An Observable that completes the\n * previous window and starts a new window.\n * @return {Observable<Observable<T>>} An Observable of windows, which are\n * Observables emitting values of the source Observable.\n * @method window\n * @owner Observable\n */\nexport function window(windowBoundaries) {\n    return higherOrder(windowBoundaries)(this);\n}\n//# sourceMappingURL=window.js.map","import { Observable } from '../../Observable';\nimport { window } from '../../operator/window';\nObservable.prototype.window = window;\n//# sourceMappingURL=window.js.map","import { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\n/**\n * Branch out the source Observable values as a nested Observable with each\n * nested Observable emitting at most `windowSize` values.\n *\n * <span class=\"informal\">It's like {@link bufferCount}, but emits a nested\n * Observable instead of an array.</span>\n *\n * <img src=\"./img/windowCount.png\" width=\"100%\">\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows every `startWindowEvery`\n * items, each containing no more than `windowSize` items. When the source\n * Observable completes or encounters an error, the output Observable emits\n * the current window and propagates the notification from the source\n * Observable. If `startWindowEvery` is not provided, then new windows are\n * started immediately at the start of the source and when each window completes\n * with size `windowSize`.\n *\n * @example <caption>Ignore every 3rd click event, starting from the first one</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.windowCount(3)\n *   .map(win => win.skip(1)) // skip first of every 3 clicks\n *   .mergeAll(); // flatten the Observable-of-Observables\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Ignore every 3rd click event, starting from the third one</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.windowCount(2, 3)\n *   .mergeAll(); // flatten the Observable-of-Observables\n * result.subscribe(x => console.log(x));\n *\n * @see {@link window}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferCount}\n *\n * @param {number} windowSize The maximum number of values emitted by each\n * window.\n * @param {number} [startWindowEvery] Interval at which to start a new window.\n * For example if `startWindowEvery` is `2`, then a new window will be started\n * on every other value from the source. A new window is started at the\n * beginning of the source by default.\n * @return {Observable<Observable<T>>} An Observable of windows, which in turn\n * are Observable of values.\n * @method windowCount\n * @owner Observable\n */\nexport function windowCount(windowSize, startWindowEvery) {\n    if (startWindowEvery === void 0) { startWindowEvery = 0; }\n    return function windowCountOperatorFunction(source) {\n        return source.lift(new WindowCountOperator(windowSize, startWindowEvery));\n    };\n}\nvar WindowCountOperator = (function () {\n    function WindowCountOperator(windowSize, startWindowEvery) {\n        this.windowSize = windowSize;\n        this.startWindowEvery = startWindowEvery;\n    }\n    WindowCountOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));\n    };\n    return WindowCountOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar WindowCountSubscriber = (function (_super) {\n    __extends(WindowCountSubscriber, _super);\n    function WindowCountSubscriber(destination, windowSize, startWindowEvery) {\n        _super.call(this, destination);\n        this.destination = destination;\n        this.windowSize = windowSize;\n        this.startWindowEvery = startWindowEvery;\n        this.windows = [new Subject()];\n        this.count = 0;\n        destination.next(this.windows[0]);\n    }\n    WindowCountSubscriber.prototype._next = function (value) {\n        var startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;\n        var destination = this.destination;\n        var windowSize = this.windowSize;\n        var windows = this.windows;\n        var len = windows.length;\n        for (var i = 0; i < len && !this.closed; i++) {\n            windows[i].next(value);\n        }\n        var c = this.count - windowSize + 1;\n        if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {\n            windows.shift().complete();\n        }\n        if (++this.count % startWindowEvery === 0 && !this.closed) {\n            var window_1 = new Subject();\n            windows.push(window_1);\n            destination.next(window_1);\n        }\n    };\n    WindowCountSubscriber.prototype._error = function (err) {\n        var windows = this.windows;\n        if (windows) {\n            while (windows.length > 0 && !this.closed) {\n                windows.shift().error(err);\n            }\n        }\n        this.destination.error(err);\n    };\n    WindowCountSubscriber.prototype._complete = function () {\n        var windows = this.windows;\n        if (windows) {\n            while (windows.length > 0 && !this.closed) {\n                windows.shift().complete();\n            }\n        }\n        this.destination.complete();\n    };\n    /** @deprecated internal use only */ WindowCountSubscriber.prototype._unsubscribe = function () {\n        this.count = 0;\n        this.windows = null;\n    };\n    return WindowCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=windowCount.js.map","import { windowCount as higherOrder } from '../operators/windowCount';\n/**\n * Branch out the source Observable values as a nested Observable with each\n * nested Observable emitting at most `windowSize` values.\n *\n * <span class=\"informal\">It's like {@link bufferCount}, but emits a nested\n * Observable instead of an array.</span>\n *\n * <img src=\"./img/windowCount.png\" width=\"100%\">\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows every `startWindowEvery`\n * items, each containing no more than `windowSize` items. When the source\n * Observable completes or encounters an error, the output Observable emits\n * the current window and propagates the notification from the source\n * Observable. If `startWindowEvery` is not provided, then new windows are\n * started immediately at the start of the source and when each window completes\n * with size `windowSize`.\n *\n * @example <caption>Ignore every 3rd click event, starting from the first one</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.windowCount(3)\n *   .map(win => win.skip(1)) // skip first of every 3 clicks\n *   .mergeAll(); // flatten the Observable-of-Observables\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Ignore every 3rd click event, starting from the third one</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.windowCount(2, 3)\n *   .mergeAll(); // flatten the Observable-of-Observables\n * result.subscribe(x => console.log(x));\n *\n * @see {@link window}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferCount}\n *\n * @param {number} windowSize The maximum number of values emitted by each\n * window.\n * @param {number} [startWindowEvery] Interval at which to start a new window.\n * For example if `startWindowEvery` is `2`, then a new window will be started\n * on every other value from the source. A new window is started at the\n * beginning of the source by default.\n * @return {Observable<Observable<T>>} An Observable of windows, which in turn\n * are Observable of values.\n * @method windowCount\n * @owner Observable\n */\nexport function windowCount(windowSize, startWindowEvery) {\n    if (startWindowEvery === void 0) { startWindowEvery = 0; }\n    return higherOrder(windowSize, startWindowEvery)(this);\n}\n//# sourceMappingURL=windowCount.js.map","import { Observable } from '../../Observable';\nimport { windowCount } from '../../operator/windowCount';\nObservable.prototype.windowCount = windowCount;\n//# sourceMappingURL=windowCount.js.map","import { Subject } from '../Subject';\nimport { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function windowTime(windowTimeSpan) {\n    var scheduler = async;\n    var windowCreationInterval = null;\n    var maxWindowSize = Number.POSITIVE_INFINITY;\n    if (isScheduler(arguments[3])) {\n        scheduler = arguments[3];\n    }\n    if (isScheduler(arguments[2])) {\n        scheduler = arguments[2];\n    }\n    else if (isNumeric(arguments[2])) {\n        maxWindowSize = arguments[2];\n    }\n    if (isScheduler(arguments[1])) {\n        scheduler = arguments[1];\n    }\n    else if (isNumeric(arguments[1])) {\n        windowCreationInterval = arguments[1];\n    }\n    return function windowTimeOperatorFunction(source) {\n        return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));\n    };\n}\nvar WindowTimeOperator = (function () {\n    function WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {\n        this.windowTimeSpan = windowTimeSpan;\n        this.windowCreationInterval = windowCreationInterval;\n        this.maxWindowSize = maxWindowSize;\n        this.scheduler = scheduler;\n    }\n    WindowTimeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new WindowTimeSubscriber(subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler));\n    };\n    return WindowTimeOperator;\n}());\nvar CountedSubject = (function (_super) {\n    __extends(CountedSubject, _super);\n    function CountedSubject() {\n        _super.apply(this, arguments);\n        this._numberOfNextedValues = 0;\n    }\n    CountedSubject.prototype.next = function (value) {\n        this._numberOfNextedValues++;\n        _super.prototype.next.call(this, value);\n    };\n    Object.defineProperty(CountedSubject.prototype, \"numberOfNextedValues\", {\n        get: function () {\n            return this._numberOfNextedValues;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return CountedSubject;\n}(Subject));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar WindowTimeSubscriber = (function (_super) {\n    __extends(WindowTimeSubscriber, _super);\n    function WindowTimeSubscriber(destination, windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {\n        _super.call(this, destination);\n        this.destination = destination;\n        this.windowTimeSpan = windowTimeSpan;\n        this.windowCreationInterval = windowCreationInterval;\n        this.maxWindowSize = maxWindowSize;\n        this.scheduler = scheduler;\n        this.windows = [];\n        var window = this.openWindow();\n        if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n            var closeState = { subscriber: this, window: window, context: null };\n            var creationState = { windowTimeSpan: windowTimeSpan, windowCreationInterval: windowCreationInterval, subscriber: this, scheduler: scheduler };\n            this.add(scheduler.schedule(dispatchWindowClose, windowTimeSpan, closeState));\n            this.add(scheduler.schedule(dispatchWindowCreation, windowCreationInterval, creationState));\n        }\n        else {\n            var timeSpanOnlyState = { subscriber: this, window: window, windowTimeSpan: windowTimeSpan };\n            this.add(scheduler.schedule(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));\n        }\n    }\n    WindowTimeSubscriber.prototype._next = function (value) {\n        var windows = this.windows;\n        var len = windows.length;\n        for (var i = 0; i < len; i++) {\n            var window_1 = windows[i];\n            if (!window_1.closed) {\n                window_1.next(value);\n                if (window_1.numberOfNextedValues >= this.maxWindowSize) {\n                    this.closeWindow(window_1);\n                }\n            }\n        }\n    };\n    WindowTimeSubscriber.prototype._error = function (err) {\n        var windows = this.windows;\n        while (windows.length > 0) {\n            windows.shift().error(err);\n        }\n        this.destination.error(err);\n    };\n    WindowTimeSubscriber.prototype._complete = function () {\n        var windows = this.windows;\n        while (windows.length > 0) {\n            var window_2 = windows.shift();\n            if (!window_2.closed) {\n                window_2.complete();\n            }\n        }\n        this.destination.complete();\n    };\n    WindowTimeSubscriber.prototype.openWindow = function () {\n        var window = new CountedSubject();\n        this.windows.push(window);\n        var destination = this.destination;\n        destination.next(window);\n        return window;\n    };\n    WindowTimeSubscriber.prototype.closeWindow = function (window) {\n        window.complete();\n        var windows = this.windows;\n        windows.splice(windows.indexOf(window), 1);\n    };\n    return WindowTimeSubscriber;\n}(Subscriber));\nfunction dispatchWindowTimeSpanOnly(state) {\n    var subscriber = state.subscriber, windowTimeSpan = state.windowTimeSpan, window = state.window;\n    if (window) {\n        subscriber.closeWindow(window);\n    }\n    state.window = subscriber.openWindow();\n    this.schedule(state, windowTimeSpan);\n}\nfunction dispatchWindowCreation(state) {\n    var windowTimeSpan = state.windowTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler, windowCreationInterval = state.windowCreationInterval;\n    var window = subscriber.openWindow();\n    var action = this;\n    var context = { action: action, subscription: null };\n    var timeSpanState = { subscriber: subscriber, window: window, context: context };\n    context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState);\n    action.add(context.subscription);\n    action.schedule(state, windowCreationInterval);\n}\nfunction dispatchWindowClose(state) {\n    var subscriber = state.subscriber, window = state.window, context = state.context;\n    if (context && context.action && context.subscription) {\n        context.action.remove(context.subscription);\n    }\n    subscriber.closeWindow(window);\n}\n//# sourceMappingURL=windowTime.js.map","import { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { windowTime as higherOrder } from '../operators/windowTime';\nexport function windowTime(windowTimeSpan) {\n    var scheduler = async;\n    var windowCreationInterval = null;\n    var maxWindowSize = Number.POSITIVE_INFINITY;\n    if (isScheduler(arguments[3])) {\n        scheduler = arguments[3];\n    }\n    if (isScheduler(arguments[2])) {\n        scheduler = arguments[2];\n    }\n    else if (isNumeric(arguments[2])) {\n        maxWindowSize = arguments[2];\n    }\n    if (isScheduler(arguments[1])) {\n        scheduler = arguments[1];\n    }\n    else if (isNumeric(arguments[1])) {\n        windowCreationInterval = arguments[1];\n    }\n    return higherOrder(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler)(this);\n}\n//# sourceMappingURL=windowTime.js.map","import { Observable } from '../../Observable';\nimport { windowTime } from '../../operator/windowTime';\nObservable.prototype.windowTime = windowTime;\n//# sourceMappingURL=windowTime.js.map","import { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Branch out the source Observable values as a nested Observable starting from\n * an emission from `openings` and ending when the output of `closingSelector`\n * emits.\n *\n * <span class=\"informal\">It's like {@link bufferToggle}, but emits a nested\n * Observable instead of an array.</span>\n *\n * <img src=\"./img/windowToggle.png\" width=\"100%\">\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows that contain those items\n * emitted by the source Observable between the time when the `openings`\n * Observable emits an item and when the Observable returned by\n * `closingSelector` emits an item.\n *\n * @example <caption>Every other second, emit the click events from the next 500ms</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var openings = Rx.Observable.interval(1000);\n * var result = clicks.windowToggle(openings, i =>\n *   i % 2 ? Rx.Observable.interval(500) : Rx.Observable.empty()\n * ).mergeAll();\n * result.subscribe(x => console.log(x));\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowWhen}\n * @see {@link bufferToggle}\n *\n * @param {Observable<O>} openings An observable of notifications to start new\n * windows.\n * @param {function(value: O): Observable} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns an Observable,\n * which, when it emits (either `next` or `complete`), signals that the\n * associated window should complete.\n * @return {Observable<Observable<T>>} An observable of windows, which in turn\n * are Observables.\n * @method windowToggle\n * @owner Observable\n */\nexport function windowToggle(openings, closingSelector) {\n    return function (source) { return source.lift(new WindowToggleOperator(openings, closingSelector)); };\n}\nvar WindowToggleOperator = (function () {\n    function WindowToggleOperator(openings, closingSelector) {\n        this.openings = openings;\n        this.closingSelector = closingSelector;\n    }\n    WindowToggleOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new WindowToggleSubscriber(subscriber, this.openings, this.closingSelector));\n    };\n    return WindowToggleOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar WindowToggleSubscriber = (function (_super) {\n    __extends(WindowToggleSubscriber, _super);\n    function WindowToggleSubscriber(destination, openings, closingSelector) {\n        _super.call(this, destination);\n        this.openings = openings;\n        this.closingSelector = closingSelector;\n        this.contexts = [];\n        this.add(this.openSubscription = subscribeToResult(this, openings, openings));\n    }\n    WindowToggleSubscriber.prototype._next = function (value) {\n        var contexts = this.contexts;\n        if (contexts) {\n            var len = contexts.length;\n            for (var i = 0; i < len; i++) {\n                contexts[i].window.next(value);\n            }\n        }\n    };\n    WindowToggleSubscriber.prototype._error = function (err) {\n        var contexts = this.contexts;\n        this.contexts = null;\n        if (contexts) {\n            var len = contexts.length;\n            var index = -1;\n            while (++index < len) {\n                var context = contexts[index];\n                context.window.error(err);\n                context.subscription.unsubscribe();\n            }\n        }\n        _super.prototype._error.call(this, err);\n    };\n    WindowToggleSubscriber.prototype._complete = function () {\n        var contexts = this.contexts;\n        this.contexts = null;\n        if (contexts) {\n            var len = contexts.length;\n            var index = -1;\n            while (++index < len) {\n                var context = contexts[index];\n                context.window.complete();\n                context.subscription.unsubscribe();\n            }\n        }\n        _super.prototype._complete.call(this);\n    };\n    /** @deprecated internal use only */ WindowToggleSubscriber.prototype._unsubscribe = function () {\n        var contexts = this.contexts;\n        this.contexts = null;\n        if (contexts) {\n            var len = contexts.length;\n            var index = -1;\n            while (++index < len) {\n                var context = contexts[index];\n                context.window.unsubscribe();\n                context.subscription.unsubscribe();\n            }\n        }\n    };\n    WindowToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        if (outerValue === this.openings) {\n            var closingSelector = this.closingSelector;\n            var closingNotifier = tryCatch(closingSelector)(innerValue);\n            if (closingNotifier === errorObject) {\n                return this.error(errorObject.e);\n            }\n            else {\n                var window_1 = new Subject();\n                var subscription = new Subscription();\n                var context = { window: window_1, subscription: subscription };\n                this.contexts.push(context);\n                var innerSubscription = subscribeToResult(this, closingNotifier, context);\n                if (innerSubscription.closed) {\n                    this.closeWindow(this.contexts.length - 1);\n                }\n                else {\n                    innerSubscription.context = context;\n                    subscription.add(innerSubscription);\n                }\n                this.destination.next(window_1);\n            }\n        }\n        else {\n            this.closeWindow(this.contexts.indexOf(outerValue));\n        }\n    };\n    WindowToggleSubscriber.prototype.notifyError = function (err) {\n        this.error(err);\n    };\n    WindowToggleSubscriber.prototype.notifyComplete = function (inner) {\n        if (inner !== this.openSubscription) {\n            this.closeWindow(this.contexts.indexOf(inner.context));\n        }\n    };\n    WindowToggleSubscriber.prototype.closeWindow = function (index) {\n        if (index === -1) {\n            return;\n        }\n        var contexts = this.contexts;\n        var context = contexts[index];\n        var window = context.window, subscription = context.subscription;\n        contexts.splice(index, 1);\n        window.complete();\n        subscription.unsubscribe();\n    };\n    return WindowToggleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=windowToggle.js.map","import { windowToggle as higherOrder } from '../operators/windowToggle';\n/**\n * Branch out the source Observable values as a nested Observable starting from\n * an emission from `openings` and ending when the output of `closingSelector`\n * emits.\n *\n * <span class=\"informal\">It's like {@link bufferToggle}, but emits a nested\n * Observable instead of an array.</span>\n *\n * <img src=\"./img/windowToggle.png\" width=\"100%\">\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows that contain those items\n * emitted by the source Observable between the time when the `openings`\n * Observable emits an item and when the Observable returned by\n * `closingSelector` emits an item.\n *\n * @example <caption>Every other second, emit the click events from the next 500ms</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var openings = Rx.Observable.interval(1000);\n * var result = clicks.windowToggle(openings, i =>\n *   i % 2 ? Rx.Observable.interval(500) : Rx.Observable.empty()\n * ).mergeAll();\n * result.subscribe(x => console.log(x));\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowWhen}\n * @see {@link bufferToggle}\n *\n * @param {Observable<O>} openings An observable of notifications to start new\n * windows.\n * @param {function(value: O): Observable} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns an Observable,\n * which, when it emits (either `next` or `complete`), signals that the\n * associated window should complete.\n * @return {Observable<Observable<T>>} An observable of windows, which in turn\n * are Observables.\n * @method windowToggle\n * @owner Observable\n */\nexport function windowToggle(openings, closingSelector) {\n    return higherOrder(openings, closingSelector)(this);\n}\n//# sourceMappingURL=windowToggle.js.map","import { Observable } from '../../Observable';\nimport { windowToggle } from '../../operator/windowToggle';\nObservable.prototype.windowToggle = windowToggle;\n//# sourceMappingURL=windowToggle.js.map","import { Subject } from '../Subject';\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/**\n * Branch out the source Observable values as a nested Observable using a\n * factory function of closing Observables to determine when to start a new\n * window.\n *\n * <span class=\"informal\">It's like {@link bufferWhen}, but emits a nested\n * Observable instead of an array.</span>\n *\n * <img src=\"./img/windowWhen.png\" width=\"100%\">\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping windows.\n * It emits the current window and opens a new one whenever the Observable\n * produced by the specified `closingSelector` function emits an item. The first\n * window is opened immediately when subscribing to the output Observable.\n *\n * @example <caption>Emit only the first two clicks events in every window of [1-5] random seconds</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks\n *   .windowWhen(() => Rx.Observable.interval(1000 + Math.random() * 4000))\n *   .map(win => win.take(2)) // each window has at most 2 emissions\n *   .mergeAll(); // flatten the Observable-of-Observables\n * result.subscribe(x => console.log(x));\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link bufferWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals (on either `next` or\n * `complete`) when to close the previous window and start a new one.\n * @return {Observable<Observable<T>>} An observable of windows, which in turn\n * are Observables.\n * @method windowWhen\n * @owner Observable\n */\nexport function windowWhen(closingSelector) {\n    return function windowWhenOperatorFunction(source) {\n        return source.lift(new WindowOperator(closingSelector));\n    };\n}\nvar WindowOperator = (function () {\n    function WindowOperator(closingSelector) {\n        this.closingSelector = closingSelector;\n    }\n    WindowOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));\n    };\n    return WindowOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar WindowSubscriber = (function (_super) {\n    __extends(WindowSubscriber, _super);\n    function WindowSubscriber(destination, closingSelector) {\n        _super.call(this, destination);\n        this.destination = destination;\n        this.closingSelector = closingSelector;\n        this.openWindow();\n    }\n    WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.openWindow(innerSub);\n    };\n    WindowSubscriber.prototype.notifyError = function (error, innerSub) {\n        this._error(error);\n    };\n    WindowSubscriber.prototype.notifyComplete = function (innerSub) {\n        this.openWindow(innerSub);\n    };\n    WindowSubscriber.prototype._next = function (value) {\n        this.window.next(value);\n    };\n    WindowSubscriber.prototype._error = function (err) {\n        this.window.error(err);\n        this.destination.error(err);\n        this.unsubscribeClosingNotification();\n    };\n    WindowSubscriber.prototype._complete = function () {\n        this.window.complete();\n        this.destination.complete();\n        this.unsubscribeClosingNotification();\n    };\n    WindowSubscriber.prototype.unsubscribeClosingNotification = function () {\n        if (this.closingNotification) {\n            this.closingNotification.unsubscribe();\n        }\n    };\n    WindowSubscriber.prototype.openWindow = function (innerSub) {\n        if (innerSub === void 0) { innerSub = null; }\n        if (innerSub) {\n            this.remove(innerSub);\n            innerSub.unsubscribe();\n        }\n        var prevWindow = this.window;\n        if (prevWindow) {\n            prevWindow.complete();\n        }\n        var window = this.window = new Subject();\n        this.destination.next(window);\n        var closingNotifier = tryCatch(this.closingSelector)();\n        if (closingNotifier === errorObject) {\n            var err = errorObject.e;\n            this.destination.error(err);\n            this.window.error(err);\n        }\n        else {\n            this.add(this.closingNotification = subscribeToResult(this, closingNotifier));\n        }\n    };\n    return WindowSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=windowWhen.js.map","import { windowWhen as higherOrder } from '../operators/windowWhen';\n/**\n * Branch out the source Observable values as a nested Observable using a\n * factory function of closing Observables to determine when to start a new\n * window.\n *\n * <span class=\"informal\">It's like {@link bufferWhen}, but emits a nested\n * Observable instead of an array.</span>\n *\n * <img src=\"./img/windowWhen.png\" width=\"100%\">\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping windows.\n * It emits the current window and opens a new one whenever the Observable\n * produced by the specified `closingSelector` function emits an item. The first\n * window is opened immediately when subscribing to the output Observable.\n *\n * @example <caption>Emit only the first two clicks events in every window of [1-5] random seconds</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks\n *   .windowWhen(() => Rx.Observable.interval(1000 + Math.random() * 4000))\n *   .map(win => win.take(2)) // each window has at most 2 emissions\n *   .mergeAll(); // flatten the Observable-of-Observables\n * result.subscribe(x => console.log(x));\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link bufferWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals (on either `next` or\n * `complete`) when to close the previous window and start a new one.\n * @return {Observable<Observable<T>>} An observable of windows, which in turn\n * are Observables.\n * @method windowWhen\n * @owner Observable\n */\nexport function windowWhen(closingSelector) {\n    return higherOrder(closingSelector)(this);\n}\n//# sourceMappingURL=windowWhen.js.map","import { Observable } from '../../Observable';\nimport { windowWhen } from '../../operator/windowWhen';\nObservable.prototype.windowWhen = windowWhen;\n//# sourceMappingURL=windowWhen.js.map","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n/* tslint:enable:max-line-length */\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * <span class=\"informal\">Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.</span>\n *\n * <img src=\"./img/withLatestFrom.png\" width=\"100%\">\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * @example <caption>On every click event, emit an array with the latest timer event plus the click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var result = clicks.withLatestFrom(timer);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.withLatestFrom(b, c, (a1, b1, c1) => a1 + b1 + c1)`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method withLatestFrom\n * @owner Observable\n */\nexport function withLatestFrom() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i - 0] = arguments[_i];\n    }\n    return function (source) {\n        var project;\n        if (typeof args[args.length - 1] === 'function') {\n            project = args.pop();\n        }\n        var observables = args;\n        return source.lift(new WithLatestFromOperator(observables, project));\n    };\n}\nvar WithLatestFromOperator = (function () {\n    function WithLatestFromOperator(observables, project) {\n        this.observables = observables;\n        this.project = project;\n    }\n    WithLatestFromOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n    };\n    return WithLatestFromOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar WithLatestFromSubscriber = (function (_super) {\n    __extends(WithLatestFromSubscriber, _super);\n    function WithLatestFromSubscriber(destination, observables, project) {\n        _super.call(this, destination);\n        this.observables = observables;\n        this.project = project;\n        this.toRespond = [];\n        var len = observables.length;\n        this.values = new Array(len);\n        for (var i = 0; i < len; i++) {\n            this.toRespond.push(i);\n        }\n        for (var i = 0; i < len; i++) {\n            var observable = observables[i];\n            this.add(subscribeToResult(this, observable, observable, i));\n        }\n    }\n    WithLatestFromSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.values[outerIndex] = innerValue;\n        var toRespond = this.toRespond;\n        if (toRespond.length > 0) {\n            var found = toRespond.indexOf(outerIndex);\n            if (found !== -1) {\n                toRespond.splice(found, 1);\n            }\n        }\n    };\n    WithLatestFromSubscriber.prototype.notifyComplete = function () {\n        // noop\n    };\n    WithLatestFromSubscriber.prototype._next = function (value) {\n        if (this.toRespond.length === 0) {\n            var args = [value].concat(this.values);\n            if (this.project) {\n                this._tryProject(args);\n            }\n            else {\n                this.destination.next(args);\n            }\n        }\n    };\n    WithLatestFromSubscriber.prototype._tryProject = function (args) {\n        var result;\n        try {\n            result = this.project.apply(this, args);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return WithLatestFromSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=withLatestFrom.js.map","import { withLatestFrom as higherOrder } from '../operators/withLatestFrom';\n/* tslint:enable:max-line-length */\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * <span class=\"informal\">Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.</span>\n *\n * <img src=\"./img/withLatestFrom.png\" width=\"100%\">\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * @example <caption>On every click event, emit an array with the latest timer event plus the click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var result = clicks.withLatestFrom(timer);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.withLatestFrom(b, c, (a1, b1, c1) => a1 + b1 + c1)`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method withLatestFrom\n * @owner Observable\n */\nexport function withLatestFrom() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i - 0] = arguments[_i];\n    }\n    return higherOrder.apply(void 0, args)(this);\n}\n//# sourceMappingURL=withLatestFrom.js.map","import { Observable } from '../../Observable';\nimport { withLatestFrom } from '../../operator/withLatestFrom';\nObservable.prototype.withLatestFrom = withLatestFrom;\n//# sourceMappingURL=withLatestFrom.js.map","import { zip as higherOrder } from '../operators/zip';\n/* tslint:enable:max-line-length */\n/**\n * @param observables\n * @return {Observable<R>}\n * @method zip\n * @owner Observable\n */\nexport function zipProto() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i - 0] = arguments[_i];\n    }\n    return higherOrder.apply(void 0, observables)(this);\n}\n//# sourceMappingURL=zip.js.map","import { Observable } from '../../Observable';\nimport { zipProto } from '../../operator/zip';\nObservable.prototype.zip = zipProto;\n//# sourceMappingURL=zip.js.map","import { ZipOperator } from './zip';\nexport function zipAll(project) {\n    return function (source) { return source.lift(new ZipOperator(project)); };\n}\n//# sourceMappingURL=zipAll.js.map","import { zipAll as higherOrder } from '../operators/zipAll';\n/**\n * @param project\n * @return {Observable<R>|WebSocketSubject<T>|Observable<T>}\n * @method zipAll\n * @owner Observable\n */\nexport function zipAll(project) {\n    return higherOrder(project)(this);\n}\n//# sourceMappingURL=zipAll.js.map","import { Observable } from '../../Observable';\nimport { zipAll } from '../../operator/zipAll';\nObservable.prototype.zipAll = zipAll;\n//# sourceMappingURL=zipAll.js.map","export var SubscriptionLog = (function () {\n    function SubscriptionLog(subscribedFrame, unsubscribedFrame) {\n        if (unsubscribedFrame === void 0) { unsubscribedFrame = Number.POSITIVE_INFINITY; }\n        this.subscribedFrame = subscribedFrame;\n        this.unsubscribedFrame = unsubscribedFrame;\n    }\n    return SubscriptionLog;\n}());\n//# sourceMappingURL=SubscriptionLog.js.map","import { SubscriptionLog } from './SubscriptionLog';\nexport var SubscriptionLoggable = (function () {\n    function SubscriptionLoggable() {\n        this.subscriptions = [];\n    }\n    SubscriptionLoggable.prototype.logSubscribedFrame = function () {\n        this.subscriptions.push(new SubscriptionLog(this.scheduler.now()));\n        return this.subscriptions.length - 1;\n    };\n    SubscriptionLoggable.prototype.logUnsubscribedFrame = function (index) {\n        var subscriptionLogs = this.subscriptions;\n        var oldSubscriptionLog = subscriptionLogs[index];\n        subscriptionLogs[index] = new SubscriptionLog(oldSubscriptionLog.subscribedFrame, this.scheduler.now());\n    };\n    return SubscriptionLoggable;\n}());\n//# sourceMappingURL=SubscriptionLoggable.js.map","export function applyMixins(derivedCtor, baseCtors) {\n    for (var i = 0, len = baseCtors.length; i < len; i++) {\n        var baseCtor = baseCtors[i];\n        var propertyKeys = Object.getOwnPropertyNames(baseCtor.prototype);\n        for (var j = 0, len2 = propertyKeys.length; j < len2; j++) {\n            var name_1 = propertyKeys[j];\n            derivedCtor.prototype[name_1] = baseCtor.prototype[name_1];\n        }\n    }\n}\n//# sourceMappingURL=applyMixins.js.map","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { SubscriptionLoggable } from './SubscriptionLoggable';\nimport { applyMixins } from '../util/applyMixins';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var ColdObservable = (function (_super) {\n    __extends(ColdObservable, _super);\n    function ColdObservable(messages, scheduler) {\n        _super.call(this, function (subscriber) {\n            var observable = this;\n            var index = observable.logSubscribedFrame();\n            subscriber.add(new Subscription(function () {\n                observable.logUnsubscribedFrame(index);\n            }));\n            observable.scheduleMessages(subscriber);\n            return subscriber;\n        });\n        this.messages = messages;\n        this.subscriptions = [];\n        this.scheduler = scheduler;\n    }\n    ColdObservable.prototype.scheduleMessages = function (subscriber) {\n        var messagesLength = this.messages.length;\n        for (var i = 0; i < messagesLength; i++) {\n            var message = this.messages[i];\n            subscriber.add(this.scheduler.schedule(function (_a) {\n                var message = _a.message, subscriber = _a.subscriber;\n                message.notification.observe(subscriber);\n            }, message.frame, { message: message, subscriber: subscriber }));\n        }\n    };\n    return ColdObservable;\n}(Observable));\napplyMixins(ColdObservable, [SubscriptionLoggable]);\n//# sourceMappingURL=ColdObservable.js.map","import { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { SubscriptionLoggable } from './SubscriptionLoggable';\nimport { applyMixins } from '../util/applyMixins';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var HotObservable = (function (_super) {\n    __extends(HotObservable, _super);\n    function HotObservable(messages, scheduler) {\n        _super.call(this);\n        this.messages = messages;\n        this.subscriptions = [];\n        this.scheduler = scheduler;\n    }\n    /** @deprecated internal use only */ HotObservable.prototype._subscribe = function (subscriber) {\n        var subject = this;\n        var index = subject.logSubscribedFrame();\n        subscriber.add(new Subscription(function () {\n            subject.logUnsubscribedFrame(index);\n        }));\n        return _super.prototype._subscribe.call(this, subscriber);\n    };\n    HotObservable.prototype.setup = function () {\n        var subject = this;\n        var messagesLength = subject.messages.length;\n        /* tslint:disable:no-var-keyword */\n        for (var i = 0; i < messagesLength; i++) {\n            (function () {\n                var message = subject.messages[i];\n                /* tslint:enable */\n                subject.scheduler.schedule(function () { message.notification.observe(subject); }, message.frame);\n            })();\n        }\n    };\n    return HotObservable;\n}(Subject));\napplyMixins(HotObservable, [SubscriptionLoggable]);\n//# sourceMappingURL=HotObservable.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var VirtualTimeScheduler = (function (_super) {\n    __extends(VirtualTimeScheduler, _super);\n    function VirtualTimeScheduler(SchedulerAction, maxFrames) {\n        var _this = this;\n        if (SchedulerAction === void 0) { SchedulerAction = VirtualAction; }\n        if (maxFrames === void 0) { maxFrames = Number.POSITIVE_INFINITY; }\n        _super.call(this, SchedulerAction, function () { return _this.frame; });\n        this.maxFrames = maxFrames;\n        this.frame = 0;\n        this.index = -1;\n    }\n    /**\n     * Prompt the Scheduler to execute all of its queued actions, therefore\n     * clearing its queue.\n     * @return {void}\n     */\n    VirtualTimeScheduler.prototype.flush = function () {\n        var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n        var error, action;\n        while ((action = actions.shift()) && (this.frame = action.delay) <= maxFrames) {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        }\n        if (error) {\n            while (action = actions.shift()) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    VirtualTimeScheduler.frameTimeFactor = 10;\n    return VirtualTimeScheduler;\n}(AsyncScheduler));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var VirtualAction = (function (_super) {\n    __extends(VirtualAction, _super);\n    function VirtualAction(scheduler, work, index) {\n        if (index === void 0) { index = scheduler.index += 1; }\n        _super.call(this, scheduler, work);\n        this.scheduler = scheduler;\n        this.work = work;\n        this.index = index;\n        this.active = true;\n        this.index = scheduler.index = index;\n    }\n    VirtualAction.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        if (!this.id) {\n            return _super.prototype.schedule.call(this, state, delay);\n        }\n        this.active = false;\n        // If an action is rescheduled, we save allocations by mutating its state,\n        // pushing it to the end of the scheduler queue, and recycling the action.\n        // But since the VirtualTimeScheduler is used for testing, VirtualActions\n        // must be immutable so they can be inspected later.\n        var action = new VirtualAction(this.scheduler, this.work);\n        this.add(action);\n        return action.schedule(state, delay);\n    };\n    VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        this.delay = scheduler.frame + delay;\n        var actions = scheduler.actions;\n        actions.push(this);\n        actions.sort(VirtualAction.sortActions);\n        return true;\n    };\n    VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        return undefined;\n    };\n    VirtualAction.prototype._execute = function (state, delay) {\n        if (this.active === true) {\n            return _super.prototype._execute.call(this, state, delay);\n        }\n    };\n    VirtualAction.sortActions = function (a, b) {\n        if (a.delay === b.delay) {\n            if (a.index === b.index) {\n                return 0;\n            }\n            else if (a.index > b.index) {\n                return 1;\n            }\n            else {\n                return -1;\n            }\n        }\n        else if (a.delay > b.delay) {\n            return 1;\n        }\n        else {\n            return -1;\n        }\n    };\n    return VirtualAction;\n}(AsyncAction));\n//# sourceMappingURL=VirtualTimeScheduler.js.map","import { Observable } from '../Observable';\nimport { Notification } from '../Notification';\nimport { ColdObservable } from './ColdObservable';\nimport { HotObservable } from './HotObservable';\nimport { SubscriptionLog } from './SubscriptionLog';\nimport { VirtualTimeScheduler, VirtualAction } from '../scheduler/VirtualTimeScheduler';\nvar defaultMaxFrame = 750;\nexport var TestScheduler = (function (_super) {\n    __extends(TestScheduler, _super);\n    function TestScheduler(assertDeepEqual) {\n        _super.call(this, VirtualAction, defaultMaxFrame);\n        this.assertDeepEqual = assertDeepEqual;\n        this.hotObservables = [];\n        this.coldObservables = [];\n        this.flushTests = [];\n    }\n    TestScheduler.prototype.createTime = function (marbles) {\n        var indexOf = marbles.indexOf('|');\n        if (indexOf === -1) {\n            throw new Error('marble diagram for time should have a completion marker \"|\"');\n        }\n        return indexOf * TestScheduler.frameTimeFactor;\n    };\n    TestScheduler.prototype.createColdObservable = function (marbles, values, error) {\n        if (marbles.indexOf('^') !== -1) {\n            throw new Error('cold observable cannot have subscription offset \"^\"');\n        }\n        if (marbles.indexOf('!') !== -1) {\n            throw new Error('cold observable cannot have unsubscription marker \"!\"');\n        }\n        var messages = TestScheduler.parseMarbles(marbles, values, error);\n        var cold = new ColdObservable(messages, this);\n        this.coldObservables.push(cold);\n        return cold;\n    };\n    TestScheduler.prototype.createHotObservable = function (marbles, values, error) {\n        if (marbles.indexOf('!') !== -1) {\n            throw new Error('hot observable cannot have unsubscription marker \"!\"');\n        }\n        var messages = TestScheduler.parseMarbles(marbles, values, error);\n        var subject = new HotObservable(messages, this);\n        this.hotObservables.push(subject);\n        return subject;\n    };\n    TestScheduler.prototype.materializeInnerObservable = function (observable, outerFrame) {\n        var _this = this;\n        var messages = [];\n        observable.subscribe(function (value) {\n            messages.push({ frame: _this.frame - outerFrame, notification: Notification.createNext(value) });\n        }, function (err) {\n            messages.push({ frame: _this.frame - outerFrame, notification: Notification.createError(err) });\n        }, function () {\n            messages.push({ frame: _this.frame - outerFrame, notification: Notification.createComplete() });\n        });\n        return messages;\n    };\n    TestScheduler.prototype.expectObservable = function (observable, unsubscriptionMarbles) {\n        var _this = this;\n        if (unsubscriptionMarbles === void 0) { unsubscriptionMarbles = null; }\n        var actual = [];\n        var flushTest = { actual: actual, ready: false };\n        var unsubscriptionFrame = TestScheduler\n            .parseMarblesAsSubscriptions(unsubscriptionMarbles).unsubscribedFrame;\n        var subscription;\n        this.schedule(function () {\n            subscription = observable.subscribe(function (x) {\n                var value = x;\n                // Support Observable-of-Observables\n                if (x instanceof Observable) {\n                    value = _this.materializeInnerObservable(value, _this.frame);\n                }\n                actual.push({ frame: _this.frame, notification: Notification.createNext(value) });\n            }, function (err) {\n                actual.push({ frame: _this.frame, notification: Notification.createError(err) });\n            }, function () {\n                actual.push({ frame: _this.frame, notification: Notification.createComplete() });\n            });\n        }, 0);\n        if (unsubscriptionFrame !== Number.POSITIVE_INFINITY) {\n            this.schedule(function () { return subscription.unsubscribe(); }, unsubscriptionFrame);\n        }\n        this.flushTests.push(flushTest);\n        return {\n            toBe: function (marbles, values, errorValue) {\n                flushTest.ready = true;\n                flushTest.expected = TestScheduler.parseMarbles(marbles, values, errorValue, true);\n            }\n        };\n    };\n    TestScheduler.prototype.expectSubscriptions = function (actualSubscriptionLogs) {\n        var flushTest = { actual: actualSubscriptionLogs, ready: false };\n        this.flushTests.push(flushTest);\n        return {\n            toBe: function (marbles) {\n                var marblesArray = (typeof marbles === 'string') ? [marbles] : marbles;\n                flushTest.ready = true;\n                flushTest.expected = marblesArray.map(function (marbles) {\n                    return TestScheduler.parseMarblesAsSubscriptions(marbles);\n                });\n            }\n        };\n    };\n    TestScheduler.prototype.flush = function () {\n        var hotObservables = this.hotObservables;\n        while (hotObservables.length > 0) {\n            hotObservables.shift().setup();\n        }\n        _super.prototype.flush.call(this);\n        var readyFlushTests = this.flushTests.filter(function (test) { return test.ready; });\n        while (readyFlushTests.length > 0) {\n            var test = readyFlushTests.shift();\n            this.assertDeepEqual(test.actual, test.expected);\n        }\n    };\n    TestScheduler.parseMarblesAsSubscriptions = function (marbles) {\n        if (typeof marbles !== 'string') {\n            return new SubscriptionLog(Number.POSITIVE_INFINITY);\n        }\n        var len = marbles.length;\n        var groupStart = -1;\n        var subscriptionFrame = Number.POSITIVE_INFINITY;\n        var unsubscriptionFrame = Number.POSITIVE_INFINITY;\n        for (var i = 0; i < len; i++) {\n            var frame = i * this.frameTimeFactor;\n            var c = marbles[i];\n            switch (c) {\n                case '-':\n                case ' ':\n                    break;\n                case '(':\n                    groupStart = frame;\n                    break;\n                case ')':\n                    groupStart = -1;\n                    break;\n                case '^':\n                    if (subscriptionFrame !== Number.POSITIVE_INFINITY) {\n                        throw new Error('found a second subscription point \\'^\\' in a ' +\n                            'subscription marble diagram. There can only be one.');\n                    }\n                    subscriptionFrame = groupStart > -1 ? groupStart : frame;\n                    break;\n                case '!':\n                    if (unsubscriptionFrame !== Number.POSITIVE_INFINITY) {\n                        throw new Error('found a second subscription point \\'^\\' in a ' +\n                            'subscription marble diagram. There can only be one.');\n                    }\n                    unsubscriptionFrame = groupStart > -1 ? groupStart : frame;\n                    break;\n                default:\n                    throw new Error('there can only be \\'^\\' and \\'!\\' markers in a ' +\n                        'subscription marble diagram. Found instead \\'' + c + '\\'.');\n            }\n        }\n        if (unsubscriptionFrame < 0) {\n            return new SubscriptionLog(subscriptionFrame);\n        }\n        else {\n            return new SubscriptionLog(subscriptionFrame, unsubscriptionFrame);\n        }\n    };\n    TestScheduler.parseMarbles = function (marbles, values, errorValue, materializeInnerObservables) {\n        if (materializeInnerObservables === void 0) { materializeInnerObservables = false; }\n        if (marbles.indexOf('!') !== -1) {\n            throw new Error('conventional marble diagrams cannot have the ' +\n                'unsubscription marker \"!\"');\n        }\n        var len = marbles.length;\n        var testMessages = [];\n        var subIndex = marbles.indexOf('^');\n        var frameOffset = subIndex === -1 ? 0 : (subIndex * -this.frameTimeFactor);\n        var getValue = typeof values !== 'object' ?\n            function (x) { return x; } :\n            function (x) {\n                // Support Observable-of-Observables\n                if (materializeInnerObservables && values[x] instanceof ColdObservable) {\n                    return values[x].messages;\n                }\n                return values[x];\n            };\n        var groupStart = -1;\n        for (var i = 0; i < len; i++) {\n            var frame = i * this.frameTimeFactor + frameOffset;\n            var notification = void 0;\n            var c = marbles[i];\n            switch (c) {\n                case '-':\n                case ' ':\n                    break;\n                case '(':\n                    groupStart = frame;\n                    break;\n                case ')':\n                    groupStart = -1;\n                    break;\n                case '|':\n                    notification = Notification.createComplete();\n                    break;\n                case '^':\n                    break;\n                case '#':\n                    notification = Notification.createError(errorValue || 'error');\n                    break;\n                default:\n                    notification = Notification.createNext(getValue(c));\n                    break;\n            }\n            if (notification) {\n                testMessages.push({ frame: groupStart > -1 ? groupStart : frame, notification: notification });\n            }\n        }\n        return testMessages;\n    };\n    return TestScheduler;\n}(VirtualTimeScheduler));\n//# sourceMappingURL=TestScheduler.js.map","import { root } from './root';\nexport var RequestAnimationFrameDefinition = (function () {\n    function RequestAnimationFrameDefinition(root) {\n        if (root.requestAnimationFrame) {\n            this.cancelAnimationFrame = root.cancelAnimationFrame.bind(root);\n            this.requestAnimationFrame = root.requestAnimationFrame.bind(root);\n        }\n        else if (root.mozRequestAnimationFrame) {\n            this.cancelAnimationFrame = root.mozCancelAnimationFrame.bind(root);\n            this.requestAnimationFrame = root.mozRequestAnimationFrame.bind(root);\n        }\n        else if (root.webkitRequestAnimationFrame) {\n            this.cancelAnimationFrame = root.webkitCancelAnimationFrame.bind(root);\n            this.requestAnimationFrame = root.webkitRequestAnimationFrame.bind(root);\n        }\n        else if (root.msRequestAnimationFrame) {\n            this.cancelAnimationFrame = root.msCancelAnimationFrame.bind(root);\n            this.requestAnimationFrame = root.msRequestAnimationFrame.bind(root);\n        }\n        else if (root.oRequestAnimationFrame) {\n            this.cancelAnimationFrame = root.oCancelAnimationFrame.bind(root);\n            this.requestAnimationFrame = root.oRequestAnimationFrame.bind(root);\n        }\n        else {\n            this.cancelAnimationFrame = root.clearTimeout.bind(root);\n            this.requestAnimationFrame = function (cb) { return root.setTimeout(cb, 1000 / 60); };\n        }\n    }\n    return RequestAnimationFrameDefinition;\n}());\nexport var AnimationFrame = new RequestAnimationFrameDefinition(root);\n//# sourceMappingURL=AnimationFrame.js.map","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrame } from '../util/AnimationFrame';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport var AnimationFrameAction = (function (_super) {\n    __extends(AnimationFrameAction, _super);\n    function AnimationFrameAction(scheduler, work) {\n        _super.call(this, scheduler, work);\n        this.scheduler = scheduler;\n        this.work = work;\n    }\n    AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        // If delay is greater than 0, request as an async action.\n        if (delay !== null && delay > 0) {\n            return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n        }\n        // Push the action to the end of the scheduler queue.\n        scheduler.actions.push(this);\n        // If an animation frame has already been requested, don't request another\n        // one. If an animation frame hasn't been requested yet, request one. Return\n        // the current animation frame request id.\n        return scheduler.scheduled || (scheduler.scheduled = AnimationFrame.requestAnimationFrame(scheduler.flush.bind(scheduler, null)));\n    };\n    AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        // If delay exists and is greater than 0, or if the delay is null (the\n        // action wasn't rescheduled) but was originally scheduled as an async\n        // action, then recycle as an async action.\n        if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n            return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n        }\n        // If the scheduler queue is empty, cancel the requested animation frame and\n        // set the scheduled flag to undefined so the next AnimationFrameAction will\n        // request its own.\n        if (scheduler.actions.length === 0) {\n            AnimationFrame.cancelAnimationFrame(id);\n            scheduler.scheduled = undefined;\n        }\n        // Return undefined so the action knows to request a new async id if it's rescheduled.\n        return undefined;\n    };\n    return AnimationFrameAction;\n}(AsyncAction));\n//# sourceMappingURL=AnimationFrameAction.js.map","import { AsyncScheduler } from './AsyncScheduler';\nexport var AnimationFrameScheduler = (function (_super) {\n    __extends(AnimationFrameScheduler, _super);\n    function AnimationFrameScheduler() {\n        _super.apply(this, arguments);\n    }\n    AnimationFrameScheduler.prototype.flush = function (action) {\n        this.active = true;\n        this.scheduled = undefined;\n        var actions = this.actions;\n        var error;\n        var index = -1;\n        var count = actions.length;\n        action = action || actions.shift();\n        do {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        } while (++index < count && (action = actions.shift()));\n        this.active = false;\n        if (error) {\n            while (++index < count && (action = actions.shift())) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AnimationFrameScheduler;\n}(AsyncScheduler));\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n/**\n *\n * Animation Frame Scheduler\n *\n * <span class=\"informal\">Perform task when `window.requestAnimationFrame` would fire</span>\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link async} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * @example <caption>Schedule div height animation</caption>\n * const div = document.querySelector('.some-div');\n *\n * Rx.Scheduler.schedule(function(height) {\n *   div.style.height = height + \"px\";\n *\n *   this.schedule(height + 1);  // `this` references currently executing Action,\n *                               // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see .some-div element growing in height\n *\n *\n * @static true\n * @name animationFrame\n * @owner Scheduler\n */\nexport var animationFrame = new AnimationFrameScheduler(AnimationFrameAction);\n//# sourceMappingURL=animationFrame.js.map","/* tslint:disable:no-unused-variable */\n// Subject imported before Observable to bypass circular dependency issue since\n// Subject extends Observable and Observable references Subject in it's\n// definition\nexport { Subject, AnonymousSubject } from './Subject';\n/* tslint:enable:no-unused-variable */\nexport { Observable } from './Observable';\nimport './add/observable/bindCallback';\nimport './add/observable/bindNodeCallback';\nimport './add/observable/combineLatest';\nimport './add/observable/concat';\nimport './add/observable/defer';\nimport './add/observable/empty';\nimport './add/observable/forkJoin';\nimport './add/observable/from';\nimport './add/observable/fromEvent';\nimport './add/observable/fromEventPattern';\nimport './add/observable/fromPromise';\nimport './add/observable/generate';\nimport './add/observable/if';\nimport './add/observable/interval';\nimport './add/observable/merge';\nimport './add/observable/race';\nimport './add/observable/never';\nimport './add/observable/of';\nimport './add/observable/onErrorResumeNext';\nimport './add/observable/pairs';\nimport './add/observable/range';\nimport './add/observable/using';\nimport './add/observable/throw';\nimport './add/observable/timer';\nimport './add/observable/zip';\nimport './add/observable/dom/ajax';\nimport './add/observable/dom/webSocket';\nimport './add/operator/buffer';\nimport './add/operator/bufferCount';\nimport './add/operator/bufferTime';\nimport './add/operator/bufferToggle';\nimport './add/operator/bufferWhen';\nimport './add/operator/catch';\nimport './add/operator/combineAll';\nimport './add/operator/combineLatest';\nimport './add/operator/concat';\nimport './add/operator/concatAll';\nimport './add/operator/concatMap';\nimport './add/operator/concatMapTo';\nimport './add/operator/count';\nimport './add/operator/dematerialize';\nimport './add/operator/debounce';\nimport './add/operator/debounceTime';\nimport './add/operator/defaultIfEmpty';\nimport './add/operator/delay';\nimport './add/operator/delayWhen';\nimport './add/operator/distinct';\nimport './add/operator/distinctUntilChanged';\nimport './add/operator/distinctUntilKeyChanged';\nimport './add/operator/do';\nimport './add/operator/exhaust';\nimport './add/operator/exhaustMap';\nimport './add/operator/expand';\nimport './add/operator/elementAt';\nimport './add/operator/filter';\nimport './add/operator/finally';\nimport './add/operator/find';\nimport './add/operator/findIndex';\nimport './add/operator/first';\nimport './add/operator/groupBy';\nimport './add/operator/ignoreElements';\nimport './add/operator/isEmpty';\nimport './add/operator/audit';\nimport './add/operator/auditTime';\nimport './add/operator/last';\nimport './add/operator/let';\nimport './add/operator/every';\nimport './add/operator/map';\nimport './add/operator/mapTo';\nimport './add/operator/materialize';\nimport './add/operator/max';\nimport './add/operator/merge';\nimport './add/operator/mergeAll';\nimport './add/operator/mergeMap';\nimport './add/operator/mergeMapTo';\nimport './add/operator/mergeScan';\nimport './add/operator/min';\nimport './add/operator/multicast';\nimport './add/operator/observeOn';\nimport './add/operator/onErrorResumeNext';\nimport './add/operator/pairwise';\nimport './add/operator/partition';\nimport './add/operator/pluck';\nimport './add/operator/publish';\nimport './add/operator/publishBehavior';\nimport './add/operator/publishReplay';\nimport './add/operator/publishLast';\nimport './add/operator/race';\nimport './add/operator/reduce';\nimport './add/operator/repeat';\nimport './add/operator/repeatWhen';\nimport './add/operator/retry';\nimport './add/operator/retryWhen';\nimport './add/operator/sample';\nimport './add/operator/sampleTime';\nimport './add/operator/scan';\nimport './add/operator/sequenceEqual';\nimport './add/operator/share';\nimport './add/operator/shareReplay';\nimport './add/operator/single';\nimport './add/operator/skip';\nimport './add/operator/skipLast';\nimport './add/operator/skipUntil';\nimport './add/operator/skipWhile';\nimport './add/operator/startWith';\nimport './add/operator/subscribeOn';\nimport './add/operator/switch';\nimport './add/operator/switchMap';\nimport './add/operator/switchMapTo';\nimport './add/operator/take';\nimport './add/operator/takeLast';\nimport './add/operator/takeUntil';\nimport './add/operator/takeWhile';\nimport './add/operator/throttle';\nimport './add/operator/throttleTime';\nimport './add/operator/timeInterval';\nimport './add/operator/timeout';\nimport './add/operator/timeoutWith';\nimport './add/operator/timestamp';\nimport './add/operator/toArray';\nimport './add/operator/toPromise';\nimport './add/operator/window';\nimport './add/operator/windowCount';\nimport './add/operator/windowTime';\nimport './add/operator/windowToggle';\nimport './add/operator/windowWhen';\nimport './add/operator/withLatestFrom';\nimport './add/operator/zip';\nimport './add/operator/zipAll';\n/* tslint:disable:no-unused-variable */\nexport { Subscription } from './Subscription';\nexport { Subscriber } from './Subscriber';\nexport { AsyncSubject } from './AsyncSubject';\nexport { ReplaySubject } from './ReplaySubject';\nexport { BehaviorSubject } from './BehaviorSubject';\nexport { ConnectableObservable } from './observable/ConnectableObservable';\nexport { Notification } from './Notification';\nexport { EmptyError } from './util/EmptyError';\nexport { ArgumentOutOfRangeError } from './util/ArgumentOutOfRangeError';\nexport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nexport { TimeoutError } from './util/TimeoutError';\nexport { UnsubscriptionError } from './util/UnsubscriptionError';\nexport { TimeInterval } from './operator/timeInterval';\nexport { Timestamp } from './operators/timestamp';\nexport { TestScheduler } from './testing/TestScheduler';\nexport { VirtualTimeScheduler } from './scheduler/VirtualTimeScheduler';\nexport { AjaxResponse, AjaxError, AjaxTimeoutError } from './observable/dom/AjaxObservable';\nexport { pipe } from './util/pipe';\nimport { asap } from './scheduler/asap';\nimport { async } from './scheduler/async';\nimport { queue } from './scheduler/queue';\nimport { animationFrame } from './scheduler/animationFrame';\nimport { rxSubscriber } from './symbol/rxSubscriber';\nimport { iterator } from './symbol/iterator';\nimport { observable } from './symbol/observable';\nimport * as _operators from './operators';\nexport var operators = _operators;\n/* tslint:enable:no-unused-variable */\n/**\n * @typedef {Object} Rx.Scheduler\n * @property {Scheduler} queue Schedules on a queue in the current event frame\n * (trampoline scheduler). Use this for iteration operations.\n * @property {Scheduler} asap Schedules on the micro task queue, which uses the\n * fastest transport mechanism available, either Node.js' `process.nextTick()`\n * or Web Worker MessageChannel or setTimeout or others. Use this for\n * asynchronous conversions.\n * @property {Scheduler} async Schedules work with `setInterval`. Use this for\n * time-based operations.\n * @property {Scheduler} animationFrame Schedules work with `requestAnimationFrame`.\n * Use this for synchronizing with the platform's painting\n */\nvar Scheduler = {\n    asap: asap,\n    queue: queue,\n    animationFrame: animationFrame,\n    async: async\n};\n/**\n * @typedef {Object} Rx.Symbol\n * @property {Symbol|string} rxSubscriber A symbol to use as a property name to\n * retrieve an \"Rx safe\" Observer from an object. \"Rx safety\" can be defined as\n * an object that has all of the traits of an Rx Subscriber, including the\n * ability to add and remove subscriptions to the subscription chain and\n * guarantees involving event triggering (can't \"next\" after unsubscription,\n * etc).\n * @property {Symbol|string} observable A symbol to use as a property name to\n * retrieve an Observable as defined by the [ECMAScript \"Observable\" spec](https://github.com/zenparsing/es-observable).\n * @property {Symbol|string} iterator The ES6 symbol to use as a property name\n * to retrieve an iterator from an object.\n */\nvar Symbol = {\n    rxSubscriber: rxSubscriber,\n    observable: observable,\n    iterator: iterator\n};\nexport { Scheduler, Symbol };\n//# sourceMappingURL=Rx.js.map"],"names":["Symbol","root","emptyObserver","rxSubscriberSymbol","observable","Symbol_observable","staticBindCallback","dispatchError","dispatchNext","staticBindNodeCallback","Symbol_iterator","iterator","combineLatest","combineLatestStatic","concatStatic","staticDefer","empty","staticEmpty","staticForkJoin","staticFrom","staticFromEvent","staticFromEventPattern","staticFromPromise","staticGenerate","Scheduler","staticInterval","mergeStatic","staticRace","staticNever","staticOf","onErrorResumeNext","staticOnErrorResumeNext","dispatch","staticPairs","staticRange","staticUsing","staticTimer","zip","zipStatic","staticAjax","staticWebSocket","buffer","higherOrder","bufferCount","bufferTime","bufferToggle","bufferWhen","combineAll","concat","concatAll","concatMap","higherOrderConcatMap","concatMapTo","count","dematerialize","debounce","debounceTime","defaultIfEmpty","delay","delayWhen","distinct","distinctUntilChanged","distinctUntilKeyChanged","exhaust","exhaustMap","expand","elementAt","filter","higherOrderFilter","find","findIndex","first","groupBy","ignoreElements","isEmpty","audit","auditTime","last","every","map","higherOrderMap","mapTo","materialize","max","higherOrderMax","merge","mergeAll","mergeMap","higherOrderMergeMap","mergeMapTo","mergeScan","min","higherOrderMin","RefCountOperator","RefCountSubscriber","higherOrderRefCount","refCount","multicast","observeOn","pairwise","partition","pluck","publish","publishBehavior","publishReplay","publishLast","race","raceStatic","reduce","higherOrderReduce","repeat","repeatWhen","retry","retryWhen","sample","sampleTime","scan","higherOrderScan","sequenceEqual","share","shareReplay","single","skip","skipLast","skipUntil","skipWhile","startWith","subscribeOn","switchMap","higherOrderSwitchMap","switchMapTo","take","takeLast","higherOrderTakeLast","takeUntil","takeWhile","throttle","throttleTime","timeInterval","timeout","timeoutWith","timestamp","toArray","window","windowCount","windowTime","windowToggle","windowWhen","WindowOperator","WindowSubscriber","withLatestFrom","zipAll"],"mappings":"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,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;gBACpD,MAAM;aACT;SACJ,QAAQ,EAAE,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE;QACxD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,KAAK,EAAE;YACP,OAAO,EAAE,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE;gBAClD,MAAM,CAAC,WAAW,EAAE,CAAC;aACxB;YACD,MAAM,KAAK,CAAC;SACf;KACJ,CAAC;IACF,OAAO,uBAAuB,CAAC;CAClC,CAAC,cAAc,CAAC,CAAC,CAAC;;AC1BnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,AAAO,IAAI,cAAc,GAAG,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,CAAC,AAC9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCA;;;;AAIA,AACA,AAEA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAEA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;AAelC,IAAI,SAAS,GAAG;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,cAAc;IAC9B,KAAK,EAAE,KAAK;CACf,CAAC;;;;;;;;;;;;;;AAcF,IAAID,QAAM,GAAG;IACT,YAAY,EAAE,YAAY;IAC1B,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,QAAQ;CACrB,CAAC,AACF,AAA6B,AAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

Spamworldpro Mini