text:
import * as nls from 'vs/nls';
import * as path from 'path';
import * as platform from 'vs/base/common/platform';
import { EDITOR_FONT_DEFAULTS, IEditorOptions } from 'vs/editor/common/config/editorOptions';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IWorkspaceConfigurationService } from 'vs/workbench/services/configuration/common/configuration';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { ITerminalConfiguration, ITerminalConfigHelper, ITerminalFont, IShellLaunchConfig, IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY, TERMINAL_CONFIG_SECTION, DEFAULT_LETTER_SPACING, DEFAULT_LINE_HEIGHT, MINIMUM_LETTER_SPACING } from 'vs/workbench/parts/terminal/common/terminal';
import Severity from 'vs/base/common/severity';
import { isFedora, isUbuntu } from 'vs/workbench/parts/terminal/node/terminal';
import { Terminal as XTermTerminal } from 'vscode-xterm';
import { INotificationService } from 'vs/platform/notification/common/notification';

const MINIMUM_FONT_SIZE = 6;
const MAXIMUM_FONT_SIZE = 25;

/**
 * Encapsulates terminal configuration logic, the primary purpose of this file is so that platform
 * specific test cases can be written.
 */
export class TerminalConfigHelper implements ITerminalConfigHelper {
	public panelContainer: HTMLElement;

	private _charMeasureElement: HTMLElement;
	private _lastFontMeasurement: ITerminalFont;
	public config: ITerminalConfiguration;

	public constructor(
		@IConfigurationService private readonly _configurationService: IConfigurationService,
		@IWorkspaceConfigurationService private readonly _workspaceConfigurationService: IWorkspaceConfigurationService,
		@INotificationService private readonly _notificationService: INotificationService,
		@IStorageService private readonly _storageService: IStorageService
	) {
		this._updateConfig();
		this._configurationService.onDidChangeConfiguration(e => {
			if (e.affectsConfiguration(TERMINAL_CONFIG_SECTION)) {
				this._updateConfig();
			}
		});
	}

	private _updateConfig(): void {
		this.config = this._configurationService.getValue<ITerminalConfiguration>(TERMINAL_CONFIG_SECTION);
	}

	public configFontIsMonospace(): boolean {
		this._createCharMeasureElementIfNecessary();
		const fontSize = 15;
		const fontFamily = this.config.fontFamily || this._configurationService.getValue<IEditorOptions>('editor').fontFamily;
		const i_rect = this._getBoundingRectFor('i', fontFamily, fontSize);
		const w_rect = this._getBoundingRectFor('w', fontFamily, fontSize);

		const invalidBounds = !i_rect.width || !w_rect.width;
		if (invalidBounds) {
			// There is no reason to believe the font is not Monospace.
			return true;
		}

		return i_rect.width === w_rect.width;
	}

	private _createCharMeasureElementIfNecessary() {
		// Create charMeasureElement if it hasn't been created or if it was orphaned by its parent
		if (!this._charMeasureElement || !this._charMeasureElement.parentElement) {
			this._charMeasureElement = document.createElement('div');
			this.panelContainer.appendChild(this._charMeasureElement);
		}
	}

	private _getBoundingRectFor(char: string, fontFamily: string, fontSize: number): ClientRect | DOMRect {
		const style = this._charMeasureElement.style;
		style.display = 'inline-block';
		style.fontFamily = fontFamily;
		style.fontSize = fontSize + 'px';
		style.lineHeight = 'normal';
		this._charMeasureElement.innerText = char;
		const rect = this._charMeasureElement.getBoundingClientRect();
		style.display = 'none';

		return rect;
	}

	private _measureFont(fontFamily: string, fontSize: number, letterSpacing: number, lineHeight: number): ITerminalFont {
		this._createCharMeasureElementIfNecessary();

		const rect = this._getBoundingRectFor('X', fontFamily, fontSize);

		// Bounding client rect was invalid, use last font measurement if available.
		if (this._lastFontMeasurement && !rect.width && !rect.height) {
			return this._lastFontMeasurement;
		}

		this._lastFontMeasurement = {
			fontFamily,
			fontSize,
			letterSpacing,
			lineHeight,
			charWidth: rect.width,
			charHeight: Math.ceil(rect.height)
		};
		return this._lastFontMeasurement;
	}

	/**
	 * Gets the font information based on the terminal.integrated.fontFamily
	 * terminal.integrated.fontSize, terminal.integrated.lineHeight configuration properties
	 */
	public getFont(xterm?: XTermTerminal, excludeDimensions?: boolean): ITerminalFont {
		const editorConfig = this._configurationService.getValue<IEditorOptions>('editor');

		let fontFamily = this.config.fontFamily || editorConfig.fontFamily;
		let fontSize = this._toInteger(this.config.fontSize, MINIMUM_FONT_SIZE, MAXIMUM_FONT_SIZE, EDITOR_FONT_DEFAULTS.fontSize);

		// Work around bad font on Fedora/Ubuntu
		if (!this.config.fontFamily) {
			if (isFedora) {
				fontFamily = '\'DejaVu Sans Mono\', monospace';
			}
			if (isUbuntu) {
				fontFamily = '\'Ubuntu Mono\', monospace';

				// Ubuntu mono is somehow smaller, so set fontSize a bit larger to get the same perceived size.
				fontSize = this._toInteger(fontSize + 2, MINIMUM_FONT_SIZE, MAXIMUM_FONT_SIZE, EDITOR_FONT_DEFAULTS.fontSize);
			}
		}

		const letterSpacing = this.config.letterSpacing ? Math.max(Math.floor(this.config.letterSpacing), MINIMUM_LETTER_SPACING) : DEFAULT_LETTER_SPACING;
		const lineHeight = this.config.lineHeight ? Math.max(this.config.lineHeight, 1) : DEFAULT_LINE_HEIGHT;

		if (excludeDimensions) {
			return {
				fontFamily,
				fontSize,
				letterSpacing,
				lineHeight
			};
		}

		// Get the character dimensions from xterm if it's available
		if (xterm) {
			if (xterm._core.charMeasure && xterm._core.charMeasure.width && xterm._core.charMeasure.height) {
				return {
					fontFamily,
					fontSize,
					letterSpacing,
					lineHeight,
					charHeight: xterm._core.charMeasure.height,
					charWidth: xterm._core.charMeasure.width
				};
			}
		}

		// Fall back to measuring the font ourselves
		return this._measureFont(fontFamily, fontSize, letterSpacing, lineHeight);
	}

	public setWorkspaceShellAllowed(isAllowed: boolean): void {
		this._storageService.store(IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY, isAllowed, StorageScope.WORKSPACE);
	}

	public mergeDefaultShellPathAndArgs(shell: IShellLaunchConfig, platformOverride: platform.Platform = platform.platform): void {
		// Check whether there is a workspace setting
		const platformKey = platformOverride === platform.Platform.Windows ? 'windows' : platformOverride === platform.Platform.Mac ? 'osx' : 'linux';
		const shellConfigValue = this._workspaceConfigurationService.inspect<string>(`terminal.integrated.shell.${platformKey}`);
		const shellArgsConfigValue = this._workspaceConfigurationService.inspect<string[]>(`terminal.integrated.shellArgs.${platformKey}`);

		// Check if workspace setting exists and whether it's whitelisted
		let isWorkspaceShellAllowed = false;
		if (shellConfigValue.workspace !== undefined || shellArgsConfigValue.workspace !== undefined) {
			isWorkspaceShellAllowed = this._storageService.getBoolean(IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY, StorageScope.WORKSPACE, undefined);
		}

		// Always allow [] args as it would lead to an odd error message and should not be dangerous
		if (shellConfigValue.workspace === undefined && shellArgsConfigValue.workspace && shellArgsConfigValue.workspace.length === 0) {
			isWorkspaceShellAllowed = true;
		}

		// Check if the value is neither blacklisted (false) or whitelisted (true) and ask for
		// permission
		if (isWorkspaceShellAllowed === undefined) {
			let shellString: string;
			if (shellConfigValue.workspace) {
				shellString = `"${shellConfigValue.workspace}"`;
			}
			let argsString: string;
			if (shellArgsConfigValue.workspace) {
				argsString = `[${shellArgsConfigValue.workspace.map(v => '"' + v + '"').join(', ')}]`;
			}
			// Should not be localized as it's json-like syntax referencing settings keys
			let changeString: string;
			if (shellConfigValue.workspace !== undefined) {
				if (shellArgsConfigValue.workspace !== undefined) {
					changeString = `shell: ${shellString}, shellArgs: ${argsString}`;
				} else {
					changeString = `shell: ${shellString}`;
				}
			} else { // if (shellArgsConfigValue.workspace !== undefined)
				changeString = `shellArgs: ${argsString}`;
			}
			this._notificationService.prompt(Severity.Info, nls.localize('terminal.integrated.allowWorkspaceShell', "Do you allow {0} (defined as a workspace setting) to be launched in the terminal?", changeString),
				[{
					label: nls.localize('allow', "Allow"),
					run: () => this._storageService.store(IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY, true, StorageScope.WORKSPACE)
				},
				{
					label: nls.localize('disallow', "Disallow"),
					run: () => this._storageService.store(IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY, false, StorageScope.WORKSPACE)
				}]
			);
		}

		shell.executable = (isWorkspaceShellAllowed ? shellConfigValue.value : shellConfigValue.user) || shellConfigValue.default;
		shell.args = (isWorkspaceShellAllowed ? shellArgsConfigValue.value : shellArgsConfigValue.user) || shellArgsConfigValue.default;

		// Change Sysnative to System32 if the OS is Windows but NOT WoW64. It's
		// safe to assume that this was used by accident as Sysnative does not
		// exist and will break the terminal in non-WoW64 environments.
		if (platform.isWindows && !process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432')) {
			const sysnativePath = path.join(process.env.windir, 'Sysnative').toLowerCase();
			if (shell.executable.toLowerCase().indexOf(sysnativePath) === 0) {
				shell.executable = path.join(process.env.windir, 'System32', shell.executable.substr(sysnativePath.length));
			}
		}
	}

	private _toInteger(source: any, minimum: number, maximum: number, fallback: number): number {
		let r = parseInt(source, 10);
		if (isNaN(r)) {
			return fallback;
		}
		if (typeof minimum === 'number') {
			r = Math.max(minimum, r);
		}
		if (typeof maximum === 'number') {
			r = Math.min(maximum, r);
		}
		return r;
	}
}


text:
/* Table of Content
==================================================
	#Header
	#Navigation
	#Site Styles
	#Page Styles
	#Media Queries
	#Font-Face
	#Slider */

/* #Header
================================================== */

#header { border-bottom: 1px solid #E3E3E8; margin-bottom: 8px; }
h1 a { text-indent: -9999px; }
#site-title {font-size: 24px; height: 73px; padding-top:4px; color: #5e7071; margin: 10px 0px 5px 0;}
#rmaplogo {height:60px;width:120px;float:left;}
#shortheader{float:left; padding-top:3px; width:150px;}

/* #Navigation
================================================== */

#main-nav { float: right; }
#main-nav ul, #main-nav li { list-style: none; padding: 0; margin: 0; display: inline; }
#main-nav ul li { float: left; position: relative; }
#main-nav ul li a { display: inline-block; padding: 38px 10px 30px 10px; margin: 0px 5px; text-decoration: none; font-size: 14px; border-bottom: 3px solid transparent; }
#main-nav ul li:hover { border-bottom: 3px solid #0000C1 !important; }
.current { font-weight: bold !important; color: #444 !important; border-bottom: 3px solid #0000C1 !important; }

#main-nav ul li ul.dropdown-menu{
       min-width: 155px; /* Set width of the dropdown */
       max-width: 180px; /* Set width of the dropdown */
       background: #d6d6d6;
       display: none;
       position: absolute;
       z-index: 999;
       right: 0;
       top: 92px;
   }

#main-nav ul li:hover ul.dropdown-menu{
       display: block;	/* Display the dropdown */
   }
#main-nav ul li ul.dropdown-menu li {
    display: block;
    margin: 0px;
    padding: 0px 1px;
    width: 100%;
}
#main-nav ul li ul.dropdown-menu a { display: inline-block; padding: 5px 10px 5px 10px; margin: 0 0px; text-decoration: none; font-size: 14px; }
#main-nav ul li ul.dropdown-menu li:hover { border-bottom: 0px !important; background-color:#A8A8A8; width:98%;}

#main-nav ul li .signin-menu {
    width: 192px;
    background: #FFFFFF;
    display: none;
    border: 2px solid #f2f2f2;
    position: absolute;
    z-index: 999;
    right: 0;
    padding: 0px 4px 0px 0px;
    top: 92px;
    text-align: center;
}

#main-nav ul li:hover .signin-menu{
       display: block;	/* Display the dropdown */
   }

#main-nav ul li .signin-menu a { display: inline-block; padding: 3px 0px 0px 6px; margin: 0px;}

#main-nav ul li .logged-in-icon {padding: 0px 5px 0px 0px; float:left;}

.noselect {
	-webkit-touch-callout: none; /* iOS Safari */
	-webkit-user-select: none; /* Safari */
	-khtml-user-select: none; /* Konqueror HTML */
	-moz-user-select: none; /* Firefox */
	-ms-user-select: none; /* Internet Explorer/Edge */
	user-select: none;
}

/* #Site Styles
================================================== */

a, a:visited, .clickableText { text-decoration: none; color: #0000C1; transition: color 0.3s linear; -moz-transition: color 0.3s linear; -webkit-transition: color 0.3s linear; -o-transition: color 0.3s linear; cursor:pointer;}
a:hover, .clickableText:hover { color: #aaccff; }

h1, h2, h3, h4, h5, h6 { font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, sans-serif; color: #003c67; font-weight: bold; overflow-wrap: break-word; word-wrap: break-word; }
h1 { font-size: 24px; line-height: 30px; color: #5e7071; margin: 10px 0px 5px 0;}
h2 { font-size: 18px; line-height: 20px; color: #5e7071; margin: 10px 0 7px 0;}
h3 { font-size: 14px; line-height: 18px; color: #5e7071; }
h4 { font-size: 14px; line-height: 18px; color: #5e7071; }
h5 { font-size: 12px; line-height: 18px; color: #5e7071; }
h6 { font-size: 10px; line-height: 16px; color: #5e7071; }

p { line-height:24px;}

.rounded { background: #003c67; -webkit-border-radius: 100px; -moz-border-radius: 100px; border-radius: 100px; display: inline-block; width: 40px !important; height: 40px; color: white; text-align: center; vertical-align: middle; font-size: 20px; line-height: 40px; margin-right: 5px; }

.overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; -moz-opacity: 0; filter: alpha(opacity=0); -webkit-transition: opacity 180ms ease-in-out; -moz-transition: opacity 180ms ease-in-out; -o-transition: opacity 180ms ease-in-out; transition: opacity 180ms ease-in-out; z-index: 40; }
.overlay.zoom { background: url(../images/overlay-bg.png) no-repeat center center; }
.overlay:hover { opacity: 1; -moz-opacity: 1; filter:alpha(opacity=100); }

.feature-column h4 a { color: #003c67; text-decoration: none; }
.feature-column h4 a:hover { color: #012037; }

.featured-image { position: relative; margin-bottom: 10px; }

.tagline { font-size: 1.7em; padding: 0.8em 0; margin: 1em 0 1em 0; text-align: center; font-style: italic; letter-spacing: 0px; line-height: 1.6em; clear: both; }
.tagline strong { color: #2C88C9; }

section.container { padding: 1.2em 0; }

.recent-posts, .recent-posts h4 { margin-bottom: 20px; }

blockquote.testimonial { position: relative; padding: 20px 46px 20px 50px; border-left: none; display: block; letter-spacing: 0px; }
.sidebar-widget blockquote.testimonial { padding: 0px 0px 20px 0px; }
blockquote.no-after::before, blockquote.no-after::after { content:''; }

blockquote cite { position: absolute; right: 50px; text-align: right; bottom: 0; line-height: 1em; text-transform: uppercase; color: #999; font-style: normal; font-size: 11px; }

blockquote::before, blockquote::after { content: '\201C'; font-size: 100px; position: absolute; top: 0px; left: 0px; line-height: 1em; font-family: Georgia, "Times New Roman", serif; font-style: italic; color: #DDD; padding-right:20px; }

footer {background: #DBFE81; border-top: 1px solid #91CC00; }
#footer-base { background: #000085; font-size: 0.9em; font-style: italic; color: #DBFE81; padding: 0.8em 0; }
#footer-base a { color: #DBFE81; }
#footer-base a:hover { color: #EEE; }

.footer-columns { padding: 20px 0; }
.social a { text-decoration: none; font-size: 1.2em; color: #003c67; }
.social a:hover { color: #2c88c9; }

/* #Page Styles
================================================== */

/* #Media Queries
================================================== */

	/* Smaller than standard 960 (devices and browsers) */
	@media only screen and (max-width: 959px) {}

	/* Tablet Portrait size to standard 960 (devices and browsers) */
	@media only screen and (min-width: 768px) and (max-width: 959px) {}

	/* All Mobile Sizes (devices and browser) */
	@media only screen and (max-width: 767px) {}

	/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
	@media only screen and (min-width: 480px) and (max-width: 767px) {}

	/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
	@media only screen and (max-width: 479px) {}

acronym { border-bottom:1px dotted #ccc; }

.CSSTableGenerator {
	margin:0px;
	padding:0px;
	width:100%;
	border:1px solid #ffffff;

	-moz-border-radius-bottomleft:5px;
	-webkit-border-bottom-left-radius:5px;
	border-bottom-left-radius:5px;

	-moz-border-radius-bottomright:5px;
	-webkit-border-bottom-right-radius:5px;
	border-bottom-right-radius:5px;

	-moz-border-radius-topright:5px;
	-webkit-border-top-right-radius:5px;
	border-top-right-radius:5px;

	-moz-border-radius-topleft:5px;
	-webkit-border-top-left-radius:5px;
	border-top-left-radius:5px;
}.CSSTableGenerator table{
	word-wrap: break-word;
	table-layout: fixed;
    border-collapse: collapse;
    border-spacing: 0;
	width:100%;
	height:100%;
	margin:5px 0px 30px 0px;
	padding:0px;
}.CSSTableGenerator tr:last-child td:last-child {
	-moz-border-radius-bottomright:5px;
	-webkit-border-bottom-right-radius:5px;
	border-bottom-right-radius:5px;
}
.CSSTableGenerator table tr:first-child td:first-child {
	-moz-border-radius-topleft:5px;
	-webkit-border-top-left-radius:5px;
	border-top-left-radius:5px;
}
.CSSTableGenerator table tr:first-child td:last-child {
	-moz-border-radius-topright:5px;
	-webkit-border-top-right-radius:5px;
	border-top-right-radius:5px;
}.CSSTableGenerator tr:last-child td:first-child{
	-moz-border-radius-bottomleft:5px;
	-webkit-border-bottom-left-radius:5px;
	border-bottom-left-radius:5px;
}.CSSTableGenerator tr:hover td{

}
.CSSTableGenerator tr:nth-child(odd){ background-color:#e5e5e5; }
.CSSTableGenerator tr:nth-child(even)    { background-color:#eeeeee; }.CSSTableGenerator td{
	vertical-align:middle;
	border:1px solid #ffffff;
	border-width:0px 1px 1px 0px;
	text-align:left;
	padding:6px;
	font-weight:normal;
	color:#000000;
}.CSSTableGenerator tr:last-child td{
	border-width:0px 1px 0px 0px;
}.CSSTableGenerator tr td:last-child{
	border-width:0px 0px 1px 0px;
}.CSSTableGenerator tr:last-child td:last-child{
	border-width:0px 0px 0px 0px;
}
.CSSTableGenerator tr:first-child td{
		background:-o-linear-gradient(bottom, #9a999b 5%, #9a999b 100%);	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #9a999b), color-stop(1, #9a999b) );
	background:-moz-linear-gradient( center top, #9a999b 5%, #9a999b 100% );
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#9a999b", endColorstr="#9a999b");	background: -o-linear-gradient(top,#9a999b,9a999b);
	background-color:#9a999b;
	border:0px solid #ffffff;
	text-align:left;
	border-width:0px 0px 1px 1px;
	font-size:16px;
	font-family:Arial;
	font-weight:bold;
	color:#ffffff;
}
.CSSTableGenerator tr:first-child:hover td{
	background:-o-linear-gradient(bottom, #9a999b 5%, #9a999b 100%);	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #9a999b), color-stop(1, #9a999b) );
	background:-moz-linear-gradient( center top, #9a999b 5%, #9a999b 100% );
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#9a999b", endColorstr="#9a999b");	background: -o-linear-gradient(top,#9a999b,9a999b);

	background-color:#9a999b;
}
.CSSTableGenerator tr:first-child td:first-child{
	border-width:0px 0px 1px 0px;
}
.CSSTableGenerator tr:first-child td:last-child{
	border-width:0px 0px 1px 1px;
}

.cysmall {
  height: 470px;
  width: 100%;
  position: relative;
  left: 0;
  background-color: #F7F7FF;
  border: 1px solid #ccc;
}

.cybig {
  height: 800px;
  width: 100%;
  position: relative;
  left: 0;
  background-color: #F7F7FF;
  border: 1px solid #ccc;
}

.cywidget {
  height: 100%;
  width: 100%;
  left: 0;
  background-color: #F7F7FF;
  border: 0px;
}

#info {
  color: #c88;
  font-size: 1em;
  position: absolute;
  z-index: -1;
  left: 1em;
  top: 1em;
}

.statusACTIVE {
    color: #91CC00;
    text-align: center;
    border: 1px solid #91CC00;
    padding: 10px;
    font-size: x-large;
    font-weight: bold;
    width: 100%;
    margin-top:25px;
}
.statusINACTIVE {
    color: #CC0017;
    text-align: center;
    border: 1px solid #CC0017;
    padding: 10px;
    font-size: x-large;
    font-weight: bold;
    width: 100%;
    margin-top:25px;
}

.toggle {
	text-decoration: none;
	color: #0000C1;
	display: inline-block;
}
.toggleLiterals {
	text-decoration: none;
	color: #0000C1;
	display: inline-block;
}
.toggleTypes {
	text-decoration: none;
	color: #0000C1;
	display: inline-block;
}

fieldset {
	background-color:white;
    display: block;
    margin-left: 2px;
    margin-right: 2px;
    padding-top: 2em;
    padding-bottom: 2em;
    padding-left: 3em;
    padding-right: 3em;
    border: 2px groove;
}

.boxedsidebar {
    display: block;
	margin-top:10px;
    margin-left: 2px;
    margin-right: 2px;
	margin-bottom:2px;
    padding-top: 2em;
    padding-bottom: 2em;
    padding-left: 1.4em;
    padding-right: 1.4em;
    border: 2px groove;
	text-align:center;
}

p.notice{
    display: block;
    margin-left: 2px;
    margin-right: 2px;
    padding-top: 1.5em;
    padding-bottom: 1.5em;
    padding-left: 1.5em;
    padding-right: 1.5em;
    border: 2px;
	font-size: 15px;
    background-color:#ffe5e5;
    color:#333;
}
.notice strong{
	color:#333;
}

p.greybox{
    display: block;
    margin-left: 2px;
    margin-right: 2px;
    padding-top: 1.5em;
    padding-bottom: 1.5em;
    padding-left: 1.5em;
    padding-right: 1.5em;
    border: 2px;
    background-color:#f0f0f0;
    font-style: italic;
}

.greenbox{
    display: block;
    margin-left: 0px;
    margin-right: 0px;
    padding-top: 1.5em;
    padding-bottom: 1.5em;
    padding-left: 1.5em;
    padding-right: 1.5em;
    border: 2px;
	color:#333;
    background: #d9eda6;
	overflow-wrap: break-word;
	word-wrap: break-word;
	font-size:14px;
	line-height:26px;
}
.greenbox strong{
	color:#444;
}
.greenbox a:link,.greenbox a:active {
	color:#0000C1;
}

.small-grey-text {
    display:block;
    position:relative;
    color:grey;
    font-size:0.75rem;
}

legend {
    font-size:1.4em;
}

#formButtons {
	text-align:right;
}

label{padding-top:10px;}
select {padding: 5px; border: 1px solid #ccc; margin: 5px 0; width:507px;}
input[type=text] {padding: 5px; min-width:300px; max-width:500px;width:100%;border: 1px solid #ccc; margin: 5px 0;}
input[type=checkbox] {padding-left:2px;}
textarea {width:500px;padding: 5px; margin: 5px 0; resize: vertical;}
input[type=text].dateInput {width:100px; display:inline-block;min-width:100px;}
input[readonly]{background-color:#f0f0f0;}

#truncate {
  width: 120px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.validationErrors {
	color:red;
}

.caret {
	display: inline-block;
	width: 0;
	height: 0;
	margin-left: 4px;
	vertical-align: middle;
	border-top: 4px solid #000000;
	border-right: 4px solid transparent;
	border-left: 4px solid transparent;
	content: "";
	opacity: 0.3;
	filter: alpha(opacity=30);
}

.navlinks {
	display:inline-block;
	width:100%;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
}

.navlinks a, .navlinks span{
	margin:3px 4px 2px 0px;
    text-decoration: none;
    padding: 1px 5px 1px 5px;
    background: #93c900;
	color: #ffffff;
	-webkit-box-shadow: 1px 1px 1px #a6a1a6;
	-moz-box-shadow: 1px 1px 1px #a6a1a6;
	box-shadow: 1px 1px 1px #a6a1a6;
	border: solid #72828c 1px;
}

.navlinks a:hover, .navlinks span:hover {
  background: #b0e600;
  color: #ffffff;
  cursor:pointer;
}

.mainPageCounter {
	display:inline-block;
	font-style:italic;
	float:left;
	margin-top:5px;
	overflow-wrap: break-word;
	word-wrap: break-word;
}

.sidebarPageCounter {
	display:inline-block;
	font-style:italic;
	float:left;
	margin-bottom:6px;
	width:100%;
}

.previous {
}

.next {
}

.sidebarPager {
	margin-left:4px;
	float:left;
}
.mainContentPager {
	margin-right:4px;
	float:right;
}

.tab {
	width: 100%;
	display:block;
	padding:0px 0px 3px 0px;
	border-bottom: 1px solid #ccc;
	margin-bottom:5px;
	margin-left:0;
}

.tab .active {
	font-weight:bold;
	color:black;
}

.tab .active:hover {
	color:black;
}

.tablinks {
	display:inline-block;
	color: #0000C1;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
}

.tablinks:hover {
	cursor:pointer;
	color: #aaccff;
}

#tableview {
	display: none;
	padding: 0px;
}

#graphview {
	min-height: 470px;
}

/**link options formatting*/

.loadgraphlink {
	margin:4px 2px 2px 2px;
    text-decoration: none;
    padding: 1px 2px 1px 2px;
    background: #f5f5f5;
	-webkit-box-shadow: 1px 1px 1px #a6a1a6;
	-moz-box-shadow: 1px 1px 1px #a6a1a6;
	box-shadow: 1px 1px 1px #a6a1a6;
	border: solid #72828c 1px;
	font-size:11px;
}

.loadgraphlink:hover {
  background: #e3e3e3;
  color:grey;
}

#loading {
  text-align: center;
}
#loading-image {
  height:125px;
  width:125px;
  z-index: 100;
}

#searchbox {
	width:320px;
	float:left;
	margin-right:10px;"
}

#textnote {
	font-size:small;
	font-style: italic;
}

.lineContinues {
	display:inline-block;
}

.tooltip {
    position: relative;
    display: inline-block;
	vertical-align:super;
	font-size:small;
	color:#0000C1;
}

.tooltip .tooltiptext {
    visibility: hidden;
    width: 170px;
    background-color: #6f6f6f;
    color: #ffffff;
    font-weight: normal;
    font-size: small;
    text-align:left;
    border-radius: 3px;
    padding: 5px;
    position: absolute;
    z-index: 10;
    top: 100%;
    left: 10%;
    margin-left: -85px;
}

.tooltip .tooltiptext a {
	color: #dddddd;
	font-style:italic;
}

.tooltip:hover .tooltiptext {
    visibility: visible;
}

.tooltip .tooltiptext::after {
    content: " ";
    position: absolute;
    bottom: 100%;  /* At the top of the tooltip */
    left: 50%;
    margin-left: -5px;
    border-width: 5px;
    border-style: solid;
    border-color: transparent transparent #6f6f6f transparent;
}

/**search styling**/
.searchResults {
	min-height:450px;
}

.searchResult {
	padding-top:5px;
	margin-bottom:10px;
	border-top:1px solid #ddd;"
}

.searchLink {
	font-size:larger;
}

.searchResult .aggregates{
	font-style: italic;
}

.facets {
	margin:117px 10px 10px ;
	padding:10px 10px 5px 10px;
	background-color:#edecff;
	width:100%;
}

.facets .facet {
	padding-top: 10px;
	padding-bottom:10px;
    padding-left: 15px;
    text-indent: -15px;
}

.facets hr {
	padding:0;
	margin:0;
}

.facets .facet h3 {
	font-size:15px;
	font-weight: bold;
}

.showMore {
	font-color:#555;
	font-size:smaller;
}

.rightOfInput {
	display:inline-block;
	margin-top:3px;
	margin-left: 10px;
}

.includeInactive {
    display: inline-block;
    float: right;
    padding: 4px 4px 0px 4px;
    margin-top: 10px;
    border: 1px solid #aaa;
    background-color: #eee;
    color: #333;
}

.includeInactive p {
    display: inline-block;
    line-height: 11px;
    margin: 0;
    vertical-align: text-top;
}

/*auto-resizeable video*/
.containframe {
    max-width: 560px;
    max-height: 316px;
    padding:0;
    margin:0;

}

.videoframe {
    width: 100%;
    position: relative;
    padding-bottom: 56%;
}
.videoframe iframe {
	border: 2px solid #acacac;
    position: absolute;
    width: 100%;
    height: 100%;
}

.table_btn:hover {
    color: #0000C1;
    background-color: #bfbfbf;
}
.table_btn {
    background-color: #e4e4e4;
    width: 6rem;
    text-align:center;
    border: 1px solid #a2a2a2;
    margin-bottom: 3px;
    display: block;
}

redpajama_set_name: RedPajamaGithub


text:
PureScript experiments with [LeafletJS](http://leafletjs.com/examples/quick-start.html)
See blog post [here](http://odoe.net/blog/purescript-with-leaflet-experiments).

## Building

```
npm install
bower update
npm start
```


text:
package com.hauldata.util.tokenizer;

public class Numeric<Type extends Number> extends Token {

	private String image;
	private Type value;

	public Numeric(boolean leadingWhitespace, String image, Type value) {
		super(leadingWhitespace);
		this.image = image;
		this.value = value;
	}

	@Override
	public String getImage() {
		return image;
	}

	public Type getNumericValue() {
		return value;
	}

	@Override
	public Object getValue() {
		return value;
	}

	@Override
	public String toString() {
		return image;
	}

	@Override
	public int hashCode() {
		return value.hashCode();
	}

	/**
	 * Warning: not a numeric comparison!
	 */
	@Override
	public boolean equals(Object obj) {
		return (obj != null) && (obj instanceof Numeric<?>) && (((Numeric<?>)obj).image.equals(image));
	}
}


text:
<?php

namespace spec\PhpGuard\Plugins\PhpSpec;

use PhpGuard\Application\Console\Application;
use PhpGuard\Application\Container\ContainerInterface;
use PhpGuard\Application\Log\Logger;
use PhpGuard\Application\Util\Locator;
use PhpGuard\Application\Spec\ObjectBehavior;
use PhpGuard\Plugins\PhpSpec\Inspector;
use Prophecy\Argument;

class PhpSpecPluginSpec extends ObjectBehavior
{
    function let(
        ContainerInterface $container,
        Logger $logger,
        Locator $locator,
        Inspector $inspector,
        Application $application
    )
    {
        $container->get('locator')
            ->willReturn($locator)
        ;
        $container->get('phpspec.inspector')
            ->willReturn($inspector)
        ;
        $container->get('ui.application')
            ->willReturn($application)
        ;

        $container->getParameter('filter.tags',Argument::any())
            ->willReturn(array())
        ;
        $container->getParameter('phpspec.suites',Argument::any())
            ->willReturn(array())
        ;

        // initialize default options
        $this->setOptions(array());
        $container->get('logger')
            ->willReturn($logger);

        $this->setContainer($container);
        $this->setLogger($logger);
    }

    function it_is_initializable()
    {
        $this->shouldHaveType('PhpGuard\Plugins\PhpSpec\PhpSpecPlugin');
    }

    function it_should_be_the_PhpSpec_plugin()
    {
        $this->getName()->shouldReturn('phpspec');
        $this->shouldHaveType('PhpGuard\\Application\\Plugin\\Plugin');
    }

    function it_should_set_default_options_properly()
    {
        $this->setOptions(array());

        $options = $this->getOptions();

        $options->shouldHaveKey('run_all_cli');
        $options->shouldHaveKey('cli');
        $options->shouldHaveKey('all_after_pass');
        $options->shouldHaveKey('keep_failed');
        $options->shouldHaveKey('all_on_start');
    }

    function it_should_configure_inspector_when_application_initialized(
        ContainerInterface $container
    )
    {
        $container->setShared('phpspec.inspector',Argument::any())
            ->shouldBeCalled()
        ;
        $this->configure();
    }
}


text:
class StreetsModel : public QAbstractListModel
{
    Q_OBJECT

    Q_PROPERTY(int count READ count NOTIFY countChanged)
    Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)

public:

    enum Roles
    {
        OriginalRole = Qt::UserRole + 1,
        RenamedRole
    };

    StreetsModel(QObject *parent = 0);

    virtual int rowCount(const QModelIndex &parent) const;
    virtual QVariant data(const QModelIndex &index, int role) const;

    int count() const;

    QUrl source() const;
    void setSource(const QUrl arg);

private:

    void parseFile();

signals:

    void countChanged(int value);
    void sourceChanged(const QUrl source);
    void error();

private:
    void addDataToModel(const QString &original, const QString &renamed);

private:

    QList< QHash<int, QString> > m_data;
    QUrl m_source;

};

#endif // STREETSMODEL_H


text:
#ifndef CAFFE_BNLL_LAYER_HPP_
#define CAFFE_BNLL_LAYER_HPP_

#include <vector>

#include "caffe/blob.hpp"
#include "caffe/layer.hpp"
#include "caffe/proto/caffe.pb.h"

#include "caffe/layers/neuron_layer.hpp"

namespace caffe {

/**
 * @brief Computes @f$ y = x + \log(1 + \exp(-x)) @f$ if @f$ x > 0 @f$;
 *        @f$ y = \log(1 + \exp(x)) @f$ otherwise.
 *
 * @param bottom input Blob vector (length 1)
 *   -# @f$ (N \times C \times H \times W) @f$
 *      the inputs @f$ x @f$
 * @param top output Blob vector (length 1)
 *   -# @f$ (N \times C \times H \times W) @f$
 *      the computed outputs @f$
 *      y = \left\{
 *         \begin{array}{ll}
 *            x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\
 *            \log(1 + \exp(x)) & \mbox{otherwise}
 *         \end{array} \right.
 *      @f$
 */
template <typename Dtype>
class BNLLLayer : public NeuronLayer<Dtype> {
 public:
  explicit BNLLLayer(const LayerParameter& param)
      : NeuronLayer<Dtype>(param) {}

  virtual inline const char* type() const { return "BNLL"; }

 protected:
  /// @copydoc BNLLLayer
  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
      const vector<Blob<Dtype>*>& top);
  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
      const vector<Blob<Dtype>*>& top);

  /**
   * @brief Computes the error gradient w.r.t. the BNLL inputs.
   *
   * @param top output Blob vector (length 1), providing the error gradient with
   *      respect to the outputs
   *   -# @f$ (N \times C \times H \times W) @f$
   *      containing error gradients @f$ \frac{\partial E}{\partial y} @f$
   *      with respect to computed outputs @f$ y @f$
   * @param propagate_down see Layer::Backward.
   * @param bottom input Blob vector (length 2)
   *   -# @f$ (N \times C \times H \times W) @f$
   *      the inputs @f$ x @f$; Backward fills their diff with
   *      gradients @f$
   *        \frac{\partial E}{\partial x}
   *      @f$ if propagate_down[0]
   */
  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
      const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
      const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
};

}  // namespace caffe

#endif  // CAFFE_BNLL_LAYER_HPP_


text:
<?php declare(strict_types=1);

namespace Grav\Framework\Relationships;

use ArrayIterator;
use Grav\Framework\Compat\Serializable;
use Grav\Framework\Contracts\Object\IdentifierInterface;
use Grav\Framework\Contracts\Relationships\ToOneRelationshipInterface;
use Grav\Framework\Relationships\Traits\RelationshipTrait;
use function is_callable;

/**
 * Class ToOneRelationship
 *
 * @template T of IdentifierInterface
 * @template P of IdentifierInterface
 * @template-implements ToOneRelationshipInterface<T,P>
 */
class ToOneRelationship implements ToOneRelationshipInterface
{
    /** @template-use RelationshipTrait<T> */
    use RelationshipTrait;
    use Serializable;

    /** @var IdentifierInterface|null */
    protected $identifier = null;

    public function __construct(IdentifierInterface $parent, string $name, array $options, IdentifierInterface $identifier = null)
    {
        $this->parent = $parent;
        $this->name = $name;

        $this->parseOptions($options);
        $this->replaceIdentifier($identifier);

        $this->modified = false;
    }

    /**
     * @return string
     * @phpstan-pure
     */
    public function getCardinality(): string
    {
        return 'to-one';
    }

    /**
     * @return int
     * @phpstan-pure
     */
    public function count(): int
    {
        return $this->identifier ? 1 : 0;
    }

    /**
     * @return object|null
     */
    public function fetch(): ?object
    {
        $identifier = $this->identifier;
        if (is_callable([$identifier, 'getObject'])) {
            $identifier = $identifier->getObject();
        }

        return $identifier;
    }

    /**
     * @param string|null $id
     * @param string|null $type
     * @return bool
     * @phpstan-pure
     */
    public function has(string $id = null, string $type = null): bool
    {
        return $this->getIdentifier($id, $type) !== null;
    }

    /**
     * @param string|null $id
     * @param string|null $type
     * @return IdentifierInterface|null
     * @phpstan-pure
     */
    public function getIdentifier(string $id = null, string $type = null): ?IdentifierInterface
    {
        if ($id && $this->getType() === 'media' && !str_contains($id, '/')) {
            $name = $this->name;
            $id = $this->parent->getType() . '/' . $this->parent->getId() . '/'. $name . '/' . $id;
        }

        $identifier = $this->identifier ?? null;
        if (null === $identifier || ($type && $type !== $identifier->getType()) || ($id && $id !== $identifier->getId())) {
            return null;
        }

        return $identifier;
    }

    /**
     * @param string|null $id
     * @param string|null $type
     * @return T|null
     */
    public function getObject(string $id = null, string $type = null): ?object
    {
        $identifier = $this->getIdentifier($id, $type);
        if ($identifier && is_callable([$identifier, 'getObject'])) {
            $identifier = $identifier->getObject();
        }

        return $identifier;
    }

    /**
     * @param IdentifierInterface $identifier
     * @return bool
     */
    public function addIdentifier(IdentifierInterface $identifier): bool
    {
        $this->identifier = $this->checkIdentifier($identifier);
        $this->modified = true;

        return true;
    }

    /**
     * @param IdentifierInterface|null $identifier
     * @return bool
     */
    public function replaceIdentifier(IdentifierInterface $identifier = null): bool
    {
        if ($identifier === null) {
            $this->identifier = null;
            $this->modified = true;

            return true;
        }

        return $this->addIdentifier($identifier);
    }

    /**
     * @param IdentifierInterface|null $identifier
     * @return bool
     */
    public function removeIdentifier(IdentifierInterface $identifier = null): bool
    {
        if (null === $identifier || $this->has($identifier->getId(), $identifier->getType())) {
            $this->identifier = null;
            $this->modified = true;

            return true;
        }

        return false;
    }

    /**
     * @return iterable<IdentifierInterface>
     * @phpstan-pure
     */
    public function getIterator(): iterable
    {
        return new ArrayIterator((array)$this->identifier);
    }

    /**
     * @return array|null
     */
    public function jsonSerialize(): ?array
    {
        return $this->identifier ? $this->identifier->jsonSerialize() : null;
    }

    /**
     * @return array
     */
    public function __serialize(): array
    {
        return [
            'parent' => $this->parent,
            'name' => $this->name,
            'type' => $this->type,
            'options' => $this->options,
            'modified' => $this->modified,
            'identifier' => $this->identifier,
        ];
    }

    /**
     * @param array $data
     * @return void
     */
    public function __unserialize(array $data): void
    {
        $this->parent = $data['parent'];
        $this->name = $data['name'];
        $this->type = $data['type'];
        $this->options = $data['options'];
        $this->modified = $data['modified'];
        $this->identifier = $data['identifier'];
    }
}


text:
<?php

namespace Smart\CampusBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class BoardType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name',   'text');
        ;
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Smart\CampusBundle\Entity\Board'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'smart_campusbundle_board';
    }
}


text:
package com.sundayliu.android.utility;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class VerifyUtility {
    private static Pattern pattern;
    private static Matcher matcher;
    //Email Pattern
    private static final String EMAIL_PATTERN = ""; // "^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@"
            //+ "[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$";

    /**
     * Validate Email with regular expression
     *
     * @param email
     * @return true for Valid Email and false for Invalid Email
     */
    public static boolean validate(String email) {
        pattern = Pattern.compile(EMAIL_PATTERN);
        matcher = pattern.matcher(email);
        return matcher.matches();

    }
    /**
     * Checks for Null String object
     *
     * @param txt
     * @return true for not null and false for null String object
     */
    public static boolean isNotNull(String txt){
        return txt!=null && txt.trim().length()>0 ? true: false;
    }
}


text:
import os

class PathLike:
    def __fspath__(self):
        return 'NO_DIRECTORY'

path_like = PathLike()
print(os.stat(path_like))


text:
<!DOCTYPE html>

    <meta charset="utf-8">
    <title>MageParams - FAKE - F# Make</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="Steffen Forkmann, Mauricio Scheffer, Colin Bull">

    <link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet">

    <link type="text/css" rel="stylesheet" href="http://fsharp.github.io/FAKE/content/style.css" />

fsharp.org

github page

FAKE - F# Make

MageParams

Needed information to call MAGE

Record Fields

Record Field	Description

            ApplicationFile

            Signature: string

            CertFile

            Signature: string option

            CertHash

            Signature: string option

            CodeBase

            Signature: string option

            FromDirectory

            Signature: string

            IconFile

            Signature: string

            IconPath

            Signature: string

            IncludeProvider

            Signature: bool option

            Install

            Signature: bool option

            Manifest

            Signature: string

            Name

            Signature: string

            Password

            Signature: string option

            Processor

            Signature: MageProcessor

            ProjectFiles

            Signature: seq<string>

            ProviderURL

            Signature: string

            Publisher

            Signature: string option

            SupportURL

            Signature: string option

            TmpCertFile

            Signature: string

            ToolsPath

            Signature: string

            TrustLevel

            Signature: MageTrustLevels option

            UseManifest

            Signature: bool option

            Version

            Signature: string

FAKE - F# Make

Home page

Get FAKE - F# Make via NuGet

Source Code on GitHub

License (Apache 2)

Release Notes

Contributing to FAKE - F# Make

Who is using FAKE?

Ask a question

Tutorials

Getting started

Build script caching

NuGet package restore

Using FxCop in a build

Generating AssemblyInfo

Create NuGet packages

Running specific targets

Running FAKE from command line

Running targets in parallel

Using the F# compiler from FAKE

Creating custom tasks

Soft dependencies

TeamCity integration

Running canopy tests

Octopus Deploy

TypeScript support

Azure WebJobs support

Azure Cloud Services support

FluentMigrator support

Android publisher

File Watcher

WiX Setup Generation

Using Chocolatey

Using Slack

Using SonarQube

Fake.Deploy

Fake.IIS

Reference

API Reference


text:
define(function () {
    return {
        mockTime: function (date) {
            if (date instanceof Date) {
                date = new Date(date);
            }
            spyOn(window, 'Date').and.returnValue(date);
        }
    };
});


text:
- **Issue 354**: Allow `node` user of `akeneo/node:10` image to be given an id other than `1000`

## 2020-02-21

### Bug fix

- **Issue 353**: Fix `akeneo/node:10` build and remove PIM 2.x dedicated images: `akeneo/php:7.1`, `akeneo/fpm:php-7.1` and `akeneo/node:8`.

## 2019-05-10

### Bug fix

- **Issue 282**: Use the CI to build and push the images to the Docker registry.
- **Issue 342**: Fix an issue with "eval" in the PHP image entry points. Cheers [Lärsle](https://github.com/lars85).

## 2019-05-09

### Enhancement

- **Issue 340**: Simplify PHP_XDEBUG_ENABLED condition. Cheers [Lärsle](https://github.com/lars85).

## 2019-04-17

### Enhancement

- **Issue 338**: Remove PHP 5.6 and 7.0 based and `akeneo/apache` deprecated Dockerfiles.

## 2019-02-15

### Enhancement

- **Issue 329**: Add 7.3 images for PHP & PHP-FPM.

## 2019-01-14

### Enhancement

- **Issue 330**: Add new `akeneo/node` 8 and 10 images.

## 2019-01-14

### Enhancement

 - **Issue 334**: Removes unused SOAP PHP extension from 7.2 images, as it's not used by Akeneo 3.x.

## 2018-08-18

### Bug fix

- **Issue 323**: Set timezone to `UTC` and increase `post_max_size` so it is larger than `upload_max_filesize`.

## 2018-02-23

### Enhancement

- **Issue 283**: Add PHP 7.2 for CLI and FPM (no more new Apache + mod_php image).

## 2018-02-13

### Enhancement

- **Issue 283**: Move PHP 7.1 Dockerfiles into their own folder.
- **Issue 288**: Set `error_reporting` to `E_ALL`.
                 Externalize Akeneo specific configuration into `akeneo.ini` PHP configuration file.

## 2018-01-10

### Enhancement

- **Issue 118**: Introduce a testing architecture.

## 2017-10-23

### Bug fix

- **Issue 305**: Revert the removal of "sudo" in command, so the container can still be run by `docker` user.

### Enhancement

- **Issue 303**: Remove user docker on php, fpm and apache-php (all tags).

## 2017-10-10

### Enhancement

- **Issue 297**: Add make to all images.

## 2017-10-09

### Enhancement

- **Pull request 298**: Add PHP LDAP extension in all images. Thanks @jmleroux!

## 2017-08-18

### Enhancements

- **Issue 284**: Move all images tags on master branch.
- **Issue 285**: Enable APC for command line on PHP 7.1.

## 2017-07-17

### Enhancements

- **Issue 265**: Remove `akeneo/akeneo-apache` and `akeneo/akeneo-fpm` images.
                 Remove usage of `gosu` in PHP 5.6 images.
- **Issue 277**: Bring back PHP 7.0 images.

## 2017-06-27

### Enhancement

- **Issue 243**: Update branches `php-7.1` and `master` to `debian:stretch-lite`.

## 2017-06-26

### Enhancement

- **Issue 260**: Move images from namespace `carcel` to `akeneo`.

## 2017-06-24

### Enhancement

- **Issue 254**: Clear folders created by webpack (`web/cache` and `web/dist`) before PIM install.

## 2017-06-19

### Documentation

- **Issue 251**: Fix Akeneo FPM compose file indentation.

## 2017-06-17

### Documentation

- **Issue 224**: Add usage of NodeJS and NPM in the Akeneo FPM compose file.
- **Issue 225**: Update compose file for Akeneo FPM, to be used with MySQL 5.7 and Elasticsearch 5.x (no more MongoDB).
- **Issue 226**: Set composer home folder in compose file and better document composer settings.

### Enhancements

- **Issue 199**: Remove `carcel/akeneo-fpm` from PHP 5.6 and 7.0.
    Remove `carcel/akeneo-apache` from PHP 7.0 and following.
- **Issue 234**: Remove `carcel/nginx` image (official `nginx` image is to be used instead).

## 2017-06-13

### Documentation

- **Issue 132**: Adds CONTRIBUTING.md and GitHub templates (issues and pull requests).

## 2017-06-05

### Enhancement

- **Issue 216**: Fuse `carcel/akeneo` and `carcel/akeneo-behat` into `carcel/akeneo-apache`.

## 2017-05-22

### Enhancement

- **Issue 212**: Add `bcmath` extension to PHP 7.x images

## 2017-05-11

### Bug fix

- **Issue 200**: Fix XDebug activation/deactivation.

## 2017-05-08

### Enhancements

- **Issue 185**: Make the vhosts and nginx servers more generic.
    All base images now expect the web application to be in `/home/docker/application`,
    and Akeneo images in `/home/docker/pim`.
- **Issue 188**: Increase nginx client max body size to 20 MB (like for FPM).

## 2017-04-26

### Enhancement

- **Issue 187**: Add MySQL and MongoDB clients (available for all images).

## 2017-03-04

### Enhancement

- **Issue 179**: Manage "test" environment in the helpers (`pim-cac`, `pim-assets`, `pim-initialize`) of Akeneo images.

## 2017-02-25

### Documentation

- **Issue 160**: Improve the documentation for people who have none or very few knowledge of Docker.

## 2017-02-23

### Bug fix

- **Issue 167**: Set `date.timezone` to `Etc/UTC` instead of `Europe/Paris`.

### Enhancement

- **Issue 168**: Rename asset script into `pim-assets`.

## 2017-02-14

### Enhancement

- **Issue 141**: Make `apache-php` image usable as it is.
    Application is now placed in `/home/docker/symfony` in the containers.

## 2017-02-13

### Bug fixes

- **Issue 154**: Minor fixes in compose examples.
- **Issue 155**: Removes all caches in `akeneo-fpm` image.

## 2017-02-12

### Enhancements

- **Issue 31**: Use `debian:jessie-slim` as base image,
    and perform the same cleaning on documentation after package installation.
- **Issue 66**: Remove npm and grunt from akeneo images
    (use dedicated images for that, like [digitallyseamless](https://hub.docker.com/u/digitallyseamless/) images).
- **Issue 115**: Configure `carcel/fpm` to use port 9001 instead of socket
    and remove images `carcel/akeneo-nginx` and `carcel/akeneo-behat-nginx`.
- **Issue 116**: Remove `carcel/akeneo-behat-fpm` image.
- **Issue 131**: Replace Dotdeb repositories by Sury ones for php-7.0 images.

## 2017-02-05

### Documentation

- **Issue 124**: Complete the documentation and put it on master only.

## 2017-01-21

### Bug fix

- **Issue 125**: Fix wrong path for FPM PID/socket in `carcel/fpm`, for `php-7.1` and `master` branches.

## 2017-01-05

### Enhancement

- **Issue 24**: Add a basic CI on Travis (ensure all images can be built before merge).

## 2016-12-21

### Bug fix

- **Issue 110**: Add missing "user" option in compose files.

### Enhancements

- **Issue 106**: Enhance compose examples and documentation.
- **Issue 108**: Enhance helper commands.

## 2016-12-18

### Bug fix

- **Issue 75**: Allow to properly restart apache container by removing `/var/run/apache2/apache2.pid` in
    `carcel/apache-php` image entry point.

### Enhancements

- **Issue 99**: Deactivate Xdebug by default.
- **Issue 100**: Add a script to easily perform "cache:clear" on Akeneo. Assets are also dumped as symlinks now.

## 2016-12-12

### Enhancements

- **Issue 88**: Allow user to config Xdebug from environment variables.
- **Issue 89**: Introduce `php-7.1` branch containing PHP 7.1 based images.
    PHP 7.1 packages are provided by [Sury](https://packages.sury.org//) repositories. Master is updated to PHP 7.1 too.

## 2016-12-05

### Enhancement

- **Issue 74**: Add a default Xdebug configuration in `carcel/php` image.

## 2016-11-28

### Bug fixes

- **Issue 62**: Improve package install and cleaning.
- **Issue 68**: Update compose documentation.

### Enhancement

- **Issue 66**: Add npm and grunt on akeneo development images (needed to run JavaScript and CSS static analysis).

## 2016-11-21

### Documentation

- Fix some broken links in documentation.

## 2016-11-15:

### Bug fix

- **Issue 35**: Add missing `php7.0-mbstring` package.

## 2016-10-31

### Documentation

- **Issue 53**: Reorganize documentation (minimalist READMEs, all important documentation in `COMPOSE.md`).

## 2016-10-22

### Bug fixes

- **Issue 51**: Fix an issue when running behat tests (add missing environment variable and volume sharing in compose
    examples).
- **Issue 52**: Add `perceptualdiff` package in behat images (required to run Akeneo Enterprise Edition behats).

## 2016-10-15

### Enhancements

- **Issue 22**: Add `carcel/akeneo-fpm` and `carcel/akeneo-behat-fpm` images (based on `carcel/fpm`),
    and `carcel/akeneo-nginx` and `carcel/akeneo-behat-nginx` (based on `carcel/nginx`).
- **Issue 23**: Add `carcel/nginx` image.

### Bug fixes

- **Issue 34**: Fix user declaration in Dockerfiles by placing it at the end.
- **Issue 36**: Raise PHP upload size limit to 20 MB.
- **Issue 37**: Fix Selenium container usage in compose file example.
- **Issue 45**: Fix an issue with composer installation during `carcel/php` image build.

## 2016-10-09

### Enhancements

- **Issue 5**: Add `carcel/fpm` image (extends `carcel/php`). Introduce a new docker compose file example dedicated to FPM.
- **Issue 20**: Split `carcel/apache-php` image to introduce a new `carcel/php` image (the first one extends the second).

## 2016-10-08

### Enhancement

- **Issue 4**: Introduce `php-7.0` branch, containing PHP 7.0 based images.
    PHP 7.0 packages are provided by [Dotdeb](https://www.dotdeb.org/) repositories.
    Master contains the same PHP 7.0 images.
    Original PHP 5.6 images (Debian Jessie native packages) are now in the `php-5.6` branch.
    All files used by dockerfiles are now placed in a `files` subfolder.

## 2016-10-07

### Enhancement

- **Issue 13**: Add images `carcel/akeneo` and `carcel/akeneo-behat`.
    These new images extends the original one, which is now known as `carcel/apache-php` image.
    Each image is in its own subfolder, with its own README. A compose file example was added.

## 2016-10-03

### Enhancement

- Optimize packages installation and cleanup to reduce image size.

## 2016-09-25

### Enhancement

- **Issue 6**: Run only Apache daemon as foreground process. MySQL and MongoDB are removed and to be launched in other containers.

## 2016-08-22

### Enhancement

- **Issue 1**: Add imagemagick and its php extension.

## Initial commit (2016-08-15)

- One dockerfile providing a complete LAMP environment, based on `debian/jessie` image.
    Processes are launched through `supervisord`.


text:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.houjie.studyapk.studymedia.canvas.ActivityMediaCatPicture">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/mediaCatPictureBtn"
        android:text="查看相册"
        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/mediaCatPictureImage"/>
</LinearLayout>


text:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package erp.mod.hrs.form;

import erp.mod.SModConsts;
import erp.mod.hrs.db.SDbMwzType;
import sa.lib.SLibConsts;
import sa.lib.SLibUtils;
import sa.lib.db.SDbRegistry;
import sa.lib.gui.SGuiClient;
import sa.lib.gui.SGuiConsts;
import sa.lib.gui.SGuiUtils;
import sa.lib.gui.SGuiValidation;
import sa.lib.gui.bean.SBeanForm;

/**
 *
 * @author Sergio Flores
 */
public class SFormMwzType extends SBeanForm {

    private SDbMwzType moRegistry;

    /**
     * Creates new form SFormMwzType
     */
    public SFormMwzType(SGuiClient client, String title) {
        setFormSettings(client, SGuiConsts.BEAN_FORM_EDIT, SModConsts.HRSU_TP_MWZ, SLibConsts.UNDEFINED, title);
        initComponents();
        initComponentsCustom();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel3 = new javax.swing.JPanel();
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jlCode = new javax.swing.JLabel();
        moTextCode = new sa.lib.gui.bean.SBeanFieldText();
        jPanel5 = new javax.swing.JPanel();
        jlName = new javax.swing.JLabel();
        moTextName = new sa.lib.gui.bean.SBeanFieldText();

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Datos del registro:"));
        jPanel1.setLayout(new java.awt.BorderLayout());

        jPanel2.setLayout(new java.awt.GridLayout(3, 1, 0, 5));

        jPanel4.setLayout(new java.awt.FlowLayout(0, 5, 0));

        jlCode.setText("Código:*");
        jlCode.setPreferredSize(new java.awt.Dimension(100, 23));
        jPanel4.add(jlCode);

        moTextCode.setText("sBeanFieldText1");
        jPanel4.add(moTextCode);

        jPanel2.add(jPanel4);

        jPanel5.setLayout(new java.awt.FlowLayout(0, 5, 0));

        jlName.setText("Nombre:*");
        jlName.setPreferredSize(new java.awt.Dimension(100, 23));
        jPanel5.add(jlName);

        moTextName.setText("sBeanFieldText1");
        moTextName.setPreferredSize(new java.awt.Dimension(200, 23));
        jPanel5.add(moTextName);

        jPanel2.add(jPanel5);

        jPanel1.add(jPanel2, java.awt.BorderLayout.PAGE_START);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
    }// </editor-fold>//GEN-END:initComponents
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JLabel jlCode;
    private javax.swing.JLabel jlName;
    private sa.lib.gui.bean.SBeanFieldText moTextCode;
    private sa.lib.gui.bean.SBeanFieldText moTextName;
    // End of variables declaration//GEN-END:variables

    private void initComponentsCustom() {
        SGuiUtils.setWindowBounds(this, 480, 300);

        moTextCode.setTextSettings(SGuiUtils.getLabelName(jlCode.getText()), 10);
        moTextName.setTextSettings(SGuiUtils.getLabelName(jlName.getText()), 50);

        moFields.addField(moTextCode);
        moFields.addField(moTextName);

        moFields.setFormButton(jbSave);
    }

    @Override
    public void addAllListeners() {

    }

    @Override
    public void removeAllListeners() {

    }

    @Override
    public void reloadCatalogues() {

    }

    @Override
    public void setRegistry(SDbRegistry registry) throws Exception {
        moRegistry = (SDbMwzType) registry;

        mnFormResult = SLibConsts.UNDEFINED;
        mbFirstActivation = true;

        removeAllListeners();
        reloadCatalogues();

        if (moRegistry.isRegistryNew()) {
            moRegistry.initPrimaryKey();
            moRegistry.setSystem(false);    // all editable registries are non-system
            jtfRegistryKey.setText("");
        }
        else {
            jtfRegistryKey.setText(SLibUtils.textKey(moRegistry.getPrimaryKey()));
        }

        moTextName.setValue(moRegistry.getName());
        moTextCode.setValue(moRegistry.getCode());

        setFormEditable(true);

        addAllListeners();
    }

    @Override
    public SDbRegistry getRegistry() throws Exception {
        SDbMwzType registry = moRegistry.clone();

        if (registry.isRegistryNew()) { }

        registry.setName(moTextName.getValue());
        registry.setCode(moTextCode.getValue());

        return registry;
    }

    @Override
    public SGuiValidation validateForm() {
        SGuiValidation validation = moFields.validateFields();

        return validation;
    }
}


text:
<!DOCTYPE html>

      <meta charset="utf-8">
      <title>Phoria - Dev test page 0uv</title>

      <canvas id="canvas" width="768" height="512" style="background-color: #eee"></canvas>

<< Phoria demos


text:
package org.devilry.core.daointerfaces;

import javax.ejb.Remote;
import javax.persistence.*;
import java.util.Date;
import java.util.List;

@Remote
public interface DeliveryRemote extends DeliveryCommon {

}


text:
package edu.ucla.nesl.sensorsafe.db.informix;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.NamingException;

import edu.ucla.nesl.sensorsafe.Const;
import edu.ucla.nesl.sensorsafe.db.UserDatabaseDriver;
import edu.ucla.nesl.sensorsafe.model.User;

public class InformixUserDatabaseDriver extends InformixDatabaseDriver implements UserDatabaseDriver {

	public InformixUserDatabaseDriver() throws SQLException, IOException,
			NamingException, ClassNotFoundException {
		super();
	}

	public static void initializeDatabase() throws SQLException {
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
			conn = dataSource.getConnection();
			pstmt = conn.prepareStatement("SELECT 1 FROM systables WHERE tabname=?");
			pstmt.setString(1, Const.TABLE_ADMIN_USERS);
			ResultSet rset = pstmt.executeQuery();
			boolean isUsersExists = rset.next();
			pstmt.setString(1, Const.TABLE_ADMIN_USER_ROLES);
			rset = pstmt.executeQuery();
			boolean isUserRolesExists = rset.next();
			pstmt.setString(1, Const.TABLE_ADMIN_ROLES);
			rset = pstmt.executeQuery();
			boolean isRolesExists = rset.next();
			if (!isUsersExists || !isUserRolesExists || !isRolesExists) {
				initializeTables();
			}
		} finally {
			if (pstmt != null)
				pstmt.close();
			if (conn != null)
				conn.close();
		}
	}

	private static void initializeTables() throws SQLException {
		PreparedStatement pstmt = null;
		Connection conn = null;
		try {
			conn = dataSource.getConnection();
			pstmt = conn.prepareStatement("DROP TABLE IF EXISTS " + Const.TABLE_ADMIN_USERS + ";");
			pstmt.execute(); pstmt.close();
			pstmt = conn.prepareStatement("CREATE TABLE " + Const.TABLE_ADMIN_USERS + " ("
					+ "id SERIAL PRIMARY KEY, "
					+ "username VARCHAR(100) NOT NULL UNIQUE CONSTRAINT username, "
					+ "pwd VARCHAR(50) NOT NULL);");
			pstmt.execute(); pstmt.close();
			pstmt = conn.prepareStatement("DROP TABLE IF EXISTS " + Const.TABLE_ADMIN_USER_ROLES + ";");
			pstmt.execute(); pstmt.close();
			pstmt = conn.prepareStatement("CREATE TABLE " + Const.TABLE_ADMIN_USER_ROLES + " ("
					+ "user_id INTEGER NOT NULL, "
					+ "role_id INTEGER NOT NULL, "
					+ "UNIQUE (user_id, role_id) CONSTRAINT user_role);");
			pstmt.execute(); pstmt.close();
			pstmt = conn.prepareStatement("CREATE INDEX user_id_index ON user_roles (user_id);");
			pstmt.execute(); pstmt.close();
			pstmt = conn.prepareStatement("DROP TABLE IF EXISTS " + Const.TABLE_ADMIN_ROLES + ";");
			pstmt.execute(); pstmt.close();
			pstmt = conn.prepareStatement("CREATE TABLE " + Const.TABLE_ADMIN_ROLES + " ( "
					+ "id SERIAL PRIMARY KEY, "
					+ "role VARCHAR(100) NOT NULL UNIQUE CONSTRAINT role);");
			pstmt.execute(); pstmt.close();
			pstmt = conn.prepareStatement("INSERT INTO " + Const.TABLE_ADMIN_USERS + "(username, pwd) VALUES (?, ?);");
			pstmt.setString(1, Const.ADMIN_USER_NAME);
			pstmt.setString(2, Const.ADMIN_DEFAULT_PASSWORD);
			pstmt.executeUpdate(); pstmt.close();
			pstmt = conn.prepareStatement("INSERT INTO " + Const.TABLE_ADMIN_USER_ROLES + " VALUES (1, 1);");
			pstmt.executeUpdate(); pstmt.close();
			pstmt = conn.prepareStatement("INSERT INTO " + Const.TABLE_ADMIN_ROLES + "(role) VALUES (?);");
			pstmt.setString(1, Const.ADMIN_GROUP_NAME);
			pstmt.executeUpdate(); pstmt.close();
		} finally {
			if (pstmt != null)
				pstmt.close();
			if (conn != null)
				conn.close();
		}
	}

	@Override
	public void close() throws SQLException {
		if (conn != null) {
			conn.close();
			conn = null;
		}
	}

	@Override
	public void changeAdminPassword(String password) throws SQLException {
		PreparedStatement pstmt = null;
		try {
			pstmt = conn.prepareStatement("UPDATE " + Const.TABLE_ADMIN_USERS + " SET pwd = ? WHERE username = ?");
			pstmt.setString(1, password);
			pstmt.setString(2, Const.ADMIN_USER_NAME);
			pstmt.executeUpdate();
		} finally {
			if (pstmt != null)
				pstmt.close();
		}
	}

	@Override
	public void registerOwner(User newOwner) throws SQLException {
		PreparedStatement pstmt = null;
		try {
			try {
				pstmt = conn.prepareStatement("INSERT INTO users (username, pwd) VALUES (?,?)");
				pstmt.setString(1, newOwner.email);
				pstmt.setString(2, newOwner.password);
				pstmt.executeUpdate();
				pstmt.close();
			} catch (SQLException e) {
				if (e.toString().contains("Unique constraint") && e.toString().contains("violated."))
					throw new IllegalArgumentException("Username already registered.");
				else
					throw e;
			} finally {
				if (pstmt != null)
					pstmt.close();
			}
			pstmt = conn.prepareStatement("SELECT id FROM roles WHERE role=?");
			pstmt.setString(1, "owner");
			ResultSet rset = pstmt.executeQuery();
			if (!rset.next()) {
				pstmt.close();
				pstmt = conn.prepareStatement("INSERT INTO roles (role) VALUES (?)");
				pstmt.setString(1, "owner");
				pstmt.executeUpdate();
				pstmt.close();

				pstmt = conn.prepareStatement("SELECT id FROM roles WHERE role=?");
				pstmt.setString(1, "owner");
				rset = pstmt.executeQuery();
				rset.next();
			}
			int roleId = rset.getInt(1);
			pstmt.close();

			pstmt = conn.prepareStatement("SELECT id FROM users WHERE username = ?");
			pstmt.setString(1, newOwner.email);
			rset = pstmt.executeQuery();
			rset.next();
			int userId = rset.getInt(1);
			pstmt.close();

			pstmt = conn.prepareStatement("INSERT INTO user_roles VALUES (?, ?)");
			pstmt.setInt(1, userId);
			pstmt.setInt(2, roleId);
			pstmt.executeUpdate();
			pstmt.close();

		} finally {
			if (pstmt != null)
				pstmt.close();
		}
	}
}


text:
@interface CTVerticalSeparatorView : UICollectionReusableView<CTCyclePageSeparatorProtocol>

@end