| var scope = (typeof global !== "undefined" && global) || | 
 |             (typeof self !== "undefined" && self) || | 
 |             window; | 
 | var apply = Function.prototype.apply; | 
 |  | 
 | // DOM APIs, for completeness | 
 |  | 
 | exports.setTimeout = function() { | 
 |   return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout); | 
 | }; | 
 | exports.setInterval = function() { | 
 |   return new Timeout(apply.call(setInterval, scope, arguments), clearInterval); | 
 | }; | 
 | exports.clearTimeout = | 
 | exports.clearInterval = function(timeout) { | 
 |   if (timeout) { | 
 |     timeout.close(); | 
 |   } | 
 | }; | 
 |  | 
 | function Timeout(id, clearFn) { | 
 |   this._id = id; | 
 |   this._clearFn = clearFn; | 
 | } | 
 | Timeout.prototype.unref = Timeout.prototype.ref = function() {}; | 
 | Timeout.prototype.close = function() { | 
 |   this._clearFn.call(scope, this._id); | 
 | }; | 
 |  | 
 | // Does not start the time, just sets up the members needed. | 
 | exports.enroll = function(item, msecs) { | 
 |   clearTimeout(item._idleTimeoutId); | 
 |   item._idleTimeout = msecs; | 
 | }; | 
 |  | 
 | exports.unenroll = function(item) { | 
 |   clearTimeout(item._idleTimeoutId); | 
 |   item._idleTimeout = -1; | 
 | }; | 
 |  | 
 | exports._unrefActive = exports.active = function(item) { | 
 |   clearTimeout(item._idleTimeoutId); | 
 |  | 
 |   var msecs = item._idleTimeout; | 
 |   if (msecs >= 0) { | 
 |     item._idleTimeoutId = setTimeout(function onTimeout() { | 
 |       if (item._onTimeout) | 
 |         item._onTimeout(); | 
 |     }, msecs); | 
 |   } | 
 | }; | 
 |  | 
 | // setimmediate attaches itself to the global object | 
 | require("setimmediate"); | 
 | // On some exotic environments, it's not clear which object `setimmediate` was | 
 | // able to install onto.  Search each possibility in the same order as the | 
 | // `setimmediate` library. | 
 | exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) || | 
 |                        (typeof global !== "undefined" && global.setImmediate) || | 
 |                        (this && this.setImmediate); | 
 | exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) || | 
 |                          (typeof global !== "undefined" && global.clearImmediate) || | 
 |                          (this && this.clearImmediate); |