text: /*
   *
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   *
  */
  
  /*jshint -W079 */
  /*jshint -W020 */
  
  var require,
      define;
  
  (function () {
      var modules = {},
      // Stack of moduleIds currently being built.
          requireStack = [],
      // Map of module ID -> index into requireStack of modules currently being built.
          inProgressModules = {},
          SEPARATOR = ".";
  
  
  
      function build(module) {
          var factory = module.factory,
              localRequire = function (id) {
                  var resultantId = id;
                  //Its a relative path, so lop off the last portion and add the id (minus "./")
                  if (id.charAt(0) === ".") {
                      resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2);
                  }
                  return require(resultantId);
              };
          module.exports = {};
          delete module.factory;
          factory(localRequire, module.exports, module);
          return module.exports;
      }
  
      require = function (id) {
          if (!modules[id]) {
              throw "module " + id + " not found";
          } else if (id in inProgressModules) {
              var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;
              throw "Cycle in require graph: " + cycle;
          }
          if (modules[id].factory) {
              try {
                  inProgressModules[id] = requireStack.length;
                  requireStack.push(id);
                  return build(modules[id]);
              } finally {
                  delete inProgressModules[id];
                  requireStack.pop();
              }
          }
          return modules[id].exports;
      };
  
      define = function (id, factory) {
          if (modules[id]) {
              throw "module " + id + " already defined";
          }
  
          modules[id] = {
              id: id,
              factory: factory
          };
      };
  
      define.remove = function (id) {
          delete modules[id];
      };
  
      define.moduleMap = modules;
  })();
  
  //Export for use in node
  if (typeof module === "object" && typeof require === "function") {
      module.exports.require = require;
      module.exports.define = define;
  }
  