text:
var UglifyJS = require('uglify-js');
var CleanCSS = require('clean-css');
var fs = require('fs');

nowDate = new Date();
nowDateStr = nowDate.toISOString().slice(0,10).replace(/-/g,"");

// compress js files function
function compressjs(filename, filelist){
	console.log('Now compress index page js files to ' + filename + ' ...')
	var result = UglifyJS.minify(filelist, {
		mangle: true,
		compress: {
			sequences: true,
			dead_code: true,
			conditionals: true,
			booleans: true,
			unused: true,
			if_return: true,
			join_vars: true,
			drop_console: true
		},
	});

	fs.writeFileSync('static/assets/' + filename, result.code);
	console.log('Index page js files compress succeed. You can find it at "static/assets".\n');
}

// compress css files function
function compresscss(filename, filelist) {
	console.log('Now compress other pages css files to ' + filename + ' ...')
	var result = new CleanCSS().minify(filelist);
	var output = new CleanCSS({
	  	level: {
			1: {
		   		transform: function (propertyName, propertyValue) {
		        	if (propertyName == 'src' && propertyValue.indexOf('node_modules/bootstrap/dist/') > -1) {
		          		return propertyValue.replace('node_modules/bootstrap/dist/', '');
		        	}
		        	if (propertyName == 'src' && propertyValue.indexOf('node_modules/components-font-awesome/') > -1) {
		          		return propertyValue.replace('node_modules/components-font-awesome/', '');
		        	}
		        	if (propertyName == 'src' && propertyValue.indexOf('node_modules/font-mfizz/dist/') > -1) {
		          		return propertyValue.replace('node_modules/font-mfizz/dist/', '');
		        	}
		        	if (propertyName == 'background' && propertyValue.indexOf('static/img/') > -1) {
		          		return propertyValue.replace('static/', '');
		        	}
		        	if (propertyName == 'background-image' && propertyValue.indexOf('static/img/') > -1) {
		          		return propertyValue.replace('static/', '');
		        	}
		      	}
		   	}
	  	}
	}).minify(result.styles);

	fs.writeFileSync('static/assets/' + filename, output.styles);
	console.log('Blog page css files compress succeed. You can find it at "static/assets".\n');
}

// compress js files of 404 page
fofJsFilename = 'fof-' + nowDateStr + '.min.js'
fofJsFileList = [
	'node_modules/jquery/dist/jquery.js',
	'node_modules/bootstrap/dist/js/bootstrap.js',
	'node_modules/pace-progress/pace.js'
	]
compressjs(fofJsFilename, fofJsFileList)

// compress css files of 404 page
fofCSSFilename = 'fof-' + nowDateStr + '.min.css'
fofCSSFilelist = [
	'node_modules/normalize.css/normalize.css',
	'node_modules/bootstrap/dist/css/bootstrap.css',
	'node_modules/components-font-awesome/css/font-awesome.css',
	'node_modules/animate.css/animate.css',
	'static/css/style.css'
	]
compresscss(fofCSSFilename, fofCSSFilelist)

// compress js files of index page
indexJsFilename = 'app-index-' + nowDateStr + '.min.js'
indexJsFileList = [
	'node_modules/jquery/dist/jquery.js',
	'node_modules/bootstrap/dist/js/bootstrap.js',
	'node_modules/pace-progress/pace.js',
	'node_modules/wowjs/dist/wow.js',
	'static/js/scroll.js',
	'static/js/count.js'
	]
compressjs(indexJsFilename, indexJsFileList)

// compress i18next js files
i18JsFilename = 'i18-' + nowDateStr + '.min.js'
i18JsFileList = ['static/js/i18next.min.js', 'static/js/localization.js']
compressjs(i18JsFilename, i18JsFileList)

// compress css files of index page
indexCSSFilename = 'app-index-' + nowDateStr + '.min.css'
indexCSSFilelist = [
	'node_modules/normalize.css/normalize.css',
	'node_modules/bootstrap/dist/css/bootstrap.css',
	'node_modules/animate.css/animate.css',
	'node_modules/components-font-awesome/css/font-awesome.css',
	'node_modules/font-mfizz/dist/font-mfizz.css',
	'static/css/style.css'
	]
compresscss(indexCSSFilename, indexCSSFilelist)

// compress js file of other pages
blogJsFilename = 'app-' + nowDateStr + '.min.js'
blogJsFilelist = [
	'node_modules/jquery/dist/jquery.js',
	'search/js/bootstrap3-typeahead.min.js',
	'node_modules/bootstrap/dist/js/bootstrap.js',
	'node_modules/metismenu/dist/metisMenu.js',
	'node_modules/jquery-slimscroll/jquery.slimscroll.js',
	'node_modules/peity/jquery.peity.js',
	'node_modules/pace-progress/pace.js',
	'node_modules/wowjs/dist/wow.js',
	'static/js/scroll.js',
	'static/js/count.js'
	],
compressjs(blogJsFilename, blogJsFilelist)

// compress jPage js files
jPageJsFilename = 'jPage-' + nowDateStr + '.min.js'
jPageJsFilelist = [
	'static/js/jPages.js',
	'static/js/js.js'
	]
compressjs(jPageJsFilename, jPageJsFilelist)

// compress css files of index page
blogCSSFilename = 'app-' + nowDateStr + '.min.css'
blogCSSFilelist = [
	'node_modules/normalize.css/normalize.css',
	'node_modules/bootstrap/dist/css/bootstrap.css',
	'node_modules/animate.css/animate.css',
	'node_modules/components-font-awesome/css/font-awesome.css',
	'node_modules/font-mfizz/dist/font-mfizz.css',
	'node_modules/gritter/jquery.gritter.css',
	'search/css/cb-search.css',
	'static/css/pygments.css',
	'static/css/style.css'
	]
compresscss(blogCSSFilename, blogCSSFilelist)


text:
/**
 ***********************************************************************************************************************
 * @file  llpcSpirvLowerRayTracingIntrinsics.h
 * @brief LLPC header file: contains declaration of Llpc::SpirvLowerRayTracingIntrinsics
 ***********************************************************************************************************************
 */

#pragma once

#include "llpcSpirvLower.h"
#include "llvm/IR/InstVisitor.h"

namespace Llpc {
// =====================================================================================================================
// Represents the pass of SPIR-V lowering ray tracing intrinsics.
class SpirvLowerRayTracingIntrinsics : public SpirvLower, public llvm::InstVisitor<SpirvLowerRayTracingIntrinsics> {
public:
  SpirvLowerRayTracingIntrinsics() : SpirvLower(ID) {}
  SpirvLowerRayTracingIntrinsics(char &pid) : SpirvLower(pid) {}
  virtual bool runOnModule(llvm::Module &module);

  static char ID; // ID of this pass

protected:
  void createLoadDwordAtAddr(llvm::Function *func, llvm::Type *loadPtrTy);
  void createConvertF32toF16(llvm::Function *func, unsigned roundingMode);

private:
  SpirvLowerRayTracingIntrinsics(const SpirvLowerRayTracingIntrinsics &) = delete;
  SpirvLowerRayTracingIntrinsics &operator=(const SpirvLowerRayTracingIntrinsics &) = delete;

  bool processIntrinsicsFuncion(llvm::Function *func);
};
} // namespace Llpc

redpajama_set_name: RedPajamaGithub


text:
(function() {
  'use strict';
  angular.module('app')
  .factory('Trip', ['$http', '$cacheFactory', '$window', 'Auth',
  function ($http, $cacheFactory, $window, Auth) {

    var currentUser = $window.localStorage.getItem('userId');
    var username = $window.localStorage.getItem('username');
    var cache = $cacheFactory('tripData');
    // var currentTripData;

    var services = {
      createTrip: createTrip,
      cacheTrip: cacheTrip,
      joinTrip: joinTrip,
      getRecentTrip: getRecentTrip,
      hasTrip: hasTrip,
      endTrip: endTrip

    };

    return services;

    function createTrip(trip, callback) {
      $http.post('/trips', {
        id: currentUser,
        name: trip.name,
        code: trip.code
      })
      .then(function (res) {
        // currentTripData = res.data;
        cacheTrip(res.data);
        callback();
      });
    }

    function joinTrip(code, callback) {
      $http.post('/trips/join', {
        id: $window.localStorage.getItem('userId'),
        code: code
      })
      .then(function(res) {
        cacheTrip(res.data);
        callback();
      });
    }

    function cacheTrip (trip) {
      cache.put('_id', trip.id);
      cache.put('creator', trip.creator);
      cache.put('participants', trip.participants);
      cache.put('name', trip.name);
      cache.put('code', trip.code);
      cache.put('expenses', trip.expenses);
      return cache;
    }

    function hasTrip(callback) {
      $http.get('/trips', {
        params: { id: currentUser }
      })
      .then( function (res) {
        cacheTrip(res.data);
        callback(res.data);
      });
    }

    function getRecentTrip(callback) {
      $http.get('/trips/recent', {
        params: {
          id: currentUser,
          username: username
        }
      })
      .then(function(res) {
        // Should return an array of only one trip, so we want to pull it out.
        callback(res.data);
      });
    }

    function endTrip(resultObj, callback) {
      $http.post('/trips/end', resultObj)
      .then(function (res) {
        callback();
      });
    }
  }]);
})();


text:
.. _vSphere API 4.0: ../../vim/version.rst#vimversionversion5

.. _vmodl.DynamicData: ../../vmodl/DynamicData.rst

vim.DistributedVirtualSwitch.UplinkPortPolicy
=============================================
  The base class for uplink port policy.
:extends: vmodl.DynamicData_
:since: `vSphere API 4.0`_

Attributes:


text:
/* Sticky footer styles
-------------------------------------------------- */
html {
  position: relative;
  min-height: 100%;
}
body {
  /* Margin bottom by footer height */
  margin-bottom: 60px;
}
.footer {
  position: fixed;
  bottom: 0;
  width: 100%;
  /* Set the fixed height of the footer here */
  height: 60px;
  background-color: #f5f5f5;
}

.footer2 {
  position: absolute;
  bottom: 0;
  width: 100%;
  /* Set the fixed height of the footer here */
  height: 60px;
  background-color: #f5f5f5;
}

/* Custom page CSS
-------------------------------------------------- */
/* Not required for template or sticky footer method. */

.popover {
	font-size: 12px;
	color: #333;
}

body > .container {
  padding: 60px 15px 0;
}
.container .text-muted {
  margin: 20px 0;
}

.footer > .container {
  padding-right: 15px;
  padding-left: 15px;
}

code {
  font-size: 80%;
}

.dontshow {
    text-align: left;
}

/* MAP CSS
-------------------------------------------------- */

#map {
    position: absolute;
		top: 0;
		left: 0;
		height: 100%;
		width: 100%;
}

.leaflet-control-zoom.leaflet-bar.leaflet-control{
    margin-top: 80px;
}

.leaflet-control-attribution.leaflet-control {
    bottom: 60px;
}

/* DETAIL page CSS
-------------------------------------------------- */

#detail {
    padding: 50px;
}

#detail a {
    color: #fff;
    text-decoration: none;
}

#detail figcaption {
	padding-top: 4px;
}

a.back {
    background-color: #36A184;
    color: #FFF;
    margin-top: 150px;
    padding: 20px;
    width: 150px;
    text-align: center;
    transition: background-color .5s;
}

a.back:hover {
    background-color: #2D8674;
}

div.back {
    margin: 50px 0;
}

/* BOOTSTRAP CSS
-------------------------------------------------- */
.btn-default,
.btn-primary,
.btn-success,
.btn-info,
.btn-warning,
.btn-danger {
  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
}
.btn-default:active,
.btn-primary:active,
.btn-success:active,
.btn-info:active,
.btn-warning:active,
.btn-danger:active,
.btn-default.active,
.btn-primary.active,
.btn-success.active,
.btn-info.active,
.btn-warning.active,
.btn-danger.active {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn:active,
.btn.active {
  background-image: none;
}
.btn-default {
  text-shadow: 0 1px 0 #fff;
  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
  background-image:      -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  background-repeat: repeat-x;
  border-color: #dbdbdb;
  border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus {
  background-color: #e0e0e0;
  background-position: 0 -15px;
}
.btn-default:active,
.btn-default.active {
  background-color: #e0e0e0;
  border-color: #dbdbdb;
}
.btn-default:disabled,
.btn-default[disabled] {
  background-color: #e0e0e0;
  background-image: none;
}
.btn-primary {
  background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
  background-image:      -o-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#2d6ca2));
  background-image:         linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  background-repeat: repeat-x;
  border-color: #2b669a;
}
.btn-primary:hover,
.btn-primary:focus {
  background-color: #2d6ca2;
  background-position: 0 -15px;
}
.btn-primary:active,
.btn-primary.active {
  background-color: #2d6ca2;
  border-color: #2b669a;
}
.btn-primary:disabled,
.btn-primary[disabled] {
  background-color: #2d6ca2;
  background-image: none;
}
.btn-success {
  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
  background-image:      -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  background-repeat: repeat-x;
  border-color: #3e8f3e;
}
.btn-success:hover,
.btn-success:focus {
  background-color: #419641;
  background-position: 0 -15px;
}
.btn-success:active,
.btn-success.active {
  background-color: #419641;
  border-color: #3e8f3e;
}
.btn-success:disabled,
.btn-success[disabled] {
  background-color: #419641;
  background-image: none;
}
.btn-info {
  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
  background-image:      -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  background-repeat: repeat-x;
  border-color: #28a4c9;
}
.btn-info:hover,
.btn-info:focus {
  background-color: #2aabd2;
  background-position: 0 -15px;
}
.btn-info:active,
.btn-info.active {
  background-color: #2aabd2;
  border-color: #28a4c9;
}
.btn-info:disabled,
.btn-info[disabled] {
  background-color: #2aabd2;
  background-image: none;
}
.btn-warning {
  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  background-repeat: repeat-x;
  border-color: #e38d13;
}
.btn-warning:hover,
.btn-warning:focus {
  background-color: #eb9316;
  background-position: 0 -15px;
}
.btn-warning:active,
.btn-warning.active {
  background-color: #eb9316;
  border-color: #e38d13;
}
.btn-warning:disabled,
.btn-warning[disabled] {
  background-color: #eb9316;
  background-image: none;
}
.btn-danger {
  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
  background-image:      -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  background-repeat: repeat-x;
  border-color: #b92c28;
}
.btn-danger:hover,
.btn-danger:focus {
  background-color: #c12e2a;
  background-position: 0 -15px;
}
.btn-danger:active,
.btn-danger.active {
  background-color: #c12e2a;
  border-color: #b92c28;
}
.btn-danger:disabled,
.btn-danger[disabled] {
  background-color: #c12e2a;
  background-image: none;
}
.thumbnail,
.img-thumbnail {
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  background-color: #e8e8e8;
  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
  background-repeat: repeat-x;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  background-color: #357ebd;
  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
  background-image:      -o-linear-gradient(top, #428bca 0%, #357ebd 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#357ebd));
  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
  background-repeat: repeat-x;
}
.navbar-default {
  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
  background-image:      -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  background-repeat: repeat-x;
  border-radius: 4px;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
}
.navbar-default .navbar-nav > .active > a {
  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
  background-image:      -o-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f3f3f3));
  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
  background-repeat: repeat-x;
  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
}
.navbar-brand,
.navbar-nav > li > a {
  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
}
.navbar-inverse {
  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
  background-image:      -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  background-repeat: repeat-x;
}
.navbar-inverse .navbar-nav > .active > a {
  background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
  background-image:      -o-linear-gradient(top, #222 0%, #282828 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#222), to(#282828));
  background-image:         linear-gradient(to bottom, #222 0%, #282828 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
  background-repeat: repeat-x;
  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
}
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a {
  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
}
.navbar-static-top,
.navbar-fixed-top,
.navbar-fixed-bottom {
  border-radius: 0;
}
.alert {
  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
}
.alert-success {
  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
  background-image:      -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
  background-repeat: repeat-x;
  border-color: #b2dba1;
}
.alert-info {
  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
  background-image:      -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
  background-repeat: repeat-x;
  border-color: #9acfea;
}
.alert-warning {
  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
  background-repeat: repeat-x;
  border-color: #f5e79e;
}
.alert-danger {
  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
  background-image:      -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
  background-repeat: repeat-x;
  border-color: #dca7a7;
}
.progress {
  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
  background-image:      -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
  background-repeat: repeat-x;
}
.progress-bar {
  background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
  background-image:      -o-linear-gradient(top, #428bca 0%, #3071a9 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#3071a9));
  background-image:         linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
  background-repeat: repeat-x;
}
.progress-bar-success {
  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
  background-image:      -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
  background-repeat: repeat-x;
}
.progress-bar-info {
  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
  background-image:      -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
  background-repeat: repeat-x;
}
.progress-bar-warning {
  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
  background-repeat: repeat-x;
}
.progress-bar-danger {
  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
  background-image:      -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
  background-repeat: repeat-x;
}
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.list-group {
  border-radius: 4px;
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  text-shadow: 0 -1px 0 #3071a9;
  background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
  background-image:      -o-linear-gradient(top, #428bca 0%, #3278b3 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#3278b3));
  background-image:         linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
  background-repeat: repeat-x;
  border-color: #3278b3;
}
.panel {
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
.panel-default > .panel-heading {
  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
  background-repeat: repeat-x;
}
.panel-primary > .panel-heading {
  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
  background-image:      -o-linear-gradient(top, #428bca 0%, #357ebd 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#357ebd));
  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
  background-repeat: repeat-x;
}
.panel-success > .panel-heading {
  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
  background-image:      -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
  background-repeat: repeat-x;
}
.panel-info > .panel-heading {
  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
  background-image:      -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
  background-repeat: repeat-x;
}
.panel-warning > .panel-heading {
  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
  background-repeat: repeat-x;
}
.panel-danger > .panel-heading {
  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
  background-image:      -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
  background-repeat: repeat-x;
}
.well {
  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
  background-image:      -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
  background-repeat: repeat-x;
  border-color: #dcdcdc;
  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
}
/*# sourceMappingURL=bootstrap-theme.css.map */


text:
class RscText;
class RscTitle;
class RscEdit;
class RscButtonMenu;
class RscCombo;

class fpa_messageui_sendBoxTitleBase: RscTitle {
    idc = -1;
    style = 0;

    text = "Message some schmuck";
    colorBackground[] = {
        "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])",
        "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])",
        "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])",
        "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])"
    };

    x = FPA_MESSAGEUI_TITLE_X;
    y = FPA_MESSAGEUI_TITLE_Y;
    w = FPA_MESSAGEUI_TOTAL_W;
    h = FPA_MESSAGEUI_ELEMENT_H;
};

class fpa_messageui_sendBoxBGBase: RscText {
    idc = -1;

    colorBackground[] = {0, 0, 0, 0.700000};

    x = FPA_MESSAGEUI_TITLE_X;
    y = FPA_MESSAGEUI_EDITBOX_BG_Y;
    w = FPA_MESSAGEUI_TOTAL_W;
    h = FPA_MESSAGEUI_EDITBOX_BG_H;
};

class fpa_messageui_sendBoxBase: RscEdit {
    idc = -1;
    style = 16;

    autocomplete = "";
    shadow = 0;
    font = "EtelkaMonospacePro";
    sizeEx = "0.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";

    onLoad = "uiNamespace setVariable [""fpa_message_ui_sendBoxCtrl"",(_this select 0)]";
    onUnLoad = "uiNamespace setVariable [""fpa_message_ui_sendBoxCtrl"",nil]";

    onKeyDown = "if ((_this select 1) isEqualTo 28 && !(_this select 2) && !(_this select 3) && !(_this select 4)) then {call fpa_message_ui_fnc_sendMessage;};";

    x = FPA_MESSAGEUI_EDITBOX_X;
    y = FPA_MESSAGEUI_EDITBOX_Y;
    w = FPA_MESSAGEUI_EDITBOX_W;
    h = FPA_MESSAGEUI_EDITBOX_H;
};

class fpa_messageui_sendBoxButtonBase: RscButtonMenu {
    idc = FPA_MESSAGEUI_IDC_SENDBUTTON;

    onLoad = "uiNamespace setVariable [""fpa_message_ui_sendBoxButtonCtrl"",(_this select 0)]; _this call fpa_message_ui_fnc_setSendButtonPosition";
    onUnLoad = "uiNamespace setVariable [""fpa_message_ui_sendBoxButtonCtrl"",nil]";

    text = "Send";
    action = "call fpa_message_ui_fnc_sendMessage";

    x = FPA_MESSAGEUI_TITLE_X;
    y = FPA_MESSAGEUI_SENDBUTTON_Y_2;
    w = FPA_MESSAGEUI_TOTAL_W;
    h = FPA_MESSAGEUI_ELEMENT_H;
};

class fpa_messageui_sendBoxListboxBase: RscCombo {
    idc = -1;

    font = "EtelkaMonospacePro";
    rowHeight = 10;
    /*sizeEx = "0.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";*/

    onLoad = "uiNamespace setVariable [""fpa_message_ui_sendBoxListboxCtrl"",(_this select 0)]; _this call fpa_message_ui_fnc_initListbox";
    onUnLoad = "uiNamespace setVariable [""fpa_message_ui_sendBoxListboxCtrl"",nil]";

    x = FPA_MESSAGEUI_TITLE_X;
    y = FPA_MESSAGEUI_SENDBUTTON_Y;
    w = FPA_MESSAGEUI_TOTAL_W;
    h = FPA_MESSAGEUI_ELEMENT_H;
};


text:
<?php

namespace FrankFoerster\Filter\View\Helper;

use Cake\Routing\Router;
use Cake\Utility\Hash;
use Cake\View\Helper;
use Cake\View\View;
use Cake\View\Helper\HtmlHelper;
use FrankFoerster\Filter\Controller\Component\FilterComponent;

/**
 * FilterHelper
 *
 * @property View $_View
 * @property HtmlHelper $Html
 */
class FilterHelper extends Helper
{
    /**
     * Helpers used by this helper.
     *
     * @var array
     */
    public $helpers = [
        'Html'
    ];

    /**
     * Holds all active filters and their values.
     *
     * @var array
     */
    public $activeFilters = [];

    /**
     * Filter fields registered on the controller.
     *
     * @var array
     */
    public $filterFields = [];

    /**
     * Holds the active sort field (key) and its direction (value).
     *
     * @var array
     */
    public $activeSort = [];

    /**
     * Sort fields registered on the controller.
     *
     * @var array
     */
    public $sortFields = [];

    /**
     * Holds the default sort field (key) and its direction (value).
     *
     * @var array
     */
    public $defaultSort = [];

    /**
     * Holds all pagination params.
     *
     * @var array
     */
    public $paginationParams = [];

    /**
     * Holds additional params that should be passed to the filter url.
     *
     * @var array
     */
    protected $_passParams = [];

    /**
     * Constructor
     *
     * @param View $View The view initializing the Filter helper instance.
     * @param array $config Configuration options passed to the constructor.
     */
    public function __construct(View $View, array $config = [])
    {
        $filterOptions = Hash::get($View->viewVars, 'filter', []);

        foreach ($filterOptions as $key => $val) {
            $this->{$key} = $val;
        }

        parent::__construct($View, $config);
    }

    /**
     * Render a sort link for the given $field and $options, with $name as link text/content.
     *
     * @param string $name
     * @param string $field
     * @param array $options
     * @return string
     */
    public function sortLink($name, $field, $options = [])
    {
        $url = $this->_getSortUrl($field);

        $iClass = 'icon-sortable';
        if (isset($this->activeSort[$field])) {
            $iClass .= '-' . $this->activeSort[$field];
        }

        if (isset($options['icon-theme'])) {
            $iClass .= ' ' . $options['icon-theme'];
            unset($options['icon-theme']);
        }

        $name = '' . $name . '';
        $options['escape'] = false;

        return $this->Html->link($name, $url, $options);
    }

    /**
     * Render the pagination.
     *
     * @param int $maxPageNumbers The maximum number of pages to show in the link list.
     * @param string $itemType The item type that is paginated.
     * @param string $class An optional css class for the pagination.
     * @param string $element The pagination element to render.
     * @param array $passParams Optional params passed to the filter urls.
     * @return string
     */
    public function pagination($maxPageNumbers = 10, $itemType = 'Items', $class = '', $element = 'Filter/pagination', $passParams = [])
    {
        if (empty($this->paginationParams)) {
            return '';
        }

        $this->_passParams = array_merge($this->paginationParams['passParams'], $passParams);

        $page = (integer)$this->paginationParams['page'];
        $pages = (integer)$this->paginationParams['pages'];
        $pagesOnLeft = floor($maxPageNumbers / 2);
        $pagesOnRight = $maxPageNumbers - $pagesOnLeft - 1;
        $minPage = $page - $pagesOnLeft;
        $maxPage = $page + $pagesOnRight;
        $firstUrl = false;
        $prevUrl = false;
        $pageLinks = [];
        $nextUrl = false;
        $lastUrl = false;

        if ($page > 1) {
            $firstUrl = $this->_getPaginatedUrl(1);
            $prevUrl = $this->_getPaginatedUrl($page - 1);
        }
        if ($minPage < 1) {
            $minPage = 1;
            $maxPage = $maxPageNumbers;
        }
        if ($maxPage > $pages) {
            $maxPage = $pages;
            $minPage = $maxPage + 1 - $maxPageNumbers;
        }
        if ($minPage < 1) {
            $minPage = 1;
        }
        foreach (range($minPage, $maxPage) as $p) {
            $link = [
                'page' => (int)$p,
                'url' => $this->_getPaginatedUrl($p),
                'active' => ((int)$p === $page)
            ];
            $pageLinks[] = $link;
        }
        if ($page < $pages) {
            $nextUrl = $this->_getPaginatedUrl($page + 1);
            $lastUrl = $this->_getPaginatedUrl($pages);
        }
        return $this->_View->element($element, [
            'total' => $this->paginationParams['total'],
            'itemType' => $itemType,
            'first' => $firstUrl,
            'prev' => $prevUrl,
            'pages' => $pageLinks,
            'next' => $nextUrl,
            'last' => $lastUrl,
            'class' => $class,
            'currentPage' => $page,
            'baseUrl' => Router::url($this->_getFilterUrl(false)),
            'from' => $this->paginationParams['from'],
            'to' => $this->paginationParams['to'],
            'nrOfPages' => $pages
        ]);
    }

    /**
     * Try to retrieve a filtered backlink from the session.
     *
     * @param array $url proper route array
     * @return array
     */
    public function getBacklink($url)
    {
        return FilterComponent::getBacklink($url, $this->request);
    }

    /**
     * Get a paginated url for the given $page number.
     *
     * @param int $page
     * @return array
     */
    protected function _getPaginatedUrl($page)
    {
        $url = $this->_getSortUrl();

        if ($page > 1) {
            if (!isset($url['?'])) {
                $url['?'] = [];
            }
            $url['?']['p'] = $page;
        }

        return $url;
    }

    /**
     * Get a sort url for the given $field.
     *
     * @param string $field The field to sort.
     * @return array
     */
    protected function _getSortUrl($field = '')
    {
        $url = $this->_getFilterUrl();

        if ($field === '' && empty($this->activeSort)) {
            return $url;
        }

        if (!isset($url['?'])) {
            $url['?'] = [];
        }

        if ($field !== '') {
            $url['?']['s'] = $field;
            $dir = 'asc';
            if (isset($this->activeSort[$field])) {
                if ($this->activeSort[$field] === 'asc') {
                    $url['?']['d'] = 'desc';
                    $dir = 'desc';
                }
            }
            if ($field === $this->defaultSort['field'] && $dir === $this->defaultSort['dir']) {
                unset($url['?']['s']);
                if (isset($url['?']['d'])) {
                    unset($url['?']['d']);
                }
            }

            return $url;
        }

        if (!empty($this->activeSort)) {
            $field = array_keys($this->activeSort)[0];
            $dir = $this->activeSort[$field];
            if (($field === $this->defaultSort['field'] && $dir !== $this->defaultSort['dir']) ||
                $field !== $this->defaultSort['field']
            ) {
                $url['?']['s'] = $field;
                if ($this->activeSort[$field] !== 'asc') {
                    $url['?']['d'] = 'desc';
                }
            }
        }

        return $url;
    }

    /**
     * Get the filter url.
     *
     * @param boolean $withLimit
     * @return array
     */
    protected function _getFilterUrl($withLimit = true)
    {
        $url = [
            'plugin' => $this->request->getParam('plugin'),
            'controller' => $this->request->getParam('controller'),
            'action' => $this->request->getParam('action'),
        ];

        foreach($this->_passParams as $name => $value) {
            $url[$name] = $value;
        }

        if (!empty($this->request->getParam('sluggedFilter'))) {
            $url['sluggedFilter'] = $this->request->getParam('sluggedFilter');
        };

        $limit = $this->request->getData('l');

        if ($withLimit && !empty($limit) && $limit !== $this->paginationParams['defaultLimit']) {
            $url['?']['l'] = $limit;
        }

        return $url;
    }
}


text:
// Copyright 2008, 2009, 2012 The Apache Software Foundation
//
// Licensed 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.

package org.apache.tapestry5.ioc.annotations;

import java.lang.annotation.*;

/**
 * Annotation used with field injection when the desired injection value is a resource (such as a service id, service
 * configuration, or logger) and not an object obtained from the {@link org.apache.tapestry5.ioc.services.MasterObjectProvider}.
 * <p/>
 * In Tapestry 5.3, the logic for this was changed so that it is treated the same as {@link Inject}. This reflects what people usually want.
 *
 * @deprecated Deprecated in Tapestry 5.3, to be removed in a later release. Use {@link Inject} instead.
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@UseWith(AnnotationUseContext.SERVICE)
public @interface InjectResource
{
}


text:
<!DOCTYPE html>

  <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>A standard container format for classifiers developed in R. — tundraContainer • tundra</title>

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">

<link href="../pkgdown.css" rel="stylesheet">

      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">

      </button>
      tundra

  Reference

  News

A standard container format for classifiers developed in R.

A standard container format for classifiers developed in R.

tundraContainer

Format

An object of class R6ClassGenerator of length 24.

Contents

Format

Developed by Robert Krzyzanowski.

Site built with pkgdown.


text:
<?php

/**
 * A utility class used by ControllerTest.
 *
 * @see org.puremvc.php.core.controller.ControllerTest ControllerTest
 * @see org.puremvc.php.core.controller.ControllerTestCommand ControllerTestCommand
 */
class ControllerTestVO
{
	public $input;
	public $result;
	/**
	 * Constructor
	 */
	function __construct( $testValue )
	{
		$this->input = $testValue;
	}
}

?>


text:
(function($) {

	"use strict";

/* ==========================================================================
   ieViewportFix - fixes viewport problem in IE 10 SnapMode and IE Mobile 10
   ========================================================================== */

	function ieViewportFix() {

		var msViewportStyle = document.createElement("style");

		msViewportStyle.appendChild(
			document.createTextNode(
				"@-ms-viewport { width: device-width; }"
			)
		);

		if (navigator.userAgent.match(/IEMobile\/10\.0/)) {

			msViewportStyle.appendChild(
				document.createTextNode(
					"@-ms-viewport { width: auto !important; }"
				)
			);
		}

		document.getElementsByTagName("head")[0].
			appendChild(msViewportStyle);

	}

/* ==========================================================================
   exists - Check if an element exists
   ========================================================================== */

	function exists(e) {
		return $(e).length > 0;
	}

/* ==========================================================================
   isTouchDevice - return true if it is a touch device
   ========================================================================== */

	function isTouchDevice() {
		return !!('ontouchstart' in window) || ( !! ('onmsgesturechange' in window) && !! window.navigator.maxTouchPoints);
	}

/* ==========================================================================
   setDimensionsPieCharts
   ========================================================================== */

	function setDimensionsPieCharts() {

		$(".pie-chart").each(function() {

			var $t = $(this);
			var n = $t.parent().width();
			var r = $t.attr("data-barSize");

			if (n < r) {
				r = n;
			}

			$t.css("height", r);
			$t.css("width", r);
			$t.css("line-height", r + "px");

			$t.find("i").css({
				"line-height": r + "px",
				"font-size": r / 3
			});

		});

	}

/* ==========================================================================
   animatePieCharts
   ========================================================================== */

	function animatePieCharts() {

		if(typeof $.fn.easyPieChart != 'undefined'){

			$(".pie-chart:in-viewport").each(function() {

				var $t = $(this);
				var n = $t.parent().width();
				var r = $t.attr("data-barSize");

				if (n < r) {
					r = n;
				}

				$t.easyPieChart({
					animate: 1300,
					lineCap: "square",
					lineWidth: $t.attr("data-lineWidth"),
					size: r,
					barColor: $t.attr("data-barColor"),
					trackColor: $t.attr("data-trackColor"),
					scaleColor: "transparent",
					onStep: function(from, to, percent) {
						$(this.el).find('.pie-chart-percent span').text(Math.round(percent));
					}

				});

			});

		}

	}

/* ==========================================================================
   animateMilestones
   ========================================================================== */

	function animateMilestones() {

		$(".milestone:in-viewport").each(function() {

			var $t = $(this);
			var	n = $t.find(".milestone-value").attr("data-stop");
			var	r = parseInt($t.find(".milestone-value").attr("data-speed"));

			if (!$t.hasClass("already-animated")) {
				$t.addClass("already-animated");
				$({
					countNum: $t.find(".milestone-value").text()
				}).animate({
					countNum: n
				}, {
					duration: r,
					easing: "linear",
					step: function() {
						$t.find(".milestone-value").text(Math.floor(this.countNum));
					},
					complete: function() {
						$t.find(".milestone-value").text(this.countNum);
					}
				});
			}

		});

	}

/* ==========================================================================
   animateProgressBars
   ========================================================================== */

	function animateProgressBars() {

		$(".progress-bar .progress-bar-outer:in-viewport").each(function() {

			var $t = $(this);

			if (!$t.hasClass("already-animated")) {
				$t.addClass("already-animated");
				$t.animate({
					width: $t.attr("data-width") + "%"
				}, 2000);
			}

		});

	}

/* ==========================================================================
   enableParallax
   ========================================================================== */

	function enableParallax() {

		if(typeof $.fn.parallax != 'undefined'){

			$('.parallax').each(function() {

				var $t = $(this);
				$t.addClass("parallax-enabled");
				$t.parallax("49%", 0.3, false);

			});

		}

	}

/* ==========================================================================
   handleContactForm - validate and ajax submit contat form
   ========================================================================== */

	function handleContactForm() {

		if(typeof $.fn.validate != 'undefined'){

			$('#contact-form').validate({
				errorClass: 'validation-error', // so that it doesn't conflict with the error class of alert boxes
				rules: {
					name: {
						required: true
					},
					email: {
						required: true,
						email: true
					},
					subject: {
						required: true
					},
					message: {
						required: true
					}
				},
				messages: {
					name: {
						required: "Field is required!"
					},
					email: {
						required: "Field is required!",
						email: "Please enter a valid email address"
					},
					subject: {
						required: "Field is required!"
					},
					message: {
						required: "Field is required!"
					}
				},
				submitHandler: function(form) {
					var result;
					$(form).ajaxSubmit({
						type: "POST",
						data: $(form).serialize(),
						url: "_layout/php/send.php",
						success: function(msg) {

							if (msg == 'OK') {
								result = '
The message has been sent!
';
								$('#contact-form').clearForm();
							} else {
								result = '
' + msg + '
';
							}
							$("#formstatus").html(result);

						},
						error: function() {

							result = '
There was an error sending the message!
';
							$("#formstatus").html(result);

						}
					});
				}
			});

		}

	}

/* ==========================================================================
   handleAccordionsAndToogles
   ========================================================================== */

   function handleAccordionsAndToogles() {

		// accordeon

		$('.accordion a.accordion-item-toggle').click(function (e) {
			var dropDown = $(this).closest('.accordion-item').find('.accordion-item-content');

			$(this).closest('.accordion').find('.accordion-item-content').not(dropDown).slideUp();

			if ($(this).hasClass('active')) {
				$(this).removeClass('active');
			} else {
				$(this).closest('.accordion').find('.accordion-item-toggle.active').removeClass('active');
				$(this).addClass('active');
			}

			dropDown.stop(false, true).slideToggle();

			e.preventDefault();
		});

		// toggle

		$('.toggle a.toggle-item-toggle').click(function (e) {
			var dropDown = $(this).closest('.toggle-item').find('.toggle-item-content');

			if ($(this).hasClass('active')) {
				$(this).removeClass('active');
			} else {
				$(this).addClass('active');
			}

			dropDown.stop(false, true).slideToggle();

			e.preventDefault();
		});

   }

/* ==========================================================================
   handleBackToTop
   ========================================================================== */

   function handleBackToTop() {

		$('#back-to-top').click(function(){
			$('html, body').animate({scrollTop:0}, 'slow');
			return false;
		});

   }

/* ==========================================================================
   showHidebackToTop
   ========================================================================== */

	function showHidebackToTop() {

		if ($(window).scrollTop() > $(window).height() / 2 ) {
			$("#back-to-top").removeClass('gone');
			$("#back-to-top").addClass('visible');
		} else {
			$("#back-to-top").removeClass('visible');
			$("#back-to-top").addClass('gone');
		}

	}

/* ==========================================================================
   handleCVContact
   ========================================================================== */

	function handleCvContact() {

		if ($(window).width() > 767){

			$('.cv-contact').animate({
				left: '-320px'
			});

			$('.cv-contact .cv-contact-toggle').click(function(e){
				e.preventDefault();
				var div = $('.cv-contact');
				if (div.css('left') === '-320px') {
					$('.cv-contact').animate({
						left: '0'
					},300);
					$('#name').focus();
				} else {
					$('.cv-contact').animate({
						left: '-320px'
					},300);
				}
			});

			$('.mail-contact').click(function(e){
				e.preventDefault();
				var div = $('.cv-contact');
				if (div.css('left') === '-320px') {
					$('.cv-contact').animate({
						left: '0'
					},300);
					$('#name').focus();
				} else {
					$('.cv-contact').animate({
						left: '-320px'
					},300);
				}
			});

		}

	}

	function vas() {
		if ($(window).width() > 767){
			$('.vas').mouseover(function(e){
				$(this).html('Value Added Services');
			});
			$('.vas').mouseout(function(e){
				$(this).html('VAS');
			});
		}
	}

/* ==========================================================================
   When document is ready, do
   ========================================================================== */

	$(document).ready(function() {

		ieViewportFix();

		setDimensionsPieCharts();

		animatePieCharts();
		animateMilestones();
		animateProgressBars();

		if (!isTouchDevice()) {
			enableParallax();
		}

		handleContactForm();

		handleAccordionsAndToogles();

		handleBackToTop();
		showHidebackToTop();

		handleCvContact();

		vas();

	});

/* ==========================================================================
   When the window is scrolled, do
   ========================================================================== */

	$(window).scroll(function() {

		animateMilestones();
		animatePieCharts();
		animateProgressBars();

		showHidebackToTop();

	});

/* ==========================================================================
   When the window is resized, do
   ========================================================================== */

	$(window).resize(function() {

	});

})(window.jQuery);

// non jQuery scripts below


text:
<?php

namespace Magento\Sales\Test\Unit\Block\Items;

use \Magento\Sales\Block\Items\AbstractItems;

class AbstractTest extends \PHPUnit_Framework_TestCase
{
    /** @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager  */
    protected $_objectManager;

    protected function setUp()
    {
        $this->_objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
    }

    public function testGetItemRenderer()
    {
        $rendererType = 'some-type';
        $renderer = $this->getMock(
            'Magento\Framework\View\Element\AbstractBlock',
            ['setRenderedBlock'],
            [],
            '',
            false
        );

        $rendererList = $this->getMock('Magento\Framework\View\Element\RendererList', [], [], '', false);
        $rendererList->expects(
            $this->once()
        )->method(
            'getRenderer'
        )->with(
            $rendererType,
            AbstractItems::DEFAULT_TYPE
        )->will(
            $this->returnValue($renderer)
        );

        $layout = $this->getMock(
            'Magento\Framework\View\Layout',
            ['getChildName', 'getBlock'],
            [],
            '',
            false
        );

        $layout->expects($this->once())->method('getChildName')->will($this->returnValue('renderer.list'));

        $layout->expects(
            $this->once()
        )->method(
            'getBlock'
        )->with(
            'renderer.list'
        )->will(
            $this->returnValue($rendererList)
        );

        /** @var $block \Magento\Sales\Block\Items\AbstractItems */
        $block = $this->_objectManager->getObject(
            'Magento\Sales\Block\Items\AbstractItems',
            [
                'context' => $this->_objectManager->getObject(
                    'Magento\Backend\Block\Template\Context',
                    ['layout' => $layout]
                )
            ]
        );

        $renderer->expects($this->once())->method('setRenderedBlock')->with($block);

        $this->assertSame($renderer, $block->getItemRenderer($rendererType));
    }

    /**
     * @expectedException \RuntimeException
     * @expectedExceptionMessage Renderer list for block "" is not defined
     */
    public function testGetItemRendererThrowsExceptionForNonexistentRenderer()
    {
        $layout = $this->getMock(
            'Magento\Framework\View\Layout',
            ['getChildName', 'getBlock'],
            [],
            '',
            false
        );
        $layout->expects($this->once())->method('getChildName')->will($this->returnValue(null));

        /** @var $block \Magento\Sales\Block\Items\AbstractItems */
        $block = $this->_objectManager->getObject(
            'Magento\Sales\Block\Items\AbstractItems',
            [
                'context' => $this->_objectManager->getObject(
                    'Magento\Backend\Block\Template\Context',
                    ['layout' => $layout]
                )
            ]
        );

        $block->getItemRenderer('some-type');
    }
}


text:
using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(ExampleWebApp.Startup))]
namespace ExampleWebApp
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
        }
    }
}


text:
if(!steal.build){
	steal.build = {};
}
steal('steal',
	'steal/build/share',
	'steal/build/js',
	'steal/build/css',
	'steal/build/open',
	function( steal, shareUtil ) {

		/**
		 * @function steal.build.apps
		 * @parent steal.build
		 */
		var apps = steal.build.apps = function( list, buildOptions ) {

			buildOptions = steal.opts(buildOptions || {}, {
				//folder to build to, defaults to the folder the page is in
				to: 1
			});

			// set the compressor globally
			//steal.build.compressor = steal.build.builders.scripts.compressors[options.compressor || "localClosure"]();
			//set defaults
			buildOptions.to = buildOptions.to || "packages/"
			// check if path exists
			var dest = steal.config('root').join(buildOptions.to);

			if(!dest.exists()){
				var dir = dest.dir();
				dest.mkdir();
			}
			buildOptions.depth = buildOptions.depth || Infinity;
			if(buildOptions.depth < 2){
				steal.print("Depth must be 2 or greater. depth=2 means every app loads its production "+
				"file and a single common package shared by all.");
				quit()
			}
			var options = {
				appFiles : [],
				files : {},
				// tells it to only do app file
				multipleOpens: true
			}
			// opens each app and add its dependencies to options
			steal.build.apps.open(list, options, function(options){
				apps.makePackages(options, buildOptions);
			})

		};

		// only add files to files, but recurse through fns
	steal.extend(steal.build.apps, {
		/**
		 * Opens se
		 * @param {Array} appNames
		 * @param {Object} options An object that
		 * has an appFiles array, and a files object.
		 *
		 *     {appFiles : [], files: {}}
		 *
		 * It can also have other properties like:
		 *
		 *   - newPage - open in a new page or do not
		 *
		 * @param {Function} callback(options)
		 */
		open : function(appNames,options, callback){
			options = options || {};
			options.appFiles =  options.appFiles || [];
			options.files = options.files || {};

			var APPS = this,

			i = 0,
			// calls make for each app
			// then calls makePackages once done
			callNext = function(){
				if( i< appNames.length ) {
					i++;
					APPS._open(appNames[i-1],options, callNext );
				} else {
					callback(options);
				}
			};
			callNext();
		},
		// opens one app, adds dependencies
		_open : function(appName, options, callback){
			//= Configure what we are going to load from APP name
			// if we have html, get  the app-name
			var html = 'steal/rhino/blank.html',
				data = {env: 'development'};
			if(appName.indexOf('.html') > 2){
				html = appName;
				appName = null;
			} else {
				appName = steal.id(appName);
				data = {
					startId: appName
				}
			}

			// use last steal to load page
			if(options.newPage === false && options.steal){
				steal.print("  stealing " + ( data.startId ) );
				// move steal back
				var curSteal = window.steal,
					newSteal = window.steal= options.steal;
				// listen to when this is done
				window.steal.one("end", function(rootSteal){

					options.appFiles.push(  apps.addDependencies(rootSteal.dependencies[0], options, appName )  );

					// set back steal
					window.steal = curSteal;
					callback(options, {
						steal : newSteal,
						rootSteal: rootSteal,
						firstSteal: steal.build.open.firstSteal(rootSteal)
					});
				})

				// steal file
				window.steal({id: data.startId});
			} else {
				steal.print("  opening " + ( appName || html) );
				steal.build.open(html, data, function(opener){
					steal.print("  adding dependencies");
					if(options.multipleOpens){
						var firstDependency = opener.rootSteal.dependencies[3]
					} else {
						var firstDependency = opener.rootSteal;
					}
					var appFile = apps.addDependencies(firstDependency, options, appName );
					options.appFiles.push(  appFile  );
					options.steal = opener.steal;
					steal.print(" ")
					callback(options, opener);
				})
			}
		},
		/**
		 * Gets a steal instance and recursively sets up a __files__ object with
		 * __file__ objects for each steal that represents a resource (not a function).
		 *
		 * A __file__ object is a recursive mapping of a steal
		 * instances's options and dependencies.  Different apps have different
		 * steal instances for the same resource.  This _should_ be merging those attributes
		 * and maintaining a collection of the apps the file exists on.
		 *
		 *     {
		 *       // the apps this steal is on
		 *       appNames: [],
		 *       dependencyFileNames: [ "jquery/class/class.js" ],
		 *       packaged: false,
		 *       stealOpts: steal.options
		 *     }
		 *
		 * A __files__ object maps each file's location to a file.
		 *
		 *     {
		 *       "jquery/controller/controller.js" : file1,
		 *       "jquery/class/class.js" : file2
		 *     }
		 *
		 * @param {steal} steel a steal instance
		 * @param {Object} files the files mapping that gets filled out
		 * @param {String} appName the appName
		 * @return {file} the root dependency file for this application
		 */
		addDependencies: function( resource, options, appName ) {
			//print("  "+resource.options.id+":"+appName)
			var id = resource.options.id,
				buildType = resource.options.buildType,
				file = maker(options.files, id || appName, function(){
					//clean and minifify everything right away ...
					var source = '';
					if( id && resource.options.buildType != 'fn' ) {
						// some might not have source yet
						steal.print("  + "+id );

						// convert using steal's root because that might have been configured
						var source = resource.options.text ||  readFile( steal.idToUri( resource.options.id ) );
					}
					resource.options.text = resource.options.text || source

					// this becomes data
					return {
						// todo, might need to merge options
						// what if we should not 'steal' it?
						stealOpts: resource.options,
						appNames: [],
						dependencyFileNames: [],
						packaged: false
					}

				});

			// don't add the same appName more than once
			// don't add a resource to itself
			if(id && appName && file.appNames.indexOf(appName) == -1){
				file.appNames.push(appName);
			}

			resource.needsDependencies.forEach(function(dependency){
				// TODO: check status
				if (dependency && dependency.dependencies &&
					// don't follow functions
				     dependency.options.buildType != 'fn' &&
					 !dependency.options.ignore) {
					file.dependencyFileNames.push(dependency.options.id)

					apps.addDependencies(dependency, options, appName);
				}
			});

			resource.dependencies.forEach(function(dependency){
				// TODO: check status
				if (dependency && dependency.dependencies &&
					// don't follow functions
				     dependency.options.buildType != 'fn' &&
					 !dependency.options.ignore) {
					file.dependencyFileNames.push(dependency.options.id)

					apps.addDependencies(dependency, options, appName);
				}
			});

			return file;
		},

		order: function( options ) {
			var order = 0

			function visit( f ) {
				if ( f.order === undefined ) {
					f.dependencyFileNames.forEach(function(fileName){
						visit( options.files[fileName] )
					})
					f.order = (order++);
				}
			}
			options.appFiles.forEach(function(file){
				visit(file)
			});
		},
		/**
		 * @hide
		 *
		 * Goes through the files, makes a __shared__ array of
		 * __sharedSets__. Each
		 * sharedSet is a collection of __sharings__.  It then
		 * takes the last __sharedSet__, finds the __sharing__
		 * with the largest totalSize, and returns that
		 * __sharing__.
		 *
		 * A __sharing__ is a collection of files that are shared between some
		 * set of applications.  A 2-order sharing might look like:
		 *
		 *     {totalSize: 1231, files: [file1, file2], appNames: ['foo','bar']}
		 *
		 * A sharedSet is collection of sharings that are all shared the
		 * same number of times (order).  For example, a sharedSet might have all
		 * 4-order 'sharings', that is files that are shared between
		 * 4 applications.  A 2 order sharedSet might look like:
		 *
		 *     {
		 *       'foo,bar' : {totalSize: 1231, files: [], appNames: ['foo','bar']}
		 * 	     'bar,car': : {totalSize: 31231, files: [], appNames: ['bar','car']}
		 *     }
		 *
		 * The __shared__ array is an collection of sharedSets ordered by the
		 * order-number (the number of times a file is shared by an application).
		 *
		 * ## How it works
		 *
		 * getMostShared is designed to be called until all files have been
		 * marked packaged.  Thus, it changes the files by marking files
		 * as packaged.
		 *
		 * @param {Object} files - the files object.
		 * @return {sharing} The sharing object:
		 *
		 *     {
		 *       // apps that need this
		 *       appNames : ['cookbook','mxui/grid','mxui/data/list'],
		 *       files : [{file1}, {file2}]
		 *     }
		 */
		getMostShared: function( files ) {

			// create an array of sharedSets
			// A shared set is
			// a collection of
			var shared = []; // count

			// go through each file
			// find the 'most' shared one
			// package that
			for ( var fileName in files ) {

				var file = files[fileName];

				if ( file.packaged ) {
					continue;
				}
				// shared is like:
				// [
				//    1: {
				//       'foo' :
				//    },
				//    2 : {
				//       'foo,bar' : {totalSize: 1231, files: [], appNames: ['foo','bar']}
				//       'bar,car':
				//    }
				//  get an object to represent combinations
				var sharedSet = maker(shared, file.appNames.length, {}),

					// a name for the combo
					appsName = file.appNames.sort().join(),
					// a pack is data for a specific appNames combo
					sharing = maker(sharedSet, appsName, function(){
						return {
							totalSize: 0,
							files: [],
							appNames: file.appNames
						}
					});

				sharing.files.push(file);
				sharing.totalSize += file.stealOpts.text.length;
			}

			if (!shared.length ) {
				return null;
			}
			// get the highest shared number
			var mostShared = shared.pop(),
				mostSize = 0,
				most;

			// go through each app combo, get the one that has
			// the bigest size

			for ( var apps in mostShared ) {
				if ( mostShared[apps].totalSize > mostSize ) {
					most = mostShared[apps];
					mostSize = most.totalSize;
				}
			}
			//mark files as packaged
			most.files.forEach(function(f){
				f.packaged = true;
			});
			// order the files by when they should be included
			most.files = most.files.sort(function( f1, f2 ) {
				return f1.order - f2.order;
			});
			return most;
		},
		/**
		 * Creates packages that can be downloaded.
		 *
		 * Recursively uses getMostShared to pull out
		 * the largest __sharing__.  It
		 * makes a package of the sharing and marks
		 * the apps that need that sharing.
		 *
		 * The apps that need the sharing
		 *
		 * packages are mostly dummy things.
		 *
		 * a production file might steal multiple packages.
		 *
		 * say package A and package B
		 *
		 * say package A has jQuery
		 *
		 * so, the production file has code like:
		 *
		 * steal('jquery')
		 *
		 * It needs to know to not load jQuery
		 *
		 * this is where 'has' comes into place
		 *
		 * steal({id: 'packageA', has: 'jquery'})
		 *
		 * This wires up steal to wait until package A is finished for jQuery.
		 *
		 * So, we need to know all the packages and app needs, and all the things in that package.
		 *
		 * @param {appFiles} appFiles
		 * @param {files} files
		 */
		makePackages: function(options, buildOptions) {

			steal.print("Making packages")

			//add an order number so we can sort them nicely
			apps.order(options);
			// will be set to the biggest group
			var sharing,
				/*
				 * Packages that an app should have
				 * {
				 *   'cookbook' : ['packages/0.js']
				 * }
				 */
				appsPackages = {},
				/*
				 * Files a package has
				 * {
				 *   'packages/0.js' : ['jquery/jquery.js']
				 * }
				 * this is used to mark all of these
				 * things as loading, so steal doesn't try to load them
				 * b/c the package is loading
				 */
				packagesFiles = {};

			// make an array for each appName that will contain the packages
			// it needs to load
			options.appFiles.forEach(function(file){
				appsPackages[file.appNames[0]] = [];
			});

			// remove stealconfig.js temporarily.  It will be added to every production.js
			var stealconfig = {
				stealOpts: {
					text: readFile('stealconfig.js'),
					id: steal.URI("stealconfig.js"),
					buildType: "js"
				},
				appNames: [],
				dependencyFileNames: [],
				packaged: false
			},
				shares = [];

			delete options.files['stealconfig.js'];

			while(sharing = apps.getMostShared(options.files)){
				shares.push(sharing);
			};

			shareUtil.flatten(shares, buildOptions.depth);

			//while there are files left to be packaged, get the most shared and largest package
			shares.forEach(function(sharing){
				steal.print('\npackaging shared by ' + sharing.appNames.join(", "))

				var appsName = sharing.appNames[0],
				//  the name of the file we are making.
				//    If there is only one app it's an app's production.js
				//    If there are multiple apps, it's a package
					packageName = makePackageName(sharing.appNames)

				// if there's multiple apps (it's a package), add this to appsPackages for each app
				if( sharing.appNames.length > 1) {
					sharing.appNames.forEach(function(appName){
						appsPackages[appName].push(packageName+".js") // we might need to do this
						// if there is css
					})
				}

				// add the files to this package
				packagesFiles[packageName+".js"] =[];

				// what we will sent to js.makePackage
				// the files that will actually get packaged
				var filesForPackaging = [];

				sharing.files.forEach(function(file){
					// add the files to the packagesFiles
					packagesFiles[packageName+".js"].push(file.stealOpts.id);

					filesForPackaging.push(file.stealOpts)
					steal.print("  " + file.order + ":" + file.stealOpts.id);
				});

				// create dependencies object
				var dependencies = {};
				// only add dependencies for the 'root' objects
				if( sharing.appNames.length == 1) {

					packagesFiles[packageName+".js"].unshift("stealconfig.js");
					filesForPackaging.unshift(stealconfig.stealOpts);

					// for the packages for this app
					appsPackages[appsName].forEach(function(packageName){
						// add this as a dependency
						dependencies[packageName] = packagesFiles[packageName].slice(0)
					});

				}

				//the source of the package
				var pack = steal.build.js.makePackage(filesForPackaging, dependencies,packageName+ ".css", options.exclude)

				//save the file
				steal.print("saving " + steal.config('root').join(packageName+".js"));
				steal.config('root').join(packageName+".js").save( pack.js );

				if(pack.css){
					steal.print("saving " + steal.config('root').join(packageName+".css"));
					steal.config('root').join(packageName+".css").save( pack.css.code );
				}

			})

		}
	})

	// sets prop on root if it doesn't exist
	// root - the object
	// prop - the property to set some other object as
	// raw - the data you want to set or a function that returns the object
	// cb - a callback that gets called with the object
	var maker = function(root, prop, raw, cb){
		if(!root[prop]){
			root[prop] = ( typeof raw === 'object' ?
				steal.extend({},raw) :
				raw() );
		}
		cb && cb( root[prop] )
		return root[prop];
	}

	var makePackageName = function(appModuleIds){
		if( appModuleIds.length == 1 ){
			// this needs to go in that app's production
			var filename = steal.URI(appModuleIds).filename().replace(/\.js$/,""),
				folder = steal.URI(appModuleIds).dir().filename();

			if( filename == folder ){
				return (appModuleIds[0]+"").replace(/\/[^\/]*$/,"")+"/production"
			} else {
				return (appModuleIds[0]+"").replace(/\.[^\.]*$/,"")+".production"
			}

		} else {
			return appNamesToMake(appModuleIds)
		}
	}
	var appNamesToName = {},
		usedNames = {}
	var appNamesToMake = function(appNames){

		//remove js if it's there
		appNames = appNames.map(function(appName){
			return (appName+"").replace(".js","")
		});
		var expanded = appNames.join('-');
		// check map
		if(appNamesToName[expanded]){
			return appNamesToName[expanded];
		}
		// try with just the last part
		var shortened = appNames.map(function(l){
			return steal.URI(l).filename()
		}).join('-');

		if(!usedNames[shortened]){
			usedNames[shortened] = true;
			return appNamesToName[expanded] = "packages/"+shortened;
		} else {
			return appNamesToName[expanded] = "packages/"+expanded.replace(/\//g,'_') ;
		}
	};
})