summaryrefslogtreecommitdiff
path: root/www/lib/vis/examples/graph3d/playground
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2017-09-27 12:42:48 -0400
committerPliable Pixels <pliablepixels@gmail.com>2017-09-27 12:42:48 -0400
commit210e8feae2fb4842bfb2de38666e6c41671fef3c (patch)
treecbdafa34b1a6260bb20236d7e9de9eb1b690a1c5 /www/lib/vis/examples/graph3d/playground
parente7e7baeaad90229ccb3e0f45f4ebd77be7d79b14 (diff)
removed lib
Diffstat (limited to 'www/lib/vis/examples/graph3d/playground')
-rw-r--r--www/lib/vis/examples/graph3d/playground/csv2array.js120
-rw-r--r--www/lib/vis/examples/graph3d/playground/csv2datatable.html80
-rw-r--r--www/lib/vis/examples/graph3d/playground/datasource.html173
-rw-r--r--www/lib/vis/examples/graph3d/playground/datasource.php155
-rw-r--r--www/lib/vis/examples/graph3d/playground/index.html183
-rw-r--r--www/lib/vis/examples/graph3d/playground/playground.css91
-rw-r--r--www/lib/vis/examples/graph3d/playground/playground.js545
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-apollo.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-css.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-hs.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-lisp.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-lua.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-ml.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-proto.js1
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-scala.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-sql.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-vb.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-vhdl.js3
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-wiki.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/lang-yaml.js2
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/prettify.css1
-rw-r--r--www/lib/vis/examples/graph3d/playground/prettify/prettify.js33
22 files changed, 0 insertions, 1407 deletions
diff --git a/www/lib/vis/examples/graph3d/playground/csv2array.js b/www/lib/vis/examples/graph3d/playground/csv2array.js
deleted file mode 100644
index 95d0c4a6..00000000
--- a/www/lib/vis/examples/graph3d/playground/csv2array.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * Convert data in CSV (comma separated value) format to a javascript array.
- *
- * Values are separated by a comma, or by a custom one character delimeter.
- * Rows are separated by a new-line character.
- *
- * Leading and trailing spaces and tabs are ignored.
- * Values may optionally be enclosed by double quotes.
- * Values containing a special character (comma's, double-quotes, or new-lines)
- * must be enclosed by double-quotes.
- * Embedded double-quotes must be represented by a pair of consecutive
- * double-quotes.
- *
- * Example usage:
- * var csv = '"x", "y", "z"\n12.3, 2.3, 8.7\n4.5, 1.2, -5.6\n';
- * var array = csv2array(csv);
- *
- * Author: Jos de Jong, 2010
- *
- * @param {string} data The data in CSV format.
- * @param {string} delimeter [optional] a custom delimeter. Comma ',' by default
- * The Delimeter must be a single character.
- * @return {Array} array A two dimensional array containing the data
- * @throw {String} error The method throws an error when there is an
- * error in the provided data.
- */
-function csv2array(data, delimeter) {
- // Retrieve the delimeter
- if (delimeter == undefined)
- delimeter = ',';
- if (delimeter && delimeter.length > 1)
- delimeter = ',';
-
- // initialize variables
- var newline = '\n';
- var eof = '';
- var i = 0;
- var c = data.charAt(i);
- var row = 0;
- var col = 0;
- var array = new Array();
-
- while (c != eof) {
- // skip whitespaces
- while (c == ' ' || c == '\t' || c == '\r') {
- c = data.charAt(++i); // read next char
- }
-
- // get value
- var value = "";
- if (c == '\"') {
- // value enclosed by double-quotes
- c = data.charAt(++i);
-
- do {
- if (c != '\"') {
- // read a regular character and go to the next character
- value += c;
- c = data.charAt(++i);
- }
-
- if (c == '\"') {
- // check for escaped double-quote
- var cnext = data.charAt(i+1);
- if (cnext == '\"') {
- // this is an escaped double-quote.
- // Add a double-quote to the value, and move two characters ahead.
- value += '\"';
- i += 2;
- c = data.charAt(i);
- }
- }
- }
- while (c != eof && c != '\"');
-
- if (c == eof) {
- throw "Unexpected end of data, double-quote expected";
- }
-
- c = data.charAt(++i);
- }
- else {
- // value without quotes
- while (c != eof && c != delimeter && c!= newline && c != ' ' && c != '\t' && c != '\r') {
- value += c;
- c = data.charAt(++i);
- }
- }
-
- // add the value to the array
- if (array.length <= row)
- array.push(new Array());
- array[row].push(value);
-
- // skip whitespaces
- while (c == ' ' || c == '\t' || c == '\r') {
- c = data.charAt(++i);
- }
-
- // go to the next row or column
- if (c == delimeter) {
- // to the next column
- col++;
- }
- else if (c == newline) {
- // to the next row
- col = 0;
- row++;
- }
- else if (c != eof) {
- // unexpected character
- throw "Delimiter expected after character " + i;
- }
-
- // go to the next character
- c = data.charAt(++i);
- }
-
- return array;
-}
diff --git a/www/lib/vis/examples/graph3d/playground/csv2datatable.html b/www/lib/vis/examples/graph3d/playground/csv2datatable.html
deleted file mode 100644
index 08d3c65d..00000000
--- a/www/lib/vis/examples/graph3d/playground/csv2datatable.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
- <title>Convert CSV to Google Datatable</title>
-
- <style>
- body {font: 10pt arial;}
- </style>
-
- <script type="text/javascript" src="http://www.google.com/jsapi"></script>
- <script type="text/javascript" src="csv2array.js"></script>
-
- <script type="text/javascript">
- var data = null;
- var graph = null;
-
- function loaded() {
-
- }
-
- google.load("visualization", "1");
-
- // Set callback to run when API is loaded
- google.setOnLoadCallback(loaded);
-
- // Called when the Visualization API is loaded.
- function convert() {
- var csv = document.getElementById("csv").value;
-
- var datatable = "";
-
- // parse the csv content
- var csvArray = csv2array(csv);
-
- // Create and populate a data table.
- datatable += "data = new google.visualization.DataTable();\n";
-
- // read the header row
- for (var col = 0; col < csvArray[0].length; col++) {
- datatable += "data.addColumn('number', '" + csvArray[0][col] + "');\n";
- }
-
- // read all data
- for (var row = 1; row < csvArray.length; row++) {
- datatable += "data.addRow([";
-
- for (var col = 0; col < csvArray[row].length; col++) {
- if (col != 0)
- datatable += ", ";
- datatable += csvArray[row][col];
- }
-
- datatable += "]);\n";
- }
-
- document.getElementById("datatable").value = datatable;
-
- alert(csvArray.length + " rows converted");
- }
- </script>
-<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head>
-
-<body>
-<div id="graph"></div>
-
-<div id="info"></div>
-
-<b>CSV</b><br>
-<textarea id="csv" style="width: 400px; height: 300px;"></textarea>
-<br>
-<br>
-<input type="button" value="Convert" onclick="convert();">
-<br>
-<br>
-
-<b>Google DataTable</b><br>
-<textarea id="datatable" style="width: 400px; height: 300px;"></textarea>
-
-</body>
-</html>
diff --git a/www/lib/vis/examples/graph3d/playground/datasource.html b/www/lib/vis/examples/graph3d/playground/datasource.html
deleted file mode 100644
index 7a593604..00000000
--- a/www/lib/vis/examples/graph3d/playground/datasource.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<html>
-
-<head>
- <title>Graph3d documentation</title>
- <link rel='stylesheet' href='default.css' type='text/css'>
-
- <link href="prettify/prettify.css" type="text/css" rel="stylesheet" />
- <script type="text/javascript" src="prettify/prettify.js"></script>
-<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</script></head>
-
-<body onload="prettyPrint();">
-
-<pre class="prettyprint lang-php">
-&lt;?php
-
-/*
-This datasource returns a response in the form of a google query response
-
-USAGE
-All parameters are optional
-datasource.php?xmin=0&xmax=314&xstepnum=25&ymin=0&ymax=314&ystepnum=25
-
-DOCUMENTATION
-http://code.google.com/apis/visualization/documentation/dev/implementing_data_source.html
-
-
-EXAMPLE OF A RESPONSE FILE
-
-Note that the reqId in the response must correspond with the reqId from the
-request.
-________________________________________________________________________________
-
-google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'0',
- status:'ok',
- table:{
- cols:[
- {id:'x',
- label:'x',
- type:'number'},
- {id:'y',
- label:'y',
- type:'number'},
- {id:'value',
- label:'value',
- type:'number'}
- ],
- rows:[
- {c:[{v:0}, {v:0}, {v:10.0}]},
- {c:[{v:1}, {v:0}, {v:12.0}]},
- {c:[{v:2}, {v:0}, {v:13.0}]},
- {c:[{v:0}, {v:1}, {v:11.0}]},
- {c:[{v:1}, {v:1}, {v:14.0}]},
- {c:[{v:2}, {v:1}, {v:11.0}]}
- ]
- }
-});
-________________________________________________________________________________
-
-*/
-
-
-/**
- * A custom function
- */
-function custom($x, $y) {
- $d = sqrt(pow($x/100, 2) + pow($y/100, 2));
-
- return 50 * exp(-5 * $d / 10) * sin($d*5)
-}
-
-
-
-
-// retrieve parameters
-$default_stepnum = 25;
-
-$xmin = isset($_REQUEST['xmin']) ? (float)$_REQUEST['xmin'] : -100;
-$xmax = isset($_REQUEST['xmax']) ? (float)$_REQUEST['xmax'] : 100;
-$xstepnum = isset($_REQUEST['xstepnum']) ? (int)$_REQUEST['xstepnum'] : $default_stepnum;
-
-$ymin = isset($_REQUEST['ymin']) ? (float)$_REQUEST['ymin'] : -100;
-$ymax = isset($_REQUEST['ymax']) ? (float)$_REQUEST['ymax'] : 100;
-$ystepnum = isset($_REQUEST['ystepnum']) ? (int)$_REQUEST['ystepnum'] : $default_stepnum;
-
-// in the reply we must fill in the request id that came with the request
-$reqId = getReqId();
-
-// check for a maximum number of datapoints (for safety)
-if ($xstepnum * $ystepnum &gt; 10000) {
- echo "google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'$reqId',
- status:'error',
- errors:[{reason:'not_supported', message:'Maximum number of datapoints exceeded'}]
- });";
-
- exit;
-}
-
-
-// output the header part of the response
-echo "google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'$reqId',
- status:'ok',
- table:{
- cols:[
- {id:'x',
- label:'x',
- type:'number'},
- {id:'y',
- label:'y',
- type:'number'},
- {id:'value',
- label:'',
- type:'number'}
- ],
- rows:[";
-
-// output the actual values
-$first = true;
-$xstep = ($xmax - $xmin) / $xstepnum;
-$ystep = ($ymax - $ymin) / $ystepnum;
-for ($x = $xmin; $x &lt; $xmax; $x+=$xstep) {
- for ($y = $ymin; $y &lt; $ymax; $y+=$ystep) {
- $value = custom($x,$y);
-
- if (!$first) {
- echo ",\n";
- }
- else {
- echo "\n";
- }
- echo " {c:[{v:$x}, {v:$y}, {v:$value}]}";
-
- $first = false;
- }
-}
-
-
-// output the end part of the response
-echo "
- ]
- }
-});
-";
-
-
-/**
- * Retrieve the request id from the get/post data
- * @return {number} $reqId The request id, or 0 if not found
- */
-function getReqId() {
- $reqId = 0;
-
- foreach ($_REQUEST as $req) {
- if (substr($req, 0,6) == "reqId:") {
- $reqId = substr($req, 6);
- }
- }
-
- return $reqId;
-}
-
-
-?&gt;
-
-</pre>
-
-</body>
-</html>
diff --git a/www/lib/vis/examples/graph3d/playground/datasource.php b/www/lib/vis/examples/graph3d/playground/datasource.php
deleted file mode 100644
index 9c265cb9..00000000
--- a/www/lib/vis/examples/graph3d/playground/datasource.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-/*
-This datasource returns a response in the form of a google query response
-
-USAGE
-All parameters are optional
-datasource.php?xmin=0&xmax=314&xstepnum=25&ymin=0&ymax=314&ystepnum=25
-
-DOCUMENTATION
-http://code.google.com/apis/visualization/documentation/dev/implementing_data_source.html
-
-
-EXAMPLE OF A RESPONSE FILE
-
-Note that the reqId in the response must correspond with the reqId from the
-request.
-________________________________________________________________________________
-
-google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'0',
- status:'ok',
- table:{
- cols:[
- {id:'x',
- label:'x',
- type:'number'},
- {id:'y',
- label:'y',
- type:'number'},
- {id:'value',
- label:'value',
- type:'number'}
- ],
- rows:[
- {c:[{v:0}, {v:0}, {v:10.0}]},
- {c:[{v:1}, {v:0}, {v:12.0}]},
- {c:[{v:2}, {v:0}, {v:13.0}]},
- {c:[{v:0}, {v:1}, {v:11.0}]},
- {c:[{v:1}, {v:1}, {v:14.0}]},
- {c:[{v:2}, {v:1}, {v:11.0}]}
- ]
- }
-});
-________________________________________________________________________________
-
-*/
-
-
-/**
- * A custom function
- */
-function custom($x, $y) {
- $d = sqrt(pow($x/100, 2) + pow($y/100, 2));
-
- return 50 * exp(-5 * $d / 10) * sin($d*5);
-}
-
-
-
-
-// retrieve parameters
-$default_stepnum = 25;
-
-$xmin = isset($_REQUEST['xmin']) ? (float)$_REQUEST['xmin'] : -100;
-$xmax = isset($_REQUEST['xmax']) ? (float)$_REQUEST['xmax'] : 100;
-$xstepnum = isset($_REQUEST['xstepnum']) ? (int)$_REQUEST['xstepnum'] : $default_stepnum;
-
-$ymin = isset($_REQUEST['ymin']) ? (float)$_REQUEST['ymin'] : -100;
-$ymax = isset($_REQUEST['ymax']) ? (float)$_REQUEST['ymax'] : 100;
-$ystepnum = isset($_REQUEST['ystepnum']) ? (int)$_REQUEST['ystepnum'] : $default_stepnum;
-
-// in the reply we must fill in the request id that came with the request
-$reqId = getReqId();
-
-// check for a maximum number of datapoints (for safety)
-if ($xstepnum * $ystepnum > 10000) {
- echo "google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'$reqId',
- status:'error',
- errors:[{reason:'not_supported', message:'Maximum number of datapoints exceeded'}]
- });";
-
- exit;
-}
-
-
-// output the header part of the response
-echo "google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'$reqId',
- status:'ok',
- table:{
- cols:[
- {id:'x',
- label:'x',
- type:'number'},
- {id:'y',
- label:'y',
- type:'number'},
- {id:'value',
- label:'',
- type:'number'}
- ],
- rows:[";
-
-// output the actual values
-$first = true;
-$xstep = ($xmax - $xmin) / $xstepnum;
-$ystep = ($ymax - $ymin) / $ystepnum;
-for ($x = $xmin; $x < $xmax; $x+=$xstep) {
- for ($y = $ymin; $y < $ymax; $y+=$ystep) {
- $value = custom($x,$y);
-
- if (!$first) {
- echo ",\n";
- }
- else {
- echo "\n";
- }
- echo " {c:[{v:$x}, {v:$y}, {v:$value}]}";
-
- $first = false;
- }
-}
-
-
-// output the end part of the response
-echo "
- ]
- }
-});
-";
-
-
-/**
- * Retrieve the request id from the get/post data
- * @return {number} $reqId The request id, or 0 if not found
- */
-function getReqId() {
- $reqId = 0;
-
- foreach ($_REQUEST as $req) {
- if (substr($req, 0,6) == "reqId:") {
- $reqId = substr($req, 6);
- }
- }
-
- return $reqId;
-}
-
-
-?>
diff --git a/www/lib/vis/examples/graph3d/playground/index.html b/www/lib/vis/examples/graph3d/playground/index.html
deleted file mode 100644
index 134bb264..00000000
--- a/www/lib/vis/examples/graph3d/playground/index.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<!doctype html>
-<html>
-
-<head>
- <title>Graph 3D - Playground</title>
-
- <script type="text/javascript" src="../../../dist/vis.js"></script>
-
- <script type="text/javascript" src="playground.js"></script>
- <script type="text/javascript" src="csv2array.js"></script>
- <link rel='stylesheet' href='playground.css' type='text/css'>
-
- <script type="text/javascript">
- // Called when the Visualization API is loaded.
- function drawVisualization() {
- // TODO
- }
- </script>
- <script src="../../googleAnalytics.js"></script>
-</head>
-
-<body onload="load();">
-
-<h1>Graph 3D - Playground</h1>
-
-<table style="width:100%;">
-<col width="50%">
-<col width="50%">
-
-<tr>
- <td>
- <h2>Data</h2>
- <p>
- Graph 3D expects a data table with first three to five columns:
- colums <code>x</code>, <code>y</code>, <code>z</code> (optional),
- <code>style</code>, <code>filter</code> (optional).
- </p>
-
- <table>
- <tr>
- <td style="white-space: nowrap">
- <input type="radio" name="datatype" id="datatypeCsv" onclick="selectDataType();" checked value="csv">Csv
- </td>
- <td>
- <div id="csv">
- <textarea id="csvTextarea"></textarea>
- <p>
- <a href="javascript: loadCsvExample();" title="Load an example">Simple example</a>
- <a href="javascript: loadCsvLineExample();" title="Load an example">Line example</a>
- <a href="javascript: loadCsvAnimationExample();" title="Load an example">Animation example</a>
- <a href="javascript: loadCsvMovingDotsExample();" title="Load an example">Moving dots example</a>
- <a href="javascript: loadCsvColoredDotsExample();" title="Load an example">Colored dots example</a>
- <a href="javascript: loadCsvSizedDotsExample();" title="Load an example">Sized dots example</a>
- </p>
- </div>
- </td>
- </tr>
- <!-- TODO: add JSON examples -->
- </table>
-
- <br>
- </td>
- <td rowspan=2>
- <h2>Graph</h2>
- <p>
- <input type="button" value="Draw graph" onclick="draw();" id="draw">
- </p>
-
- <div id="graph"></div>
- </td>
-</tr>
-<tr>
- <td>
- <h2>Options</h2>
-
- <table>
- <tr>
- <th>Option</th>
- <th>Value</th>
- </tr>
-
- <tr>
- <td>width</td>
- <td><input type="text" id="width" value="100%" /> <span class="info">for example "500px" or "100%"</span></td>
- </tr>
- <tr>
- <td>height</td>
- <td><input type="text" id="height" value="100%" /> <span class="info">for example "500px" or "100%"</span></td>
- </tr>
- <tr>
- <td>style</td>
- <td>
- <select id="style">
- <option value="bar" >bar
- <option value="bar-color" >bar-color
- <option value="bar-size" >bar-size
- <option value="dot" >dot
- <option value="dot-color" >dot-color
- <option value="dot-size" >dot-size
- <option value="dot-line" >dot-line
- <option value="line" >line
- <option value="grid" >grid
- <option value="surface" selected>surface
- </select>
- </tr>
-
- <tr>
- <td>showAnimationControls</td>
- <td><input type="checkbox" id="showAnimationControls" checked /></td>
- </tr>
- <tr>
- <td>showGrid</td>
- <td><input type="checkbox" id="showGrid" checked /></td>
- </tr>
- <tr>
- <td>showPerspective</td>
- <td><input type="checkbox" id="showPerspective" checked /></td>
- </tr>
- <tr>
- <td>showLegend</td>
- <td><input type="checkbox" id="showLegend" checked /></td>
- </tr>
- <tr>
- <td>showShadow</td>
- <td><input type="checkbox" id="showShadow" /></td>
- </tr>
-
- <tr>
- <td>keepAspectRatio</td>
- <td><input type="checkbox" id="keepAspectRatio" checked /></td>
- </tr>
- <tr>
- <td>verticalRatio</td>
- <td><input type="text" id="verticalRatio" value="0.5" /> <span class="info">a value between 0.1 and 1.0</span></td>
- </tr>
-
- <tr>
- <td>animationInterval</td>
- <td><input type="text" id="animationInterval" value="1000" /> <span class="info">in milliseconds</span></td>
- </tr>
- <tr>
- <td>animationPreload</td>
- <td><input type="checkbox" id="animationPreload" /></td>
- </tr>
- <tr>
- <td>animationAutoStart</td>
- <td><input type="checkbox" id="animationAutoStart" /></td>
- </tr>
-
- <tr><td>xCenter</td><td><input type="text" id="xCenter" value="55%" /></td></tr>
- <tr><td>yCenter</td><td><input type="text" id="yCenter" value="45%" /></td></tr>
-
- <tr><td>xMin</td><td><input type="text" id="xMin" /></td></tr>
- <tr><td>xMax</td><td><input type="text" id="xMax" /></td></tr>
- <tr><td>xStep</td><td><input type="text" id="xStep" /></td></tr>
-
- <tr><td>yMin</td><td><input type="text" id="yMin" /></td></tr>
- <tr><td>yMax</td><td><input type="text" id="yMax" /></td></tr>
- <tr><td>yStep</td><td><input type="text" id="yStep" /></td></tr>
-
- <tr><td>zMin</td><td><input type="text" id="zMin" /></td></tr>
- <tr><td>zMax</td><td><input type="text" id="zMax" /></td></tr>
- <tr><td>zStep</td><td><input type="text" id="zStep" /></td></tr>
-
- <tr><td>valueMin</td><td><input type="text" id="valueMin" /></td></tr>
- <tr><td>valueMax</td><td><input type="text" id="valueMax" /></td></tr>
-
- <tr><td>xBarWidth</td><td><input type="text" id="xBarWidth" /></td></tr>
- <tr><td>yBarWidth</td><td><input type="text" id="yBarWidth" /></td></tr>
-
- <tr><td>xLabel</td><td><input type="text" id="xLabel" value="x"/></td></tr>
- <tr><td>yLabel</td><td><input type="text" id="yLabel" value="y"/></td></tr>
- <tr><td>zLabel</td><td><input type="text" id="zLabel" value="z"/></td></tr>
- <tr><td>filterLabel</td><td><input type="text" id="filterLabel" value="time"/></td></tr>
- <tr><td>legendLabel</td><td><input type="text" id="legendLabel" value="value"/></td></tr>
-
- </table>
-
- </td>
-</tr>
-</table>
-
-</body>
diff --git a/www/lib/vis/examples/graph3d/playground/playground.css b/www/lib/vis/examples/graph3d/playground/playground.css
deleted file mode 100644
index 5139d4b5..00000000
--- a/www/lib/vis/examples/graph3d/playground/playground.css
+++ /dev/null
@@ -1,91 +0,0 @@
-body
-{
- font: 13px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
-}
-
-h1
-{
- font-size: 180%;
- font-weight: bold;
-
- margin: 1em 0 1em 0;
-}
-
-h2
-{
- font-size: 140%;
- padding: 5px;
- border-bottom: 1px solid #a0c0f0;
- color: #2B7CE9;
-}
-
-h3
-{
- font-size: 100%;
-}
-
-hr
-{
- border: none 0;
- border-top: 1px solid #a0c0f0;
- height: 1px;
-}
-
-pre.code
-{
- display: block;
- padding: 8px;
- border: 1px dashed #ccc;
-}
-
-table
-{
- border-collapse: collapse;
-}
-
-th, td
-{
- font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
- text-align: left;
- vertical-align: top;
- /*border: 1px solid #888;*/
- padding: 3px;
-}
-
-th
-{
- font-weight: bold;
-}
-
-
-textarea {
- width: 500px;
- height: 200px;
- border: 1px solid #888;
-}
-
-input[type=text] {
- border: 1px solid #888;
-}
-
-#datasourceText, #googlespreadsheetText {
- width: 500px;
-
-}
-
-.info {
- color: gray;
-}
-
-a {
- color: gray;
-}
-a:hover {
- color: red;
-}
-
-
-#graph {
- width: 100%;
- height: 600px;
-}
diff --git a/www/lib/vis/examples/graph3d/playground/playground.js b/www/lib/vis/examples/graph3d/playground/playground.js
deleted file mode 100644
index a2e28728..00000000
--- a/www/lib/vis/examples/graph3d/playground/playground.js
+++ /dev/null
@@ -1,545 +0,0 @@
-
-var query = null;
-
-
-function load() {
- selectDataType();
-
- loadCsvExample();
- loadJsonExample();
- loadJavascriptExample();
- loadGooglespreadsheetExample();
- loadDatasourceExample();
-
- draw();
-}
-
-
-
-/**
- * Upate the UI based on the currently selected datatype
- */
-function selectDataType() {
-}
-
-
-function round(value, decimals) {
- return parseFloat(value.toFixed(decimals));
-}
-
-function loadCsvExample() {
- var csv = "";
-
- // headers
- csv += '"x", "y", "value"\n';
-
- // create some nice looking data with sin/cos
- var steps = 30;
- var axisMax = 314;
- var axisStep = axisMax / steps;
- for (var x = 0; x < axisMax; x+=axisStep) {
- for (var y = 0; y < axisMax; y+=axisStep) {
- var value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50;
-
- csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(value, 2) + '\n';
- }
- }
-
- document.getElementById("csvTextarea").innerHTML = csv;
-
- // also adjust some settings
- document.getElementById("style").value = "surface";
- document.getElementById("verticalRatio").value = "0.5";
-
- document.getElementById("xLabel").value = "x";
- document.getElementById("yLabel").value = "y";
- document.getElementById("zLabel").value = "value";
- document.getElementById("filterLabel").value = "";
- document.getElementById("legendLabel").value = "";
- drawCsv();
-}
-
-
-function loadCsvAnimationExample() {
- var csv = "";
-
- // headers
- csv += '"x", "y", "value", "time"\n';
-
- // create some nice looking data with sin/cos
- var steps = 20;
- var axisMax = 314;
- var tMax = 31;
- var axisStep = axisMax / steps;
- for (var t = 0; t < tMax; t++) {
- for (var x = 0; x < axisMax; x+=axisStep) {
- for (var y = 0; y < axisMax; y+=axisStep) {
- var value = Math.sin(x/50 + t/10) * Math.cos(y/50 + t/10) * 50 + 50;
- csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(value, 2) + ', ' + t + '\n';
- }
- }
- }
-
- document.getElementById("csvTextarea").innerHTML = csv;
-
- // also adjust some settings
- document.getElementById("style").value = "surface";
- document.getElementById("verticalRatio").value = "0.5";
- document.getElementById("animationInterval").value = 100;
-
- document.getElementById("xLabel").value = "x";
- document.getElementById("yLabel").value = "y";
- document.getElementById("zLabel").value = "value";
- document.getElementById("filterLabel").value = "time";
- document.getElementById("legendLabel").value = "";
-
- drawCsv();
-}
-
-
-function loadCsvLineExample() {
- var csv = "";
-
- // headers
- csv += '"sin(t)", "cos(t)", "t"\n';
-
- // create some nice looking data with sin/cos
- var steps = 100;
- var axisMax = 314;
- var tmax = 4 * 2 * Math.PI;
- var axisStep = axisMax / steps;
- for (t = 0; t < tmax; t += tmax / steps) {
- var r = 1;
- var x = r * Math.sin(t);
- var y = r * Math.cos(t);
- var z = t;
- csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + '\n';
- }
-
- document.getElementById("csvTextarea").innerHTML = csv;
-
- // also adjust some settings
- document.getElementById("style").value = "line";
- document.getElementById("verticalRatio").value = "1.0";
- document.getElementById("showPerspective").checked = false;
-
- document.getElementById("xLabel").value = "sin(t)";
- document.getElementById("yLabel").value = "cos(t)";
- document.getElementById("zLabel").value = "t";
- document.getElementById("filterLabel").value = "";
- document.getElementById("legendLabel").value = "";
-
- drawCsv();
-}
-
-function loadCsvMovingDotsExample() {
- var csv = "";
-
- // headers
- csv += '"x", "y", "z", "color value", "time"\n';
-
- // create some shortcuts to math functions
- var sin = Math.sin;
- var cos = Math.cos;
- var pi = Math.PI;
-
- // create the animation data
- var tmax = 2.0 * pi;
- var tstep = tmax / 75;
- var dotCount = 1; // set this to 1, 2, 3, 4, ...
- for (var t = 0; t < tmax; t += tstep) {
- var tgroup = parseFloat(t.toFixed(2));
- var value = t;
-
- // a dot in the center
- var x = 0;
- var y = 0;
- var z = 0;
- csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(value, 2)+ ', ' + round(tgroup, 2) + '\n';
-
- // one or multiple dots moving around the center
- for (var dot = 0; dot < dotCount; dot++) {
- var tdot = t + 2*pi * dot / dotCount;
- //data.addRow([sin(tdot), cos(tdot), sin(tdot), value, tgroup]);
- //data.addRow([sin(tdot), -cos(tdot), sin(tdot + tmax*1/2), value, tgroup]);
-
- var x = sin(tdot);
- var y = cos(tdot);
- var z = sin(tdot);
- csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(value, 2)+ ', ' + round(tgroup, 2) + '\n';
-
- var x = sin(tdot);
- var y = -cos(tdot);
- var z = sin(tdot + tmax*1/2);
- csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(value, 2)+ ', ' + round(tgroup, 2) + '\n';
-
- }
- }
-
- document.getElementById("csvTextarea").innerHTML = csv;
-
- // also adjust some settings
- document.getElementById("style").value = "dot-color";
- document.getElementById("verticalRatio").value = "1.0";
- document.getElementById("animationInterval").value = "35";
- document.getElementById("animationAutoStart").checked = true;
- document.getElementById("showPerspective").checked = true;
-
- document.getElementById("xLabel").value = "x";
- document.getElementById("yLabel").value = "y";
- document.getElementById("zLabel").value = "z";
- document.getElementById("filterLabel").value = "time";
- document.getElementById("legendLabel").value = "color value";
-
- drawCsv();
-}
-
-function loadCsvColoredDotsExample() {
- var csv = "";
-
- // headers
- csv += '"x", "y", "z", "distance"\n';
-
- // create some shortcuts to math functions
- var sqrt = Math.sqrt;
- var pow = Math.pow;
- var random = Math.random;
-
- // create the animation data
- var imax = 200;
- for (var i = 0; i < imax; i++) {
- var x = pow(random(), 2);
- var y = pow(random(), 2);
- var z = pow(random(), 2);
- var dist = sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
-
- csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(dist, 2)+ '\n';
- }
-
- document.getElementById("csvTextarea").innerHTML = csv;
-
- // also adjust some settings
- document.getElementById("style").value = "dot-color";
- document.getElementById("verticalRatio").value = "1.0";
- document.getElementById("showPerspective").checked = true;
-
- document.getElementById("xLabel").value = "x";
- document.getElementById("yLabel").value = "y";
- document.getElementById("zLabel").value = "value";
- document.getElementById("legendLabel").value = "distance"
- document.getElementById("filterLabel").value = "";
-
- drawCsv();
-}
-
-function loadCsvSizedDotsExample() {
- var csv = "";
-
- // headers
- csv += '"x", "y", "z", "range"\n';
-
- // create some shortcuts to math functions
- var sqrt = Math.sqrt;
- var pow = Math.pow;
- var random = Math.random;
-
- // create the animation data
- var imax = 200;
- for (var i = 0; i < imax; i++) {
- var x = pow(random(), 2);
- var y = pow(random(), 2);
- var z = pow(random(), 2);
- var dist = sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
- var range = sqrt(2) - dist;
-
- csv += round(x, 2) + ', ' + round(y, 2) + ', ' + round(z, 2) + ', ' + round(range, 2)+ '\n';
- }
-
- document.getElementById("csvTextarea").innerHTML = csv;
-
- // also adjust some settings
- document.getElementById("style").value = "dot-size";
- document.getElementById("verticalRatio").value = "1.0";
- document.getElementById("showPerspective").checked = true;
-
- document.getElementById("xLabel").value = "x";
- document.getElementById("yLabel").value = "y";
- document.getElementById("zLabel").value = "z";
- document.getElementById("legendLabel").value = "range";
- document.getElementById("filterLabel").value = "";
-
- drawCsv();
-}
-
-
-function loadJsonExample() {
-}
-
-
-function loadJavascriptExample() {
-}
-
-function loadJavascriptFunctionExample() {
-}
-
-function loadGooglespreadsheetExample() {
-
-}
-
-
-function loadDatasourceExample() {
-}
-
-
-
-/**
- * Retrieve teh currently selected datatype
- * @return {string} datatype
- */
-function getDataType() {
- return "csv";
-}
-
-
-/**
- * Retrieve the datatable from the entered contents of the csv text
- * @param {boolean} [skipValue] | if true, the 4th element is a filter value
- * @return {vis DataSet}
- */
-function getDataCsv() {
- var csv = document.getElementById("csvTextarea").value;
-
- // parse the csv content
- var csvArray = csv2array(csv);
-
- var data = new vis.DataSet();
-
- var skipValue = false;
- if (document.getElementById("filterLabel").value != "" && document.getElementById("legendLabel").value == "") {
- skipValue = true;
- }
-
- // read all data
- for (var row = 1; row < csvArray.length; row++) {
- if (csvArray[row].length == 4 && skipValue == false) {
- data.add({x:parseFloat(csvArray[row][0]),
- y:parseFloat(csvArray[row][1]),
- z:parseFloat(csvArray[row][2]),
- style:parseFloat(csvArray[row][3])});
- }
- else if (csvArray[row].length == 4 && skipValue == true) {
- data.add({x:parseFloat(csvArray[row][0]),
- y:parseFloat(csvArray[row][1]),
- z:parseFloat(csvArray[row][2]),
- filter:parseFloat(csvArray[row][3])});
- }
- else if (csvArray[row].length == 5) {
- data.add({x:parseFloat(csvArray[row][0]),
- y:parseFloat(csvArray[row][1]),
- z:parseFloat(csvArray[row][2]),
- style:parseFloat(csvArray[row][3]),
- filter:parseFloat(csvArray[row][4])});
- }
- else {
- data.add({x:parseFloat(csvArray[row][0]),
- y:parseFloat(csvArray[row][1]),
- z:parseFloat(csvArray[row][2]),
- style:parseFloat(csvArray[row][2])});
- }
- }
-
- return data;
-}
-
-/**
- * remove leading and trailing spaces
- */
-function trim(text) {
- while (text.length && text.charAt(0) == ' ')
- text = text.substr(1);
-
- while (text.length && text.charAt(text.length-1) == ' ')
- text = text.substr(0, text.length-1);
-
- return text;
-}
-
-/**
- * Retrieve the datatable from the entered contents of the javascript text
- * @return {vis Dataset}
- */
-function getDataJson() {
- var json = document.getElementById("jsonTextarea").value;
- var data = new google.visualization.DataTable(json);
-
- return data;
-}
-
-
-/**
- * Retrieve the datatable from the entered contents of the javascript text
- * @return {vis Dataset}
- */
-function getDataJavascript() {
- var js = document.getElementById("javascriptTextarea").value;
-
- eval(js);
-
- return data;
-}
-
-
-/**
- * Retrieve the datatable from the entered contents of the datasource text
- * @return {vis Dataset}
- */
-function getDataDatasource() {
-}
-
-/**
- * Retrieve a JSON object with all options
- */
-function getOptions() {
- return {
- width: document.getElementById("width").value,
- height: document.getElementById("height").value,
- style: document.getElementById("style").value,
- showAnimationControls: (document.getElementById("showAnimationControls").checked != false),
- showGrid: (document.getElementById("showGrid").checked != false),
- showPerspective: (document.getElementById("showPerspective").checked != false),
- showLegend: (document.getElementById("showLegend").checked != false),
- showShadow: (document.getElementById("showShadow").checked != false),
- keepAspectRatio: (document.getElementById("keepAspectRatio").checked != false),
- verticalRatio: document.getElementById("verticalRatio").value,
- animationInterval: document.getElementById("animationInterval").value,
- xLabel: document.getElementById("xLabel").value,
- yLabel: document.getElementById("yLabel").value,
- zLabel: document.getElementById("zLabel").value,
- filterLabel: document.getElementById("filterLabel").value,
- legendLabel: document.getElementById("legendLabel").value,
- animationPreload: (document.getElementById("animationPreload").checked != false),
- animationAutoStart:(document.getElementById("animationAutoStart").checked != false),
-
- xCenter: Number(document.getElementById("xCenter").value) || undefined,
- yCenter: Number(document.getElementById("yCenter").value) || undefined,
-
- xMin: Number(document.getElementById("xMin").value) || undefined,
- xMax: Number(document.getElementById("xMax").value) || undefined,
- xStep: Number(document.getElementById("xStep").value) || undefined,
- yMin: Number(document.getElementById("yMin").value) || undefined,
- yMax: Number(document.getElementById("yMax").value) || undefined,
- yStep: Number(document.getElementById("yStep").value) || undefined,
- zMin: Number(document.getElementById("zMin").value) || undefined,
- zMax: Number(document.getElementById("zMax").value) || undefined,
- zStep: Number(document.getElementById("zStep").value) || undefined,
-
- valueMin: Number(document.getElementById("valueMin").value) || undefined,
- valueMax: Number(document.getElementById("valueMax").value) || undefined,
-
- xBarWidth: Number(document.getElementById("xBarWidth").value) || undefined,
- yBarWidth: Number(document.getElementById("yBarWidth").value) || undefined
- };
-}
-
-/**
- * Redraw the graph with the entered data and options
- */
-function draw() {
- return drawCsv();
-}
-
-
-function drawCsv() {
- // retrieve data and options
- var data = getDataCsv();
- var options = getOptions();
-
- // Creat a graph
- var graph = new vis.Graph3d(document.getElementById('graph'), data, options);
-}
-
-function drawJson() {
- // retrieve data and options
- var data = getDataJson();
- var options = getOptions();
-
- // Creat a graph
- var graph = new vis.Graph3d(document.getElementById('graph'), data, options);
-}
-
-function drawJavascript() {
- // retrieve data and options
- var data = getDataJavascript();
- var options = getOptions();
-
- // Creat a graph
- var graph = new vis.Graph3d(document.getElementById('graph'), data, options);
-}
-
-
-function drawGooglespreadsheet() {
- // Instantiate our graph object.
- drawGraph = function(response) {
- document.getElementById("draw").disabled = "";
-
- if (response.isError()) {
- error = 'Error: ' + response.getMessage();
- document.getElementById('graph').innerHTML =
- "<span style='color: red; font-weight: bold;'>" + error + "</span>"; ;
- }
-
- // retrieve the data from the query response
- data = response.getDataTable();
-
- // specify options
- options = getOptions();
-
- // Instantiate our graph object.
- var graph = new vis.Graph3d(document.getElementById('graph'), data, options);
- }
-
- url = document.getElementById("googlespreadsheetText").value;
- document.getElementById("draw").disabled = "disabled";
-
- // send the request
- query && query.abort();
- query = new google.visualization.Query(url);
- query.send(drawGraph);
-}
-
-
-function drawDatasource() {
- // Instantiate our graph object.
- drawGraph = function(response) {
- document.getElementById("draw").disabled = "";
-
- if (response.isError()) {
- error = 'Error: ' + response.getMessage();
- document.getElementById('graph').innerHTML =
- "<span style='color: red; font-weight: bold;'>" + error + "</span>"; ;
- }
-
- // retrieve the data from the query response
- data = response.getDataTable();
-
- // specify options
- options = getOptions();
-
- // Instantiate our graph object.
- var graph = new vis.Graph3d(document.getElementById('graph'), data, options);
- };
-
- url = document.getElementById("datasourceText").value;
- document.getElementById("draw").disabled = "disabled";
-
- // if the entered url is a google spreadsheet url, replace the part
- // "/ccc?" with "/tq?" in order to retrieve a neat data query result
- if (url.indexOf("/ccc?")) {
- url.replace("/ccc?", "/tq?");
- }
-
- // send the request
- query && query.abort();
- query = new google.visualization.Query(url);
- query.send(drawGraph);
-}
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-apollo.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-apollo.js
deleted file mode 100644
index bfc0014c..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-apollo.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
-null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-css.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-css.js
deleted file mode 100644
index 61157f38..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-css.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \t\r\n\f]+/,null," \t\r\n\u000c"]],[["str",/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],["str",/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],["kwd",/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
-["com",/^(?:<!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#(?:[0-9a-f]{3}){1,2}/i],["pln",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],["pun",/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^\)\"\']+/]]),["css-str"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-hs.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-hs.js
deleted file mode 100644
index 00cea7cf..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-hs.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/,
-null],["pln",/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],["pun",/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-lisp.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-lisp.js
deleted file mode 100644
index fab992b8..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-lisp.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(/,null,"("],["clo",/^\)/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
-null],["lit",/^[+\-]?(?:0x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["cl","el","lisp","scm"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-lua.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-lua.js
deleted file mode 100644
index 45d0ba28..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-lua.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],["str",/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
-["pln",/^[a-z_]\w*/i],["pun",/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-ml.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-ml.js
deleted file mode 100644
index 5879726e..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-ml.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
-["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-proto.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-proto.js
deleted file mode 100644
index f713420c..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-proto.js
+++ /dev/null
@@ -1 +0,0 @@
-PR.registerLangHandler(PR.sourceDecorator({keywords:"bool bytes default double enum extend extensions false fixed32 fixed64 float group import int32 int64 max message option optional package repeated required returns rpc service sfixed32 sfixed64 sint32 sint64 string syntax to true uint32 uint64",cStyleComments:true}),["proto"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-scala.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-scala.js
deleted file mode 100644
index 00f4e0c2..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-scala.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/,null,'"'],["lit",/^`(?:[^\r\n\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/],["lit",/^'[a-zA-Z_$][\w$]*(?!['$\w])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
-["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],["typ",/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],["pln",/^[$a-zA-Z_][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-sql.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-sql.js
deleted file mode 100644
index 800b13ea..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-sql.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],["kwd",/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i,
-null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^[a-z_][\w-]*/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-vb.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-vb.js
deleted file mode 100644
index c479c11e..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-vb.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],["com",/^[\'\u2018\u2019][^\r\n\u2028\u2029]*/,null,"'\u2018\u2019"]],[["kwd",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i,
-null],["com",/^REM[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb","vbs"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-vhdl.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-vhdl.js
deleted file mode 100644
index dc81a3fe..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-vhdl.js
+++ /dev/null
@@ -1,3 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],["com",/^--[^\r\n]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
-null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i],
-["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-wiki.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-wiki.js
deleted file mode 100644
index 3b8fb500..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-wiki.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t \xA0a-gi-z0-9]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[=*~\^\[\]]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/],["lang-",/^\{\{\{([\s\S]+?)\}\}\}/],["lang-",/^`([^\r\n`]+)`/],["str",/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]]),["wiki"]);
-PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/lang-yaml.js b/www/lib/vis/examples/graph3d/playground/prettify/lang-yaml.js
deleted file mode 100644
index f2f36070..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/lang-yaml.js
+++ /dev/null
@@ -1,2 +0,0 @@
-PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^\w+:[ \r\n]/],["pln",/^\w+/]]),
-["yaml","yml"]) \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/prettify.css b/www/lib/vis/examples/graph3d/playground/prettify/prettify.css
deleted file mode 100644
index 2925d13a..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/prettify.css
+++ /dev/null
@@ -1 +0,0 @@
-.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}} \ No newline at end of file
diff --git a/www/lib/vis/examples/graph3d/playground/prettify/prettify.js b/www/lib/vis/examples/graph3d/playground/prettify/prettify.js
deleted file mode 100644
index c9161da9..00000000
--- a/www/lib/vis/examples/graph3d/playground/prettify/prettify.js
+++ /dev/null
@@ -1,33 +0,0 @@
-window.PR_SHOULD_USE_CONTINUATION=true;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var y=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([678])\./);y=y?+y[1]:false;window._pr_isIE6=function(){return y};return y};
-(function(){function y(b){return b.replace(L,"&amp;").replace(M,"&lt;").replace(N,"&gt;")}function H(b,f,i){switch(b.nodeType){case 1:var o=b.tagName.toLowerCase();f.push("<",o);var l=b.attributes,n=l.length;if(n){if(i){for(var r=[],j=n;--j>=0;)r[j]=l[j];r.sort(function(q,m){return q.name<m.name?-1:q.name===m.name?0:1});l=r}for(j=0;j<n;++j){r=l[j];r.specified&&f.push(" ",r.name.toLowerCase(),'="',r.value.replace(L,"&amp;").replace(M,"&lt;").replace(N,"&gt;").replace(X,"&quot;"),'"')}}f.push(">");
-for(l=b.firstChild;l;l=l.nextSibling)H(l,f,i);if(b.firstChild||!/^(?:br|link|img)$/.test(o))f.push("</",o,">");break;case 3:case 4:f.push(y(b.nodeValue));break}}function O(b){function f(c){if(c.charAt(0)!=="\\")return c.charCodeAt(0);switch(c.charAt(1)){case "b":return 8;case "t":return 9;case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(c.substring(2),16)||c.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(c.substring(1),
-8);default:return c.charCodeAt(1)}}function i(c){if(c<32)return(c<16?"\\x0":"\\x")+c.toString(16);c=String.fromCharCode(c);if(c==="\\"||c==="-"||c==="["||c==="]")c="\\"+c;return c}function o(c){var d=c.substring(1,c.length-1).match(RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));c=[];for(var a=[],k=d[0]==="^",e=k?1:0,h=d.length;e<h;++e){var g=d[e];switch(g){case "\\B":case "\\b":case "\\D":case "\\d":case "\\S":case "\\s":case "\\W":case "\\w":c.push(g);
-continue}g=f(g);var s;if(e+2<h&&"-"===d[e+1]){s=f(d[e+2]);e+=2}else s=g;a.push([g,s]);if(!(s<65||g>122)){s<65||g>90||a.push([Math.max(65,g)|32,Math.min(s,90)|32]);s<97||g>122||a.push([Math.max(97,g)&-33,Math.min(s,122)&-33])}}a.sort(function(v,w){return v[0]-w[0]||w[1]-v[1]});d=[];g=[NaN,NaN];for(e=0;e<a.length;++e){h=a[e];if(h[0]<=g[1]+1)g[1]=Math.max(g[1],h[1]);else d.push(g=h)}a=["["];k&&a.push("^");a.push.apply(a,c);for(e=0;e<d.length;++e){h=d[e];a.push(i(h[0]));if(h[1]>h[0]){h[1]+1>h[0]&&a.push("-");
-a.push(i(h[1]))}}a.push("]");return a.join("")}function l(c){for(var d=c.source.match(RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g")),a=d.length,k=[],e=0,h=0;e<a;++e){var g=d[e];if(g==="(")++h;else if("\\"===g.charAt(0))if((g=+g.substring(1))&&g<=h)k[g]=-1}for(e=1;e<k.length;++e)if(-1===k[e])k[e]=++n;for(h=e=0;e<a;++e){g=d[e];if(g==="("){++h;if(k[h]===undefined)d[e]="(?:"}else if("\\"===
-g.charAt(0))if((g=+g.substring(1))&&g<=h)d[e]="\\"+k[h]}for(h=e=0;e<a;++e)if("^"===d[e]&&"^"!==d[e+1])d[e]="";if(c.ignoreCase&&r)for(e=0;e<a;++e){g=d[e];c=g.charAt(0);if(g.length>=2&&c==="[")d[e]=o(g);else if(c!=="\\")d[e]=g.replace(/[a-zA-Z]/g,function(s){s=s.charCodeAt(0);return"["+String.fromCharCode(s&-33,s|32)+"]"})}return d.join("")}for(var n=0,r=false,j=false,q=0,m=b.length;q<m;++q){var t=b[q];if(t.ignoreCase)j=true;else if(/[a-z]/i.test(t.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,
-""))){r=true;j=false;break}}var p=[];q=0;for(m=b.length;q<m;++q){t=b[q];if(t.global||t.multiline)throw Error(""+t);p.push("(?:"+l(t)+")")}return RegExp(p.join("|"),j?"gi":"g")}function Y(b){var f=0;return function(i){for(var o=null,l=0,n=0,r=i.length;n<r;++n)switch(i.charAt(n)){case "\t":o||(o=[]);o.push(i.substring(l,n));l=b-f%b;for(f+=l;l>=0;l-=16)o.push(" ".substring(0,l));l=n+1;break;case "\n":f=0;break;default:++f}if(!o)return i;o.push(i.substring(l));return o.join("")}}function I(b,
-f,i,o){if(f){b={source:f,c:b};i(b);o.push.apply(o,b.d)}}function B(b,f){var i={},o;(function(){for(var r=b.concat(f),j=[],q={},m=0,t=r.length;m<t;++m){var p=r[m],c=p[3];if(c)for(var d=c.length;--d>=0;)i[c.charAt(d)]=p;p=p[1];c=""+p;if(!q.hasOwnProperty(c)){j.push(p);q[c]=null}}j.push(/[\0-\uffff]/);o=O(j)})();var l=f.length;function n(r){for(var j=r.c,q=[j,z],m=0,t=r.source.match(o)||[],p={},c=0,d=t.length;c<d;++c){var a=t[c],k=p[a],e=void 0,h;if(typeof k==="string")h=false;else{var g=i[a.charAt(0)];
-if(g){e=a.match(g[1]);k=g[0]}else{for(h=0;h<l;++h){g=f[h];if(e=a.match(g[1])){k=g[0];break}}e||(k=z)}if((h=k.length>=5&&"lang-"===k.substring(0,5))&&!(e&&typeof e[1]==="string")){h=false;k=P}h||(p[a]=k)}g=m;m+=a.length;if(h){h=e[1];var s=a.indexOf(h),v=s+h.length;if(e[2]){v=a.length-e[2].length;s=v-h.length}k=k.substring(5);I(j+g,a.substring(0,s),n,q);I(j+g+s,h,Q(k,h),q);I(j+g+v,a.substring(v),n,q)}else q.push(j+g,k)}r.d=q}return n}function x(b){var f=[],i=[];if(b.tripleQuotedStrings)f.push([A,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
-null,"'\""]);else b.multiLineStrings?f.push([A,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):f.push([A,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);b.verbatimStrings&&i.push([A,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);if(b.hashComments)if(b.cStyleComments){f.push([C,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]);i.push([A,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
-null])}else f.push([C,/^#[^\r\n]*/,null,"#"]);if(b.cStyleComments){i.push([C,/^\/\/[^\r\n]*/,null]);i.push([C,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}b.regexLiterals&&i.push(["lang-regex",RegExp("^"+Z+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);b=b.keywords.replace(/^\s+|\s+$/g,"");b.length&&i.push([R,RegExp("^(?:"+b.replace(/\s+/g,"|")+")\\b"),null]);f.push([z,/^\s+/,null," \r\n\t\u00a0"]);i.push([J,/^@[a-z_$][a-z_$@0-9]*/i,null],[S,/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/,
-null],[z,/^[a-z_$][a-z_$@0-9]*/i,null],[J,/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],[E,/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return B(f,i)}function $(b){function f(D){if(D>r){if(j&&j!==q){n.push("</span>");j=null}if(!j&&q){j=q;n.push('<span class="',j,'">')}var T=y(p(i.substring(r,D))).replace(e?d:c,"$1&#160;");e=k.test(T);n.push(T.replace(a,s));r=D}}var i=b.source,o=b.g,l=b.d,n=[],r=0,j=null,q=null,m=0,t=0,p=Y(window.PR_TAB_WIDTH),c=/([\r\n ]) /g,
-d=/(^| ) /gm,a=/\r\n?|\n/g,k=/[ \r\n]$/,e=true,h=window._pr_isIE6();h=h?b.b.tagName==="PRE"?h===6?"&#160;\r\n":h===7?"&#160;<br>\r":"&#160;\r":"&#160;<br />":"<br />";var g=b.b.className.match(/\blinenums\b(?::(\d+))?/),s;if(g){for(var v=[],w=0;w<10;++w)v[w]=h+'</li><li class="L'+w+'">';var F=g[1]&&g[1].length?g[1]-1:0;n.push('<ol class="linenums"><li class="L',F%10,'"');F&&n.push(' value="',F+1,'"');n.push(">");s=function(){var D=v[++F%10];return j?"</span>"+D+'<span class="'+j+'">':D}}else s=h;
-for(;;)if(m<o.length?t<l.length?o[m]<=l[t]:true:false){f(o[m]);if(j){n.push("</span>");j=null}n.push(o[m+1]);m+=2}else if(t<l.length){f(l[t]);q=l[t+1];t+=2}else break;f(i.length);j&&n.push("</span>");g&&n.push("</li></ol>");b.a=n.join("")}function u(b,f){for(var i=f.length;--i>=0;){var o=f[i];if(G.hasOwnProperty(o))"console"in window&&console.warn("cannot override language handler %s",o);else G[o]=b}}function Q(b,f){b&&G.hasOwnProperty(b)||(b=/^\s*</.test(f)?"default-markup":"default-code");return G[b]}
-function U(b){var f=b.f,i=b.e;b.a=f;try{var o,l=f.match(aa);f=[];var n=0,r=[];if(l)for(var j=0,q=l.length;j<q;++j){var m=l[j];if(m.length>1&&m.charAt(0)==="<"){if(!ba.test(m))if(ca.test(m)){f.push(m.substring(9,m.length-3));n+=m.length-12}else if(da.test(m)){f.push("\n");++n}else if(m.indexOf(V)>=0&&m.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)){var t=m.match(W)[2],p=1,c;c=j+1;a:for(;c<q;++c){var d=l[c].match(W);if(d&&
-d[2]===t)if(d[1]==="/"){if(--p===0)break a}else++p}if(c<q){r.push(n,l.slice(j,c+1).join(""));j=c}else r.push(n,m)}else r.push(n,m)}else{var a;p=m;var k=p.indexOf("&");if(k<0)a=p;else{for(--k;(k=p.indexOf("&#",k+1))>=0;){var e=p.indexOf(";",k);if(e>=0){var h=p.substring(k+3,e),g=10;if(h&&h.charAt(0)==="x"){h=h.substring(1);g=16}var s=parseInt(h,g);isNaN(s)||(p=p.substring(0,k)+String.fromCharCode(s)+p.substring(e+1))}}a=p.replace(ea,"<").replace(fa,">").replace(ga,"'").replace(ha,'"').replace(ia," ").replace(ja,
-"&")}f.push(a);n+=a.length}}o={source:f.join(""),h:r};var v=o.source;b.source=v;b.c=0;b.g=o.h;Q(i,v)(b);$(b)}catch(w){if("console"in window)console.log(w&&w.stack?w.stack:w)}}var A="str",R="kwd",C="com",S="typ",J="lit",E="pun",z="pln",P="src",V="nocode",Z=function(){for(var b=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=",
-"~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"],f="(?:^^|[+-]",i=0;i<b.length;++i)f+="|"+b[i].replace(/([^=<>:&a-z])/g,"\\$1");f+=")\\s*";return f}(),L=/&/g,M=/</g,N=/>/g,X=/\"/g,ea=/&lt;/g,fa=/&gt;/g,ga=/&apos;/g,ha=/&quot;/g,ja=/&amp;/g,ia=/&nbsp;/g,ka=/[\r\n]/g,K=null,aa=RegExp("[^<]+|<!--[\\s\\S]*?--\>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|</?[a-zA-Z](?:[^>\"']|'[^']*'|\"[^\"]*\")*>|<","g"),ba=/^<\!--/,ca=/^<!\[CDATA\[/,da=/^<br\b/i,W=/^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/,
-la=x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END break continue do else for if return while case done elif esac eval fi function in local set then until ",
-hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true}),G={};u(la,["default-code"]);u(B([],[[z,/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],[C,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[E,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup",
-"htm","html","mxml","xhtml","xml","xsl"]);u(B([[z,/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[E,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],
-["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);u(B([],[["atv",/^[\s\S]+/]]),["uq.val"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where ",
-hashComments:true,cStyleComments:true}),["c","cc","cpp","cxx","cyc","m"]);u(x({keywords:"null true false"}),["json"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ",
-hashComments:true,cStyleComments:true,verbatimStrings:true}),["cs"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ",
-cStyleComments:true}),["java"]);u(x({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);u(x({keywords:"break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);
-u(x({keywords:"caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ",hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);u(x({keywords:"break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",hashComments:true,
-multiLineStrings:true,regexLiterals:true}),["rb"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ",cStyleComments:true,regexLiterals:true}),["js"]);u(B([],[[A,/^[\s\S]+/]]),
-["regex"]);window.PR_normalizedHtml=H;window.prettyPrintOne=function(b,f){var i={f:b,e:f};U(i);return i.a};window.prettyPrint=function(b){function f(){for(var t=window.PR_SHOULD_USE_CONTINUATION?j.now()+250:Infinity;q<o.length&&j.now()<t;q++){var p=o[q];if(p.className&&p.className.indexOf("prettyprint")>=0){var c=p.className.match(/\blang-(\w+)\b/);if(c)c=c[1];for(var d=false,a=p.parentNode;a;a=a.parentNode)if((a.tagName==="pre"||a.tagName==="code"||a.tagName==="xmp")&&a.className&&a.className.indexOf("prettyprint")>=
-0){d=true;break}if(!d){a=p;if(null===K){d=document.createElement("PRE");d.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));K=!/</.test(d.innerHTML)}if(K){d=a.innerHTML;if("XMP"===a.tagName)d=y(d);else{a=a;if("PRE"===a.tagName)a=true;else if(ka.test(d)){var k="";if(a.currentStyle)k=a.currentStyle.whiteSpace;else if(window.getComputedStyle)k=window.getComputedStyle(a,null).whiteSpace;a=!k||k==="pre"}else a=true;a||(d=d.replace(/(<br\s*\/?>)[\r\n]+/g,"$1").replace(/(?:[\r\n]+[ \t]*)+/g,
-" "))}d=d}else{d=[];for(a=a.firstChild;a;a=a.nextSibling)H(a,d);d=d.join("")}d=d.replace(/(?:\r\n?|\n)$/,"");m={f:d,e:c,b:p};U(m);if(p=m.a){c=m.b;if("XMP"===c.tagName){d=document.createElement("PRE");for(a=0;a<c.attributes.length;++a){k=c.attributes[a];if(k.specified)if(k.name.toLowerCase()==="class")d.className=k.value;else d.setAttribute(k.name,k.value)}d.innerHTML=p;c.parentNode.replaceChild(d,c)}else c.innerHTML=p}}}}if(q<o.length)setTimeout(f,250);else b&&b()}for(var i=[document.getElementsByTagName("pre"),
-document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],o=[],l=0;l<i.length;++l)for(var n=0,r=i[l].length;n<r;++n)o.push(i[l][n]);i=null;var j=Date;j.now||(j={now:function(){return(new Date).getTime()}});var q=0,m;f()};window.PR={combinePrefixPatterns:O,createSimpleLexer:B,registerLangHandler:u,sourceDecorator:x,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:C,PR_DECLARATION:"dec",PR_KEYWORD:R,PR_LITERAL:J,PR_NOCODE:V,PR_PLAIN:z,PR_PUNCTUATION:E,PR_SOURCE:P,PR_STRING:A,
-PR_TAG:"tag",PR_TYPE:S}})() \ No newline at end of file