* fixed #194 PHP 5.6 error

* - closed #102 added "set waypoint/destination" context menu to route finder module
- update "Select2" 4.0.0 -> 4.0.3
- update "Font Awesome" 4.6.1 -> 4.6.3

* - added *.js files for develop branch

* - closed #195 fixed "BASE" dir for subDir installations
- fixed "Home" menu link

* -  #195 improved js load path

* - added "clear cache" function for manually cache clearing to /setup #200 #105 #158
- added cache size information to /setup
- added current pathfinder  "VERSION" to /setup
- updated "requireJs" 2.1.20 ->2.2.0
- removed unnecessary page cache timings from static templates (page cache)

* - added "document_root", "port", "protocol" and "PHP framework version" to /setup page
- added new "shattered" wormhole types to "signature table", closed #182, #179

* - added new "delete old signatures" option to "signature reader" dialog, closed #95

* - added new housekeeping cronjob für cached files, closed #200
- added new cache size information to /setup page

* - fixed signature groupId/typeId "overwriting" for already known signatures. closed #207
- improved system search dialog. Added trim(); before "api/signatures-> search" request

* updated README.me

* fixed PHP error "default object from empty value", closed #209

* reduced image file size

* - added local storage (IndexedDB)
- added local storage for map scroll position. closed #69

* - added "notice" panel for upcoming release information
- improved layout for "release dialog" (GitHub API)
- improved pagespeed (removed render blocking javascripts)
- improved map scrollbar configuration
- improved Chrome browser custom scrollbar layout
- removed "sign up" buttons from "map panels", closed #214

* - fixed some session and cookie  bugs

* - added new requirement check for `max_input_vars` to /setup URL, closed #224

* - fixed isWormhole(); bug

* -v1.1.1 added js build files

* - removed IGB support #206
- removed location tracking by IGB

* - added build files for upcoming version 1.1.2
- improved ajax authentication check and "logout" notification | closed #198
- improved logging, added missing log file configuration to pathfinder.ini
- added  logging for "unauthorized" requests | closed #198
- updated js "jQuery" 1.11.3 -> 3.0.0 | #206
- updated js "datatables" plugin 1.10.7 -> 1.10.12 | #206
- updated js "mCustomScrollbar" 3.1.14 -> 3.1.4 | #206

* - fixed some minor bugs in signature table module

* - fixed type "Cataclysmic", closed #241

* - added new setup DB indexing for "system_neighbour"  table to /setup route, #125
- fixed system "TrueSec" rounding in "routes module", closed #109

* - fixed system "TrueSec" rounding in "routes module", closed #109

* - added new wormhole statics for "Thera", closed #240

* - fixed missing statics for constellation "21000062" , closed #232

* - added "static" wormholes for "shattered" systems , closed #180
- added im/export function for "index" tables (*.csv import), as an alternative to the *.sql import, closed #125

* - added new system tooltip for "region name", closed #236
- updated "Bootstrap" JS-library 3.3.0 -> 3.3.5

* - removed console.log(),,,

* minor bugfixes in /setup page

* - added basic support for Russian signatures, closed #256
- added warning notification for invalid signature stings

* - added basic support for Russian signatures, closed #256

* - added requirement check for "PDO", "PDO_MYSQL" to "/setup" route
- imrpved DB PDO connection (added "TIMEOUT", forced "ERRMODE")
- fixed broken "system alias" renaming dialog

* - fixed "system graph" module rendering if there was no data available
- improved "image gallery" initialization on landing page
- added navigation to /setup page
- updated "blueImpGallery" (fixed some bugs after jQuery 3.0 upgrade) 1.15.2 -> 2.21.3
- updated "blueImpGalleryBootstrap"  (fixed some bugs after jQuery 3.0 upgrade)  3.1.1 -> 3.4.2

* - JS build files vor 1.1.2

* Updated pathfinder.css
This commit is contained in:
Mark Friedrich
2016-07-29 20:19:17 +02:00
committed by GitHub
parent e01f299d2b
commit 5c1cdca936
140 changed files with 9930 additions and 8625 deletions

View File

@@ -29,15 +29,18 @@ TEMP = tmp/
; Log file folder
LOGS = logs/
; Search path for user interface files used by the View and Template classes' render() method.
; UI/template folder
UI = public/
; Search path(s) for user-defined PHP classes that the framework will attempt to autoload at runtime
; Autoloader for user-defined PHP classes that the framework will attempt to autoload at runtime
AUTOLOAD = app/main/
; path to favicons folder
; Favicons
FAVICON = favicon/
; Export folder (e.g. static table data)
EXPORT = export/
; load additional config files
; DO NOT load environment.ini, it is loaded automatically
[configs]

View File

@@ -24,8 +24,19 @@ class AccessController extends Controller {
$loginCheck = $this->checkLogTimer($f3);
if( !$loginCheck ){
// no user found or LogIn timer expired
// no user found or login timer expired
$this->logout($f3);
if( $f3->get('AJAX') ){
// unauthorized request
$f3->status(403);
}else{
// redirect to landing page
$f3->reroute('@login');
}
// die() triggers unload() function
die();
}
}

View File

@@ -39,56 +39,53 @@ class Connection extends Controller\AccessController{
$activeCharacter = $this->getCharacter();
if($activeCharacter){
// get map model and check map access
/**
* @var Model\MapModel $map
*/
$map = Model\BasicModel::getNew('MapModel');
$map->getById( (int)$mapData['id'] );
// get map model and check map access
/**
* @var Model\MapModel $map
*/
$map = Model\BasicModel::getNew('MapModel');
$map->getById( (int)$mapData['id'] );
if( $map->hasAccess($activeCharacter) ){
$source = $map->getSystemById( $connectionData['source'] );
$target = $map->getSystemById( $connectionData['target'] );
if( $map->hasAccess($activeCharacter) ){
$source = $map->getSystemById( $connectionData['source'] );
$target = $map->getSystemById( $connectionData['target'] );
if(
!is_null($source) &&
!is_null($target)
){
/**
* @var $connection Model\ConnectionModel
*/
$connection = Model\BasicModel::getNew('ConnectionModel');
$connection->getById( (int)$connectionData['id'] );
if(
!is_null($source) &&
!is_null($target)
){
/**
* @var $connection Model\ConnectionModel
*/
$connection = Model\BasicModel::getNew('ConnectionModel');
$connection->getById( (int)$connectionData['id'] );
// search if systems are neighbors
$routeController = new Route();
$routeController->initJumpData();
$route = $routeController->findRoute($connectionData['sourceName'], $connectionData['targetName'], 1);
// search if systems are neighbors
$routeController = new Route();
$routeController->initJumpData();
$route = $routeController->findRoute($connectionData['sourceName'], $connectionData['targetName'], 1);
if($route['routePossible'] == true){
// systems are next to each other
$connectionData['scope'] = 'stargate';
$connectionData['type'] = ['stargate'];
}elseif($connectionData['scope'] == 'stargate'){
// connection scope changed -> this can not be a stargate
$connectionData['scope'] = 'wh';
$connectionData['type'] = ['wh_fresh'];
}
if($route['routePossible'] == true){
// systems are next to each other
$connectionData['scope'] = 'stargate';
$connectionData['type'] = ['stargate'];
}elseif($connectionData['scope'] == 'stargate'){
// connection scope changed -> this can not be a stargate
$connectionData['scope'] = 'wh';
$connectionData['type'] = ['wh_fresh'];
}
$connectionData['mapId'] = $map;
$connectionData['mapId'] = $map;
// "updated" should not be set by client e.g. after manual drag&drop
unset($connectionData['updated']);
// "updated" should not be set by client e.g. after manual drag&drop
unset($connectionData['updated']);
$connection->setData($connectionData);
$connection->setData($connectionData);
if( $connection->isValid() ){
$connection->save();
if( $connection->isValid() ){
$connection->save();
$newConnectionData = $connection->getData();
}
$newConnectionData = $connection->getData();
}
}
}
@@ -104,18 +101,17 @@ class Connection extends Controller\AccessController{
*/
public function delete(\Base $f3){
$connectionIds = $f3->get('POST.connectionIds');
$activeCharacter = $this->getCharacter();
if($activeCharacter = $this->getCharacter()){
/**
* @var Model\ConnectionModel $connection
*/
$connection = Model\BasicModel::getNew('ConnectionModel');
foreach($connectionIds as $connectionId){
$connection->getById($connectionId);
$connection->delete( $activeCharacter );
/**
* @var Model\ConnectionModel $connection
*/
$connection = Model\BasicModel::getNew('ConnectionModel');
foreach($connectionIds as $connectionId){
$connection->getById($connectionId);
$connection->delete( $activeCharacter );
$connection->reset();
}
$connection->reset();
}
echo json_encode([]);

View File

@@ -208,117 +208,111 @@ class Map extends Controller\AccessController {
){
$activeCharacter = $this->getCharacter();
if($activeCharacter){
/**
* @var $map Model\MapModel
*/
$map = Model\BasicModel::getNew('MapModel');
/**
* @var $map Model\MapModel
*/
$map = Model\BasicModel::getNew('MapModel');
/**
* @var $system Model\SystemModel
*/
$system = Model\BasicModel::getNew('SystemModel');
/**
* @var $system Model\SystemModel
*/
$system = Model\BasicModel::getNew('SystemModel');
/**
* @var $connection Model\ConnectionModel
*/
$connection = Model\BasicModel::getNew('ConnectionModel');
foreach($importData['mapData'] as $mapData){
if(
isset($mapData['config']) &&
isset($mapData['data'])
){
/**
* @var $connection Model\ConnectionModel
*/
$connection = Model\BasicModel::getNew('ConnectionModel');
foreach($importData['mapData'] as $mapData){
if(
isset($mapData['config']) &&
isset($mapData['data'])
isset($mapData['data']['systems']) &&
isset($mapData['data']['connections'])
){
if(isset($mapData['config']['id'])){
unset($mapData['config']['id']);
}
$map->setData($mapData['config']);
$map->typeId = (int)$importData['typeId'];
$map->save();
if(
isset($mapData['data']['systems']) &&
isset($mapData['data']['connections'])
){
if(isset($mapData['config']['id'])){
unset($mapData['config']['id']);
// new system IDs will be generated
// therefore we need to temp store a mapping between IDs
$tempSystemIdMapping = [];
foreach($mapData['data']['systems'] as $systemData){
if(isset($systemData['id'])){
$oldId = (int)$systemData['id'];
unset($systemData['id']);
$system->setData($systemData);
$system->mapId = $map;
$system->createdCharacterId = $activeCharacter;
$system->updatedCharacterId = $activeCharacter;
$system->save();
$tempSystemIdMapping[$oldId] = $system->id;
$system->reset();
}
}
$map->setData($mapData['config']);
$map->typeId = (int)$importData['typeId'];
$map->save();
// new system IDs will be generated
// therefore we need to temp store a mapping between IDs
$tempSystemIdMapping = [];
foreach($mapData['data']['systems'] as $systemData){
if(isset($systemData['id'])){
$oldId = (int)$systemData['id'];
unset($systemData['id']);
$system->setData($systemData);
$system->mapId = $map;
$system->createdCharacterId = $activeCharacter;
$system->updatedCharacterId = $activeCharacter;
$system->save();
$tempSystemIdMapping[$oldId] = $system->id;
$system->reset();
foreach($mapData['data']['connections'] as $connectionData){
// check if source and target IDs match with new system ID
if(
isset( $tempSystemIdMapping[$connectionData['source']] ) &&
isset( $tempSystemIdMapping[$connectionData['target']] )
){
if(isset($connectionData['id'])){
unset($connectionData['id']);
}
$connection->setData($connectionData);
$connection->mapId = $map;
$connection->source = $tempSystemIdMapping[$connectionData['source']];
$connection->target = $tempSystemIdMapping[$connectionData['target']];
$connection->save();
$connection->reset();
}
}
foreach($mapData['data']['connections'] as $connectionData){
// check if source and target IDs match with new system ID
if(
isset( $tempSystemIdMapping[$connectionData['source']] ) &&
isset( $tempSystemIdMapping[$connectionData['target']] )
){
if(isset($connectionData['id'])){
unset($connectionData['id']);
}
$connection->setData($connectionData);
$connection->mapId = $map;
$connection->source = $tempSystemIdMapping[$connectionData['source']];
$connection->target = $tempSystemIdMapping[$connectionData['target']];
$connection->save();
$connection->reset();
}
// map access info should not automatically imported
if($map->isPrivate()){
$map->setAccess($activeCharacter);
}elseif($map->isCorporation()){
if($corporation = $activeCharacter->getCorporation()){
$map->setAccess($corporation);
}
// map access info should not automatically imported
if($map->isPrivate()){
$map->setAccess($activeCharacter);
}elseif($map->isCorporation()){
if($corporation = $activeCharacter->getCorporation()){
$map->setAccess($corporation);
}
}elseif($map->isAlliance()){
if($alliance = $activeCharacter->getAlliance()){
$map->setAccess($alliance);
}
}elseif($map->isAlliance()){
if($alliance = $activeCharacter->getAlliance()){
$map->setAccess($alliance);
}
}else{
// systems || connections missing
$missingConfigError = (object) [];
$missingConfigError->type = 'error';
$missingConfigError->message = 'Map data not valid (systems || connections) missing';
$return->error[] = $missingConfigError;
}
}else{
// map config || systems/connections missing
// systems || connections missing
$missingConfigError = (object) [];
$missingConfigError->type = 'error';
$missingConfigError->message = 'Map data not valid (config || data) missing';
$missingConfigError->message = 'Map data not valid (systems || connections) missing';
$return->error[] = $missingConfigError;
}
$map->reset();
}else{
// map config || systems/connections missing
$missingConfigError = (object) [];
$missingConfigError->type = 'error';
$missingConfigError->message = 'Map data not valid (config || data) missing';
$return->error[] = $missingConfigError;
}
}else{
// user not found
$return->error[] = $this->getLogoutError();
$map->reset();
}
}else{
// map data missing
@@ -345,143 +339,140 @@ class Map extends Controller\AccessController {
if( isset($formData['id']) ){
$activeCharacter = $this->getCharacter(0);
if($activeCharacter){
/**
* @var $map Model\MapModel
*/
$map = Model\BasicModel::getNew('MapModel');
$map->getById( (int)$formData['id'] );
/**
* @var $map Model\MapModel
*/
$map = Model\BasicModel::getNew('MapModel');
$map->getById( (int)$formData['id'] );
if(
$map->dry() ||
$map->hasAccess($activeCharacter)
){
// new map
$map->setData($formData);
$map = $map->save();
if(
$map->dry() ||
$map->hasAccess($activeCharacter)
){
// new map
$map->setData($formData);
$map = $map->save();
// save global map access. Depends on map "type"
if($map->isPrivate()){
// save global map access. Depends on map "type"
if($map->isPrivate()){
// share map between characters -> set access
if(isset($formData['mapCharacters'])){
// avoid abuse -> respect share limits
$accessCharacters = array_slice( $formData['mapCharacters'], 0, $f3->get('PATHFINDER.MAX_SHARED_CHARACTER') );
// share map between characters -> set access
if(isset($formData['mapCharacters'])){
// clear map access. In case something has removed from access list
$map->clearAccess();
/**
* @var $tempCharacter Model\CharacterModel
*/
$tempCharacter = Model\BasicModel::getNew('CharacterModel');
foreach($accessCharacters as $characterId){
$tempCharacter->getById( (int)$characterId );
if(
!$tempCharacter->dry() &&
$tempCharacter->shared == 1 // check if map shared is enabled
){
$map->setAccess($tempCharacter);
}
$tempCharacter->reset();
}
}
// the current character itself should always have access
// just in case he removed himself :)
$map->setAccess($activeCharacter);
}elseif($map->isCorporation()){
$corporation = $activeCharacter->getCorporation();
if($corporation){
// the current user has to have a corporation when
// working on corporation maps!
// share map between corporations -> set access
if(isset($formData['mapCorporations'])){
// avoid abuse -> respect share limits
$accessCharacters = array_slice( $formData['mapCharacters'], 0, $f3->get('PATHFINDER.MAX_SHARED_CHARACTER') );
$accessCorporations = array_slice( $formData['mapCorporations'], 0, $f3->get('PATHFINDER.MAX_SHARED_CORPORATION') );
// clear map access. In case something has removed from access list
$map->clearAccess();
/**
* @var $tempCharacter Model\CharacterModel
* @var $tempCorporation Model\CorporationModel
*/
$tempCharacter = Model\BasicModel::getNew('CharacterModel');
$tempCorporation = Model\BasicModel::getNew('CorporationModel');
foreach($accessCharacters as $characterId){
$tempCharacter->getById( (int)$characterId );
foreach($accessCorporations as $corporationId){
$tempCorporation->getById( (int)$corporationId );
if(
!$tempCharacter->dry() &&
$tempCharacter->shared == 1 // check if map shared is enabled
!$tempCorporation->dry() &&
$tempCorporation->shared == 1 // check if map shared is enabled
){
$map->setAccess($tempCharacter);
$map->setAccess($tempCorporation);
}
$tempCharacter->reset();
$tempCorporation->reset();
}
}
// the current character itself should always have access
// just in case he removed himself :)
$map->setAccess($activeCharacter);
}elseif($map->isCorporation()){
$corporation = $activeCharacter->getCorporation();
if($corporation){
// the current user has to have a corporation when
// working on corporation maps!
// share map between corporations -> set access
if(isset($formData['mapCorporations'])){
// avoid abuse -> respect share limits
$accessCorporations = array_slice( $formData['mapCorporations'], 0, $f3->get('PATHFINDER.MAX_SHARED_CORPORATION') );
// clear map access. In case something has removed from access list
$map->clearAccess();
/**
* @var $tempCorporation Model\CorporationModel
*/
$tempCorporation = Model\BasicModel::getNew('CorporationModel');
foreach($accessCorporations as $corporationId){
$tempCorporation->getById( (int)$corporationId );
if(
!$tempCorporation->dry() &&
$tempCorporation->shared == 1 // check if map shared is enabled
){
$map->setAccess($tempCorporation);
}
$tempCorporation->reset();
}
}
// the corporation of the current user should always have access
$map->setAccess($corporation);
}
}elseif($map->isAlliance()){
$alliance = $activeCharacter->getAlliance();
if($alliance){
// the current user has to have a alliance when
// working on alliance maps!
// share map between alliances -> set access
if(isset($formData['mapAlliances'])){
// avoid abuse -> respect share limits
$accessAlliances = array_slice( $formData['mapAlliances'], 0, $f3->get('PATHFINDER.MAX_SHARED_ALLIANCE') );
// clear map access. In case something has removed from access list
$map->clearAccess();
/**
* @var $tempAlliance Model\AllianceModel
*/
$tempAlliance = Model\BasicModel::getNew('AllianceModel');
foreach($accessAlliances as $allianceId){
$tempAlliance->getById( (int)$allianceId );
if(
!$tempAlliance->dry() &&
$tempAlliance->shared == 1 // check if map shared is enabled
){
$map->setAccess($tempAlliance);
}
$tempAlliance->reset();
}
}
// the alliance of the current user should always have access
$map->setAccess($alliance);
}
// the corporation of the current user should always have access
$map->setAccess($corporation);
}
// reload the same map model (refresh)
// this makes sure all data is up2date
$map->getById( $map->id, 0 );
}elseif($map->isAlliance()){
$alliance = $activeCharacter->getAlliance();
$return->mapData = $map->getData();
}else{
// map access denied
$captchaError = (object) [];
$captchaError->type = 'error';
$captchaError->message = 'Access denied';
$return->error[] = $captchaError;
if($alliance){
// the current user has to have a alliance when
// working on alliance maps!
// share map between alliances -> set access
if(isset($formData['mapAlliances'])){
// avoid abuse -> respect share limits
$accessAlliances = array_slice( $formData['mapAlliances'], 0, $f3->get('PATHFINDER.MAX_SHARED_ALLIANCE') );
// clear map access. In case something has removed from access list
$map->clearAccess();
/**
* @var $tempAlliance Model\AllianceModel
*/
$tempAlliance = Model\BasicModel::getNew('AllianceModel');
foreach($accessAlliances as $allianceId){
$tempAlliance->getById( (int)$allianceId );
if(
!$tempAlliance->dry() &&
$tempAlliance->shared == 1 // check if map shared is enabled
){
$map->setAccess($tempAlliance);
}
$tempAlliance->reset();
}
}
// the alliance of the current user should always have access
$map->setAccess($alliance);
}
}
// reload the same map model (refresh)
// this makes sure all data is up2date
$map->getById( $map->id, 0 );
$return->mapData = $map->getData();
}else{
// map access denied
$captchaError = (object) [];
$captchaError->type = 'error';
$captchaError->message = 'Access denied';
$return->error[] = $captchaError;
}
}else{
// map id field missing
@@ -502,14 +493,12 @@ class Map extends Controller\AccessController {
$mapData = (array)$f3->get('POST.mapData');
$activeCharacter = $this->getCharacter();
if($activeCharacter){
/**
* @var $map Model\MapModel
*/
$map = Model\BasicModel::getNew('MapModel');
$map->getById($mapData['id']);
$map->delete( $activeCharacter );
}
/**
* @var $map Model\MapModel
*/
$map = Model\BasicModel::getNew('MapModel');
$map->getById($mapData['id']);
$map->delete( $activeCharacter );
echo json_encode([]);
}
@@ -527,121 +516,116 @@ class Map extends Controller\AccessController {
$return = (object) [];
$return->error = [];
if($activeCharacter){
$cacheKey = $this->getMapDataCacheKey($activeCharacter);
// if there is any system/connection change data submitted -> save new data
if(
!empty($mapData) ||
!$f3->exists($cacheKey)
){
// get current map data ===============================================================================
$maps = $activeCharacter->getMaps();
$cacheKey = $this->getMapDataCacheKey($activeCharacter);
// loop all submitted map data that should be saved
// -> currently there will only be ONE map data change submitted -> single loop
foreach($mapData as $data){
// if there is any system/connection change data submitted -> save new data
if(
!empty($mapData) ||
!$f3->exists($cacheKey)
){
// get current map data ===============================================================================
$maps = $activeCharacter->getMaps();
$systems = [];
$connections = [];
// loop all submitted map data that should be saved
// -> currently there will only be ONE map data change submitted -> single loop
foreach($mapData as $data){
// check whether system data and/or connection data is send
// empty arrays are not included in ajax requests
if( isset($data['data']['systems']) ){
$systems = (array)$data['data']['systems'];
}
$systems = [];
$connections = [];
if( isset($data['data']['connections']) ){
$connections = (array)$data['data']['connections'];
}
// check whether system data and/or connection data is send
// empty arrays are not included in ajax requests
if( isset($data['data']['systems']) ){
$systems = (array)$data['data']['systems'];
}
// check if system data or connection data is send
if(
count($systems) > 0 ||
count($connections) > 0
){
if( isset($data['data']['connections']) ){
$connections = (array)$data['data']['connections'];
}
// map changes expected =======================================================================
// check if system data or connection data is send
if(
count($systems) > 0 ||
count($connections) > 0
){
// loop current user maps and check for changes
foreach($maps as $map){
// map changes expected =======================================================================
// update system data ---------------------------------------------------------------------
foreach($systems as $i => $systemData){
// loop current user maps and check for changes
foreach($maps as $map){
// check if current system belongs to the current map
$map->filter('systems', ['id = ?', $systemData['id'] ]);
$filteredMap = $map->find(
['id = ?', $map->id ],
['limit' => 1]
);
// update system data ---------------------------------------------------------------------
foreach($systems as $i => $systemData){
// this should never fail
if(is_object($filteredMap)){
$filteredMap = $filteredMap->current();
// check if current system belongs to the current map
$map->filter('systems', ['id = ?', $systemData['id'] ]);
$filteredMap = $map->find(
['id = ?', $map->id ],
['limit' => 1]
);
// system belongs to the current map
if(is_object($filteredMap->systems)){
// update
unset($systemData['updated']);
$system = $filteredMap->systems->current();
$system->setData($systemData);
$system->updatedCharacterId = $activeCharacter;
$system->save();
// this should never fail
if(is_object($filteredMap)){
$filteredMap = $filteredMap->current();
// a system belongs to ONE map -> speed up for multiple maps
unset($systemData[$i]);
}
// system belongs to the current map
if(is_object($filteredMap->systems)){
// update
unset($systemData['updated']);
$system = $filteredMap->systems->current();
$system->setData($systemData);
$system->updatedCharacterId = $activeCharacter;
$system->save();
// a system belongs to ONE map -> speed up for multiple maps
unset($systemData[$i]);
}
}
}
// update connection data -----------------------------------------------------------------
foreach($connections as $i => $connectionData){
// update connection data -----------------------------------------------------------------
foreach($connections as $i => $connectionData){
// check if the current connection belongs to the current map
$map->filter('connections', ['id = ?', $connectionData['id'] ]);
$filteredMap = $map->find(
['id = ?', $map->id ],
['limit' => 1]
);
// check if the current connection belongs to the current map
$map->filter('connections', ['id = ?', $connectionData['id'] ]);
$filteredMap = $map->find(
['id = ?', $map->id ],
['limit' => 1]
);
// this should never fail
if(is_object($filteredMap)){
$filteredMap = $filteredMap->current();
// this should never fail
if(is_object($filteredMap)){
$filteredMap = $filteredMap->current();
// connection belongs to the current map
if(is_object($filteredMap->connections)){
// update
unset($connectionData['updated']);
$connection = $filteredMap->connections->current();
$connection->setData($connectionData);
$connection->save();
// connection belongs to the current map
if(is_object($filteredMap->connections)){
// update
unset($connectionData['updated']);
$connection = $filteredMap->connections->current();
$connection->setData($connectionData);
$connection->save();
// a connection belongs to ONE map -> speed up for multiple maps
unset($connectionData[$i]);
}
// a connection belongs to ONE map -> speed up for multiple maps
unset($connectionData[$i]);
}
}
}
}
}
// format map Data for return
$return->mapData = self::getFormattedMapData($maps);
// cache time(s) per user should be equal or less than this function is called
// prevent request flooding
$responseTTL = (int)$f3->get('PATHFINDER.TIMER.UPDATE_SERVER_MAP.DELAY') / 1000;
$f3->set($cacheKey, $return, $responseTTL);
}else{
// get from cache
$return = $f3->get($cacheKey);
}
// format map Data for return
$return->mapData = self::getFormattedMapData($maps);
// cache time(s) per user should be equal or less than this function is called
// prevent request flooding
$responseTTL = (int)$f3->get('PATHFINDER.TIMER.UPDATE_SERVER_MAP.DELAY') / 1000;
$f3->set($cacheKey, $return, $responseTTL);
}else{
// user logged off
$return->error[] = $this->getLogoutError();
// get from cache
$return = $f3->get($cacheKey);
}
echo json_encode( $return );
@@ -680,71 +664,68 @@ class Map extends Controller\AccessController {
$return = (object) [];
$return->error = [];
if( $activeCharacter = $this->getCharacter(0) ){
$postData = $f3->get('POST');
if( !empty($mapIds = (array)$postData['mapIds']) ){
// IMPORTANT for now -> just update a single map (save performance)
$mapId = (int)reset($mapIds);
// get map and check map access
$map = $activeCharacter->getMap( (int)$mapId);
$activeCharacter = $this->getCharacter(0);
if( !is_null($map) ){
$characterMapData = (array)$postData['characterMapData'];
$postData = $f3->get('POST');
if( !empty($mapIds = (array)$postData['mapIds']) ){
// IMPORTANT for now -> just update a single map (save performance)
$mapId = (int)reset($mapIds);
// get map and check map access
$map = $activeCharacter->getMap( (int)$mapId);
// check if data for specific system is requested
$systemData = (array)$postData['systemData'];
// if data is requested extend the cache key in order to get new data
$requestSystemData = (object) [];
$requestSystemData->mapId = isset($systemData['mapId']) ? (int) $systemData['mapId'] : 0;
$requestSystemData->systemId = isset($systemData['systemData']['id']) ? (int) $systemData['systemData']['id'] : 0;
if( !is_null($map) ){
$characterMapData = (array)$postData['characterMapData'];
// update current location
// -> suppress temporary timeout errors
$activeCharacter = $activeCharacter->updateLog(['suppressTimeoutErrors' => true]);
// check if data for specific system is requested
$systemData = (array)$postData['systemData'];
// if data is requested extend the cache key in order to get new data
$requestSystemData = (object) [];
$requestSystemData->mapId = isset($systemData['mapId']) ? (int) $systemData['mapId'] : 0;
$requestSystemData->systemId = isset($systemData['systemData']['id']) ? (int) $systemData['systemData']['id'] : 0;
// check character log (current system) and manipulate map (e.g. add new system)
if( (bool)$characterMapData['mapTracking'] ){
$map = $this->updateMapData($activeCharacter, $map);
}
// update current location
// -> suppress temporary timeout errors
$activeCharacter = $activeCharacter->updateLog(['suppressTimeoutErrors' => true]);
$cacheKey = $this->getUserDataCacheKey($mapId, $requestSystemData->systemId);
if( !$f3->exists($cacheKey) ){
$return->mapUserData[] = $map->getUserData();
// check character log (current system) and manipulate map (e.g. add new system)
if( (bool)$characterMapData['mapTracking'] ){
$map = $this->updateMapData($activeCharacter, $map);
}
// request signature data for a system if user has map access!
if( $mapId === $requestSystemData->mapId ){
$system = $map->getSystemById( $requestSystemData->systemId );
$cacheKey = $this->getUserDataCacheKey($mapId, $requestSystemData->systemId);
if( !$f3->exists($cacheKey) ){
$return->mapUserData[] = $map->getUserData();
if( !is_null($system) ){
// data for currently selected system
$return->system = $system->getData();
$return->system->signatures = $system->getSignaturesData();
}
// request signature data for a system if user has map access!
if( $mapId === $requestSystemData->mapId ){
$system = $map->getSystemById( $requestSystemData->systemId );
if( !is_null($system) ){
// data for currently selected system
$return->system = $system->getData();
$return->system->signatures = $system->getSignaturesData();
}
// cache time (seconds) should be equal or less than request trigger time
// prevent request flooding
$responseTTL = (int)$f3->get('PATHFINDER.TIMER.UPDATE_SERVER_USER_DATA.DELAY') / 1000;
// cache response
$f3->set($cacheKey, $return, $responseTTL);
}else{
// get from cache
// this should happen if a user has multiple program instances running
// with the same main char
$return = $f3->get($cacheKey);
}
// cache time (seconds) should be equal or less than request trigger time
// prevent request flooding
$responseTTL = (int)$f3->get('PATHFINDER.TIMER.UPDATE_SERVER_USER_DATA.DELAY') / 1000;
// cache response
$f3->set($cacheKey, $return, $responseTTL);
}else{
// get from cache
// this should happen if a user has multiple program instances running
// with the same main char
$return = $f3->get($cacheKey);
}
}
// get current user data -> this should not be cached because each user has different personal data
// even if they have multiple characters using the same map!
$return->userData = $activeCharacter->getUser()->getData();
}else{
// user logged off
$return->error[] = $this->getLogoutError();
}
// get current user data -> this should not be cached because each user has different personal data
// even if they have multiple characters using the same map!
$return->userData = $activeCharacter->getUser()->getData();
echo json_encode( $return );
}
@@ -755,7 +736,7 @@ class Map extends Controller\AccessController {
* @param Model\MapModel $map
* @return Model\MapModel
*/
protected function updateMapData($character, $map){
protected function updateMapData(Model\CharacterModel $character, Model\MapModel $map){
// update "map data" cache in case of map (system/connection) changes
$clearMapDataCache = false;

View File

@@ -208,7 +208,7 @@ class Route extends \Controller\AccessController {
/**
* update jump data for this instance
* -> data is either coming from CCPs static export OR from map specific data
* -> data is either coming from CCPs [SDE] OR from map specific data
* @param array $rows
*/
private function updateJumpData($rows = []){
@@ -336,79 +336,6 @@ class Route extends \Controller\AccessController {
return $P;
}
/**
* This function is just for setting up the cache table 'system_neighbour' which is used
* for system jump calculation. Call this function manually if CCP adds Systems/Stargates
*/
/*
private function setupSystemJumpTable(){
$pfDB = $this->getDB('PF');
$ccpDB = $this->getDB('CCP');
$query = "SELECT
map_sys.solarSystemID system_id,
map_sys.regionID region_id,
map_sys.constellationID constellation_id,
map_sys.solarSystemName system_name,
ROUND( map_sys.security, 2) system_security,
(
SELECT
GROUP_CONCAT( NULLIF(map_sys_inner.solarSystemName, NULL) SEPARATOR ':')
FROM
mapSolarSystemJumps map_jump INNER JOIN
mapSolarSystems map_sys_inner ON
map_sys_inner.solarSystemID = map_jump.toSolarSystemID
WHERE
map_jump.fromSolarSystemID = map_sys.solarSystemID
) system_neighbours
FROM
mapSolarSystems map_sys
HAVING
-- skip systems without neighbors (e.g. WHs)
system_neighbours IS NOT NULL
";
$rows = $ccpDB->exec($query);
if(count($rows) > 0){
// switch DB back to pathfinder DB
// clear cache table
$query = "TRUNCATE system_neighbour";
$pfDB->exec($query);
foreach($rows as $row){
$pfDB->exec("
INSERT INTO
system_neighbour(
regionId,
constellationId,
systemName,
systemId,
jumpNodes,
trueSec
)
VALUES(
:regionId,
:constellationId,
:systemName,
:systemId,
:jumpNodes,
:trueSec
)",
[
':regionId' => $row['region_id'],
':constellationId' => $row['constellation_id'],
':systemName' => $row['system_name'],
':systemId' => $row['system_id'],
':jumpNodes' => $row['system_neighbours'],
':trueSec' => $row['system_security']
]);
}
}
}
*/
/**
* find a route between two systems (system names)
* $searchDepth for recursive route search (5000 would be best but slow)
@@ -531,10 +458,7 @@ class Route extends \Controller\AccessController {
$return->error = [];
$return->routesData = [];
if(
$activeCharacter &&
!empty($requestData['routeData'])
){
if( !empty($requestData['routeData']) ){
$routesData = (array)$requestData['routeData'];

View File

@@ -35,22 +35,20 @@ class Signature extends Controller\AccessController{
if( !empty($systemIds) ){
$activeCharacter = $this->getCharacter();
if($activeCharacter){
/**
* @var Model\SystemModel $system
*/
$system = Model\BasicModel::getNew('SystemModel');
foreach($systemIds as $systemId){
$system->getById($systemId);
if(
!$system->dry() &&
$system->hasAccess($activeCharacter)
){
$signatureData = $system->getSignaturesData();
}
$system->reset();
/**
* @var Model\SystemModel $system
*/
$system = Model\BasicModel::getNew('SystemModel');
foreach($systemIds as $systemId){
$system->getById($systemId);
if(
!$system->dry() &&
$system->hasAccess($activeCharacter)
){
$signatureData = $system->getSignaturesData();
}
$system->reset();
}
}
@@ -86,141 +84,138 @@ class Signature extends Controller\AccessController{
if( !is_null($signatureData) ){
$activeCharacter = $this->getCharacter();
if($activeCharacter){
// signature ids that were updated/created
$updatedSignatureIds = [];
// signature ids that were updated/created
$updatedSignatureIds = [];
/**
* @var Model\SystemModel $system
*/
$system = Model\BasicModel::getNew('SystemModel');
/**
* @var Model\SystemModel $system
*/
$system = Model\BasicModel::getNew('SystemModel');
// update/add all submitted signatures
foreach($signatureData as $data){
// this key should not be saved (it is an obj)
unset($data['updated']);
// update/add all submitted signatures
foreach($signatureData as $data){
// this key should not be saved (it is an obj)
unset($data['updated']);
$system->getById( (int)$data['systemId']);
$system->getById( (int)$data['systemId']);
if( !$system->dry() ){
// update/save signature
if( !$system->dry() ){
// update/save signature
/**
* @var $signature Model\SystemSignatureModel
*/
$signature = null;
if( isset($data['pk']) ){
// try to get system by "primary key"
$signature = $system->getSignatureById($activeCharacter, (int)$data['pk']);
}elseif( isset($data['name']) ){
$signature = $system->getSignatureByName($activeCharacter, $data['name']);
}
/**
* @var $signature Model\SystemSignatureModel
*/
$signature = null;
if( isset($data['pk']) ){
// try to get system by "primary key"
$signature = $system->getSignatureById($activeCharacter, (int)$data['pk']);
}elseif( isset($data['name']) ){
$signature = $system->getSignatureByName($activeCharacter, $data['name']);
}
if( is_null($signature) ){
$signature = Model\BasicModel::getNew('SystemSignatureModel');
}
if( is_null($signature) ){
$signature = Model\BasicModel::getNew('SystemSignatureModel');
}
if($signature->dry()){
// new signature
$signature->systemId = $system;
$signature->updatedCharacterId = $activeCharacter;
$signature->createdCharacterId = $activeCharacter;
$signature->setData($data);
}else{
// update signature
if(
isset($data['name']) &&
isset($data['value'])
){
// update single key => value pair
$newData = [
$data['name'] => $data['value']
];
// if groupID changed -> typeID set to 0
if($data['name'] == 'groupId'){
$newData['typeId'] = 0;
}
if($signature->dry()){
// new signature
$signature->systemId = $system;
$signature->updatedCharacterId = $activeCharacter;
$signature->createdCharacterId = $activeCharacter;
$signature->setData($data);
}else{
// update signature
// update complete signature (signature reader dialog)
// systemId should not be updated
unset( $data['systemId'] );
// description should not be updated
unset( $data['description'] );
// prevent some data from overwrite manually changes
// wormhole typeID can not figured out/saved by the sig reader dialog
// -> type could not be identified -> do not overwrite them (e.g. sig update)
if(
isset($data['name']) &&
isset($data['value'])
$data['groupId'] == 5 ||
$data['typeId'] == 0
){
// update single key => value pair
$newData = [
$data['name'] => $data['value']
];
// if groupID changed -> typeID set to 0
if($data['name'] == 'groupId'){
$newData['typeId'] = 0;
}
}else{
// update complete signature (signature reader dialog)
// systemId should not be updated
unset( $data['systemId'] );
// description should not be updated
unset( $data['description'] );
// prevent some data from overwrite manually changes
// wormhole typeID can not figured out/saved by the sig reader dialog
// -> type could not be identified -> do not overwrite them (e.g. sig update)
if(
$data['groupId'] == 5 ||
$data['typeId'] == 0
){
unset( $data['typeId'] );
}
// "sig reader" should not overwrite signature group information
if(
$data['groupId'] == 0 &&
$signature->groupId > 0
){
unset($data['groupId']);
}
$newData = $data;
unset( $data['typeId'] );
}
if( $signature->hasChanged($newData) ){
// Character should only be changed if something else has changed
$signature->updatedCharacterId = $activeCharacter;
$signature->setData($newData);
// "sig reader" should not overwrite signature group information
if(
$data['groupId'] == 0 &&
$signature->groupId > 0
){
unset($data['groupId']);
}
$newData = $data;
}
$signature->save();
$updatedSignatureIds[] = $signature->id;
// get a fresh signature object with the new data. This is a bad work around!
// but i could not figure out what the problem was when using the signature model, saved above :(
// -> some caching problems
/**
* @var $newSignature Model\SystemSignatureModel
*/
$newSignature = Model\BasicModel::getNew('SystemSignatureModel');
$newSignature->getById( $signature->id, 0);
$return->signatures[] = $newSignature->getData();
$signature->reset();
if( $signature->hasChanged($newData) ){
// Character should only be changed if something else has changed
$signature->updatedCharacterId = $activeCharacter;
$signature->setData($newData);
}
}
$system->reset();
$signature->save();
$updatedSignatureIds[] = $signature->id;
// get a fresh signature object with the new data. This is a bad work around!
// but i could not figure out what the problem was when using the signature model, saved above :(
// -> some caching problems
/**
* @var $newSignature Model\SystemSignatureModel
*/
$newSignature = Model\BasicModel::getNew('SystemSignatureModel');
$newSignature->getById( $signature->id, 0);
$return->signatures[] = $newSignature->getData();
$signature->reset();
}
// delete "old" signatures ------------------------------------------------------------------
$system->reset();
}
// delete "old" signatures ------------------------------------------------------------------
if(
$deleteOldSignatures &&
$systemId
){
$system->getById($systemId);
if(
$deleteOldSignatures &&
$systemId
!$system->dry() &&
$system->hasAccess($activeCharacter)
){
$system->getById($systemId);
if(
!$system->dry() &&
$system->hasAccess($activeCharacter)
){
$allSignatures = $system->getSignatures();
foreach($allSignatures as $tempSignature){
if( !in_array($tempSignature->id, $updatedSignatureIds)){
$tempSignature->delete( $activeCharacter );
}
$allSignatures = $system->getSignatures();
foreach($allSignatures as $tempSignature){
if( !in_array($tempSignature->id, $updatedSignatureIds)){
$tempSignature->delete( $activeCharacter );
}
}
}
}
}

View File

@@ -91,7 +91,7 @@ class System extends \Controller\AccessController {
}
/**
* get static system Data from CCPs Static DB export
* get system Data from CCPs [SDE]
* search column for IDs can be (solarSystemID, regionID, constellationID)
* @param array $columnIDs
* @param string $column
@@ -201,47 +201,45 @@ class System extends \Controller\AccessController {
){
$activeCharacter = $this->getCharacter();
if($activeCharacter){
$systemData = (array)$postData['systemData'];
$mapData = (array)$postData['mapData'];
$systemData = (array)$postData['systemData'];
$mapData = (array)$postData['mapData'];
if( isset($systemData['id']) ){
// update existing system (e.g. changed system description) -------------------
if( isset($systemData['id']) ){
// update existing system (e.g. changed system description) -------------------
/**
* @var $system Model\SystemModel
*/
$system = Model\BasicModel::getNew('SystemModel');
$system->getById($systemData['id']);
if( !$system->dry() ){
if( $system->hasAccess($activeCharacter) ){
// system model found
$systemModel = $system;
}
/**
* @var $system Model\SystemModel
*/
$system = Model\BasicModel::getNew('SystemModel');
$system->getById($systemData['id']);
if( !$system->dry() ){
if( $system->hasAccess($activeCharacter) ){
// system model found
$systemModel = $system;
}
}elseif( isset($mapData['id']) ){
// save NEW system ------------------------------------------------------------
}
}elseif( isset($mapData['id']) ){
// save NEW system ------------------------------------------------------------
/**
* @var $map Model\MapModel
*/
$map = Model\BasicModel::getNew('MapModel');
$map->getById($mapData['id']);
if(
!$map->dry() &&
$map->hasAccess($activeCharacter)
){
// make sure system is not already on map
// --> (e.g. multiple simultaneously save() calls for the same system)
if( is_null( $systemModel = $map->getSystemByCCPId($systemData['systemId']) ) ){
// system not found on map -> get static system data (CCP DB)
$systemModel = $map->getNewSystem($systemData['systemId']);
$systemModel->createdCharacterId = $activeCharacter;
}
// map is not changeable for a system! (security)
$systemData['mapId'] = $map;
/**
* @var $map Model\MapModel
*/
$map = Model\BasicModel::getNew('MapModel');
$map->getById($mapData['id']);
if(
!$map->dry() &&
$map->hasAccess($activeCharacter)
){
// make sure system is not already on map
// --> (e.g. multiple simultaneously save() calls for the same system)
if( is_null( $systemModel = $map->getSystemByCCPId($systemData['systemId']) ) ){
// system not found on map -> get static system data (CCP DB)
$systemModel = $map->getNewSystem($systemData['systemId']);
$systemModel->createdCharacterId = $activeCharacter;
}
// map is not changeable for a system! (security)
$systemData['mapId'] = $map;
}
}
}
@@ -318,27 +316,25 @@ class System extends \Controller\AccessController {
$return->error = [];
$return->systemData = [];
if( $activeCharacter = $this->getCharacter() ){
$constellationId = 0;
$constellationId = 0;
// check for search parameter
if( isset($params['arg1']) ){
$constellationId = (int)$params['arg1'];
}
$cacheKey = 'CACHE_CONSTELLATION_SYSTEMS_' . self::formatHiveKey($constellationId);
// check for search parameter
if( isset($params['arg1']) ){
$constellationId = (int)$params['arg1'];
}
$cacheKey = 'CACHE_CONSTELLATION_SYSTEMS_' . self::formatHiveKey($constellationId);
if($f3->exists($cacheKey)){
$return->systemData = $f3->get($cacheKey);
}else{
if($constellationId > 0){
$systemModels = $this->getSystemModelByIds([$constellationId], 'constellationID');
if($f3->exists($cacheKey)){
$return->systemData = $f3->get($cacheKey);
}else{
if($constellationId > 0){
$systemModels = $this->getSystemModelByIds([$constellationId], 'constellationID');
foreach($systemModels as $systemModel){
$return->systemData[] = $systemModel->getData();
}
$f3->set($cacheKey, $return->systemData, $f3->get('PATHFINDER.CACHE.CONSTELLATION_SYSTEMS') );
foreach($systemModels as $systemModel){
$return->systemData[] = $systemModel->getData();
}
$f3->set($cacheKey, $return->systemData, $f3->get('PATHFINDER.CACHE.CONSTELLATION_SYSTEMS') );
}
}
@@ -356,10 +352,9 @@ class System extends \Controller\AccessController {
$return->error = [];
$return->systemData = [];
if(
($activeCharacter = $this->getCharacter()) &&
!empty($postData['systemData'])
){
if( !empty($postData['systemData'] )){
$activeCharacter = $this->getCharacter();
$return->clearOtherWaypoints = (bool)$postData['clearOtherWaypoints'];
$return->first = (bool)$postData['first'];
@@ -390,17 +385,16 @@ class System extends \Controller\AccessController {
*/
public function delete(\Base $f3){
$systemIds = (array)$f3->get('POST.systemIds');
$activeCharacter = $this->getCharacter();
if($activeCharacter = $this->getCharacter()){
/**
* @var Model\SystemModel $system
*/
$system = Model\BasicModel::getNew('SystemModel');
foreach((array)$systemIds as $systemId){
$system->getById($systemId);
$system->delete($activeCharacter);
$system->reset();
}
/**
* @var Model\SystemModel $system
*/
$system = Model\BasicModel::getNew('SystemModel');
foreach((array)$systemIds as $systemId){
$system->getById($systemId);
$system->delete($activeCharacter);
$system->reset();
}
echo json_encode([]);

View File

@@ -70,7 +70,7 @@ class User extends Controller\Controller{
$characterModel->save();
// write login log --------------------------------------
self::getLogger( $this->f3->get('PATHFINDER.LOGFILES.LOGIN') )->write(
self::getLogger('LOGIN')->write(
sprintf(self::LOG_LOGGED_IN,
$user->_id,
$user->name,
@@ -162,8 +162,7 @@ class User extends Controller\Controller{
* @param \Base $f3
*/
public function deleteLog(\Base $f3){
$activeCharacter = $this->getCharacter();
if($activeCharacter){
if($activeCharacter = $this->getCharacter()){
if($characterLog = $activeCharacter->getLog()){
$characterLog->erase();
}
@@ -177,6 +176,10 @@ class User extends Controller\Controller{
public function logout(\Base $f3){
$this->deleteLog($f3);
parent::logout($f3);
$return = (object) [];
$return->reroute = rtrim(self::getEnvironmentData('URL'), '/') . $f3->alias('login');
echo json_encode($return);
}
/**
@@ -338,7 +341,7 @@ class User extends Controller\Controller{
if($status){
// save log
$logText = "id: %s, name: %s, ip: %s";
self::getLogger( $this->f3->get('PATHFINDER.LOGFILES.DELETE_ACCOUNT') )->write(
self::getLogger('DELETE_ACCOUNT')->write(
sprintf($logText, $user->id, $user->name, $f3->get('IP'))
);

View File

@@ -39,9 +39,6 @@ class AppController extends Controller {
// body element class
$f3->set('bodyClass', 'pf-body pf-landing');
// landing page is always IGB trusted
$f3->set('trusted', 1);
// JS main file
$f3->set('jsView', 'login');

View File

@@ -903,6 +903,6 @@ class Sso extends Api\User{
* @return \Log
*/
static function getCrestLogger(){
return parent::getLogger('crest');
return parent::getLogger('CREST');
}
}

View File

@@ -19,6 +19,8 @@ class Controller {
const COOKIE_NAME_STATE = 'cookie';
const COOKIE_PREFIX_CHARACTER = 'char';
const LOG_UNAUTHORIZED = 'IP: [%-20s] Agent: [%s]';
const ERROR_SESSION_SUSPECT = 'Suspect id: [%30s], ip: [%40s], new ip: [%40s], User-Agent: %s ';
/**
* @var \Base
@@ -78,9 +80,6 @@ class Controller {
$this->initSession();
if( !$f3->get('AJAX') ){
// set page parameters for static page render
// check if user is in game (IGB active)
$f3->set('isIngame', self::isIGB() );
// js path (build/minified or raw uncompressed files)
$f3->set('pathJs', 'public/js/' . $f3->get('PATHFINDER.VERSION') );
@@ -123,18 +122,13 @@ class Controller {
$f3 = $this->getF3();
if( ($ip = $session->ip() )!= $f3->get('IP') ){
// IP address changed -> not critical
$sessionSuspectLogFile = 'PATHFINDER.LOGFILES.SESSION_SUSPECT';
if( !$f3->devoid($sessionSuspectLogFile) ){
$this->getLogger(
$f3->get($sessionSuspectLogFile)
)->write( sprintf(
self::ERROR_SESSION_SUSPECT,
$sid,
$session->ip(),
$f3->get('IP'),
$f3->get('AGENT')
));
}
self::getLogger('SESSION_SUSPECT')->write( sprintf(
self::ERROR_SESSION_SUSPECT,
$sid,
$session->ip(),
$f3->get('IP'),
$f3->get('AGENT')
));
// no more error handling here
return true;
}elseif($session->agent() != $f3->get('AGENT') ){
@@ -401,24 +395,6 @@ class Controller {
// destroy session login data -------------------------------
$f3->clear('SESSION');
if( $f3->get('AJAX') ){
$return = (object) [];
if(
isset($params['reroute']) &&
(bool)$params['reroute']
){
$return->reroute = rtrim(self::getEnvironmentData('URL'), '/') . $f3->alias('login');
}else{
// no reroute -> errors can be shown
$return->error[] = $this->getLogoutError();
}
echo json_encode($return);
}else{
// redirect to landing page
$f3->reroute('@login');
}
}
/**
@@ -559,11 +535,51 @@ class Controller {
/**
* Callback for framework "unload"
* check -> config.ini
* -> this function is called on each request!
* -> configured in config.ini
* @param \Base $f3
* @return bool
*/
public function unload(\Base $f3){
// track some 4xx Client side errors
// 5xx errors are handled in "ONERROR" callback
$status = http_response_code();
$halt = false;
switch( $status ){
case 403: // Unauthorized
self::getLogger('UNAUTHORIZED')->write(sprintf(
self::LOG_UNAUTHORIZED,
$f3->get('IP'),
$f3->get('AGENT')
));
$halt = true;
break;
}
// Ajax
if(
$halt &&
$f3->get('AJAX')
){
$params = (array)$f3->get('POST');
$response = (object) [];
$response->type = 'error';
$response->code = $status;
$response->message = 'Access denied: User not found';
$return = (object) [];
if( (bool)$params['reroute']){
$return->reroute = rtrim(self::getEnvironmentData('URL'), '/') . $f3->alias('login');
}else{
// no reroute -> errors can be shown
$return->error[] = $response;
}
echo json_encode($return);
die();
}
return true;
}
@@ -598,47 +614,6 @@ class Controller {
return $controller;
}
/**
* check whether the page is IGB trusted or not
* @return boolean
*/
static function isIGBTrusted(){
$igbHeaderData = self::getIGBHeaderData();
return $igbHeaderData->trusted;
}
/**
* get all eve IGB specific header data
* @return \stdClass
*/
static function getIGBHeaderData(){
$data = (object) [];
$data->trusted = false;
$data->values = [];
$headerData = self::getRequestHeaders();
foreach($headerData as $key => $value){
$key = strtolower($key);
$key = str_replace('eve_', 'eve-', $key);
if (strpos($key, 'eve-') === 0) {
$key = str_replace('eve-', '', $key);
if (
$key === 'trusted' &&
$value === 'Yes'
) {
$data->trusted = true;
}
$data->values[$key] = $value;
}
}
return $data;
}
/**
* Helper function to return all headers because
* getallheaders() is not available under nginx
@@ -714,19 +689,6 @@ class Controller {
return $f3->get($cacheKey);
}
/**
* check if the current request was send from inGame
* @return bool
*/
static function isIGB(){
$isIGB = false;
$igbHeaderData = self::getIGBHeaderData();
if(count($igbHeaderData->values) > 0){
$isIGB = true;
}
return $isIGB;
}
/**
* get the current registration status
* 0=registration stop |1=new registration allowed
@@ -737,12 +699,13 @@ class Controller {
}
/**
* get a log controller e.g. "debug"
* @param string $loggerType
* @return \Log
* get a Logger object by Hive key
* -> set in pathfinder.ini
* @param string $type
* @return \Log|null
*/
static function getLogger($loggerType){
return LogController::getLogger($loggerType);
static function getLogger($type){
return LogController::getLogger($type);
}
/**

View File

@@ -11,28 +11,22 @@ namespace controller;
class LogController extends Controller {
/**
* get an singleton instance for a logger instance
* @param $logFileName
* @return mixed
* get Logger instance
* @param string $type
* @return \Log|null
*/
public static function getLogger($logFileName){
public static function getLogger($type){
$f3 = \Base::instance();
$hiveKey = 'LOGGER' . $logFileName;
// check if log controller already exists
if( !$f3->exists($hiveKey) ){
// create new logger instance
$logFile = $logFileName . '.log';
$f3->set($hiveKey, new \Log($logFile));
$logFiles = $f3->get('PATHFINDER.LOGFILES');
$logger = null;
if( !empty($logFiles[$type]) ){
$logFile = $logFiles[$type] . '.log';
$logger = new \Log($logFile);
}
return $f3->get($hiveKey);
return $logger;
}
}

View File

@@ -24,9 +24,6 @@ class MapController extends AccessController {
// body element class
$f3->set('bodyClass', 'pf-body');
// set trust attribute to template
$f3->set('trusted', (int)self::isIGBTrusted());
// JS main file
$f3->set('jsView', 'mappage');
}

View File

@@ -81,6 +81,7 @@ class Setup extends Controller {
'Model\SystemModel',
'Model\SystemWormholeModel',
'Model\ConstellationWormholeModel',
'Model\ConnectionModel',
'Model\SystemSignatureModel',
@@ -108,6 +109,12 @@ class Setup extends Controller {
]
];
/**
* database error
* @var bool
*/
protected $databaseCheck = true;
/**
* event handler for all "views"
* some global template variables are set in here
@@ -157,6 +164,12 @@ class Setup extends Controller {
return;
}elseif( !empty($params['fixCols']) ){
$fixColumns = true;
}elseif( !empty($params['buildIndex']) ){
$this->setupSystemJumpTable();
}elseif( !empty($params['importTable']) ){
$this->importTable($params['importTable']);
}elseif( !empty($params['exportTable']) ){
$this->exportTable($params['exportTable']);
}elseif( !empty($params['clearCache']) ){
$this->clearCache($f3);
}
@@ -174,10 +187,105 @@ class Setup extends Controller {
// set database connection information
$f3->set('checkDatabase', $this->checkDatabase($f3, $fixColumns));
// set index information
$f3->set('indexInformation', $this->getIndexData());
// set cache size
$f3->set('cacheSize', $this->getCacheData($f3));
}
/**
* IMPORTANT: This function is not required for setup. It just imports *.json -> DB
*
* imports wormhole static data for "shattered" systems
* into table "system_wormhole"
* -> a *.csv dump of this *.json file can e found under /export/csv
* @param \Base $f3
* @throws \Exception
*/
protected function importSystemWormholesFromJson(\Base $f3){
$path = $f3->get('EXPORT') .'json/statics.json';
$pfDB = $this->getDB('PF');
$ccpDB = $this->getDB('CCP');
$content = file_get_contents($path);
$jsonIterator = new \RecursiveIteratorIterator(
new \RecursiveArrayIterator(json_decode($content, TRUE)),
\RecursiveIteratorIterator::SELF_FIRST);
$staticNames = [];
$data = [];
$tmpVal = (object) [];
foreach ($jsonIterator as $key => $val) {
if(is_array($val)) {
if(isset($tmpVal->name)){
$data[] = $tmpVal;
}
$tmpVal = (object) [];
$tmpVal->name = $key;
} else {
$tmpVal->wh = isset($tmpVal->wh) ? array_merge($tmpVal->wh, [$val]) : [$val];
$staticNames[] = $val;
}
}
$data[] = $tmpVal;
// get static IDs by name ------------------------------
$staticNames = array_unique($staticNames);
$staticNames = array_flip($staticNames);
foreach($staticNames as $name => $index){
$result = $pfDB->exec("
SELECT
id
FROM " . $pfDB->quotekey(Model\BasicModel::getNew('WormholeModel')->getTable()) . "
WHERE " . $pfDB->quotekey('name') . " = :name",
[':name' => $name]
);
$id = (int)$result[0]['id'];
if($id){
$staticNames[$name] = (int)$result[0]['id'];
}else{
$f3->error(500, 'Wormhole data missing in table "wormhole" for "name" = "' . $name . '"');
}
}
// import data -----------------------------------------
$systemWormhole = Model\BasicModel::getNew('SystemWormholeModel');
foreach($data as $staticData){
$result = $ccpDB->exec("
SELECT
solarSystemID
FROM " . $ccpDB->quotekey('mapSolarSystems') . "
WHERE
" . $ccpDB->quotekey('solarSystemName') . " = :systemName",
[':systemName' => $staticData->name]
);
$solarSystemID = (int)$result[0]['solarSystemID'];
if($solarSystemID){
foreach($staticData->wh as $wh){
$staticId = (int)$staticNames[$wh];
if($staticId){
// check if entry already exists
$systemWormhole->load(['systemId=? AND wormholeId=?', $solarSystemID, $staticId]);
if( $systemWormhole->dry() ){
$systemWormhole->systemId = $solarSystemID;
$systemWormhole->wormholeId = $staticId;
$systemWormhole->save();
$systemWormhole->reset();
}
}else{
$f3->error(500, 'Wormhole data missing for "name" = "' . $wh . '"');
}
}
}else{
$f3->error(500, 'System "' . $staticData->name . '" not found on CCP´s [SDE] database');
}
}
}
/**
* set environment information
* @param \Base $f3
@@ -234,23 +342,23 @@ class Setup extends Controller {
],
'os' => [
'label' => 'OS',
'value' => php_uname('s')
'value' => function_exists('php_uname') ? php_uname('s') : 'unknown'
],
'name' => [
'label' => 'Host name',
'value' => php_uname('n')
'value' => function_exists('php_uname') ? php_uname('n') : 'unknown'
],
'release' => [
'label' => 'Release name',
'value' => php_uname('r')
'value' => function_exists('php_uname') ? php_uname('r') : 'unknown'
],
'version' => [
'label' => 'Version info',
'value' => php_uname('v')
'value' => function_exists('php_uname') ? php_uname('v') : 'unknown'
],
'machine' => [
'label' => 'Machine type',
'value' => php_uname('m')
'value' => function_exists('php_uname') ? php_uname('m') : 'unknown'
],
'root' => [
'label' => 'Document root',
@@ -262,7 +370,7 @@ class Setup extends Controller {
],
'protocol' => [
'label' => 'Protocol',
'value' => $f3->get('SCHEME')
'value' => strtoupper( $f3->get('SCHEME') )
]
];
@@ -311,6 +419,18 @@ class Setup extends Controller {
'version' => strstr(PCRE_VERSION, ' ', true),
'check' => version_compare( strstr(PCRE_VERSION, ' ', true), $f3->get('REQUIREMENTS.PHP.PCRE_VERSION'), '>=')
],
'pdo' => [
'label' => 'PDO',
'required' => 'installed',
'version' => extension_loaded('pdo') ? 'installed' : 'not installed',
'check' => extension_loaded('pdo')
],
'pdoMysql' => [
'label' => 'PDO_MYSQL',
'required' => 'installed',
'version' => extension_loaded('pdo_mysql') ? 'installed' : 'not installed',
'check' => extension_loaded('pdo_mysql')
],
'gd' => [
'label' => 'GD Library (for Image plugin)',
'required' => 'installed',
@@ -661,6 +781,13 @@ class Setup extends Controller {
$f3->reroute('@setup');
}
if($dbStatusCheckCount !== 0){
$this->databaseCheck = false;
}
// sort tables for better readability
ksort($requiredTables);
$this->databases[$dbKey]['info'] = [
'db' => $db,
'label' => $dbLabel,
@@ -758,6 +885,181 @@ class Setup extends Controller {
return $checkTables;
}
/** get indexed (cache) data information
* @return array
*/
protected function getIndexData(){
// active DB and tables are required for obtain index data
if( $this->databaseCheck ){
$indexInfo = [
'SystemNeighbourModel' => [
'action' => [
[
'task' => 'buildIndex',
'label' => 'build',
'icon' => 'fa-refresh',
'btn' => 'btn-primary'
]
],
'table' => Model\BasicModel::getNew('SystemNeighbourModel')->getTable(),
'count' => DB\Database::instance()->getRowCount( Model\BasicModel::getNew('SystemNeighbourModel')->getTable() )
],
'WormholeModel' => [
'action' => [
[
'task' => 'exportTable',
'label' => 'export',
'icon' => 'fa-download',
'btn' => 'btn-default'
],[
'task' => 'importTable',
'label' => 'import',
'icon' => 'fa-upload',
'btn' => 'btn-primary'
]
],
'table' => Model\BasicModel::getNew('WormholeModel')->getTable(),
'count' => DB\Database::instance()->getRowCount( Model\BasicModel::getNew('WormholeModel')->getTable() )
],
'SystemWormholeModel' => [
'action' => [
[
'task' => 'exportTable',
'label' => 'export',
'icon' => 'fa-download',
'btn' => 'btn-default'
],[
'task' => 'importTable',
'label' => 'import',
'icon' => 'fa-upload',
'btn' => 'btn-primary'
]
],
'table' => Model\BasicModel::getNew('SystemWormholeModel')->getTable(),
'count' => DB\Database::instance()->getRowCount( Model\BasicModel::getNew('SystemWormholeModel')->getTable() )
],
'ConstellationWormholeModel' => [
'action' => [
[
'task' => 'exportTable',
'label' => 'export',
'icon' => 'fa-download',
'btn' => 'btn-default'
],[
'task' => 'importTable',
'label' => 'import',
'icon' => 'fa-upload',
'btn' => 'btn-primary'
]
],
'table' => Model\BasicModel::getNew('ConstellationWormholeModel')->getTable(),
'count' => DB\Database::instance()->getRowCount( Model\BasicModel::getNew('ConstellationWormholeModel')->getTable() )
]
];
}else{
$indexInfo = [
'SystemNeighbourModel' => [
'action' => [],
'table' => 'Fix database errors first!'
]
];
}
return $indexInfo;
}
/**
* This function is just for setting up the cache table 'system_neighbour' which is used
* for system jump calculation. Call this function manually when CCP adds Systems/Stargates
*/
protected function setupSystemJumpTable(){
$pfDB = $this->getDB('PF');
$ccpDB = $this->getDB('CCP');
$query = "SELECT
map_sys.solarSystemID system_id,
map_sys.regionID region_id,
map_sys.constellationID constellation_id,
map_sys.solarSystemName system_name,
ROUND( map_sys.security, 4) system_security,
(
SELECT
GROUP_CONCAT( NULLIF(map_sys_inner.solarSystemName, NULL) SEPARATOR ':')
FROM
mapSolarSystemJumps map_jump INNER JOIN
mapSolarSystems map_sys_inner ON
map_sys_inner.solarSystemID = map_jump.toSolarSystemID
WHERE
map_jump.fromSolarSystemID = map_sys.solarSystemID
) system_neighbours
FROM
mapSolarSystems map_sys
HAVING
-- skip systems without neighbors (e.g. WHs)
system_neighbours IS NOT NULL
";
$rows = $ccpDB->exec($query);
if(count($rows) > 0){
// switch DB back to pathfinder DB
// clear cache table
$pfDB->exec("TRUNCATE system_neighbour");
foreach($rows as $row){
$pfDB->exec("
INSERT INTO
system_neighbour(
regionId,
constellationId,
systemName,
systemId,
jumpNodes,
trueSec
)
VALUES(
:regionId,
:constellationId,
:systemName,
:systemId,
:jumpNodes,
:trueSec
)",
[
':regionId' => $row['region_id'],
':constellationId' => $row['constellation_id'],
':systemName' => $row['system_name'],
':systemId' => $row['system_id'],
':jumpNodes' => $row['system_neighbours'],
':trueSec' => $row['system_security']
]);
}
}
}
/**
* import table data from existing dump file (e.g *.csv)
* @param $modelClass
* @return bool
* @throws \Exception
*/
protected function importTable($modelClass){
$this->getDB('PF');
return Model\BasicModel::getNew($modelClass)->importData();
}
/**
* export table data
* @param $modelClass
* @throws \Exception
*/
protected function exportTable($modelClass){
$this->getDB('PF');
Model\BasicModel::getNew($modelClass)->exportData();
}
/**
* get cache folder size as string
* @param \Base $f3

View File

@@ -9,7 +9,6 @@
namespace cron;
use data\filesystem\Search;
use Controller;
class Cache {
@@ -53,7 +52,7 @@ class Cache {
$execTime = microtime(true) - $time_start;
// Log ------------------------
$log = Controller\LogController::getLogger('cron_' . __FUNCTION__);
$log = new \Log('cron_' . __FUNCTION__ . '.log');
$log->write( sprintf(self::LOG_TEXT, __FUNCTION__, $deletedFiles, $deletedSize, $notWritableFiles, $deleteErrors, $execTime) );
}

View File

@@ -214,7 +214,7 @@ class CcpSystemsUpdate {
$execTimeUpdateTables = $time_end - $time_start;
// Log ------------------------
$log = Controller\LogController::getLogger('cron_' . __FUNCTION__);
$log = new \Log('cron_' . __FUNCTION__ . '.log');
$log->write( sprintf(self::LOG_TEXT, __FUNCTION__, $execTimePrepareSystemLogTables, $execTimeGetJumpData, $execTimeGetKillData, $execTimeUpdateTables) );
}
}

View File

@@ -7,7 +7,6 @@
*/
namespace cron;
use Controller;
use DB;
class MapUpdate {
@@ -39,7 +38,7 @@ class MapUpdate {
$deactivatedMapsCount = $pfDB->count();
// Log ------------------------
$log = Controller\LogController::getLogger('cron_' . __FUNCTION__);
$log = new \Log('cron_' . __FUNCTION__ . '.log');
$log->write( sprintf(self::LOG_TEXT_MAPS, __FUNCTION__, $deactivatedMapsCount) );
}
@@ -63,7 +62,7 @@ class MapUpdate {
$deletedMapsCount = $pfDB->count();
// Log ------------------------
$log = Controller\LogController::getLogger('cron_' . __FUNCTION__);
$log = new \Log('cron_' . __FUNCTION__ . '.log');
$log->write( sprintf(self::LOG_TEXT_MAPS, __FUNCTION__, $deletedMapsCount) );
}

View File

@@ -1,47 +0,0 @@
<?php
/**
* Created by PhpStorm.
* User: Exodus
* Date: 01.04.2016
* Time: 19:48
*/
namespace Data\Mapper;
class IgbHeader extends AbstractIterator {
protected static $map = [
'charid' => ['character' => 'id'],
'charname' => ['character' => 'name'],
// --------------------------------------------------------------------
'solarsystemid' => ['system' => 'id'],
'solarsystemname' => ['system' => 'name'],
'constellationid' => ['constellation' => 'id'],
'constellationname' => ['constellation' => 'name'],
'regionid' => ['region' => 'id'],
'regionname' => ['region' => 'name'],
// --------------------------------------------------------------------
'shiptypeid' => ['ship' => 'typeId'],
'shiptypename' => ['ship' => 'typeName'],
'shipid' => ['ship' => 'id'],
'shipname' => ['ship' => 'name'],
'stationid' => ['station' => 'id'],
'stationname' => ['station' => 'name'],
// --------------------------------------------------------------------
'corpid' => ['corporation' => 'id'],
'corpname' => ['corporation' => 'name'],
'allianceid' => ['alliance' => 'id'],
'alliancename' => ['alliance' => 'name']
];
}

View File

@@ -69,7 +69,7 @@ class Database extends \Prefab {
/**
* get database
* @param string $database
* @return mixed|void
* @return SQL
*/
public function getDB($database = 'PF'){
@@ -102,7 +102,6 @@ class Database extends \Prefab {
* @return SQL
*/
protected function connect($dns, $name, $user, $password){
$db = null;
try {
@@ -111,16 +110,65 @@ class Database extends \Prefab {
$user,
$password,
[
\PDO::MYSQL_ATTR_COMPRESS => TRUE
\PDO::MYSQL_ATTR_COMPRESS => true,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_TIMEOUT => \Base::instance()->get('REQUIREMENTS.MYSQL.PDO_TIMEOUT'),
]
);
}catch(\PDOException $e){
// DB connection error
// -> log it
LogController::getLogger('error')->write($e->getMessage());
self::getLogger()->write($e->getMessage());
}
return $db;
}
/**
* get all table names from a DB
* @param string $database
* @return array|bool
*/
public function getTables($database = 'PF'){
$schema = new SQL\Schema( $this->getDB($database) );
return $schema->getTables();
}
/**
* checks whether a table exists on a DB or not
* @param $table
* @param string $database
* @return bool
*/
public function tableExists($table, $database = 'PF'){
$tableNames = $this->getTables($database);
return in_array($table, $tableNames);
}
/**
* get current row (data) count for an existing table
* -> returns 0 if table not exists or empty
* @param $table
* @param string $database
* @return int
*/
public function getRowCount($table, $database = 'PF') {
$count = 0;
if( $this->tableExists($table, $database) ){
$db = $this->getDB($database);
$countRes = $db->exec("SELECT COUNT(*) `num` FROM " . $db->quotekey($table));
if(isset($countRes[0]['num'])){
$count = (int)$countRes[0]['num'];
}
}
return $count;
}
/**
* get logger for DB logging
* @return \Log
*/
static function getLogger(){
return LogController::getLogger('ERROR');
}
}

View File

@@ -134,7 +134,7 @@ class Web extends \Web {
$url,
json_decode($result['body'])
);
LogController::getLogger('error')->write($errorMsg);
LogController::getLogger('ERROR')->write($errorMsg);
break;
case 500:
case 501:
@@ -150,7 +150,7 @@ class Web extends \Web {
$url,
json_decode($result['body'])
);
LogController::getLogger('error')->write($errorMsg);
LogController::getLogger('ERROR')->write($errorMsg);
// trigger error
$f3->error($statusCode, $errorMsg);
@@ -172,7 +172,7 @@ class Web extends \Web {
);
// log error
LogController::getLogger('error')->write($errorMsg);
LogController::getLogger('ERROR')->write($errorMsg);
if($additionalOptions['suppressTimeoutErrors'] !== true){
// trigger error
@@ -188,7 +188,7 @@ class Web extends \Web {
$url
);
LogController::getLogger('error')->write($errorMsg);
LogController::getLogger('ERROR')->write($errorMsg);
break;
}

View File

@@ -485,7 +485,7 @@ abstract class BasicModel extends \DB\Cortex {
$allRecords = $this->find();
if($allRecords){
$tableData = $allRecords->castAll();
$tableData = $allRecords->castAll(0);
// format data -> "id" must be first key
foreach($tableData as &$rowData){
@@ -515,17 +515,23 @@ abstract class BasicModel extends \DB\Cortex {
public function importData(){
$status = false;
// rtrim(); for arrays (removes empty values) from the end
$rtrim = function($array = []){
return array_slice($array, 0, key(array_reverse(array_diff($array, ['']), 1))+1);
};
if(static::$enableDataImport){
$filePath = 'export/sql/' . $this->getTable() . '.csv';
$filePath = $this->getF3()->get('EXPORT') . 'csv/' . $this->getTable() . '.csv';
if(is_file($filePath)){
$handle = @fopen($filePath, 'r');
$keys = array_map('lcfirst', array_filter(fgetcsv($handle, 0, ';')));
$keys = array_map('lcfirst', fgetcsv($handle, 0, ';'));
$keys = $rtrim($keys);
if(count($keys) > 0){
$tableData = [];
while (!feof($handle)) {
$tableData[] = array_combine($keys, array_filter(fgetcsv($handle, 0, ';')));
$tableData[] = array_combine($keys, $rtrim(fgetcsv($handle, 0, ';')));
}
// import row data
$status = $this->importStaticData($tableData);
@@ -619,12 +625,12 @@ abstract class BasicModel extends \DB\Cortex {
/**
* debug log function
* @param $text
* @param string $logFile
* @param string $text
* @param string $type
*/
public static function log($text, $logFile = null){
$logFile = isset($logFile) ? $logFile : self::getF3()->get('PATHFINDER.LOGFILES.DEBUG');
Controller\LogController::getLogger($logFile)->write($text);
public static function log($text, $type = null){
$type = isset($type) ? $type : 'DEBUG';
Controller\LogController::getLogger($type)->write($text);
}
/**
@@ -641,15 +647,15 @@ abstract class BasicModel extends \DB\Cortex {
/**
* Check whether a (multi)-column index exists or not on a table
* related to this model
* @param array $fields
* @param array $columns
* @return bool|array
*/
public static function indexExists(array $fields=array()){
public static function indexExists(array $columns = []){
$tableModifier = self::getTableModifier();
$df = parent::resolveConfiguration();
$check = false;
$indexKey = $df['table'] . '___' . implode('__', $fields);
$indexKey = $df['table'] . '___' . implode('__', $columns);
$indexList = $tableModifier->listIndex();
if(array_key_exists( $indexKey, $indexList)){
$check = $indexList[$indexKey];
@@ -660,17 +666,17 @@ abstract class BasicModel extends \DB\Cortex {
/**
* set a multi-column index for this table
* @param array $fields
* @param bool $unique
* @param int $length
* @param array $columns Column(s) to be indexed
* @param bool $unique Unique index
* @param int $length index length for text fields in mysql
* @return bool
*/
public static function setMultiColumnIndex(array $fields=array(), $unique = false, $length = 20){
public static function setMultiColumnIndex(array $columns = [], $unique = false, $length = 20){
$status = false;
$tableModifier = self::getTableModifier();
if( self::indexExists($fields) === false ){
$tableModifier->addIndex($fields, $unique, $length);
if( self::indexExists($columns) === false ){
$tableModifier->addIndex($columns, $unique, $length);
$buildStatus = $tableModifier->build();
if($buildStatus === 0){
$status = true;

View File

@@ -337,50 +337,16 @@ class CharacterModel extends BasicModel {
/**
* update character log (active system, ...)
* -> HTTP Header Data (if IGB)
* -> CREST API request for character log data (if not IGB)
* -> CREST API request for character log data
* @param array $additionalOptions (optional) request options for cURL request
* @return $this
*/
public function updateLog($additionalOptions = []){
// check if everything is OK
// -> do not update log in case of temporary CREST timeouts
$updateLogData = false;
$logData = [];
$headerData = Controller\Controller::getIGBHeaderData();
// Try to pull data from CREST
$ssoController = new Sso();
$logData = $ssoController->getCharacterLocationData($this->getAccessToken(), 10, $additionalOptions);
// check if IGB Data is available
if(
$headerData->trusted === true &&
!empty($headerData->values)
){
// format header data
$formattedHeaderData = (new Mapper\IgbHeader($headerData->values))->getData();
// just for security -> check if Header Data matches THIS character
// in case current IGB-Character is NOT the one logged on -> don´t update log
if(
isset($formattedHeaderData['character']) &&
$formattedHeaderData['character']['id'] == $this->_id
){
$updateLogData = true;
$logData = $formattedHeaderData;
}
}
if($updateLogData == false){
// ... No IGB Header data found OR character does not match current active character
// -> try to pull data from CREST
$ssoController = new Sso();
$logData = $ssoController->getCharacterLocationData($this->getAccessToken(), 10, $additionalOptions);
if($logData['timeout'] === false){
$updateLogData = true;
}
}
if($updateLogData == true){
if($logData['timeout'] === false){
if( empty($logData['system']) ){
// character is not in-game
if(is_object($this->characterLog)){
@@ -547,6 +513,10 @@ class CharacterModel extends BasicModel {
return $maps;
}
/**
* character logout
* -> clear authentication data
*/
public function logout(){
if($this->characterAuthentications){
foreach($this->characterAuthentications as $characterAuthentication){

View File

@@ -0,0 +1,62 @@
<?php
/**
* Created by PhpStorm.
* User: exodus4d
* Date: 07.06.15
* Time: 18:16
*/
namespace Model;
use DB\SQL\Schema;
class ConstellationWormholeModel extends BasicModel {
protected $table = 'constellation_wormhole';
public static $enableDataExport = true;
public static $enableDataImport = true;
protected $fieldConf = [
'constellationId' => [
'type' => Schema::DT_INT,
'index' => true,
],
'wormholeId' => [
'type' => Schema::DT_INT,
'index' => true,
'belongs-to-one' => 'Model\WormholeModel',
'constraint' => [
[
'table' => 'wormhole',
'on-delete' => 'CASCADE'
]
]
],
];
/**
* get wormhole data as object
* @return object
*/
public function getData(){
return $this->wormholeId->getData();
}
/**
* overwrites parent
* @param null $db
* @param null $table
* @param null $fields
* @return bool
*/
public static function setup($db=null, $table=null, $fields=null){
$status = parent::setup($db,$table,$fields);
if($status === true){
$status = parent::setMultiColumnIndex(['constellationId', 'wormholeId'], true);
}
return $status;
}
}

View File

@@ -197,6 +197,7 @@ class SystemModel extends BasicModel {
/**
* get map data as object
* @return object
* @throws \Exception
*/
public function getData(){
@@ -404,13 +405,21 @@ class SystemModel extends BasicModel {
}
/**
* check whether this system is a wormhole or not
* check whether this system is a wormhole
* @return bool
*/
public function isWormhole(){
return ($this->typeId->id === 1);
}
/**
* check whether this syste is a shattered wormhole
* @return bool
*/
public function isShatteredWormhole(){
return ($this->isWormhole() && $this->security === 'SH');
}
/**
* get static WH data for this system
* -> any WH system has at least one static WH
@@ -420,10 +429,11 @@ class SystemModel extends BasicModel {
protected function getStaticWormholeData(){
$wormholeData = [];
// check if this system is a wormhole
// only wormholes have "static" connections
if($this->isWormhole()){
$systemWormholeModel = self::getNew('SystemWormholeModel');
$systemStatics = $systemWormholeModel->find([
// get static systems by "constellationId" --------------------------------------------
$constellationWormholeModel = self::getNew('ConstellationWormholeModel');
$systemStatics = $constellationWormholeModel->find([
'constellationId = :constellationId',
':constellationId' => $this->constellationId
]);
@@ -433,6 +443,19 @@ class SystemModel extends BasicModel {
$wormholeData[] = $systemStatic->getData();
}
}
// get static systems by "systemId" (shattered wormholes) -----------------------------
$systemWormholeModel = self::getNew('SystemWormholeModel');
$systemStatics = $systemWormholeModel->find([
'systemId = :systemId',
':systemId' => $this->systemId
]);
if( is_object($systemStatics) ){
foreach($systemStatics as $systemStatic){
$wormholeData[] = $systemStatic->getData();
}
}
}
return $wormholeData;

View File

@@ -1,9 +1,9 @@
<?php
/**
* Created by PhpStorm.
* User: exodus4d
* Date: 07.06.15
* Time: 18:16
* User: Exodus
* Date: 16.07.2016
* Time: 12:19
*/
namespace Model;
@@ -14,8 +14,11 @@ class SystemWormholeModel extends BasicModel {
protected $table = 'system_wormhole';
public static $enableDataExport = true;
public static $enableDataImport = true;
protected $fieldConf = [
'constellationId' => [
'systemId' => [
'type' => Schema::DT_INT,
'index' => true,
],
@@ -37,9 +40,23 @@ class SystemWormholeModel extends BasicModel {
* @return object
*/
public function getData(){
$systemWormholeData = $this->wormholeId->getData();
return $systemWormholeData;
return $this->wormholeId->getData();
}
}
/**
* overwrites parent
* @param null $db
* @param null $table
* @param null $fields
* @return bool
*/
public static function setup($db=null, $table=null, $fields=null){
$status = parent::setup($db,$table,$fields);
if($status === true){
$status = parent::setMultiColumnIndex(['systemId', 'wormholeId'], true);
}
return $status;
}
}

View File

@@ -14,6 +14,9 @@ class WormholeModel extends BasicModel {
protected $table = 'wormhole';
public static $enableDataExport = true;
public static $enableDataImport = true;
protected $fieldConf = [
'name' => [
'type' => Schema::DT_VARCHAR128,
@@ -28,19 +31,19 @@ class WormholeModel extends BasicModel {
'default' => ''
],
'massTotal' => [
'type' => Schema::DT_VARCHAR128,
'type' => Schema::DT_INT,
'nullable' => false,
'default' => ''
'default' => 0
],
'massIndividual' => [
'type' => Schema::DT_VARCHAR128,
'type' => Schema::DT_INT,
'nullable' => false,
'default' => ''
'default' => 0
],
'massRegeneration' => [
'type' => Schema::DT_VARCHAR128,
'type' => Schema::DT_INT,
'nullable' => false,
'default' => ''
'default' => 0
],
'maxStableTime' => [
'type' => Schema::DT_INT,

View File

@@ -3,7 +3,7 @@
[PATHFINDER]
NAME = Pathfinder
; installed version (used for CSS/JS cache busting)
VERSION = v1.1.1
VERSION = v1.1.2
; contact information [optional]
CONTACT = https://github.com/exodus4d
; public contact email [optional]
@@ -101,14 +101,20 @@ EXPIRE_MAX = 5184000
; LOGGING =========================================================================================
[PATHFINDER.LOGFILES]
; just for manuel debug during development
DEBUG = debug
; error log
ERROR = error
; CREST error log
CREST = crest
; login information
LOGIN = login
; session warnings (suspect)
SESSION_SUSPECT = session_suspect
; account deleted
DELETE_ACCOUNT = account_delete
; unauthorized request (HTTP 401)
UNAUTHORIZED = unauthorized
; debug log for development
DEBUG = debug
; API =============================================================================================
[PATHFINDER.API]

View File

@@ -30,6 +30,8 @@ MAX_INPUT_VARS = 3000
; min MySQL Version
; newer "deviation" of MySQL like "MariaDB" > 10.1 are recommended
VERSION = 5.6
; DB timeout (seconds)
PDO_TIMEOUT = 2
[REQUIREMENTS.MYSQL.VARS]
; MySql variables. Values are auto. set as 'SESSION' vars
@@ -42,5 +44,6 @@ CHARACTER_SET_CONNECTION = utf8
COLLATION_DATABASE = utf8_general_ci
COLLATION_CONNECTION = utf8_general_ci
FOREIGN_KEY_CHECKS = ON
LOWER_CASE_TABLE_NAMES = 2

View File

@@ -0,0 +1,462 @@
"Id";"Created";"Updated";"ConstellationId";"WormholeId";
"1";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000001";"39";
"2";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000002";"39";
"3";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000003";"39";
"4";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000004";"39";
"5";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000005";"39";
"6";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000006";"39";
"7";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000007";"39";
"8";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000008";"39";
"9";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000009";"39";
"10";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000010";"39";
"11";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000011";"39";
"12";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000012";"39";
"13";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000013";"39";
"14";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000014";"39";
"15";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000015";"39";
"16";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000016";"39";
"17";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000017";"39";
"18";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000018";"39";
"19";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000019";"39";
"20";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000020";"39";
"21";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000021";"6";
"22";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000022";"6";
"23";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000023";"6";
"24";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000024";"6";
"25";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000025";"6";
"26";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000026";"6";
"27";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000027";"6";
"28";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000028";"6";
"29";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000029";"6";
"30";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000030";"6";
"31";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000021";"47";
"32";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000022";"47";
"33";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000023";"47";
"34";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000024";"47";
"35";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000025";"47";
"36";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000026";"47";
"37";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000027";"47";
"38";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000028";"47";
"39";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000029";"47";
"40";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000030";"47";
"41";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000031";"6";
"42";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000032";"6";
"43";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000033";"6";
"44";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000034";"6";
"45";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000035";"6";
"46";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000036";"6";
"47";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000037";"6";
"48";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000038";"6";
"49";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000039";"6";
"50";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000040";"6";
"51";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000031";"69";
"52";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000032";"69";
"53";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000033";"69";
"54";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000034";"69";
"55";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000035";"69";
"56";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000036";"69";
"57";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000037";"69";
"58";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000038";"69";
"59";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000039";"69";
"60";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000040";"69";
"61";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000041";"2";
"62";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000042";"2";
"63";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000043";"2";
"64";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000044";"2";
"65";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000045";"2";
"66";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000046";"2";
"67";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000047";"2";
"68";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000048";"2";
"69";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000049";"2";
"70";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000050";"2";
"71";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000051";"2";
"72";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000052";"2";
"73";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000053";"2";
"74";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000054";"2";
"75";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000041";"16";
"76";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000042";"16";
"77";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000043";"16";
"78";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000044";"16";
"79";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000045";"16";
"80";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000046";"16";
"81";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000047";"16";
"82";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000048";"16";
"83";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000049";"16";
"84";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000050";"16";
"85";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000051";"16";
"86";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000052";"16";
"87";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000053";"16";
"88";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000054";"16";
"89";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000055";"21";
"90";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000056";"21";
"91";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000057";"21";
"92";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000058";"21";
"93";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000059";"21";
"94";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000055";"38";
"95";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000056";"38";
"96";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000057";"38";
"97";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000058";"38";
"98";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000059";"53";
"99";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000060";"6";
"100";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000061";"6";
"101";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000062";"6";
"102";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000063";"6";
"103";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000064";"6";
"104";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000065";"6";
"105";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000066";"6";
"106";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000067";"6";
"107";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000068";"6";
"108";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000069";"6";
"109";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000070";"6";
"110";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000071";"6";
"111";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000072";"6";
"112";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000073";"6";
"113";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000074";"6";
"114";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000075";"6";
"115";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000060";"75";
"116";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000061";"75";
"117";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000063";"75";
"118";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000064";"75";
"119";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000065";"75";
"120";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000066";"75";
"121";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000067";"75";
"122";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000068";"75";
"123";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000069";"75";
"124";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000070";"75";
"125";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000071";"75";
"126";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000072";"75";
"127";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000073";"75";
"128";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000074";"75";
"129";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000075";"75";
"130";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000076";"59";
"131";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000077";"59";
"132";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000078";"59";
"133";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000079";"59";
"134";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000080";"59";
"135";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000081";"59";
"136";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000082";"59";
"137";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000083";"59";
"138";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000084";"59";
"139";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000085";"59";
"140";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000086";"59";
"141";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000087";"59";
"142";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000088";"59";
"143";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000089";"59";
"144";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000090";"59";
"145";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000091";"59";
"146";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000092";"59";
"147";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000093";"59";
"148";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000094";"59";
"149";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000095";"59";
"150";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000096";"59";
"151";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000097";"59";
"152";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000098";"59";
"153";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000099";"59";
"154";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000100";"59";
"155";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000101";"59";
"156";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000102";"59";
"157";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000103";"59";
"158";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000104";"59";
"159";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000105";"59";
"160";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000106";"18";
"161";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000107";"18";
"162";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000108";"18";
"163";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000109";"18";
"164";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000110";"18";
"165";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000111";"18";
"166";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000112";"18";
"167";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000113";"18";
"168";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000114";"18";
"169";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000115";"18";
"170";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000116";"18";
"171";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000117";"18";
"172";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000118";"18";
"173";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000119";"18";
"174";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000120";"18";
"175";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000121";"18";
"176";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000122";"59";
"177";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000123";"59";
"178";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000124";"59";
"179";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000125";"59";
"180";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000126";"59";
"181";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000127";"59";
"182";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000128";"59";
"183";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000129";"30";
"184";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000130";"30";
"185";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000131";"30";
"186";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000132";"30";
"187";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000133";"30";
"188";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000134";"30";
"189";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000135";"30";
"190";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000136";"30";
"191";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000137";"30";
"192";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000138";"30";
"193";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000139";"30";
"194";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000140";"30";
"195";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000141";"30";
"196";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000142";"30";
"197";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000143";"30";
"198";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000144";"59";
"199";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000145";"59";
"200";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000146";"59";
"201";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000147";"59";
"202";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000148";"59";
"203";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000149";"59";
"204";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000150";"59";
"205";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000151";"59";
"206";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000152";"59";
"207";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000153";"42";
"208";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000154";"42";
"209";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000155";"42";
"210";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000156";"42";
"211";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000157";"42";
"212";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000158";"42";
"213";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000159";"42";
"214";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000160";"42";
"215";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000161";"42";
"216";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000162";"61";
"217";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000163";"61";
"218";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000164";"61";
"219";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000165";"61";
"220";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000166";"49";
"221";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000167";"49";
"222";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000168";"49";
"223";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000169";"49";
"224";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000170";"49";
"225";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000171";"49";
"226";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000172";"49";
"227";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000173";"68";
"228";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000174";"68";
"229";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000175";"68";
"230";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000176";"68";
"231";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000177";"68";
"232";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000178";"68";
"233";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000179";"68";
"234";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000180";"68";
"235";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000181";"68";
"236";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000182";"68";
"237";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000183";"68";
"238";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000184";"68";
"239";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000185";"68";
"240";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000186";"68";
"241";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000187";"68";
"242";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000188";"68";
"243";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000189";"68";
"244";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000190";"68";
"245";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000191";"68";
"246";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000192";"68";
"247";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000193";"68";
"248";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000194";"68";
"249";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000195";"12";
"250";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000196";"12";
"251";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000197";"12";
"252";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000198";"12";
"253";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000199";"12";
"254";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000200";"12";
"255";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000201";"12";
"256";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000202";"12";
"257";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000203";"12";
"258";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000204";"12";
"259";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000205";"12";
"260";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000206";"12";
"261";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000207";"12";
"262";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000208";"12";
"263";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000209";"12";
"264";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000210";"12";
"265";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000211";"12";
"266";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000212";"12";
"267";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000213";"26";
"268";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000214";"26";
"269";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000215";"26";
"270";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000216";"26";
"271";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000217";"26";
"272";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000218";"26";
"273";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000219";"26";
"274";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000220";"26";
"275";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000221";"26";
"276";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000222";"26";
"277";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000223";"26";
"278";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000224";"26";
"279";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000225";"26";
"280";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000226";"26";
"281";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000227";"12";
"282";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000228";"12";
"283";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000229";"12";
"284";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000230";"12";
"285";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000231";"12";
"286";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000232";"25";
"287";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000233";"70";
"288";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000234";"15";
"289";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000235";"15";
"290";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000236";"25";
"291";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000237";"15";
"292";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000238";"15";
"293";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000239";"70";
"294";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000240";"25";
"295";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000241";"25";
"296";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000242";"25";
"297";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000243";"25";
"298";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000244";"25";
"299";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000245";"25";
"300";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000246";"25";
"301";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000247";"25";
"302";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000248";"25";
"303";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000249";"25";
"304";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000250";"25";
"305";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000251";"25";
"306";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000252";"25";
"307";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000253";"25";
"308";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000254";"25";
"309";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000255";"25";
"310";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000256";"64";
"311";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000257";"64";
"312";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000258";"64";
"313";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000259";"64";
"314";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000260";"64";
"315";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000261";"64";
"316";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000262";"64";
"317";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000263";"64";
"318";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000264";"64";
"319";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000265";"35";
"320";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000266";"35";
"321";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000267";"35";
"322";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000268";"35";
"323";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000269";"35";
"324";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000270";"35";
"325";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000271";"35";
"326";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000272";"35";
"327";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000273";"35";
"328";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000274";"25";
"329";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000275";"25";
"330";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000276";"25";
"331";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000277";"25";
"332";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000278";"25";
"333";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000279";"25";
"334";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000280";"25";
"335";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000281";"25";
"336";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000282";"25";
"337";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000283";"25";
"338";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000284";"25";
"339";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000285";"25";
"340";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000286";"20";
"341";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000287";"20";
"342";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000288";"20";
"343";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000289";"20";
"344";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000290";"20";
"345";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000291";"20";
"346";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000292";"20";
"347";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000293";"20";
"348";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000294";"20";
"349";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000295";"20";
"350";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000296";"20";
"351";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000297";"23";
"352";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000298";"66";
"353";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000299";"65";
"354";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000300";"32";
"355";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000301";"51";
"356";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000302";"74";
"357";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000303";"66";
"358";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000304";"32";
"359";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000305";"74";
"360";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000306";"65";
"361";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000307";"65";
"362";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000308";"65";
"363";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000309";"65";
"364";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000310";"65";
"365";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000311";"72";
"366";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000312";"72";
"367";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000313";"72";
"368";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000314";"28";
"369";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000315";"28";
"370";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000316";"28";
"371";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000317";"28";
"372";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000318";"28";
"373";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000319";"28";
"374";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000320";"28";
"375";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000321";"28";
"376";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000322";"28";
"377";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000323";"28";
"378";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000153";"68";
"379";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000154";"68";
"380";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000155";"68";
"381";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000156";"49";
"382";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000157";"26";
"383";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000158";"26";
"384";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000159";"12";
"385";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000160";"26";
"386";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000161";"12";
"387";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000162";"26";
"388";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000163";"12";
"389";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000164";"26";
"390";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000165";"68";
"391";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000166";"12";
"392";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000167";"42";
"393";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000168";"26";
"394";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000169";"68";
"395";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000170";"42";
"396";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000171";"68";
"397";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000172";"12";
"398";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000173";"42";
"399";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000174";"49";
"400";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000175";"12";
"401";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000176";"12";
"402";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000177";"12";
"403";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000178";"61";
"404";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000179";"26";
"405";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000180";"26";
"406";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000181";"26";
"407";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000182";"61";
"408";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000183";"12";
"409";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000184";"12";
"410";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000185";"26";
"411";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000186";"26";
"412";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000187";"42";
"413";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000188";"26";
"414";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000189";"42";
"415";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000190";"42";
"416";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000191";"12";
"417";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000192";"42";
"418";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000193";"49";
"419";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000194";"12";
"420";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000195";"68";
"421";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000196";"49";
"422";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000197";"26";
"423";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000198";"42";
"424";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000199";"42";
"425";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000200";"68";
"426";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000201";"68";
"427";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000202";"42";
"428";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000203";"26";
"429";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000204";"26";
"430";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000205";"49";
"431";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000206";"68";
"432";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000207";"68";
"433";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000208";"26";
"434";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000209";"26";
"435";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000210";"26";
"436";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000211";"61";
"437";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000212";"42";
"438";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000213";"12";
"439";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000214";"68";
"440";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000215";"12";
"441";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000216";"68";
"442";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000217";"42";
"443";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000218";"12";
"444";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000219";"12";
"445";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000220";"68";
"446";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000221";"42";
"447";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000222";"68";
"448";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000223";"12";
"449";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000224";"42";
"450";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000225";"49";
"451";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000226";"61";
"452";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000227";"68";
"453";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000228";"42";
"454";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000229";"68";
"455";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000230";"68";
"456";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000231";"49";
"457";"2015-12-26 16:19:18";"2015-12-26 16:19:18";"21000329";"20";
"458";"2016-07-15 18:45:01";"2016-07-15 18:45:01";"21000324";"81";
"459";"2016-07-15 18:45:01";"2016-07-15 18:45:01";"21000324";"82";
"460";"2016-07-15 18:45:09";"2016-07-15 18:45:09";"21000324";"83";
"461";"2016-07-15 19:55:26";"2016-07-15 19:55:26";"21000062";"75";
1 Id Created Updated ConstellationId WormholeId
2 1 2015-12-26 16:19:18 2015-12-26 16:19:18 21000001 39
3 2 2015-12-26 16:19:18 2015-12-26 16:19:18 21000002 39
4 3 2015-12-26 16:19:18 2015-12-26 16:19:18 21000003 39
5 4 2015-12-26 16:19:18 2015-12-26 16:19:18 21000004 39
6 5 2015-12-26 16:19:18 2015-12-26 16:19:18 21000005 39
7 6 2015-12-26 16:19:18 2015-12-26 16:19:18 21000006 39
8 7 2015-12-26 16:19:18 2015-12-26 16:19:18 21000007 39
9 8 2015-12-26 16:19:18 2015-12-26 16:19:18 21000008 39
10 9 2015-12-26 16:19:18 2015-12-26 16:19:18 21000009 39
11 10 2015-12-26 16:19:18 2015-12-26 16:19:18 21000010 39
12 11 2015-12-26 16:19:18 2015-12-26 16:19:18 21000011 39
13 12 2015-12-26 16:19:18 2015-12-26 16:19:18 21000012 39
14 13 2015-12-26 16:19:18 2015-12-26 16:19:18 21000013 39
15 14 2015-12-26 16:19:18 2015-12-26 16:19:18 21000014 39
16 15 2015-12-26 16:19:18 2015-12-26 16:19:18 21000015 39
17 16 2015-12-26 16:19:18 2015-12-26 16:19:18 21000016 39
18 17 2015-12-26 16:19:18 2015-12-26 16:19:18 21000017 39
19 18 2015-12-26 16:19:18 2015-12-26 16:19:18 21000018 39
20 19 2015-12-26 16:19:18 2015-12-26 16:19:18 21000019 39
21 20 2015-12-26 16:19:18 2015-12-26 16:19:18 21000020 39
22 21 2015-12-26 16:19:18 2015-12-26 16:19:18 21000021 6
23 22 2015-12-26 16:19:18 2015-12-26 16:19:18 21000022 6
24 23 2015-12-26 16:19:18 2015-12-26 16:19:18 21000023 6
25 24 2015-12-26 16:19:18 2015-12-26 16:19:18 21000024 6
26 25 2015-12-26 16:19:18 2015-12-26 16:19:18 21000025 6
27 26 2015-12-26 16:19:18 2015-12-26 16:19:18 21000026 6
28 27 2015-12-26 16:19:18 2015-12-26 16:19:18 21000027 6
29 28 2015-12-26 16:19:18 2015-12-26 16:19:18 21000028 6
30 29 2015-12-26 16:19:18 2015-12-26 16:19:18 21000029 6
31 30 2015-12-26 16:19:18 2015-12-26 16:19:18 21000030 6
32 31 2015-12-26 16:19:18 2015-12-26 16:19:18 21000021 47
33 32 2015-12-26 16:19:18 2015-12-26 16:19:18 21000022 47
34 33 2015-12-26 16:19:18 2015-12-26 16:19:18 21000023 47
35 34 2015-12-26 16:19:18 2015-12-26 16:19:18 21000024 47
36 35 2015-12-26 16:19:18 2015-12-26 16:19:18 21000025 47
37 36 2015-12-26 16:19:18 2015-12-26 16:19:18 21000026 47
38 37 2015-12-26 16:19:18 2015-12-26 16:19:18 21000027 47
39 38 2015-12-26 16:19:18 2015-12-26 16:19:18 21000028 47
40 39 2015-12-26 16:19:18 2015-12-26 16:19:18 21000029 47
41 40 2015-12-26 16:19:18 2015-12-26 16:19:18 21000030 47
42 41 2015-12-26 16:19:18 2015-12-26 16:19:18 21000031 6
43 42 2015-12-26 16:19:18 2015-12-26 16:19:18 21000032 6
44 43 2015-12-26 16:19:18 2015-12-26 16:19:18 21000033 6
45 44 2015-12-26 16:19:18 2015-12-26 16:19:18 21000034 6
46 45 2015-12-26 16:19:18 2015-12-26 16:19:18 21000035 6
47 46 2015-12-26 16:19:18 2015-12-26 16:19:18 21000036 6
48 47 2015-12-26 16:19:18 2015-12-26 16:19:18 21000037 6
49 48 2015-12-26 16:19:18 2015-12-26 16:19:18 21000038 6
50 49 2015-12-26 16:19:18 2015-12-26 16:19:18 21000039 6
51 50 2015-12-26 16:19:18 2015-12-26 16:19:18 21000040 6
52 51 2015-12-26 16:19:18 2015-12-26 16:19:18 21000031 69
53 52 2015-12-26 16:19:18 2015-12-26 16:19:18 21000032 69
54 53 2015-12-26 16:19:18 2015-12-26 16:19:18 21000033 69
55 54 2015-12-26 16:19:18 2015-12-26 16:19:18 21000034 69
56 55 2015-12-26 16:19:18 2015-12-26 16:19:18 21000035 69
57 56 2015-12-26 16:19:18 2015-12-26 16:19:18 21000036 69
58 57 2015-12-26 16:19:18 2015-12-26 16:19:18 21000037 69
59 58 2015-12-26 16:19:18 2015-12-26 16:19:18 21000038 69
60 59 2015-12-26 16:19:18 2015-12-26 16:19:18 21000039 69
61 60 2015-12-26 16:19:18 2015-12-26 16:19:18 21000040 69
62 61 2015-12-26 16:19:18 2015-12-26 16:19:18 21000041 2
63 62 2015-12-26 16:19:18 2015-12-26 16:19:18 21000042 2
64 63 2015-12-26 16:19:18 2015-12-26 16:19:18 21000043 2
65 64 2015-12-26 16:19:18 2015-12-26 16:19:18 21000044 2
66 65 2015-12-26 16:19:18 2015-12-26 16:19:18 21000045 2
67 66 2015-12-26 16:19:18 2015-12-26 16:19:18 21000046 2
68 67 2015-12-26 16:19:18 2015-12-26 16:19:18 21000047 2
69 68 2015-12-26 16:19:18 2015-12-26 16:19:18 21000048 2
70 69 2015-12-26 16:19:18 2015-12-26 16:19:18 21000049 2
71 70 2015-12-26 16:19:18 2015-12-26 16:19:18 21000050 2
72 71 2015-12-26 16:19:18 2015-12-26 16:19:18 21000051 2
73 72 2015-12-26 16:19:18 2015-12-26 16:19:18 21000052 2
74 73 2015-12-26 16:19:18 2015-12-26 16:19:18 21000053 2
75 74 2015-12-26 16:19:18 2015-12-26 16:19:18 21000054 2
76 75 2015-12-26 16:19:18 2015-12-26 16:19:18 21000041 16
77 76 2015-12-26 16:19:18 2015-12-26 16:19:18 21000042 16
78 77 2015-12-26 16:19:18 2015-12-26 16:19:18 21000043 16
79 78 2015-12-26 16:19:18 2015-12-26 16:19:18 21000044 16
80 79 2015-12-26 16:19:18 2015-12-26 16:19:18 21000045 16
81 80 2015-12-26 16:19:18 2015-12-26 16:19:18 21000046 16
82 81 2015-12-26 16:19:18 2015-12-26 16:19:18 21000047 16
83 82 2015-12-26 16:19:18 2015-12-26 16:19:18 21000048 16
84 83 2015-12-26 16:19:18 2015-12-26 16:19:18 21000049 16
85 84 2015-12-26 16:19:18 2015-12-26 16:19:18 21000050 16
86 85 2015-12-26 16:19:18 2015-12-26 16:19:18 21000051 16
87 86 2015-12-26 16:19:18 2015-12-26 16:19:18 21000052 16
88 87 2015-12-26 16:19:18 2015-12-26 16:19:18 21000053 16
89 88 2015-12-26 16:19:18 2015-12-26 16:19:18 21000054 16
90 89 2015-12-26 16:19:18 2015-12-26 16:19:18 21000055 21
91 90 2015-12-26 16:19:18 2015-12-26 16:19:18 21000056 21
92 91 2015-12-26 16:19:18 2015-12-26 16:19:18 21000057 21
93 92 2015-12-26 16:19:18 2015-12-26 16:19:18 21000058 21
94 93 2015-12-26 16:19:18 2015-12-26 16:19:18 21000059 21
95 94 2015-12-26 16:19:18 2015-12-26 16:19:18 21000055 38
96 95 2015-12-26 16:19:18 2015-12-26 16:19:18 21000056 38
97 96 2015-12-26 16:19:18 2015-12-26 16:19:18 21000057 38
98 97 2015-12-26 16:19:18 2015-12-26 16:19:18 21000058 38
99 98 2015-12-26 16:19:18 2015-12-26 16:19:18 21000059 53
100 99 2015-12-26 16:19:18 2015-12-26 16:19:18 21000060 6
101 100 2015-12-26 16:19:18 2015-12-26 16:19:18 21000061 6
102 101 2015-12-26 16:19:18 2015-12-26 16:19:18 21000062 6
103 102 2015-12-26 16:19:18 2015-12-26 16:19:18 21000063 6
104 103 2015-12-26 16:19:18 2015-12-26 16:19:18 21000064 6
105 104 2015-12-26 16:19:18 2015-12-26 16:19:18 21000065 6
106 105 2015-12-26 16:19:18 2015-12-26 16:19:18 21000066 6
107 106 2015-12-26 16:19:18 2015-12-26 16:19:18 21000067 6
108 107 2015-12-26 16:19:18 2015-12-26 16:19:18 21000068 6
109 108 2015-12-26 16:19:18 2015-12-26 16:19:18 21000069 6
110 109 2015-12-26 16:19:18 2015-12-26 16:19:18 21000070 6
111 110 2015-12-26 16:19:18 2015-12-26 16:19:18 21000071 6
112 111 2015-12-26 16:19:18 2015-12-26 16:19:18 21000072 6
113 112 2015-12-26 16:19:18 2015-12-26 16:19:18 21000073 6
114 113 2015-12-26 16:19:18 2015-12-26 16:19:18 21000074 6
115 114 2015-12-26 16:19:18 2015-12-26 16:19:18 21000075 6
116 115 2015-12-26 16:19:18 2015-12-26 16:19:18 21000060 75
117 116 2015-12-26 16:19:18 2015-12-26 16:19:18 21000061 75
118 117 2015-12-26 16:19:18 2015-12-26 16:19:18 21000063 75
119 118 2015-12-26 16:19:18 2015-12-26 16:19:18 21000064 75
120 119 2015-12-26 16:19:18 2015-12-26 16:19:18 21000065 75
121 120 2015-12-26 16:19:18 2015-12-26 16:19:18 21000066 75
122 121 2015-12-26 16:19:18 2015-12-26 16:19:18 21000067 75
123 122 2015-12-26 16:19:18 2015-12-26 16:19:18 21000068 75
124 123 2015-12-26 16:19:18 2015-12-26 16:19:18 21000069 75
125 124 2015-12-26 16:19:18 2015-12-26 16:19:18 21000070 75
126 125 2015-12-26 16:19:18 2015-12-26 16:19:18 21000071 75
127 126 2015-12-26 16:19:18 2015-12-26 16:19:18 21000072 75
128 127 2015-12-26 16:19:18 2015-12-26 16:19:18 21000073 75
129 128 2015-12-26 16:19:18 2015-12-26 16:19:18 21000074 75
130 129 2015-12-26 16:19:18 2015-12-26 16:19:18 21000075 75
131 130 2015-12-26 16:19:18 2015-12-26 16:19:18 21000076 59
132 131 2015-12-26 16:19:18 2015-12-26 16:19:18 21000077 59
133 132 2015-12-26 16:19:18 2015-12-26 16:19:18 21000078 59
134 133 2015-12-26 16:19:18 2015-12-26 16:19:18 21000079 59
135 134 2015-12-26 16:19:18 2015-12-26 16:19:18 21000080 59
136 135 2015-12-26 16:19:18 2015-12-26 16:19:18 21000081 59
137 136 2015-12-26 16:19:18 2015-12-26 16:19:18 21000082 59
138 137 2015-12-26 16:19:18 2015-12-26 16:19:18 21000083 59
139 138 2015-12-26 16:19:18 2015-12-26 16:19:18 21000084 59
140 139 2015-12-26 16:19:18 2015-12-26 16:19:18 21000085 59
141 140 2015-12-26 16:19:18 2015-12-26 16:19:18 21000086 59
142 141 2015-12-26 16:19:18 2015-12-26 16:19:18 21000087 59
143 142 2015-12-26 16:19:18 2015-12-26 16:19:18 21000088 59
144 143 2015-12-26 16:19:18 2015-12-26 16:19:18 21000089 59
145 144 2015-12-26 16:19:18 2015-12-26 16:19:18 21000090 59
146 145 2015-12-26 16:19:18 2015-12-26 16:19:18 21000091 59
147 146 2015-12-26 16:19:18 2015-12-26 16:19:18 21000092 59
148 147 2015-12-26 16:19:18 2015-12-26 16:19:18 21000093 59
149 148 2015-12-26 16:19:18 2015-12-26 16:19:18 21000094 59
150 149 2015-12-26 16:19:18 2015-12-26 16:19:18 21000095 59
151 150 2015-12-26 16:19:18 2015-12-26 16:19:18 21000096 59
152 151 2015-12-26 16:19:18 2015-12-26 16:19:18 21000097 59
153 152 2015-12-26 16:19:18 2015-12-26 16:19:18 21000098 59
154 153 2015-12-26 16:19:18 2015-12-26 16:19:18 21000099 59
155 154 2015-12-26 16:19:18 2015-12-26 16:19:18 21000100 59
156 155 2015-12-26 16:19:18 2015-12-26 16:19:18 21000101 59
157 156 2015-12-26 16:19:18 2015-12-26 16:19:18 21000102 59
158 157 2015-12-26 16:19:18 2015-12-26 16:19:18 21000103 59
159 158 2015-12-26 16:19:18 2015-12-26 16:19:18 21000104 59
160 159 2015-12-26 16:19:18 2015-12-26 16:19:18 21000105 59
161 160 2015-12-26 16:19:18 2015-12-26 16:19:18 21000106 18
162 161 2015-12-26 16:19:18 2015-12-26 16:19:18 21000107 18
163 162 2015-12-26 16:19:18 2015-12-26 16:19:18 21000108 18
164 163 2015-12-26 16:19:18 2015-12-26 16:19:18 21000109 18
165 164 2015-12-26 16:19:18 2015-12-26 16:19:18 21000110 18
166 165 2015-12-26 16:19:18 2015-12-26 16:19:18 21000111 18
167 166 2015-12-26 16:19:18 2015-12-26 16:19:18 21000112 18
168 167 2015-12-26 16:19:18 2015-12-26 16:19:18 21000113 18
169 168 2015-12-26 16:19:18 2015-12-26 16:19:18 21000114 18
170 169 2015-12-26 16:19:18 2015-12-26 16:19:18 21000115 18
171 170 2015-12-26 16:19:18 2015-12-26 16:19:18 21000116 18
172 171 2015-12-26 16:19:18 2015-12-26 16:19:18 21000117 18
173 172 2015-12-26 16:19:18 2015-12-26 16:19:18 21000118 18
174 173 2015-12-26 16:19:18 2015-12-26 16:19:18 21000119 18
175 174 2015-12-26 16:19:18 2015-12-26 16:19:18 21000120 18
176 175 2015-12-26 16:19:18 2015-12-26 16:19:18 21000121 18
177 176 2015-12-26 16:19:18 2015-12-26 16:19:18 21000122 59
178 177 2015-12-26 16:19:18 2015-12-26 16:19:18 21000123 59
179 178 2015-12-26 16:19:18 2015-12-26 16:19:18 21000124 59
180 179 2015-12-26 16:19:18 2015-12-26 16:19:18 21000125 59
181 180 2015-12-26 16:19:18 2015-12-26 16:19:18 21000126 59
182 181 2015-12-26 16:19:18 2015-12-26 16:19:18 21000127 59
183 182 2015-12-26 16:19:18 2015-12-26 16:19:18 21000128 59
184 183 2015-12-26 16:19:18 2015-12-26 16:19:18 21000129 30
185 184 2015-12-26 16:19:18 2015-12-26 16:19:18 21000130 30
186 185 2015-12-26 16:19:18 2015-12-26 16:19:18 21000131 30
187 186 2015-12-26 16:19:18 2015-12-26 16:19:18 21000132 30
188 187 2015-12-26 16:19:18 2015-12-26 16:19:18 21000133 30
189 188 2015-12-26 16:19:18 2015-12-26 16:19:18 21000134 30
190 189 2015-12-26 16:19:18 2015-12-26 16:19:18 21000135 30
191 190 2015-12-26 16:19:18 2015-12-26 16:19:18 21000136 30
192 191 2015-12-26 16:19:18 2015-12-26 16:19:18 21000137 30
193 192 2015-12-26 16:19:18 2015-12-26 16:19:18 21000138 30
194 193 2015-12-26 16:19:18 2015-12-26 16:19:18 21000139 30
195 194 2015-12-26 16:19:18 2015-12-26 16:19:18 21000140 30
196 195 2015-12-26 16:19:18 2015-12-26 16:19:18 21000141 30
197 196 2015-12-26 16:19:18 2015-12-26 16:19:18 21000142 30
198 197 2015-12-26 16:19:18 2015-12-26 16:19:18 21000143 30
199 198 2015-12-26 16:19:18 2015-12-26 16:19:18 21000144 59
200 199 2015-12-26 16:19:18 2015-12-26 16:19:18 21000145 59
201 200 2015-12-26 16:19:18 2015-12-26 16:19:18 21000146 59
202 201 2015-12-26 16:19:18 2015-12-26 16:19:18 21000147 59
203 202 2015-12-26 16:19:18 2015-12-26 16:19:18 21000148 59
204 203 2015-12-26 16:19:18 2015-12-26 16:19:18 21000149 59
205 204 2015-12-26 16:19:18 2015-12-26 16:19:18 21000150 59
206 205 2015-12-26 16:19:18 2015-12-26 16:19:18 21000151 59
207 206 2015-12-26 16:19:18 2015-12-26 16:19:18 21000152 59
208 207 2015-12-26 16:19:18 2015-12-26 16:19:18 21000153 42
209 208 2015-12-26 16:19:18 2015-12-26 16:19:18 21000154 42
210 209 2015-12-26 16:19:18 2015-12-26 16:19:18 21000155 42
211 210 2015-12-26 16:19:18 2015-12-26 16:19:18 21000156 42
212 211 2015-12-26 16:19:18 2015-12-26 16:19:18 21000157 42
213 212 2015-12-26 16:19:18 2015-12-26 16:19:18 21000158 42
214 213 2015-12-26 16:19:18 2015-12-26 16:19:18 21000159 42
215 214 2015-12-26 16:19:18 2015-12-26 16:19:18 21000160 42
216 215 2015-12-26 16:19:18 2015-12-26 16:19:18 21000161 42
217 216 2015-12-26 16:19:18 2015-12-26 16:19:18 21000162 61
218 217 2015-12-26 16:19:18 2015-12-26 16:19:18 21000163 61
219 218 2015-12-26 16:19:18 2015-12-26 16:19:18 21000164 61
220 219 2015-12-26 16:19:18 2015-12-26 16:19:18 21000165 61
221 220 2015-12-26 16:19:18 2015-12-26 16:19:18 21000166 49
222 221 2015-12-26 16:19:18 2015-12-26 16:19:18 21000167 49
223 222 2015-12-26 16:19:18 2015-12-26 16:19:18 21000168 49
224 223 2015-12-26 16:19:18 2015-12-26 16:19:18 21000169 49
225 224 2015-12-26 16:19:18 2015-12-26 16:19:18 21000170 49
226 225 2015-12-26 16:19:18 2015-12-26 16:19:18 21000171 49
227 226 2015-12-26 16:19:18 2015-12-26 16:19:18 21000172 49
228 227 2015-12-26 16:19:18 2015-12-26 16:19:18 21000173 68
229 228 2015-12-26 16:19:18 2015-12-26 16:19:18 21000174 68
230 229 2015-12-26 16:19:18 2015-12-26 16:19:18 21000175 68
231 230 2015-12-26 16:19:18 2015-12-26 16:19:18 21000176 68
232 231 2015-12-26 16:19:18 2015-12-26 16:19:18 21000177 68
233 232 2015-12-26 16:19:18 2015-12-26 16:19:18 21000178 68
234 233 2015-12-26 16:19:18 2015-12-26 16:19:18 21000179 68
235 234 2015-12-26 16:19:18 2015-12-26 16:19:18 21000180 68
236 235 2015-12-26 16:19:18 2015-12-26 16:19:18 21000181 68
237 236 2015-12-26 16:19:18 2015-12-26 16:19:18 21000182 68
238 237 2015-12-26 16:19:18 2015-12-26 16:19:18 21000183 68
239 238 2015-12-26 16:19:18 2015-12-26 16:19:18 21000184 68
240 239 2015-12-26 16:19:18 2015-12-26 16:19:18 21000185 68
241 240 2015-12-26 16:19:18 2015-12-26 16:19:18 21000186 68
242 241 2015-12-26 16:19:18 2015-12-26 16:19:18 21000187 68
243 242 2015-12-26 16:19:18 2015-12-26 16:19:18 21000188 68
244 243 2015-12-26 16:19:18 2015-12-26 16:19:18 21000189 68
245 244 2015-12-26 16:19:18 2015-12-26 16:19:18 21000190 68
246 245 2015-12-26 16:19:18 2015-12-26 16:19:18 21000191 68
247 246 2015-12-26 16:19:18 2015-12-26 16:19:18 21000192 68
248 247 2015-12-26 16:19:18 2015-12-26 16:19:18 21000193 68
249 248 2015-12-26 16:19:18 2015-12-26 16:19:18 21000194 68
250 249 2015-12-26 16:19:18 2015-12-26 16:19:18 21000195 12
251 250 2015-12-26 16:19:18 2015-12-26 16:19:18 21000196 12
252 251 2015-12-26 16:19:18 2015-12-26 16:19:18 21000197 12
253 252 2015-12-26 16:19:18 2015-12-26 16:19:18 21000198 12
254 253 2015-12-26 16:19:18 2015-12-26 16:19:18 21000199 12
255 254 2015-12-26 16:19:18 2015-12-26 16:19:18 21000200 12
256 255 2015-12-26 16:19:18 2015-12-26 16:19:18 21000201 12
257 256 2015-12-26 16:19:18 2015-12-26 16:19:18 21000202 12
258 257 2015-12-26 16:19:18 2015-12-26 16:19:18 21000203 12
259 258 2015-12-26 16:19:18 2015-12-26 16:19:18 21000204 12
260 259 2015-12-26 16:19:18 2015-12-26 16:19:18 21000205 12
261 260 2015-12-26 16:19:18 2015-12-26 16:19:18 21000206 12
262 261 2015-12-26 16:19:18 2015-12-26 16:19:18 21000207 12
263 262 2015-12-26 16:19:18 2015-12-26 16:19:18 21000208 12
264 263 2015-12-26 16:19:18 2015-12-26 16:19:18 21000209 12
265 264 2015-12-26 16:19:18 2015-12-26 16:19:18 21000210 12
266 265 2015-12-26 16:19:18 2015-12-26 16:19:18 21000211 12
267 266 2015-12-26 16:19:18 2015-12-26 16:19:18 21000212 12
268 267 2015-12-26 16:19:18 2015-12-26 16:19:18 21000213 26
269 268 2015-12-26 16:19:18 2015-12-26 16:19:18 21000214 26
270 269 2015-12-26 16:19:18 2015-12-26 16:19:18 21000215 26
271 270 2015-12-26 16:19:18 2015-12-26 16:19:18 21000216 26
272 271 2015-12-26 16:19:18 2015-12-26 16:19:18 21000217 26
273 272 2015-12-26 16:19:18 2015-12-26 16:19:18 21000218 26
274 273 2015-12-26 16:19:18 2015-12-26 16:19:18 21000219 26
275 274 2015-12-26 16:19:18 2015-12-26 16:19:18 21000220 26
276 275 2015-12-26 16:19:18 2015-12-26 16:19:18 21000221 26
277 276 2015-12-26 16:19:18 2015-12-26 16:19:18 21000222 26
278 277 2015-12-26 16:19:18 2015-12-26 16:19:18 21000223 26
279 278 2015-12-26 16:19:18 2015-12-26 16:19:18 21000224 26
280 279 2015-12-26 16:19:18 2015-12-26 16:19:18 21000225 26
281 280 2015-12-26 16:19:18 2015-12-26 16:19:18 21000226 26
282 281 2015-12-26 16:19:18 2015-12-26 16:19:18 21000227 12
283 282 2015-12-26 16:19:18 2015-12-26 16:19:18 21000228 12
284 283 2015-12-26 16:19:18 2015-12-26 16:19:18 21000229 12
285 284 2015-12-26 16:19:18 2015-12-26 16:19:18 21000230 12
286 285 2015-12-26 16:19:18 2015-12-26 16:19:18 21000231 12
287 286 2015-12-26 16:19:18 2015-12-26 16:19:18 21000232 25
288 287 2015-12-26 16:19:18 2015-12-26 16:19:18 21000233 70
289 288 2015-12-26 16:19:18 2015-12-26 16:19:18 21000234 15
290 289 2015-12-26 16:19:18 2015-12-26 16:19:18 21000235 15
291 290 2015-12-26 16:19:18 2015-12-26 16:19:18 21000236 25
292 291 2015-12-26 16:19:18 2015-12-26 16:19:18 21000237 15
293 292 2015-12-26 16:19:18 2015-12-26 16:19:18 21000238 15
294 293 2015-12-26 16:19:18 2015-12-26 16:19:18 21000239 70
295 294 2015-12-26 16:19:18 2015-12-26 16:19:18 21000240 25
296 295 2015-12-26 16:19:18 2015-12-26 16:19:18 21000241 25
297 296 2015-12-26 16:19:18 2015-12-26 16:19:18 21000242 25
298 297 2015-12-26 16:19:18 2015-12-26 16:19:18 21000243 25
299 298 2015-12-26 16:19:18 2015-12-26 16:19:18 21000244 25
300 299 2015-12-26 16:19:18 2015-12-26 16:19:18 21000245 25
301 300 2015-12-26 16:19:18 2015-12-26 16:19:18 21000246 25
302 301 2015-12-26 16:19:18 2015-12-26 16:19:18 21000247 25
303 302 2015-12-26 16:19:18 2015-12-26 16:19:18 21000248 25
304 303 2015-12-26 16:19:18 2015-12-26 16:19:18 21000249 25
305 304 2015-12-26 16:19:18 2015-12-26 16:19:18 21000250 25
306 305 2015-12-26 16:19:18 2015-12-26 16:19:18 21000251 25
307 306 2015-12-26 16:19:18 2015-12-26 16:19:18 21000252 25
308 307 2015-12-26 16:19:18 2015-12-26 16:19:18 21000253 25
309 308 2015-12-26 16:19:18 2015-12-26 16:19:18 21000254 25
310 309 2015-12-26 16:19:18 2015-12-26 16:19:18 21000255 25
311 310 2015-12-26 16:19:18 2015-12-26 16:19:18 21000256 64
312 311 2015-12-26 16:19:18 2015-12-26 16:19:18 21000257 64
313 312 2015-12-26 16:19:18 2015-12-26 16:19:18 21000258 64
314 313 2015-12-26 16:19:18 2015-12-26 16:19:18 21000259 64
315 314 2015-12-26 16:19:18 2015-12-26 16:19:18 21000260 64
316 315 2015-12-26 16:19:18 2015-12-26 16:19:18 21000261 64
317 316 2015-12-26 16:19:18 2015-12-26 16:19:18 21000262 64
318 317 2015-12-26 16:19:18 2015-12-26 16:19:18 21000263 64
319 318 2015-12-26 16:19:18 2015-12-26 16:19:18 21000264 64
320 319 2015-12-26 16:19:18 2015-12-26 16:19:18 21000265 35
321 320 2015-12-26 16:19:18 2015-12-26 16:19:18 21000266 35
322 321 2015-12-26 16:19:18 2015-12-26 16:19:18 21000267 35
323 322 2015-12-26 16:19:18 2015-12-26 16:19:18 21000268 35
324 323 2015-12-26 16:19:18 2015-12-26 16:19:18 21000269 35
325 324 2015-12-26 16:19:18 2015-12-26 16:19:18 21000270 35
326 325 2015-12-26 16:19:18 2015-12-26 16:19:18 21000271 35
327 326 2015-12-26 16:19:18 2015-12-26 16:19:18 21000272 35
328 327 2015-12-26 16:19:18 2015-12-26 16:19:18 21000273 35
329 328 2015-12-26 16:19:18 2015-12-26 16:19:18 21000274 25
330 329 2015-12-26 16:19:18 2015-12-26 16:19:18 21000275 25
331 330 2015-12-26 16:19:18 2015-12-26 16:19:18 21000276 25
332 331 2015-12-26 16:19:18 2015-12-26 16:19:18 21000277 25
333 332 2015-12-26 16:19:18 2015-12-26 16:19:18 21000278 25
334 333 2015-12-26 16:19:18 2015-12-26 16:19:18 21000279 25
335 334 2015-12-26 16:19:18 2015-12-26 16:19:18 21000280 25
336 335 2015-12-26 16:19:18 2015-12-26 16:19:18 21000281 25
337 336 2015-12-26 16:19:18 2015-12-26 16:19:18 21000282 25
338 337 2015-12-26 16:19:18 2015-12-26 16:19:18 21000283 25
339 338 2015-12-26 16:19:18 2015-12-26 16:19:18 21000284 25
340 339 2015-12-26 16:19:18 2015-12-26 16:19:18 21000285 25
341 340 2015-12-26 16:19:18 2015-12-26 16:19:18 21000286 20
342 341 2015-12-26 16:19:18 2015-12-26 16:19:18 21000287 20
343 342 2015-12-26 16:19:18 2015-12-26 16:19:18 21000288 20
344 343 2015-12-26 16:19:18 2015-12-26 16:19:18 21000289 20
345 344 2015-12-26 16:19:18 2015-12-26 16:19:18 21000290 20
346 345 2015-12-26 16:19:18 2015-12-26 16:19:18 21000291 20
347 346 2015-12-26 16:19:18 2015-12-26 16:19:18 21000292 20
348 347 2015-12-26 16:19:18 2015-12-26 16:19:18 21000293 20
349 348 2015-12-26 16:19:18 2015-12-26 16:19:18 21000294 20
350 349 2015-12-26 16:19:18 2015-12-26 16:19:18 21000295 20
351 350 2015-12-26 16:19:18 2015-12-26 16:19:18 21000296 20
352 351 2015-12-26 16:19:18 2015-12-26 16:19:18 21000297 23
353 352 2015-12-26 16:19:18 2015-12-26 16:19:18 21000298 66
354 353 2015-12-26 16:19:18 2015-12-26 16:19:18 21000299 65
355 354 2015-12-26 16:19:18 2015-12-26 16:19:18 21000300 32
356 355 2015-12-26 16:19:18 2015-12-26 16:19:18 21000301 51
357 356 2015-12-26 16:19:18 2015-12-26 16:19:18 21000302 74
358 357 2015-12-26 16:19:18 2015-12-26 16:19:18 21000303 66
359 358 2015-12-26 16:19:18 2015-12-26 16:19:18 21000304 32
360 359 2015-12-26 16:19:18 2015-12-26 16:19:18 21000305 74
361 360 2015-12-26 16:19:18 2015-12-26 16:19:18 21000306 65
362 361 2015-12-26 16:19:18 2015-12-26 16:19:18 21000307 65
363 362 2015-12-26 16:19:18 2015-12-26 16:19:18 21000308 65
364 363 2015-12-26 16:19:18 2015-12-26 16:19:18 21000309 65
365 364 2015-12-26 16:19:18 2015-12-26 16:19:18 21000310 65
366 365 2015-12-26 16:19:18 2015-12-26 16:19:18 21000311 72
367 366 2015-12-26 16:19:18 2015-12-26 16:19:18 21000312 72
368 367 2015-12-26 16:19:18 2015-12-26 16:19:18 21000313 72
369 368 2015-12-26 16:19:18 2015-12-26 16:19:18 21000314 28
370 369 2015-12-26 16:19:18 2015-12-26 16:19:18 21000315 28
371 370 2015-12-26 16:19:18 2015-12-26 16:19:18 21000316 28
372 371 2015-12-26 16:19:18 2015-12-26 16:19:18 21000317 28
373 372 2015-12-26 16:19:18 2015-12-26 16:19:18 21000318 28
374 373 2015-12-26 16:19:18 2015-12-26 16:19:18 21000319 28
375 374 2015-12-26 16:19:18 2015-12-26 16:19:18 21000320 28
376 375 2015-12-26 16:19:18 2015-12-26 16:19:18 21000321 28
377 376 2015-12-26 16:19:18 2015-12-26 16:19:18 21000322 28
378 377 2015-12-26 16:19:18 2015-12-26 16:19:18 21000323 28
379 378 2015-12-26 16:19:18 2015-12-26 16:19:18 21000153 68
380 379 2015-12-26 16:19:18 2015-12-26 16:19:18 21000154 68
381 380 2015-12-26 16:19:18 2015-12-26 16:19:18 21000155 68
382 381 2015-12-26 16:19:18 2015-12-26 16:19:18 21000156 49
383 382 2015-12-26 16:19:18 2015-12-26 16:19:18 21000157 26
384 383 2015-12-26 16:19:18 2015-12-26 16:19:18 21000158 26
385 384 2015-12-26 16:19:18 2015-12-26 16:19:18 21000159 12
386 385 2015-12-26 16:19:18 2015-12-26 16:19:18 21000160 26
387 386 2015-12-26 16:19:18 2015-12-26 16:19:18 21000161 12
388 387 2015-12-26 16:19:18 2015-12-26 16:19:18 21000162 26
389 388 2015-12-26 16:19:18 2015-12-26 16:19:18 21000163 12
390 389 2015-12-26 16:19:18 2015-12-26 16:19:18 21000164 26
391 390 2015-12-26 16:19:18 2015-12-26 16:19:18 21000165 68
392 391 2015-12-26 16:19:18 2015-12-26 16:19:18 21000166 12
393 392 2015-12-26 16:19:18 2015-12-26 16:19:18 21000167 42
394 393 2015-12-26 16:19:18 2015-12-26 16:19:18 21000168 26
395 394 2015-12-26 16:19:18 2015-12-26 16:19:18 21000169 68
396 395 2015-12-26 16:19:18 2015-12-26 16:19:18 21000170 42
397 396 2015-12-26 16:19:18 2015-12-26 16:19:18 21000171 68
398 397 2015-12-26 16:19:18 2015-12-26 16:19:18 21000172 12
399 398 2015-12-26 16:19:18 2015-12-26 16:19:18 21000173 42
400 399 2015-12-26 16:19:18 2015-12-26 16:19:18 21000174 49
401 400 2015-12-26 16:19:18 2015-12-26 16:19:18 21000175 12
402 401 2015-12-26 16:19:18 2015-12-26 16:19:18 21000176 12
403 402 2015-12-26 16:19:18 2015-12-26 16:19:18 21000177 12
404 403 2015-12-26 16:19:18 2015-12-26 16:19:18 21000178 61
405 404 2015-12-26 16:19:18 2015-12-26 16:19:18 21000179 26
406 405 2015-12-26 16:19:18 2015-12-26 16:19:18 21000180 26
407 406 2015-12-26 16:19:18 2015-12-26 16:19:18 21000181 26
408 407 2015-12-26 16:19:18 2015-12-26 16:19:18 21000182 61
409 408 2015-12-26 16:19:18 2015-12-26 16:19:18 21000183 12
410 409 2015-12-26 16:19:18 2015-12-26 16:19:18 21000184 12
411 410 2015-12-26 16:19:18 2015-12-26 16:19:18 21000185 26
412 411 2015-12-26 16:19:18 2015-12-26 16:19:18 21000186 26
413 412 2015-12-26 16:19:18 2015-12-26 16:19:18 21000187 42
414 413 2015-12-26 16:19:18 2015-12-26 16:19:18 21000188 26
415 414 2015-12-26 16:19:18 2015-12-26 16:19:18 21000189 42
416 415 2015-12-26 16:19:18 2015-12-26 16:19:18 21000190 42
417 416 2015-12-26 16:19:18 2015-12-26 16:19:18 21000191 12
418 417 2015-12-26 16:19:18 2015-12-26 16:19:18 21000192 42
419 418 2015-12-26 16:19:18 2015-12-26 16:19:18 21000193 49
420 419 2015-12-26 16:19:18 2015-12-26 16:19:18 21000194 12
421 420 2015-12-26 16:19:18 2015-12-26 16:19:18 21000195 68
422 421 2015-12-26 16:19:18 2015-12-26 16:19:18 21000196 49
423 422 2015-12-26 16:19:18 2015-12-26 16:19:18 21000197 26
424 423 2015-12-26 16:19:18 2015-12-26 16:19:18 21000198 42
425 424 2015-12-26 16:19:18 2015-12-26 16:19:18 21000199 42
426 425 2015-12-26 16:19:18 2015-12-26 16:19:18 21000200 68
427 426 2015-12-26 16:19:18 2015-12-26 16:19:18 21000201 68
428 427 2015-12-26 16:19:18 2015-12-26 16:19:18 21000202 42
429 428 2015-12-26 16:19:18 2015-12-26 16:19:18 21000203 26
430 429 2015-12-26 16:19:18 2015-12-26 16:19:18 21000204 26
431 430 2015-12-26 16:19:18 2015-12-26 16:19:18 21000205 49
432 431 2015-12-26 16:19:18 2015-12-26 16:19:18 21000206 68
433 432 2015-12-26 16:19:18 2015-12-26 16:19:18 21000207 68
434 433 2015-12-26 16:19:18 2015-12-26 16:19:18 21000208 26
435 434 2015-12-26 16:19:18 2015-12-26 16:19:18 21000209 26
436 435 2015-12-26 16:19:18 2015-12-26 16:19:18 21000210 26
437 436 2015-12-26 16:19:18 2015-12-26 16:19:18 21000211 61
438 437 2015-12-26 16:19:18 2015-12-26 16:19:18 21000212 42
439 438 2015-12-26 16:19:18 2015-12-26 16:19:18 21000213 12
440 439 2015-12-26 16:19:18 2015-12-26 16:19:18 21000214 68
441 440 2015-12-26 16:19:18 2015-12-26 16:19:18 21000215 12
442 441 2015-12-26 16:19:18 2015-12-26 16:19:18 21000216 68
443 442 2015-12-26 16:19:18 2015-12-26 16:19:18 21000217 42
444 443 2015-12-26 16:19:18 2015-12-26 16:19:18 21000218 12
445 444 2015-12-26 16:19:18 2015-12-26 16:19:18 21000219 12
446 445 2015-12-26 16:19:18 2015-12-26 16:19:18 21000220 68
447 446 2015-12-26 16:19:18 2015-12-26 16:19:18 21000221 42
448 447 2015-12-26 16:19:18 2015-12-26 16:19:18 21000222 68
449 448 2015-12-26 16:19:18 2015-12-26 16:19:18 21000223 12
450 449 2015-12-26 16:19:18 2015-12-26 16:19:18 21000224 42
451 450 2015-12-26 16:19:18 2015-12-26 16:19:18 21000225 49
452 451 2015-12-26 16:19:18 2015-12-26 16:19:18 21000226 61
453 452 2015-12-26 16:19:18 2015-12-26 16:19:18 21000227 68
454 453 2015-12-26 16:19:18 2015-12-26 16:19:18 21000228 42
455 454 2015-12-26 16:19:18 2015-12-26 16:19:18 21000229 68
456 455 2015-12-26 16:19:18 2015-12-26 16:19:18 21000230 68
457 456 2015-12-26 16:19:18 2015-12-26 16:19:18 21000231 49
458 457 2015-12-26 16:19:18 2015-12-26 16:19:18 21000329 20
459 458 2016-07-15 18:45:01 2016-07-15 18:45:01 21000324 81
460 459 2016-07-15 18:45:01 2016-07-15 18:45:01 21000324 82
461 460 2016-07-15 18:45:09 2016-07-15 18:45:09 21000324 83
462 461 2016-07-15 19:55:26 2016-07-15 19:55:26 21000062 75

View File

@@ -0,0 +1,152 @@
"Id";"Created";"Updated";"SystemId";"WormholeId";
"1";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002572";"59";
"2";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002572";"25";
"3";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002518";"6";
"4";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002518";"21";
"5";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002543";"12";
"6";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002543";"68";
"7";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002528";"18";
"8";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002528";"59";
"9";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002535";"18";
"10";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002535";"59";
"11";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002530";"18";
"12";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002530";"59";
"13";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002557";"59";
"14";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002557";"25";
"15";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002548";"12";
"16";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002548";"68";
"17";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002564";"59";
"18";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002564";"25";
"19";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002524";"6";
"20";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002524";"21";
"21";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002514";"39";
"22";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002514";"28";
"23";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002542";"12";
"24";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002542";"68";
"25";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002538";"12";
"26";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002538";"68";
"27";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002511";"39";
"28";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002511";"28";
"29";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002529";"18";
"30";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002529";"59";
"31";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002525";"6";
"32";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002525";"21";
"33";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002562";"59";
"34";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002562";"25";
"35";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002563";"59";
"36";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002563";"25";
"37";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002532";"18";
"38";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002532";"59";
"39";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002569";"59";
"40";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002569";"25";
"41";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002558";"59";
"42";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002558";"25";
"43";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002570";"59";
"44";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002570";"25";
"45";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002549";"12";
"46";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002549";"68";
"47";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002537";"30";
"48";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002537";"59";
"49";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002513";"39";
"50";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002513";"28";
"51";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002539";"12";
"52";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002539";"68";
"53";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002526";"6";
"54";"2016-07-16 13:53:19";"2016-07-16 13:53:19";"31002526";"21";
"55";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002512";"39";
"56";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002512";"28";
"57";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002574";"59";
"58";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002574";"25";
"59";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002561";"59";
"60";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002561";"25";
"61";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002571";"59";
"62";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002571";"25";
"63";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002567";"59";
"64";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002567";"20";
"65";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002546";"12";
"66";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002546";"68";
"67";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002555";"12";
"68";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002555";"68";
"69";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002552";"12";
"70";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002552";"68";
"71";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002515";"6";
"72";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002515";"21";
"73";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002568";"59";
"74";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002568";"25";
"75";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002573";"59";
"76";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002573";"25";
"77";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002506";"39";
"78";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002506";"28";
"79";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002550";"12";
"80";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002550";"68";
"81";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002516";"6";
"82";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002516";"21";
"83";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002534";"18";
"84";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002534";"59";
"85";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002508";"39";
"86";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002508";"28";
"87";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002547";"12";
"88";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002547";"68";
"89";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002523";"6";
"90";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002523";"21";
"91";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002541";"12";
"92";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002541";"68";
"93";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002576";"30";
"94";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002576";"65";
"95";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002544";"12";
"96";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002544";"68";
"97";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002509";"39";
"98";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002509";"28";
"99";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002556";"59";
"100";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002556";"25";
"101";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002579";"30";
"102";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002579";"65";
"103";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002554";"12";
"104";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002554";"68";
"105";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002519";"6";
"106";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002519";"21";
"107";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002536";"18";
"108";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002536";"59";
"109";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002553";"12";
"110";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002553";"68";
"111";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002551";"12";
"112";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002551";"68";
"113";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002527";"18";
"114";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002527";"59";
"115";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002545";"12";
"116";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002545";"68";
"117";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002559";"59";
"118";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002559";"25";
"119";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002540";"12";
"120";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002540";"68";
"121";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002510";"39";
"122";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002510";"28";
"123";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002507";"39";
"124";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002507";"28";
"125";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002577";"30";
"126";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002577";"65";
"127";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002565";"59";
"128";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002565";"25";
"129";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002522";"6";
"130";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002522";"21";
"131";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002575";"30";
"132";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002575";"65";
"133";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002521";"6";
"134";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002521";"21";
"135";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002566";"59";
"136";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002566";"25";
"137";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002533";"18";
"138";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002533";"59";
"139";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002517";"6";
"140";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002517";"21";
"141";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002520";"6";
"142";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002520";"21";
"143";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002560";"59";
"144";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002560";"25";
"145";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002531";"18";
"146";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002531";"59";
"147";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002505";"39";
"148";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002505";"28";
"149";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002578";"30";
"150";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002578";"13";
"151";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002578";"66";
1 Id Created Updated SystemId WormholeId
2 1 2016-07-16 13:53:19 2016-07-16 13:53:19 31002572 59
3 2 2016-07-16 13:53:19 2016-07-16 13:53:19 31002572 25
4 3 2016-07-16 13:53:19 2016-07-16 13:53:19 31002518 6
5 4 2016-07-16 13:53:19 2016-07-16 13:53:19 31002518 21
6 5 2016-07-16 13:53:19 2016-07-16 13:53:19 31002543 12
7 6 2016-07-16 13:53:19 2016-07-16 13:53:19 31002543 68
8 7 2016-07-16 13:53:19 2016-07-16 13:53:19 31002528 18
9 8 2016-07-16 13:53:19 2016-07-16 13:53:19 31002528 59
10 9 2016-07-16 13:53:19 2016-07-16 13:53:19 31002535 18
11 10 2016-07-16 13:53:19 2016-07-16 13:53:19 31002535 59
12 11 2016-07-16 13:53:19 2016-07-16 13:53:19 31002530 18
13 12 2016-07-16 13:53:19 2016-07-16 13:53:19 31002530 59
14 13 2016-07-16 13:53:19 2016-07-16 13:53:19 31002557 59
15 14 2016-07-16 13:53:19 2016-07-16 13:53:19 31002557 25
16 15 2016-07-16 13:53:19 2016-07-16 13:53:19 31002548 12
17 16 2016-07-16 13:53:19 2016-07-16 13:53:19 31002548 68
18 17 2016-07-16 13:53:19 2016-07-16 13:53:19 31002564 59
19 18 2016-07-16 13:53:19 2016-07-16 13:53:19 31002564 25
20 19 2016-07-16 13:53:19 2016-07-16 13:53:19 31002524 6
21 20 2016-07-16 13:53:19 2016-07-16 13:53:19 31002524 21
22 21 2016-07-16 13:53:19 2016-07-16 13:53:19 31002514 39
23 22 2016-07-16 13:53:19 2016-07-16 13:53:19 31002514 28
24 23 2016-07-16 13:53:19 2016-07-16 13:53:19 31002542 12
25 24 2016-07-16 13:53:19 2016-07-16 13:53:19 31002542 68
26 25 2016-07-16 13:53:19 2016-07-16 13:53:19 31002538 12
27 26 2016-07-16 13:53:19 2016-07-16 13:53:19 31002538 68
28 27 2016-07-16 13:53:19 2016-07-16 13:53:19 31002511 39
29 28 2016-07-16 13:53:19 2016-07-16 13:53:19 31002511 28
30 29 2016-07-16 13:53:19 2016-07-16 13:53:19 31002529 18
31 30 2016-07-16 13:53:19 2016-07-16 13:53:19 31002529 59
32 31 2016-07-16 13:53:19 2016-07-16 13:53:19 31002525 6
33 32 2016-07-16 13:53:19 2016-07-16 13:53:19 31002525 21
34 33 2016-07-16 13:53:19 2016-07-16 13:53:19 31002562 59
35 34 2016-07-16 13:53:19 2016-07-16 13:53:19 31002562 25
36 35 2016-07-16 13:53:19 2016-07-16 13:53:19 31002563 59
37 36 2016-07-16 13:53:19 2016-07-16 13:53:19 31002563 25
38 37 2016-07-16 13:53:19 2016-07-16 13:53:19 31002532 18
39 38 2016-07-16 13:53:19 2016-07-16 13:53:19 31002532 59
40 39 2016-07-16 13:53:19 2016-07-16 13:53:19 31002569 59
41 40 2016-07-16 13:53:19 2016-07-16 13:53:19 31002569 25
42 41 2016-07-16 13:53:19 2016-07-16 13:53:19 31002558 59
43 42 2016-07-16 13:53:19 2016-07-16 13:53:19 31002558 25
44 43 2016-07-16 13:53:19 2016-07-16 13:53:19 31002570 59
45 44 2016-07-16 13:53:19 2016-07-16 13:53:19 31002570 25
46 45 2016-07-16 13:53:19 2016-07-16 13:53:19 31002549 12
47 46 2016-07-16 13:53:19 2016-07-16 13:53:19 31002549 68
48 47 2016-07-16 13:53:19 2016-07-16 13:53:19 31002537 30
49 48 2016-07-16 13:53:19 2016-07-16 13:53:19 31002537 59
50 49 2016-07-16 13:53:19 2016-07-16 13:53:19 31002513 39
51 50 2016-07-16 13:53:19 2016-07-16 13:53:19 31002513 28
52 51 2016-07-16 13:53:19 2016-07-16 13:53:19 31002539 12
53 52 2016-07-16 13:53:19 2016-07-16 13:53:19 31002539 68
54 53 2016-07-16 13:53:19 2016-07-16 13:53:19 31002526 6
55 54 2016-07-16 13:53:19 2016-07-16 13:53:19 31002526 21
56 55 2016-07-16 13:53:20 2016-07-16 13:53:20 31002512 39
57 56 2016-07-16 13:53:20 2016-07-16 13:53:20 31002512 28
58 57 2016-07-16 13:53:20 2016-07-16 13:53:20 31002574 59
59 58 2016-07-16 13:53:20 2016-07-16 13:53:20 31002574 25
60 59 2016-07-16 13:53:20 2016-07-16 13:53:20 31002561 59
61 60 2016-07-16 13:53:20 2016-07-16 13:53:20 31002561 25
62 61 2016-07-16 13:53:20 2016-07-16 13:53:20 31002571 59
63 62 2016-07-16 13:53:20 2016-07-16 13:53:20 31002571 25
64 63 2016-07-16 13:53:20 2016-07-16 13:53:20 31002567 59
65 64 2016-07-16 13:53:20 2016-07-16 13:53:20 31002567 20
66 65 2016-07-16 13:53:20 2016-07-16 13:53:20 31002546 12
67 66 2016-07-16 13:53:20 2016-07-16 13:53:20 31002546 68
68 67 2016-07-16 13:53:20 2016-07-16 13:53:20 31002555 12
69 68 2016-07-16 13:53:20 2016-07-16 13:53:20 31002555 68
70 69 2016-07-16 13:53:20 2016-07-16 13:53:20 31002552 12
71 70 2016-07-16 13:53:20 2016-07-16 13:53:20 31002552 68
72 71 2016-07-16 13:53:20 2016-07-16 13:53:20 31002515 6
73 72 2016-07-16 13:53:20 2016-07-16 13:53:20 31002515 21
74 73 2016-07-16 13:53:20 2016-07-16 13:53:20 31002568 59
75 74 2016-07-16 13:53:20 2016-07-16 13:53:20 31002568 25
76 75 2016-07-16 13:53:20 2016-07-16 13:53:20 31002573 59
77 76 2016-07-16 13:53:20 2016-07-16 13:53:20 31002573 25
78 77 2016-07-16 13:53:20 2016-07-16 13:53:20 31002506 39
79 78 2016-07-16 13:53:20 2016-07-16 13:53:20 31002506 28
80 79 2016-07-16 13:53:20 2016-07-16 13:53:20 31002550 12
81 80 2016-07-16 13:53:20 2016-07-16 13:53:20 31002550 68
82 81 2016-07-16 13:53:20 2016-07-16 13:53:20 31002516 6
83 82 2016-07-16 13:53:20 2016-07-16 13:53:20 31002516 21
84 83 2016-07-16 13:53:20 2016-07-16 13:53:20 31002534 18
85 84 2016-07-16 13:53:20 2016-07-16 13:53:20 31002534 59
86 85 2016-07-16 13:53:20 2016-07-16 13:53:20 31002508 39
87 86 2016-07-16 13:53:20 2016-07-16 13:53:20 31002508 28
88 87 2016-07-16 13:53:20 2016-07-16 13:53:20 31002547 12
89 88 2016-07-16 13:53:20 2016-07-16 13:53:20 31002547 68
90 89 2016-07-16 13:53:20 2016-07-16 13:53:20 31002523 6
91 90 2016-07-16 13:53:20 2016-07-16 13:53:20 31002523 21
92 91 2016-07-16 13:53:20 2016-07-16 13:53:20 31002541 12
93 92 2016-07-16 13:53:20 2016-07-16 13:53:20 31002541 68
94 93 2016-07-16 13:53:20 2016-07-16 13:53:20 31002576 30
95 94 2016-07-16 13:53:20 2016-07-16 13:53:20 31002576 65
96 95 2016-07-16 13:53:20 2016-07-16 13:53:20 31002544 12
97 96 2016-07-16 13:53:20 2016-07-16 13:53:20 31002544 68
98 97 2016-07-16 13:53:20 2016-07-16 13:53:20 31002509 39
99 98 2016-07-16 13:53:20 2016-07-16 13:53:20 31002509 28
100 99 2016-07-16 13:53:20 2016-07-16 13:53:20 31002556 59
101 100 2016-07-16 13:53:20 2016-07-16 13:53:20 31002556 25
102 101 2016-07-16 13:53:20 2016-07-16 13:53:20 31002579 30
103 102 2016-07-16 13:53:20 2016-07-16 13:53:20 31002579 65
104 103 2016-07-16 13:53:20 2016-07-16 13:53:20 31002554 12
105 104 2016-07-16 13:53:20 2016-07-16 13:53:20 31002554 68
106 105 2016-07-16 13:53:20 2016-07-16 13:53:20 31002519 6
107 106 2016-07-16 13:53:20 2016-07-16 13:53:20 31002519 21
108 107 2016-07-16 13:53:20 2016-07-16 13:53:20 31002536 18
109 108 2016-07-16 13:53:20 2016-07-16 13:53:20 31002536 59
110 109 2016-07-16 13:53:20 2016-07-16 13:53:20 31002553 12
111 110 2016-07-16 13:53:20 2016-07-16 13:53:20 31002553 68
112 111 2016-07-16 13:53:20 2016-07-16 13:53:20 31002551 12
113 112 2016-07-16 13:53:20 2016-07-16 13:53:20 31002551 68
114 113 2016-07-16 13:53:20 2016-07-16 13:53:20 31002527 18
115 114 2016-07-16 13:53:20 2016-07-16 13:53:20 31002527 59
116 115 2016-07-16 13:53:20 2016-07-16 13:53:20 31002545 12
117 116 2016-07-16 13:53:20 2016-07-16 13:53:20 31002545 68
118 117 2016-07-16 13:53:20 2016-07-16 13:53:20 31002559 59
119 118 2016-07-16 13:53:20 2016-07-16 13:53:20 31002559 25
120 119 2016-07-16 13:53:20 2016-07-16 13:53:20 31002540 12
121 120 2016-07-16 13:53:20 2016-07-16 13:53:20 31002540 68
122 121 2016-07-16 13:53:20 2016-07-16 13:53:20 31002510 39
123 122 2016-07-16 13:53:20 2016-07-16 13:53:20 31002510 28
124 123 2016-07-16 13:53:20 2016-07-16 13:53:20 31002507 39
125 124 2016-07-16 13:53:20 2016-07-16 13:53:20 31002507 28
126 125 2016-07-16 13:53:20 2016-07-16 13:53:20 31002577 30
127 126 2016-07-16 13:53:20 2016-07-16 13:53:20 31002577 65
128 127 2016-07-16 13:53:20 2016-07-16 13:53:20 31002565 59
129 128 2016-07-16 13:53:20 2016-07-16 13:53:20 31002565 25
130 129 2016-07-16 13:53:20 2016-07-16 13:53:20 31002522 6
131 130 2016-07-16 13:53:20 2016-07-16 13:53:20 31002522 21
132 131 2016-07-16 13:53:20 2016-07-16 13:53:20 31002575 30
133 132 2016-07-16 13:53:20 2016-07-16 13:53:20 31002575 65
134 133 2016-07-16 13:53:20 2016-07-16 13:53:20 31002521 6
135 134 2016-07-16 13:53:20 2016-07-16 13:53:20 31002521 21
136 135 2016-07-16 13:53:20 2016-07-16 13:53:20 31002566 59
137 136 2016-07-16 13:53:20 2016-07-16 13:53:20 31002566 25
138 137 2016-07-16 13:53:20 2016-07-16 13:53:20 31002533 18
139 138 2016-07-16 13:53:20 2016-07-16 13:53:20 31002533 59
140 139 2016-07-16 13:53:20 2016-07-16 13:53:20 31002517 6
141 140 2016-07-16 13:53:20 2016-07-16 13:53:20 31002517 21
142 141 2016-07-16 13:53:20 2016-07-16 13:53:20 31002520 6
143 142 2016-07-16 13:53:20 2016-07-16 13:53:20 31002520 21
144 143 2016-07-16 13:53:20 2016-07-16 13:53:20 31002560 59
145 144 2016-07-16 13:53:20 2016-07-16 13:53:20 31002560 25
146 145 2016-07-16 13:53:20 2016-07-16 13:53:20 31002531 18
147 146 2016-07-16 13:53:20 2016-07-16 13:53:20 31002531 59
148 147 2016-07-16 13:53:20 2016-07-16 13:53:20 31002505 39
149 148 2016-07-16 13:53:20 2016-07-16 13:53:20 31002505 28
150 149 2016-07-16 13:53:20 2016-07-16 13:53:20 31002578 30
151 150 2016-07-16 13:53:20 2016-07-16 13:53:20 31002578 13
152 151 2016-07-16 13:53:20 2016-07-16 13:53:20 31002578 66

81
export/csv/wormhole.csv Normal file
View File

@@ -0,0 +1,81 @@
"Id";"Name";"Security";"MassTotal";"MassIndividual";"MassRegeneration";"MaxStableTime";
"1";"A009";"L";"500000000";"20000000";;"16";
"2";"A239";"L";"2000000000";"300000000";;"24";
"3";"A641";"H";"2000000000";"1000000000";;"16";
"4";"A982";"C6";"3000000000";"300000000";;"24";
"5";"B041";"C6";"5000000000";"300000000";"500000000";"48";
"6";"B274";"H";"2000000000";"300000000";;"24";
"7";"B449";"H";"2000000000";"1000000000";;"16";
"8";"B520";"H";"5000000000";"300000000";"500000000";"24";
"9";"C008";"C5";;"5000000";"1";"16";
"10";"C125";"C2";"1000000000";"20000000";;"16";
"11";"C140";"L";"3000000000";"1350000000";;"24";
"12";"C247";"C3";"2000000000";"300000000";;"16";
"13";"C248";"0.0";"5000000000";"1800000000";"500000000";"24";
"14";"C391";"L";"5000000000";"1800000000";"500000000";"24";
"15";"D364";"C2";"1000000000";"300000000";;"16";
"16";"D382";"C2";"2000000000";"300000000";;"16";
"17";"D792";"H";"3000000000";"1000000000";;"24";
"18";"D845";"H";"5000000000";"300000000";"500000000";"24";
"19";"E004";"C1";;"5000000";"1";"16";
"20";"E175";"C4";"2000000000";"300000000";;"16";
"21";"E545";"0.0";"2000000000";"300000000";;"24";
"22";"G009";"C6";;"5000000";;"16";
"23";"G024";"C2";"2000000000";"300000000";;"16";
"24";"H121";"C1";"500000000";"20000000";;"16";
"25";"H296";"C5";"3000000000";"1350000000";;"24";
"26";"H900";"C5";"3000000000";"300000000";;"24";
"27";"I182";"C2";"2000000000";"300000000";;"16";
"28";"J244";"L";"1000000000";"20000000";;"24";
"29";"K329";"0.0";"5000000000";"1800000000";"500000000";"24";
"30";"K346";"0.0";"3000000000";"300000000";;"24";
"31";"L005";"C2";;"5000000";"1";"16";
"32";"L477";"C3";"2000000000";"300000000";;"16";
"33";"L614";"C5";"1000000000";"20000000";;"24";
"34";"M006";"C4";;"5000000";"1";"16";
"35";"M267";"C3";"1000000000";"300000000";;"16";
"36";"M555";"C5";"3000000000";"1000000000";;"24";
"37";"M609";"C4";"1000000000";"20000000";;"16";
"38";"N062";"C5";"3000000000";"300000000";;"24";
"39";"N110";"H";"1000000000";"20000000";;"24";
"40";"N290";"L";"5000000000";"1800000000";"500000000";"24";
"41";"N432";"C5";"3000000000";"1350000000";;"24";
"42";"N766";"C2";"2000000000";"300000000";;"16";
"43";"N770";"C5";"3000000000";"300000000";;"24";
"44";"N944";"L";"3000000000";"1350000000";;"24";
"45";"N968";"C3";"2000000000";"300000000";;"16";
"46";"O128";"C4";"1000000000";"300000000";"100000000";"24";
"47";"O477";"C3";"2000000000";"300000000";;"16";
"48";"O883";"C3";"1000000000";"20000000";;"16";
"49";"P060";"C1";"500000000";"20000000";;"16";
"50";"Q003";"0.0";;"5000000";"1";"16";
"51";"Q317";"C1";"500000000";"20000000";;"16";
"52";"R051";"L";"3000000000";"1000000000";;"16";
"53";"R474";"C6";"3000000000";"300000000";;"24";
"54";"R943";"C2";"750000000";"300000000";;"16";
"55";"S047";"H";"3000000000";"300000000";;"24";
"56";"S199";"0.0";"3000000000";"1350000000";;"24";
"57";"S804";"C6";"1000000000";"20000000";;"24";
"58";"T405";"C4";"2000000000";"300000000";;"16";
"59";"U210";"L";"3000000000";"300000000";;"24";
"60";"U319";"C6";"3000000000";"1800000000";"500000000";"48";
"61";"U574";"C6";"3000000000";"300000000";;"24";
"62";"V283";"0.0";"3000000000";"1000000000";;"24";
"63";"V301";"C1";"500000000";"20000000";;"16";
"64";"V753";"C6";"3000000000";"1350000000";;"24";
"65";"V911";"C5";"3000000000";"1350000000";;"24";
"66";"W237";"C6";"3000000000";"1350000000";;"24";
"67";"X702";"C3";"1000000000";"300000000";;"24";
"68";"X877";"C4";"2000000000";"300000000";;"16";
"69";"Y683";"C4";"2000000000";"300000000";;"16";
"70";"Y790";"C1";"500000000";"20000000";;"16";
"71";"Z006";"C3";;"5000000";"1";"16";
"72";"Z060";"0.0";"1000000000";"20000000";;"24";
"73";"Z142";"0.0";"3000000000";"1350000000";;"24";
"74";"Z457";"C4";"2000000000";"300000000";;"16";
"75";"Z647";"C1";"500000000";"20000000";;"16";
"76";"Z971";"C1";"100000000";"20000000";;"16";
"80";"M001";"C4";;"5000000";"1";"16";
"81";"E587";"0.0";"3000000000";"1000000000";;"16";
"82";"V898";"L";"2000000000";"300000000";;"16";
"83";"Q063";"H";"500000000";"20000000";;"16";
1 Id Name Security MassTotal MassIndividual MassRegeneration MaxStableTime
2 1 A009 L 500000000 20000000 16
3 2 A239 L 2000000000 300000000 24
4 3 A641 H 2000000000 1000000000 16
5 4 A982 C6 3000000000 300000000 24
6 5 B041 C6 5000000000 300000000 500000000 48
7 6 B274 H 2000000000 300000000 24
8 7 B449 H 2000000000 1000000000 16
9 8 B520 H 5000000000 300000000 500000000 24
10 9 C008 C5 5000000 1 16
11 10 C125 C2 1000000000 20000000 16
12 11 C140 L 3000000000 1350000000 24
13 12 C247 C3 2000000000 300000000 16
14 13 C248 0.0 5000000000 1800000000 500000000 24
15 14 C391 L 5000000000 1800000000 500000000 24
16 15 D364 C2 1000000000 300000000 16
17 16 D382 C2 2000000000 300000000 16
18 17 D792 H 3000000000 1000000000 24
19 18 D845 H 5000000000 300000000 500000000 24
20 19 E004 C1 5000000 1 16
21 20 E175 C4 2000000000 300000000 16
22 21 E545 0.0 2000000000 300000000 24
23 22 G009 C6 5000000 16
24 23 G024 C2 2000000000 300000000 16
25 24 H121 C1 500000000 20000000 16
26 25 H296 C5 3000000000 1350000000 24
27 26 H900 C5 3000000000 300000000 24
28 27 I182 C2 2000000000 300000000 16
29 28 J244 L 1000000000 20000000 24
30 29 K329 0.0 5000000000 1800000000 500000000 24
31 30 K346 0.0 3000000000 300000000 24
32 31 L005 C2 5000000 1 16
33 32 L477 C3 2000000000 300000000 16
34 33 L614 C5 1000000000 20000000 24
35 34 M006 C4 5000000 1 16
36 35 M267 C3 1000000000 300000000 16
37 36 M555 C5 3000000000 1000000000 24
38 37 M609 C4 1000000000 20000000 16
39 38 N062 C5 3000000000 300000000 24
40 39 N110 H 1000000000 20000000 24
41 40 N290 L 5000000000 1800000000 500000000 24
42 41 N432 C5 3000000000 1350000000 24
43 42 N766 C2 2000000000 300000000 16
44 43 N770 C5 3000000000 300000000 24
45 44 N944 L 3000000000 1350000000 24
46 45 N968 C3 2000000000 300000000 16
47 46 O128 C4 1000000000 300000000 100000000 24
48 47 O477 C3 2000000000 300000000 16
49 48 O883 C3 1000000000 20000000 16
50 49 P060 C1 500000000 20000000 16
51 50 Q003 0.0 5000000 1 16
52 51 Q317 C1 500000000 20000000 16
53 52 R051 L 3000000000 1000000000 16
54 53 R474 C6 3000000000 300000000 24
55 54 R943 C2 750000000 300000000 16
56 55 S047 H 3000000000 300000000 24
57 56 S199 0.0 3000000000 1350000000 24
58 57 S804 C6 1000000000 20000000 24
59 58 T405 C4 2000000000 300000000 16
60 59 U210 L 3000000000 300000000 24
61 60 U319 C6 3000000000 1800000000 500000000 48
62 61 U574 C6 3000000000 300000000 24
63 62 V283 0.0 3000000000 1000000000 24
64 63 V301 C1 500000000 20000000 16
65 64 V753 C6 3000000000 1350000000 24
66 65 V911 C5 3000000000 1350000000 24
67 66 W237 C6 3000000000 1350000000 24
68 67 X702 C3 1000000000 300000000 24
69 68 X877 C4 2000000000 300000000 16
70 69 Y683 C4 2000000000 300000000 16
71 70 Y790 C1 500000000 20000000 16
72 71 Z006 C3 5000000 1 16
73 72 Z060 0.0 1000000000 20000000 24
74 73 Z142 0.0 3000000000 1350000000 24
75 74 Z457 C4 2000000000 300000000 16
76 75 Z647 C1 500000000 20000000 16
77 76 Z971 C1 100000000 20000000 16
78 80 M001 C4 5000000 1 16
79 81 E587 0.0 3000000000 1000000000 16
80 82 V898 L 2000000000 300000000 16
81 83 Q063 H 500000000 20000000 16

75
export/json/statics.json Normal file
View File

@@ -0,0 +1,75 @@
{"J001025":["U210","H296"],
"J001057":["B274","E545"],
"J001302":["C247","X877"],
"J001348":["D845","U210"],
"J001398":["D845","U210"],
"J001670":["D845","U210"],
"J001694":["U210","H296"],
"J001769":["C247","X877"],
"J001820":["U210","H296"],
"J001890":["B274","E545"],
"J002216":["N110","J244"],
"J002423":["C247","X877"],
"J002625":["C247","X877"],
"J002757":["N110","J244"],
"J002838":["D845","U210"],
"J002964":["B274","E545"],
"J003382":["U210","H296"],
"J003546":["U210","H296"],
"J003789":["D845","U210"],
"J003793":["U210","H296"],
"J003941":["U210","H296"],
"J004128":["U210","H296"],
"J004150":["C247","X877"],
"J004283":["K346","U210"],
"J004317":["N110","J244"],
"J004470":["C247","X877"],
"J004686":["B274","E545"],
"J004791":["N110","J244"],
"J004921":["U210","H296"],
"J004998":["U210","H296"],
"J005070":["U210","H296"],
"J005223":["U210","E175"],
"J005259":["C247","X877"],
"J005280":["C247","X877"],
"J005299":["C247","X877"],
"J005482":["B274","E545"],
"J005663":["U210","H296"],
"J005724":["U210","H296"],
"J005834":["N110","J244"],
"J005872":["C247","X877"],
"J005900":["B274","E545"],
"J005923":["D845","U210"],
"J005926":["N110","J244"],
"J005969":["C247","X877"],
"J010000":["B274","E545"],
"J010247":["C247","X877"],
"J010366":["K346","V911"],
"J010556":["C247","X877"],
"J010569":["N110","J244"],
"J010811":["U210","H296"],
"J010951":["K346","V911"],
"J011195":["C247","X877"],
"J011321":["B274","E545"],
"J011339":["D845","U210"],
"J011355":["C247","X877"],
"J011376":["C247","X877"],
"J011563":["D845","U210"],
"J011778":["C247","X877"],
"J011790":["U210","H296"],
"J011824":["C247","X877"],
"J012157":["N110","J244"],
"J012402":["N110","J244"],
"J012475":["K346","V911"],
"J012578":["U210","H296"],
"J012635":["B274","E545"],
"J012686":["K346","V911"],
"J012735":["B274","E545"],
"J012773":["U210","H296"],
"J012794":["D845","U210"],
"J013070":["B274","E545"],
"J013123":["B274","E545"],
"J013146":["U210","H296"],
"J014348":["D845","U210"],
"J015092":["N110","J244"],
"J015227":["K346","C248", "W237"]}

File diff suppressed because one or more lines are too long

View File

@@ -21,7 +21,7 @@ requirejs.config({
mappage: './app/mappage', // initial start "map page" view
setup: './app/setup', // initial start "setup page" view
jquery: 'lib/jquery-1.11.3.min', // v1.11.3 jQuery
jquery: 'lib/jquery-3.0.0.min', // v3.0.0 jQuery
bootstrap: 'lib/bootstrap.min', // v3.3.0 Bootstrap js code - http://getbootstrap.com/javascript
text: 'lib/requirejs/text', // v2.0.12 A RequireJS/AMD loader plugin for loading text resources.
mustache: 'lib/mustache.min', // v1.0.0 Javascript template engine - http://mustache.github.io
@@ -32,11 +32,7 @@ requirejs.config({
jsPlumb: 'lib/dom.jsPlumb-1.7.6', // v1.7.6 jsPlumb (Vanilla)- main map draw plugin https://jsplumbtoolkit.com
farahey: 'lib/farahey-0.5', // v0.5 jsPlumb "magnetizing" extension - https://github.com/jsplumb/farahey
customScrollbar: 'lib/jquery.mCustomScrollbar.min', // v3.1.3 Custom scroll bars - http://manos.malihu.gr
datatables: 'lib/datatables/jquery.dataTables.min', // v1.10.7 DataTables - https://datatables.net
//datatablesBootstrap: 'lib/datatables/dataTables.bootstrap', // DataTables - not used (bootstrap style)
datatablesResponsive: 'lib/datatables/extensions/responsive/dataTables.responsive', // v1.0.6 TableTools (PlugIn) - https://datatables.net/extensions/responsive
datatablesTableTools: 'lib/datatables/extensions/tabletools/js/dataTables.tableTools', // v2.2.3 TableTools (PlugIn) - https://datatables.net/extensions/tabletools
mousewheel: 'lib/jquery.mousewheel.min', // v3.1.13 Mousewheel - https://github.com/jquery/jquery-mousewheel
xEditable: 'lib/bootstrap-editable.min', // v1.5.1 X-editable - in placed editing
morris: 'lib/morris.min', // v0.5.1 Morris.js - graphs and charts
raphael: 'lib/raphael-min', // v2.1.2 Raphaël - required for morris (dependency)
@@ -48,9 +44,9 @@ requirejs.config({
select2: 'lib/select2.min', // v4.0.3 Drop Down customization - https://select2.github.io
validator: 'lib/validator.min', // v0.10.1 Validator for Bootstrap 3 - https://github.com/1000hz/bootstrap-validator
lazylinepainter: 'lib/jquery.lazylinepainter-1.5.1.min', // v1.5.1 SVG line animation plugin - http://lazylinepainter.info
blueImpGallery: 'lib/blueimp-gallery', // v2.15.2 Image Gallery - https://github.com/blueimp/Gallery
blueImpGallery: 'lib/blueimp-gallery', // v2.21.3 Image Gallery - https://github.com/blueimp/Gallery
blueImpGalleryHelper: 'lib/blueimp-helper', // helper function for Blue Imp Gallery
blueImpGalleryBootstrap: 'lib/bootstrap-image-gallery', // v3.1.1 Bootstrap extension for Blue Imp Gallery - https://blueimp.github.io/Bootstrap-Image-Gallery
blueImpGalleryBootstrap: 'lib/bootstrap-image-gallery', // v3.4.2 Bootstrap extension for Blue Imp Gallery - https://blueimp.github.io/Bootstrap-Image-Gallery
bootstrapConfirmation: 'lib/bootstrap-confirmation', // v1.0.1 Bootstrap extension for inline confirm dialog - https://github.com/tavicu/bs-confirmation
bootstrapToggle: 'lib/bootstrap2-toggle.min', // v2.2.0 Bootstrap Toggle (Checkbox) - http://www.bootstraptoggle.com
lazyload: 'lib/jquery.lazyload.min', // v1.9.5 LazyLoader images - http://www.appelsiini.net/projects/lazyload
@@ -59,6 +55,13 @@ requirejs.config({
easePack: 'lib/EasePack.min',
tweenLite: 'lib/TweenLite.min',
// datatables // v1.10.12 DataTables - https://datatables.net
'datatables.net': 'lib/datatables/DataTables-1.10.12/js/jquery.dataTables.min',
'datatables.net-buttons': 'lib/datatables/Buttons-1.2.1/js/dataTables.buttons.min',
'datatables.net-buttons-html': 'lib/datatables/Buttons-1.2.1/js/buttons.html5.min',
'datatables.net-responsive': 'lib/datatables/Responsive-2.1.0/js/dataTables.responsive.min',
'datatables.net-select': 'lib/datatables/Select-1.2.0/js/dataTables.select.min',
// notification plugin
pnotify: 'lib/pnotify/pnotify.core', // v2.0.1 PNotify - notification core file
'pnotify.buttons': 'lib/pnotify/pnotify.buttons', // PNotify - buttons notification extension
@@ -68,7 +71,6 @@ requirejs.config({
'pnotify.history': 'lib/pnotify/pnotify.history', // PNotify - history push notification history extension
'pnotify.callbacks': 'lib/pnotify/pnotify.callbacks', // PNotify - callbacks push notification extension
'pnotify.reference': 'lib/pnotify/pnotify.reference' // PNotify - reference push notification extension
},
shim: {
bootstrap: {
@@ -87,19 +89,22 @@ requirejs.config({
deps: ['jquery']
},
customScrollbar: {
deps: ['jquery', 'mousewheel']
},
'datatables.net': {
deps: ['jquery']
},
datatables: {
deps: ['jquery']
'datatables.net-buttons': {
deps: ['datatables.net']
},
datatablesBootstrap: {
deps: ['datatables']
'datatables.net-buttons-html': {
deps: ['datatables.net-buttons']
},
datatablesResponsive: {
deps: ['datatables']
'datatables.net-responsive': {
deps: ['datatables.net']
},
datatablesTableTools: {
deps: ['datatables']
'datatables.net-select': {
deps: ['datatables.net']
},
xEditable: {
deps: ['bootstrap']

View File

@@ -1,60 +0,0 @@
/**
* Global CCPEvE function wrapper
*/
define(['jquery'], function($) {
'use strict';
/**
* checks whether the program URL is IGB trusted or not
* @returns {boolean}
*/
var isTrusted = function(){
var isPageTrusted = false;
if(isInGameBrowser()){
var trustedAttribute = $('body').attr('data-trusted');
if(trustedAttribute === '1'){
isPageTrusted = true;
}
}else{
// out of game browser is always trusted
isPageTrusted = true;
}
return isPageTrusted;
};
/**
* show IGB trust message
*/
var requestTrust = function(){
if(
isInGameBrowser() &&
!isTrusted()
){
CCPEVE.requestTrust( location.protocol + '//' + location.host );
}
};
/**
* in-game or out-of-game browser
* @returns {boolean}
*/
var isInGameBrowser = function(){
var inGame = false;
if(typeof CCPEVE === 'object'){
inGame = true;
}
return inGame;
};
return {
isInGameBrowser: isInGameBrowser,
isTrusted: isTrusted,
requestTrust: requestTrust
};
});

View File

@@ -138,7 +138,7 @@ define(['jquery'], function($) {
},
cataclysmic: {
class: 'pf-system-effect-cataclysmic',
name: 'cytaclysmic'
name: 'cataclysmic'
},
blackHole: {
class: 'pf-system-effect-blackhole',

View File

@@ -20,7 +20,8 @@ define([
var config = {
dialogDynamicAreaClass: 'pf-dynamic-area', // class for dynamic areas
logGraphClass: 'pf-log-graph' // class for all log Morris graphs
logGraphClass: 'pf-log-graph', // class for all log Morris graphs
tableToolsClass: 'pf-table-tools' // class for table tools
};
/**
@@ -68,15 +69,20 @@ define([
class: config.dialogDynamicAreaClass
});
var logTableActionBar = $('<div>', {
class: config.tableToolsClass
});
logTableArea.append(logTableActionBar);
var logTable = $('<table>', {
class: ['compact', 'stripe', 'order-column', 'row-border'].join(' ')
});
logTableArea.append(logTable);
content.append(logTableArea);
// init log table
logDataTable = logTable.DataTable( {
logDataTable = logTable.DataTable({
paging: true,
ordering: true,
order: [ 1, 'desc' ],
@@ -248,24 +254,23 @@ define([
}
// ------------------------------------------------------------------------------
// add TableTool Buttons
var tt = new $.fn.DataTable.TableTools( logDataTable, {
sSwfPath: require.toUrl('') + 'lib/datatables/extensions/tabletools/swf/copy_csv_xls.swf',
aButtons: [ 'copy', 'csv', 'print' ]
});
// add dataTable buttons (extension)
$(tt.fnContainer()).insertBefore('.bootbox-body div.dataTables_wrapper');
var buttons = new $.fn.dataTable.Buttons( logDataTable, {
buttons: [
{
extend: 'copy',
className: 'btn btn-sm btn-default',
text: '<i class="fa fa-fw fa-clipboard"></i> copy'
},{
extend: 'csv',
className: 'btn btn-sm btn-default',
text: '<i class="fa fa-fw fa-download"></i> csv'
}
]
} );
// add button icons
$('.DTTT_button_csv').prepend( $('<i>', {
class: ['fa', 'fa-fw', 'fa-download'].join(' ')
}));
$('.DTTT_button_copy').prepend( $('<i>', {
class: ['fa', 'fa-fw', 'fa-clipboard'].join(' ')
}));
$('.DTTT_button_print').prepend( $('<i>', {
class: ['fa', 'fa-fw', 'fa-print'].join(' ')
}));
logDataTable.buttons().container().appendTo( $(this).find('.' + config.tableToolsClass));
});

View File

@@ -7,7 +7,6 @@ define([
'app/init',
'app/util',
'app/render',
'app/ccp',
'blueImpGallery',
'bootbox',
'lazyload',
@@ -19,7 +18,7 @@ define([
'dialog/manual',
'dialog/releases',
'dialog/credit'
], function($, Init, Util, Render, CCP, Gallery, bootbox) {
], function($, Init, Util, Render, Gallery, bootbox) {
'use strict';
@@ -151,7 +150,7 @@ define([
*/
var initCarousel = function(){
// check if carousel exists (e.g. not in IGB browser
// check if carousel exists
if($('#' + config.galleryCarouselId).length === 0){
return;
}
@@ -193,7 +192,7 @@ define([
// initialize carousel ------------------------------------------------
var carousel = new Gallery([
{
imgTitle: 'IGB',
imgTitle: 'Browser',
href: 'ui/map',
type: 'text/html'
},
@@ -280,38 +279,51 @@ define([
};
/**
* init image gallery
* get all thumbnail elements
* @returns {*|jQuery|HTMLElement}
*/
var initGallery = function(){
var getThumbnailElements = function(){
return $('a[data-gallery="#' + config.galleryId + '"]');
};
requirejs(['blueImpGalleryBootstrap'], function() {
// thumb links
var thumbLinks = $('a[data-gallery="#pf-gallery"]');
/**
* init gallery for thumbnail elements
* @param newElements
*/
var initGallery = function(newElements){
if( newElements.length > 0){
// We have to add ALL thumbnail elements to the gallery!
// -> even those wthat are invisible (not lazyLoaded) now!
// -> This is required for "swipe" through all images
var allThumbLinks = getThumbnailElements();
var borderless = false;
requirejs(['blueImpGalleryBootstrap'], function() {
$(newElements).each(function() {
var borderless = false;
var galleryElement = $('#' + config.galleryId);
galleryElement.data('useBootstrapModal', !borderless);
galleryElement.toggleClass('blueimp-gallery-controls', borderless);
var galleryElement = $('#' + config.galleryId);
galleryElement.data('useBootstrapModal', !borderless);
galleryElement.toggleClass('blueimp-gallery-controls', borderless);
// init gallery on click
thumbLinks.on('click', function(e){
e.preventDefault();
$(this).on('click', function(e){
e.preventDefault();
e = e || window.event;
var target = e.target || e.srcElement;
var link = target.src ? target.parentNode : target;
e = e || window.event;
var target = e.target || e.srcElement;
var link = target.src ? target.parentNode : target;
var options = {
index: link,
event: e,
container: '#' + config.galleryId,
titleProperty: 'description'
};
var options = {
index: link,
event: e,
container: '#' + config.galleryId,
titleProperty: 'description'
};
new Gallery(thumbLinks, options);
new Gallery(allThumbLinks, options);
});
});
});
});
}
};
var initYoutube = function(){
@@ -364,7 +376,12 @@ define([
stagger: 60,
delay: 500,
complete: function(element){
// show "fade" modules (e.g. ribbons)
$(element).find('.fade').addClass('in');
// init gallery for "now" visible elements
var newGalleryElements = $(element).filter('[data-gallery="#' + config.galleryId + '"]');
initGallery(newGalleryElements);
},
visibility: 'visible'
});
@@ -646,6 +663,12 @@ define([
}
}
// "Lock" default link action (=> open in new tab)!
// -> until "gallery" is initialized (=> wait animation complete!)
getThumbnailElements().on('click', function(e){
e.preventDefault();
});
// init "lazy loading" for images
$('.' + config.galleryThumbImageClass).lazyload({
threshold : 300
@@ -659,31 +682,26 @@ define([
initCharacterSelect();
// init scrollspy
initScrollspy();
// init page observer
setPageObserver();
// init carousel
initCarousel();
// init gallery
initGallery();
// init scrollspy
// -> after "Carousel"! required for correct "viewport" calculation (Gallery)!
initScrollspy();
// init youtube videos
initYoutube();
// show logo -> hide animation in IGB
if( !CCP.isInGameBrowser() ){
$('#' + config.logoContainerId).drawLogo(function(){
// draw header logo
$('#' + config.logoContainerId).drawLogo(function(){
// init header animation
$('#' + config.headerContainerId).initHeader(function(){
// init header animation
$('#' + config.headerContainerId).initHeader(function(){
});
}, false);
}
});
}, false);
});

View File

@@ -3,19 +3,18 @@
*/
define([
'jquery',
'app/ccp'
], function($, CCP) {
'jquery'
], function($) {
'use strict';
$.fn.contextMenu = function (settings) {
// animation
var animationInType = CCP.isInGameBrowser() ? 'fadeIn' : 'transition.flipXIn';
var animationInDuration = CCP.isInGameBrowser() ? 0 : 150;
var animationOutType = CCP.isInGameBrowser() ? 'fadeOut' : 'transition.flipXOut';
var animationOutDuration = CCP.isInGameBrowser() ? 0 : 150;
var animationInType = 'transition.flipXIn';
var animationInDuration = 150;
var animationOutType = 'transition.flipXOut';
var animationOutDuration = 150;
return this.each(function () {

View File

@@ -8,14 +8,13 @@ define([
'app/util',
'app/render',
'bootbox',
'app/ccp',
'app/map/magnetizing',
'app/map/scrollbar',
'dragToSelect',
'select2',
'app/map/contextmenu',
'app/map/overlay'
], function($, Init, Util, Render, bootbox, CCP, MagnetizerWrapper) {
], function($, Init, Util, Render, bootbox, MagnetizerWrapper) {
'use strict';
@@ -865,12 +864,11 @@ define([
var overlayElements = mapElement.find('.jsplumb-overlay, .tooltip');
// if map empty (no systems), execute callback and return
// no visual effects in IGB (glitches)
// no visual effects on larger maps
if(
systemElements.length === 0 ||
systemElements.length > 20 ||
endpointElements.length === 0 ||
CCP.isInGameBrowser() === true
endpointElements.length === 0
){
callback();
return;
@@ -1688,10 +1686,6 @@ define([
{subIcon: 'fa-step-backward', subAction: 'add_first_waypoint', subText: 'add new [start]'},
{subIcon: 'fa-step-forward', subAction: 'add_last_waypoint', subText: 'add new [end]'}
]},
{divider: true, action: 'ingame'},
{icon: 'fa-reply fa-rotate-180', action: 'ingame', text: 'ingame', subitems: [
{subIcon: 'fa-info', subAction: 'ingame_show_info', subText: 'show info'}
]},
{divider: true, action: 'delete_system'},
{icon: 'fa-eraser', action: 'delete_system', text: 'delete system'}
]
@@ -2006,11 +2000,6 @@ define([
}
});
break;
case 'ingame_show_info':
systemData = system.getSystemData();
CCPEVE.showInfo(5, systemData.systemId );
break;
case 'set_destination':
case 'add_first_waypoint':
case 'add_last_waypoint':
@@ -2557,11 +2546,6 @@ define([
if(component.data('locked') === true){
hiddenOptions.push('delete_system');
}
// disable ingame options if not IGB browser
if(! CCP.isInGameBrowser() ){
hiddenOptions.push('ingame');
}
}
return hiddenOptions;
@@ -3439,6 +3423,11 @@ define([
if(newMap){
// init custom scrollbars and add overlay
parentElement.initMapScrollbar();
// show static overlay actions
var mapElement = mapConfig.map.getContainer();
var mapOverlay = $(mapElement).getMapOverlay('info');
mapOverlay.updateOverlayIcon('systemRegion', 'show');
}
// callback function after tab switch

View File

@@ -14,34 +14,85 @@ define([
logTimerCount: 3, // map log timer in seconds
// map
mapClass: 'pf-map', // class for all maps
mapWrapperClass: 'pf-map-wrapper', // wrapper div (scrollable)
// map overlays
mapOverlayClass: 'pf-map-overlay', // class for all map overlays
mapOverlayTimerClass: 'pf-map-overlay-timer', // class for map overlay timer e.g. map timer
mapOverlayInfoClass: 'pf-map-overlay-info' // class for map overlay info e.g. map info
mapOverlayInfoClass: 'pf-map-overlay-info', // class for map overlay info e.g. map info
// system
systemHeadClass: 'pf-system-head' // class for system head
};
// overlay options (all available map options shown in overlay)
/**
* Overlay options (all available map options shown in overlay)
* "active": (active || hover) indicated whether an icon/option
* is marked as "active".
* "active": Makes icon active when visible
* "hover": Make icon active on hover
*/
var options = {
filter: {
title: 'active filter',
trigger: 'active',
class: 'pf-map-overlay-filter',
iconClass: ['fa', 'fa-fw', 'fa-filter']
},
mapSnapToGrid: {
title: 'active grid',
trigger: 'active',
class: 'pf-map-overlay-grid',
iconClass: ['glyphicon', 'glyphicon-th']
},
mapMagnetizer: {
title: 'active magnetizer',
trigger: 'active',
class: 'pf-map-overlay-magnetizer',
iconClass: ['fa', 'fa-fw', 'fa-magnet']
},
systemRegion: {
title: 'show regions',
trigger: 'hover',
class: 'pf-map-overlay-region',
iconClass: ['fa', 'fa-fw', 'fa-tags'],
hoverIntent: {
over: function(e){
var mapElement = getMapFromOverlay(this);
mapElement.find('.' + config.systemHeadClass).each(function(){
var system = $(this);
// init tooltip if not already exists
if ( !system.data('bs.tooltip') ){
system.tooltip({
container: mapElement,
placement: 'right',
title: function(){
return $(this).parent().data('region');
},
trigger: 'manual'
});
}
system.tooltip('show');
});
},
out: function(e){
var mapElement = getMapFromOverlay(this);
mapElement.find('.' + config.systemHeadClass).tooltip('hide');
}
}
}
};
/**
* get mapElement from overlay or any child of that
* @param mapOverlay
* @returns {JQuery}
*/
var getMapFromOverlay = function(mapOverlay){
return $(mapOverlay).parents('.' + config.mapWrapperClass).find('.' + config.mapClass);
};
/**
* get map overlay element by type e.g. timer/counter, info - overlay
* @param overlayType
@@ -203,9 +254,24 @@ define([
if(iconElement){
if(viewType === 'show'){
showOverlay = true;
iconElement.velocity('fadeIn');
// check "trigger" and mark as "active"
if(options[option].trigger === 'active'){
iconElement.addClass('active');
}
// display animation for icon
iconElement.velocity({
opacity: [0.8, 0],
scale: [1, 0],
width: ['26px', 0],
marginLeft: ['3px', 0]
},{
duration: 240,
easing: 'easeInOutQuad'
});
}else if(viewType === 'hide'){
iconElement.hide();
iconElement.removeClass('active').velocity('reverse');
// check if there is any visible icon remaining
var visibleIcons = mapOverlayInfo.find('i:visible');
@@ -253,14 +319,20 @@ define([
// add all overlay elements
for (var prop in options) {
if(options.hasOwnProperty(prop)){
mapOverlayInfo.append(
$('<i>', {
class: options[prop].iconClass.concat( ['pull-right', options[prop].class] ).join(' ')
}).attr('title', options[prop].title).tooltip({
placement: 'left',
container: 'body'
})
);
var icon = $('<i>', {
class: options[prop].iconClass.concat( ['pull-right', options[prop].class] ).join(' ')
}).attr('title', options[prop].title).tooltip({
placement: 'left',
container: 'body',
delay: 150
});
// add "hover" action for some icons
if(options[prop].trigger === 'hover'){
icon.hoverIntent(options[prop].hoverIntent);
}
mapOverlayInfo.append(icon);
}
}
parentElement.append(mapOverlayInfo);

View File

@@ -8,11 +8,10 @@ define([
'app/util',
'app/render',
'app/logging',
'app/ccp',
'app/page',
'app/ui/form_element',
'app/module_map'
], function($, Init, Util, Render, Logging, CCP, Page) {
], function($, Init, Util, Render, Logging, Page) {
'use strict';
@@ -34,11 +33,6 @@ define([
// init logging
Logging.init();
if( !CCP.isTrusted() ){
// show trust message
$(document).trigger('pf:showTrustDialog');
return;
}
var mapModule = $('#' + Util.config.mapModuleId);
// map init load static data =======================================================

View File

@@ -9,8 +9,11 @@ define([
'app/ui/system_signature',
'app/ui/system_route',
'app/ui/system_killboard',
'datatablesTableTools',
'datatablesResponsive'
'datatables.net',
'datatables.net-buttons',
'datatables.net-buttons-html',
'datatables.net-responsive',
'datatables.net-select'
], function($, Init, Util, Map) {
'use strict';

View File

@@ -6,14 +6,12 @@ define([
'jquery',
'app/init',
'app/util',
'app/ccp',
'app/logging',
'mustache',
'text!img/logo.svg!strip',
'text!templates/modules/header.html',
'text!templates/modules/footer.html',
'dialog/notification',
'dialog/trust',
'dialog/map_info',
'dialog/account_settings',
'dialog/manual',
@@ -24,7 +22,7 @@ define([
'dialog/credit',
'slidebars',
'app/module_map'
], function($, Init, Util, CCP, Logging, Mustache, TplLogo, TplHead, TplFooter) {
], function($, Init, Util, Logging, Mustache, TplLogo, TplHead, TplFooter) {
'use strict';
@@ -182,22 +180,15 @@ define([
css: {width: '1.23em'}
})
).on('click', function(){
// full screen API is only acceptable by a "user gesture"
// -> js events will not work. therefore all the code here
var fullScreenElement = $('body');
requirejs(['jquery', 'fullScreen'], function($) {
if(CCP.isInGameBrowser() === false){
var fullScreenElement = $('body');
// fullscreen is not supported by IGB
requirejs(['jquery', 'fullScreen'], function($) {
if($.fullscreen.isFullScreen()){
$.fullscreen.exit();
}else{
fullScreenElement.fullscreen({overflow: 'overflow-y', toggleClass: config.fullScreenClass});
}
});
}
if($.fullscreen.isFullScreen()){
$.fullscreen.exit();
}else{
fullScreenElement.fullscreen({overflow: 'overflow-y', toggleClass: config.fullScreenClass});
}
});
})
).append(
$('<a>', {
@@ -235,14 +226,11 @@ define([
)
);
// init full screen -> IGB does not support full screen
if(CCP.isInGameBrowser() === false){
requirejs(['fullScreen'], function() {
if($.fullscreen.isNativelySupported() === true){
$('#' + config.menuButtonFullScreenId).removeClass('hide');
}
});
}
requirejs(['fullScreen'], function() {
if($.fullscreen.isNativelySupported() === true){
$('#' + config.menuButtonFullScreenId).removeClass('hide');
}
});
};
/**
@@ -594,7 +582,6 @@ define([
// logout
Util.logout({
ajaxData: {
reroute: 1,
clearCookies: clearCookies
}
});
@@ -623,13 +610,6 @@ define([
updateHeaderCurrentLocation(currentLocationData);
});
// show the "trust" IGB dialog
$(document).on('pf:showTrustDialog', function(e){
// show trust dialog
$.fn.showTrustDialog();
return false;
});
// shutdown the program -> show dialog
$(document).on('pf:shutdown', function(e, data){
// show shutdown dialog
@@ -648,7 +628,7 @@ define([
icon: 'fa-bolt',
class: 'txt-color-danger',
title: 'Shutdown',
headline: 'Emergency shutdown',
headline: 'Logged out',
text: [
data.reason
],
@@ -670,7 +650,7 @@ define([
$(document).setProgramStatus('offline');
Util.showNotify({title: 'Emergency shutdown', text: data.reason, type: 'error'}, false);
Util.showNotify({title: 'Logged out', text: data.reason, type: 'error'}, false);
// remove map -------------------------------------------------------
Util.getMapModule().velocity('fadeOut', {

View File

@@ -17,19 +17,21 @@ define([
* set page observer
*/
var setPageObserver = function(){
var body = $('body');
// collapse ---------------------------------------
$('body').find('[data-toggle="collapse"]').css({cursor: 'pointer'}).on('click', function(){
body.find('[data-toggle="collapse"]').css({cursor: 'pointer'}).on('click', function(){
$(this).find('.pf-animate-rotate').toggleClass('right');
});
// buttons ----------------------------------------
$('body').find('.btn').on('click', function(e){
// exclude "download" && "navigation" buttons
body.find('.btn').not('.navbar-fixed-bottom .btn').not('[href^="?export"]').on('click', function(e){
$('.' + config.splashOverlayClass).showSplashOverlay();
});
// tooltips ---------------------------------------
$('body').initTooltips();
body.initTooltips();
// change url (remove logout parameter)
if (history.pushState) {

View File

@@ -6,9 +6,8 @@ define([
'jquery',
'app/init',
'app/util',
'app/ccp',
'bootbox'
], function($, Init, Util, CCP, bootbox) {
], function($, Init, Util, bootbox) {
'use strict';
@@ -743,44 +742,6 @@ define([
_: 'name',
sort: 'name'
}
},{
targets: 8,
title: '',
orderable: false,
searchable: false,
width: '26px',
className: ['text-center', config.tableActionCellClass].join(' '),
data: 'id',
render: {
_: function(data, type, row, meta){
return '<i class="fa fa-fw fa-comment"></i>';
}
},
visible: (CCP.isInGameBrowser() === true),
createdCell: function(cell, cellData, rowData, rowIndex, colIndex) {
$(cell).on('click', function(e) {
CCPEVE.startConversation(cellData);
});
}
},{
targets: 9,
title: '',
orderable: false,
searchable: false,
width: '26px',
className: ['text-center', config.tableImageCellClass, config.tableImageSmallCellClass, config.tableActionCellClass].join(' '),
data: 'id',
render: {
_: function(data, type, row, meta){
return '<img src="' + Init.url.ccpImageServer + 'Type/20070_32.png" />';
}
},
visible: (CCP.isInGameBrowser() === true),
createdCell: function(cell, cellData, rowData, rowIndex, colIndex) {
$(cell).on('click', function(e) {
CCPEVE.inviteToFleet(cellData);
});
}
}
]
});

View File

@@ -7,9 +7,8 @@ define([
'app/init',
'app/util',
'app/render',
'bootbox',
'app/ccp'
], function($, Init, Util, Render, bootbox, CCP) {
'bootbox'
], function($, Init, Util, Render, bootbox) {
'use strict';
var config = {
@@ -122,7 +121,6 @@ define([
id: config.newMapDialogId,
mapData: mapData,
type: mapTypes,
isInGameBrowser: CCP.isInGameBrowser(),
// message container
formErrorContainerClass: Util.config.formErrorContainerClass,

View File

@@ -6,10 +6,9 @@ define([
'jquery',
'app/init',
'app/util',
'app/ccp',
'app/render',
'bootbox'
], function($, Init, Util, CCP, Render, bootbox) {
], function($, Init, Util, Render, bootbox) {
'use strict';
@@ -22,28 +21,21 @@ define([
/**
* show/animate dialog page content
* @param pageElement
* @param dialog
*/
var showPageContent = function(dialog){
var headlineElement = dialog.find('h1');
// don´t show animation in IGB
if( !CCP.isInGameBrowser() ){
headlineElement.delay(300).velocity('transition.shrinkIn', {
duration: 500
}).delay(800);
headlineElement.velocity({
scale: 1.05
}, {
duration: 600,
loop: 5
});
}else{
headlineElement.css({opacity: 1});
}
headlineElement.delay(300).velocity('transition.shrinkIn', {
duration: 500
}).delay(800);
headlineElement.velocity({
scale: 1.05
}, {
duration: 600,
loop: 5
});
};
/**

View File

@@ -1,138 +0,0 @@
/**
* set IGB trust dialog
*/
define([
'jquery',
'app/init',
'app/util',
'app/render',
'bootbox',
'app/ccp'
], function($, Init, Util, Render, bootbox, CCP) {
'use strict';
var config = {
// trust dialog
trustDialogId: 'pf-trust-dialog', // id for "trust" dialog
trustDialogFirstPageId: 'pf-trust-first-page', // id for first page
trustDialogSecondPageId: 'pf-trust-second-page' // id for second page
};
/**
* show/animate dialog page content
* @param pageElement
*/
var showPageContent = function(pageElement){
pageElement.find('h1').delay(300).velocity('transition.shrinkIn', {
duration: 500
}).delay(800);
pageElement.find('h1').velocity({
scale: 1.05
}, {
duration: 600,
loop: 5
});
};
/**
* show "trust" dialog
*/
$.fn.showTrustDialog = function(){
requirejs(['text!templates/dialog/trust.html', 'mustache'], function(template, Mustache) {
var data = {
id: config.trustDialogId,
firstPageId: config.trustDialogFirstPageId,
secondPageId: config.trustDialogSecondPageId
};
var content = Mustache.render(template, data);
// show dialog
var trustDialog = bootbox.dialog({
title: 'Trust Page',
message: content,
buttons: {
logout: {
label: '<i class="fa fa-fw fa-power-off"></i> logout',
className: ['btn-default', 'pull-left'].join(' '),
callback: function() {
$(document).trigger('pf:menuLogout');
}
},
trust: {
label: '<i class="fa fa-fw fa-lock"></i> set "Trust"',
className: 'btn-primary',
callback: function(){
var dialog = $(this);
// request trust
CCP.requestTrust();
var firstPageElement = dialog.find('#' + config.trustDialogFirstPageId);
var secondPageElement = dialog.find('#' + config.trustDialogSecondPageId);
// toggle buttons
dialog.find('.btn-primary').hide();
dialog.find('.btn-success').removeClass('hide');
// toggle pages
firstPageElement.velocity('slideUp', {
duration: Init.animationSpeed.dialogEvents,
complete: function(){
secondPageElement.velocity('slideDown', {
duration: Init.animationSpeed.dialogEvents,
display: 'block'
});
}
});
// show reload button
showPageContent(secondPageElement);
return false;
}
},
reload: {
label: '<i class="fa fa-fw fa-repeat"></i> reload',
className: ['btn-success', 'hide'].join(' '),
callback: function(){
// reload page
location.reload();
return false;
}
}
}
});
trustDialog.on('shown.bs.modal', function(e) {
// remove close button
var dialog = $(this);
dialog.find('.bootbox-close-button').remove();
dialog.find('button').blur();
// show trust message
var firstPageElement = dialog.find('#' + config.trustDialogFirstPageId);
showPageContent(firstPageElement);
});
});
};
});

View File

@@ -150,7 +150,7 @@ define([
dataType: 'json'
}).done(function(systemGraphsData){
if( !$.isEmptyObject(systemGraphsData) ){
if( Object.keys(systemGraphsData).length > 0 ){
// create new (hidden) module container
var moduleElement = $('<div>', {
class: [config.moduleClass, config.systemGraphModuleClass].join(' '),

View File

@@ -384,7 +384,7 @@ define([
showKillmails(moduleElement, cache.systemKillsGraphData[cacheKey]);
killboardGraphElement.hideLoadingAnimation();
}).error(function(e){
}).fail(function(e){
labelOptions.type = 'label-danger';
label = getLabel( 'zKillboard is not responding', labelOptions );

View File

@@ -88,6 +88,13 @@ define([
var sigNameCache = {}; // cache signature names
var validSignatureNames = [ // allowed signature type/names
'Cosmic Anomaly',
'Cosmic Signature',
'Космическая аномалия', // == "Cosmic Anomaly"
'Источники сигналов' // == "Cosmic Signature"
];
/**
* collect all data of all editable fields in a signature table
* @returns {Array}
@@ -368,7 +375,7 @@ define([
// show notifications
if(options.showNotice !== false){
if(percent < 100){
Util.showNotify({title: 'Unknown signatures', text: notification, type: 'info'});
Util.showNotify({title: 'Unscanned signatures', text: notification, type: 'info'});
}else{
Util.showNotify({title: 'System is scanned', text: notification, type: 'success'});
}
@@ -494,62 +501,69 @@ define([
* @returns {Array}
*/
var parseSignatureString = function(systemData, clipboard){
var signatureData = [];
var signatureRows = clipboard.split(/\r\n|\r|\n/g);
if(clipboard.length){
var signatureRows = clipboard.split(/\r\n|\r|\n/g);
var signatureGroupOptions = Util.getSignatureGroupInfo('name');
var invalidSignatures = 0;
var signatureGroupOptions = Util.getSignatureGroupInfo('name');
for(var i = 0; i < signatureRows.length; i++){
var rowData = signatureRows[i].split(/\t/g);
for(var i = 0; i < signatureRows.length; i++){
var rowData = signatureRows[i].split(/\t/g);
if(rowData.length === 6){
if(rowData.length === 6){
// check if sig Type = anomaly or combat site
if(validSignatureNames.indexOf( rowData[1] ) !== -1){
// check if sig Type = anomaly or combat site
if(
rowData[1] === 'Cosmic Anomaly' ||
rowData[1] === 'Cosmic Signature'
){
var sigGroup = $.trim(rowData[2]).toLowerCase();
var sigDescription = $.trim(rowData[3]);
var sigGroupId = 0;
var typeId = 0;
var sigGroup = $.trim(rowData[2]).toLowerCase();
var sigDescription = $.trim(rowData[3]);
var sigGroupId = 0;
var typeId = 0;
// get groupId by groupName
for (var prop in signatureGroupOptions) {
if(signatureGroupOptions.hasOwnProperty(prop)){
if(signatureGroupOptions[prop] === sigGroup){
sigGroupId = parseInt( prop );
break;
// get groupId by groupName
for (var prop in signatureGroupOptions) {
if(signatureGroupOptions.hasOwnProperty(prop)){
if(signatureGroupOptions[prop] === sigGroup){
sigGroupId = parseInt( prop );
break;
}
}
}
}
// wormhole type cant be extracted from signature string -> skip function call
if(sigGroupId !== 5){
// try to get "typeId" by description string
typeId = Util.getSignatureTypeIdByName( systemData, sigGroupId, sigDescription );
// wormhole type cant be extracted from signature string -> skip function call
if(sigGroupId !== 5){
// try to get "typeId" by description string
typeId = Util.getSignatureTypeIdByName( systemData, sigGroupId, sigDescription );
// set signature name as "description" if signature matching failed
sigDescription = (typeId === 0) ? sigDescription : '';
// set signature name as "description" if signature matching failed
sigDescription = (typeId === 0) ? sigDescription : '';
}else{
sigDescription = '';
}
// map array values to signature Object
var signatureObj = {
systemId: systemData.id,
name: $.trim( rowData[0].substr(0, 3) ).toLowerCase(),
groupId: sigGroupId,
typeId: typeId,
description: sigDescription
};
signatureData.push(signatureObj);
}else{
sigDescription = '';
invalidSignatures++;
}
// map array values to signature Object
var signatureObj = {
systemId: systemData.id,
name: $.trim( rowData[0].substr(0, 3) ).toLowerCase(),
groupId: sigGroupId,
typeId: typeId,
description: sigDescription
};
signatureData.push(signatureObj);
}else{
invalidSignatures++;
}
}
if(invalidSignatures > 0){
var notification = invalidSignatures + ' / ' + signatureRows.length + ' signatures invalid';
Util.showNotify({title: 'Invalid signature(s)', text: notification, type: 'warning'});
}
}
return signatureData;
@@ -1669,9 +1683,9 @@ define([
// submit all fields within a table row
var formFields = rowElement.find('.editable');
// the "toggle" makes sure to take care about open editable fields (e.g. description)
// the "hide" makes sure to take care about open editable fields (e.g. description)
// otherwise, changes would not be submitted in this field (not necessary)
formFields.editable('toggle');
formFields.editable('hide');
// submit all xEditable fields
formFields.editable('submit', {
@@ -1975,9 +1989,6 @@ define([
moduleElement = getModule(parentElement, systemData);
showModule(moduleElement);
}
return;
};
});

View File

@@ -8,7 +8,6 @@ define([
'config/signature_type',
'bootbox',
'localForage',
'app/ccp',
'velocity',
'velocityUI',
'customScrollbar',
@@ -18,7 +17,7 @@ define([
'hoverIntent',
'bootstrapConfirmation',
'bootstrapToggle'
], function($, Init, SystemEffect, SignatureType, bootbox, localforage, CCP) {
], function($, Init, SystemEffect, SignatureType, bootbox, localforage) {
'use strict';
@@ -92,7 +91,7 @@ define([
class: [config.ajaxOverlayWrapperClass].join(' ')
}).append(
$('<i>', {
class: ['fa', iconSize, 'fa-circle-o-notch', 'fa-spin'].join(' ')
class: ['fa', 'fa-fw', iconSize, 'fa-refresh', 'fa-spin'].join(' ')
})
)
);
@@ -103,7 +102,7 @@ define([
$(overlay).velocity({
opacity: 0.6
},{
duration: 200
duration: 180
});
};
@@ -604,7 +603,7 @@ define([
var easeEffect = $(this).attr('data-easein');
var popover = $(this).data('bs.popover').tip();
var velocityOptions = {
duration: CCP.isInGameBrowser() ? 0 : Init.animationSpeed.dialogEvents
duration: Init.animationSpeed.dialogEvents
};
switch(easeEffect){
@@ -740,6 +739,12 @@ define([
$.fn.singleDoubleClick = function(singleClickCallback, doubleClickCallback, timeout) {
return this.each(function(){
var clicks = 0, self = this;
// prevent default behaviour (e.g. open <a>-tag link)
$(this).on('click', function(e){
e.preventDefault();
});
$(this).on('mouseup', function(e){
clicks++;
if (clicks === 1) {

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
/*
* blueimp helper JS 1.2.0
* blueimp helper JS
* https://github.com/blueimp/Gallery
*
* Copyright 2013, Sebastian Tschan
@@ -11,182 +11,180 @@
/* global define, window, document */
(function () {
'use strict';
;(function () {
'use strict'
function extend(obj1, obj2) {
var prop;
function extend (obj1, obj2) {
var prop
for (prop in obj2) {
if (obj2.hasOwnProperty(prop)) {
obj1[prop] = obj2[prop];
obj1[prop] = obj2[prop]
}
}
return obj1;
return obj1
}
function Helper(query) {
function Helper (query) {
if (!this || this.find !== Helper.prototype.find) {
// Called as function instead of as constructor,
// so we simply return a new instance:
return new Helper(query);
return new Helper(query)
}
this.length = 0;
this.length = 0
if (query) {
if (typeof query === 'string') {
query = this.find(query);
query = this.find(query)
}
if (query.nodeType || query === query.window) {
// Single HTML element
this.length = 1;
this[0] = query;
this.length = 1
this[0] = query
} else {
// HTML element collection
var i = query.length;
this.length = i;
var i = query.length
this.length = i
while (i) {
i -= 1;
this[i] = query[i];
i -= 1
this[i] = query[i]
}
}
}
}
Helper.extend = extend;
Helper.extend = extend
Helper.contains = function (container, element) {
do {
element = element.parentNode;
element = element.parentNode
if (element === container) {
return true;
return true
}
} while (element);
return false;
};
} while (element)
return false
}
Helper.parseJSON = function (string) {
return window.JSON && JSON.parse(string);
};
return window.JSON && JSON.parse(string)
}
extend(Helper.prototype, {
find: function (query) {
var container = this[0] || document;
var container = this[0] || document
if (typeof query === 'string') {
if (container.querySelectorAll) {
query = container.querySelectorAll(query);
query = container.querySelectorAll(query)
} else if (query.charAt(0) === '#') {
query = container.getElementById(query.slice(1));
query = container.getElementById(query.slice(1))
} else {
query = container.getElementsByTagName(query);
query = container.getElementsByTagName(query)
}
}
return new Helper(query);
return new Helper(query)
},
hasClass: function (className) {
if (!this[0]) {
return false;
return false
}
return new RegExp('(^|\\s+)' + className +
'(\\s+|$)').test(this[0].className);
'(\\s+|$)').test(this[0].className)
},
addClass: function (className) {
var i = this.length,
element;
var i = this.length
var element
while (i) {
i -= 1;
element = this[i];
i -= 1
element = this[i]
if (!element.className) {
element.className = className;
return this;
element.className = className
return this
}
if (this.hasClass(className)) {
return this;
return this
}
element.className += ' ' + className;
element.className += ' ' + className
}
return this;
return this
},
removeClass: function (className) {
var regexp = new RegExp('(^|\\s+)' + className + '(\\s+|$)'),
i = this.length,
element;
var regexp = new RegExp('(^|\\s+)' + className + '(\\s+|$)')
var i = this.length
var element
while (i) {
i -= 1;
element = this[i];
element.className = element.className.replace(regexp, ' ');
i -= 1
element = this[i]
element.className = element.className.replace(regexp, ' ')
}
return this;
return this
},
on: function (eventName, handler) {
var eventNames = eventName.split(/\s+/),
i,
element;
var eventNames = eventName.split(/\s+/)
var i
var element
while (eventNames.length) {
eventName = eventNames.shift();
i = this.length;
eventName = eventNames.shift()
i = this.length
while (i) {
i -= 1;
element = this[i];
i -= 1
element = this[i]
if (element.addEventListener) {
element.addEventListener(eventName, handler, false);
element.addEventListener(eventName, handler, false)
} else if (element.attachEvent) {
element.attachEvent('on' + eventName, handler);
element.attachEvent('on' + eventName, handler)
}
}
}
return this;
return this
},
off: function (eventName, handler) {
var eventNames = eventName.split(/\s+/),
i,
element;
var eventNames = eventName.split(/\s+/)
var i
var element
while (eventNames.length) {
eventName = eventNames.shift();
i = this.length;
eventName = eventNames.shift()
i = this.length
while (i) {
i -= 1;
element = this[i];
i -= 1
element = this[i]
if (element.removeEventListener) {
element.removeEventListener(eventName, handler, false);
element.removeEventListener(eventName, handler, false)
} else if (element.detachEvent) {
element.detachEvent('on' + eventName, handler);
element.detachEvent('on' + eventName, handler)
}
}
}
return this;
return this
},
empty: function () {
var i = this.length,
element;
var i = this.length
var element
while (i) {
i -= 1;
element = this[i];
i -= 1
element = this[i]
while (element.hasChildNodes()) {
element.removeChild(element.lastChild);
element.removeChild(element.lastChild)
}
}
return this;
return this
},
first: function () {
return new Helper(this[0]);
return new Helper(this[0])
}
});
})
if (typeof define === 'function' && define.amd) {
define(function () {
return Helper;
});
return Helper
})
} else {
window.blueimp = window.blueimp || {};
window.blueimp.helper = Helper;
window.blueimp = window.blueimp || {}
window.blueimp.helper = Helper
}
}());
}())

View File

@@ -1,5 +1,5 @@
/*
* Bootstrap Image Gallery 3.0.1
* Bootstrap Image Gallery
* https://github.com/blueimp/Bootstrap-Image-Gallery
*
* Copyright 2013, Sebastian Tschan
@@ -11,79 +11,77 @@
/*global define, window */
(function (factory) {
'use strict';
;(function (factory) {
'use strict'
if (typeof define === 'function' && define.amd) {
define([
'jquery',
'blueImpGallery'
], factory);
], factory)
} else {
factory(
window.jQuery,
window.blueimp.Gallery
);
)
}
}(function ($, Gallery) {
'use strict';
'use strict'
$.extend(Gallery.prototype.options, {
useBootstrapModal: true
});
})
var close = Gallery.prototype.close,
imageFactory = Gallery.prototype.imageFactory,
videoFactory = Gallery.prototype.videoFactory,
textFactory = Gallery.prototype.textFactory;
var close = Gallery.prototype.close
var imageFactory = Gallery.prototype.imageFactory
var videoFactory = Gallery.prototype.videoFactory
var textFactory = Gallery.prototype.textFactory
$.extend(Gallery.prototype, {
modalFactory: function (obj, callback, factoryInterface, factory) {
if (!this.options.useBootstrapModal || factoryInterface) {
return factory.call(this, obj, callback, factoryInterface);
return factory.call(this, obj, callback, factoryInterface)
}
var that = this,
modalTemplate = $(this.container).children('.modal'),
modal = modalTemplate.clone().show()
.on('click', function (event) {
// Close modal if click is outside of modal-content:
if (event.target === modal[0] ||
event.target === modal.children()[0]) {
event.preventDefault();
event.stopPropagation();
that.close();
}
}),
element = factory.call(this, obj, function (event) {
callback({
type: event.type,
target: modal[0]
});
modal.addClass('in');
}, factoryInterface);
modal.find('.modal-title').text(element.title || String.fromCharCode(160));
modal.find('.modal-body').append(element);
return modal[0];
var that = this
var modalTemplate = $(this.container).children('.modal')
var modal = modalTemplate.clone().css('display', 'block').on('click', function (event) {
//var modal = modalTemplate.clone().show().on('click', function (event) {
// Close modal if click is outside of modal-content:
if (event.target === modal[0] ||
event.target === modal.children()[0]) {
event.preventDefault()
event.stopPropagation()
that.close()
}
})
var element = factory.call(this, obj, function (event) {
callback({
type: event.type,
target: modal[0]
})
modal.addClass('in')
}, factoryInterface)
modal.find('.modal-title').text(element.title || String.fromCharCode(160))
modal.find('.modal-body').append(element)
return modal[0]
},
imageFactory: function (obj, callback, factoryInterface) {
return this.modalFactory(obj, callback, factoryInterface, imageFactory);
return this.modalFactory(obj, callback, factoryInterface, imageFactory)
},
videoFactory: function (obj, callback, factoryInterface) {
return this.modalFactory(obj, callback, factoryInterface, videoFactory);
return this.modalFactory(obj, callback, factoryInterface, videoFactory)
},
textFactory: function (obj, callback, factoryInterface) {
return this.modalFactory(obj, callback, factoryInterface, textFactory);
return this.modalFactory(obj, callback, factoryInterface, textFactory)
},
close: function () {
this.container.find('.modal').removeClass('in');
close.call(this);
this.container.find('.modal').removeClass('in')
close.call(this)
}
});
}));
})
}))

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,35 @@
/*!
Buttons for DataTables 1.2.1
©2016 SpryMedia Ltd - datatables.net/license
*/
(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(o){return d(o,window,document)}):"object"===typeof exports?module.exports=function(o,n){o||(o=window);if(!n||!n.fn.dataTable)n=require("datatables.net")(o,n).$;return d(n,o,o.document)}:d(jQuery,window,document)})(function(d,o,n,l){var i=d.fn.dataTable,u=0,v=0,k=i.ext.buttons,m=function(a,b){!0===b&&(b={});d.isArray(b)&&(b={buttons:b});this.c=d.extend(!0,{},m.defaults,b);b.buttons&&(this.c.buttons=b.buttons);
this.s={dt:new i.Api(a),buttons:[],listenKeys:"",namespace:"dtb"+u++};this.dom={container:d("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)};this._constructor()};d.extend(m.prototype,{action:function(a,b){var c=this._nodeToButton(a);if(b===l)return c.conf.action;c.conf.action=b;return this},active:function(a,b){var c=this._nodeToButton(a),e=this.c.dom.button.active,c=d(c.node);if(b===l)return c.hasClass(e);c.toggleClass(e,b===l?!0:b);return this},add:function(a,b){var c=
this.s.buttons;if("string"===typeof b){for(var e=b.split("-"),c=this.s,d=0,h=e.length-1;d<h;d++)c=c.buttons[1*e[d]];c=c.buttons;b=1*e[e.length-1]}this._expandButton(c,a,!1,b);this._draw();return this},container:function(){return this.dom.container},disable:function(a){a=this._nodeToButton(a);d(a.node).addClass(this.c.dom.button.disabled);return this},destroy:function(){d("body").off("keyup."+this.s.namespace);var a=this.s.buttons.slice(),b,c;b=0;for(c=a.length;b<c;b++)this.remove(a[b].node);this.dom.container.remove();
a=this.s.dt.settings()[0];b=0;for(c=a.length;b<c;b++)if(a.inst===this){a.splice(b,1);break}return this},enable:function(a,b){if(!1===b)return this.disable(a);var c=this._nodeToButton(a);d(c.node).removeClass(this.c.dom.button.disabled);return this},name:function(){return this.c.name},node:function(a){a=this._nodeToButton(a);return d(a.node)},remove:function(a){var b=this._nodeToButton(a),c=this._nodeToHost(a),e=this.s.dt;if(b.buttons.length)for(var g=b.buttons.length-1;0<=g;g--)this.remove(b.buttons[g].node);
b.conf.destroy&&b.conf.destroy.call(e.button(a),e,d(a),b.conf);this._removeKey(b.conf);d(b.node).remove();a=d.inArray(b,c);c.splice(a,1);return this},text:function(a,b){var c=this._nodeToButton(a),e=this.c.dom.collection.buttonLiner,e=c.inCollection&&e&&e.tag?e.tag:this.c.dom.buttonLiner.tag,g=this.s.dt,h=d(c.node),f=function(a){return"function"===typeof a?a(g,h,c.conf):a};if(b===l)return f(c.conf.text);c.conf.text=b;e?h.children(e).html(f(b)):h.html(f(b));return this},_constructor:function(){var a=
this,b=this.s.dt,c=b.settings()[0],e=this.c.buttons;c._buttons||(c._buttons=[]);c._buttons.push({inst:this,name:this.c.name});for(var c=0,g=e.length;c<g;c++)this.add(e[c]);b.on("destroy",function(){a.destroy()});d("body").on("keyup."+this.s.namespace,function(b){if(!n.activeElement||n.activeElement===n.body){var c=String.fromCharCode(b.keyCode).toLowerCase();a.s.listenKeys.toLowerCase().indexOf(c)!==-1&&a._keypress(c,b)}})},_addKey:function(a){a.key&&(this.s.listenKeys+=d.isPlainObject(a.key)?a.key.key:
a.key)},_draw:function(a,b){a||(a=this.dom.container,b=this.s.buttons);a.children().detach();for(var c=0,d=b.length;c<d;c++)a.append(b[c].inserter),b[c].buttons&&b[c].buttons.length&&this._draw(b[c].collection,b[c].buttons)},_expandButton:function(a,b,c,e){for(var g=this.s.dt,h=0,b=!d.isArray(b)?[b]:b,f=0,q=b.length;f<q;f++){var j=this._resolveExtends(b[f]);if(j)if(d.isArray(j))this._expandButton(a,j,c,e);else{var p=this._buildButton(j,c);if(p){e!==l?(a.splice(e,0,p),e++):a.push(p);if(p.conf.buttons){var s=
this.c.dom.collection;p.collection=d("<"+s.tag+"/>").addClass(s.className);p.conf._collection=p.collection;this._expandButton(p.buttons,p.conf.buttons,!0,e)}j.init&&j.init.call(g.button(p.node),g,d(p.node),j);h++}}}},_buildButton:function(a,b){var c=this.c.dom.button,e=this.c.dom.buttonLiner,g=this.c.dom.collection,h=this.s.dt,f=function(b){return"function"===typeof b?b(h,j,a):b};b&&g.button&&(c=g.button);b&&g.buttonLiner&&(e=g.buttonLiner);if(a.available&&!a.available(h,a))return!1;var q=function(a,
b,c,e){e.action.call(b.button(c),a,b,c,e);d(b.table().node()).triggerHandler("buttons-action.dt",[b.button(c),b,c,e])},j=d("<"+c.tag+"/>").addClass(c.className).attr("tabindex",this.s.dt.settings()[0].iTabIndex).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(b){b.preventDefault();!j.hasClass(c.disabled)&&a.action&&q(b,h,j,a);j.blur()}).on("keyup.dtb",function(b){b.keyCode===13&&!j.hasClass(c.disabled)&&a.action&&q(b,h,j,a)});"a"===c.tag.toLowerCase()&&j.attr("href","#");
e.tag?(g=d("<"+e.tag+"/>").html(f(a.text)).addClass(e.className),"a"===e.tag.toLowerCase()&&g.attr("href","#"),j.append(g)):j.html(f(a.text));!1===a.enabled&&j.addClass(c.disabled);a.className&&j.addClass(a.className);a.titleAttr&&j.attr("title",a.titleAttr);a.namespace||(a.namespace=".dt-button-"+v++);e=(e=this.c.dom.buttonContainer)&&e.tag?d("<"+e.tag+"/>").addClass(e.className).append(j):j;this._addKey(a);return{conf:a,node:j.get(0),inserter:e,buttons:[],inCollection:b,collection:null}},_nodeToButton:function(a,
b){b||(b=this.s.buttons);for(var c=0,d=b.length;c<d;c++){if(b[c].node===a)return b[c];if(b[c].buttons.length){var g=this._nodeToButton(a,b[c].buttons);if(g)return g}}},_nodeToHost:function(a,b){b||(b=this.s.buttons);for(var c=0,d=b.length;c<d;c++){if(b[c].node===a)return b;if(b[c].buttons.length){var g=this._nodeToHost(a,b[c].buttons);if(g)return g}}},_keypress:function(a,b){var c=function(e){for(var g=0,h=e.length;g<h;g++){var f=e[g].conf,q=e[g].node;if(f.key)if(f.key===a)d(q).click();else if(d.isPlainObject(f.key)&&
f.key.key===a&&(!f.key.shiftKey||b.shiftKey))if(!f.key.altKey||b.altKey)if(!f.key.ctrlKey||b.ctrlKey)(!f.key.metaKey||b.metaKey)&&d(q).click();e[g].buttons.length&&c(e[g].buttons)}};c(this.s.buttons)},_removeKey:function(a){if(a.key){var b=d.isPlainObject(a.key)?a.key.key:a.key,a=this.s.listenKeys.split(""),b=d.inArray(b,a);a.splice(b,1);this.s.listenKeys=a.join("")}},_resolveExtends:function(a){for(var b=this.s.dt,c,e,g=function(c){for(var e=0;!d.isPlainObject(c)&&!d.isArray(c);){if(c===l)return;
if("function"===typeof c){if(c=c(b,a),!c)return!1}else if("string"===typeof c){if(!k[c])throw"Unknown button type: "+c;c=k[c]}e++;if(30<e)throw"Buttons: Too many iterations";}return d.isArray(c)?c:d.extend({},c)},a=g(a);a&&a.extend;){if(!k[a.extend])throw"Cannot extend unknown button type: "+a.extend;var h=g(k[a.extend]);if(d.isArray(h))return h;if(!h)return!1;c=h.className;a=d.extend({},h,a);c&&a.className!==c&&(a.className=c+" "+a.className);var f=a.postfixButtons;if(f){a.buttons||(a.buttons=[]);
c=0;for(e=f.length;c<e;c++)a.buttons.push(f[c]);a.postfixButtons=null}if(f=a.prefixButtons){a.buttons||(a.buttons=[]);c=0;for(e=f.length;c<e;c++)a.buttons.splice(c,0,f[c]);a.prefixButtons=null}a.extend=h.extend}return a}});m.background=function(a,b,c){c===l&&(c=400);a?d("<div/>").addClass(b).css("display","none").appendTo("body").fadeIn(c):d("body > div."+b).fadeOut(c,function(){d(this).remove()})};m.instanceSelector=function(a,b){if(!a)return d.map(b,function(a){return a.inst});var c=[],e=d.map(b,
function(a){return a.name}),g=function(a){if(d.isArray(a))for(var f=0,q=a.length;f<q;f++)g(a[f]);else"string"===typeof a?-1!==a.indexOf(",")?g(a.split(",")):(a=d.inArray(d.trim(a),e),-1!==a&&c.push(b[a].inst)):"number"===typeof a&&c.push(b[a].inst)};g(a);return c};m.buttonSelector=function(a,b){for(var c=[],e=function(a,b,c){for(var d,g,f=0,h=b.length;f<h;f++)if(d=b[f])g=c!==l?c+f:f+"",a.push({node:d.node,name:d.conf.name,idx:g}),d.buttons&&e(a,d.buttons,g+"-")},g=function(a,b){var f,h,i=[];e(i,b.s.buttons);
f=d.map(i,function(a){return a.node});if(d.isArray(a)||a instanceof d){f=0;for(h=a.length;f<h;f++)g(a[f],b)}else if(null===a||a===l||"*"===a){f=0;for(h=i.length;f<h;f++)c.push({inst:b,node:i[f].node})}else if("number"===typeof a)c.push({inst:b,node:b.s.buttons[a].node});else if("string"===typeof a)if(-1!==a.indexOf(",")){i=a.split(",");f=0;for(h=i.length;f<h;f++)g(d.trim(i[f]),b)}else if(a.match(/^\d+(\-\d+)*$/))f=d.map(i,function(a){return a.idx}),c.push({inst:b,node:i[d.inArray(a,f)].node});else if(-1!==
a.indexOf(":name")){var k=a.replace(":name","");f=0;for(h=i.length;f<h;f++)i[f].name===k&&c.push({inst:b,node:i[f].node})}else d(f).filter(a).each(function(){c.push({inst:b,node:this})});else"object"===typeof a&&a.nodeName&&(i=d.inArray(a,f),-1!==i&&c.push({inst:b,node:f[i]}))},h=0,f=a.length;h<f;h++)g(b,a[h]);return c};m.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{tag:"div",className:"dt-button-collection"},
button:{tag:"a",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"span",className:""}}};m.version="1.2.1";d.extend(k,{collection:{text:function(a){return a.i18n("buttons.collection","Collection")},className:"buttons-collection",action:function(a,b,c,e){var a=c.offset(),g=d(b.table().container()),h=!1;d("div.dt-button-background").length&&(h=d("div.dt-button-collection").offset(),d("body").trigger("click.dtb-collection"));e._collection.addClass(e.collectionLayout).css("display",
"none").appendTo("body").fadeIn(e.fade);var f=e._collection.css("position");h&&"absolute"===f?e._collection.css({top:h.top+5,left:h.left+5}):"absolute"===f?(e._collection.css({top:a.top+c.outerHeight(),left:a.left}),c=a.left+e._collection.outerWidth(),g=g.offset().left+g.width(),c>g&&e._collection.css("left",a.left-(c-g))):(a=e._collection.height()/2,a>d(o).height()/2&&(a=d(o).height()/2),e._collection.css("marginTop",-1*a));e.background&&m.background(!0,e.backgroundClassName,e.fade);setTimeout(function(){d("div.dt-button-background").on("click.dtb-collection",
function(){});d("body").on("click.dtb-collection",function(a){if(!d(a.target).parents().andSelf().filter(e._collection).length){e._collection.fadeOut(e.fade,function(){e._collection.detach()});d("div.dt-button-background").off("click.dtb-collection");m.background(false,e.backgroundClassName,e.fade);d("body").off("click.dtb-collection");b.off("buttons-action.b-internal")}})},10);if(e.autoClose)b.on("buttons-action.b-internal",function(){d("div.dt-button-background").click()})},background:!0,collectionLayout:"",
backgroundClassName:"dt-button-background",autoClose:!1,fade:400},copy:function(a,b){if(k.copyHtml5)return"copyHtml5";if(k.copyFlash&&k.copyFlash.available(a,b))return"copyFlash"},csv:function(a,b){if(k.csvHtml5&&k.csvHtml5.available(a,b))return"csvHtml5";if(k.csvFlash&&k.csvFlash.available(a,b))return"csvFlash"},excel:function(a,b){if(k.excelHtml5&&k.excelHtml5.available(a,b))return"excelHtml5";if(k.excelFlash&&k.excelFlash.available(a,b))return"excelFlash"},pdf:function(a,b){if(k.pdfHtml5&&k.pdfHtml5.available(a,
b))return"pdfHtml5";if(k.pdfFlash&&k.pdfFlash.available(a,b))return"pdfFlash"},pageLength:function(a){var a=a.settings()[0].aLengthMenu,b=d.isArray(a[0])?a[0]:a,c=d.isArray(a[0])?a[1]:a,e=function(a){return a.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},a.page.len())};return{extend:"collection",text:e,className:"buttons-page-length",autoClose:!0,buttons:d.map(b,function(a,b){return{text:c[b],action:function(b,c){c.page.len(a).draw()},init:function(b,c,d){var e=this,c=function(){e.active(b.page.len()===
a)};b.on("length.dt"+d.namespace,c);c()},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}),init:function(a,b,c){var d=this;a.on("length.dt"+c.namespace,function(){d.text(e(a))})},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}});i.Api.register("buttons()",function(a,b){b===l&&(b=a,a=l);return this.iterator(!0,"table",function(c){if(c._buttons)return m.buttonSelector(m.instanceSelector(a,c._buttons),b)},!0)});i.Api.register("button()",function(a,b){var c=this.buttons(a,b);1<c.length&&
c.splice(1,c.length);return c});i.Api.registerPlural("buttons().active()","button().active()",function(a){return a===l?this.map(function(a){return a.inst.active(a.node)}):this.each(function(b){b.inst.active(b.node,a)})});i.Api.registerPlural("buttons().action()","button().action()",function(a){return a===l?this.map(function(a){return a.inst.action(a.node)}):this.each(function(b){b.inst.action(b.node,a)})});i.Api.register(["buttons().enable()","button().enable()"],function(a){return this.each(function(b){b.inst.enable(b.node,
a)})});i.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(a){a.inst.disable(a.node)})});i.Api.registerPlural("buttons().nodes()","button().node()",function(){var a=d();d(this.each(function(b){a=a.add(b.inst.node(b.node))}));return a});i.Api.registerPlural("buttons().text()","button().text()",function(a){return a===l?this.map(function(a){return a.inst.text(a.node)}):this.each(function(b){b.inst.text(b.node,a)})});i.Api.registerPlural("buttons().trigger()",
"button().trigger()",function(){return this.each(function(a){a.inst.node(a.node).trigger("click")})});i.Api.registerPlural("buttons().containers()","buttons().container()",function(){var a=d();d(this.each(function(b){a=a.add(b.inst.container())}));return a});i.Api.register("button().add()",function(a,b){1===this.length&&this[0].inst.add(b,a);return this.button(a)});i.Api.register("buttons().destroy()",function(){this.pluck("inst").unique().each(function(a){a.destroy()});return this});i.Api.registerPlural("buttons().remove()",
"buttons().remove()",function(){this.each(function(a){a.inst.remove(a.node)});return this});var r;i.Api.register("buttons.info()",function(a,b,c){var e=this;if(!1===a)return d("#datatables_buttons_info").fadeOut(function(){d(this).remove()}),clearTimeout(r),r=null,this;r&&clearTimeout(r);d("#datatables_buttons_info").length&&d("#datatables_buttons_info").remove();d('<div id="datatables_buttons_info" class="dt-button-info"/>').html(a?"<h2>"+a+"</h2>":"").append(d("<div/>")["string"===typeof b?"html":
"append"](b)).css("display","none").appendTo("body").fadeIn();c!==l&&0!==c&&(r=setTimeout(function(){e.buttons.info(!1)},c));return this});i.Api.register("buttons.exportData()",function(a){if(this.context.length){for(var b=new i.Api(this.context[0]),c=d.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,trim:!0,format:{header:function(a){return e(a)},footer:function(a){return e(a)},body:function(a){return e(a)}}},
a),e=function(a){if("string"!==typeof a)return a;c.stripHtml&&(a=a.replace(/<[^>]*>/g,""));c.trim&&(a=a.replace(/^\s+|\s+$/g,""));c.stripNewlines&&(a=a.replace(/\n/g," "));c.decodeEntities&&(t.innerHTML=a,a=t.value);return a},a=b.columns(c.columns).indexes().map(function(a){return c.format.header(b.column(a).header().innerHTML,a)}).toArray(),g=b.table().footer()?b.columns(c.columns).indexes().map(function(a){var d=b.column(a).footer();return c.format.footer(d?d.innerHTML:"",a)}).toArray():null,h=
b.rows(c.rows,c.modifier).indexes().toArray(),h=b.cells(h,c.columns).render(c.orthogonal).toArray(),f=a.length,k=0<f?h.length/f:0,j=Array(k),m=0,l=0;l<k;l++){for(var o=Array(f),n=0;n<f;n++)o[n]=c.format.body(h[m],n,l),m++;j[l]=o}return{header:a,footer:g,body:j}}});var t=d("<textarea/>")[0];d.fn.dataTable.Buttons=m;d.fn.DataTable.Buttons=m;d(n).on("init.dt plugin-init.dt",function(a,b){if("dt"===a.namespace){var c=b.oInit.buttons||i.defaults.buttons;c&&!b._buttons&&(new m(b,c)).container()}});i.ext.feature.push({fnInit:function(a){var a=
new i.Api(a),b=a.init().buttons||i.defaults.buttons;return(new m(a,b)).container()},cFeature:"B"});return m});

View File

@@ -0,0 +1,166 @@
/*!
DataTables 1.10.12
©2008-2015 SpryMedia Ltd - datatables.net/license
*/
(function(h){"function"===typeof define&&define.amd?define(["jquery"],function(D){return h(D,window,document)}):"object"===typeof exports?module.exports=function(D,I){D||(D=window);I||(I="undefined"!==typeof window?require("jquery"):require("jquery")(D));return h(I,D,D.document)}:h(jQuery,window,document)})(function(h,D,I,k){function X(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),
d[c]=e,"o"===b[1]&&X(a[e])});a._hungarianMap=d}function K(a,b,c){a._hungarianMap||X(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),K(a[d],b[d],c)):b[d]=b[e]})}function Da(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords");
a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX=
a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&K(m.models.oSearch,a[b])}function fb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function gb(a){if(!m.__browser){var b={};m.__browser=b;var c=h("<div/>").css({position:"fixed",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",top:1,left:1,
width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function hb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==e;)a.hasOwnProperty(d)&&
(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Ea(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:I.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);ja(a,d,h(b).data())}function ja(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f=
(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),K(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=Q(g),i=b.mRender?Q(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&
(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return R(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):
!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Y(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Fa(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&ka(a);u(a,null,"column-sizing",[a])}function Z(a,b){var c=la(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=la(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}
function aa(a){var b=0;h.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==h(d.nTh).css("display")&&b++});return b}function la(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ga(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,j,i,h,l,q,t;e=0;for(f=b.length;e<f;e++)if(l=b[e],t=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=d.length;g<j;g++){i=0;for(h=c.length;i<h;i++){t[i]===k&&(t[i]=B(a,i,e,"type"));q=d[g](t[i],a);if(!q&&
g!==d.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function ib(a,b,c,d){var e,f,g,j,i,n,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var q=n.targets!==k?n.targets:n.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Ea(a);d(q[f],n)}else if("number"===typeof q[f]&&0>q[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;j<i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&
d(j,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function N(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,j=0,i=g.length;j<i;j++)g[j].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ha(a,e,c,d);return e}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=Ia(a,e);return N(a,c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,
f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,i=f.fnGetData(g,d,{settings:a,row:b,col:c});if(i===k)return a.iDrawError!=e&&null===j&&(L(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),j;if((i===g||null===i)&&null!==j&&d!==k)i=j;else if("function"===typeof i)return i.call(g);return null===i&&"display"==d?"":i}function jb(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}
function Ja(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\./g,".")})}function Q(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=Q(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=Ja(f);
for(var i=0,n=j.length;i<n;i++){f=j[i].match(ba);g=j[i].match(U);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");if(h.isArray(a)){i=0;for(n=a.length;i<n;i++)g.push(c(a[i],b,j))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(U,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===k)return k;a=a[j[i]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function R(a){if(h.isPlainObject(a))return R(a._);
if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=Ja(e),f;f=e[e.length-1];for(var g,j,i=0,n=e.length-1;i<n;i++){g=e[i].match(ba);j=e[i].match(U);if(g){e[i]=e[i].replace(ba,"");a[e[i]]=[];f=e.slice();f.splice(0,i+1);g=f.join(".");if(h.isArray(d)){j=0;for(n=d.length;j<n;j++)f={},b(f,d[j],g),a[e[i]].push(f)}else a[e[i]]=d;return}j&&(e[i]=e[i].replace(U,
""),a=a[e[i]](d));if(null===a[e[i]]||a[e[i]]===k)a[e[i]]={};a=a[e[i]]}if(f.match(U))a[f.replace(U,"")](d);else a[f.replace(ba,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ka(a){return G(a.aoData,"_aData")}function na(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function oa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ca(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);
c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ia(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;La(a,e)}}function Ia(a,b,c,d){var e=[],f=b.firstChild,g,j,i=0,n,l=a.aoColumns,q=a._rowReadObject,d=d!==k?d:q?{}:[],t=function(a,b){if("string"===typeof a){var c=a.indexOf("@");
-1!==c&&(c=a.substring(c+1),R(a)(d,b.getAttribute(c)))}},S=function(a){if(c===k||c===i)j=l[i],n=h.trim(a.innerHTML),j&&j._bAttrSrc?(R(j.mData._)(d,n),t(j.mData.sort,a),t(j.mData.type,a),t(j.mData.filter,a)):q?(j._setter||(j._setter=R(j.mData)),j._setter(d,n)):d[i]=n;i++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)S(f),e.push(f);f=f.nextSibling}else{e=b.anCells;f=0;for(g=e.length;f<g;f++)S(e[f])}if(b=b.firstChild?b:b.nTr)(b=b.getAttribute("id"))&&R(a.rowId)(d,b);return{data:d,cells:e}}
function Ha(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],j,i,n,l,q;if(null===e.nTr){j=c||I.createElement("tr");e.nTr=j;e.anCells=g;j._DT_RowIndex=b;La(a,e);l=0;for(q=a.aoColumns.length;l<q;l++){n=a.aoColumns[l];i=c?d[l]:I.createElement(n.sCellType);i._DT_CellIndex={row:b,column:l};g.push(i);if((!c||n.mRender||n.mData!==l)&&(!h.isPlainObject(n.mData)||n.mData._!==l+".display"))i.innerHTML=B(a,b,l,"display");n.sClass&&(i.className+=" "+n.sClass);n.bVisible&&!c?j.appendChild(i):!n.bVisible&&c&&i.parentNode.removeChild(i);
n.fnCreatedCell&&n.fnCreatedCell.call(a.oInstance,i,B(a,b,l),f,b,l)}u(a,"aoRowCreatedCallback",null,[j,f,b])}e.nTr.setAttribute("role","row")}function La(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?pa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function kb(a){var b,c,d,e,f,g=a.nTHead,j=a.nTFoot,i=0===
h("th, td",g).length,n=a.oClasses,l=a.aoColumns;i&&(e=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),i&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Ma(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Na(a,"header")(a,d,f,n);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH);
if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var d,e,f,g=[],j=[],i=a.aoColumns.length,n;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);j.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(n=i=1,j[d][f]===k){a.appendChild(g[d][f].cell);
for(j[d][f]=1;g[d+i]!==k&&g[d][f].cell==g[d+i][f].cell;)j[d+i][f]=1,i++;for(;g[d][f+n]!==k&&g[d][f].cell==g[d][f+n].cell;){for(c=0;c<i;c++)j[d+c][f+n]=1;n++}h(g[d][f].cell).attr("rowspan",i).attr("colspan",n)}}}}function O(a){var b=u(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==y(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=
-1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!lb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ha(a,l);l=q.nTr;if(0!==e){var t=d[c%e];q._sRowStripe!=t&&(h(l).removeClass(q._sRowStripe).addClass(t),q._sRowStripe=t)}u(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords:
f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];u(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ka(a),g,n,i]);u(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ka(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));u(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function T(a,b){var c=a.oFeatures,d=c.bFilter;
c.bSort&&mb(a);d?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;O(a);a._drawHold=!1}function nb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,t=0;t<f.length;t++){g=null;j=f[t];if("<"==j){i=h("<div/>")[0];
n=f[t+1];if("'"==n||'"'==n){l="";for(q=2;f[t+q]!=n;)l+=f[t+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;t+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=ob(a);else if("f"==j&&d.bFilter)g=pb(a);else if("r"==j&&d.bProcessing)g=qb(a);else if("t"==j)g=rb(a);else if("i"==j&&d.bInfo)g=sb(a);else if("p"==
j&&d.bPaginate)g=tb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q<n;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function da(a,b){var c=h(b).children("tr"),d,e,f,g,j,i,n,l,q,t;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan");
q=1*e.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;n=g;t=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][n+j]={cell:e,unique:t},a[f+g].nTr=d}e=e.nextSibling}}}function qa(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function ra(a,b,c){u(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={},
e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,j=a.oInstance,i=function(b){u(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var n=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&n?n:h.extend(!0,b,n);delete g.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&L(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=u(a,null,"xhr",
[a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==c?L(a,0,"Invalid JSON response",1):4===b.readyState&&L(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;u(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(n,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(n,g)),g.data=f)}function lb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,
!0),ra(a,ub(a),function(b){vb(a,b)}),!1):!0}function ub(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,n,l,q=V(a);g=a._iDisplayStart;i=!1!==d.bPaginate?a._iDisplayLength:-1;var k=function(a,b){j.push({name:a,value:b})};k("sEcho",a.iDraw);k("iColumns",c);k("sColumns",G(b,"sName").join(","));k("iDisplayStart",g);k("iDisplayLength",i);var S={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)n=b[g],
l=f[g],i="function"==typeof n.mData?"function":n.mData,S.columns.push({data:i,name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),k("mDataProp_"+g,i),d.bFilter&&(k("sSearch_"+g,l.sSearch),k("bRegex_"+g,l.bRegex),k("bSearchable_"+g,n.bSearchable)),d.bSort&&k("bSortable_"+g,n.bSortable);d.bFilter&&(k("sSearch",e.sSearch),k("bRegex",e.bRegex));d.bSort&&(h.each(q,function(a,b){S.order.push({column:b.col,dir:b.dir});k("iSortCol_"+a,b.col);k("sSortDir_"+
a,b.dir)}),k("iSortingCols",q.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:S:b?j:S}function vb(a,b){var c=sa(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}na(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)N(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;O(a);a._bInitComplete||
ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?Q(c)(b):b}function pb(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value?
"":this.value;b!=e.sSearch&&(fa(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,O(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,i=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?Oa(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==I.activeElement&&i.val(e.sSearch)}catch(d){}});
return b[0]}function fa(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Ga(a);if("ssp"!=y(a)){wb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)xb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);yb(a)}else f(b);a.bFiltered=!0;u(a,null,"search",[a])}function yb(a){for(var b=
m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var j=[],i=0,n=c.length;i<n;i++)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,i)&&j.push(e);c.length=0;h.merge(c,j)}}function xb(a,b,c,d,e,f){if(""!==b)for(var g=a.aiDisplay,d=Pa(b,d,e,f),e=g.length-1;0<=e;e--)b=a.aoData[g[e]]._aFilterData[c],d.test(b)||g.splice(e,1)}function wb(a,b,c,d,e,f){var d=Pa(b,d,e,f),e=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==m.ext.search.length&&(c=!0);g=zb(a);if(0>=b.length)a.aiDisplay=f.slice();
else{if(g||c||e.length>b.length||0!==b.indexOf(e)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)d.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Pa(a,b,c,d){a=b?a:Qa(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function zb(a){var b=a.aoColumns,c,d,e,f,g,j,i,h,l=m.ext.type.search;c=!1;d=0;for(f=a.aoData.length;d<
f;d++)if(h=a.aoData[d],!h._aFilterData){j=[];e=0;for(g=b.length;e<g;e++)c=b[e],c.bSearchable?(i=B(a,d,e,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(ua.innerHTML=i,i=Zb?ua.textContent:ua.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c}function Ab(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}
function Bb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function sb(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Cb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Cb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),
g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Db(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,d,e,f,g,j));h(b).html(j)}}function Db(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/
e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ga(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){nb(a);kb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Fa(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=x(f.sWidth));u(a,null,"preInit",[a]);T(a);e=y(a);if("ssp"!=e||g)"ajax"==e?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)N(a,f[b]);a.iInitDisplayStart=d;T(a);C(a,!1);ta(a,c)},a):(C(a,!1),
ta(a))}else setTimeout(function(){ga(a)},200)}function ta(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Y(a);u(a,null,"plugin-init",[a,b]);u(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);u(a,null,"length",[a,c])}function ob(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)e[0][g]=new Option(d[g],f[g]);var i=
h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());O(a)});h(a.nTable).bind("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function tb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){O(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;
d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;l<k;l++)Na(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Ta(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:
"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:L(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(u(a,null,"page",[a]),c&&O(a));return b}function qb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");u(a,null,"processing",
[a,b])}function rb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:x(d):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",
width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:x(d)}).append(b));l&&i.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:x(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===j?g:null).append(b.children("tfoot")))));
var b=i.children(),k=b[0],f=b[1],t=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(t.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=t;a.aoDrawCallback.push({fn:ka,sName:"scrolling"});return i[0]}function ka(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"),j=a.nScrollBody,l=h(j),q=j.style,t=h(a.nScrollFoot).children("div"),
m=t.children("table"),o=h(a.nTHead),F=h(a.nTable),p=F[0],r=p.style,u=a.nTFoot?h(a.nTFoot):null,Eb=a.oBrowser,Ua=Eb.bScrollOversize,s=G(a.aoColumns,"nTh"),P,v,w,y,z=[],A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};v=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==v&&a.scrollBarVis!==k)a.scrollBarVis=v,Y(a);else{a.scrollBarVis=v;F.children("thead, tfoot").remove();u&&(w=u.clone().prependTo(F),P=u.find("tr"),w=
w.find("tr"));y=o.clone().prependTo(F);o=o.find("tr");v=y.find("tr");y.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(qa(a,y),function(b,c){D=Z(a,b);c.style.width=a.aoColumns[D].sWidth});u&&J(function(a){a.style.width=""},w);f=F.outerWidth();if(""===c){r.width="100%";if(Ua&&(F.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=x(F.outerWidth()-b);f=F.outerWidth()}else""!==d&&(r.width=x(d),f=F.outerWidth());J(E,v);J(function(a){B.push(a.innerHTML);
z.push(x(h(a).css("width")))},v);J(function(a,b){if(h.inArray(a,s)!==-1)a.style.width=z[b]},o);h(v).height(0);u&&(J(E,w),J(function(a){C.push(a.innerHTML);A.push(x(h(a).css("width")))},w),J(function(a,b){a.style.width=A[b]},P),h(w).height(0));J(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+B[b]+"</div>";a.style.width=z[b]},v);u&&J(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=
A[b]},w);if(F.outerWidth()<f){P=j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(Ua&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=x(P-b);(""===c||""!==d)&&L(a,1,"Possible column misalignment",6)}else P="100%";q.width=x(P);g.width=x(P);u&&(a.nScrollFoot.style.width=x(P));!e&&Ua&&(q.height=x(p.offsetHeight+b));c=F.outerWidth();n[0].style.width=x(c);i.width=x(c);d=F.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+(Eb.bScrollbarLeft?"Left":
"Right");i[e]=d?b+"px":"0px";u&&(m[0].style.width=x(c),t[0].style.width=x(c),t[0].style[e]=d?b+"px":"0px");F.children("colgroup").insertBefore(F.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function J(a,b,c){for(var d=0,e=0,f=b.length,g,j;e<f;){g=b[e].firstChild;for(j=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,d):a(g,d),d++),g=g.nextSibling,j=c?j.nextSibling:null;e++}}function Fa(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,f=d.sX,g=d.sXInner,
j=c.length,i=la(a,"bVisible"),n=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,t=!1,m,o,p=a.oBrowser,d=p.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<i.length;m++)o=c[i[m]],null!==o.sWidth&&(o.sWidth=Fb(o.sWidthOrig,k),t=!0);if(d||!t&&!f&&!e&&j==aa(a)&&j==n.length)for(m=0;m<j;m++)i=Z(a,m),null!==i&&(c[i].sWidth=x(n.eq(m).width()));else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var r=h("<tr/>").appendTo(j.find("tbody"));
j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=qa(a,j.find("thead")[0]);for(m=0;m<i.length;m++)o=c[i[m]],n[m].style.width=null!==o.sWidthOrig&&""!==o.sWidthOrig?x(o.sWidthOrig):"",o.sWidthOrig&&f&&h(n[m]).append(h("<div/>").css({width:o.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m<i.length;m++)t=i[m],o=c[t],h(Gb(a,t)).clone(!1).append(o.sContentPadding).appendTo(r);h("[name]",
j).removeAttr("name");o=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()<k.clientWidth&&l&&j.width(k.clientWidth)):e?j.width(k.clientWidth):l&&j.width(l);for(m=e=0;m<i.length;m++)k=h(n[m]),g=k.outerWidth()-k.width(),k=p.bBounding?Math.ceil(n[m].getBoundingClientRect().width):k.outerWidth(),e+=k,c[i[m]].sWidth=x(k-g);b.style.width=x(e);o.remove()}l&&(b.style.width=
x(l));if((l||f)&&!a._reszEvt)b=function(){h(D).bind("resize.DT-"+a.sInstance,Oa(function(){Y(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function Fb(a,b){if(!a)return 0;var c=h("<div/>").css("width",x(a)).appendTo(b||I.body),d=c[0].offsetWidth;c.remove();return d}function Gb(a,b){var c=Hb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Hb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace($b,
""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=f);return e}function x(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function V(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){i=n[a][0];f=e[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=e[g].sType||
"string",n[a]._idx===k&&(n[a]._idx=h.inArray(n[a][1],e[g].asSorting)),d.push({src:i,col:g,dir:n[a][1],index:n[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return d}function mb(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;Ga(a);h=V(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Ib(a,j.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)d[i[b]]=b;g===h.length?i.sort(function(a,b){var c,e,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=
0;g<i;g++)if(j=h[g],c=k[j.col],e=m[j.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,p=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=p[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,d=a.aoColumns,e=V(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,
"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(i.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=j[e[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Va(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,
G(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);T(a);"function"==typeof d&&d(a)}function Ma(a,b,c,d){var e=a.aoColumns[c];Wa(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Va(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Va(a,c,b.shiftKey,d))})}
function va(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=V(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(G(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)g=d[e].src,h(G(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Ib(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],
c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[j]:B(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function wa(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:Ab(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Ab(a.aoPreSearchCols[d])}})};u(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,
b)}}function Kb(a){var b,c,d=a.aoColumns;if(a.oFeatures.bStateSave){var e=a.fnStateLoadCallback.call(a.oInstance,a);if(e&&e.time&&(b=u(a,"aoStateLoadParams","stateLoadParams",[a,e]),-1===h.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&e.time<+new Date-1E3*b)&&d.length===e.columns.length))){a.oLoadedState=h.extend(!0,{},e);e.start!==k&&(a._iDisplayStart=e.start,a.iInitDisplayStart=e.start);e.length!==k&&(a._iDisplayLength=e.length);e.order!==k&&(a.aaSorting=[],h.each(e.order,function(b,c){a.aaSorting.push(c[0]>=
d.length?[0,c[1]]:c)}));e.search!==k&&h.extend(a.oPreviousSearch,Bb(e.search));b=0;for(c=e.columns.length;b<c;b++){var f=e.columns[b];f.visible!==k&&(d[b].bVisible=f.visible);f.search!==k&&h.extend(a.aoPreSearchCols[b],Bb(f.search))}u(a,"aoStateLoaded","stateLoaded",[a,e])}}}function xa(a){var b=m.settings,a=h.inArray(a,G(b,"nTable"));return-1!==a?b[a]:null}function L(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+
d);if(b)D.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&u(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function E(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?E(a,b,d[0],d[1]):E(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Lb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==
e&&h.isArray(d)?d.slice():d);return a}function Wa(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function u(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Sa(a){var b=a._iDisplayStart,
c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Na(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ya(a,b){var c=[],c=Mb.numbers_length,d=Math.floor(c/2);b<=c?c=W(0,b):a<=d?(c=W(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=W(b-(c-2),b):(c=W(a-d+2,a+d-1),c.push("ellipsis"),
c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return za(b,a)},"num-fmt":function(b){return za(b,a,Xa)},"html-num":function(b){return za(b,a,Aa)},"html-num-fmt":function(b){return za(b,a,Aa,Xa)}},function(b,c){v.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(v.type.search[b+a]=v.type.search.html)})}function Nb(a){return function(){var b=[xa(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,
b)}}var m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new r(xa(this[v.iApiIndex])):new r(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):
(""!==d.sX||""!==d.sY)&&ka(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,
c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),
[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return xa(this[v.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=
function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=v.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=v.internal;for(var e in m.ext.internal)e&&(this[e]=Nb(e));this.each(function(){var e={},e=1<d?Lb(e,a,!0):a,g=0,j,i=this.getAttribute("id"),n=!1,l=m.defaults,q=h(this);if("table"!=
this.nodeName.toLowerCase())L(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{eb(l);fb(l.column);K(l,l,!0);K(l.column,l.column,!0);K(l,h.extend(e,q.data()));var t=m.settings,g=0;for(j=t.length;g<j;g++){var p=t[g];if(p.nTable==this||p.nTHead.parentNode==this||p.nTFoot&&p.nTFoot.parentNode==this){g=e.bRetrieve!==k?e.bRetrieve:l.bRetrieve;if(c||g)return p.oInstance;if(e.bDestroy!==k?e.bDestroy:l.bDestroy){p.oInstance.fnDestroy();break}else{L(p,0,"Cannot reinitialise DataTable",3);
return}}if(p.sTableId==this.id){t.splice(g,1);break}}if(null===i||""===i)this.id=i="DataTables_Table_"+m.ext._unique++;var o=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:i,sTableId:i});o.nTable=this;o.oApi=b.internal;o.oInit=e;t.push(o);o.oInstance=1===b.length?b:q.dataTable();eb(e);e.oLanguage&&Da(e.oLanguage);e.aLengthMenu&&!e.iDisplayLength&&(e.iDisplayLength=h.isArray(e.aLengthMenu[0])?e.aLengthMenu[0][0]:e.aLengthMenu[0]);e=Lb(h.extend(!0,{},l),e);E(o.oFeatures,
e,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));E(o,e,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols",
"aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);E(o.oScroll,e,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);E(o.oLanguage,e,"fnInfoCallback");z(o,"aoDrawCallback",e.fnDrawCallback,"user");z(o,"aoServerParams",e.fnServerParams,"user");z(o,"aoStateSaveParams",e.fnStateSaveParams,"user");z(o,"aoStateLoadParams",e.fnStateLoadParams,"user");z(o,"aoStateLoaded",e.fnStateLoaded,"user");z(o,"aoRowCallback",e.fnRowCallback,
"user");z(o,"aoRowCreatedCallback",e.fnCreatedRow,"user");z(o,"aoHeaderCallback",e.fnHeaderCallback,"user");z(o,"aoFooterCallback",e.fnFooterCallback,"user");z(o,"aoInitComplete",e.fnInitComplete,"user");z(o,"aoPreDrawCallback",e.fnPreDrawCallback,"user");o.rowIdFn=Q(e.rowId);gb(o);i=o.oClasses;e.bJQueryUI?(h.extend(i,m.ext.oJUIClasses,e.oClasses),e.sDom===l.sDom&&"lfrtip"===l.sDom&&(o.sDom='<"H"lfr>t<"F"ip>'),o.renderer)?h.isPlainObject(o.renderer)&&!o.renderer.header&&(o.renderer.header="jqueryui"):
o.renderer="jqueryui":h.extend(i,m.ext.classes,e.oClasses);q.addClass(i.sTable);o.iInitDisplayStart===k&&(o.iInitDisplayStart=e.iDisplayStart,o._iDisplayStart=e.iDisplayStart);null!==e.iDeferLoading&&(o.bDeferLoading=!0,g=h.isArray(e.iDeferLoading),o._iRecordsDisplay=g?e.iDeferLoading[0]:e.iDeferLoading,o._iRecordsTotal=g?e.iDeferLoading[1]:e.iDeferLoading);var r=o.oLanguage;h.extend(!0,r,e.oLanguage);""!==r.sUrl&&(h.ajax({dataType:"json",url:r.sUrl,success:function(a){Da(a);K(l.oLanguage,a);h.extend(true,
r,a);ga(o)},error:function(){ga(o)}}),n=!0);null===e.asStripeClasses&&(o.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=o.asStripeClasses,v=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return v.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),o.asDestroyStripes=g.slice());t=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(o.aoHeader,g[0]),t=qa(o));if(null===e.aoColumns){p=[];g=0;for(j=t.length;g<j;g++)p.push(null)}else p=e.aoColumns;g=0;for(j=
p.length;g<j;g++)Ea(o,t?t[g]:null);ib(o,e.aoColumnDefs,p,function(a,b){ja(o,a,b)});if(v.length){var s=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(v[0]).children("th, td").each(function(a,b){var c=o.aoColumns[a];if(c.mData===a){var d=s(b,"sort")||s(b,"order"),e=s(b,"filter")||s(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ja(o,a)}}})}var w=o.oFeatures;e.bStateSave&&(w.bStateSave=
!0,Kb(o,e),z(o,"aoDrawCallback",wa,"state_save"));if(e.aaSorting===k){t=o.aaSorting;g=0;for(j=t.length;g<j;g++)t[g][1]=o.aoColumns[g].asSorting[0]}va(o);w.bSort&&z(o,"aoDrawCallback",function(){if(o.bSorted){var a=V(o),b={};h.each(a,function(a,c){b[c.src]=c.dir});u(o,null,"order",[o,a,b]);Jb(o)}});z(o,"aoDrawCallback",function(){(o.bSorted||y(o)==="ssp"||w.bDeferRender)&&va(o)},"sc");g=q.children("caption").each(function(){this._captionSide=q.css("caption-side")});j=q.children("thead");0===j.length&&
(j=h("<thead/>").appendTo(this));o.nTHead=j[0];j=q.children("tbody");0===j.length&&(j=h("<tbody/>").appendTo(this));o.nTBody=j[0];j=q.children("tfoot");if(0===j.length&&0<g.length&&(""!==o.oScroll.sX||""!==o.oScroll.sY))j=h("<tfoot/>").appendTo(this);0===j.length||0===j.children().length?q.addClass(i.sNoFooter):0<j.length&&(o.nTFoot=j[0],da(o.aoFooter,o.nTFoot));if(e.aaData)for(g=0;g<e.aaData.length;g++)N(o,e.aaData[g]);else(o.bDeferLoading||"dom"==y(o))&&ma(o,h(o.nTBody).children("tr"));o.aiDisplay=
o.aiDisplayMaster.slice();o.bInitialised=!0;!1===n&&ga(o)}});b=null;return this},v,r,p,s,Ya={},Ob=/[\r\n]/g,Aa=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,cc=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,M=function(a){return!a||!0===a||"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(Qa(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,
"").replace(Ya[b],"."):a},Za=function(a,b,c){var d="string"===typeof a;if(M(a))return!0;b&&d&&(a=Qb(a,b));c&&d&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return M(a)?!0:!(M(a)||"string"===typeof a)?null:Za(a.replace(Aa,""),b,c)?!0:null},G=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},ha=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&
e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},W=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Sb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},pa=function(a){var b=[],c,d,e=a.length,f,g=0;d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b};m.util={throttle:function(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,h=arguments;d&&g<d+c?(clearTimeout(e),
e=setTimeout(function(){d=k;a.apply(b,h)},c)):(d=g,a.apply(b,h))}},escapeRegex:function(a){return a.replace(cc,"\\$1")}};var A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,U=/\(\)$/,Qa=m.util.escapeRegex,ua=h("<div>")[0],Zb=ua.textContent!==k,$b=/<.*?>/g,Oa=m.util.throttle,Tb=[],w=Array.prototype,dc=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:
null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};r=function(a,b){if(!(this instanceof r))return new r(a,b);var c=[],d=function(a){(a=dc(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=pa(c);b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};r.extend(this,this,Tb)};
m.Api=r;h.extend(r.prototype,{any:function(){return 0!==this.count()},concat:w.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new r(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new r(this.context,b)},flatten:function(){var a=
[];return new r(this.context,a.concat.apply(a,this.toArray()))},join:w.join,indexOf:w.indexOf||function(a,b){for(var c=b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,h,i,n,l=this.context,m,t,p=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var o=new r(l[g]);if("table"===b)f=c.call(o,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(o,l[g],this[g],g),f!==k&&e.push(f);else if("column"===b||"column-rows"===
b||"row"===b||"cell"===b){t=this[g];"column-rows"===b&&(m=Ba(l[g],p.opts));i=0;for(n=t.length;i<n;i++)f=t[i],f="cell"===b?c.call(o,l[g],f.row,f.column,g,i):c.call(o,l[g],f,g,i,m),f!==k&&e.push(f)}}return e.length||d?(a=new r(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=p.rows,b.cols=p.cols,b.opts=p.opts,a):this},lastIndexOf:w.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(w.map)b=w.map.call(this,a,this);else for(var c=
0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new r(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:w.pop,push:w.push,reduce:w.reduce||function(a,b){return hb(this,a,b,0,this.length,1)},reduceRight:w.reduceRight||function(a,b){return hb(this,a,b,this.length-1,-1,-1)},reverse:w.reverse,selector:null,shift:w.shift,sort:w.sort,splice:w.splice,toArray:function(){return w.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},
unique:function(){return new r(this.context,pa(this))},unshift:w.unshift});r.extend=function(a,b,c){if(c.length&&b&&(b instanceof r||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);r.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,r.extend(a,b[f.name],f.propExt)}};r.register=p=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<
d;c++)r.register(a[c],b);else for(var e=a.split("."),f=Tb,g,j,c=0,d=e.length;c<d;c++){g=(j=-1!==e[c].indexOf("()"))?e[c].replace("()",""):e[c];var i;a:{i=0;for(var n=f.length;i<n;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===d-1?i.val=b:f=j?i.methodExt:i.propExt}};r.registerPlural=s=function(a,b,c){r.register(a,c);r.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof r?a.length?h.isArray(a[0])?new r(a.context,
a[0]):a[0]:k:a})};p("tables()",function(a){var b;if(a){b=r;var c=this.context;if("number"===typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});p("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new r(b[0]):a});s("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});s("tables().body()","table().body()",
function(){return this.iterator("table",function(a){return a.nTBody},1)});s("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});s("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});s("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});p("draw()",function(a){return this.iterator("table",function(b){"page"===
a?O(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),T(b,!1===a))})});p("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});p("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,
serverSide:"ssp"===y(a)}});p("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){if(c){var d=new r(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))T(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();ra(a,[],function(c){na(a);for(var c=sa(a,c),d=0,e=c.length;d<e;d++)N(a,c[d]);T(a,b);C(a,!1)})}};p("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});
p("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});p("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});p("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});p("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Ub(c,
!1===b,a)})});var $a=function(a,b,c,d,e){var f=[],g,j,i,n,l,m;i=typeof b;if(!b||"string"===i||"function"===i||b.length===k)b=[b];i=0;for(n=b.length;i<n;i++){j=b[i]&&b[i].split?b[i].split(","):[b[i]];l=0;for(m=j.length;l<m;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&(f=f.concat(g))}a=v.selector[a];if(a.length){i=0;for(n=a.length;i<n;i++)f=a[i](d,e,f)}return pa(f)},ab=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",
page:"all"},a)},bb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ba=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===j?[]:W(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==d||"applied"==d)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===
h.inArray(a,g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<d;c++)"none"==j?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==j||0<=e&&"applied"==j)&&f.push(c))}return f};p("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var e=b;return $a("row",a,function(a){var b=Pb(a);if(b!==null&&!e)return[b];var j=Ba(c,e);if(b!==null&&h.inArray(b,j)!==-1)return[b];if(!a)return j;if(typeof a==="function")return h.map(j,function(b){var e=
c.aoData[b];return a(b,e._aData,e.nTr)?b:null});b=Sb(ha(c.aoData,j,"nTr"));if(a.nodeName){if(a._DT_RowIndex!==k)return[a._DT_RowIndex];if(a._DT_CellIndex)return[a._DT_CellIndex.row];b=h(a).closest("*[data-dt-row]");return b.length?[b.data("dt-row")]:[]}if(typeof a==="string"&&a.charAt(0)==="#"){j=c.aIds[a.replace(/^#/,"")];if(j!==k)return[j.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});p("rows().nodes()",function(){return this.iterator("row",
function(a,b){return a.aoData[b].nTr||k},1)});p("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ha(a.aoData,b,"_aData")},1)});s("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});s("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ca(b,c,a)})});s("rows().indexes()","row().index()",function(){return this.iterator("row",
function(a,b){return b},1)});s("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new r(c,b)});s("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,h,i,n,l;e.splice(c,1);g=0;for(h=e.length;g<h;g++)if(i=e[g],l=i.anCells,null!==i.nTr&&(i.nTr._DT_RowIndex=g),null!==l){i=0;for(n=
l.length;i<n;i++)l[i]._DT_CellIndex.row=g}oa(b.aiDisplayMaster,c);oa(b.aiDisplay,c);oa(a[d],c,!1);Sa(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});p("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(N(b,c));return h},1),c=this.rows(-1);c.pop();h.merge(c,b);
return c});p("row()",function(a,b){return bb(this.rows(a,b))});p("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});p("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});p("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?
ma(b,a)[0]:N(b,a)});return this.row(b[0])});var cb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Vb=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new r(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<G(g,"_details").length&&(f.on("draw.dt.DT_details",
function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&cb(f,c)}))}}};p("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?
c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)cb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=aa(d),e.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});
p(["row().child.show()","row().child().show()"],function(){Vb(this,!0);return this});p(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});p(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});p("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var ec=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));
return c};p("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,j=G(g,"sName"),i=G(g,"nTh");return $a("column",e,function(a){var b=Pb(a);if(a==="")return W(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Ba(c,f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(ec):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],
10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[Z(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});s("columns().header()",
"column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});s("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});s("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});s("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});s("columns().cache()","column().cache()",
function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ha(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});s("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ha(a.aoData,e,"anCells",b)},1)});s("columns().visible()","column().visible()",function(a,b){var c=this.iterator("column",function(b,c){if(a===k)return b.aoColumns[c].bVisible;var f=b.aoColumns,g=f[c],j=b.aoData,i,n,l;if(a!==k&&g.bVisible!==a){if(a){var m=
h.inArray(!0,G(f,"bVisible"),c+1);i=0;for(n=j.length;i<n;i++)l=j[i].nTr,f=j[i].anCells,l&&l.insertBefore(f[c],f[m]||null)}else h(G(b.aoData,"anCells",c)).detach();g.bVisible=a;ea(b,b.aoHeader);ea(b,b.aoFooter);wa(b)}});a!==k&&(this.iterator("column",function(c,e){u(c,null,"column-visibility",[c,e,a,b])}),(b===k||b)&&this.columns.adjust());return c});s("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});p("columns.adjust()",
function(){return this.iterator("table",function(a){Y(a)},1)});p("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return Z(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});p("column()",function(a,b){return bb(this.columns(a,b))});p("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=ab(c),f=
b.aoData,g=Ba(b,e),j=Sb(ha(f,g,"anCells")),i=h([].concat.apply([],j)),l,n=b.aoColumns.length,m,p,r,u,v,s;return $a("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){m=[];p=0;for(r=g.length;p<r;p++){l=g[p];for(u=0;u<n;u++){v={row:l,column:u};if(c){s=f[l];a(v,B(b,l,u),s.anCells?s.anCells[u]:null)&&m.push(v)}else m.push(v)}}return m}if(h.isPlainObject(a))return[a];c=i.filter(a).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length||
!a.nodeName)return c;s=h(a).closest("*[data-dt-row]");return s.length?[{row:s.data("dt-row"),column:s.data("dt-column")}]:[]},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,j,i,n,l=this.iterator("table",function(a,b){f=[];g=0;for(j=e[b].length;g<j;g++){i=0;for(n=d[b].length;i<n;i++)f.push({row:e[b][g],column:d[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});s("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&
a.anCells?a.anCells[c]:k},1)});p("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});s("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});s("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});s("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,
b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});s("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ca(b,c,a,d)})});p("cell()",function(a,b,c){return bb(this.cells(a,b,c))});p("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;jb(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});p("order()",function(a,b){var c=this.context;if(a===k)return 0!==
c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:a.length&&!h.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});p("order.listener()",function(a,b,c){return this.iterator("table",function(d){Ma(d,a,b,c)})});p("order.fixed()",function(a){if(!a){var b=this.context,b=b.length?b[0].aaSortingFixed:k;return h.isArray(b)?{pre:b}:b}return this.iterator("table",function(b){b.aaSortingFixed=h.extend(!0,{},a)})});p(["columns().order()",
"column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});p("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&fa(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});s("columns().search()","column().search()",function(a,
b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),fa(e,e.oPreviousSearch,1))})});p("state()",function(){return this.context.length?this.context[0].oSavedState:null});p("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});p("state.loaded()",function(){return this.context.length?
this.context[0].oLoadedState:null});p("state.save()",function(){return this.iterator("table",function(a){wa(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?h("table",e.nScrollFoot)[0]:
null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new r(c):c};m.camelToHungarian=K;p("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){p(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||
(a[0]+=".dt");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});p("clear()",function(){return this.iterator("table",function(a){na(a)})});p("settings()",function(){return new r(this.context,this.context)});p("init()",function(){var a=this.context;return a.length?a[0].oInit:null});p("data()",function(){return this.iterator("table",function(a){return G(a.aoData,"_aData")}).flatten()});p("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,
d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;u(b,"aoDestroyCallback","destroy",[b]);a||(new r(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(D).unbind(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));b.aaSorting=[];b.aaSortingFixed=[];va(b);h(l).removeClass(b.asStripeClasses.join(" "));
h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(h("th span."+d.sSortIcon+", td span."+d.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+d.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%
p])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){p(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,n){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,n)})})});p("i18n()",function(a,b,c){var d=this.context[0],a=Q(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.12";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,
sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,
sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,
fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===
a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",
sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",
renderer:null,rowId:"DT_RowId"};X(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};X(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,
bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],
aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,
fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=
this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=v={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},
header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(v,{afnFiltering:v.search,aTypes:v.type.detect,ofnSearch:v.type.search,oSort:v.type.order,afnSortData:v.order,aoFeatures:v.feature,oApi:v.internal,oStdClasses:v.classes,oPagination:v.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",
sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",
sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Ca="",Ca="",H=Ca+"ui-state-default",ia=Ca+"css_right ui-icon ui-icon-",Xb=Ca+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,
m.ext.classes,{sPageButton:"fg-button ui-button "+H,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:H+" sorting_asc",sSortDesc:H+" sorting_desc",sSortable:H+" sorting",sSortableAsc:H+" sorting_asc_disabled",sSortableDesc:H+" sorting_desc_disabled",sSortableNone:H+" sorting_disabled",sSortJUIAsc:ia+"triangle-1-n",sSortJUIDesc:ia+"triangle-1-s",sSortJUI:ia+"carat-2-n-s",
sSortJUIAscAllowed:ia+"carat-1-n",sSortJUIDescAllowed:ia+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+H,sScrollFoot:"dataTables_scrollFoot "+H,sHeaderTH:H,sFooterTH:H,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ya(a,
b)]},simple_numbers:function(a,b){return["previous",ya(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ya(a,b),"next","last"]},_numbers:ya,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},k,l,m=0,p=function(b,d){var o,r,u,s,v=function(b){Ta(a,b.data.action,true)};o=0;for(r=d.length;o<r;o++){s=d[o];if(h.isArray(s)){u=h("<"+(s.DT_el||"div")+"/>").appendTo(b);p(u,s)}else{k=null;
l="";switch(s){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":k=j.sFirst;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":k=j.sPrevious;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":k=j.sNext;l=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":k=j.sLast;l=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:k=s+1;l=e===s?g.sPageButtonActive:""}if(k!==null){u=h("<a>",{"class":g.sPageButton+" "+l,"aria-controls":a.sTableId,"aria-label":i[s],
"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(k).appendTo(b);Wa(u,{action:s},v);m++}}}},r;try{r=h(b).find(I.activeElement).data("dt-idx")}catch(o){}p(h(b).empty(),d);r&&h(b).find("[data-dt-idx="+r+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||M(a)?"date":
null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return M(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return M(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Aa,""):""},string:function(a){return M(a)?a:"string"===typeof a?a.replace(Ob,
" "):a}});var za=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(v.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return M(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return M(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,
b){return a<b?1:a>b?-1:0}});db("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e,
f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Yb=function(a){return"string"===typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):a};m.render={number:function(a,
b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Yb(f);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Yb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:lb,_fnAjaxParameters:ub,_fnAjaxUpdateDraw:vb,_fnAjaxDataSrc:sa,_fnAddColumn:Ea,_fnColumnOptions:ja,
_fnAdjustColumnSizing:Y,_fnVisibleToColumnIndex:Z,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:la,_fnColumnTypes:Ga,_fnApplyColumnDefs:ib,_fnHungarianMap:X,_fnCamelToHungarian:K,_fnLanguageCompat:Da,_fnBrowserDetect:gb,_fnAddData:N,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:jb,_fnSplitObjNotation:Ja,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:R,
_fnGetDataMaster:Ka,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:Ia,_fnCreateTr:Ha,_fnBuildHead:kb,_fnDrawHead:ea,_fnDraw:O,_fnReDraw:T,_fnAddOptionsHtml:nb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:pb,_fnFilterComplete:fa,_fnFilterCustom:yb,_fnFilterColumn:xb,_fnFilter:wb,_fnFilterCreateSearch:Pa,_fnEscapeRegex:Qa,_fnFilterData:zb,_fnFeatureHtmlInfo:sb,_fnUpdateInfo:Cb,_fnInfoMacros:Db,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:ob,
_fnFeatureHtmlPaginate:tb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:qb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:rb,_fnScrollDraw:ka,_fnApplyToChildren:J,_fnCalculateColumnWidths:Fa,_fnThrottle:Oa,_fnConvertToWidth:Fb,_fnGetWidestNode:Gb,_fnGetMaxLenString:Hb,_fnStringToCss:x,_fnSortFlatten:V,_fnSort:mb,_fnSortAria:Jb,_fnSortListener:Va,_fnSortAttachListener:Ma,_fnSortingClasses:va,_fnSortData:Ib,_fnSaveState:wa,_fnLoadState:Kb,_fnSettingsFromNode:xa,_fnLog:L,_fnMap:E,_fnBindAction:Wa,_fnCallbackReg:z,
_fnCallbackFire:u,_fnLengthOverflow:Sa,_fnRenderer:Na,_fnDataSource:y,_fnRowAttributes:La,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable});

View File

@@ -0,0 +1,26 @@
/*!
Responsive 2.1.0
2014-2016 SpryMedia Ltd - datatables.net/license
*/
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return c(l,window,document)}):"object"===typeof exports?module.exports=function(l,k){l||(l=window);if(!k||!k.fn.dataTable)k=require("datatables.net")(l,k).$;return c(k,l,l.document)}:c(jQuery,window,document)})(function(c,l,k,p){var m=c.fn.dataTable,j=function(a,b){if(!m.versionCheck||!m.versionCheck("1.10.3"))throw"DataTables Responsive requires DataTables 1.10.3 or newer";this.s={dt:new m.Api(a),columns:[],
current:[]};this.s.dt.settings()[0].responsive||(b&&"string"===typeof b.details?b.details={type:b.details}:b&&!1===b.details?b.details={type:!1}:b&&!0===b.details&&(b.details={type:"inline"}),this.c=c.extend(!0,{},j.defaults,m.defaults.responsive,b),a.responsive=this,this._constructor())};c.extend(j.prototype,{_constructor:function(){var a=this,b=this.s.dt,d=b.settings()[0],e=c(l).width();b.settings()[0]._responsive=this;c(l).on("resize.dtr orientationchange.dtr",m.util.throttle(function(){var b=
c(l).width();b!==e&&(a._resize(),e=b)}));d.oApi._fnCallbackReg(d,"aoRowCreatedCallback",function(e){-1!==c.inArray(!1,a.s.current)&&c("td, th",e).each(function(e){e=b.column.index("toData",e);!1===a.s.current[e]&&c(this).css("display","none")})});b.on("destroy.dtr",function(){b.off(".dtr");c(b.table().body()).off(".dtr");c(l).off("resize.dtr orientationchange.dtr");c.each(a.s.current,function(b,e){!1===e&&a._setColumnVis(b,!0)})});this.c.breakpoints.sort(function(a,b){return a.width<b.width?1:a.width>
b.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!==d.type&&(a._detailsInit(),b.on("column-visibility.dtr",function(){a._classLogic();a._resizeAuto();a._resize()}),b.on("draw.dtr",function(){a._redrawChildren()}),c(b.table().node()).addClass("dtr-"+d.type));b.on("column-reorder.dtr",function(){a._classLogic();a._resizeAuto();a._resize()});b.on("column-sizing.dtr",function(){a._resizeAuto();a._resize()});b.on("init.dtr",function(){a._resizeAuto();a._resize();c.inArray(false,
a.s.current)&&b.columns.adjust()});this._resize()},_columnsVisiblity:function(a){var b=this.s.dt,d=this.s.columns,e,f,g=d.map(function(a,b){return{columnIdx:b,priority:a.priority}}).sort(function(a,b){return a.priority!==b.priority?a.priority-b.priority:a.columnIdx-b.columnIdx}),h=c.map(d,function(b){return b.auto&&null===b.minWidth?!1:!0===b.auto?"-":-1!==c.inArray(a,b.includeIn)}),n=0;e=0;for(f=h.length;e<f;e++)!0===h[e]&&(n+=d[e].minWidth);e=b.settings()[0].oScroll;e=e.sY||e.sX?e.iBarWidth:0;b=
b.table().container().offsetWidth-e-n;e=0;for(f=h.length;e<f;e++)d[e].control&&(b-=d[e].minWidth);n=!1;e=0;for(f=g.length;e<f;e++){var i=g[e].columnIdx;"-"===h[i]&&(!d[i].control&&d[i].minWidth)&&(n||0>b-d[i].minWidth?(n=!0,h[i]=!1):h[i]=!0,b-=d[i].minWidth)}g=!1;e=0;for(f=d.length;e<f;e++)if(!d[e].control&&!d[e].never&&!h[e]){g=!0;break}e=0;for(f=d.length;e<f;e++)d[e].control&&(h[e]=g);-1===c.inArray(!0,h)&&(h[0]=!0);return h},_classLogic:function(){var a=this,b=this.c.breakpoints,d=this.s.dt,e=
d.columns().eq(0).map(function(a){var b=this.column(a),e=b.header().className,a=d.settings()[0].aoColumns[a].responsivePriority;a===p&&(b=c(b.header()).data("priority"),a=b!==p?1*b:1E4);return{className:e,includeIn:[],auto:!1,control:!1,never:e.match(/\bnever\b/)?!0:!1,priority:a}}),f=function(a,b){var d=e[a].includeIn;-1===c.inArray(b,d)&&d.push(b)},g=function(c,d,i,g){if(i)if("max-"===i){g=a._find(d).width;d=0;for(i=b.length;d<i;d++)b[d].width<=g&&f(c,b[d].name)}else if("min-"===i){g=a._find(d).width;
d=0;for(i=b.length;d<i;d++)b[d].width>=g&&f(c,b[d].name)}else{if("not-"===i){d=0;for(i=b.length;d<i;d++)-1===b[d].name.indexOf(g)&&f(c,b[d].name)}}else e[c].includeIn.push(d)};e.each(function(a,e){for(var d=a.className.split(" "),f=!1,j=0,l=d.length;j<l;j++){var k=c.trim(d[j]);if("all"===k){f=!0;a.includeIn=c.map(b,function(a){return a.name});return}if("none"===k||a.never){f=!0;return}if("control"===k){f=!0;a.control=!0;return}c.each(b,function(a,b){var d=b.name.split("-"),c=k.match(RegExp("(min\\-|max\\-|not\\-)?("+
d[0]+")(\\-[_a-zA-Z0-9])?"));c&&(f=!0,c[2]===d[0]&&c[3]==="-"+d[1]?g(e,b.name,c[1],c[2]+c[3]):c[2]===d[0]&&!c[3]&&g(e,b.name,c[1],c[2]))})}f||(a.auto=!0)});this.s.columns=e},_detailsDisplay:function(a,b){var d=this,e=this.s.dt,f=this.c.details;if(f&&!1!==f.type){var g=f.display(a,b,function(){return f.renderer(e,a[0],d._detailsObj(a[0]))});(!0===g||!1===g)&&c(e.table().node()).triggerHandler("responsive-display.dt",[e,a,g,b])}},_detailsInit:function(){var a=this,b=this.s.dt,d=this.c.details;"inline"===
d.type&&(d.target="td:first-child, th:first-child");b.on("draw.dtr",function(){a._tabIndexes()});a._tabIndexes();c(b.table().body()).on("keyup.dtr","td, th",function(a){a.keyCode===13&&c(this).data("dtr-keyboard")&&c(this).click()});var e=d.target;c(b.table().body()).on("click.dtr mousedown.dtr mouseup.dtr","string"===typeof e?e:"td, th",function(d){if(c(b.table().node()).hasClass("collapsed")&&b.row(c(this).closest("tr")).length){if(typeof e==="number"){var g=e<0?b.columns().eq(0).length+e:e;if(b.cell(this).index().column!==
g)return}g=b.row(c(this).closest("tr"));d.type==="click"?a._detailsDisplay(g,false):d.type==="mousedown"?c(this).css("outline","none"):d.type==="mouseup"&&c(this).blur().css("outline","")}})},_detailsObj:function(a){var b=this,d=this.s.dt;return c.map(this.s.columns,function(e,c){if(!e.never&&!e.control)return{title:d.settings()[0].aoColumns[c].sTitle,data:d.cell(a,c).render(b.c.orthogonal),hidden:d.column(c).visible()&&!b.s.current[c],columnIndex:c,rowIndex:a}})},_find:function(a){for(var b=this.c.breakpoints,
d=0,c=b.length;d<c;d++)if(b[d].name===a)return b[d]},_redrawChildren:function(){var a=this,b=this.s.dt;b.rows({page:"current"}).iterator("row",function(c,e){b.row(e);a._detailsDisplay(b.row(e),!0)})},_resize:function(){var a=this,b=this.s.dt,d=c(l).width(),e=this.c.breakpoints,f=e[0].name,g=this.s.columns,h,j=this.s.current.slice();for(h=e.length-1;0<=h;h--)if(d<=e[h].width){f=e[h].name;break}var i=this._columnsVisiblity(f);this.s.current=i;e=!1;h=0;for(d=g.length;h<d;h++)if(!1===i[h]&&!g[h].never&&
!g[h].control){e=!0;break}c(b.table().node()).toggleClass("collapsed",e);var k=!1;b.columns().eq(0).each(function(b,c){i[c]!==j[c]&&(k=!0,a._setColumnVis(b,i[c]))});k&&(this._redrawChildren(),c(b.table().node()).trigger("responsive-resize.dt",[b,this.s.current]))},_resizeAuto:function(){var a=this.s.dt,b=this.s.columns;if(this.c.auto&&-1!==c.inArray(!0,c.map(b,function(a){return a.auto}))){a.table().node();var d=a.table().node().cloneNode(!1),e=c(a.table().header().cloneNode(!1)).appendTo(d),f=c(a.table().body()).clone(!1,
!1).empty().appendTo(d),g=a.columns().header().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");c(f).append(c(a.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display","");if(f=a.table().footer()){var f=c(f.cloneNode(!1)).appendTo(d),h=a.columns().footer().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");c("<tr/>").append(h).appendTo(f)}c("<tr/>").append(g).appendTo(e);"inline"===this.c.details.type&&
c(d).addClass("dtr-inline collapsed");c(d).find("[name]").removeAttr("name");d=c("<div/>").css({width:1,height:1,overflow:"hidden"}).append(d);d.insertBefore(a.table().node());g.each(function(c){c=a.column.index("fromVisible",c);b[c].minWidth=this.offsetWidth||0});d.remove()}},_setColumnVis:function(a,b){var d=this.s.dt,e=b?"":"none";c(d.column(a).header()).css("display",e);c(d.column(a).footer()).css("display",e);d.column(a).nodes().to$().css("display",e)},_tabIndexes:function(){var a=this.s.dt,
b=a.cells({page:"current"}).nodes().to$(),d=a.settings()[0],e=this.c.details.target;b.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");c("number"===typeof e?":eq("+e+")":e,a.rows({page:"current"}).nodes()).attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1)}});j.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];j.display={childRow:function(a,b,d){if(b){if(c(a.node()).hasClass("parent"))return a.child(d(),
"child").show(),!0}else{if(a.child.isShown())return a.child(!1),c(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();c(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,b,d){if(!b&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),c(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();c(a.node()).addClass("parent");return!0},modal:function(a){return function(b,d,e){if(d)c("div.dtr-modal-content").empty().append(e());else{var f=function(){g.remove();
c(k).off("keypress.dtr")},g=c('<div class="dtr-modal"/>').append(c('<div class="dtr-modal-display"/>').append(c('<div class="dtr-modal-content"/>').append(e())).append(c('<div class="dtr-modal-close">&times;</div>').click(function(){f()}))).append(c('<div class="dtr-modal-background"/>').click(function(){f()})).appendTo("body");c(k).on("keyup.dtr",function(a){27===a.keyCode&&(a.stopPropagation(),f())})}a&&a.header&&c("div.dtr-modal-content").prepend("<h2>"+a.header(b)+"</h2>")}}};j.renderer={listHidden:function(){return function(a,
b,d){return(a=c.map(d,function(a){return a.hidden?'<li data-dtr-index="'+a.columnIndex+'" data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><span class="dtr-title">'+a.title+'</span> <span class="dtr-data">'+a.data+"</span></li>":""}).join(""))?c('<ul data-dtr-index="'+b+'"/>').append(a):!1}},tableAll:function(a){a=c.extend({tableClass:""},a);return function(b,d,e){b=c.map(e,function(a){return'<tr data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><td>'+a.title+":</td> <td>"+
a.data+"</td></tr>"}).join("");return c('<table class="'+a.tableClass+'" width="100%"/>').append(b)}}};j.defaults={breakpoints:j.breakpoints,auto:!0,details:{display:j.display.childRow,renderer:j.renderer.listHidden(),target:0,type:"inline"},orthogonal:"display"};var o=c.fn.dataTable.Api;o.register("responsive()",function(){return this});o.register("responsive.index()",function(a){a=c(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});o.register("responsive.rebuild()",function(){return this.iterator("table",
function(a){a._responsive&&a._responsive._classLogic()})});o.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(),a._responsive._resize())})});o.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==c.inArray(!1,a._responsive.s.current):!1});j.version="2.1.0";c.fn.dataTable.Responsive=j;c.fn.DataTable.Responsive=j;c(k).on("preInit.dt.dtr",function(a,b){if("dt"===a.namespace&&(c(b.nTable).hasClass("responsive")||
c(b.nTable).hasClass("dt-responsive")||b.oInit.responsive||m.defaults.responsive)){var d=b.oInit.responsive;!1!==d&&new j(b,c.isPlainObject(d)?d:{})}});return j});

View File

@@ -0,0 +1,26 @@
/*!
Select for DataTables 1.2.0
2015-2016 SpryMedia Ltd - datatables.net/license/mit
*/
(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(i){return e(i,window,document)}):"object"===typeof exports?module.exports=function(i,l){i||(i=window);if(!l||!l.fn.dataTable)l=require("datatables.net")(i,l).$;return e(l,i,i.document)}:e(jQuery,window,document)})(function(e,i,l,h){function t(b,a,c){var d;d=function(c,a){if(c>a)var d=a,a=c,c=d;var f=!1;return b.columns(":visible").indexes().filter(function(b){b===c&&(f=!0);return b===a?(f=!1,!0):f})};var f=
function(c,a){var d=b.rows({search:"applied"}).indexes();if(d.indexOf(c)>d.indexOf(a))var f=a,a=c,c=f;var e=!1;return d.filter(function(b){b===c&&(e=!0);return b===a?(e=!1,!0):e})};!b.cells({selected:!0}).any()&&!c?(d=d(0,a.column),c=f(0,a.row)):(d=d(c.column,a.column),c=f(c.row,a.row));c=b.cells(c,d).flatten();b.cells(a,{selected:!0}).any()?b.cells(c).deselect():b.cells(c).select()}function r(b){var a=b.settings()[0]._select.selector;e(b.table().body()).off("mousedown.dtSelect",a).off("mouseup.dtSelect",
a).off("click.dtSelect",a);e("body").off("click.dtSelect")}function v(b){var a=e(b.table().body()),c=b.settings()[0],d=c._select.selector;a.on("mousedown.dtSelect",d,function(c){if(c.shiftKey||c.metaKey||c.ctrlKey)a.css("-moz-user-select","none").one("selectstart.dtSelect",d,function(){return!1})}).on("mouseup.dtSelect",d,function(){a.css("-moz-user-select","")}).on("click.dtSelect",d,function(c){var a=b.select.items();if(!i.getSelection||!i.getSelection().toString()){var d=b.settings()[0];if(e(c.target).closest("div.dataTables_wrapper")[0]==
b.table().container()){var g=b.cell(e(c.target).closest("td, th"));if(g.any()){var h=e.Event("user-select.dt");k(b,h,[a,g,c]);h.isDefaultPrevented()||(h=g.index(),"row"===a?(a=h.row,s(c,b,d,"row",a)):"column"===a?(a=g.index().column,s(c,b,d,"column",a)):"cell"===a&&(a=g.index(),s(c,b,d,"cell",a)),d._select_lastCell=h)}}}});e("body").on("click.dtSelect",function(a){c._select.blurable&&!e(a.target).parents().filter(b.table().container()).length&&(e(a.target).parents("div.DTE").length||p(c,!0))})}function k(b,
a,c,d){if(!d||b.flatten().length)"string"===typeof a&&(a+=".dt"),c.unshift(b),e(b.table().node()).triggerHandler(a,c)}function w(b){var a=b.settings()[0];if(a._select.info&&a.aanFeatures.i){var c=e('<span class="select-info"/>'),d=function(a,d){c.append(e('<span class="select-item"/>').append(b.i18n("select."+a+"s",{_:"%d "+a+"s selected","0":"",1:"1 "+a+" selected"},d)))};d("row",b.rows({selected:!0}).flatten().length);d("column",b.columns({selected:!0}).flatten().length);d("cell",b.cells({selected:!0}).flatten().length);
e.each(a.aanFeatures.i,function(a,b){var b=e(b),d=b.children("span.select-info");d.length&&d.remove();""!==c.text()&&b.append(c)})}}function x(b,a,c,d){var f=b[a+"s"]({search:"applied"}).indexes(),d=e.inArray(d,f),m=e.inArray(c,f);if(!b[a+"s"]({selected:!0}).any()&&-1===d)f.splice(e.inArray(c,f)+1,f.length);else{if(d>m)var j=m,m=d,d=j;f.splice(m+1,f.length);f.splice(0,d)}b[a](c,{selected:!0}).any()?(f.splice(e.inArray(c,f),1),b[a+"s"](f).deselect()):b[a+"s"](f).select()}function p(b,a){if(a||"single"===
b._select.style){var c=new g.Api(b);c.rows({selected:!0}).deselect();c.columns({selected:!0}).deselect();c.cells({selected:!0}).deselect()}}function s(b,a,c,d,f){var e=a.select.style(),j=a[d](f,{selected:!0}).any();"os"===e?b.ctrlKey||b.metaKey?a[d](f).select(!j):b.shiftKey?"cell"===d?t(a,f,c._select_lastCell||null):x(a,d,f,c._select_lastCell?c._select_lastCell[d]:null):(b=a[d+"s"]({selected:!0}),j&&1===b.flatten().length?a[d](f).deselect():(b.deselect(),a[d](f).select())):"multi+shift"==e?b.shiftKey?
"cell"===d?t(a,f,c._select_lastCell||null):x(a,d,f,c._select_lastCell?c._select_lastCell[d]:null):a[d](f).select(!j):a[d](f).select(!j)}function q(b,a){return function(c){return c.i18n("buttons."+b,a)}}var g=e.fn.dataTable;g.select={};g.select.version="1.2.0";g.select.init=function(b){var a=b.settings()[0],c=a.oInit.select,d=g.defaults.select,c=c===h?d:c,d="row",f="api",m=!1,j=!0,u="td, th",i="selected";a._select={};if(!0===c)f="os";else if("string"===typeof c)f=c;else if(e.isPlainObject(c)&&(c.blurable!==
h&&(m=c.blurable),c.info!==h&&(j=c.info),c.items!==h&&(d=c.items),c.style!==h&&(f=c.style),c.selector!==h&&(u=c.selector),c.className!==h))i=c.className;b.select.selector(u);b.select.items(d);b.select.style(f);b.select.blurable(m);b.select.info(j);a._select.className=i;e.fn.dataTable.ext.order["select-checkbox"]=function(a,c){return this.api().column(c,{order:"index"}).nodes().map(function(c){return"row"===a._select.items?e(c).parent().hasClass(a._select.className):"cell"===a._select.items?e(c).hasClass(a._select.className):
!1})};e(b.table().node()).hasClass("selectable")&&b.select.style("os")};e.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(b,a){g.ext.selector[a.type].push(function(c,b,f){var b=b.selected,e,j=[];if(b===h)return f;for(var g=0,i=f.length;g<i;g++)e=c[a.prop][f[g]],(!0===b&&!0===e._select_selected||!1===b&&!e._select_selected)&&j.push(f[g]);return j})});g.ext.selector.cell.push(function(b,a,c){var a=a.selected,d,f=[];if(a===h)return c;for(var e=0,g=c.length;e<g;e++)d=b.aoData[c[e].row],
(!0===a&&d._selected_cells&&!0===d._selected_cells[c[e].column]||!1===a&&(!d._selected_cells||!d._selected_cells[c[e].column]))&&f.push(c[e]);return f});var n=g.Api.register,o=g.Api.registerPlural;n("select()",function(){return this.iterator("table",function(b){g.select.init(new g.Api(b))})});n("select.blurable()",function(b){return b===h?this.context[0]._select.blurable:this.iterator("table",function(a){a._select.blurable=b})});n("select.info()",function(b){return w===h?this.context[0]._select.info:
this.iterator("table",function(a){a._select.info=b})});n("select.items()",function(b){return b===h?this.context[0]._select.items:this.iterator("table",function(a){a._select.items=b;k(new g.Api(a),"selectItems",[b])})});n("select.style()",function(b){return b===h?this.context[0]._select.style:this.iterator("table",function(a){a._select.style=b;if(!a._select_init){var c=new g.Api(a);a.aoRowCreatedCallback.push({fn:function(c,b,d){b=a.aoData[d];b._select_selected&&e(c).addClass(a._select.className);
c=0;for(d=a.aoColumns.length;c<d;c++)(a.aoColumns[c]._select_selected||b._selected_cells&&b._selected_cells[c])&&e(b.anCells[c]).addClass(a._select.className)},sName:"select-deferRender"});c.on("preXhr.dt.dtSelect",function(){var a=c.rows({selected:!0}).ids(!0).filter(function(c){return c!==h}),b=c.cells({selected:!0}).eq(0).map(function(a){var b=c.row(a.row).id(!0);return b?{row:b,column:a.column}:h}).filter(function(c){return c!==h});c.one("draw.dt.dtSelect",function(){c.rows(a).select();b.any()&&
b.each(function(a){c.cells(a.row,a.column).select()})})});c.on("draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt",function(){w(c)});c.on("destroy.dtSelect",function(){r(c);c.off(".dtSelect")})}var d=new g.Api(a);r(d);"api"!==b&&v(d);k(new g.Api(a),"selectStyle",[b])})});n("select.selector()",function(b){return b===h?this.context[0]._select.selector:this.iterator("table",function(a){r(new g.Api(a));a._select.selector=b;"api"!==a._select.style&&v(new g.Api(a))})});o("rows().select()",
"row().select()",function(b){var a=this;if(!1===b)return this.deselect();this.iterator("row",function(c,a){p(c);c.aoData[a]._select_selected=!0;e(c.aoData[a].nTr).addClass(c._select.className)});this.iterator("table",function(c,b){k(a,"select",["row",a[b]],!0)});return this});o("columns().select()","column().select()",function(b){var a=this;if(!1===b)return this.deselect();this.iterator("column",function(a,b){p(a);a.aoColumns[b]._select_selected=!0;var f=(new g.Api(a)).column(b);e(f.header()).addClass(a._select.className);
e(f.footer()).addClass(a._select.className);f.nodes().to$().addClass(a._select.className)});this.iterator("table",function(c,b){k(a,"select",["column",a[b]],!0)});return this});o("cells().select()","cell().select()",function(b){var a=this;if(!1===b)return this.deselect();this.iterator("cell",function(a,b,f){p(a);b=a.aoData[b];b._selected_cells===h&&(b._selected_cells=[]);b._selected_cells[f]=!0;b.anCells&&e(b.anCells[f]).addClass(a._select.className)});this.iterator("table",function(b,d){k(a,"select",
["cell",a[d]],!0)});return this});o("rows().deselect()","row().deselect()",function(){var b=this;this.iterator("row",function(a,b){a.aoData[b]._select_selected=!1;e(a.aoData[b].nTr).removeClass(a._select.className)});this.iterator("table",function(a,c){k(b,"deselect",["row",b[c]],!0)});return this});o("columns().deselect()","column().deselect()",function(){var b=this;this.iterator("column",function(a,b){a.aoColumns[b]._select_selected=!1;var d=new g.Api(a),f=d.column(b);e(f.header()).removeClass(a._select.className);
e(f.footer()).removeClass(a._select.className);d.cells(null,b).indexes().each(function(b){var c=a.aoData[b.row],d=c._selected_cells;c.anCells&&(!d||!d[b.column])&&e(c.anCells[b.column]).removeClass(a._select.className)})});this.iterator("table",function(a,c){k(b,"deselect",["column",b[c]],!0)});return this});o("cells().deselect()","cell().deselect()",function(){var b=this;this.iterator("cell",function(a,b,d){b=a.aoData[b];b._selected_cells[d]=!1;b.anCells&&!a.aoColumns[d]._select_selected&&e(b.anCells[d]).removeClass(a._select.className)});
this.iterator("table",function(a,c){k(b,"deselect",["cell",b[c]],!0)});return this});e.extend(g.ext.buttons,{selected:{text:q("selected","Selected"),className:"buttons-selected",init:function(b){var a=this;b.on("draw.dt.DT select.dt.DT deselect.dt.DT",function(){var b=a.rows({selected:!0}).any()||a.columns({selected:!0}).any()||a.cells({selected:!0}).any();a.enable(b)});this.disable()}},selectedSingle:{text:q("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(b){var a=
this;b.on("draw.dt.DT select.dt.DT deselect.dt.DT",function(){var c=b.rows({selected:!0}).flatten().length+b.columns({selected:!0}).flatten().length+b.cells({selected:!0}).flatten().length;a.enable(1===c)});this.disable()}},selectAll:{text:q("selectAll","Select all"),className:"buttons-select-all",action:function(){this[this.select.items()+"s"]().select()}},selectNone:{text:q("selectNone","Deselect all"),className:"buttons-select-none",action:function(){p(this.settings()[0],!0)},init:function(b){var a=
this;b.on("draw.dt.DT select.dt.DT deselect.dt.DT",function(){var c=b.rows({selected:!0}).flatten().length+b.columns({selected:!0}).flatten().length+b.cells({selected:!0}).flatten().length;a.enable(0<c)});this.disable()}}});e.each(["Row","Column","Cell"],function(b,a){var c=a.toLowerCase();g.ext.buttons["select"+a+"s"]={text:q("select"+a+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(a){var b=this;a.on("selectItems.dt.DT",function(a,d,
e){b.active(e===c)})}}});e(l).on("preInit.dt.dtSelect",function(b,a){"dt"===b.namespace&&g.select.init(new g.Api(a))});return g.select});

View File

@@ -1,184 +0,0 @@
/**
* DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
* DataTables 1.10 or newer.
*
* This file sets the defaults and adds options to DataTables to style its
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
* for further information.
*/
(function(window, document, undefined){
var factory = function( $, DataTable ) {
"use strict";
/* Set the defaults for DataTables initialisation */
$.extend( true, DataTable.defaults, {
dom:
"<'row'<'col-xs-6'l><'col-xs-6'f>r>" +
"<'row'<'col-xs-12't>>" +
"<'row'<'col-xs-6'i><'col-xs-6'p>>",
renderer: 'bootstrap'
} );
/* Default class modification */
$.extend( DataTable.ext.classes, {
sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
sFilterInput: "form-control input-sm",
sLengthSelect: "form-control input-sm"
} );
/* Bootstrap paging button renderer */
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
var api = new DataTable.Api( settings );
var classes = settings.oClasses;
var lang = settings.oLanguage.oPaginate;
var btnDisplay, btnClass;
var attach = function( container, buttons ) {
var i, ien, node, button;
var clickHandler = function ( e ) {
e.preventDefault();
if ( !$(e.currentTarget).hasClass('disabled') ) {
api.page( e.data.action ).draw( false );
}
};
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
button = buttons[i];
if ( $.isArray( button ) ) {
attach( container, button );
}
else {
btnDisplay = '';
btnClass = '';
switch ( button ) {
case 'ellipsis':
btnDisplay = '&hellip;';
btnClass = 'disabled';
break;
case 'first':
btnDisplay = lang.sFirst;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'previous':
btnDisplay = lang.sPrevious;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'next':
btnDisplay = lang.sNext;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
case 'last':
btnDisplay = lang.sLast;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
default:
btnDisplay = button + 1;
btnClass = page === button ?
'active' : '';
break;
}
if ( btnDisplay ) {
node = $('<li>', {
'class': classes.sPageButton+' '+btnClass,
'aria-controls': settings.sTableId,
'tabindex': settings.iTabIndex,
'id': idx === 0 && typeof button === 'string' ?
settings.sTableId +'_'+ button :
null
} )
.append( $('<a>', {
'href': '#'
} )
.html( btnDisplay )
)
.appendTo( container );
settings.oApi._fnBindAction(
node, {action: button}, clickHandler
);
}
}
}
};
attach(
$(host).empty().html('<ul class="pagination"/>').children('ul'),
buttons
);
};
/*
* TableTools Bootstrap compatibility
* Required TableTools 2.1+
*/
if ( DataTable.TableTools ) {
// Set the classes that TableTools uses to something suitable for Bootstrap
$.extend( true, DataTable.TableTools.classes, {
"container": "DTTT btn-group",
"buttons": {
"normal": "btn btn-default",
"disabled": "disabled"
},
"collection": {
"container": "DTTT_dropdown dropdown-menu",
"buttons": {
"normal": "",
"disabled": "disabled"
}
},
"print": {
"info": "DTTT_print_info"
},
"select": {
"row": "active"
}
} );
// Have the collection use a bootstrap compatible drop down
$.extend( true, DataTable.TableTools.DEFAULTS.oTags, {
"collection": {
"container": "ul",
"button": "li",
"liner": "a"
}
} );
}
}; // /factory
// Define as an AMD module if possible
if ( typeof define === 'function' && define.amd ) {
define( ['jquery', ''], factory );
}
else if ( typeof exports === 'object' ) {
// Node/CommonJS
factory( require('jquery'), require('datatables') );
}
else if ( jQuery ) {
// Otherwise simply initialise as normal, stopping multiple evaluation
factory( jQuery, jQuery.fn.dataTable );
}
})(window, document);

View File

@@ -1,873 +0,0 @@
/*! Responsive 1.0.6
* 2014-2015 SpryMedia Ltd - datatables.net/license
*/
/**
* @summary Responsive
* @description Responsive tables plug-in for DataTables
* @version 1.0.6
* @file dataTables.responsive.js
* @author SpryMedia Ltd (www.sprymedia.co.uk)
* @contact www.sprymedia.co.uk/contact
* @copyright Copyright 2014-2015 SpryMedia Ltd.
*
* This source file is free software, available under the following license:
* MIT license - http://datatables.net/license/mit
*
* This source file is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
*
* For details please refer to: http://www.datatables.net
*/
(function(window, document, undefined) {
var factory = function( $, DataTable ) {
"use strict";
/**
* Responsive is a plug-in for the DataTables library that makes use of
* DataTables' ability to change the visibility of columns, changing the
* visibility of columns so the displayed columns fit into the table container.
* The end result is that complex tables will be dynamically adjusted to fit
* into the viewport, be it on a desktop, tablet or mobile browser.
*
* Responsive for DataTables has two modes of operation, which can used
* individually or combined:
*
* * Class name based control - columns assigned class names that match the
* breakpoint logic can be shown / hidden as required for each breakpoint.
* * Automatic control - columns are automatically hidden when there is no
* room left to display them. Columns removed from the right.
*
* In additional to column visibility control, Responsive also has built into
* options to use DataTables' child row display to show / hide the information
* from the table that has been hidden. There are also two modes of operation
* for this child row display:
*
* * Inline - when the control element that the user can use to show / hide
* child rows is displayed inside the first column of the table.
* * Column - where a whole column is dedicated to be the show / hide control.
*
* Initialisation of Responsive is performed by:
*
* * Adding the class `responsive` or `dt-responsive` to the table. In this case
* Responsive will automatically be initialised with the default configuration
* options when the DataTable is created.
* * Using the `responsive` option in the DataTables configuration options. This
* can also be used to specify the configuration options, or simply set to
* `true` to use the defaults.
*
* @class
* @param {object} settings DataTables settings object for the host table
* @param {object} [opts] Configuration options
* @requires jQuery 1.7+
* @requires DataTables 1.10.1+
*
* @example
* $('#example').DataTable( {
* responsive: true
* } );
* } );
*/
var Responsive = function ( settings, opts ) {
// Sanity check that we are using DataTables 1.10 or newer
if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.1' ) ) {
throw 'DataTables Responsive requires DataTables 1.10.1 or newer';
}
this.s = {
dt: new DataTable.Api( settings ),
columns: []
};
// Check if responsive has already been initialised on this table
if ( this.s.dt.settings()[0].responsive ) {
return;
}
// details is an object, but for simplicity the user can give it as a string
if ( opts && typeof opts.details === 'string' ) {
opts.details = { type: opts.details };
}
this.c = $.extend( true, {}, Responsive.defaults, DataTable.defaults.responsive, opts );
settings.responsive = this;
this._constructor();
};
Responsive.prototype = {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Constructor
*/
/**
* Initialise the Responsive instance
*
* @private
*/
_constructor: function ()
{
var that = this;
var dt = this.s.dt;
dt.settings()[0]._responsive = this;
// Use DataTables' private throttle function to avoid processor thrashing
$(window).on( 'resize.dtr orientationchange.dtr', dt.settings()[0].oApi._fnThrottle( function () {
that._resize();
} ) );
// Destroy event handler
dt.on( 'destroy.dtr', function () {
$(window).off( 'resize.dtr orientationchange.dtr draw.dtr' );
} );
// Reorder the breakpoints array here in case they have been added out
// of order
this.c.breakpoints.sort( function (a, b) {
return a.width < b.width ? 1 :
a.width > b.width ? -1 : 0;
} );
// Determine which columns are already hidden, and should therefore
// remain hidden. todo - should this be done? See thread 22677
//
// this.s.alwaysHidden = dt.columns(':hidden').indexes();
this._classLogic();
this._resizeAuto();
// Details handler
var details = this.c.details;
if ( details.type ) {
that._detailsInit();
this._detailsVis();
dt.on( 'column-visibility.dtr', function () {
that._detailsVis();
} );
// Redraw the details box on each draw. This is used until
// DataTables implements a native `updated` event for rows
dt.on( 'draw.dtr', function () {
dt.rows( {page: 'current'} ).iterator( 'row', function ( settings, idx ) {
var row = dt.row( idx );
if ( row.child.isShown() ) {
var info = that.c.details.renderer( dt, idx );
row.child( info, 'child' ).show();
}
} );
} );
$(dt.table().node()).addClass( 'dtr-'+details.type );
}
// First pass - draw the table for the current viewport size
this._resize();
},
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Private methods
*/
/**
* Calculate the visibility for the columns in a table for a given
* breakpoint. The result is pre-determined based on the class logic if
* class names are used to control all columns, but the width of the table
* is also used if there are columns which are to be automatically shown
* and hidden.
*
* @param {string} breakpoint Breakpoint name to use for the calculation
* @return {array} Array of boolean values initiating the visibility of each
* column.
* @private
*/
_columnsVisiblity: function ( breakpoint )
{
var dt = this.s.dt;
var columns = this.s.columns;
var i, ien;
// Class logic - determine which columns are in this breakpoint based
// on the classes. If no class control (i.e. `auto`) then `-` is used
// to indicate this to the rest of the function
var display = $.map( columns, function ( col ) {
return col.auto && col.minWidth === null ?
false :
col.auto === true ?
'-' :
$.inArray( breakpoint, col.includeIn ) !== -1;
} );
// Auto column control - first pass: how much width is taken by the
// ones that must be included from the non-auto columns
var requiredWidth = 0;
for ( i=0, ien=display.length ; i<ien ; i++ ) {
if ( display[i] === true ) {
requiredWidth += columns[i].minWidth;
}
}
// Second pass, use up any remaining width for other columns. For
// scrolling tables we need to subtract the width of the scrollbar. It
// may not be requires which makes this sub-optimal, but it would
// require another full redraw to make complete use of those extra few
// pixels
var scrolling = dt.settings()[0].oScroll;
var bar = scrolling.sY || scrolling.sX ? scrolling.iBarWidth : 0;
var widthAvailable = dt.table().container().offsetWidth - bar;
var usedWidth = widthAvailable - requiredWidth;
// Control column needs to always be included. This makes it sub-
// optimal in terms of using the available with, but to stop layout
// thrashing or overflow. Also we need to account for the control column
// width first so we know how much width is available for the other
// columns, since the control column might not be the first one shown
for ( i=0, ien=display.length ; i<ien ; i++ ) {
if ( columns[i].control ) {
usedWidth -= columns[i].minWidth;
}
}
// Allow columns to be shown (counting from the left) until we run out
// of room
var empty = false;
for ( i=0, ien=display.length ; i<ien ; i++ ) {
if ( display[i] === '-' && ! columns[i].control ) {
// Once we've found a column that won't fit we don't let any
// others display either, or columns might disappear in the
// middle of the table
if ( empty || usedWidth - columns[i].minWidth < 0 ) {
empty = true;
display[i] = false;
}
else {
display[i] = true;
}
usedWidth -= columns[i].minWidth;
}
}
// Determine if the 'control' column should be shown (if there is one).
// This is the case when there is a hidden column (that is not the
// control column). The two loops look inefficient here, but they are
// trivial and will fly through. We need to know the outcome from the
// first , before the action in the second can be taken
var showControl = false;
for ( i=0, ien=columns.length ; i<ien ; i++ ) {
if ( ! columns[i].control && ! columns[i].never && ! display[i] ) {
showControl = true;
break;
}
}
for ( i=0, ien=columns.length ; i<ien ; i++ ) {
if ( columns[i].control ) {
display[i] = showControl;
}
}
// Finally we need to make sure that there is at least one column that
// is visible
if ( $.inArray( true, display ) === -1 ) {
display[0] = true;
}
return display;
},
/**
* Create the internal `columns` array with information about the columns
* for the table. This includes determining which breakpoints the column
* will appear in, based upon class names in the column, which makes up the
* vast majority of this method.
*
* @private
*/
_classLogic: function ()
{
var that = this;
var calc = {};
var breakpoints = this.c.breakpoints;
var columns = this.s.dt.columns().eq(0).map( function (i) {
var className = this.column(i).header().className;
return {
className: className,
includeIn: [],
auto: false,
control: false,
never: className.match(/\bnever\b/) ? true : false
};
} );
// Simply add a breakpoint to `includeIn` array, ensuring that there are
// no duplicates
var add = function ( colIdx, name ) {
var includeIn = columns[ colIdx ].includeIn;
if ( $.inArray( name, includeIn ) === -1 ) {
includeIn.push( name );
}
};
var column = function ( colIdx, name, operator, matched ) {
var size, i, ien;
if ( ! operator ) {
columns[ colIdx ].includeIn.push( name );
}
else if ( operator === 'max-' ) {
// Add this breakpoint and all smaller
size = that._find( name ).width;
for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
if ( breakpoints[i].width <= size ) {
add( colIdx, breakpoints[i].name );
}
}
}
else if ( operator === 'min-' ) {
// Add this breakpoint and all larger
size = that._find( name ).width;
for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
if ( breakpoints[i].width >= size ) {
add( colIdx, breakpoints[i].name );
}
}
}
else if ( operator === 'not-' ) {
// Add all but this breakpoint (xxx need extra information)
for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
if ( breakpoints[i].name.indexOf( matched ) === -1 ) {
add( colIdx, breakpoints[i].name );
}
}
}
};
// Loop over each column and determine if it has a responsive control
// class
columns.each( function ( col, i ) {
var classNames = col.className.split(' ');
var hasClass = false;
// Split the class name up so multiple rules can be applied if needed
for ( var k=0, ken=classNames.length ; k<ken ; k++ ) {
var className = $.trim( classNames[k] );
if ( className === 'all' ) {
// Include in all
hasClass = true;
col.includeIn = $.map( breakpoints, function (a) {
return a.name;
} );
return;
}
else if ( className === 'none' || className === 'never' ) {
// Include in none (default) and no auto
hasClass = true;
return;
}
else if ( className === 'control' ) {
// Special column that is only visible, when one of the other
// columns is hidden. This is used for the details control
hasClass = true;
col.control = true;
return;
}
$.each( breakpoints, function ( j, breakpoint ) {
// Does this column have a class that matches this breakpoint?
var brokenPoint = breakpoint.name.split('-');
var re = new RegExp( '(min\\-|max\\-|not\\-)?('+brokenPoint[0]+')(\\-[_a-zA-Z0-9])?' );
var match = className.match( re );
if ( match ) {
hasClass = true;
if ( match[2] === brokenPoint[0] && match[3] === '-'+brokenPoint[1] ) {
// Class name matches breakpoint name fully
column( i, breakpoint.name, match[1], match[2]+match[3] );
}
else if ( match[2] === brokenPoint[0] && ! match[3] ) {
// Class name matched primary breakpoint name with no qualifier
column( i, breakpoint.name, match[1], match[2] );
}
}
} );
}
// If there was no control class, then automatic sizing is used
if ( ! hasClass ) {
col.auto = true;
}
} );
this.s.columns = columns;
},
/**
* Initialisation for the details handler
*
* @private
*/
_detailsInit: function ()
{
var that = this;
var dt = this.s.dt;
var details = this.c.details;
// The inline type always uses the first child as the target
if ( details.type === 'inline' ) {
details.target = 'td:first-child';
}
// type.target can be a string jQuery selector or a column index
var target = details.target;
var selector = typeof target === 'string' ? target : 'td';
// Click handler to show / hide the details rows when they are available
$( dt.table().body() ).on( 'click', selector, function (e) {
// If the table is not collapsed (i.e. there is no hidden columns)
// then take no action
if ( ! $(dt.table().node()).hasClass('collapsed' ) ) {
return;
}
// Check that the row is actually a DataTable's controlled node
if ( ! dt.row( $(this).closest('tr') ).length ) {
return;
}
// For column index, we determine if we should act or not in the
// handler - otherwise it is already okay
if ( typeof target === 'number' ) {
var targetIdx = target < 0 ?
dt.columns().eq(0).length + target :
target;
if ( dt.cell( this ).index().column !== targetIdx ) {
return;
}
}
// $().closest() includes itself in its check
var row = dt.row( $(this).closest('tr') );
if ( row.child.isShown() ) {
row.child( false );
$( row.node() ).removeClass( 'parent' );
}
else {
var info = that.c.details.renderer( dt, row[0] );
row.child( info, 'child' ).show();
$( row.node() ).addClass( 'parent' );
}
} );
},
/**
* Update the child rows in the table whenever the column visibility changes
*
* @private
*/
_detailsVis: function ()
{
var that = this;
var dt = this.s.dt;
// Find how many columns are hidden
var hiddenColumns = dt.columns().indexes().filter( function ( idx ) {
var col = dt.column( idx );
if ( col.visible() ) {
return null;
}
// Only counts as hidden if it doesn't have the `never` class
return $( col.header() ).hasClass( 'never' ) ? null : idx;
} );
var haveHidden = true;
if ( hiddenColumns.length === 0 || ( hiddenColumns.length === 1 && this.s.columns[ hiddenColumns[0] ].control ) ) {
haveHidden = false;
}
if ( haveHidden ) {
// Show all existing child rows
dt.rows( { page: 'current' } ).eq(0).each( function (idx) {
var row = dt.row( idx );
if ( row.child() ) {
var info = that.c.details.renderer( dt, row[0] );
// The renderer can return false to have no child row
if ( info === false ) {
row.child.hide();
}
else {
row.child( info, 'child' ).show();
}
}
} );
}
else {
// Hide all existing child rows
dt.rows( { page: 'current' } ).eq(0).each( function (idx) {
dt.row( idx ).child.hide();
} );
}
},
/**
* Find a breakpoint object from a name
* @param {string} name Breakpoint name to find
* @return {object} Breakpoint description object
*/
_find: function ( name )
{
var breakpoints = this.c.breakpoints;
for ( var i=0, ien=breakpoints.length ; i<ien ; i++ ) {
if ( breakpoints[i].name === name ) {
return breakpoints[i];
}
}
},
/**
* Alter the table display for a resized viewport. This involves first
* determining what breakpoint the window currently is in, getting the
* column visibilities to apply and then setting them.
*
* @private
*/
_resize: function ()
{
var dt = this.s.dt;
var width = $(window).width();
var breakpoints = this.c.breakpoints;
var breakpoint = breakpoints[0].name;
var columns = this.s.columns;
var i, ien;
// Determine what breakpoint we are currently at
for ( i=breakpoints.length-1 ; i>=0 ; i-- ) {
if ( width <= breakpoints[i].width ) {
breakpoint = breakpoints[i].name;
break;
}
}
// Show the columns for that break point
var columnsVis = this._columnsVisiblity( breakpoint );
// Set the class before the column visibility is changed so event
// listeners know what the state is. Need to determine if there are
// any columns that are not visible but can be shown
var collapsedClass = false;
for ( i=0, ien=columns.length ; i<ien ; i++ ) {
if ( columnsVis[i] === false && ! columns[i].never ) {
collapsedClass = true;
break;
}
}
$( dt.table().node() ).toggleClass('collapsed', collapsedClass );
dt.columns().eq(0).each( function ( colIdx, i ) {
dt.column( colIdx ).visible( columnsVis[i] );
} );
},
/**
* Determine the width of each column in the table so the auto column hiding
* has that information to work with. This method is never going to be 100%
* perfect since column widths can change slightly per page, but without
* seriously compromising performance this is quite effective.
*
* @private
*/
_resizeAuto: function ()
{
var dt = this.s.dt;
var columns = this.s.columns;
// Are we allowed to do auto sizing?
if ( ! this.c.auto ) {
return;
}
// Are there any columns that actually need auto-sizing, or do they all
// have classes defined
if ( $.inArray( true, $.map( columns, function (c) { return c.auto; } ) ) === -1 ) {
return;
}
// Clone the table with the current data in it
var tableWidth = dt.table().node().offsetWidth;
var columnWidths = dt.columns;
var clonedTable = dt.table().node().cloneNode( false );
var clonedHeader = $( dt.table().header().cloneNode( false ) ).appendTo( clonedTable );
var clonedBody = $( dt.table().body().cloneNode( false ) ).appendTo( clonedTable );
$( dt.table().footer() ).clone( false ).appendTo( clonedTable );
// This is a bit slow, but we need to get a clone of each row that
// includes all columns. As such, try to do this as little as possible.
dt.rows( { page: 'current' } ).indexes().flatten().each( function ( idx ) {
var clone = dt.row( idx ).node().cloneNode( true );
if ( dt.columns( ':hidden' ).flatten().length ) {
$(clone).append( dt.cells( idx, ':hidden' ).nodes().to$().clone() );
}
$(clone).appendTo( clonedBody );
} );
var cells = dt.columns().header().to$().clone( false );
$('<tr/>')
.append( cells )
.appendTo( clonedHeader );
// In the inline case extra padding is applied to the first column to
// give space for the show / hide icon. We need to use this in the
// calculation
if ( this.c.details.type === 'inline' ) {
$(clonedTable).addClass( 'dtr-inline collapsed' );
}
var inserted = $('<div/>')
.css( {
width: 1,
height: 1,
overflow: 'hidden'
} )
.append( clonedTable );
// Remove columns which are not to be included
inserted.find('th.never, td.never').remove();
inserted.insertBefore( dt.table().node() );
// The cloned header now contains the smallest that each column can be
dt.columns().eq(0).each( function ( idx ) {
columns[idx].minWidth = cells[ idx ].offsetWidth || 0;
} );
inserted.remove();
}
};
/**
* List of default breakpoints. Each item in the array is an object with two
* properties:
*
* * `name` - the breakpoint name.
* * `width` - the breakpoint width
*
* @name Responsive.breakpoints
* @static
*/
Responsive.breakpoints = [
{ name: 'desktop', width: Infinity },
{ name: 'tablet-l', width: 1024 },
{ name: 'tablet-p', width: 768 },
{ name: 'mobile-l', width: 480 },
{ name: 'mobile-p', width: 320 }
];
/**
* Responsive default settings for initialisation
*
* @namespace
* @name Responsive.defaults
* @static
*/
Responsive.defaults = {
/**
* List of breakpoints for the instance. Note that this means that each
* instance can have its own breakpoints. Additionally, the breakpoints
* cannot be changed once an instance has been creased.
*
* @type {Array}
* @default Takes the value of `Responsive.breakpoints`
*/
breakpoints: Responsive.breakpoints,
/**
* Enable / disable auto hiding calculations. It can help to increase
* performance slightly if you disable this option, but all columns would
* need to have breakpoint classes assigned to them
*
* @type {Boolean}
* @default `true`
*/
auto: true,
/**
* Details control. If given as a string value, the `type` property of the
* default object is set to that value, and the defaults used for the rest
* of the object - this is for ease of implementation.
*
* The object consists of the following properties:
*
* * `renderer` - function that is called for display of the child row data.
* The default function will show the data from the hidden columns
* * `target` - Used as the selector for what objects to attach the child
* open / close to
* * `type` - `false` to disable the details display, `inline` or `column`
* for the two control types
*
* @type {Object|string}
*/
details: {
renderer: function ( api, rowIdx ) {
var data = api.cells( rowIdx, ':hidden' ).eq(0).map( function ( cell ) {
var header = $( api.column( cell.column ).header() );
var idx = api.cell( cell ).index();
if ( header.hasClass( 'control' ) || header.hasClass( 'never' ) ) {
return '';
}
// Use a non-public DT API method to render the data for display
// This needs to be updated when DT adds a suitable method for
// this type of data retrieval
var dtPrivate = api.settings()[0];
var cellData = dtPrivate.oApi._fnGetCellData(
dtPrivate, idx.row, idx.column, 'display'
);
var title = header.text();
if ( title ) {
title = title + ':';
}
return '<li data-dtr-index="'+idx.column+'">'+
'<span class="dtr-title">'+
title+
'</span> '+
'<span class="dtr-data">'+
cellData+
'</span>'+
'</li>';
} ).toArray().join('');
return data ?
$('<ul data-dtr-index="'+rowIdx+'"/>').append( data ) :
false;
},
target: 0,
type: 'inline'
}
};
/*
* API
*/
var Api = $.fn.dataTable.Api;
// Doesn't do anything - work around for a bug in DT... Not documented
Api.register( 'responsive()', function () {
return this;
} );
Api.register( 'responsive.index()', function ( li ) {
li = $(li);
return {
column: li.data('dtr-index'),
row: li.parent().data('dtr-index')
};
} );
Api.register( 'responsive.rebuild()', function () {
return this.iterator( 'table', function ( ctx ) {
if ( ctx._responsive ) {
ctx._responsive._classLogic();
}
} );
} );
Api.register( 'responsive.recalc()', function () {
return this.iterator( 'table', function ( ctx ) {
if ( ctx._responsive ) {
ctx._responsive._resizeAuto();
ctx._responsive._resize();
}
} );
} );
/**
* Version information
*
* @name Responsive.version
* @static
*/
Responsive.version = '1.0.6';
$.fn.dataTable.Responsive = Responsive;
$.fn.DataTable.Responsive = Responsive;
// Attach a listener to the document which listens for DataTables initialisation
// events so we can automatically initialise
$(document).on( 'init.dt.dtr', function (e, settings, json) {
if ( e.namespace !== 'dt' ) {
return;
}
if ( $(settings.nTable).hasClass( 'responsive' ) ||
$(settings.nTable).hasClass( 'dt-responsive' ) ||
settings.oInit.responsive ||
DataTable.defaults.responsive
) {
var init = settings.oInit.responsive;
if ( init !== false ) {
new Responsive( settings, $.isPlainObject( init ) ? init : {} );
}
}
} );
return Responsive;
}; // /factory
// Define as an AMD module if possible
if ( typeof define === 'function' && define.amd ) {
define( ['jquery', 'datatables'], factory );
}
else if ( typeof exports === 'object' ) {
// Node/CommonJS
factory( require('jquery'), require('datatables') );
}
else if ( jQuery && !jQuery.fn.dataTable.Responsive ) {
// Otherwise simply initialise as normal, stopping multiple evaluation
factory( jQuery, jQuery.fn.dataTable );
}
})(window, document);

View File

@@ -1,41 +0,0 @@
# TableTools
TableTools is a plug-in for the DataTables HTML table enhancer, which adds a highly customisable button toolbar to a DataTable. Key features include:
* Copy to clipboard
* Save table data as CSV, XLS or PDF files
* Print view for clean printing
* Row selection options
* Easy use predefined buttons
* Simple customisation of buttons
* Well defined API for advanced control
# Installation
To use TableTools, first download DataTables ( http://datatables.net/download ) and place the unzipped TableTools package into a `extensions` directory in the DataTables package (in DataTables 1.9- use the `extras` directory). This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
# Basic usage
TableTools is initialised using the `T` option that it adds to DataTables' `dom` option. For example:
```js
$(document).ready( function () {
$('#example').DataTable( {
dom: 'T<"clear">lfrtip'
} );
} );
```
# Documentation / support
* Documentation: http://datatables.net/extensions/tabletools/
* DataTables support forums: http://datatables.net/forums
# GitHub
If you fancy getting involved with the development of TableTools and help make it better, please refer to its GitHub repo: https://github.com/DataTables/TableTools

View File

@@ -1,69 +0,0 @@
/*!
TableTools 2.2.3
2009-2014 SpryMedia Ltd - datatables.net/license
ZeroClipboard 1.0.4
Author: Joseph Huckaby - MIT licensed
*/
var TableTools;
(function(n,k,q){var p=function(m,p){var g={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=k.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+a+
"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,c){(a=this.clients[a])&&a.receiveEvent(b,c)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},
Client:function(a){this.handlers={};this.id=g.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;g.register(this.id,this);a&&this.glue(a)}};g.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,glue:function(a,b){this.domElement=g.$(a);var c=99;this.domElement.style.zIndex&&(c=parseInt(this.domElement.style.zIndex,10)+1);var d=g.getDOMObjectPosition(this.domElement);this.div=k.createElement("div");var f=
this.div.style;f.position="absolute";f.left="0px";f.top="0px";f.width=d.width+"px";f.height=d.height+"px";f.zIndex=c;"undefined"!=typeof b&&""!==b&&(this.div.title=b);0!==d.width&&0!==d.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(d.width,d.height).replace(/&/g,"&amp;"))},positionElement:function(){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&&
0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var c="",d="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var f=location.href.match(/^https/i)?"https://":"http://",c=c+('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+f+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+
g.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+d+'"/><param name="wmode" value="transparent"/></object>');else c+='<embed id="'+this.movieId+'" src="'+g.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+
d+'" wmode="transparent" />';return c},hide:function(){this.div&&(this.div.style.left="-2000px")},show:function(){this.reposition()},destroy:function(){if(this.domElement&&this.div){this.hide();this.div.innerHTML="";var a=k.getElementsByTagName("body")[0];try{a.removeChild(this.div)}catch(b){}this.div=this.domElement=null}},reposition:function(a){a&&((this.domElement=g.$(a))||this.hide());if(this.domElement&&this.div){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.left=""+a.left+
"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setCharSet:function(a){this.charSet=a;this.ready&&this.movie.setCharSet(a)},setBomInc:function(a){this.incBom=a;this.ready&&this.movie.setBomInc(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setAction:function(a){this.action=
a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){var c,a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=k.getElementById(this.movieId);if(!this.movie){c=this;setTimeout(function(){c.receiveEvent("load",
null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setCharSet(this.charSet);this.movie.setBomInc(this.incBom);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&&
this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var d=0,f=this.handlers[a].length;d<
f;d++){var e=this.handlers[a][d];if("function"==typeof e)e(this,b);else if("object"==typeof e&&2==e.length)e[0][e[1]](this,b);else if("string"==typeof e)n[e](this,b)}}};n.ZeroClipboard_TableTools=g;var e=jQuery;TableTools=function(a,b){!this instanceof TableTools&&alert("Warning: TableTools must be initialised with the keyword 'new'");this.s={that:this,dt:e.fn.dataTable.Api?(new e.fn.dataTable.Api(a)).settings()[0]:a.fnSettings(),print:{saveStart:-1,saveLength:-1,saveScroll:-1,funcEnd:function(){}},
buttonCounter:0,select:{type:"",selected:[],preRowSelect:null,postSelected:null,postDeselected:null,all:!1,selectedClass:""},custom:{},swfPath:"",buttonSet:[],master:!1,tags:{}};this.dom={container:null,table:null,print:{hidden:[],message:null},collection:{collection:null,background:null}};this.classes=e.extend(!0,{},TableTools.classes);this.s.dt.bJUI&&e.extend(!0,this.classes,TableTools.classes_themeroller);this.fnSettings=function(){return this.s};"undefined"==typeof b&&(b={});TableTools._aInstances.push(this);
this._fnConstruct(b);return this};TableTools.prototype={fnGetSelected:function(a){var b=[],c=this.s.dt.aoData,d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(c[d[a]].nTr)}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(c[a].nTr)}return b},fnGetSelectedData:function(){var a=[],b=this.s.dt.aoData,c,d;c=0;for(d=b.length;c<d;c++)b[c]._DTTT_selected&&a.push(this.s.dt.oInstance.fnGetData(c));return a},fnGetSelectedIndexes:function(a){var b=[],c=this.s.dt.aoData,
d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(d[a])}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(a)}return b},fnIsSelected:function(a){a=this.s.dt.oInstance.fnGetPosition(a);return!0===this.s.dt.aoData[a]._DTTT_selected?!0:!1},fnSelectAll:function(a){this._fnRowSelect(a?this.s.dt.aiDisplay:this.s.dt.aoData)},fnSelectNone:function(a){this._fnRowDeselect(this.fnGetSelectedIndexes(a))},fnSelect:function(a){"single"==this.s.select.type&&this.fnSelectNone();
this._fnRowSelect(a)},fnDeselect:function(a){this._fnRowDeselect(a)},fnGetTitle:function(a){var b="";"undefined"!=typeof a.sTitle&&""!==a.sTitle?b=a.sTitle:(a=k.getElementsByTagName("title"),0<a.length&&(b=a[0].innerHTML));return 4>"¡".toString().length?b.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""):b.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g,"")},fnCalcColRatios:function(a){var b=this.s.dt.aoColumns,a=this._fnColumnTargets(a.mColumns),c=[],d=0,f=0,e,i;e=0;for(i=a.length;e<i;e++)a[e]&&(d=b[e].nTh.offsetWidth,
f+=d,c.push(d));e=0;for(i=c.length;e<i;e++)c[e]/=f;return c.join("\t")},fnGetTableData:function(a){if(this.s.dt)return this._fnGetDataTablesData(a)},fnSetText:function(a,b){this._fnFlashSetText(a,b)},fnResizeButtons:function(){for(var a in g.clients)if(a){var b=g.clients[a];"undefined"!=typeof b.domElement&&b.domElement.parentNode&&b.positionElement()}},fnResizeRequired:function(){for(var a in g.clients)if(a){var b=g.clients[a];if("undefined"!=typeof b.domElement&&b.domElement.parentNode==this.dom.container&&
!1===b.sized)return!0}return!1},fnPrint:function(a,b){b===q&&(b={});a===q||a?this._fnPrintStart(b):this._fnPrintEnd()},fnInfo:function(a,b){var c=e("<div/>").addClass(this.classes.print.info).html(a).appendTo("body");setTimeout(function(){c.fadeOut("normal",function(){c.remove()})},b)},fnContainer:function(){return this.dom.container},_fnConstruct:function(a){var b=this;this._fnCustomiseSettings(a);this.dom.container=k.createElement(this.s.tags.container);this.dom.container.className=this.classes.container;
"none"!=this.s.select.type&&this._fnRowSelectConfig();this._fnButtonDefinations(this.s.buttonSet,this.dom.container);this.s.dt.aoDestroyCallback.push({sName:"TableTools",fn:function(){e(b.s.dt.nTBody).off("click.DTTT_Select","tr");e(b.dom.container).empty();var a=e.inArray(b,TableTools._aInstances);-1!==a&&TableTools._aInstances.splice(a,1)}})},_fnCustomiseSettings:function(a){"undefined"==typeof this.s.dt._TableToolsInit&&(this.s.master=!0,this.s.dt._TableToolsInit=!0);this.dom.table=this.s.dt.nTable;
this.s.custom=e.extend({},TableTools.DEFAULTS,a);this.s.swfPath=this.s.custom.sSwfPath;"undefined"!=typeof g&&(g.moviePath=this.s.swfPath);this.s.select.type=this.s.custom.sRowSelect;this.s.select.preRowSelect=this.s.custom.fnPreRowSelect;this.s.select.postSelected=this.s.custom.fnRowSelected;this.s.select.postDeselected=this.s.custom.fnRowDeselected;this.s.custom.sSelectedClass&&(this.classes.select.row=this.s.custom.sSelectedClass);this.s.tags=this.s.custom.oTags;this.s.buttonSet=this.s.custom.aButtons},
_fnButtonDefinations:function(a,b){for(var c,d=0,f=a.length;d<f;d++){if("string"==typeof a[d]){if("undefined"==typeof TableTools.BUTTONS[a[d]]){alert("TableTools: Warning - unknown button type: "+a[d]);continue}c=e.extend({},TableTools.BUTTONS[a[d]],!0)}else{if("undefined"==typeof TableTools.BUTTONS[a[d].sExtends]){alert("TableTools: Warning - unknown button type: "+a[d].sExtends);continue}c=e.extend({},TableTools.BUTTONS[a[d].sExtends],!0);c=e.extend(c,a[d],!0)}(c=this._fnCreateButton(c,e(b).hasClass(this.classes.collection.container)))&&
b.appendChild(c)}},_fnCreateButton:function(a,b){var c=this._fnButtonBase(a,b);if(a.sAction.match(/flash/)){if(!this._fnHasFlash())return!1;this._fnFlashConfig(c,a)}else"text"==a.sAction?this._fnTextConfig(c,a):"div"==a.sAction?this._fnTextConfig(c,a):"collection"==a.sAction&&(this._fnTextConfig(c,a),this._fnCollectionConfig(c,a));if(-1!==this.s.dt.iTabIndex)e(c).attr("tabindex",this.s.dt.iTabIndex).attr("aria-controls",this.s.dt.sTableId).on("keyup.DTTT",function(a){13===a.keyCode&&(a.stopPropagation(),
e(this).trigger("click"))}).on("mousedown.DTTT",function(b){a.sAction.match(/flash/)||b.preventDefault()});return c},_fnButtonBase:function(a,b){var c,d,f;b?(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.collection.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.collection.liner,f=this.classes.collection.buttons.normal):(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.liner,f=this.classes.buttons.normal);c=k.createElement(c);
d=k.createElement(d);var e=this._fnGetMasterSettings();c.className=f+" "+a.sButtonClass;c.setAttribute("id","ToolTables_"+this.s.dt.sInstance+"_"+e.buttonCounter);c.appendChild(d);d.innerHTML=a.sButtonText;e.buttonCounter++;return c},_fnGetMasterSettings:function(){if(this.s.master)return this.s;for(var a=TableTools._aInstances,b=0,c=a.length;b<c;b++)if(this.dom.table==a[b].s.dt.nTable)return a[b].s},_fnCollectionConfig:function(a,b){var c=k.createElement(this.s.tags.collection.container);c.style.display=
"none";c.className=this.classes.collection.container;b._collection=c;k.body.appendChild(c);this._fnButtonDefinations(b.aButtons,c)},_fnCollectionShow:function(a,b){var c=this,d=e(a).offset(),f=b._collection,j=d.left,d=d.top+e(a).outerHeight(),i=e(n).height(),h=e(k).height(),o=e(n).width(),g=e(k).width();f.style.position="absolute";f.style.left=j+"px";f.style.top=d+"px";f.style.display="block";e(f).css("opacity",0);var l=k.createElement("div");l.style.position="absolute";l.style.left="0px";l.style.top=
"0px";l.style.height=(i>h?i:h)+"px";l.style.width=(o>g?o:g)+"px";l.className=this.classes.collection.background;e(l).css("opacity",0);k.body.appendChild(l);k.body.appendChild(f);i=e(f).outerWidth();o=e(f).outerHeight();j+i>g&&(f.style.left=g-i+"px");d+o>h&&(f.style.top=d-o-e(a).outerHeight()+"px");this.dom.collection.collection=f;this.dom.collection.background=l;setTimeout(function(){e(f).animate({opacity:1},500);e(l).animate({opacity:0.25},500)},10);this.fnResizeButtons();e(l).click(function(){c._fnCollectionHide.call(c,
null,null)})},_fnCollectionHide:function(a,b){!(null!==b&&"collection"==b.sExtends)&&null!==this.dom.collection.collection&&(e(this.dom.collection.collection).animate({opacity:0},500,function(){this.style.display="none"}),e(this.dom.collection.background).animate({opacity:0},500,function(){this.parentNode.removeChild(this)}),this.dom.collection.collection=null,this.dom.collection.background=null)},_fnRowSelectConfig:function(){if(this.s.master){var a=this,b=this.s.dt;e(b.nTable).addClass(this.classes.select.table);
"os"===this.s.select.type&&(e(b.nTBody).on("mousedown.DTTT_Select","tr",function(a){if(a.shiftKey)e(b.nTBody).css("-moz-user-select","none").one("selectstart.DTTT_Select","tr",function(){return!1})}),e(b.nTBody).on("mouseup.DTTT_Select","tr",function(){e(b.nTBody).css("-moz-user-select","")}));e(b.nTBody).on("click.DTTT_Select",this.s.custom.sRowSelector,function(c){var d=this.nodeName.toLowerCase()==="tr"?this:e(this).parents("tr")[0],f=a.s.select,j=a.s.dt.oInstance.fnGetPosition(d);if(d.parentNode==
b.nTBody&&b.oInstance.fnGetData(d)!==null){if(f.type=="os")if(c.ctrlKey||c.metaKey)a.fnIsSelected(d)?a._fnRowDeselect(d,c):a._fnRowSelect(d,c);else if(c.shiftKey){var i=a.s.dt.aiDisplay.slice(),h=e.inArray(f.lastRow,i),o=e.inArray(j,i);if(a.fnGetSelected().length===0||h===-1)i.splice(e.inArray(j,i)+1,i.length);else{if(h>o)var g=o,o=h,h=g;i.splice(o+1,i.length);i.splice(0,h)}if(a.fnIsSelected(d)){i.splice(e.inArray(j,i),1);a._fnRowDeselect(i,c)}else a._fnRowSelect(i,c)}else if(a.fnIsSelected(d)&&a.fnGetSelected().length===
1)a._fnRowDeselect(d,c);else{a.fnSelectNone();a._fnRowSelect(d,c)}else if(a.fnIsSelected(d))a._fnRowDeselect(d,c);else if(f.type=="single"){a.fnSelectNone();a._fnRowSelect(d,c)}else f.type=="multi"&&a._fnRowSelect(d,c);f.lastRow=j}});b.oApi._fnCallbackReg(b,"aoRowCreatedCallback",function(c,d,f){b.aoData[f]._DTTT_selected&&e(c).addClass(a.classes.select.row)},"TableTools-SelectAll")}},_fnRowSelect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);
if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!0)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!0,c[f].nTr&&e(c[f].nTr).addClass(this.classes.select.row);null!==this.s.select.postSelected&&this.s.select.postSelected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!0)}},_fnRowDeselect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,
b,d,!1)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!1,c[f].nTr&&e(c[f].nTr).removeClass(this.classes.select.row);null!==this.s.select.postDeselected&&this.s.select.postDeselected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!1)}},_fnSelectData:function(a){var b=[],c,d,f;if(a.nodeName)c=this.s.dt.oInstance.fnGetPosition(a),b.push(this.s.dt.aoData[c]);else if("undefined"!==typeof a.length){d=0;for(f=a.length;d<f;d++)a[d].nodeName?(c=this.s.dt.oInstance.fnGetPosition(a[d]),b.push(this.s.dt.aoData[c])):
"number"===typeof a[d]?b.push(this.s.dt.aoData[a[d]]):b.push(a[d])}else b.push(a);return b},_fnTextConfig:function(a,b){var c=this;null!==b.fnInit&&b.fnInit.call(this,a,b);""!==b.sToolTip&&(a.title=b.sToolTip);e(a).hover(function(){b.fnMouseover!==null&&b.fnMouseover.call(this,a,b,null)},function(){b.fnMouseout!==null&&b.fnMouseout.call(this,a,b,null)});null!==b.fnSelect&&TableTools._fnEventListen(this,"select",function(d){b.fnSelect.call(c,a,b,d)});e(a).click(function(d){b.fnClick!==null&&b.fnClick.call(c,
a,b,null,d);b.fnComplete!==null&&b.fnComplete.call(c,a,b,null,null);c._fnCollectionHide(a,b)})},_fnHasFlash:function(){try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return!0}catch(a){if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]!==q&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1},_fnFlashConfig:function(a,b){var c=this,d=new g.Client;null!==b.fnInit&&b.fnInit.call(this,a,b);d.setHandCursor(!0);"flash_save"==b.sAction?
(d.setAction("save"),d.setCharSet("utf16le"==b.sCharSet?"UTF16LE":"UTF8"),d.setBomInc(b.bBomInc),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):"flash_pdf"==b.sAction?(d.setAction("pdf"),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):d.setAction("copy");d.addEventListener("mouseOver",function(){b.fnMouseover!==null&&b.fnMouseover.call(c,a,b,d)});d.addEventListener("mouseOut",function(){b.fnMouseout!==null&&b.fnMouseout.call(c,a,b,d)});d.addEventListener("mouseDown",function(){b.fnClick!==
null&&b.fnClick.call(c,a,b,d)});d.addEventListener("complete",function(f,e){b.fnComplete!==null&&b.fnComplete.call(c,a,b,d,e);c._fnCollectionHide(a,b)});this._fnFlashGlue(d,a,b.sToolTip)},_fnFlashGlue:function(a,b,c){var d=this,f=b.getAttribute("id");k.getElementById(f)?a.glue(b,c):setTimeout(function(){d._fnFlashGlue(a,b,c)},100)},_fnFlashSetText:function(a,b){var c=this._fnChunkData(b,8192);a.clearText();for(var d=0,f=c.length;d<f;d++)a.appendText(c[d])},_fnColumnTargets:function(a){var b=[],c=
this.s.dt,d,f=c.aoColumns;d=f.length;if("function"==typeof a){a=a.call(this,c);for(c=0;c<d;c++)b.push(-1!==e.inArray(c,a)?!0:!1)}else if("object"==typeof a){for(c=0;c<d;c++)b.push(!1);c=0;for(d=a.length;c<d;c++)b[a[c]]=!0}else if("visible"==a)for(c=0;c<d;c++)b.push(f[c].bVisible?!0:!1);else if("hidden"==a)for(c=0;c<d;c++)b.push(f[c].bVisible?!1:!0);else if("sortable"==a)for(c=0;c<d;c++)b.push(f[c].bSortable?!0:!1);else for(c=0;c<d;c++)b.push(!0);return b},_fnNewline:function(a){return"auto"==a.sNewLine?
navigator.userAgent.match(/Windows/)?"\r\n":"\n":a.sNewLine},_fnGetDataTablesData:function(a){var b,c,d,f,j,i=[],h="",g=this.s.dt,k,l=RegExp(a.sFieldBoundary,"g"),n=this._fnColumnTargets(a.mColumns);d="undefined"!=typeof a.bSelectedOnly?a.bSelectedOnly:!1;if(a.bHeader){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.aoColumns[b].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}d=
!0;var m;f=this.fnGetSelectedIndexes();m=(d="none"!==this.s.select.type&&d&&0!==f.length)?f:p.Api?(new p.Api(g)).rows(a.oSelectorOpts).indexes().flatten().toArray():g.oInstance.$("tr",a.oSelectorOpts).map(function(a,b){return g.oInstance.fnGetPosition(b)}).get();d=0;for(f=m.length;d<f;d++){k=g.aoData[m[d]].nTr;j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.oApi._fnGetCellData(g,m[d],b,"display"),a.fnCellRender?h=a.fnCellRender(h,b,k,m[d])+"":"string"==typeof h?(h=h.replace(/\n/g," "),h=h.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,
"$1$2$3"),h=h.replace(/<.*?>/g,"")):h+="",h=h.replace(/^\s+/,"").replace(/\s+$/,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator));a.bOpenRows&&(b=e.grep(g.aoOpenRows,function(a){return a.nParent===k}),1===b.length&&(h=this._fnBoundData(e("td",b[0].nTr).html(),a.sFieldBoundary,l),i.push(h)))}if(a.bFooter&&null!==g.nTFoot){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&null!==g.aoColumns[b].nTf&&(h=g.aoColumns[b].nTf.innerHTML.replace(/\n/g,
" ").replace(/<.*?>/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}return i.join(this._fnNewline(a))},_fnBoundData:function(a,b,c){return""===b?a:b+a.replace(c,b+b)+b},_fnChunkData:function(a,b){for(var c=[],d=a.length,f=0;f<d;f+=b)f+b<d?c.push(a.substring(f,f+b)):c.push(a.substring(f,d));return c},_fnHtmlDecode:function(a){if(-1===a.indexOf("&"))return a;var b=k.createElement("div");return a.replace(/&([^\s]*?);/g,function(a,d){if("#"===
a.substr(1,1))return String.fromCharCode(Number(d.substr(1)));b.innerHTML=a;return b.childNodes[0].nodeValue})},_fnPrintStart:function(a){var b=this,c=this.s.dt;this._fnPrintHideNodes(c.nTable);this.s.print.saveStart=c._iDisplayStart;this.s.print.saveLength=c._iDisplayLength;a.bShowAll&&(c._iDisplayStart=0,c._iDisplayLength=-1,c.oApi._fnCalculateEnd&&c.oApi._fnCalculateEnd(c),c.oApi._fnDraw(c));if(""!==c.oScroll.sX||""!==c.oScroll.sY)this._fnPrintScrollStart(c),e(this.s.dt.nTable).bind("draw.DTTT_Print",
function(){b._fnPrintScrollStart(c)});var d=c.aanFeatures,f;for(f in d)if("i"!=f&&"t"!=f&&1==f.length)for(var g=0,i=d[f].length;g<i;g++)this.dom.print.hidden.push({node:d[f][g],display:"block"}),d[f][g].style.display="none";e(k.body).addClass(this.classes.print.body);""!==a.sInfo&&this.fnInfo(a.sInfo,3E3);a.sMessage&&e("<div/>").addClass(this.classes.print.message).html(a.sMessage).prependTo("body");this.s.print.saveScroll=e(n).scrollTop();n.scrollTo(0,0);e(k).bind("keydown.DTTT",function(a){if(a.keyCode==
27){a.preventDefault();b._fnPrintEnd.call(b,a)}})},_fnPrintEnd:function(){var a=this.s.dt,b=this.s.print;this._fnPrintShowNodes();if(""!==a.oScroll.sX||""!==a.oScroll.sY)e(this.s.dt.nTable).unbind("draw.DTTT_Print"),this._fnPrintScrollEnd();n.scrollTo(0,b.saveScroll);e("div."+this.classes.print.message).remove();e(k.body).removeClass("DTTT_Print");a._iDisplayStart=b.saveStart;a._iDisplayLength=b.saveLength;a.oApi._fnCalculateEnd&&a.oApi._fnCalculateEnd(a);a.oApi._fnDraw(a);e(k).unbind("keydown.DTTT")},
_fnPrintScrollStart:function(){var a=this.s.dt;a.nScrollHead.getElementsByTagName("div")[0].getElementsByTagName("table");var b=a.nTable.parentNode,c;c=a.nTable.getElementsByTagName("thead");0<c.length&&a.nTable.removeChild(c[0]);null!==a.nTFoot&&(c=a.nTable.getElementsByTagName("tfoot"),0<c.length&&a.nTable.removeChild(c[0]));c=a.nTHead.cloneNode(!0);a.nTable.insertBefore(c,a.nTable.childNodes[0]);null!==a.nTFoot&&(c=a.nTFoot.cloneNode(!0),a.nTable.insertBefore(c,a.nTable.childNodes[1]));""!==a.oScroll.sX&&
(a.nTable.style.width=e(a.nTable).outerWidth()+"px",b.style.width=e(a.nTable).outerWidth()+"px",b.style.overflow="visible");""!==a.oScroll.sY&&(b.style.height=e(a.nTable).outerHeight()+"px",b.style.overflow="visible")},_fnPrintScrollEnd:function(){var a=this.s.dt,b=a.nTable.parentNode;""!==a.oScroll.sX&&(b.style.width=a.oApi._fnStringToCss(a.oScroll.sX),b.style.overflow="auto");""!==a.oScroll.sY&&(b.style.height=a.oApi._fnStringToCss(a.oScroll.sY),b.style.overflow="auto")},_fnPrintShowNodes:function(){for(var a=
this.dom.print.hidden,b=0,c=a.length;b<c;b++)a[b].node.style.display=a[b].display;a.splice(0,a.length)},_fnPrintHideNodes:function(a){for(var b=this.dom.print.hidden,c=a.parentNode,d=c.childNodes,f=0,g=d.length;f<g;f++)if(d[f]!=a&&1==d[f].nodeType){var i=e(d[f]).css("display");"none"!=i&&(b.push({node:d[f],display:i}),d[f].style.display="none")}"BODY"!=c.nodeName.toUpperCase()&&this._fnPrintHideNodes(c)}};TableTools._aInstances=[];TableTools._aListeners=[];TableTools.fnGetMasters=function(){for(var a=
[],b=0,c=TableTools._aInstances.length;b<c;b++)TableTools._aInstances[b].s.master&&a.push(TableTools._aInstances[b]);return a};TableTools.fnGetInstance=function(a){"object"!=typeof a&&(a=k.getElementById(a));for(var b=0,c=TableTools._aInstances.length;b<c;b++)if(TableTools._aInstances[b].s.master&&TableTools._aInstances[b].dom.table==a)return TableTools._aInstances[b];return null};TableTools._fnEventListen=function(a,b,c){TableTools._aListeners.push({that:a,type:b,fn:c})};TableTools._fnEventDispatch=
function(a,b,c,d){for(var f=TableTools._aListeners,e=0,g=f.length;e<g;e++)a.dom.table==f[e].that.dom.table&&f[e].type==b&&f[e].fn(c,d)};TableTools.buttonBase={sAction:"text",sTag:"default",sLinerTag:"default",sButtonClass:"DTTT_button_text",sButtonText:"Button text",sTitle:"",sToolTip:"",sCharSet:"utf8",bBomInc:!1,sFileName:"*.csv",sFieldBoundary:"",sFieldSeperator:"\t",sNewLine:"auto",mColumns:"all",bHeader:!0,bFooter:!0,bOpenRows:!1,bSelectedOnly:!1,oSelectorOpts:q,fnMouseover:null,fnMouseout:null,
fnClick:null,fnSelect:null,fnComplete:null,fnInit:null,fnCellRender:null};TableTools.BUTTONS={csv:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sButtonClass:"DTTT_button_csv",sButtonText:"CSV",sFieldBoundary:'"',sFieldSeperator:",",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),xls:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sCharSet:"utf16le",bBomInc:!0,sButtonClass:"DTTT_button_xls",sButtonText:"Excel",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),
copy:e.extend({},TableTools.buttonBase,{sAction:"flash_copy",sButtonClass:"DTTT_button_copy",sButtonText:"Copy",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))},fnComplete:function(a,b,c,d){a=d.split("\n").length;b.bHeader&&a--;null!==this.s.dt.nTFoot&&b.bFooter&&a--;this.fnInfo("<h6>Table copied</h6><p>Copied "+a+" row"+(1==a?"":"s")+" to the clipboard.</p>",1500)}}),pdf:e.extend({},TableTools.buttonBase,{sAction:"flash_pdf",sNewLine:"\n",sFileName:"*.pdf",sButtonClass:"DTTT_button_pdf",
sButtonText:"PDF",sPdfOrientation:"portrait",sPdfSize:"A4",sPdfMessage:"",fnClick:function(a,b,c){this.fnSetText(c,"title:"+this.fnGetTitle(b)+"\nmessage:"+b.sPdfMessage+"\ncolWidth:"+this.fnCalcColRatios(b)+"\norientation:"+b.sPdfOrientation+"\nsize:"+b.sPdfSize+"\n--/TableToolsOpts--\n"+this.fnGetTableData(b))}}),print:e.extend({},TableTools.buttonBase,{sInfo:"<h6>Print view</h6><p>Please use your browser's print function to print this table. Press escape when finished.</p>",sMessage:null,bShowAll:!0,
sToolTip:"View print view",sButtonClass:"DTTT_button_print",sButtonText:"Print",fnClick:function(a,b){this.fnPrint(!0,b)}}),text:e.extend({},TableTools.buttonBase),select:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_single:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",
fnSelect:function(a){1==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_all:e.extend({},TableTools.buttonBase,{sButtonText:"Select all",fnClick:function(){this.fnSelectAll()},fnSelect:function(a){this.fnGetSelected().length==this.s.dt.fnRecordsDisplay()?e(a).addClass(this.classes.buttons.disabled):e(a).removeClass(this.classes.buttons.disabled)}}),select_none:e.extend({},
TableTools.buttonBase,{sButtonText:"Deselect all",fnClick:function(){this.fnSelectNone()},fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),ajax:e.extend({},TableTools.buttonBase,{sAjaxUrl:"/xhr.php",sButtonText:"Ajax button",fnClick:function(a,b){var c=this.fnGetTableData(b);e.ajax({url:b.sAjaxUrl,data:[{name:"tableData",value:c}],success:b.fnAjaxComplete,
dataType:"json",type:"POST",cache:!1,error:function(){alert("Error detected when sending table data to server")}})},fnAjaxComplete:function(){alert("Ajax complete")}}),div:e.extend({},TableTools.buttonBase,{sAction:"div",sTag:"div",sButtonClass:"DTTT_nonbutton",sButtonText:"Text button"}),collection:e.extend({},TableTools.buttonBase,{sAction:"collection",sButtonClass:"DTTT_button_collection",sButtonText:"Collection",fnClick:function(a,b){this._fnCollectionShow(a,b)}})};TableTools.buttons=TableTools.BUTTONS;
TableTools.classes={container:"DTTT_container",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"},collection:{container:"DTTT_collection",background:"DTTT_collection_background",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"}},select:{table:"DTTT_selectable",row:"DTTT_selected selected"},print:{body:"DTTT_Print",info:"DTTT_print_info",message:"DTTT_PrintMessage"}};TableTools.classes_themeroller={container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},
collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}};TableTools.DEFAULTS={sSwfPath:"../swf/copy_csv_xls_pdf.swf",sRowSelect:"none",sRowSelector:"tr",sSelectedClass:null,fnPreRowSelect:null,fnRowSelected:null,fnRowDeselected:null,aButtons:["copy","csv","xls","pdf","print"],oTags:{container:"div",button:"a",liner:"span",collection:{container:"div",button:"a",liner:"span"}}};TableTools.defaults=TableTools.DEFAULTS;TableTools.prototype.CLASS="TableTools";TableTools.version="2.2.3";
e.fn.dataTable.Api&&e.fn.dataTable.Api.register("tabletools()",function(){var a=null;0<this.context.length&&(a=TableTools.fnGetInstance(this.context[0].nTable));return a});"function"==typeof e.fn.dataTable&&"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.9.0")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;return(new TableTools(a.oInstance,b?b.tableTools||b.oTableTools||{}:{})).dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download");
e.fn.DataTable.TableTools=TableTools;"function"==typeof m.fn.dataTable&&"function"==typeof m.fn.dataTableExt.fnVersionCheck&&m.fn.dataTableExt.fnVersionCheck("1.9.0")?m.fn.dataTableExt.aoFeatures.push({fnInit:function(a){a=new TableTools(a.oInstance,"undefined"!=typeof a.oInit.oTableTools?a.oInit.oTableTools:{});TableTools._aInstances.push(a);return a.dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download");
m.fn.dataTable.TableTools=TableTools;return m.fn.DataTable.TableTools=TableTools};"function"===typeof define&&define.amd?define(["jquery","datatables"],p):"object"===typeof exports?p(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.TableTools&&p(jQuery,jQuery.fn.dataTable)})(window,document);

View File

@@ -1,160 +0,0 @@
/*! DataTables 1.10.7
* ©2008-2015 SpryMedia Ltd - datatables.net/license
*/
(function(Ea,Q,k){var P=function(h){function W(a){var b,c,e={};h.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,"o"===b[1]&&W(a[d])});a._hungarianMap=e}function H(a,b,c){a._hungarianMap||W(a);var e;h.each(b,function(d){e=a._hungarianMap[d];if(e!==k&&(c||b[e]===k))"o"===e.charAt(0)?(b[e]||(b[e]={}),h.extend(!0,b[e],b[d]),H(a[e],b[e],c)):b[e]=b[d]})}function P(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;
!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");
A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&H(m.models.oSearch,a[b])}function fb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function gb(a){var a=a.oBrowser,b=h("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",
top:1,left:1,width:100,overflow:"scroll"}).append(h('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==Math.round(c.offset().left);b.remove()}function hb(a,b,c,e,d,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;e!==d;)a.hasOwnProperty(e)&&(g=j?b(g,a[e],e,a):a[e],j=!0,e+=f);return g}function Fa(a,b){var c=m.defaults.column,e=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:Q.createElement("th"),sTitle:c.sTitle?
c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=h.extend({},m.models.oSearch,c[e]);ka(a,e,h(b).data())}function ka(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr("width")||null;var f=(d.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),H(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&
(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=R(g),i=b.mRender?R(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var e=j(a,b,k,c);return i&&b?i(e,b,a,c):e};b.fnSetData=function(a,b,c){return S(g)(a,b,c)};"number"!==typeof g&&
(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI=e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function X(a){if(!1!==a.oFeatures.bAutoWidth){var b=
a.aoColumns;Ga(a);for(var c=0,e=b.length;c<e;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Y(a);w(a,null,"column-sizing",[a])}function la(a,b){var c=Z(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=Z(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){return Z(a,"bVisible").length}function Z(a,b){var c=[];h.map(a.aoColumns,function(a,d){a[b]&&c.push(d)});return c}function Ha(a){var b=a.aoColumns,c=a.aoData,e=m.ext.type.detect,d,
f,g,j,i,h,l,q,n;d=0;for(f=b.length;d<f;d++)if(l=b[d],n=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=e.length;g<j;g++){i=0;for(h=c.length;i<h;i++){n[i]===k&&(n[i]=x(a,i,d,"type"));q=e[g](n[i],a);if(!q&&g!==e.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function ib(a,b,c,e){var d,f,g,j,i,o,l=a.aoColumns;if(b)for(d=b.length-1;0<=d;d--){o=b[d];var q=o.targets!==k?o.targets:o.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<
g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Fa(a);e(q[f],o)}else if("number"===typeof q[f]&&0>q[f])e(l.length+q[f],o);else if("string"===typeof q[f]){j=0;for(i=l.length;j<i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&e(j,o)}}if(c){d=0;for(a=c.length;d<a;d++)e(d,c[d])}}function K(a,b,c,e){var d=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,g=b.length;f<g;f++)c&&Ia(a,d,f,x(a,d,f)),b[f].sType=null;a.aiDisplayMaster.push(d);
(c||!a.oFeatures.bDeferRender)&&Ja(a,d,c,e);return d}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,d){c=na(a,d);return K(a,c.data,d,c.cells)})}function x(a,b,c,e){var d=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,c=f.fnGetData(g,e,{settings:a,row:b,col:c});if(c===k)return a.iDrawError!=d&&null===j&&(I(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=d),j;if((c===g||null===c)&&
null!==j)c=j;else if("function"===typeof c)return c.call(g);return null===c&&"display"==e?"":c}function Ia(a,b,c,e){a.aoColumns[c].fnSetData(a.aoData[b]._aData,e,{settings:a,row:b,col:c})}function Ka(a){return h.map(a.match(/(\\.|[^\.])+/g),function(a){return a.replace(/\\./g,".")})}function R(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=R(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,
c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=Ka(f);for(var i=0,h=j.length;i<h;i++){f=j[i].match(ba);g=j[i].match(T);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");i=0;for(h=a.length;i<h;i++)g.push(c(a[i],b,j));a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(T,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===
k)return k;a=a[j[i]]}}return a};return function(b,d){return c(b,d,a)}}return function(b){return b[a]}}function S(a){if(h.isPlainObject(a))return S(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,e,d){a(b,"set",e,d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,e,d){var d=Ka(d),f;f=d[d.length-1];for(var g,j,i=0,h=d.length-1;i<h;i++){g=d[i].match(ba);j=d[i].match(T);if(g){d[i]=d[i].replace(ba,"");a[d[i]]=[];
f=d.slice();f.splice(0,i+1);g=f.join(".");j=0;for(h=e.length;j<h;j++)f={},b(f,e[j],g),a[d[i]].push(f);return}j&&(d[i]=d[i].replace(T,""),a=a[d[i]](e));if(null===a[d[i]]||a[d[i]]===k)a[d[i]]={};a=a[d[i]]}if(f.match(T))a[f.replace(T,"")](e);else a[f.replace(ba,"")]=e};return function(c,e){return b(c,e,a)}}return function(b,e){b[a]=e}}function La(a){return D(a.aoData,"_aData")}function oa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function pa(a,b,c){for(var e=-1,d=0,f=a.length;d<
f;d++)a[d]==b?e=d:a[d]>b&&a[d]--; -1!=e&&c===k&&a.splice(e,1)}function ca(a,b,c,e){var d=a.aoData[b],f,g=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=x(a,b,f,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===d.src)d._aData=na(a,d,e,e===k?k:d._aData).data;else{var j=d.anCells;if(j)if(e!==k)g(j[e],e);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}d._aSortData=null;d._aFilterData=null;g=a.aoColumns;if(e!==k)g[e].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;
Ma(d)}}function na(a,b,c,e){var d=[],f=b.firstChild,g,j=0,i,o=a.aoColumns,l=a._rowReadObject,e=e||l?{}:[],q=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),S(a)(e,b.getAttribute(c)))}},a=function(a){if(c===k||c===j)g=o[j],i=h.trim(a.innerHTML),g&&g._bAttrSrc?(S(g.mData._)(e,i),q(g.mData.sort,a),q(g.mData.type,a),q(g.mData.filter,a)):l?(g._setter||(g._setter=S(g.mData)),g._setter(e,i)):e[j]=i;j++};if(f)for(;f;){b=f.nodeName.toUpperCase();if("TD"==b||"TH"==b)a(f),
d.push(f);f=f.nextSibling}else{d=b.anCells;f=0;for(b=d.length;f<b;f++)a(d[f])}return{data:e,cells:d}}function Ja(a,b,c,e){var d=a.aoData[b],f=d._aData,g=[],j,i,h,l,q;if(null===d.nTr){j=c||Q.createElement("tr");d.nTr=j;d.anCells=g;j._DT_RowIndex=b;Ma(d);l=0;for(q=a.aoColumns.length;l<q;l++){h=a.aoColumns[l];i=c?e[l]:Q.createElement(h.sCellType);g.push(i);if(!c||h.mRender||h.mData!==l)i.innerHTML=x(a,b,l,"display");h.sClass&&(i.className+=" "+h.sClass);h.bVisible&&!c?j.appendChild(i):!h.bVisible&&c&&
i.parentNode.removeChild(i);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,i,x(a,b,l),f,b,l)}w(a,"aoRowCreatedCallback",null,[j,f,b])}d.nTr.setAttribute("role","row")}function Ma(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var e=c.DT_RowClass.split(" ");a.__rowc=a.__rowc?Na(a.__rowc.concat(e)):e;h(b).removeClass(a.__rowc.join(" ")).addClass(c.DT_RowClass)}c.DT_RowAttr&&h(b).attr(c.DT_RowAttr);c.DT_RowData&&h(b).data(c.DT_RowData)}}function jb(a){var b,c,e,d,
f,g=a.nTHead,j=a.nTFoot,i=0===h("th, td",g).length,o=a.oClasses,l=a.aoColumns;i&&(d=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],e=h(f.nTh).addClass(f.sClass),i&&e.appendTo(d),a.oFeatures.bSort&&(e.addClass(f.sSortingClass),!1!==f.bSortable&&(e.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=e.html()&&e.html(f.sTitle),Pa(a,"header")(a,e,f,o);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(o.sHeaderTH);
h(j).find(">tr>th, >tr>td").addClass(o.sFooterTH);if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var e,d,f,g=[],j=[],i=a.aoColumns.length,o;if(b){c===k&&(c=!1);e=0;for(d=b.length;e<d;e++){g[e]=b[e].slice();g[e].nTr=b[e].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[e].splice(f,1);j.push([])}e=0;for(d=g.length;e<d;e++){if(a=g[e].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[e].length;f<b;f++)if(o=
i=1,j[e][f]===k){a.appendChild(g[e][f].cell);for(j[e][f]=1;g[e+i]!==k&&g[e][f].cell==g[e+i][f].cell;)j[e+i][f]=1,i++;for(;g[e][f+o]!==k&&g[e][f].cell==g[e][f+o].cell;){for(c=0;c<i;c++)j[e+c][f+o]=1;o++}h(g[e][f].cell).attr("rowspan",i).attr("colspan",o)}}}}function M(a){var b=w(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,e=a.asStripeClasses,d=e.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==B(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=
j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,o=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:o;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ja(a,l);l=q.nTr;if(0!==d){var n=e[c%d];q._sRowStripe!=n&&(h(l).removeClass(q._sRowStripe).addClass(n),q._sRowStripe=n)}w(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,
1==a.iDraw&&"ajax"==B(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":d?e[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],La(a),g,o,i]);w(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],La(a),g,o,i]);e=h(a.nTBody);e.children().detach();e.append(h(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=
!1}}function N(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&lb(a);e?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),e=a.oFeatures,d=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,o,l,q,n=0;n<f.length;n++){g=
null;j=f[n];if("<"==j){i=h("<div/>")[0];o=f[n+1];if("'"==o||'"'==o){l="";for(q=2;f[n+q]!=o;)l+=f[n+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(o=l.split("."),i.id=o[0].substr(1,o[0].length-1),i.className=o[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;n+=q}d.append(i);d=h(i)}else if(">"==j)d=d.parent();else if("l"==j&&e.bPaginate&&e.bLengthChange)g=nb(a);else if("f"==j&&e.bFilter)g=ob(a);else if("r"==j&&e.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==
j&&e.bInfo)g=rb(a);else if("p"==j&&e.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(o=i.length;q<o;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),d.append(g))}c.replaceWith(d)}function da(a,b){var c=h(b).children("tr"),e,d,f,g,j,i,o,l,q,n;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){e=c[f];for(d=e.firstChild;d;){if("TD"==d.nodeName.toUpperCase()||"TH"==d.nodeName.toUpperCase()){l=
1*d.getAttribute("colspan");q=1*d.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;o=g;n=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][o+j]={cell:d,unique:n},a[f+g].nTr=e}d=d.nextSibling}}}function qa(a,b,c){var e=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,d=c.length;b<d;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!e[f]||!a.bSortCellsTop))e[f]=c[b][f].cell;return e}function ra(a,b,c){w(a,"aoServerParams","serverParams",[b]);
if(b&&h.isArray(b)){var e={},d=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(d);c?(c=c[0],e[c]||(e[c]=[]),e[c].push(b.value)):e[b.name]=b.value});b=e}var f,g=a.ajax,j=a.oInstance,i=function(b){w(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var o=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&o?o:h.extend(!0,b,o);delete g.data}o={data:b,success:function(b){var c=b.error||b.sError;c&&I(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,
c){var f=w(a,null,"xhr",[a,null,a.jqXHR]);-1===h.inArray(!0,f)&&("parsererror"==c?I(a,0,"Invalid JSON response",1):4===b.readyState&&I(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;w(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(o,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(o,g)),g.data=f)}function kb(a){return a.bAjaxDataGet?
(a.iDraw++,C(a,!0),ra(a,tb(a),function(b){ub(a,b)}),!1):!0}function tb(a){var b=a.aoColumns,c=b.length,e=a.oFeatures,d=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,o,l,q=U(a);g=a._iDisplayStart;i=!1!==e.bPaginate?a._iDisplayLength:-1;var n=function(a,b){j.push({name:a,value:b})};n("sEcho",a.iDraw);n("iColumns",c);n("sColumns",D(b,"sName").join(","));n("iDisplayStart",g);n("iDisplayLength",i);var k={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:d.sSearch,regex:d.bRegex}};for(g=
0;g<c;g++)o=b[g],l=f[g],i="function"==typeof o.mData?"function":o.mData,k.columns.push({data:i,name:o.sName,searchable:o.bSearchable,orderable:o.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),n("mDataProp_"+g,i),e.bFilter&&(n("sSearch_"+g,l.sSearch),n("bRegex_"+g,l.bRegex),n("bSearchable_"+g,o.bSearchable)),e.bSort&&n("bSortable_"+g,o.bSortable);e.bFilter&&(n("sSearch",d.sSearch),n("bRegex",d.bRegex));e.bSort&&(h.each(q,function(a,b){k.order.push({column:b.col,dir:b.dir});n("iSortCol_"+a,b.col);
n("sSortDir_"+a,b.dir)}),n("iSortingCols",q.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:k:b?j:k}function ub(a,b){var c=sa(a,b),e=b.sEcho!==k?b.sEcho:b.draw,d=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(e){if(1*e<a.iDraw)return;a.iDraw=1*e}oa(a);a._iRecordsTotal=parseInt(d,10);a._iRecordsDisplay=parseInt(f,10);e=0;for(d=c.length;e<d;e++)K(a,c[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;
M(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?R(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,e=a.oLanguage,d=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=e.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),
f=function(){var b=!this.value?"":this.value;b!=d.sSearch&&(fa(a,{sSearch:b,bRegex:d.bRegex,bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),a._iDisplayStart=0,M(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===B(a)?400:0,i=h("input",b).val(d.sSearch).attr("placeholder",e.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?ua(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==
Q.activeElement&&i.val(d.sSearch)}catch(f){}});return b[0]}function fa(a,b,c){var e=a.oPreviousSearch,d=a.aoPreSearchCols,f=function(a){e.sSearch=a.sSearch;e.bRegex=a.bRegex;e.bSmart=a.bSmart;e.bCaseInsensitive=a.bCaseInsensitive};Ha(a);if("ssp"!=B(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<d.length;b++)wb(a,d[b].sSearch,b,d[b].bEscapeRegex!==k?!d[b].bEscapeRegex:d[b].bRegex,d[b].bSmart,d[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered=
!0;w(a,null,"search",[a])}function xb(a){for(var b=m.ext.search,c=a.aiDisplay,e,d,f=0,g=b.length;f<g;f++){for(var j=[],i=0,h=c.length;i<h;i++)d=c[i],e=a.aoData[d],b[f](a,e._aFilterData,d,e._aData,i)&&j.push(d);c.length=0;c.push.apply(c,j)}}function wb(a,b,c,e,d,f){if(""!==b)for(var g=a.aiDisplay,e=Qa(b,e,d,f),d=g.length-1;0<=d;d--)b=a.aoData[g[d]]._aFilterData[c],e.test(b)||g.splice(d,1)}function vb(a,b,c,e,d,f){var e=Qa(b,e,d,f),d=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==m.ext.search.length&&
(c=!0);g=yb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||d.length>b.length||0!==b.indexOf(d)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)e.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Qa(a,b,c,e){a=b?a:va(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,e?"i":"")}function va(a){return a.replace(Yb,"\\$1")}
function yb(a){var b=a.aoColumns,c,e,d,f,g,j,i,h,l=m.ext.type.search;c=!1;e=0;for(f=a.aoData.length;e<f;e++)if(h=a.aoData[e],!h._aFilterData){j=[];d=0;for(g=b.length;d<g;d++)c=b[d],c.bSearchable?(i=x(a,e,d,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(wa.innerHTML=i,i=Zb?wa.textContent:wa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c}
function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,e=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),e.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return e[0]}function Bb(a){var b=
a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,e=a._iDisplayStart+1,d=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,e,d,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,e=a._iDisplayStart+1,d=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===d;return b.replace(/_START_/g,c.call(a,e)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,
c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(e/d))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/d)))}function ga(a){var b,c,e=a.iInitDisplayStart,d=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ga(a);b=0;for(c=d.length;b<c;b++)f=d[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));N(a);d=B(a);"ssp"!=d&&("ajax"==d?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)K(a,f[b]);
a.iInitDisplayStart=e;N(a);C(a,!1);ta(a,c)},a):(C(a,!1),ta(a)))}else setTimeout(function(){ga(a)},200)}function ta(a,b){a._bInitComplete=!0;b&&X(a);w(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);w(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,e=a.aLengthMenu,d=h.isArray(e[0]),f=d?e[0]:e,e=d?e[1]:e,d=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)d[0][g]=new Option(e[g],
f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",d[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());M(a)});h(a.nTable).bind("length.dt.DT",function(b,c,f){a===c&&h("select",i).val(f)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],e="function"===typeof c,d=function(a){M(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],
f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),q,l=0;for(q=f.p.length;l<q;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,d)},sName:"pagination"}));return b}function Ta(a,b,c){var e=a._iDisplayStart,d=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===d?e=0:"number"===typeof b?(e=b*d,e>f&&(e=0)):
"first"==b?e=0:"previous"==b?(e=0<=d?e-d:0,0>e&&(e=0)):"next"==b?e+d<f&&(e+=d):"last"==b?e=Math.floor((f-1)/d)*d:I(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==e;a._iDisplayStart=e;b&&(w(a,null,"page",[a]),c&&M(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");w(a,
null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),o=h(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);c=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,
width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({overflow:"auto",height:!d?null:s(d),width:!e?null:s(e)}).append(b));l&&c.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(o.removeAttr("id").css("margin-left",
0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=c.children(),q=b[0],f=b[1],n=l?b[2]:null;if(e)h(f).on("scroll.DT",function(){var a=this.scrollLeft;q.scrollLeft=a;l&&(n.scrollLeft=a)});a.nScrollHead=q;a.nScrollBody=f;a.nScrollFoot=n;a.aoDrawCallback.push({fn:Y,sName:"scrolling"});return c[0]}function Y(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,f=b.iBarWidth,g=h(a.nScrollHead),j=g[0].style,i=g.children("div"),o=i[0].style,l=i.children("table"),i=a.nScrollBody,q=h(i),n=i.style,
k=h(a.nScrollFoot).children("div"),p=k.children("table"),m=h(a.nTHead),r=h(a.nTable),t=r[0],O=t.style,L=a.nTFoot?h(a.nTFoot):null,ha=a.oBrowser,w=ha.bScrollOversize,v,u,y,x,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};r.children("thead, tfoot").remove();z=m.clone().prependTo(r);v=m.find("tr");y=z.find("tr");z.find("th, td").removeAttr("tabindex");L&&(x=L.clone().prependTo(r),u=L.find("tr"),x=x.find("tr"));
c||(n.width="100%",g[0].style.width="100%");h.each(qa(a,z),function(b,c){D=la(a,b);c.style.width=a.aoColumns[D].sWidth});L&&G(function(a){a.style.width=""},x);b.bCollapse&&""!==d&&(n.height=q[0].offsetHeight+m[0].offsetHeight+"px");g=r.outerWidth();if(""===c){if(O.width="100%",w&&(r.find("tbody").height()>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(r.outerWidth()-f)}else""!==e?O.width=s(e):g==q.width()&&q.height()<r.height()?(O.width=s(g-f),r.outerWidth()>g-f&&(O.width=s(g))):O.width=
s(g);g=r.outerWidth();G(E,y);G(function(a){C.push(a.innerHTML);A.push(s(h(a).css("width")))},y);G(function(a,b){a.style.width=A[b]},v);h(y).height(0);L&&(G(E,x),G(function(a){B.push(s(h(a).css("width")))},x),G(function(a,b){a.style.width=B[b]},u),h(x).height(0));G(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=A[b]},y);L&&G(function(a,b){a.innerHTML="";a.style.width=B[b]},x);if(r.outerWidth()<g){u=i.scrollHeight>i.offsetHeight||
"scroll"==q.css("overflow-y")?g+f:g;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(u-f);(""===c||""!==e)&&I(a,1,"Possible column misalignment",6)}else u="100%";n.width=s(u);j.width=s(u);L&&(a.nScrollFoot.style.width=s(u));!d&&w&&(n.height=s(t.offsetHeight+f));d&&b.bCollapse&&(n.height=s(d),b=c&&t.offsetWidth>i.offsetWidth?f:0,t.offsetHeight<i.offsetHeight&&(n.height=s(t.offsetHeight+b)));b=r.outerWidth();l[0].style.width=s(b);o.width=s(b);l=r.height()>i.clientHeight||
"scroll"==q.css("overflow-y");ha="padding"+(ha.bScrollbarLeft?"Left":"Right");o[ha]=l?f+"px":"0px";L&&(p[0].style.width=s(b),k[0].style.width=s(b),k[0].style[ha]=l?f+"px":"0px");q.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function G(a,b,c){for(var e=0,d=0,f=b.length,g,j;d<f;){g=b[d].firstChild;for(j=c?c[d].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,e):a(g,e),e++),g=g.nextSibling,j=c?j.nextSibling:null;d++}}function Ga(a){var b=a.nTable,c=a.aoColumns,e=a.oScroll,d=e.sY,f=e.sX,
g=e.sXInner,j=c.length,e=Z(a,"bVisible"),i=h("th",a.nTHead),o=b.getAttribute("width"),l=b.parentNode,k=!1,n,m;(n=b.style.width)&&-1!==n.indexOf("%")&&(o=n);for(n=0;n<e.length;n++)m=c[e[n]],null!==m.sWidth&&(m.sWidth=Db(m.sWidthOrig,l),k=!0);if(!k&&!f&&!d&&j==aa(a)&&j==i.length)for(n=0;n<j;n++)c[n].sWidth=s(i.eq(n).width());else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var p=h("<tr/>").appendTo(j.find("tbody"));j.find("tfoot th, tfoot td").css("width",
"");i=qa(a,j.find("thead")[0]);for(n=0;n<e.length;n++)m=c[e[n]],i[n].style.width=null!==m.sWidthOrig&&""!==m.sWidthOrig?s(m.sWidthOrig):"";if(a.aoData.length)for(n=0;n<e.length;n++)k=e[n],m=c[k],h(Eb(a,k)).clone(!1).append(m.sContentPadding).appendTo(p);j.appendTo(l);f&&g?j.width(g):f?(j.css("width","auto"),j.width()<l.offsetWidth&&j.width(l.offsetWidth)):d?j.width(l.offsetWidth):o&&j.width(o);Fb(a,j[0]);if(f){for(n=g=0;n<e.length;n++)m=c[e[n]],d=h(i[n]).outerWidth(),g+=null===m.sWidthOrig?d:parseInt(m.sWidth,
10)+d-h(i[n]).width();j.width(s(g));b.style.width=s(g)}for(n=0;n<e.length;n++)if(m=c[e[n]],d=h(i[n]).width())m.sWidth=s(d);b.style.width=s(j.css("width"));j.remove()}o&&(b.style.width=s(o));if((o||f)&&!a._reszEvt)b=function(){h(Ea).bind("resize.DT-"+a.sInstance,ua(function(){X(a)}))},a.oBrowser.bScrollOversize?setTimeout(b,1E3):b(),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,e,d;return function(){var b=this,g=+new Date,j=arguments;e&&g<e+c?(clearTimeout(d),d=setTimeout(function(){e=k;a.apply(b,
j)},c)):(e=g,a.apply(b,j))}}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",s(a)).appendTo(b||Q.body),e=c[0].offsetWidth;c.remove();return e}function Fb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(h(b).outerWidth()-c)}function Eb(a,b){var c=Gb(a,b);if(0>c)return null;var e=a.aoData[c];return!e.nTr?h("<td/>").html(x(a,c,b,"display"))[0]:e.anCells[b]}function Gb(a,b){for(var c,e=-1,d=-1,f=0,g=a.aoData.length;f<g;f++)c=x(a,f,b,"display")+"",c=c.replace($b,""),
c.length>e&&(e=c.length,d=f);return d}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Hb(){var a=m.__scrollbarWidth;if(a===k){var b=h("<p/>").css({position:"absolute",top:0,left:0,width:"100%",height:150,padding:0,overflow:"scroll",visibility:"hidden"}).appendTo("body"),a=b[0].offsetWidth-b[0].clientWidth;m.__scrollbarWidth=a;b.remove()}return a}function U(a){var b,c,e=[],d=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var o=[];
f=function(a){a.length&&!h.isArray(a[0])?o.push(a):o.push.apply(o,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<o.length;a++){i=o[a][0];f=d[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=d[g].sType||"string",o[a]._idx===k&&(o[a]._idx=h.inArray(o[a][1],d[g].asSorting)),e.push({src:i,col:g,dir:o[a][1],index:o[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return e}function lb(a){var b,c,e=[],d=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;
Ha(a);h=U(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Ib(a,j.col);if("ssp"!=B(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)e[i[b]]=b;g===h.length?i.sort(function(a,b){var c,d,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=0;g<i;g++)if(j=h[g],c=k[j.col],d=m[j.col],c=c<d?-1:c>d?1:0,0!==c)return"asc"===j.dir?c:-c;c=e[a];d=e[b];return c<d?-1:c>d?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,r=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=r[i.col],i=d[i.type+
"-"+i.dir]||d["string-"+i.dir],c=i(c,g),0!==c)return c;c=e[a];g=e[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,e=a.aoColumns,d=U(a),a=a.oLanguage.oAria,f=0,g=e.length;f<g;f++){c=e[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<d.length&&d[0].col==f?(i.setAttribute("aria-sort","asc"==d[0].dir?"ascending":"descending"),c=j[d[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",
b)}}function Ua(a,b,c,e){var d=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof d[0]&&(d=a.aaSorting=[d]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,D(d,"0")),-1!==c?(b=g(d[c],!0),null===b&&1===d.length&&(b=0),null===b?d.splice(c,1):(d[c][1]=f[b],d[c]._idx=b)):(d.push([b,f[0],0]),d[d.length-1]._idx=0)):d.length&&d[0][0]==b?(b=g(d[0]),d.length=1,d[0][1]=f[b],d[0]._idx=b):(d.length=0,d.push([b,f[0]]),d[0]._idx=
0);N(a);"function"==typeof e&&e(a)}function Oa(a,b,c,e){var d=a.aoColumns[c];Va(b,{},function(b){!1!==d.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,e);"ssp"!==B(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,e))})}function xa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,e=U(a),d=a.oFeatures,f,g;if(d.bSort&&d.bSortClasses){d=0;for(f=b.length;d<f;d++)g=b[d].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>d?d+1:3));d=0;for(f=e.length;d<f;d++)g=e[d].src,h(D(a.aoData,"anCells",
g)).addClass(c+(2>d?d+1:3))}a.aLastSort=e}function Ib(a,b){var c=a.aoColumns[b],e=m.ext.order[c.sSortDataType],d;e&&(d=e.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||e)f=e?d[j]:x(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function ya(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),
search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,e){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[e])}})};w(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Kb(a){var b,c,e=a.aoColumns;if(a.oFeatures.bStateSave){var d=a.fnStateLoadCallback.call(a.oInstance,a);if(d&&d.time&&(b=w(a,"aoStateLoadParams","stateLoadParams",[a,d]),-1===h.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&d.time<+new Date-1E3*b)&&e.length===
d.columns.length))){a.oLoadedState=h.extend(!0,{},d);d.start!==k&&(a._iDisplayStart=d.start,a.iInitDisplayStart=d.start);d.length!==k&&(a._iDisplayLength=d.length);d.order!==k&&(a.aaSorting=[],h.each(d.order,function(b,c){a.aaSorting.push(c[0]>=e.length?[0,c[1]]:c)}));d.search!==k&&h.extend(a.oPreviousSearch,Ab(d.search));b=0;for(c=d.columns.length;b<c;b++){var f=d.columns[b];f.visible!==k&&(e[b].bVisible=f.visible);f.search!==k&&h.extend(a.aoPreSearchCols[b],Ab(f.search))}w(a,"aoStateLoaded","stateLoaded",
[a,d])}}}function za(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function I(a,b,c,e){c="DataTables warning: "+(null!==a?"table id="+a.sTableId+" - ":"")+c;e&&(c+=". For more information about this error, please see http://datatables.net/tn/"+e);if(b)Ea.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,w(a,null,"error",[a,e,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,e,c)}}function E(a,b,c,e){h.isArray(c)?
h.each(c,function(c,f){h.isArray(f)?E(a,b,f[0],f[1]):E(a,b,f)}):(e===k&&(e=c),b[c]!==k&&(a[e]=b[c]))}function Lb(a,b,c){var e,d;for(d in b)b.hasOwnProperty(d)&&(e=b[d],h.isPlainObject(e)?(h.isPlainObject(a[d])||(a[d]={}),h.extend(!0,a[d],e)):a[d]=c&&"data"!==d&&"aaData"!==d&&h.isArray(e)?e.slice():e);return a}function Va(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function z(a,
b,c,e){c&&a[b].push({fn:c,sName:e})}function w(a,b,c,e){var d=[];b&&(d=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,e)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,e),d.push(b.result));return d}function Sa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),e=a._iDisplayLength;b>=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,e=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?e[c[b]]||e._:"string"===typeof c?e[c]||e._:e._}function B(a){return a.oFeatures.bServerSide?
"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Wa(a,b){var c=[],c=Mb.numbers_length,e=Math.floor(c/2);b<=c?c=V(0,b):a<=e?(c=V(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-e?c=V(b-(c-2),b):(c=V(a-e+2,a+e-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Aa(b,a)},"num-fmt":function(b){return Aa(b,a,Xa)},"html-num":function(b){return Aa(b,a,Ba)},"html-num-fmt":function(b){return Aa(b,a,Ba,Xa)}},function(b,
c){u.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(u.type.search[b+a]=u.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,u,t,r,v,Ya={},Ob=/[\r\n]/g,Ba=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$\u00a3\u20ac\u00a5%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,J=function(a){return!a||!0===a||
"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var e="string"===typeof a;if(J(a))return!0;b&&e&&(a=Qb(a,b));c&&e&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return J(a)?!0:!(J(a)||"string"===typeof a)?null:Za(a.replace(Ba,""),b,c)?!0:null},D=function(a,b,c){var e=[],d=0,f=a.length;
if(c!==k)for(;d<f;d++)a[d]&&a[d][b]&&e.push(a[d][b][c]);else for(;d<f;d++)a[d]&&e.push(a[d][b]);return e},ia=function(a,b,c,e){var d=[],f=0,g=b.length;if(e!==k)for(;f<g;f++)a[b[f]][c]&&d.push(a[b[f]][c][e]);else for(;f<g;f++)d.push(a[b[f]][c]);return d},V=function(a,b){var c=[],e;b===k?(b=0,e=a):(e=b,b=a);for(var d=b;d<e;d++)c.push(d);return c},Sb=function(a){for(var b=[],c=0,e=a.length;c<e;c++)a[c]&&b.push(a[c]);return b},Na=function(a){var b=[],c,e,d=a.length,f,g=0;e=0;a:for(;e<d;e++){c=a[e];for(f=
0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,T=/\(\)$/,wa=h("<div>")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new t(za(this[u.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===
k||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===k||a?b.draw(!1):(""!==e.sX||""!==e.sY)&&Y(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],h=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,h);(c===k||c)&&e.draw();return h};
this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,e,d,h){d=this.api(!0);null===b||b===k?d.search(a,c,e,h):d.column(b).search(a,c,e,h);d.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var e=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==e||"th"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};
this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===
k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[u.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(d===k||d)&&h.columns.adjust();(e===k||e)&&h.draw();return 0};this.fnVersionCheck=u.fnVersionCheck;var b=this,c=a===k,e=this.length;c&&(a={});this.oApi=this.internal=u.internal;for(var d in m.ext.internal)d&&
(this[d]=Nb(d));this.each(function(){var d={},d=1<e?Lb(d,a,!0):a,g=0,j,i=this.getAttribute("id"),o=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())I(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{eb(l);fb(l.column);H(l,l,!0);H(l.column,l.column,!0);H(l,h.extend(d,q.data()));var n=m.settings,g=0;for(j=n.length;g<j;g++){var r=n[g];if(r.nTable==this||r.nTHead.parentNode==this||r.nTFoot&&r.nTFoot.parentNode==this){g=d.bRetrieve!==k?d.bRetrieve:l.bRetrieve;if(c||g)return r.oInstance;
if(d.bDestroy!==k?d.bDestroy:l.bDestroy){r.oInstance.fnDestroy();break}else{I(r,0,"Cannot reinitialise DataTable",3);return}}if(r.sTableId==this.id){n.splice(g,1);break}}if(null===i||""===i)this.id=i="DataTables_Table_"+m.ext._unique++;var p=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:i,sTableId:i});p.nTable=this;p.oApi=b.internal;p.oInit=d;n.push(p);p.oInstance=1===b.length?b:q.dataTable();eb(d);d.oLanguage&&P(d.oLanguage);d.aLengthMenu&&!d.iDisplayLength&&(d.iDisplayLength=
h.isArray(d.aLengthMenu[0])?d.aLengthMenu[0][0]:d.aLengthMenu[0]);d=Lb(h.extend(!0,{},l),d);E(p.oFeatures,d,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));E(p,d,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback",
"renderer","searchDelay",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);E(p.oScroll,d,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);E(p.oLanguage,d,"fnInfoCallback");z(p,"aoDrawCallback",d.fnDrawCallback,"user");z(p,"aoServerParams",d.fnServerParams,"user");z(p,"aoStateSaveParams",d.fnStateSaveParams,"user");z(p,"aoStateLoadParams",
d.fnStateLoadParams,"user");z(p,"aoStateLoaded",d.fnStateLoaded,"user");z(p,"aoRowCallback",d.fnRowCallback,"user");z(p,"aoRowCreatedCallback",d.fnCreatedRow,"user");z(p,"aoHeaderCallback",d.fnHeaderCallback,"user");z(p,"aoFooterCallback",d.fnFooterCallback,"user");z(p,"aoInitComplete",d.fnInitComplete,"user");z(p,"aoPreDrawCallback",d.fnPreDrawCallback,"user");i=p.oClasses;d.bJQueryUI?(h.extend(i,m.ext.oJUIClasses,d.oClasses),d.sDom===l.sDom&&"lfrtip"===l.sDom&&(p.sDom='<"H"lfr>t<"F"ip>'),p.renderer)?
h.isPlainObject(p.renderer)&&!p.renderer.header&&(p.renderer.header="jqueryui"):p.renderer="jqueryui":h.extend(i,m.ext.classes,d.oClasses);q.addClass(i.sTable);if(""!==p.oScroll.sX||""!==p.oScroll.sY)p.oScroll.iBarWidth=Hb();!0===p.oScroll.sX&&(p.oScroll.sX="100%");p.iInitDisplayStart===k&&(p.iInitDisplayStart=d.iDisplayStart,p._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(p.bDeferLoading=!0,g=h.isArray(d.iDeferLoading),p._iRecordsDisplay=g?d.iDeferLoading[0]:d.iDeferLoading,p._iRecordsTotal=
g?d.iDeferLoading[1]:d.iDeferLoading);var t=p.oLanguage;h.extend(!0,t,d.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){P(a);H(l.oLanguage,a);h.extend(true,t,a);ga(p)},error:function(){ga(p)}}),o=!0);null===d.asStripeClasses&&(p.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=p.asStripeClasses,s=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return s.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),p.asDestroyStripes=g.slice());
n=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(p.aoHeader,g[0]),n=qa(p));if(null===d.aoColumns){r=[];g=0;for(j=n.length;g<j;g++)r.push(null)}else r=d.aoColumns;g=0;for(j=r.length;g<j;g++)Fa(p,n?n[g]:null);ib(p,d.aoColumnDefs,r,function(a,b){ka(p,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h.each(na(p,s[0]).cells,function(a,b){var c=p.aoColumns[a];if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");if(d!==null||e!==
null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ka(p,a)}}})}var v=p.oFeatures;d.bStateSave&&(v.bStateSave=!0,Kb(p,d),z(p,"aoDrawCallback",ya,"state_save"));if(d.aaSorting===k){n=p.aaSorting;g=0;for(j=n.length;g<j;g++)n[g][1]=p.aoColumns[g].asSorting[0]}xa(p);v.bSort&&z(p,"aoDrawCallback",function(){if(p.bSorted){var a=U(p),b={};h.each(a,function(a,c){b[c.src]=c.dir});w(p,null,"order",[p,a,b]);Jb(p)}});z(p,"aoDrawCallback",
function(){(p.bSorted||B(p)==="ssp"||v.bDeferRender)&&xa(p)},"sc");gb(p);g=q.children("caption").each(function(){this._captionSide=q.css("caption-side")});j=q.children("thead");0===j.length&&(j=h("<thead/>").appendTo(this));p.nTHead=j[0];j=q.children("tbody");0===j.length&&(j=h("<tbody/>").appendTo(this));p.nTBody=j[0];j=q.children("tfoot");if(0===j.length&&0<g.length&&(""!==p.oScroll.sX||""!==p.oScroll.sY))j=h("<tfoot/>").appendTo(this);0===j.length||0===j.children().length?q.addClass(i.sNoFooter):
0<j.length&&(p.nTFoot=j[0],da(p.aoFooter,p.nTFoot));if(d.aaData)for(g=0;g<d.aaData.length;g++)K(p,d.aaData[g]);else(p.bDeferLoading||"dom"==B(p))&&ma(p,h(p.nTBody).children("tr"));p.aiDisplay=p.aiDisplayMaster.slice();p.bInitialised=!0;!1===o&&ga(p)}});b=null;return this};var Tb=[],y=Array.prototype,cc=function(a){var b,c,e=m.settings,d=h.map(e,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,d),-1!==b?[e[b]]:
null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,d);return-1!==b?e[b]:null}).toArray()};t=function(a,b){if(!(this instanceof t))return new t(a,b);var c=[],e=function(a){(a=cc(a))&&c.push.apply(c,a)};if(h.isArray(a))for(var d=0,f=a.length;d<f;d++)e(a[d]);else e(a);this.context=Na(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};
t.extend(this,this,Tb)};m.Api=t;t.prototype={any:function(){return 0!==this.flatten().length},concat:y.concat,context:[],each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];if(y.filter)b=y.filter.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,b)},flatten:function(){var a=[];
return new t(this.context,a.concat.apply(a,this.toArray()))},join:y.join,indexOf:y.indexOf||function(a,b){for(var c=b||0,e=this.length;c<e;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,e){var d=[],f,g,h,i,o,l=this.context,q,n,m=this.selector;"string"===typeof a&&(e=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var p=new t(l[g]);if("table"===b)f=c.call(p,l[g],g),f!==k&&d.push(f);else if("columns"===b||"rows"===b)f=c.call(p,l[g],this[g],g),f!==k&&d.push(f);else if("column"===b||"column-rows"===
b||"row"===b||"cell"===b){n=this[g];"column-rows"===b&&(q=Ca(l[g],m.opts));i=0;for(o=n.length;i<o;i++)f=n[i],f="cell"===b?c.call(p,l[g],f.row,f.column,g,i):c.call(p,l[g],f,g,i,q),f!==k&&d.push(f)}}return d.length||e?(a=new t(l,a?d.concat.apply([],d):d),b=a.selector,b.rows=m.rows,b.cols=m.cols,b.opts=m.opts,a):this},lastIndexOf:y.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(y.map)b=y.map.call(this,a,this);else for(var c=
0,e=this.length;c<e;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:y.pop,push:y.push,reduce:y.reduce||function(a,b){return hb(this,a,b,0,this.length,1)},reduceRight:y.reduceRight||function(a,b){return hb(this,a,b,this.length-1,-1,-1)},reverse:y.reverse,selector:null,shift:y.shift,sort:y.sort,splice:y.splice,toArray:function(){return y.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},
unique:function(){return new t(this.context,Na(this))},unshift:y.unshift};t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var e,d,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);t.extend(d,d,c.methodExt);return d}};e=0;for(d=c.length;e<d;e++)f=c[e],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=r=function(a,b){if(h.isArray(a))for(var c=0,e=a.length;c<
e;c++)t.register(a[c],b);else for(var d=a.split("."),f=Tb,g,j,c=0,e=d.length;c<e;c++){g=(j=-1!==d[c].indexOf("()"))?d[c].replace("()",""):d[c];var i;a:{i=0;for(var o=f.length;i<o;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===e-1?i.val=b:f=j?i.methodExt:i.propExt}};t.registerPlural=v=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?h.isArray(a[0])?new t(a.context,
a[0]):a[0]:k:a})};r("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var e=h.map(c,function(a){return a.nTable}),a=h(e).filter(a).map(function(){var a=h.inArray(this,e);return c[a]}).toArray();b=new b(a)}else b=this;return b});r("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new t(b[0]):a});v("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});v("tables().body()","table().body()",
function(){return this.iterator("table",function(a){return a.nTBody},1)});v("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});v("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});v("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});r("draw()",function(a){return this.iterator("table",function(b){N(b,
!1===a)})});r("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});r("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,e=a.fnRecordsDisplay(),d=-1===c;return{page:d?0:Math.floor(b/c),pages:d?1:Math.ceil(e/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:e}});r("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:
k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){if(c){var e=new t(a);e.one("draw",function(){c(e.ajax.json())})}"ssp"==B(a)?N(a,b):(C(a,!0),ra(a,[],function(c){oa(a);for(var c=sa(a,c),e=0,g=c.length;e<g;e++)K(a,c[e]);N(a,b);C(a,!1)}))};r("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});r("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});r("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c,
!1===b,a)})});r("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});var $a=function(a,b,c,e,d){var f=[],g,j,i,o,l,q;i=typeof b;if(!b||"string"===i||"function"===i||b.length===k)b=[b];i=0;for(o=b.length;i<o;i++){j=
b[i]&&b[i].split?b[i].split(","):[b[i]];l=0;for(q=j.length;l<q;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&f.push.apply(f,g)}a=u.selector[a];if(a.length){i=0;for(o=a.length;i<o;i++)f=a[i](e,d,f)}return f},ab=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},bb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},
Ca=function(a,b){var c,e,d,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;e=b.order;d=b.page;if("ssp"==B(a))return"removed"===j?[]:V(0,c.length);if("current"==d){c=a._iDisplayStart;for(e=a.fnDisplayEnd();c<e;c++)f.push(g[c])}else if("current"==e||"applied"==e)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==e||"original"==e){c=0;for(e=a.aoData.length;c<e;c++)"none"==j?f.push(c):(d=h.inArray(c,g),(-1===d&&"removed"==j||0<=d&&
"applied"==j)&&f.push(c))}return f};r("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=b;return $a("row",a,function(a){var b=Pb(a);if(b!==null&&!d)return[b];var j=Ca(c,d);if(b!==null&&h.inArray(b,j)!==-1)return[b];if(!a)return j;if(typeof a==="function")return h.map(j,function(b){var d=c.aoData[b];return a(b,d._aData,d.nTr)?b:null});b=Sb(ia(c.aoData,j,"nTr"));return a.nodeName&&h.inArray(a,b)!==-1?[a._DT_RowIndex]:h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},
c,d)},1);c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});v("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var e=b.aoData[c];return"search"===a?e._aFilterData:e._aSortData},1)});v("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",
function(b,c){ca(b,c,a)})});v("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});v("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,e){var d=b.aoData;d.splice(c,1);for(var f=0,g=d.length;f<g;f++)null!==d[f].nTr&&(d[f].nTr._DT_RowIndex=f);h.inArray(c,b.aiDisplay);pa(b.aiDisplayMaster,c);pa(b.aiDisplay,c);pa(a[e],c,!1);Sa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,
f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(K(b,c));return h},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return bb(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length?
a[0].aoData[this[0]].nTr||null:null});r("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:K(b,a)});return this.row(b[0])});var cb=function(a,b){var c=a.context;c.length&&(c=c[0].aoData[b!==k?b:a[0]],c._details&&(c._details.remove(),c._detailsShow=k,c._details=k))},Vb=function(a,b){var c=a.context;if(c.length&&a.length){var e=c[0].aoData[a[0]];if(e._details){(e._detailsShow=b)?e._details.insertAfter(e.nTr):
e._details.detach();var d=c[0],f=new t(d),g=d.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){d===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(d===b)for(var c,e=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",e)}),f.on("destroy.dt.DT_details",
function(a,b){if(d===b)for(var c=0,e=g.length;c<e;c++)g[c]._details&&cb(f,c)}))}}};r("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)cb(this);else if(c.length&&this.length){var e=c[0],c=c[0].aoData[this[0]],d=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?d.push(a):(c=h("<tr><td/></tr>").addClass(b),
h("td",c).addClass(b).html(a)[0].colSpan=aa(e),d.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(d);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r(["row().child.show()","row().child().show()"],function(){Vb(this,!0);return this});r(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});r(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});r("row().child.isShown()",function(){var a=this.context;return a.length&&
this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var dc=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,e,d){for(var c=[],e=0,f=d.length;e<f;e++)c.push(x(a,d[e],b));return c};r("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return $a("column",d,function(a){var b=Pb(a);if(a==="")return V(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var d=Ca(c,
f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,d),i[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[la(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null})}else return h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray()},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});v("columns().header()",
"column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});v("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});v("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});v("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});v("columns().cache()","column().cache()",
function(a){return this.iterator("column-rows",function(b,c,e,d,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});v("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,e,d){return ia(a.aoData,d,"anCells",b)},1)});v("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,e){if(a===k)return c.aoColumns[e].bVisible;var d=c.aoColumns,f=d[e],g=c.aoData,j,i,m;if(a!==k&&f.bVisible!==a){if(a){var l=
h.inArray(!0,D(d,"bVisible"),e+1);j=0;for(i=g.length;j<i;j++)m=g[j].nTr,d=g[j].anCells,m&&m.insertBefore(d[e],d[l]||null)}else h(D(c.aoData,"anCells",e)).detach();f.bVisible=a;ea(c,c.aoHeader);ea(c,c.aoFooter);if(b===k||b)X(c),(c.oScroll.sX||c.oScroll.sY)&&Y(c);w(c,null,"column-visibility",[c,e,a]);ya(c)}})});v("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});r("columns.adjust()",function(){return this.iterator("table",
function(a){X(a)},1)});r("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return la(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});r("column()",function(a,b){return bb(this.columns(a,b))});r("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=ab(c),f=b.aoData,g=Ca(b,e),i=Sb(ia(f,g,"anCells")),
j=h([].concat.apply([],i)),l,m=b.aoColumns.length,o,r,t,s,u,v;return $a("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){o=[];r=0;for(t=g.length;r<t;r++){l=g[r];for(s=0;s<m;s++){u={row:l,column:s};if(c){v=b.aoData[l];a(u,x(b,l,s),v.anCells?v.anCells[s]:null)&&o.push(u)}else o.push(u)}}return o}return h.isPlainObject(a)?[a]:j.filter(a).map(function(a,b){l=b.parentNode._DT_RowIndex;return{row:l,column:h.inArray(b,f[l].anCells)}}).toArray()},b,e)});var e=this.columns(b,c),d=this.rows(a,
c),f,g,j,i,m,l=this.iterator("table",function(a,b){f=[];g=0;for(j=d[b].length;g<j;g++){i=0;for(m=e[b].length;i<m;i++)f.push({row:d[b][g],column:e[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});v("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b].anCells)?a[c]:k},1)});r("cells().data()",function(){return this.iterator("cell",function(a,b,c){return x(a,b,c)},1)});v("cells().cache()","cell().cache()",function(a){a=
"search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,e){return b.aoData[c][a][e]},1)});v("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,e){return x(b,c,e,a)},1)});v("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});v("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,e){ca(b,c,a,e)})});r("cell()",
function(a,b,c){return bb(this.cells(a,b,c))});r("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?x(b[0],c[0].row,c[0].column):k;Ia(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});r("order()",function(a,b){var c=this.context;if(a===k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});
r("order.listener()",function(a,b,c){return this.iterator("table",function(e){Oa(e,a,b,c)})});r(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,e){var d=[];h.each(b[e],function(b,c){d.push([c,a])});c.aaSorting=d})});r("search()",function(a,b,c,e){var d=this.context;return a===k?0!==d.length?d[0].oPreviousSearch.sSearch:k:this.iterator("table",function(d){d.oFeatures.bFilter&&fa(d,h.extend({},d.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:
b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),1)})});v("columns().search()","column().search()",function(a,b,c,e){return this.iterator("column",function(d,f){var g=d.aoPreSearchCols;if(a===k)return g[f].sSearch;d.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),fa(d,d.oPreviousSearch,1))})});r("state()",function(){return this.context.length?this.context[0].oSavedState:null});r("state.clear()",function(){return this.iterator("table",
function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});r("state.save()",function(){return this.iterator("table",function(a){ya(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,e,d=0,f=a.length;d<f;d++)if(c=parseInt(b[d],10)||0,e=parseInt(a[d],10)||0,c!==e)return c>e;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,
function(a,d){var f=d.nScrollHead?h("table",d.nScrollHead)[0]:null,g=d.nScrollFoot?h("table",d.nScrollFoot)[0]:null;if(d.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){return h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable})};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=H;r("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,
b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var e=h(this.tables().nodes());e[b].apply(e,a);return this})});r("clear()",function(){return this.iterator("table",function(a){oa(a)})});r("settings()",function(){return new t(this.context,this.context)});r("init()",function(){var a=this.context;return a.length?a[0].oInit:null});r("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});r("destroy()",
function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(d),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),q;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(Ea).unbind(".DT-"+b.sInstance);d!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&d!=j.parentNode&&(i.children("tfoot").detach(),
i.append(j));i.detach();k.detach();b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(e.sSortable+" "+e.sSortableAsc+" "+e.sSortableDesc+" "+e.sSortableNone);b.bJUI&&(h("th span."+e.sSortIcon+", td span."+e.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+e.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(d,b.nTableReinsertBefore);f.children().detach();f.append(l);i.css("width",b.sDestroyWidth).removeClass(e.sTable);
(q=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%q])});c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){r(b+"s().every()",function(a){return this.iterator(b,function(e,d,f){a.call((new t(e))[b](d,f))})})});r("i18n()",function(a,b,c){var e=this.context[0],a=R(a)(e.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.7";m.settings=
[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",
sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,
fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,
fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},
sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,
sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};W(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};W(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,
bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],
sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,
bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==B(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==B(this)?1*this._iRecordsDisplay:
this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e:Math.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};m.ext=u={buttons:{},classes:{},errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},
header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(u,{afnFiltering:u.search,aTypes:u.type.detect,ofnSearch:u.type.search,oSort:u.type.order,afnSortData:u.order,aoFeatures:u.feature,oApi:u.internal,oStdClasses:u.classes,oPagination:u.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",
sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",
sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Da="",Da="",F=Da+"ui-state-default",ja=Da+"css_right ui-icon ui-icon-",Xb=Da+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,
m.ext.classes,{sPageButton:"fg-button ui-button "+F,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:F+" sorting_asc",sSortDesc:F+" sorting_desc",sSortable:F+" sorting",sSortableAsc:F+" sorting_asc_disabled",sSortableDesc:F+" sorting_desc_disabled",sSortableNone:F+" sorting_disabled",sSortJUIAsc:ja+"triangle-1-n",sSortJUIDesc:ja+"triangle-1-s",sSortJUI:ja+"carat-2-n-s",
sSortJUIAscAllowed:ja+"carat-1-n",sSortJUIDescAllowed:ja+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+F,sScrollFoot:"dataTables_scrollFoot "+F,sHeaderTH:F,sFooterTH:F,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,b){return["previous",
Wa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Wa(a,b),"next","last"]},_numbers:Wa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i,k,l=0,m=function(b,e){var n,r,t,s,u=function(b){Ta(a,b.data.action,true)};n=0;for(r=e.length;n<r;n++){s=e[n];if(h.isArray(s)){t=h("<"+(s.DT_el||"div")+"/>").appendTo(b);m(t,s)}else{k=i="";switch(s){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;
case "first":i=j.sFirst;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "previous":i=j.sPrevious;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "next":i=j.sNext;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;case "last":i=j.sLast;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;default:i=s+1;k=d===s?g.sPageButtonActive:""}if(i){t=h("<a>",{"class":g.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(i).appendTo(b);
Va(t,{action:s},u);l++}}}},n;try{n=h(Q.activeElement).data("dt-idx")}catch(r){}m(h(b).empty(),e);n&&h(b).find("[data-dt-idx="+n+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||J(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;
return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return J(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ba,""):""},string:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Aa=function(a,b,c,e){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),
e&&(a=a.replace(e,"")));return 1*a};h.extend(u.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return J(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return J(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});db("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,e){h(a.nTable).on("order.dt.DT",function(d,
f,g,h){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+" "+e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){h("<div/>").addClass(e.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(e.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(d,f,g,h){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass);
b.find("span."+e.sSortIcon).removeClass(e.sSortJUIAsc+" "+e.sSortJUIDesc+" "+e.sSortJUI+" "+e.sSortJUIAscAllowed+" "+e.sSortJUIDescAllowed).addClass(h[d]=="asc"?e.sSortJUIAsc:h[d]=="desc"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});m.render={number:function(a,b,c,e){return{display:function(d){if("number"!==typeof d&&"string"!==typeof d)return d;var f=0>d?"-":"",d=Math.abs(parseFloat(d)),g=parseInt(d,10),d=c?b+(d-g).toFixed(c).substring(2):"";return f+(e||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
a)+d}}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub,_fnAjaxDataSrc:sa,_fnAddColumn:Fa,_fnColumnOptions:ka,_fnAdjustColumnSizing:X,_fnVisibleToColumnIndex:la,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:Z,_fnColumnTypes:Ha,_fnApplyColumnDefs:ib,_fnHungarianMap:W,_fnCamelToHungarian:H,_fnLanguageCompat:P,_fnBrowserDetect:gb,_fnAddData:K,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:
null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:x,_fnSetCellData:Ia,_fnSplitObjNotation:Ka,_fnGetObjectDataFn:R,_fnSetObjectDataFn:S,_fnGetDataMaster:La,_fnClearTable:oa,_fnDeleteIndex:pa,_fnInvalidate:ca,_fnGetRowElements:na,_fnCreateTr:Ja,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:M,_fnReDraw:N,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Qa,
_fnEscapeRegex:va,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:Y,_fnApplyToChildren:G,_fnCalculateColumnWidths:Ga,_fnThrottle:ua,_fnConvertToWidth:Db,_fnScrollingWidthAdjust:Fb,_fnGetWidestNode:Eb,_fnGetMaxLenString:Gb,_fnStringToCss:s,_fnScrollBarWidth:Hb,_fnSortFlatten:U,
_fnSort:lb,_fnSortAria:Jb,_fnSortListener:Ua,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:I,_fnMap:E,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:w,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:B,_fnRowAttributes:Ma,_fnCalculateEnd:function(){}});h.fn.dataTable=m;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=
b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],P):"object"===typeof exports?module.exports=P(require("jquery")):jQuery&&!jQuery.fn.dataTable&&P(jQuery)})(window,document);

File diff suppressed because one or more lines are too long

4
js/lib/jquery-3.0.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

8
js/lib/jquery.mousewheel.min.js vendored Normal file
View File

@@ -0,0 +1,8 @@
/*!
* jQuery Mousewheel 3.1.13
*
* Copyright 2015 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*/
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});

View File

@@ -2,7 +2,7 @@
"name": "pathfinder-eve",
"version": "0.0.10",
"engines": {
"node": "4.0.x"
"node": "6.x"
},
"description": "Pathfinder is a system mapping tool for EVE ONLINE",
"main": "index.php",

File diff suppressed because one or more lines are too long

View File

@@ -1,2 +0,0 @@
var mainScriptPath=document.body.getAttribute("data-script"),jsBaseUrl=document.body.getAttribute("data-js-path");requirejs.config({baseUrl:"js",paths:{layout:"layout",config:"app/config",dialog:"app/ui/dialog",templates:"../../templates",img:"../../img",login:"./app/login",mappage:"./app/mappage",setup:"./app/setup",jquery:"lib/jquery-1.11.3.min",bootstrap:"lib/bootstrap.min",text:"lib/requirejs/text",mustache:"lib/mustache.min",localForage:"lib/localforage.min",velocity:"lib/velocity.min",velocityUI:"lib/velocity.ui.min",slidebars:"lib/slidebars",jsPlumb:"lib/dom.jsPlumb-1.7.6",farahey:"lib/farahey-0.5",customScrollbar:"lib/jquery.mCustomScrollbar.min",datatables:"lib/datatables/jquery.dataTables.min",datatablesResponsive:"lib/datatables/extensions/responsive/dataTables.responsive",datatablesTableTools:"lib/datatables/extensions/tabletools/js/dataTables.tableTools",xEditable:"lib/bootstrap-editable.min",morris:"lib/morris.min",raphael:"lib/raphael-min",bootbox:"lib/bootbox.min",easyPieChart:"lib/jquery.easypiechart.min",dragToSelect:"lib/jquery.dragToSelect",hoverIntent:"lib/jquery.hoverIntent.minified",fullScreen:"lib/jquery.fullscreen.min",select2:"lib/select2.min",validator:"lib/validator.min",lazylinepainter:"lib/jquery.lazylinepainter-1.5.1.min",blueImpGallery:"lib/blueimp-gallery",blueImpGalleryHelper:"lib/blueimp-helper",blueImpGalleryBootstrap:"lib/bootstrap-image-gallery",bootstrapConfirmation:"lib/bootstrap-confirmation",bootstrapToggle:"lib/bootstrap2-toggle.min",lazyload:"lib/jquery.lazyload.min",easePack:"lib/EasePack.min",tweenLite:"lib/TweenLite.min",pnotify:"lib/pnotify/pnotify.core","pnotify.buttons":"lib/pnotify/pnotify.buttons","pnotify.confirm":"lib/pnotify/pnotify.confirm","pnotify.nonblock":"lib/pnotify/pnotify.nonblock","pnotify.desktop":"lib/pnotify/pnotify.desktop","pnotify.history":"lib/pnotify/pnotify.history","pnotify.callbacks":"lib/pnotify/pnotify.callbacks","pnotify.reference":"lib/pnotify/pnotify.reference"},shim:{bootstrap:{deps:["jquery"]},farahey:{deps:["jsPlumb"]},velocity:{deps:["jquery"]},velocityUI:{deps:["velocity"]},slidebars:{deps:["jquery"]},customScrollbar:{deps:["jquery"]},datatables:{deps:["jquery"]},datatablesBootstrap:{deps:["datatables"]},datatablesResponsive:{deps:["datatables"]},datatablesTableTools:{deps:["datatables"]},xEditable:{deps:["bootstrap"]},bootbox:{deps:["jquery","bootstrap"],exports:"bootbox"},morris:{deps:["jquery","raphael"],exports:"Morris"},pnotify:{deps:["jquery"]},easyPieChart:{deps:["jquery"]},dragToSelect:{deps:["jquery"]},hoverIntent:{deps:["jquery"]},fullScreen:{deps:["jquery"]},select2:{deps:["jquery"],exports:"Select2"},validator:{deps:["jquery","bootstrap"]},lazylinepainter:{deps:["jquery","bootstrap"]},blueImpGallery:{deps:["jquery"]},bootstrapConfirmation:{deps:["bootstrap"]},bootstrapToggle:{deps:["jquery"]},lazyload:{deps:["jquery"]}}});require.config({baseUrl:jsBaseUrl});requirejs([mainScriptPath]);
//# sourceMappingURL=app.js.map

View File

@@ -1 +0,0 @@
{"version":3,"sources":["app.js.src.js"],"names":["mainScriptPath","document","body","getAttribute","jsBaseUrl","requirejs","config","baseUrl","paths","layout","dialog","templates","img","login","mappage","setup","jquery","bootstrap","text","mustache","localForage","velocity","velocityUI","slidebars","jsPlumb","farahey","customScrollbar","datatables","datatablesResponsive","datatablesTableTools","xEditable","morris","raphael","bootbox","easyPieChart","dragToSelect","hoverIntent","fullScreen","select2","validator","lazylinepainter","blueImpGallery","blueImpGalleryHelper","blueImpGalleryBootstrap","bootstrapConfirmation","bootstrapToggle","lazyload","easePack","tweenLite","pnotify","pnotify.buttons","pnotify.confirm","pnotify.nonblock","pnotify.desktop","pnotify.history","pnotify.callbacks","pnotify.reference","shim","deps","datatablesBootstrap","exports","require"],"mappings":"AACA,GAAIA,gBAAiBC,SAASC,KAAKC,aAAa,eAI5CC,UAAYH,SAASC,KAAKC,aAAa,eAG3CE,WAAUC,QACNC,QAAS,KAETC,OACIC,OAAQ,SACRH,OAAQ,aACRI,OAAQ,gBACRC,UAAW,kBACXC,IAAK,YAGLC,MAAO,cACPC,QAAS,gBACTC,MAAO,cAEPC,OAAQ,wBACRC,UAAW,oBACXC,KAAM,qBACNC,SAAU,mBACVC,YAAa,sBACbC,SAAU,mBACVC,WAAY,sBACZC,UAAW,gBACXC,QAAS,wBACTC,QAAS,kBACTC,gBAAiB,kCACjBC,WAAY,uCAEZC,qBAAsB,6DAEtBC,qBAAsB,gEACtBC,UAAW,6BACXC,OAAQ,iBACRC,QAAS,kBACTC,QAAS,kBACTC,aAAc,8BACdC,aAAc,0BACdC,YAAa,kCACbC,WAAY,4BACZC,QAAS,kBACTC,UAAW,oBACXC,gBAAiB,uCACjBC,eAAgB,sBAChBC,qBAAsB,qBACtBC,wBAAyB,8BACzBC,sBAAuB,6BACvBC,gBAAiB,4BACjBC,SAAU,0BAGVC,SAAU,mBACVC,UAAW,oBAGXC,QAAS,2BACTC,kBAAmB,8BACnBC,kBAAmB,8BACnBC,mBAAoB,+BACpBC,kBAAmB,8BACnBC,kBAAmB,8BACnBC,oBAAqB,gCACrBC,oBAAqB,iCAGzBC,MACIxC,WACIyC,MAAO,WAEXjC,SACIiC,MAAO,YAEXrC,UACIqC,MAAO,WAEXpC,YACIoC,MAAO,aAEXnC,WACImC,MAAO,WAEXhC,iBACIgC,MAAO,WAEX/B,YACI+B,MAAO,WAEXC,qBACID,MAAO,eAEX9B,sBACI8B,MAAO,eAEX7B,sBACI6B,MAAO,eAEX5B,WACI4B,MAAO,cAEXzB,SACIyB,MAAO,SAAU,aACjBE,QAAS,WAEb7B,QACI2B,MAAO,SAAU,WACjBE,QAAS,UAEbX,SACIS,MAAQ,WAEZxB,cACIwB,MAAQ,WAEZvB,cACIuB,MAAQ,WAEZtB,aACIsB,MAAQ,WAEZrB,YACIqB,MAAQ,WAEZpB,SACIoB,MAAQ,UACRE,QAAS,WAEbrB,WACImB,MAAQ,SAAU,cAEtBlB,iBACIkB,MAAQ,SAAU,cAEtBjB,gBACIiB,MAAQ,WAEZd,uBACIc,MAAQ,cAEZb,iBACIa,MAAQ,WAEZZ,UACIY,MAAQ,aAQpBG,SAAQvD,QACJC,QAASH,WAIbC,YAAYL","file":"app.js.map"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,2 +0,0 @@
!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","blueImpGallery"],t):t(window.jQuery,window.blueimp.Gallery)}(function(t,o){"use strict";t.extend(o.prototype.options,{useBootstrapModal:!0});var e=o.prototype.close,n=o.prototype.imageFactory,i=o.prototype.videoFactory,r=o.prototype.textFactory;t.extend(o.prototype,{modalFactory:function(o,e,n,i){if(!this.options.useBootstrapModal||n)return i.call(this,o,e,n);var r=this,a=t(this.container).children(".modal"),c=a.clone().show().on("click",function(t){if(t.target===c[0]||t.target===c.children()[0]){t.preventDefault();t.stopPropagation();r.close()}}),l=i.call(this,o,function(t){e({type:t.type,target:c[0]});c.addClass("in")},n);c.find(".modal-title").text(l.title||String.fromCharCode(160));c.find(".modal-body").append(l);return c[0]},imageFactory:function(t,o,e){return this.modalFactory(t,o,e,n)},videoFactory:function(t,o,e){return this.modalFactory(t,o,e,i)},textFactory:function(t,o,e){return this.modalFactory(t,o,e,r)},close:function(){this.container.find(".modal").removeClass("in");e.call(this)}})});
//# sourceMappingURL=bootstrap-image-gallery.js.map

View File

@@ -1 +0,0 @@
{"version":3,"sources":["bootstrap-image-gallery.js.src.js"],"names":["factory","define","amd","window","jQuery","blueimp","Gallery","$","extend","prototype","options","useBootstrapModal","close","imageFactory","videoFactory","textFactory","modalFactory","obj","callback","factoryInterface","this","call","that","modalTemplate","container","children","modal","clone","show","on","event","target","preventDefault","stopPropagation","element","type","addClass","find","text","title","String","fromCharCode","append","removeClass"],"mappings":"CAaC,SAAUA,GACP,YACsB,mBAAXC,SAAyBA,OAAOC,IAEvCD,QACI,SACA,kBACDD,GAEHA,EACIG,OAAOC,OACPD,OAAOE,QAAQC,UAGzB,SAAUC,EAAGD,GACX,YAEAC,GAAEC,OAAOF,EAAQG,UAAUC,SACvBC,mBAAmB,GAGvB,IAAIC,GAAQN,EAAQG,UAAUG,MAC1BC,EAAeP,EAAQG,UAAUI,aACjCC,EAAeR,EAAQG,UAAUK,aACjCC,EAAcT,EAAQG,UAAUM,WAEpCR,GAAEC,OAAOF,EAAQG,WAEbO,aAAc,SAAUC,EAAKC,EAAUC,EAAkBnB,GACrD,IAAKoB,KAAKV,QAAQC,mBAAqBQ,EACnC,MAAOnB,GAAQqB,KAAKD,KAAMH,EAAKC,EAAUC,EAE7C,IAAIG,GAAOF,KACPG,EAAgBhB,EAAEa,KAAKI,WAAWC,SAAS,UAC3CC,EAAQH,EAAcI,QAAQC,OACzBC,GAAG,QAAS,SAAUC,GAEnB,GAAIA,EAAMC,SAAWL,EAAM,IACnBI,EAAMC,SAAWL,EAAMD,WAAW,GAAI,CAC1CK,EAAME,gBACNF,GAAMG,iBACNX,GAAKV,WAGjBsB,EAAUlC,EAAQqB,KAAKD,KAAMH,EAAK,SAAUa,GACxCZ,GACIiB,KAAML,EAAMK,KACZJ,OAAQL,EAAM,IAElBA,GAAMU,SAAS,OAChBjB,EACPO,GAAMW,KAAK,gBAAgBC,KAAKJ,EAAQK,OAASC,OAAOC,aAAa,KACrEf,GAAMW,KAAK,eAAeK,OAAOR,EACjC,OAAOR,GAAM,IAGjBb,aAAc,SAAUI,EAAKC,EAAUC,GACnC,MAAOC,MAAKJ,aAAaC,EAAKC,EAAUC,EAAkBN,IAG9DC,aAAc,SAAUG,EAAKC,EAAUC,GACnC,MAAOC,MAAKJ,aAAaC,EAAKC,EAAUC,EAAkBL,IAG9DC,YAAa,SAAUE,EAAKC,EAAUC,GAClC,MAAOC,MAAKJ,aAAaC,EAAKC,EAAUC,EAAkBJ,IAG9DH,MAAO,WACHQ,KAAKI,UAAUa,KAAK,UAAUM,YAAY,KAC1C/B,GAAMS,KAAKD","file":"bootstrap-image-gallery.js.map"}

View File

@@ -1,89 +0,0 @@
/*
* Bootstrap Image Gallery 3.0.1
* https://github.com/blueimp/Bootstrap-Image-Gallery
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/MIT
*/
/*global define, window */
(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
define([
'jquery',
'blueImpGallery'
], factory);
} else {
factory(
window.jQuery,
window.blueimp.Gallery
);
}
}(function ($, Gallery) {
'use strict';
$.extend(Gallery.prototype.options, {
useBootstrapModal: true
});
var close = Gallery.prototype.close,
imageFactory = Gallery.prototype.imageFactory,
videoFactory = Gallery.prototype.videoFactory,
textFactory = Gallery.prototype.textFactory;
$.extend(Gallery.prototype, {
modalFactory: function (obj, callback, factoryInterface, factory) {
if (!this.options.useBootstrapModal || factoryInterface) {
return factory.call(this, obj, callback, factoryInterface);
}
var that = this,
modalTemplate = $(this.container).children('.modal'),
modal = modalTemplate.clone().show()
.on('click', function (event) {
// Close modal if click is outside of modal-content:
if (event.target === modal[0] ||
event.target === modal.children()[0]) {
event.preventDefault();
event.stopPropagation();
that.close();
}
}),
element = factory.call(this, obj, function (event) {
callback({
type: event.type,
target: modal[0]
});
modal.addClass('in');
}, factoryInterface);
modal.find('.modal-title').text(element.title || String.fromCharCode(160));
modal.find('.modal-body').append(element);
return modal[0];
},
imageFactory: function (obj, callback, factoryInterface) {
return this.modalFactory(obj, callback, factoryInterface, imageFactory);
},
videoFactory: function (obj, callback, factoryInterface) {
return this.modalFactory(obj, callback, factoryInterface, videoFactory);
},
textFactory: function (obj, callback, factoryInterface) {
return this.modalFactory(obj, callback, factoryInterface, textFactory);
},
close: function () {
this.container.find('.modal').removeClass('in');
close.call(this);
}
});
}));

View File

@@ -1,2 +0,0 @@
!function(e,t,a){var n=function(e,t){"use strict";e.extend(!0,t.defaults,{dom:"<'row'<'col-xs-6'l><'col-xs-6'f>r><'row'<'col-xs-12't>><'row'<'col-xs-6'i><'col-xs-6'p>>",renderer:"bootstrap"});e.extend(t.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm"});t.ext.renderer.pageButton.bootstrap=function(a,n,o,s,r,i){var l,d,c=new t.Api(a),u=a.oClasses,b=a.oLanguage.oPaginate,p=function(t,n){var s,f,T,x,m=function(t){t.preventDefault();e(t.currentTarget).hasClass("disabled")||c.page(t.data.action).draw(!1)};for(s=0,f=n.length;f>s;s++){x=n[s];if(e.isArray(x))p(t,x);else{l="";d="";switch(x){case"ellipsis":l="&hellip;";d="disabled";break;case"first":l=b.sFirst;d=x+(r>0?"":" disabled");break;case"previous":l=b.sPrevious;d=x+(r>0?"":" disabled");break;case"next":l=b.sNext;d=x+(i-1>r?"":" disabled");break;case"last":l=b.sLast;d=x+(i-1>r?"":" disabled");break;default:l=x+1;d=r===x?"active":""}if(l){T=e("<li>",{"class":u.sPageButton+" "+d,"aria-controls":a.sTableId,tabindex:a.iTabIndex,id:0===o&&"string"==typeof x?a.sTableId+"_"+x:null}).append(e("<a>",{href:"#"}).html(l)).appendTo(t);a.oApi._fnBindAction(T,{action:x},m)}}}};p(e(n).empty().html('<ul class="pagination"/>').children("ul"),s)};if(t.TableTools){e.extend(!0,t.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn btn-default",disabled:"disabled"},collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info"},select:{row:"active"}});e.extend(!0,t.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}})}};"function"==typeof define&&define.amd?define(["jquery",""],n):"object"==typeof exports?n(require("jquery"),require("datatables")):jQuery&&n(jQuery,jQuery.fn.dataTable)}(window,document);
//# sourceMappingURL=dataTables.bootstrap.js.map

View File

@@ -1 +0,0 @@
{"version":3,"sources":["dataTables.bootstrap.js.src.js"],"names":["window","document","undefined","factory","$","DataTable","extend","defaults","dom","renderer","ext","classes","sWrapper","sFilterInput","sLengthSelect","pageButton","bootstrap","settings","host","idx","buttons","page","pages","btnDisplay","btnClass","api","Api","oClasses","lang","oLanguage","oPaginate","attach","container","i","ien","node","button","clickHandler","e","preventDefault","currentTarget","hasClass","data","action","draw","length","isArray","sFirst","sPrevious","sNext","sLast","class","sPageButton","aria-controls","sTableId","tabindex","iTabIndex","id","append","href","html","appendTo","oApi","_fnBindAction","empty","children","TableTools","normal","disabled","collection","print","info","select","row","DEFAULTS","oTags","liner","define","amd","exports","require","jQuery","fn","dataTable"],"mappings":"CAUA,SAAUA,EAAQC,EAAUC,GAE5B,GAAIC,GAAU,SAAUC,EAAGC,GAC3B,YAIAD,GAAEE,QAAQ,EAAMD,EAAUE,UACzBC,IACC,2FAGDC,SAAU,aAKXL,GAAEE,OAAQD,EAAUK,IAAIC,SACvBC,SAAe,8CACfC,aAAe,wBACfC,cAAe,yBAKhBT,GAAUK,IAAID,SAASM,WAAWC,UAAY,SAAWC,EAAUC,EAAMC,EAAKC,EAASC,EAAMC,GAC5F,GAGIC,GAAYC,EAHZC,EAAU,GAAIpB,GAAUqB,IAAKT,GAC7BN,EAAUM,EAASU,SACnBC,EAAUX,EAASY,UAAUC,UAG7BC,EAAS,SAAUC,EAAWZ,GACjC,GAAIa,GAAGC,EAAKC,EAAMC,EACdC,EAAe,SAAWC,GAC7BA,EAAEC,gBACInC,GAAEkC,EAAEE,eAAeC,SAAS,aACjChB,EAAIJ,KAAMiB,EAAEI,KAAKC,QAASC,MAAM,GAIlC,KAAMX,EAAE,EAAGC,EAAId,EAAQyB,OAAWX,EAAFD,EAAQA,IAAM,CAC7CG,EAAShB,EAAQa,EAEjB,IAAK7B,EAAE0C,QAASV,GACfL,EAAQC,EAAWI,OAEf,CACJb,EAAa,EACbC,GAAW,EAEX,QAASY,GACR,IAAK,WACJb,EAAa,UACbC,GAAW,UACX,MAED,KAAK,QACJD,EAAaK,EAAKmB,MAClBvB,GAAWY,GAAUf,EAAO,EAC3B,GAAK,YACN,MAED,KAAK,WACJE,EAAaK,EAAKoB,SAClBxB,GAAWY,GAAUf,EAAO,EAC3B,GAAK,YACN,MAED,KAAK,OACJE,EAAaK,EAAKqB,KAClBzB,GAAWY,GAAiBd,EAAM,EAAbD,EACpB,GAAK,YACN,MAED,KAAK,OACJE,EAAaK,EAAKsB,KAClB1B,GAAWY,GAAiBd,EAAM,EAAbD,EACpB,GAAK,YACN,MAED,SACCE,EAAaa,EAAS,CACtBZ,GAAWH,IAASe,EACnB,SAAW,GAId,GAAKb,EAAa,CACjBY,EAAO/B,EAAE,QACP+C,QAASxC,EAAQyC,YAAY,IAAI5B,EACjC6B,gBAAiBpC,EAASqC,SAC1BC,SAAYtC,EAASuC,UACrBC,GAAc,IAARtC,GAA+B,gBAAXiB,GACzBnB,EAASqC,SAAU,IAAKlB,EACxB,OAEDsB,OAAQtD,EAAE,OACTuD,KAAQ,MAERC,KAAMrC,IAEPsC,SAAU7B,EAEZf,GAAS6C,KAAKC,cACb5B,GAAOQ,OAAQP,GAASC,MAO7BN,GACC3B,EAAEc,GAAM8C,QAAQJ,KAAK,4BAA4BK,SAAS,MAC1D7C,GASF,IAAKf,EAAU6D,WAAa,CAE3B9D,EAAEE,QAAQ,EAAMD,EAAU6D,WAAWvD,SACpCqB,UAAa,iBACbZ,SACC+C,OAAU,kBACVC,SAAY,YAEbC,YACCrC,UAAa,8BACbZ,SACC+C,OAAU,GACVC,SAAY,aAGdE,OACCC,KAAQ,mBAETC,QACCC,IAAO,WAKTrE,GAAEE,QAAQ,EAAMD,EAAU6D,WAAWQ,SAASC,OAC7CN,YACCrC,UAAa,KACbI,OAAU,KACVwC,MAAS,QASW,mBAAXC,SAAyBA,OAAOC,IAC3CD,QAAS,SAAU,IAAK1E,GAEI,gBAAZ4E,SAEb5E,EAAS6E,QAAQ,UAAWA,QAAQ,eAE9BC,QAET9E,EAAS8E,OAAQA,OAAOC,GAAGC,YAIzBnF,OAAQC","file":"dataTables.bootstrap.js.map"}

View File

@@ -1,184 +0,0 @@
/**
* DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
* DataTables 1.10 or newer.
*
* This file sets the defaults and adds options to DataTables to style its
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
* for further information.
*/
(function(window, document, undefined){
var factory = function( $, DataTable ) {
"use strict";
/* Set the defaults for DataTables initialisation */
$.extend( true, DataTable.defaults, {
dom:
"<'row'<'col-xs-6'l><'col-xs-6'f>r>" +
"<'row'<'col-xs-12't>>" +
"<'row'<'col-xs-6'i><'col-xs-6'p>>",
renderer: 'bootstrap'
} );
/* Default class modification */
$.extend( DataTable.ext.classes, {
sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
sFilterInput: "form-control input-sm",
sLengthSelect: "form-control input-sm"
} );
/* Bootstrap paging button renderer */
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
var api = new DataTable.Api( settings );
var classes = settings.oClasses;
var lang = settings.oLanguage.oPaginate;
var btnDisplay, btnClass;
var attach = function( container, buttons ) {
var i, ien, node, button;
var clickHandler = function ( e ) {
e.preventDefault();
if ( !$(e.currentTarget).hasClass('disabled') ) {
api.page( e.data.action ).draw( false );
}
};
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
button = buttons[i];
if ( $.isArray( button ) ) {
attach( container, button );
}
else {
btnDisplay = '';
btnClass = '';
switch ( button ) {
case 'ellipsis':
btnDisplay = '&hellip;';
btnClass = 'disabled';
break;
case 'first':
btnDisplay = lang.sFirst;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'previous':
btnDisplay = lang.sPrevious;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'next':
btnDisplay = lang.sNext;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
case 'last':
btnDisplay = lang.sLast;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
default:
btnDisplay = button + 1;
btnClass = page === button ?
'active' : '';
break;
}
if ( btnDisplay ) {
node = $('<li>', {
'class': classes.sPageButton+' '+btnClass,
'aria-controls': settings.sTableId,
'tabindex': settings.iTabIndex,
'id': idx === 0 && typeof button === 'string' ?
settings.sTableId +'_'+ button :
null
} )
.append( $('<a>', {
'href': '#'
} )
.html( btnDisplay )
)
.appendTo( container );
settings.oApi._fnBindAction(
node, {action: button}, clickHandler
);
}
}
}
};
attach(
$(host).empty().html('<ul class="pagination"/>').children('ul'),
buttons
);
};
/*
* TableTools Bootstrap compatibility
* Required TableTools 2.1+
*/
if ( DataTable.TableTools ) {
// Set the classes that TableTools uses to something suitable for Bootstrap
$.extend( true, DataTable.TableTools.classes, {
"container": "DTTT btn-group",
"buttons": {
"normal": "btn btn-default",
"disabled": "disabled"
},
"collection": {
"container": "DTTT_dropdown dropdown-menu",
"buttons": {
"normal": "",
"disabled": "disabled"
}
},
"print": {
"info": "DTTT_print_info"
},
"select": {
"row": "active"
}
} );
// Have the collection use a bootstrap compatible drop down
$.extend( true, DataTable.TableTools.DEFAULTS.oTags, {
"collection": {
"container": "ul",
"button": "li",
"liner": "a"
}
} );
}
}; // /factory
// Define as an AMD module if possible
if ( typeof define === 'function' && define.amd ) {
define( ['jquery', ''], factory );
}
else if ( typeof exports === 'object' ) {
// Node/CommonJS
factory( require('jquery'), require('datatables') );
}
else if ( jQuery ) {
// Otherwise simply initialise as normal, stopping multiple evaluation
factory( jQuery, jQuery.fn.dataTable );
}
})(window, document);

View File

@@ -1,41 +0,0 @@
# TableTools
TableTools is a plug-in for the DataTables HTML table enhancer, which adds a highly customisable button toolbar to a DataTable. Key features include:
* Copy to clipboard
* Save table data as CSV, XLS or PDF files
* Print view for clean printing
* Row selection options
* Easy use predefined buttons
* Simple customisation of buttons
* Well defined API for advanced control
# Installation
To use TableTools, first download DataTables ( http://datatables.net/download ) and place the unzipped TableTools package into a `extensions` directory in the DataTables package (in DataTables 1.9- use the `extras` directory). This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
# Basic usage
TableTools is initialised using the `T` option that it adds to DataTables' `dom` option. For example:
```js
$(document).ready( function () {
$('#example').DataTable( {
dom: 'T<"clear">lfrtip'
} );
} );
```
# Documentation / support
* Documentation: http://datatables.net/extensions/tabletools/
* DataTables support forums: http://datatables.net/forums
# GitHub
If you fancy getting involved with the development of TableTools and help make it better, please refer to its GitHub repo: https://github.com/DataTables/TableTools

File diff suppressed because one or more lines are too long

View File

@@ -1,69 +0,0 @@
/*!
TableTools 2.2.3
2009-2014 SpryMedia Ltd - datatables.net/license
ZeroClipboard 1.0.4
Author: Joseph Huckaby - MIT licensed
*/
var TableTools;
(function(n,k,q){var p=function(m,p){var g={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=k.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+a+
"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,c){(a=this.clients[a])&&a.receiveEvent(b,c)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},
Client:function(a){this.handlers={};this.id=g.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;g.register(this.id,this);a&&this.glue(a)}};g.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,glue:function(a,b){this.domElement=g.$(a);var c=99;this.domElement.style.zIndex&&(c=parseInt(this.domElement.style.zIndex,10)+1);var d=g.getDOMObjectPosition(this.domElement);this.div=k.createElement("div");var f=
this.div.style;f.position="absolute";f.left="0px";f.top="0px";f.width=d.width+"px";f.height=d.height+"px";f.zIndex=c;"undefined"!=typeof b&&""!==b&&(this.div.title=b);0!==d.width&&0!==d.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(d.width,d.height).replace(/&/g,"&amp;"))},positionElement:function(){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&&
0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var c="",d="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var f=location.href.match(/^https/i)?"https://":"http://",c=c+('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+f+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+
g.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+d+'"/><param name="wmode" value="transparent"/></object>');else c+='<embed id="'+this.movieId+'" src="'+g.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+
d+'" wmode="transparent" />';return c},hide:function(){this.div&&(this.div.style.left="-2000px")},show:function(){this.reposition()},destroy:function(){if(this.domElement&&this.div){this.hide();this.div.innerHTML="";var a=k.getElementsByTagName("body")[0];try{a.removeChild(this.div)}catch(b){}this.div=this.domElement=null}},reposition:function(a){a&&((this.domElement=g.$(a))||this.hide());if(this.domElement&&this.div){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.left=""+a.left+
"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setCharSet:function(a){this.charSet=a;this.ready&&this.movie.setCharSet(a)},setBomInc:function(a){this.incBom=a;this.ready&&this.movie.setBomInc(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setAction:function(a){this.action=
a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){var c,a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=k.getElementById(this.movieId);if(!this.movie){c=this;setTimeout(function(){c.receiveEvent("load",
null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setCharSet(this.charSet);this.movie.setBomInc(this.incBom);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&&
this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var d=0,f=this.handlers[a].length;d<
f;d++){var e=this.handlers[a][d];if("function"==typeof e)e(this,b);else if("object"==typeof e&&2==e.length)e[0][e[1]](this,b);else if("string"==typeof e)n[e](this,b)}}};n.ZeroClipboard_TableTools=g;var e=jQuery;TableTools=function(a,b){!this instanceof TableTools&&alert("Warning: TableTools must be initialised with the keyword 'new'");this.s={that:this,dt:e.fn.dataTable.Api?(new e.fn.dataTable.Api(a)).settings()[0]:a.fnSettings(),print:{saveStart:-1,saveLength:-1,saveScroll:-1,funcEnd:function(){}},
buttonCounter:0,select:{type:"",selected:[],preRowSelect:null,postSelected:null,postDeselected:null,all:!1,selectedClass:""},custom:{},swfPath:"",buttonSet:[],master:!1,tags:{}};this.dom={container:null,table:null,print:{hidden:[],message:null},collection:{collection:null,background:null}};this.classes=e.extend(!0,{},TableTools.classes);this.s.dt.bJUI&&e.extend(!0,this.classes,TableTools.classes_themeroller);this.fnSettings=function(){return this.s};"undefined"==typeof b&&(b={});TableTools._aInstances.push(this);
this._fnConstruct(b);return this};TableTools.prototype={fnGetSelected:function(a){var b=[],c=this.s.dt.aoData,d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(c[d[a]].nTr)}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(c[a].nTr)}return b},fnGetSelectedData:function(){var a=[],b=this.s.dt.aoData,c,d;c=0;for(d=b.length;c<d;c++)b[c]._DTTT_selected&&a.push(this.s.dt.oInstance.fnGetData(c));return a},fnGetSelectedIndexes:function(a){var b=[],c=this.s.dt.aoData,
d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(d[a])}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(a)}return b},fnIsSelected:function(a){a=this.s.dt.oInstance.fnGetPosition(a);return!0===this.s.dt.aoData[a]._DTTT_selected?!0:!1},fnSelectAll:function(a){this._fnRowSelect(a?this.s.dt.aiDisplay:this.s.dt.aoData)},fnSelectNone:function(a){this._fnRowDeselect(this.fnGetSelectedIndexes(a))},fnSelect:function(a){"single"==this.s.select.type&&this.fnSelectNone();
this._fnRowSelect(a)},fnDeselect:function(a){this._fnRowDeselect(a)},fnGetTitle:function(a){var b="";"undefined"!=typeof a.sTitle&&""!==a.sTitle?b=a.sTitle:(a=k.getElementsByTagName("title"),0<a.length&&(b=a[0].innerHTML));return 4>"¡".toString().length?b.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""):b.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g,"")},fnCalcColRatios:function(a){var b=this.s.dt.aoColumns,a=this._fnColumnTargets(a.mColumns),c=[],d=0,f=0,e,i;e=0;for(i=a.length;e<i;e++)a[e]&&(d=b[e].nTh.offsetWidth,
f+=d,c.push(d));e=0;for(i=c.length;e<i;e++)c[e]/=f;return c.join("\t")},fnGetTableData:function(a){if(this.s.dt)return this._fnGetDataTablesData(a)},fnSetText:function(a,b){this._fnFlashSetText(a,b)},fnResizeButtons:function(){for(var a in g.clients)if(a){var b=g.clients[a];"undefined"!=typeof b.domElement&&b.domElement.parentNode&&b.positionElement()}},fnResizeRequired:function(){for(var a in g.clients)if(a){var b=g.clients[a];if("undefined"!=typeof b.domElement&&b.domElement.parentNode==this.dom.container&&
!1===b.sized)return!0}return!1},fnPrint:function(a,b){b===q&&(b={});a===q||a?this._fnPrintStart(b):this._fnPrintEnd()},fnInfo:function(a,b){var c=e("<div/>").addClass(this.classes.print.info).html(a).appendTo("body");setTimeout(function(){c.fadeOut("normal",function(){c.remove()})},b)},fnContainer:function(){return this.dom.container},_fnConstruct:function(a){var b=this;this._fnCustomiseSettings(a);this.dom.container=k.createElement(this.s.tags.container);this.dom.container.className=this.classes.container;
"none"!=this.s.select.type&&this._fnRowSelectConfig();this._fnButtonDefinations(this.s.buttonSet,this.dom.container);this.s.dt.aoDestroyCallback.push({sName:"TableTools",fn:function(){e(b.s.dt.nTBody).off("click.DTTT_Select","tr");e(b.dom.container).empty();var a=e.inArray(b,TableTools._aInstances);-1!==a&&TableTools._aInstances.splice(a,1)}})},_fnCustomiseSettings:function(a){"undefined"==typeof this.s.dt._TableToolsInit&&(this.s.master=!0,this.s.dt._TableToolsInit=!0);this.dom.table=this.s.dt.nTable;
this.s.custom=e.extend({},TableTools.DEFAULTS,a);this.s.swfPath=this.s.custom.sSwfPath;"undefined"!=typeof g&&(g.moviePath=this.s.swfPath);this.s.select.type=this.s.custom.sRowSelect;this.s.select.preRowSelect=this.s.custom.fnPreRowSelect;this.s.select.postSelected=this.s.custom.fnRowSelected;this.s.select.postDeselected=this.s.custom.fnRowDeselected;this.s.custom.sSelectedClass&&(this.classes.select.row=this.s.custom.sSelectedClass);this.s.tags=this.s.custom.oTags;this.s.buttonSet=this.s.custom.aButtons},
_fnButtonDefinations:function(a,b){for(var c,d=0,f=a.length;d<f;d++){if("string"==typeof a[d]){if("undefined"==typeof TableTools.BUTTONS[a[d]]){alert("TableTools: Warning - unknown button type: "+a[d]);continue}c=e.extend({},TableTools.BUTTONS[a[d]],!0)}else{if("undefined"==typeof TableTools.BUTTONS[a[d].sExtends]){alert("TableTools: Warning - unknown button type: "+a[d].sExtends);continue}c=e.extend({},TableTools.BUTTONS[a[d].sExtends],!0);c=e.extend(c,a[d],!0)}(c=this._fnCreateButton(c,e(b).hasClass(this.classes.collection.container)))&&
b.appendChild(c)}},_fnCreateButton:function(a,b){var c=this._fnButtonBase(a,b);if(a.sAction.match(/flash/)){if(!this._fnHasFlash())return!1;this._fnFlashConfig(c,a)}else"text"==a.sAction?this._fnTextConfig(c,a):"div"==a.sAction?this._fnTextConfig(c,a):"collection"==a.sAction&&(this._fnTextConfig(c,a),this._fnCollectionConfig(c,a));if(-1!==this.s.dt.iTabIndex)e(c).attr("tabindex",this.s.dt.iTabIndex).attr("aria-controls",this.s.dt.sTableId).on("keyup.DTTT",function(a){13===a.keyCode&&(a.stopPropagation(),
e(this).trigger("click"))}).on("mousedown.DTTT",function(b){a.sAction.match(/flash/)||b.preventDefault()});return c},_fnButtonBase:function(a,b){var c,d,f;b?(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.collection.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.collection.liner,f=this.classes.collection.buttons.normal):(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.liner,f=this.classes.buttons.normal);c=k.createElement(c);
d=k.createElement(d);var e=this._fnGetMasterSettings();c.className=f+" "+a.sButtonClass;c.setAttribute("id","ToolTables_"+this.s.dt.sInstance+"_"+e.buttonCounter);c.appendChild(d);d.innerHTML=a.sButtonText;e.buttonCounter++;return c},_fnGetMasterSettings:function(){if(this.s.master)return this.s;for(var a=TableTools._aInstances,b=0,c=a.length;b<c;b++)if(this.dom.table==a[b].s.dt.nTable)return a[b].s},_fnCollectionConfig:function(a,b){var c=k.createElement(this.s.tags.collection.container);c.style.display=
"none";c.className=this.classes.collection.container;b._collection=c;k.body.appendChild(c);this._fnButtonDefinations(b.aButtons,c)},_fnCollectionShow:function(a,b){var c=this,d=e(a).offset(),f=b._collection,j=d.left,d=d.top+e(a).outerHeight(),i=e(n).height(),h=e(k).height(),o=e(n).width(),g=e(k).width();f.style.position="absolute";f.style.left=j+"px";f.style.top=d+"px";f.style.display="block";e(f).css("opacity",0);var l=k.createElement("div");l.style.position="absolute";l.style.left="0px";l.style.top=
"0px";l.style.height=(i>h?i:h)+"px";l.style.width=(o>g?o:g)+"px";l.className=this.classes.collection.background;e(l).css("opacity",0);k.body.appendChild(l);k.body.appendChild(f);i=e(f).outerWidth();o=e(f).outerHeight();j+i>g&&(f.style.left=g-i+"px");d+o>h&&(f.style.top=d-o-e(a).outerHeight()+"px");this.dom.collection.collection=f;this.dom.collection.background=l;setTimeout(function(){e(f).animate({opacity:1},500);e(l).animate({opacity:0.25},500)},10);this.fnResizeButtons();e(l).click(function(){c._fnCollectionHide.call(c,
null,null)})},_fnCollectionHide:function(a,b){!(null!==b&&"collection"==b.sExtends)&&null!==this.dom.collection.collection&&(e(this.dom.collection.collection).animate({opacity:0},500,function(){this.style.display="none"}),e(this.dom.collection.background).animate({opacity:0},500,function(){this.parentNode.removeChild(this)}),this.dom.collection.collection=null,this.dom.collection.background=null)},_fnRowSelectConfig:function(){if(this.s.master){var a=this,b=this.s.dt;e(b.nTable).addClass(this.classes.select.table);
"os"===this.s.select.type&&(e(b.nTBody).on("mousedown.DTTT_Select","tr",function(a){if(a.shiftKey)e(b.nTBody).css("-moz-user-select","none").one("selectstart.DTTT_Select","tr",function(){return!1})}),e(b.nTBody).on("mouseup.DTTT_Select","tr",function(){e(b.nTBody).css("-moz-user-select","")}));e(b.nTBody).on("click.DTTT_Select",this.s.custom.sRowSelector,function(c){var d=this.nodeName.toLowerCase()==="tr"?this:e(this).parents("tr")[0],f=a.s.select,j=a.s.dt.oInstance.fnGetPosition(d);if(d.parentNode==
b.nTBody&&b.oInstance.fnGetData(d)!==null){if(f.type=="os")if(c.ctrlKey||c.metaKey)a.fnIsSelected(d)?a._fnRowDeselect(d,c):a._fnRowSelect(d,c);else if(c.shiftKey){var i=a.s.dt.aiDisplay.slice(),h=e.inArray(f.lastRow,i),o=e.inArray(j,i);if(a.fnGetSelected().length===0||h===-1)i.splice(e.inArray(j,i)+1,i.length);else{if(h>o)var g=o,o=h,h=g;i.splice(o+1,i.length);i.splice(0,h)}if(a.fnIsSelected(d)){i.splice(e.inArray(j,i),1);a._fnRowDeselect(i,c)}else a._fnRowSelect(i,c)}else if(a.fnIsSelected(d)&&a.fnGetSelected().length===
1)a._fnRowDeselect(d,c);else{a.fnSelectNone();a._fnRowSelect(d,c)}else if(a.fnIsSelected(d))a._fnRowDeselect(d,c);else if(f.type=="single"){a.fnSelectNone();a._fnRowSelect(d,c)}else f.type=="multi"&&a._fnRowSelect(d,c);f.lastRow=j}});b.oApi._fnCallbackReg(b,"aoRowCreatedCallback",function(c,d,f){b.aoData[f]._DTTT_selected&&e(c).addClass(a.classes.select.row)},"TableTools-SelectAll")}},_fnRowSelect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);
if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!0)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!0,c[f].nTr&&e(c[f].nTr).addClass(this.classes.select.row);null!==this.s.select.postSelected&&this.s.select.postSelected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!0)}},_fnRowDeselect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,
b,d,!1)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!1,c[f].nTr&&e(c[f].nTr).removeClass(this.classes.select.row);null!==this.s.select.postDeselected&&this.s.select.postDeselected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!1)}},_fnSelectData:function(a){var b=[],c,d,f;if(a.nodeName)c=this.s.dt.oInstance.fnGetPosition(a),b.push(this.s.dt.aoData[c]);else if("undefined"!==typeof a.length){d=0;for(f=a.length;d<f;d++)a[d].nodeName?(c=this.s.dt.oInstance.fnGetPosition(a[d]),b.push(this.s.dt.aoData[c])):
"number"===typeof a[d]?b.push(this.s.dt.aoData[a[d]]):b.push(a[d])}else b.push(a);return b},_fnTextConfig:function(a,b){var c=this;null!==b.fnInit&&b.fnInit.call(this,a,b);""!==b.sToolTip&&(a.title=b.sToolTip);e(a).hover(function(){b.fnMouseover!==null&&b.fnMouseover.call(this,a,b,null)},function(){b.fnMouseout!==null&&b.fnMouseout.call(this,a,b,null)});null!==b.fnSelect&&TableTools._fnEventListen(this,"select",function(d){b.fnSelect.call(c,a,b,d)});e(a).click(function(d){b.fnClick!==null&&b.fnClick.call(c,
a,b,null,d);b.fnComplete!==null&&b.fnComplete.call(c,a,b,null,null);c._fnCollectionHide(a,b)})},_fnHasFlash:function(){try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return!0}catch(a){if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]!==q&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1},_fnFlashConfig:function(a,b){var c=this,d=new g.Client;null!==b.fnInit&&b.fnInit.call(this,a,b);d.setHandCursor(!0);"flash_save"==b.sAction?
(d.setAction("save"),d.setCharSet("utf16le"==b.sCharSet?"UTF16LE":"UTF8"),d.setBomInc(b.bBomInc),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):"flash_pdf"==b.sAction?(d.setAction("pdf"),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):d.setAction("copy");d.addEventListener("mouseOver",function(){b.fnMouseover!==null&&b.fnMouseover.call(c,a,b,d)});d.addEventListener("mouseOut",function(){b.fnMouseout!==null&&b.fnMouseout.call(c,a,b,d)});d.addEventListener("mouseDown",function(){b.fnClick!==
null&&b.fnClick.call(c,a,b,d)});d.addEventListener("complete",function(f,e){b.fnComplete!==null&&b.fnComplete.call(c,a,b,d,e);c._fnCollectionHide(a,b)});this._fnFlashGlue(d,a,b.sToolTip)},_fnFlashGlue:function(a,b,c){var d=this,f=b.getAttribute("id");k.getElementById(f)?a.glue(b,c):setTimeout(function(){d._fnFlashGlue(a,b,c)},100)},_fnFlashSetText:function(a,b){var c=this._fnChunkData(b,8192);a.clearText();for(var d=0,f=c.length;d<f;d++)a.appendText(c[d])},_fnColumnTargets:function(a){var b=[],c=
this.s.dt,d,f=c.aoColumns;d=f.length;if("function"==typeof a){a=a.call(this,c);for(c=0;c<d;c++)b.push(-1!==e.inArray(c,a)?!0:!1)}else if("object"==typeof a){for(c=0;c<d;c++)b.push(!1);c=0;for(d=a.length;c<d;c++)b[a[c]]=!0}else if("visible"==a)for(c=0;c<d;c++)b.push(f[c].bVisible?!0:!1);else if("hidden"==a)for(c=0;c<d;c++)b.push(f[c].bVisible?!1:!0);else if("sortable"==a)for(c=0;c<d;c++)b.push(f[c].bSortable?!0:!1);else for(c=0;c<d;c++)b.push(!0);return b},_fnNewline:function(a){return"auto"==a.sNewLine?
navigator.userAgent.match(/Windows/)?"\r\n":"\n":a.sNewLine},_fnGetDataTablesData:function(a){var b,c,d,f,j,i=[],h="",g=this.s.dt,k,l=RegExp(a.sFieldBoundary,"g"),n=this._fnColumnTargets(a.mColumns);d="undefined"!=typeof a.bSelectedOnly?a.bSelectedOnly:!1;if(a.bHeader){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.aoColumns[b].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}d=
!0;var m;f=this.fnGetSelectedIndexes();m=(d="none"!==this.s.select.type&&d&&0!==f.length)?f:p.Api?(new p.Api(g)).rows(a.oSelectorOpts).indexes().flatten().toArray():g.oInstance.$("tr",a.oSelectorOpts).map(function(a,b){return g.oInstance.fnGetPosition(b)}).get();d=0;for(f=m.length;d<f;d++){k=g.aoData[m[d]].nTr;j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.oApi._fnGetCellData(g,m[d],b,"display"),a.fnCellRender?h=a.fnCellRender(h,b,k,m[d])+"":"string"==typeof h?(h=h.replace(/\n/g," "),h=h.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,
"$1$2$3"),h=h.replace(/<.*?>/g,"")):h+="",h=h.replace(/^\s+/,"").replace(/\s+$/,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator));a.bOpenRows&&(b=e.grep(g.aoOpenRows,function(a){return a.nParent===k}),1===b.length&&(h=this._fnBoundData(e("td",b[0].nTr).html(),a.sFieldBoundary,l),i.push(h)))}if(a.bFooter&&null!==g.nTFoot){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&null!==g.aoColumns[b].nTf&&(h=g.aoColumns[b].nTf.innerHTML.replace(/\n/g,
" ").replace(/<.*?>/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}return i.join(this._fnNewline(a))},_fnBoundData:function(a,b,c){return""===b?a:b+a.replace(c,b+b)+b},_fnChunkData:function(a,b){for(var c=[],d=a.length,f=0;f<d;f+=b)f+b<d?c.push(a.substring(f,f+b)):c.push(a.substring(f,d));return c},_fnHtmlDecode:function(a){if(-1===a.indexOf("&"))return a;var b=k.createElement("div");return a.replace(/&([^\s]*?);/g,function(a,d){if("#"===
a.substr(1,1))return String.fromCharCode(Number(d.substr(1)));b.innerHTML=a;return b.childNodes[0].nodeValue})},_fnPrintStart:function(a){var b=this,c=this.s.dt;this._fnPrintHideNodes(c.nTable);this.s.print.saveStart=c._iDisplayStart;this.s.print.saveLength=c._iDisplayLength;a.bShowAll&&(c._iDisplayStart=0,c._iDisplayLength=-1,c.oApi._fnCalculateEnd&&c.oApi._fnCalculateEnd(c),c.oApi._fnDraw(c));if(""!==c.oScroll.sX||""!==c.oScroll.sY)this._fnPrintScrollStart(c),e(this.s.dt.nTable).bind("draw.DTTT_Print",
function(){b._fnPrintScrollStart(c)});var d=c.aanFeatures,f;for(f in d)if("i"!=f&&"t"!=f&&1==f.length)for(var g=0,i=d[f].length;g<i;g++)this.dom.print.hidden.push({node:d[f][g],display:"block"}),d[f][g].style.display="none";e(k.body).addClass(this.classes.print.body);""!==a.sInfo&&this.fnInfo(a.sInfo,3E3);a.sMessage&&e("<div/>").addClass(this.classes.print.message).html(a.sMessage).prependTo("body");this.s.print.saveScroll=e(n).scrollTop();n.scrollTo(0,0);e(k).bind("keydown.DTTT",function(a){if(a.keyCode==
27){a.preventDefault();b._fnPrintEnd.call(b,a)}})},_fnPrintEnd:function(){var a=this.s.dt,b=this.s.print;this._fnPrintShowNodes();if(""!==a.oScroll.sX||""!==a.oScroll.sY)e(this.s.dt.nTable).unbind("draw.DTTT_Print"),this._fnPrintScrollEnd();n.scrollTo(0,b.saveScroll);e("div."+this.classes.print.message).remove();e(k.body).removeClass("DTTT_Print");a._iDisplayStart=b.saveStart;a._iDisplayLength=b.saveLength;a.oApi._fnCalculateEnd&&a.oApi._fnCalculateEnd(a);a.oApi._fnDraw(a);e(k).unbind("keydown.DTTT")},
_fnPrintScrollStart:function(){var a=this.s.dt;a.nScrollHead.getElementsByTagName("div")[0].getElementsByTagName("table");var b=a.nTable.parentNode,c;c=a.nTable.getElementsByTagName("thead");0<c.length&&a.nTable.removeChild(c[0]);null!==a.nTFoot&&(c=a.nTable.getElementsByTagName("tfoot"),0<c.length&&a.nTable.removeChild(c[0]));c=a.nTHead.cloneNode(!0);a.nTable.insertBefore(c,a.nTable.childNodes[0]);null!==a.nTFoot&&(c=a.nTFoot.cloneNode(!0),a.nTable.insertBefore(c,a.nTable.childNodes[1]));""!==a.oScroll.sX&&
(a.nTable.style.width=e(a.nTable).outerWidth()+"px",b.style.width=e(a.nTable).outerWidth()+"px",b.style.overflow="visible");""!==a.oScroll.sY&&(b.style.height=e(a.nTable).outerHeight()+"px",b.style.overflow="visible")},_fnPrintScrollEnd:function(){var a=this.s.dt,b=a.nTable.parentNode;""!==a.oScroll.sX&&(b.style.width=a.oApi._fnStringToCss(a.oScroll.sX),b.style.overflow="auto");""!==a.oScroll.sY&&(b.style.height=a.oApi._fnStringToCss(a.oScroll.sY),b.style.overflow="auto")},_fnPrintShowNodes:function(){for(var a=
this.dom.print.hidden,b=0,c=a.length;b<c;b++)a[b].node.style.display=a[b].display;a.splice(0,a.length)},_fnPrintHideNodes:function(a){for(var b=this.dom.print.hidden,c=a.parentNode,d=c.childNodes,f=0,g=d.length;f<g;f++)if(d[f]!=a&&1==d[f].nodeType){var i=e(d[f]).css("display");"none"!=i&&(b.push({node:d[f],display:i}),d[f].style.display="none")}"BODY"!=c.nodeName.toUpperCase()&&this._fnPrintHideNodes(c)}};TableTools._aInstances=[];TableTools._aListeners=[];TableTools.fnGetMasters=function(){for(var a=
[],b=0,c=TableTools._aInstances.length;b<c;b++)TableTools._aInstances[b].s.master&&a.push(TableTools._aInstances[b]);return a};TableTools.fnGetInstance=function(a){"object"!=typeof a&&(a=k.getElementById(a));for(var b=0,c=TableTools._aInstances.length;b<c;b++)if(TableTools._aInstances[b].s.master&&TableTools._aInstances[b].dom.table==a)return TableTools._aInstances[b];return null};TableTools._fnEventListen=function(a,b,c){TableTools._aListeners.push({that:a,type:b,fn:c})};TableTools._fnEventDispatch=
function(a,b,c,d){for(var f=TableTools._aListeners,e=0,g=f.length;e<g;e++)a.dom.table==f[e].that.dom.table&&f[e].type==b&&f[e].fn(c,d)};TableTools.buttonBase={sAction:"text",sTag:"default",sLinerTag:"default",sButtonClass:"DTTT_button_text",sButtonText:"Button text",sTitle:"",sToolTip:"",sCharSet:"utf8",bBomInc:!1,sFileName:"*.csv",sFieldBoundary:"",sFieldSeperator:"\t",sNewLine:"auto",mColumns:"all",bHeader:!0,bFooter:!0,bOpenRows:!1,bSelectedOnly:!1,oSelectorOpts:q,fnMouseover:null,fnMouseout:null,
fnClick:null,fnSelect:null,fnComplete:null,fnInit:null,fnCellRender:null};TableTools.BUTTONS={csv:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sButtonClass:"DTTT_button_csv",sButtonText:"CSV",sFieldBoundary:'"',sFieldSeperator:",",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),xls:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sCharSet:"utf16le",bBomInc:!0,sButtonClass:"DTTT_button_xls",sButtonText:"Excel",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),
copy:e.extend({},TableTools.buttonBase,{sAction:"flash_copy",sButtonClass:"DTTT_button_copy",sButtonText:"Copy",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))},fnComplete:function(a,b,c,d){a=d.split("\n").length;b.bHeader&&a--;null!==this.s.dt.nTFoot&&b.bFooter&&a--;this.fnInfo("<h6>Table copied</h6><p>Copied "+a+" row"+(1==a?"":"s")+" to the clipboard.</p>",1500)}}),pdf:e.extend({},TableTools.buttonBase,{sAction:"flash_pdf",sNewLine:"\n",sFileName:"*.pdf",sButtonClass:"DTTT_button_pdf",
sButtonText:"PDF",sPdfOrientation:"portrait",sPdfSize:"A4",sPdfMessage:"",fnClick:function(a,b,c){this.fnSetText(c,"title:"+this.fnGetTitle(b)+"\nmessage:"+b.sPdfMessage+"\ncolWidth:"+this.fnCalcColRatios(b)+"\norientation:"+b.sPdfOrientation+"\nsize:"+b.sPdfSize+"\n--/TableToolsOpts--\n"+this.fnGetTableData(b))}}),print:e.extend({},TableTools.buttonBase,{sInfo:"<h6>Print view</h6><p>Please use your browser's print function to print this table. Press escape when finished.</p>",sMessage:null,bShowAll:!0,
sToolTip:"View print view",sButtonClass:"DTTT_button_print",sButtonText:"Print",fnClick:function(a,b){this.fnPrint(!0,b)}}),text:e.extend({},TableTools.buttonBase),select:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_single:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",
fnSelect:function(a){1==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_all:e.extend({},TableTools.buttonBase,{sButtonText:"Select all",fnClick:function(){this.fnSelectAll()},fnSelect:function(a){this.fnGetSelected().length==this.s.dt.fnRecordsDisplay()?e(a).addClass(this.classes.buttons.disabled):e(a).removeClass(this.classes.buttons.disabled)}}),select_none:e.extend({},
TableTools.buttonBase,{sButtonText:"Deselect all",fnClick:function(){this.fnSelectNone()},fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),ajax:e.extend({},TableTools.buttonBase,{sAjaxUrl:"/xhr.php",sButtonText:"Ajax button",fnClick:function(a,b){var c=this.fnGetTableData(b);e.ajax({url:b.sAjaxUrl,data:[{name:"tableData",value:c}],success:b.fnAjaxComplete,
dataType:"json",type:"POST",cache:!1,error:function(){alert("Error detected when sending table data to server")}})},fnAjaxComplete:function(){alert("Ajax complete")}}),div:e.extend({},TableTools.buttonBase,{sAction:"div",sTag:"div",sButtonClass:"DTTT_nonbutton",sButtonText:"Text button"}),collection:e.extend({},TableTools.buttonBase,{sAction:"collection",sButtonClass:"DTTT_button_collection",sButtonText:"Collection",fnClick:function(a,b){this._fnCollectionShow(a,b)}})};TableTools.buttons=TableTools.BUTTONS;
TableTools.classes={container:"DTTT_container",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"},collection:{container:"DTTT_collection",background:"DTTT_collection_background",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"}},select:{table:"DTTT_selectable",row:"DTTT_selected selected"},print:{body:"DTTT_Print",info:"DTTT_print_info",message:"DTTT_PrintMessage"}};TableTools.classes_themeroller={container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},
collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}};TableTools.DEFAULTS={sSwfPath:"../swf/copy_csv_xls_pdf.swf",sRowSelect:"none",sRowSelector:"tr",sSelectedClass:null,fnPreRowSelect:null,fnRowSelected:null,fnRowDeselected:null,aButtons:["copy","csv","xls","pdf","print"],oTags:{container:"div",button:"a",liner:"span",collection:{container:"div",button:"a",liner:"span"}}};TableTools.defaults=TableTools.DEFAULTS;TableTools.prototype.CLASS="TableTools";TableTools.version="2.2.3";
e.fn.dataTable.Api&&e.fn.dataTable.Api.register("tabletools()",function(){var a=null;0<this.context.length&&(a=TableTools.fnGetInstance(this.context[0].nTable));return a});"function"==typeof e.fn.dataTable&&"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.9.0")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;return(new TableTools(a.oInstance,b?b.tableTools||b.oTableTools||{}:{})).dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download");
e.fn.DataTable.TableTools=TableTools;"function"==typeof m.fn.dataTable&&"function"==typeof m.fn.dataTableExt.fnVersionCheck&&m.fn.dataTableExt.fnVersionCheck("1.9.0")?m.fn.dataTableExt.aoFeatures.push({fnInit:function(a){a=new TableTools(a.oInstance,"undefined"!=typeof a.oInit.oTableTools?a.oInit.oTableTools:{});TableTools._aInstances.push(a);return a.dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download");
m.fn.dataTable.TableTools=TableTools;return m.fn.DataTable.TableTools=TableTools};"function"===typeof define&&define.amd?define(["jquery","datatables"],p):"object"===typeof exports?p(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.TableTools&&p(jQuery,jQuery.fn.dataTable)})(window,document);

2
public/js/v1.1.2/app.js Normal file
View File

@@ -0,0 +1,2 @@
var mainScriptPath=document.body.getAttribute("data-script"),jsBaseUrl=document.body.getAttribute("data-js-path");requirejs.config({baseUrl:"js",paths:{layout:"layout",config:"app/config",dialog:"app/ui/dialog",templates:"../../templates",img:"../../img",login:"./app/login",mappage:"./app/mappage",setup:"./app/setup",jquery:"lib/jquery-3.0.0.min",bootstrap:"lib/bootstrap.min",text:"lib/requirejs/text",mustache:"lib/mustache.min",localForage:"lib/localforage.min",velocity:"lib/velocity.min",velocityUI:"lib/velocity.ui.min",slidebars:"lib/slidebars",jsPlumb:"lib/dom.jsPlumb-1.7.6",farahey:"lib/farahey-0.5",customScrollbar:"lib/jquery.mCustomScrollbar.min",mousewheel:"lib/jquery.mousewheel.min",xEditable:"lib/bootstrap-editable.min",morris:"lib/morris.min",raphael:"lib/raphael-min",bootbox:"lib/bootbox.min",easyPieChart:"lib/jquery.easypiechart.min",dragToSelect:"lib/jquery.dragToSelect",hoverIntent:"lib/jquery.hoverIntent.minified",fullScreen:"lib/jquery.fullscreen.min",select2:"lib/select2.min",validator:"lib/validator.min",lazylinepainter:"lib/jquery.lazylinepainter-1.5.1.min",blueImpGallery:"lib/blueimp-gallery",blueImpGalleryHelper:"lib/blueimp-helper",blueImpGalleryBootstrap:"lib/bootstrap-image-gallery",bootstrapConfirmation:"lib/bootstrap-confirmation",bootstrapToggle:"lib/bootstrap2-toggle.min",lazyload:"lib/jquery.lazyload.min",easePack:"lib/EasePack.min",tweenLite:"lib/TweenLite.min","datatables.net":"lib/datatables/DataTables-1.10.12/js/jquery.dataTables.min","datatables.net-buttons":"lib/datatables/Buttons-1.2.1/js/dataTables.buttons.min","datatables.net-buttons-html":"lib/datatables/Buttons-1.2.1/js/buttons.html5.min","datatables.net-responsive":"lib/datatables/Responsive-2.1.0/js/dataTables.responsive.min","datatables.net-select":"lib/datatables/Select-1.2.0/js/dataTables.select.min",pnotify:"lib/pnotify/pnotify.core","pnotify.buttons":"lib/pnotify/pnotify.buttons","pnotify.confirm":"lib/pnotify/pnotify.confirm","pnotify.nonblock":"lib/pnotify/pnotify.nonblock","pnotify.desktop":"lib/pnotify/pnotify.desktop","pnotify.history":"lib/pnotify/pnotify.history","pnotify.callbacks":"lib/pnotify/pnotify.callbacks","pnotify.reference":"lib/pnotify/pnotify.reference"},shim:{bootstrap:{deps:["jquery"]},farahey:{deps:["jsPlumb"]},velocity:{deps:["jquery"]},velocityUI:{deps:["velocity"]},slidebars:{deps:["jquery"]},customScrollbar:{deps:["jquery","mousewheel"]},"datatables.net":{deps:["jquery"]},"datatables.net-buttons":{deps:["datatables.net"]},"datatables.net-buttons-html":{deps:["datatables.net-buttons"]},"datatables.net-responsive":{deps:["datatables.net"]},"datatables.net-select":{deps:["datatables.net"]},xEditable:{deps:["bootstrap"]},bootbox:{deps:["jquery","bootstrap"],exports:"bootbox"},morris:{deps:["jquery","raphael"],exports:"Morris"},pnotify:{deps:["jquery"]},easyPieChart:{deps:["jquery"]},dragToSelect:{deps:["jquery"]},hoverIntent:{deps:["jquery"]},fullScreen:{deps:["jquery"]},select2:{deps:["jquery"],exports:"Select2"},validator:{deps:["jquery","bootstrap"]},lazylinepainter:{deps:["jquery","bootstrap"]},blueImpGallery:{deps:["jquery"]},bootstrapConfirmation:{deps:["bootstrap"]},bootstrapToggle:{deps:["jquery"]},lazyload:{deps:["jquery"]}}});require.config({baseUrl:jsBaseUrl});requirejs([mainScriptPath]);
//# sourceMappingURL=app.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["app.js.src.js"],"names":["mainScriptPath","document","body","getAttribute","jsBaseUrl","requirejs","config","baseUrl","paths","layout","dialog","templates","img","login","mappage","setup","jquery","bootstrap","text","mustache","localForage","velocity","velocityUI","slidebars","jsPlumb","farahey","customScrollbar","mousewheel","xEditable","morris","raphael","bootbox","easyPieChart","dragToSelect","hoverIntent","fullScreen","select2","validator","lazylinepainter","blueImpGallery","blueImpGalleryHelper","blueImpGalleryBootstrap","bootstrapConfirmation","bootstrapToggle","lazyload","easePack","tweenLite","datatables.net","datatables.net-buttons","datatables.net-buttons-html","datatables.net-responsive","datatables.net-select","pnotify","pnotify.buttons","pnotify.confirm","pnotify.nonblock","pnotify.desktop","pnotify.history","pnotify.callbacks","pnotify.reference","shim","deps","exports","require"],"mappings":"AACA,GAAIA,gBAAiBC,SAASC,KAAKC,aAAa,eAI5CC,UAAYH,SAASC,KAAKC,aAAa,eAG3CE,WAAUC,QACNC,QAAS,KAETC,OACIC,OAAQ,SACRH,OAAQ,aACRI,OAAQ,gBACRC,UAAW,kBACXC,IAAK,YAGLC,MAAO,cACPC,QAAS,gBACTC,MAAO,cAEPC,OAAQ,uBACRC,UAAW,oBACXC,KAAM,qBACNC,SAAU,mBACVC,YAAa,sBACbC,SAAU,mBACVC,WAAY,sBACZC,UAAW,gBACXC,QAAS,wBACTC,QAAS,kBACTC,gBAAiB,kCACjBC,WAAY,4BACZC,UAAW,6BACXC,OAAQ,iBACRC,QAAS,kBACTC,QAAS,kBACTC,aAAc,8BACdC,aAAc,0BACdC,YAAa,kCACbC,WAAY,4BACZC,QAAS,kBACTC,UAAW,oBACXC,gBAAiB,uCACjBC,eAAgB,sBAChBC,qBAAsB,qBACtBC,wBAAyB,8BACzBC,sBAAuB,6BACvBC,gBAAiB,4BACjBC,SAAU,0BAGVC,SAAU,mBACVC,UAAW,oBAGXC,iBAAkB,6DAClBC,yBAA0B,yDAC1BC,8BAA+B,oDAC/BC,4BAA6B,+DAC7BC,wBAAyB,uDAGzBC,QAAS,2BACTC,kBAAmB,8BACnBC,kBAAmB,8BACnBC,mBAAoB,+BACpBC,kBAAmB,8BACnBC,kBAAmB,8BACnBC,oBAAqB,gCACrBC,oBAAqB,iCAEzBC,MACI3C,WACI4C,MAAO,WAEXpC,SACIoC,MAAO,YAEXxC,UACIwC,MAAO,WAEXvC,YACIuC,MAAO,aAEXtC,WACIsC,MAAO,WAEXnC,iBACImC,MAAO,SAAU,eAErBd,kBACIc,MAAO,WAEXb,0BACIa,MAAO,mBAEXZ,+BACIY,MAAO,2BAEXX,6BACIW,MAAO,mBAEXV,yBACIU,MAAO,mBAEXjC,WACIiC,MAAO,cAEX9B,SACI8B,MAAO,SAAU,aACjBC,QAAS,WAEbjC,QACIgC,MAAO,SAAU,WACjBC,QAAS,UAEbV,SACIS,MAAQ,WAEZ7B,cACI6B,MAAQ,WAEZ5B,cACI4B,MAAQ,WAEZ3B,aACI2B,MAAQ,WAEZ1B,YACI0B,MAAQ,WAEZzB,SACIyB,MAAQ,UACRC,QAAS,WAEbzB,WACIwB,MAAQ,SAAU,cAEtBvB,iBACIuB,MAAQ,SAAU,cAEtBtB,gBACIsB,MAAQ,WAEZnB,uBACImB,MAAQ,cAEZlB,iBACIkB,MAAQ,WAEZjB,UACIiB,MAAQ,aAQpBE,SAAQzD,QACJC,QAASH,WAIbC,YAAYL","file":"app.js.map"}

View File

@@ -21,7 +21,7 @@ requirejs.config({
mappage: './app/mappage', // initial start "map page" view
setup: './app/setup', // initial start "setup page" view
jquery: 'lib/jquery-1.11.3.min', // v1.11.3 jQuery
jquery: 'lib/jquery-3.0.0.min', // v3.0.0 jQuery
bootstrap: 'lib/bootstrap.min', // v3.3.0 Bootstrap js code - http://getbootstrap.com/javascript
text: 'lib/requirejs/text', // v2.0.12 A RequireJS/AMD loader plugin for loading text resources.
mustache: 'lib/mustache.min', // v1.0.0 Javascript template engine - http://mustache.github.io
@@ -32,11 +32,7 @@ requirejs.config({
jsPlumb: 'lib/dom.jsPlumb-1.7.6', // v1.7.6 jsPlumb (Vanilla)- main map draw plugin https://jsplumbtoolkit.com
farahey: 'lib/farahey-0.5', // v0.5 jsPlumb "magnetizing" extension - https://github.com/jsplumb/farahey
customScrollbar: 'lib/jquery.mCustomScrollbar.min', // v3.1.3 Custom scroll bars - http://manos.malihu.gr
datatables: 'lib/datatables/jquery.dataTables.min', // v1.10.7 DataTables - https://datatables.net
//datatablesBootstrap: 'lib/datatables/dataTables.bootstrap', // DataTables - not used (bootstrap style)
datatablesResponsive: 'lib/datatables/extensions/responsive/dataTables.responsive', // v1.0.6 TableTools (PlugIn) - https://datatables.net/extensions/responsive
datatablesTableTools: 'lib/datatables/extensions/tabletools/js/dataTables.tableTools', // v2.2.3 TableTools (PlugIn) - https://datatables.net/extensions/tabletools
mousewheel: 'lib/jquery.mousewheel.min', // v3.1.13 Mousewheel - https://github.com/jquery/jquery-mousewheel
xEditable: 'lib/bootstrap-editable.min', // v1.5.1 X-editable - in placed editing
morris: 'lib/morris.min', // v0.5.1 Morris.js - graphs and charts
raphael: 'lib/raphael-min', // v2.1.2 Raphaël - required for morris (dependency)
@@ -48,9 +44,9 @@ requirejs.config({
select2: 'lib/select2.min', // v4.0.3 Drop Down customization - https://select2.github.io
validator: 'lib/validator.min', // v0.10.1 Validator for Bootstrap 3 - https://github.com/1000hz/bootstrap-validator
lazylinepainter: 'lib/jquery.lazylinepainter-1.5.1.min', // v1.5.1 SVG line animation plugin - http://lazylinepainter.info
blueImpGallery: 'lib/blueimp-gallery', // v2.15.2 Image Gallery - https://github.com/blueimp/Gallery
blueImpGallery: 'lib/blueimp-gallery', // v2.21.3 Image Gallery - https://github.com/blueimp/Gallery
blueImpGalleryHelper: 'lib/blueimp-helper', // helper function for Blue Imp Gallery
blueImpGalleryBootstrap: 'lib/bootstrap-image-gallery', // v3.1.1 Bootstrap extension for Blue Imp Gallery - https://blueimp.github.io/Bootstrap-Image-Gallery
blueImpGalleryBootstrap: 'lib/bootstrap-image-gallery', // v3.4.2 Bootstrap extension for Blue Imp Gallery - https://blueimp.github.io/Bootstrap-Image-Gallery
bootstrapConfirmation: 'lib/bootstrap-confirmation', // v1.0.1 Bootstrap extension for inline confirm dialog - https://github.com/tavicu/bs-confirmation
bootstrapToggle: 'lib/bootstrap2-toggle.min', // v2.2.0 Bootstrap Toggle (Checkbox) - http://www.bootstraptoggle.com
lazyload: 'lib/jquery.lazyload.min', // v1.9.5 LazyLoader images - http://www.appelsiini.net/projects/lazyload
@@ -59,6 +55,13 @@ requirejs.config({
easePack: 'lib/EasePack.min',
tweenLite: 'lib/TweenLite.min',
// datatables // v1.10.12 DataTables - https://datatables.net
'datatables.net': 'lib/datatables/DataTables-1.10.12/js/jquery.dataTables.min',
'datatables.net-buttons': 'lib/datatables/Buttons-1.2.1/js/dataTables.buttons.min',
'datatables.net-buttons-html': 'lib/datatables/Buttons-1.2.1/js/buttons.html5.min',
'datatables.net-responsive': 'lib/datatables/Responsive-2.1.0/js/dataTables.responsive.min',
'datatables.net-select': 'lib/datatables/Select-1.2.0/js/dataTables.select.min',
// notification plugin
pnotify: 'lib/pnotify/pnotify.core', // v2.0.1 PNotify - notification core file
'pnotify.buttons': 'lib/pnotify/pnotify.buttons', // PNotify - buttons notification extension
@@ -68,7 +71,6 @@ requirejs.config({
'pnotify.history': 'lib/pnotify/pnotify.history', // PNotify - history push notification history extension
'pnotify.callbacks': 'lib/pnotify/pnotify.callbacks', // PNotify - callbacks push notification extension
'pnotify.reference': 'lib/pnotify/pnotify.reference' // PNotify - reference push notification extension
},
shim: {
bootstrap: {
@@ -87,19 +89,22 @@ requirejs.config({
deps: ['jquery']
},
customScrollbar: {
deps: ['jquery', 'mousewheel']
},
'datatables.net': {
deps: ['jquery']
},
datatables: {
deps: ['jquery']
'datatables.net-buttons': {
deps: ['datatables.net']
},
datatablesBootstrap: {
deps: ['datatables']
'datatables.net-buttons-html': {
deps: ['datatables.net-buttons']
},
datatablesResponsive: {
deps: ['datatables']
'datatables.net-responsive': {
deps: ['datatables.net']
},
datatablesTableTools: {
deps: ['datatables']
'datatables.net-select': {
deps: ['datatables.net']
},
xEditable: {
deps: ['bootstrap']

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More