packages/optimizely-sdk/lib/core/decision_service/index.js
function DecisionService(options) {
  this.userProfileService = options.userProfileService || null;
  this.logger = options.logger;
  this.forcedVariationMap = {};
}
function DecisionService(options) {
  this.userProfileService = options.userProfileService || null;
  this.logger = options.logger;
  this.forcedVariationMap = {};
}
function DecisionService ( options ) { this . userProfileService = options . userProfileService || null ; this . logger = options . logger ; this . forcedVariationMap = { } ; }
Optimizely's decision service that determines which variation of an experiment the user will be allocated to.

The decision service contains all logic around how a user decision is made. This includes all of the following (in order):
1. Checking experiment status
2. Checking forced bucketing
3. Checking whitelisting
4. Checking user profile service for past bucketing decisions (sticky bucketing)
5. Checking audience targeting
6. Using Murmurhash3 to bucket the user.

@constructor
@param   {Object} options
@param   {Object} options.userProfileService An instance of the user profile service for sticky bucketing.
@param   {Object} options.logger             An instance of a logger to log messages with.
@returns {Object}
Optimizely s decision service that determines which variation of an experiment the user will be allocated to .