Commit bf137ad8 authored by Patrick's avatar Patrick
Browse files

CHANGES.md, README.md und 248 weitere dateien aktualisiert...

Showing with 144827 additions and 682 deletions
+144827 -682
commit 4374b79aed648738d2458ce027cbe2b372bf7b3a
Author: isaacs <i@izs.me>
Date: Wed Jun 26 12:12:17 2019 -0700
Add support for stat options
Fix #158
diff --git a/polyfills.js b/polyfills.js
index b964ed0..bc9759b 100644
--- a/polyfills.js
+++ b/polyfills.js
@@ -273,17 +273,23 @@ function patch (fs) {
}
+ // stat options added in v10.5.0
+ var supportsStatOptions = /^v[1-9][1-9]|^v10\.[5-9]/.test(process.version)
function statFix (orig) {
if (!orig) return orig
// Older versions of Node erroneously returned signed integers for
// uid + gid.
- return function (target, cb) {
- return orig.call(fs, target, function (er, stats) {
- if (!stats) return cb.apply(this, arguments)
+ return function (target, options, cb) {
+ if (typeof options === 'function')
+ cb = options, options = null
+ function callback (er, stats) {
+ if (!stats) return cb && cb.apply(this, arguments)
if (stats.uid < 0) stats.uid += 0x100000000
if (stats.gid < 0) stats.gid += 0x100000000
if (cb) cb.apply(this, arguments)
- })
+ }
+ return supportsStatOptions ? orig.call(fs, target, options || {}, callback)
+ : orig.call(fs, target, callback)
}
}
@@ -291,8 +297,8 @@ function patch (fs) {
if (!orig) return orig
// Older versions of Node erroneously returned signed integers for
// uid + gid.
- return function (target) {
- var stats = orig.call(fs, target)
+ return function (target, options) {
+ var stats = orig.call(fs, target, options)
if (stats.uid < 0) stats.uid += 0x100000000
if (stats.gid < 0) stats.gid += 0x100000000
return stats;
The ISC License The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors Copyright (c) Isaac Z. Schlueter, Ben Noordhuis, and Contributors
Permission to use, copy, modify, and/or distribute this software for any Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above purpose with or without fee is hereby granted, provided that the above
......
...@@ -7,9 +7,7 @@ The improvements are meant to normalize behavior across different ...@@ -7,9 +7,7 @@ The improvements are meant to normalize behavior across different
platforms and environments, and to make filesystem access more platforms and environments, and to make filesystem access more
resilient to errors. resilient to errors.
## Improvements over [fs module](http://api.nodejs.org/fs.html) ## Improvements over [fs module](https://nodejs.org/api/fs.html)
graceful-fs:
* Queues up `open` and `readdir` calls, and retries them once * Queues up `open` and `readdir` calls, and retries them once
something closes if there is an EMFILE error from too many file something closes if there is an EMFILE error from too many file
...@@ -34,3 +32,102 @@ var fs = require('graceful-fs') ...@@ -34,3 +32,102 @@ var fs = require('graceful-fs')
// now go and do stuff with it... // now go and do stuff with it...
fs.readFileSync('some-file-or-whatever') fs.readFileSync('some-file-or-whatever')
``` ```
## Global Patching
If you want to patch the global fs module (or any other fs-like
module) you can do this:
```javascript
// Make sure to read the caveat below.
var realFs = require('fs')
var gracefulFs = require('graceful-fs')
gracefulFs.gracefulify(realFs)
```
This should only ever be done at the top-level application layer, in
order to delay on EMFILE errors from any fs-using dependencies. You
should **not** do this in a library, because it can cause unexpected
delays in other parts of the program.
## Changes
This module is fairly stable at this point, and used by a lot of
things. That being said, because it implements a subtle behavior
change in a core part of the node API, even modest changes can be
extremely breaking, and the versioning is thus biased towards
bumping the major when in doubt.
The main change between major versions has been switching between
providing a fully-patched `fs` module vs monkey-patching the node core
builtin, and the approach by which a non-monkey-patched `fs` was
created.
The goal is to trade `EMFILE` errors for slower fs operations. So, if
you try to open a zillion files, rather than crashing, `open`
operations will be queued up and wait for something else to `close`.
There are advantages to each approach. Monkey-patching the fs means
that no `EMFILE` errors can possibly occur anywhere in your
application, because everything is using the same core `fs` module,
which is patched. However, it can also obviously cause undesirable
side-effects, especially if the module is loaded multiple times.
Implementing a separate-but-identical patched `fs` module is more
surgical (and doesn't run the risk of patching multiple times), but
also imposes the challenge of keeping in sync with the core module.
The current approach loads the `fs` module, and then creates a
lookalike object that has all the same methods, except a few that are
patched. It is safe to use in all versions of Node from 0.8 through
7.0.
### v4
* Do not monkey-patch the fs module. This module may now be used as a
drop-in dep, and users can opt into monkey-patching the fs builtin
if their app requires it.
### v3
* Monkey-patch fs, because the eval approach no longer works on recent
node.
* fixed possible type-error throw if rename fails on windows
* verify that we *never* get EMFILE errors
* Ignore ENOSYS from chmod/chown
* clarify that graceful-fs must be used as a drop-in
### v2.1.0
* Use eval rather than monkey-patching fs.
* readdir: Always sort the results
* win32: requeue a file if error has an OK status
### v2.0
* A return to monkey patching
* wrap process.cwd
### v1.1
* wrap readFile
* Wrap fs.writeFile.
* readdir protection
* Don't clobber the fs builtin
* Handle fs.read EAGAIN errors by trying again
* Expose the curOpen counter
* No-op lchown/lchmod if not implemented
* fs.rename patch only for win32
* Patch fs.rename to handle AV software on Windows
* Close #4 Chown should not fail on einval or eperm if non-root
* Fix isaacs/fstream#1 Only wrap fs one time
* Fix #3 Start at 1024 max files, then back off on EMFILE
* lutimes that doens't blow up on Linux
* A full on-rewrite using a queue instead of just swallowing the EMFILE error
* Wrap Read/Write streams as well
### 1.0
* Update engines for node 0.6
* Be lstat-graceful on Windows
* first
#!/bin/bash
# set -e
false
echo 'ok'
module.exports = require('natives').require('fs', ['stream'])
// Monkey-patching the fs module. var fs = require('fs')
// It's ugly, but there is simply no other way to do this. var polyfills = require('./polyfills.js')
var fs = module.exports = require('./fs.js') var legacy = require('./legacy-streams.js')
var clone = require('./clone.js')
var assert = require('assert')
// fix up some busted stuff, mostly on windows and old nodes
require('./polyfills.js')
var util = require('util') var util = require('util')
/* istanbul ignore next - node 0.x polyfill */
var gracefulQueue
var previousSymbol
/* istanbul ignore else - node 0.x polyfill */
if (typeof Symbol === 'function' && typeof Symbol.for === 'function') {
gracefulQueue = Symbol.for('graceful-fs.queue')
// This is used in testing by future versions
previousSymbol = Symbol.for('graceful-fs.previous')
} else {
gracefulQueue = '___graceful-fs.queue'
previousSymbol = '___graceful-fs.previous'
}
function noop () {} function noop () {}
var debug = noop var debug = noop
if (util.debuglog) if (util.debuglog)
debug = util.debuglog('gfs') debug = util.debuglog('gfs4')
else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ''))
debug = function() { debug = function() {
var m = util.format.apply(util, arguments) var m = util.format.apply(util, arguments)
m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ')
console.error(m) console.error(m)
} }
if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { // Once time initialization
process.on('exit', function() { if (!global[gracefulQueue]) {
debug('fds', fds) // This queue can be shared by multiple loaded instances
debug(queue) var queue = []
assert.equal(queue.length, 0) Object.defineProperty(global, gracefulQueue, {
get: function() {
return queue
}
}) })
}
// Patch fs.close/closeSync to shared queue version, because we need
var originalOpen = fs.open // to retry() whenever a close happens *anywhere* in the program.
fs.open = open // This is essential when multiple graceful-fs instances are
// in play at the same time.
function open(path, flags, mode, cb) { fs.close = (function (fs$close) {
if (typeof mode === "function") cb = mode, mode = null function close (fd, cb) {
if (typeof cb !== "function") cb = noop return fs$close.call(fs, fd, function (err) {
new OpenReq(path, flags, mode, cb) // This function uses the graceful-fs shared queue
} if (!err) {
retry()
function OpenReq(path, flags, mode, cb) { }
this.path = path
this.flags = flags if (typeof cb === 'function')
this.mode = mode cb.apply(this, arguments)
this.cb = cb })
Req.call(this) }
}
Object.defineProperty(close, previousSymbol, {
util.inherits(OpenReq, Req) value: fs$close
})
OpenReq.prototype.process = function() { return close
originalOpen.call(fs, this.path, this.flags, this.mode, this.done) })(fs.close)
fs.closeSync = (function (fs$closeSync) {
function closeSync (fd) {
// This function uses the graceful-fs shared queue
fs$closeSync.apply(fs, arguments)
retry()
}
Object.defineProperty(closeSync, previousSymbol, {
value: fs$closeSync
})
return closeSync
})(fs.closeSync)
if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) {
process.on('exit', function() {
debug(global[gracefulQueue])
require('assert').equal(global[gracefulQueue].length, 0)
})
}
} }
var fds = {} module.exports = patch(clone(fs))
OpenReq.prototype.done = function(er, fd) { if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {
debug('open done', er, fd) module.exports = patch(fs)
if (fd) fs.__patched = true;
fds['fd' + fd] = this.path
Req.prototype.done.call(this, er, fd)
} }
function patch (fs) {
// Everything that references the open() function needs to be in here
polyfills(fs)
fs.gracefulify = patch
fs.createReadStream = createReadStream
fs.createWriteStream = createWriteStream
var fs$readFile = fs.readFile
fs.readFile = readFile
function readFile (path, options, cb) {
if (typeof options === 'function')
cb = options, options = null
return go$readFile(path, options, cb)
function go$readFile (path, options, cb) {
return fs$readFile(path, options, function (err) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$readFile, [path, options, cb]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
})
}
}
var originalReaddir = fs.readdir var fs$writeFile = fs.writeFile
fs.readdir = readdir fs.writeFile = writeFile
function writeFile (path, data, options, cb) {
if (typeof options === 'function')
cb = options, options = null
return go$writeFile(path, data, options, cb)
function go$writeFile (path, data, options, cb) {
return fs$writeFile(path, data, options, function (err) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$writeFile, [path, data, options, cb]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
})
}
}
function readdir(path, cb) { var fs$appendFile = fs.appendFile
if (typeof cb !== "function") cb = noop if (fs$appendFile)
new ReaddirReq(path, cb) fs.appendFile = appendFile
} function appendFile (path, data, options, cb) {
if (typeof options === 'function')
cb = options, options = null
return go$appendFile(path, data, options, cb)
function go$appendFile (path, data, options, cb) {
return fs$appendFile(path, data, options, function (err) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$appendFile, [path, data, options, cb]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
})
}
}
function ReaddirReq(path, cb) { var fs$readdir = fs.readdir
this.path = path fs.readdir = readdir
this.cb = cb function readdir (path, options, cb) {
Req.call(this) var args = [path]
} if (typeof options !== 'function') {
args.push(options)
} else {
cb = options
}
args.push(go$readdir$cb)
return go$readdir(args)
function go$readdir$cb (err, files) {
if (files && files.sort)
files.sort()
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$readdir, [args]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
}
}
util.inherits(ReaddirReq, Req) function go$readdir (args) {
return fs$readdir.apply(fs, args)
}
ReaddirReq.prototype.process = function() { if (process.version.substr(0, 4) === 'v0.8') {
originalReaddir.call(fs, this.path, this.done) var legStreams = legacy(fs)
} ReadStream = legStreams.ReadStream
WriteStream = legStreams.WriteStream
}
ReaddirReq.prototype.done = function(er, files) { var fs$ReadStream = fs.ReadStream
if (files && files.sort) if (fs$ReadStream) {
files = files.sort() ReadStream.prototype = Object.create(fs$ReadStream.prototype)
Req.prototype.done.call(this, er, files) ReadStream.prototype.open = ReadStream$open
onclose() }
}
var fs$WriteStream = fs.WriteStream
if (fs$WriteStream) {
WriteStream.prototype = Object.create(fs$WriteStream.prototype)
WriteStream.prototype.open = WriteStream$open
}
var originalClose = fs.close Object.defineProperty(fs, 'ReadStream', {
fs.close = close get: function () {
return ReadStream
},
set: function (val) {
ReadStream = val
},
enumerable: true,
configurable: true
})
Object.defineProperty(fs, 'WriteStream', {
get: function () {
return WriteStream
},
set: function (val) {
WriteStream = val
},
enumerable: true,
configurable: true
})
function close (fd, cb) { // legacy names
debug('close', fd) var FileReadStream = ReadStream
if (typeof cb !== "function") cb = noop Object.defineProperty(fs, 'FileReadStream', {
delete fds['fd' + fd] get: function () {
originalClose.call(fs, fd, function(er) { return FileReadStream
onclose() },
cb(er) set: function (val) {
FileReadStream = val
},
enumerable: true,
configurable: true
})
var FileWriteStream = WriteStream
Object.defineProperty(fs, 'FileWriteStream', {
get: function () {
return FileWriteStream
},
set: function (val) {
FileWriteStream = val
},
enumerable: true,
configurable: true
}) })
}
function ReadStream (path, options) {
if (this instanceof ReadStream)
return fs$ReadStream.apply(this, arguments), this
else
return ReadStream.apply(Object.create(ReadStream.prototype), arguments)
}
var originalCloseSync = fs.closeSync function ReadStream$open () {
fs.closeSync = closeSync var that = this
open(that.path, that.flags, that.mode, function (err, fd) {
if (err) {
if (that.autoClose)
that.destroy()
that.emit('error', err)
} else {
that.fd = fd
that.emit('open', fd)
that.read()
}
})
}
function closeSync (fd) { function WriteStream (path, options) {
try { if (this instanceof WriteStream)
return originalCloseSync(fd) return fs$WriteStream.apply(this, arguments), this
} finally { else
onclose() return WriteStream.apply(Object.create(WriteStream.prototype), arguments)
} }
}
function WriteStream$open () {
var that = this
open(that.path, that.flags, that.mode, function (err, fd) {
if (err) {
that.destroy()
that.emit('error', err)
} else {
that.fd = fd
that.emit('open', fd)
}
})
}
// Req class function createReadStream (path, options) {
function Req () { return new fs.ReadStream(path, options)
// start processing }
this.done = this.done.bind(this)
this.failures = 0
this.process()
}
Req.prototype.done = function (er, result) { function createWriteStream (path, options) {
var tryAgain = false return new fs.WriteStream(path, options)
if (er) {
var code = er.code
var tryAgain = code === "EMFILE" || code === "ENFILE"
if (process.platform === "win32")
tryAgain = tryAgain || code === "OK"
} }
if (tryAgain) { var fs$open = fs.open
this.failures ++ fs.open = open
enqueue(this) function open (path, flags, mode, cb) {
} else { if (typeof mode === 'function')
var cb = this.cb cb = mode, mode = null
cb(er, result)
return go$open(path, flags, mode, cb)
function go$open (path, flags, mode, cb) {
return fs$open(path, flags, mode, function (err, fd) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
enqueue([go$open, [path, flags, mode, cb]])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
retry()
}
})
}
} }
}
var queue = [] return fs
}
function enqueue(req) { function enqueue (elem) {
queue.push(req) debug('ENQUEUE', elem[0].name, elem[1])
debug('enqueue %d %s', queue.length, req.constructor.name, req) global[gracefulQueue].push(elem)
} }
function onclose() { function retry () {
var req = queue.shift() var elem = global[gracefulQueue].shift()
if (req) { if (elem) {
debug('process', req.constructor.name, req) debug('RETRY', elem[0].name, elem[1])
req.process() elem[0].apply(null, elem[1])
} }
} }
{ {
"_from": "graceful-fs@^3.0.0", "_from": "graceful-fs@4.2.3",
"_id": "graceful-fs@3.0.12", "_id": "graceful-fs@4.2.3",
"_inBundle": false, "_inBundle": false,
"_integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==", "_integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"_location": "/vinyl-fs/graceful-fs", "_location": "/vinyl-fs/graceful-fs",
"_phantomChildren": {}, "_phantomChildren": {},
"_requested": { "_requested": {
"type": "range", "type": "version",
"registry": true, "registry": true,
"raw": "graceful-fs@^3.0.0", "raw": "graceful-fs@4.2.3",
"name": "graceful-fs", "name": "graceful-fs",
"escapedName": "graceful-fs", "escapedName": "graceful-fs",
"rawSpec": "^3.0.0", "rawSpec": "4.2.3",
"saveSpec": null, "saveSpec": null,
"fetchSpec": "^3.0.0" "fetchSpec": "4.2.3"
}, },
"_requiredBy": [ "_requiredBy": [
"/vinyl-fs" "/vinyl-fs"
], ],
"_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz", "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"_shasum": "0034947ce9ed695ec8ab0b854bc919e82b1ffaef", "_shasum": "4a12ff1b60376ef09862c2093edd908328be8423",
"_spec": "graceful-fs@^3.0.0", "_spec": "graceful-fs@4.2.3",
"_where": "C:\\Work\\OneDrive - bwstaff\\M4_Lab\\TV3\\NewVersion01\\LAFJLBmf939XYm5gj\\dev\\node_modules\\vinyl-fs", "_where": "C:\\Work\\OneDrive - bwstaff\\M4_Lab\\Main\\02_Plattform_Main\\m4labplatform",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
"url": "http://blog.izs.me"
},
"bugs": { "bugs": {
"url": "https://github.com/isaacs/node-graceful-fs/issues" "url": "https://github.com/isaacs/node-graceful-fs/issues"
}, },
"bundleDependencies": false, "bundleDependencies": false,
"dependencies": { "dependencies": {},
"natives": "^1.1.3"
},
"deprecated": false, "deprecated": false,
"description": "A drop-in replacement for fs, making various improvements.", "description": "A drop-in replacement for fs, making various improvements.",
"devDependencies": { "devDependencies": {
"import-fresh": "^2.0.0",
"mkdirp": "^0.5.0", "mkdirp": "^0.5.0",
"rimraf": "^2.2.8", "rimraf": "^2.2.8",
"tap": "^1.2.0" "tap": "^12.7.0"
}, },
"directories": { "directories": {
"test": "test" "test": "test"
}, },
"engines": { "files": [
"node": ">=0.4.0" "fs.js",
}, "graceful-fs.js",
"legacy-streams.js",
"polyfills.js",
"clone.js"
],
"homepage": "https://github.com/isaacs/node-graceful-fs#readme", "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
"keywords": [ "keywords": [
"fs", "fs",
...@@ -67,15 +65,15 @@ ...@@ -67,15 +65,15 @@
"license": "ISC", "license": "ISC",
"main": "graceful-fs.js", "main": "graceful-fs.js",
"name": "graceful-fs", "name": "graceful-fs",
"publishConfig": {
"tag": "old"
},
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git://github.com/isaacs/node-graceful-fs.git" "url": "git+https://github.com/isaacs/node-graceful-fs.git"
}, },
"scripts": { "scripts": {
"test": "tap test/*.js" "postpublish": "git push origin --follow-tags",
"postversion": "npm publish",
"preversion": "npm test",
"test": "node test.js | tap -"
}, },
"version": "3.0.12" "version": "4.2.3"
} }
var fs = require('./fs.js')
var constants = require('constants') var constants = require('constants')
var origCwd = process.cwd var origCwd = process.cwd
var cwd = null var cwd = null
var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform
process.cwd = function() { process.cwd = function() {
if (!cwd) if (!cwd)
cwd = origCwd.call(process) cwd = origCwd.call(process)
return cwd return cwd
} }
try {
process.cwd()
} catch (er) {}
var chdir = process.chdir var chdir = process.chdir
process.chdir = function(d) { process.chdir = function(d) {
cwd = null cwd = null
chdir.call(process, d) chdir.call(process, d)
} }
// (re-)implement some things that are known busted or missing. module.exports = patch
// lchmod, broken prior to 0.6.2 function patch (fs) {
// back-port the fix here. // (re-)implement some things that are known busted or missing.
if (constants.hasOwnProperty('O_SYMLINK') &&
process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { // lchmod, broken prior to 0.6.2
fs.lchmod = function (path, mode, callback) { // back-port the fix here.
callback = callback || noop if (constants.hasOwnProperty('O_SYMLINK') &&
fs.open( path process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
, constants.O_WRONLY | constants.O_SYMLINK patchLchmod(fs)
, mode }
, function (err, fd) {
if (err) { // lutimes implementation, or no-op
callback(err) if (!fs.lutimes) {
return patchLutimes(fs)
}
// prefer to return the chmod error, if one occurs,
// but still try to close, and report closing errors if they occur.
fs.fchmod(fd, mode, function (err) {
fs.close(fd, function(err2) {
callback(err || err2)
})
})
})
} }
fs.lchmodSync = function (path, mode) { // https://github.com/isaacs/node-graceful-fs/issues/4
var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) // Chown should not fail on einval or eperm if non-root.
// It should not fail on enosys ever, as this just indicates
// that a fs doesn't support the intended operation.
fs.chown = chownFix(fs.chown)
fs.fchown = chownFix(fs.fchown)
fs.lchown = chownFix(fs.lchown)
fs.chmod = chmodFix(fs.chmod)
fs.fchmod = chmodFix(fs.fchmod)
fs.lchmod = chmodFix(fs.lchmod)
fs.chownSync = chownFixSync(fs.chownSync)
fs.fchownSync = chownFixSync(fs.fchownSync)
fs.lchownSync = chownFixSync(fs.lchownSync)
fs.chmodSync = chmodFixSync(fs.chmodSync)
fs.fchmodSync = chmodFixSync(fs.fchmodSync)
fs.lchmodSync = chmodFixSync(fs.lchmodSync)
fs.stat = statFix(fs.stat)
fs.fstat = statFix(fs.fstat)
fs.lstat = statFix(fs.lstat)
// prefer to return the chmod error, if one occurs, fs.statSync = statFixSync(fs.statSync)
// but still try to close, and report closing errors if they occur. fs.fstatSync = statFixSync(fs.fstatSync)
var err, err2 fs.lstatSync = statFixSync(fs.lstatSync)
try {
var ret = fs.fchmodSync(fd, mode) // if lchmod/lchown do not exist, then make them no-ops
} catch (er) { if (!fs.lchmod) {
err = er fs.lchmod = function (path, mode, cb) {
if (cb) process.nextTick(cb)
} }
try { fs.lchmodSync = function () {}
fs.closeSync(fd) }
} catch (er) { if (!fs.lchown) {
err2 = er fs.lchown = function (path, uid, gid, cb) {
if (cb) process.nextTick(cb)
} }
if (err || err2) throw (err || err2) fs.lchownSync = function () {}
return ret
} }
}
// on Windows, A/V software can lock the directory, causing this
// lutimes implementation, or no-op // to fail with an EACCES or EPERM if the directory contains newly
if (!fs.lutimes) { // created files. Try again on failure, for up to 60 seconds.
if (constants.hasOwnProperty("O_SYMLINK")) {
fs.lutimes = function (path, at, mt, cb) { // Set the timeout this long because some Windows Anti-Virus, such as Parity
fs.open(path, constants.O_SYMLINK, function (er, fd) { // bit9, may lock files for up to a minute, causing npm package install
cb = cb || noop // failures. Also, take care to yield the scheduler. Windows scheduling gives
if (er) return cb(er) // CPU to a busy looping process, which can cause the program causing the lock
fs.futimes(fd, at, mt, function (er) { // contention to be starved of CPU by node, so the contention doesn't resolve.
fs.close(fd, function (er2) { if (platform === "win32") {
return cb(er || er2) fs.rename = (function (fs$rename) { return function (from, to, cb) {
}) var start = Date.now()
}) var backoff = 0;
fs$rename(from, to, function CB (er) {
if (er
&& (er.code === "EACCES" || er.code === "EPERM")
&& Date.now() - start < 60000) {
setTimeout(function() {
fs.stat(to, function (stater, st) {
if (stater && stater.code === "ENOENT")
fs$rename(from, to, CB);
else
cb(er)
})
}, backoff)
if (backoff < 100)
backoff += 10;
return;
}
if (cb) cb(er)
}) })
}})(fs.rename)
}
// if read() returns EAGAIN, then just try it again.
fs.read = (function (fs$read) {
function read (fd, buffer, offset, length, position, callback_) {
var callback
if (callback_ && typeof callback_ === 'function') {
var eagCounter = 0
callback = function (er, _, __) {
if (er && er.code === 'EAGAIN' && eagCounter < 10) {
eagCounter ++
return fs$read.call(fs, fd, buffer, offset, length, position, callback)
}
callback_.apply(this, arguments)
}
}
return fs$read.call(fs, fd, buffer, offset, length, position, callback)
} }
fs.lutimesSync = function (path, at, mt) { // This ensures `util.promisify` works as it does for native `fs.read`.
var fd = fs.openSync(path, constants.O_SYMLINK) read.__proto__ = fs$read
, err return read
, err2 })(fs.read)
, ret
fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) {
var eagCounter = 0
while (true) {
try { try {
var ret = fs.futimesSync(fd, at, mt) return fs$readSync.call(fs, fd, buffer, offset, length, position)
} catch (er) {
err = er
}
try {
fs.closeSync(fd)
} catch (er) { } catch (er) {
err2 = er if (er.code === 'EAGAIN' && eagCounter < 10) {
eagCounter ++
continue
}
throw er
} }
if (err || err2) throw (err || err2)
return ret
} }
}})(fs.readSync)
} else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
// maybe utimensat will be bound soonish? function patchLchmod (fs) {
fs.lutimes = function (path, at, mt, cb) { fs.lchmod = function (path, mode, callback) {
fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) fs.open( path
, constants.O_WRONLY | constants.O_SYMLINK
, mode
, function (err, fd) {
if (err) {
if (callback) callback(err)
return
}
// prefer to return the chmod error, if one occurs,
// but still try to close, and report closing errors if they occur.
fs.fchmod(fd, mode, function (err) {
fs.close(fd, function(err2) {
if (callback) callback(err || err2)
})
})
})
} }
fs.lutimesSync = function (path, at, mt) { fs.lchmodSync = function (path, mode) {
return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
}
} else { // prefer to return the chmod error, if one occurs,
fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } // but still try to close, and report closing errors if they occur.
fs.lutimesSync = function () {} var threw = true
var ret
try {
ret = fs.fchmodSync(fd, mode)
threw = false
} finally {
if (threw) {
try {
fs.closeSync(fd)
} catch (er) {}
} else {
fs.closeSync(fd)
}
}
return ret
}
} }
}
// https://github.com/isaacs/node-graceful-fs/issues/4 function patchLutimes (fs) {
// Chown should not fail on einval or eperm if non-root. if (constants.hasOwnProperty("O_SYMLINK")) {
// It should not fail on enosys ever, as this just indicates fs.lutimes = function (path, at, mt, cb) {
// that a fs doesn't support the intended operation. fs.open(path, constants.O_SYMLINK, function (er, fd) {
if (er) {
fs.chown = chownFix(fs.chown) if (cb) cb(er)
fs.fchown = chownFix(fs.fchown) return
fs.lchown = chownFix(fs.lchown) }
fs.futimes(fd, at, mt, function (er) {
fs.chmod = chownFix(fs.chmod) fs.close(fd, function (er2) {
fs.fchmod = chownFix(fs.fchmod) if (cb) cb(er || er2)
fs.lchmod = chownFix(fs.lchmod) })
})
fs.chownSync = chownFixSync(fs.chownSync) })
fs.fchownSync = chownFixSync(fs.fchownSync) }
fs.lchownSync = chownFixSync(fs.lchownSync)
fs.chmodSync = chownFix(fs.chmodSync) fs.lutimesSync = function (path, at, mt) {
fs.fchmodSync = chownFix(fs.fchmodSync) var fd = fs.openSync(path, constants.O_SYMLINK)
fs.lchmodSync = chownFix(fs.lchmodSync) var ret
var threw = true
try {
ret = fs.futimesSync(fd, at, mt)
threw = false
} finally {
if (threw) {
try {
fs.closeSync(fd)
} catch (er) {}
} else {
fs.closeSync(fd)
}
}
return ret
}
function chownFix (orig) { } else {
if (!orig) return orig fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
return function (target, uid, gid, cb) { fs.lutimesSync = function () {}
return orig.call(fs, target, uid, gid, function (er, res) { }
if (chownErOk(er)) er = null
cb(er, res)
})
} }
}
function chownFixSync (orig) { function chmodFix (orig) {
if (!orig) return orig if (!orig) return orig
return function (target, uid, gid) { return function (target, mode, cb) {
try { return orig.call(fs, target, mode, function (er) {
return orig.call(fs, target, uid, gid) if (chownErOk(er)) er = null
} catch (er) { if (cb) cb.apply(this, arguments)
if (!chownErOk(er)) throw er })
} }
} }
}
// ENOSYS means that the fs doesn't support the op. Just ignore function chmodFixSync (orig) {
// that, because it doesn't matter. if (!orig) return orig
// return function (target, mode) {
// if there's no getuid, or if getuid() is something other try {
// than 0, and the error is EINVAL or EPERM, then just ignore return orig.call(fs, target, mode)
// it. } catch (er) {
// if (!chownErOk(er)) throw er
// This specific case is a silent failure in cp, install, tar, }
// and most other unix tools that manage permissions. }
//
// When running as root, or if other types of errors are
// encountered, then it's strict.
function chownErOk (er) {
if (!er)
return true
if (er.code === "ENOSYS")
return true
var nonroot = !process.getuid || process.getuid() !== 0
if (nonroot) {
if (er.code === "EINVAL" || er.code === "EPERM")
return true
} }
return false
}
function chownFix (orig) {
// if lchmod/lchown do not exist, then make them no-ops if (!orig) return orig
if (!fs.lchmod) { return function (target, uid, gid, cb) {
fs.lchmod = function (path, mode, cb) { return orig.call(fs, target, uid, gid, function (er) {
process.nextTick(cb) if (chownErOk(er)) er = null
} if (cb) cb.apply(this, arguments)
fs.lchmodSync = function () {} })
} }
if (!fs.lchown) {
fs.lchown = function (path, uid, gid, cb) {
process.nextTick(cb)
} }
fs.lchownSync = function () {}
}
// on Windows, A/V software can lock the directory, causing this function chownFixSync (orig) {
// to fail with an EACCES or EPERM if the directory contains newly if (!orig) return orig
// created files. Try again on failure, for up to 1 second. return function (target, uid, gid) {
if (process.platform === "win32") { try {
var rename_ = fs.rename return orig.call(fs, target, uid, gid)
fs.rename = function rename (from, to, cb) { } catch (er) {
var start = Date.now() if (!chownErOk(er)) throw er
rename_(from, to, function CB (er) {
if (er
&& (er.code === "EACCES" || er.code === "EPERM")
&& Date.now() - start < 1000) {
return rename_(from, to, CB)
} }
if(cb) cb(er) }
})
} }
}
// if read() returns EAGAIN, then just try it again. function statFix (orig) {
var read = fs.read if (!orig) return orig
fs.read = function (fd, buffer, offset, length, position, callback_) { // Older versions of Node erroneously returned signed integers for
var callback // uid + gid.
if (callback_ && typeof callback_ === 'function') { return function (target, options, cb) {
var eagCounter = 0 if (typeof options === 'function') {
callback = function (er, _, __) { cb = options
if (er && er.code === 'EAGAIN' && eagCounter < 10) { options = null
eagCounter ++
return read.call(fs, fd, buffer, offset, length, position, callback)
} }
callback_.apply(this, arguments) function callback (er, stats) {
if (stats) {
if (stats.uid < 0) stats.uid += 0x100000000
if (stats.gid < 0) stats.gid += 0x100000000
}
if (cb) cb.apply(this, arguments)
}
return options ? orig.call(fs, target, options, callback)
: orig.call(fs, target, callback)
} }
} }
return read.call(fs, fd, buffer, offset, length, position, callback)
}
var readSync = fs.readSync function statFixSync (orig) {
fs.readSync = function (fd, buffer, offset, length, position) { if (!orig) return orig
var eagCounter = 0 // Older versions of Node erroneously returned signed integers for
while (true) { // uid + gid.
try { return function (target, options) {
return readSync.call(fs, fd, buffer, offset, length, position) var stats = options ? orig.call(fs, target, options)
} catch (er) { : orig.call(fs, target)
if (er.code === 'EAGAIN' && eagCounter < 10) { if (stats.uid < 0) stats.uid += 0x100000000
eagCounter ++ if (stats.gid < 0) stats.gid += 0x100000000
continue return stats;
}
throw er
} }
} }
}
// ENOSYS means that the fs doesn't support the op. Just ignore
// that, because it doesn't matter.
//
// if there's no getuid, or if getuid() is something other
// than 0, and the error is EINVAL or EPERM, then just ignore
// it.
//
// This specific case is a silent failure in cp, install, tar,
// and most other unix tools that manage permissions.
//
// When running as root, or if other types of errors are
// encountered, then it's strict.
function chownErOk (er) {
if (!er)
return true
if (er.code === "ENOSYS")
return true
var nonroot = !process.getuid || process.getuid() !== 0
if (nonroot) {
if (er.code === "EINVAL" || er.code === "EPERM")
return true
}
return false
}
}
var test = require('tap').test
var fs = require('../')
test('open lots of stuff', function (t) {
// Get around EBADF from libuv by making sure that stderr is opened
// Otherwise Darwin will refuse to give us a FD for stderr!
process.stderr.write('')
// How many parallel open()'s to do
var n = 1024
var opens = 0
var fds = []
var going = true
var closing = false
var doneCalled = 0
for (var i = 0; i < n; i++) {
go()
}
function go() {
opens++
fs.open(__filename, 'r', function (er, fd) {
if (er) throw er
fds.push(fd)
if (going) go()
})
}
// should hit ulimit pretty fast
setTimeout(function () {
going = false
t.equal(opens - fds.length, n)
done()
}, 100)
function done () {
if (closing) return
doneCalled++
if (fds.length === 0) {
console.error('done called %d times', doneCalled)
// First because of the timeout
// Then to close the fd's opened afterwards
// Then this time, to complete.
// Might take multiple passes, depending on CPU speed
// and ulimit, but at least 3 in every case.
t.ok(doneCalled >= 2)
return t.end()
}
closing = true
setTimeout(function () {
// console.error('do closing again')
closing = false
done()
}, 100)
// console.error('closing time')
var closes = fds.slice(0)
fds.length = 0
closes.forEach(function (fd) {
fs.close(fd, function (er) {
if (er) throw er
})
})
}
})
var test = require('tap').test
var fs = require('../graceful-fs.js')
test('graceful fs is monkeypatched fs', function (t) {
t.equal(fs, require('../fs.js'))
t.end()
})
test('open an existing file works', function (t) {
var fd = fs.openSync(__filename, 'r')
fs.closeSync(fd)
fs.open(__filename, 'r', function (er, fd) {
if (er) throw er
fs.close(fd, function (er) {
if (er) throw er
t.pass('works')
t.end()
})
})
})
test('open a non-existing file throws', function (t) {
var er
try {
var fd = fs.openSync('this file does not exist', 'r')
} catch (x) {
er = x
}
t.ok(er, 'should throw')
t.notOk(fd, 'should not get an fd')
t.equal(er.code, 'ENOENT')
fs.open('neither does this file', 'r', function (er, fd) {
t.ok(er, 'should throw')
t.notOk(fd, 'should not get an fd')
t.equal(er.code, 'ENOENT')
t.end()
})
})
var test = require("tap").test
var fs = require("../fs.js")
var readdir = fs.readdir
fs.readdir = function(path, cb) {
process.nextTick(function() {
cb(null, ["b", "z", "a"])
})
}
var g = require("../")
test("readdir reorder", function (t) {
g.readdir("whatevers", function (er, files) {
if (er)
throw er
t.same(files, [ "a", "b", "z" ])
t.end()
})
})
var fs = require('../');
var rimraf = require('rimraf');
var mkdirp = require('mkdirp');
var test = require('tap').test;
var p = require('path').resolve(__dirname, 'files');
process.chdir(__dirname)
// Make sure to reserve the stderr fd
process.stderr.write('');
var num = 4097;
var paths = new Array(num);
test('make files', function (t) {
rimraf.sync(p);
mkdirp.sync(p);
for (var i = 0; i < num; ++i) {
paths[i] = 'files/file-' + i;
fs.writeFileSync(paths[i], 'content');
}
t.end();
})
test('read files', function (t) {
// now read them
var done = 0;
for (var i = 0; i < num; ++i) {
fs.readFile(paths[i], function(err, data) {
if (err)
throw err;
++done;
if (done === num) {
t.pass('success');
t.end()
}
});
}
});
test('cleanup', function (t) {
rimraf.sync(p);
t.end();
});
...@@ -1550,9 +1550,9 @@ ...@@ -1550,9 +1550,9 @@
} }
}, },
"assert-plus": { "assert-plus": {
"version": "1.0.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
}, },
"assign-symbols": { "assign-symbols": {
"version": "1.0.0", "version": "1.0.0",
...@@ -1616,14 +1616,14 @@ ...@@ -1616,14 +1616,14 @@
} }
}, },
"aws-sign2": { "aws-sign2": {
"version": "0.7.0", "version": "0.6.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
}, },
"aws4": { "aws4": {
"version": "1.9.1", "version": "1.11.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
"integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
}, },
"babel-code-frame": { "babel-code-frame": {
"version": "6.26.0", "version": "6.26.0",
...@@ -2034,6 +2034,14 @@ ...@@ -2034,6 +2034,14 @@
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
"dev": true "dev": true
}, },
"boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"requires": {
"hoek": "2.16.3"
}
},
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
...@@ -2597,8 +2605,7 @@ ...@@ -2597,8 +2605,7 @@
"co": { "co": {
"version": "4.6.0", "version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
"dev": true
}, },
"coa": { "coa": {
"version": "1.0.4", "version": "1.0.4",
...@@ -2926,6 +2933,14 @@ ...@@ -2926,6 +2933,14 @@
} }
} }
}, },
"cryptiles": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"requires": {
"boom": "2.10.1"
}
},
"crypto-browserify": { "crypto-browserify": {
"version": "3.12.0", "version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
...@@ -3108,6 +3123,13 @@ ...@@ -3108,6 +3123,13 @@
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": { "requires": {
"assert-plus": "1.0.0" "assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
} }
}, },
"dateformat": { "dateformat": {
...@@ -3527,6 +3549,14 @@ ...@@ -3527,6 +3549,14 @@
"memory-fs": "0.4.1", "memory-fs": "0.4.1",
"object-assign": "4.1.1", "object-assign": "4.1.1",
"tapable": "0.2.9" "tapable": "0.2.9"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
} }
}, },
"entities": { "entities": {
...@@ -3923,7 +3953,8 @@ ...@@ -3923,7 +3953,8 @@
"fast-json-stable-stringify": { "fast-json-stable-stringify": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
"dev": true
}, },
"fastparse": { "fastparse": {
"version": "1.1.2", "version": "1.1.2",
...@@ -5080,6 +5111,13 @@ ...@@ -5080,6 +5111,13 @@
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": { "requires": {
"assert-plus": "1.0.0" "assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
} }
}, },
"glob": { "glob": {
...@@ -5266,16 +5304,23 @@ ...@@ -5266,16 +5304,23 @@
"integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
"dev": true, "dev": true,
"requires": { "requires": {
"graceful-fs": "1.2.3", "graceful-fs": "4.2.3",
"inherits": "1.0.2", "inherits": "1.0.2",
"minimatch": "0.2.14" "minimatch": "0.2.14"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
} }
}, },
"graceful-fs": { "graceful-fs": {
"version": "1.2.3", "version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
"dev": true
}, },
"inherits": { "inherits": {
"version": "1.0.2", "version": "1.0.2",
...@@ -5310,12 +5355,6 @@ ...@@ -5310,12 +5355,6 @@
"sparkles": "1.0.1" "sparkles": "1.0.1"
} }
}, },
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"graceful-readlink": { "graceful-readlink": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
...@@ -5661,39 +5700,27 @@ ...@@ -5661,39 +5700,27 @@
} }
}, },
"har-schema": { "har-schema": {
"version": "2.0.0", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
}, },
"har-validator": { "har-validator": {
"version": "5.1.3", "version": "4.2.1",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
"requires": { "requires": {
"ajv": "6.11.0", "ajv": "4.11.8",
"har-schema": "2.0.0" "har-schema": "1.0.5"
}, },
"dependencies": { "dependencies": {
"ajv": { "ajv": {
"version": "6.11.0", "version": "4.11.8",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
"integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"requires": { "requires": {
"fast-deep-equal": "3.1.1", "co": "4.6.0",
"fast-json-stable-stringify": "2.0.0", "json-stable-stringify": "1.0.1"
"json-schema-traverse": "0.4.1",
"uri-js": "4.2.2"
} }
},
"fast-deep-equal": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
} }
} }
}, },
...@@ -5822,6 +5849,17 @@ ...@@ -5822,6 +5849,17 @@
"minimalistic-assert": "1.0.1" "minimalistic-assert": "1.0.1"
} }
}, },
"hawk": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"requires": {
"boom": "2.10.1",
"cryptiles": "2.0.5",
"hoek": "2.16.3",
"sntp": "1.0.9"
}
},
"he": { "he": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
...@@ -5849,6 +5887,11 @@ ...@@ -5849,6 +5887,11 @@
"minimalistic-crypto-utils": "1.0.1" "minimalistic-crypto-utils": "1.0.1"
} }
}, },
"hoek": {
"version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
},
"homedir-polyfill": { "homedir-polyfill": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
...@@ -6064,11 +6107,11 @@ ...@@ -6064,11 +6107,11 @@
} }
}, },
"http-signature": { "http-signature": {
"version": "1.2.0", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"requires": { "requires": {
"assert-plus": "1.0.0", "assert-plus": "0.2.0",
"jsprim": "1.4.1", "jsprim": "1.4.1",
"sshpk": "1.16.1" "sshpk": "1.16.1"
} }
...@@ -6600,6 +6643,14 @@ ...@@ -6600,6 +6643,14 @@
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
"dev": true "dev": true
}, },
"json-stable-stringify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"requires": {
"jsonify": "0.0.0"
}
},
"json-stringify-safe": { "json-stringify-safe": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
...@@ -6614,6 +6665,11 @@ ...@@ -6614,6 +6665,11 @@
"minimist": "1.2.0" "minimist": "1.2.0"
} }
}, },
"jsonify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
},
"jsprim": { "jsprim": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
...@@ -6623,6 +6679,13 @@ ...@@ -6623,6 +6679,13 @@
"extsprintf": "1.3.0", "extsprintf": "1.3.0",
"json-schema": "0.2.3", "json-schema": "0.2.3",
"verror": "1.10.0" "verror": "1.10.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
} }
}, },
"kind-of": { "kind-of": {
...@@ -6678,6 +6741,12 @@ ...@@ -6678,6 +6741,12 @@
"strip-bom": "2.0.0" "strip-bom": "2.0.0"
}, },
"dependencies": { "dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"pify": { "pify": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
...@@ -7251,12 +7320,6 @@ ...@@ -7251,12 +7320,6 @@
} }
} }
}, },
"natives": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz",
"integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==",
"dev": true
},
"ncname": { "ncname": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz",
...@@ -7720,6 +7783,13 @@ ...@@ -7720,6 +7783,13 @@
"graceful-fs": "4.2.3", "graceful-fs": "4.2.3",
"npm-normalize-package-bin": "1.0.1", "npm-normalize-package-bin": "1.0.1",
"write-file-atomic": "2.4.3" "write-file-atomic": "2.4.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"bluebird": { "bluebird": {
...@@ -7782,6 +7852,13 @@ ...@@ -7782,6 +7852,13 @@
"ssri": "6.0.1", "ssri": "6.0.1",
"unique-filename": "1.1.1", "unique-filename": "1.1.1",
"y18n": "4.0.0" "y18n": "4.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"call-limit": { "call-limit": {
...@@ -7877,6 +7954,13 @@ ...@@ -7877,6 +7954,13 @@
"requires": { "requires": {
"graceful-fs": "4.2.3", "graceful-fs": "4.2.3",
"mkdirp": "0.5.1" "mkdirp": "0.5.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"co": { "co": {
...@@ -7972,6 +8056,13 @@ ...@@ -7972,6 +8056,13 @@
"unique-string": "1.0.0", "unique-string": "1.0.0",
"write-file-atomic": "2.4.3", "write-file-atomic": "2.4.3",
"xdg-basedir": "3.0.0" "xdg-basedir": "3.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"console-control-strings": { "console-control-strings": {
...@@ -8387,6 +8478,13 @@ ...@@ -8387,6 +8478,13 @@
"graceful-fs": "4.2.3", "graceful-fs": "4.2.3",
"path-is-inside": "1.0.2", "path-is-inside": "1.0.2",
"rimraf": "2.6.3" "rimraf": "2.6.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"fs-write-stream-atomic": { "fs-write-stream-atomic": {
...@@ -8399,6 +8497,11 @@ ...@@ -8399,6 +8497,11 @@
"readable-stream": "2.3.6" "readable-stream": "2.3.6"
}, },
"dependencies": { "dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"iferr": { "iferr": {
"version": "0.1.5", "version": "0.1.5",
"bundled": true "bundled": true
...@@ -8487,6 +8590,11 @@ ...@@ -8487,6 +8590,11 @@
"version": "1.2.0", "version": "1.2.0",
"bundled": true "bundled": true
}, },
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"iferr": { "iferr": {
"version": "0.1.5", "version": "0.1.5",
"bundled": true "bundled": true
...@@ -8555,7 +8663,8 @@ ...@@ -8555,7 +8663,8 @@
}, },
"graceful-fs": { "graceful-fs": {
"version": "4.2.3", "version": "4.2.3",
"bundled": true "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}, },
"har-schema": { "har-schema": {
"version": "2.0.0", "version": "2.0.0",
...@@ -8872,6 +8981,13 @@ ...@@ -8872,6 +8981,13 @@
"read-package-json": "2.1.1", "read-package-json": "2.1.1",
"rimraf": "2.6.3", "rimraf": "2.6.3",
"worker-farm": "1.7.0" "worker-farm": "1.7.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"libnpm": { "libnpm": {
...@@ -9268,6 +9384,11 @@ ...@@ -9268,6 +9384,11 @@
"which": "1.3.1" "which": "1.3.1"
}, },
"dependencies": { "dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"nopt": { "nopt": {
"version": "3.0.6", "version": "3.0.6",
"bundled": true, "bundled": true,
...@@ -9346,6 +9467,13 @@ ...@@ -9346,6 +9467,13 @@
"uid-number": "0.0.6", "uid-number": "0.0.6",
"umask": "1.1.0", "umask": "1.1.0",
"which": "1.3.1" "which": "1.3.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"npm-logical-tree": { "npm-logical-tree": {
...@@ -9765,6 +9893,13 @@ ...@@ -9765,6 +9893,13 @@
"bundled": true, "bundled": true,
"requires": { "requires": {
"graceful-fs": "4.2.3" "graceful-fs": "4.2.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"read-installed": { "read-installed": {
...@@ -9778,6 +9913,14 @@ ...@@ -9778,6 +9913,14 @@
"semver": "5.7.1", "semver": "5.7.1",
"slide": "1.1.6", "slide": "1.1.6",
"util-extend": "1.0.3" "util-extend": "1.0.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"optional": true
}
} }
}, },
"read-package-json": { "read-package-json": {
...@@ -9789,6 +9932,14 @@ ...@@ -9789,6 +9932,14 @@
"json-parse-better-errors": "1.0.2", "json-parse-better-errors": "1.0.2",
"normalize-package-data": "2.5.0", "normalize-package-data": "2.5.0",
"npm-normalize-package-bin": "1.0.1" "npm-normalize-package-bin": "1.0.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"optional": true
}
} }
}, },
"read-package-tree": { "read-package-tree": {
...@@ -9817,6 +9968,13 @@ ...@@ -9817,6 +9968,13 @@
"dezalgo": "1.0.3", "dezalgo": "1.0.3",
"graceful-fs": "4.2.3", "graceful-fs": "4.2.3",
"once": "1.4.0" "once": "1.4.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"registry-auth-token": { "registry-auth-token": {
...@@ -9924,6 +10082,13 @@ ...@@ -9924,6 +10082,13 @@
"bundled": true, "bundled": true,
"requires": { "requires": {
"graceful-fs": "4.2.3" "graceful-fs": "4.2.3"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"shebang-command": { "shebang-command": {
...@@ -10451,6 +10616,13 @@ ...@@ -10451,6 +10616,13 @@
"graceful-fs": "4.2.3", "graceful-fs": "4.2.3",
"imurmurhash": "0.1.4", "imurmurhash": "0.1.4",
"signal-exit": "3.0.2" "signal-exit": "3.0.2"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
} }
}, },
"xdg-basedir": { "xdg-basedir": {
...@@ -10533,9 +10705,9 @@ ...@@ -10533,9 +10705,9 @@
"dev": true "dev": true
}, },
"oauth-sign": { "oauth-sign": {
"version": "0.9.0", "version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
...@@ -10972,6 +11144,12 @@ ...@@ -10972,6 +11144,12 @@
"pinkie-promise": "2.0.1" "pinkie-promise": "2.0.1"
}, },
"dependencies": { "dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"pify": { "pify": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
...@@ -10994,9 +11172,9 @@ ...@@ -10994,9 +11172,9 @@
} }
}, },
"performance-now": { "performance-now": {
"version": "2.1.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
}, },
"pify": { "pify": {
"version": "4.0.1", "version": "4.0.1",
...@@ -11686,11 +11864,6 @@ ...@@ -11686,11 +11864,6 @@
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true "dev": true
}, },
"psl": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
"integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="
},
"public-encrypt": { "public-encrypt": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
...@@ -11708,7 +11881,8 @@ ...@@ -11708,7 +11881,8 @@
"punycode": { "punycode": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
}, },
"q": { "q": {
"version": "1.5.1", "version": "1.5.1",
...@@ -12079,6 +12253,12 @@ ...@@ -12079,6 +12253,12 @@
} }
} }
}, },
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
},
"is-accessor-descriptor": { "is-accessor-descriptor": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
...@@ -12426,36 +12606,38 @@ ...@@ -12426,36 +12606,38 @@
} }
}, },
"request": { "request": {
"version": "2.88.2", "version": "2.81.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
"requires": { "requires": {
"aws-sign2": "0.7.0", "aws-sign2": "0.6.0",
"aws4": "1.9.1", "aws4": "1.11.0",
"caseless": "0.12.0", "caseless": "0.12.0",
"combined-stream": "1.0.8", "combined-stream": "1.0.8",
"extend": "3.0.2", "extend": "3.0.2",
"forever-agent": "0.6.1", "forever-agent": "0.6.1",
"form-data": "2.3.3", "form-data": "2.1.4",
"har-validator": "5.1.3", "har-validator": "4.2.1",
"http-signature": "1.2.0", "hawk": "3.1.3",
"http-signature": "1.1.1",
"is-typedarray": "1.0.0", "is-typedarray": "1.0.0",
"isstream": "0.1.2", "isstream": "0.1.2",
"json-stringify-safe": "5.0.1", "json-stringify-safe": "5.0.1",
"mime-types": "2.1.25", "mime-types": "2.1.25",
"oauth-sign": "0.9.0", "oauth-sign": "0.8.2",
"performance-now": "2.1.0", "performance-now": "0.2.0",
"qs": "6.5.2", "qs": "6.4.0",
"safe-buffer": "5.1.2", "safe-buffer": "5.1.2",
"tough-cookie": "2.5.0", "stringstream": "0.0.6",
"tough-cookie": "2.3.4",
"tunnel-agent": "0.6.0", "tunnel-agent": "0.6.0",
"uuid": "3.4.0" "uuid": "3.4.0"
}, },
"dependencies": { "dependencies": {
"form-data": { "form-data": {
"version": "2.3.3", "version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
"requires": { "requires": {
"asynckit": "0.4.0", "asynckit": "0.4.0",
"combined-stream": "1.0.8", "combined-stream": "1.0.8",
...@@ -12463,9 +12645,9 @@ ...@@ -12463,9 +12645,9 @@
} }
}, },
"qs": { "qs": {
"version": "6.5.2", "version": "6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
} }
} }
}, },
...@@ -12972,6 +13154,14 @@ ...@@ -12972,6 +13154,14 @@
"kind-of": "3.2.2" "kind-of": "3.2.2"
} }
}, },
"sntp": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"requires": {
"hoek": "2.16.3"
}
},
"soap": { "soap": {
"version": "0.30.0", "version": "0.30.0",
"resolved": "https://registry.npmjs.org/soap/-/soap-0.30.0.tgz", "resolved": "https://registry.npmjs.org/soap/-/soap-0.30.0.tgz",
...@@ -12983,7 +13173,7 @@ ...@@ -12983,7 +13173,7 @@
"debug": "4.1.1", "debug": "4.1.1",
"httpntlm": "1.7.6", "httpntlm": "1.7.6",
"lodash": "4.17.15", "lodash": "4.17.15",
"request": "2.88.2", "request": "2.81.0",
"sax": "1.2.4", "sax": "1.2.4",
"serve-static": "1.14.1", "serve-static": "1.14.1",
"strip-bom": "3.0.0", "strip-bom": "3.0.0",
...@@ -13123,6 +13313,13 @@ ...@@ -13123,6 +13313,13 @@
"jsbn": "0.1.1", "jsbn": "0.1.1",
"safer-buffer": "2.1.2", "safer-buffer": "2.1.2",
"tweetnacl": "0.14.5" "tweetnacl": "0.14.5"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
} }
}, },
"stackframe": { "stackframe": {
...@@ -13283,6 +13480,11 @@ ...@@ -13283,6 +13480,11 @@
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
"dev": true "dev": true
}, },
"stringstream": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
"integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="
},
"strip-ansi": { "strip-ansi": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
...@@ -13555,12 +13757,18 @@ ...@@ -13555,12 +13757,18 @@
"dev": true "dev": true
}, },
"tough-cookie": { "tough-cookie": {
"version": "2.5.0", "version": "2.3.4",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
"requires": { "requires": {
"psl": "1.7.0", "punycode": "1.4.1"
"punycode": "2.1.1" },
"dependencies": {
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
}
} }
}, },
"trim-right": { "trim-right": {
...@@ -13814,6 +14022,7 @@ ...@@ -13814,6 +14022,7 @@
"version": "4.2.2", "version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": { "requires": {
"punycode": "2.1.1" "punycode": "2.1.1"
} }
...@@ -13937,6 +14146,13 @@ ...@@ -13937,6 +14146,13 @@
"assert-plus": "1.0.0", "assert-plus": "1.0.0",
"core-util-is": "1.0.2", "core-util-is": "1.0.2",
"extsprintf": "1.3.0" "extsprintf": "1.3.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
}
} }
}, },
"vinyl": { "vinyl": {
...@@ -13959,7 +14175,7 @@ ...@@ -13959,7 +14175,7 @@
"defaults": "1.0.3", "defaults": "1.0.3",
"glob-stream": "3.1.18", "glob-stream": "3.1.18",
"glob-watcher": "0.0.6", "glob-watcher": "0.0.6",
"graceful-fs": "3.0.12", "graceful-fs": "4.2.3",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"strip-bom": "1.0.0", "strip-bom": "1.0.0",
"through2": "0.6.5", "through2": "0.6.5",
...@@ -13973,13 +14189,10 @@ ...@@ -13973,13 +14189,10 @@
"dev": true "dev": true
}, },
"graceful-fs": { "graceful-fs": {
"version": "3.0.12", "version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==", "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true, "dev": true
"requires": {
"natives": "1.1.6"
}
}, },
"isarray": { "isarray": {
"version": "0.0.1", "version": "0.0.1",
...@@ -14238,6 +14451,14 @@ ...@@ -14238,6 +14451,14 @@
"chokidar": "2.1.8", "chokidar": "2.1.8",
"graceful-fs": "4.2.3", "graceful-fs": "4.2.3",
"neo-async": "2.6.1" "neo-async": "2.6.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
} }
}, },
"webpack": { "webpack": {
...@@ -14364,6 +14585,14 @@ ...@@ -14364,6 +14585,14 @@
"parse-json": "2.2.0", "parse-json": "2.2.0",
"pify": "2.3.0", "pify": "2.3.0",
"strip-bom": "3.0.0" "strip-bom": "3.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
}
} }
}, },
"path-type": { "path-type": {
......
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
"http-auth": "^4.1.2", "http-auth": "^4.1.2",
"jquery": "^3.4.1", "jquery": "^3.4.1",
"npm": "^6.13.6", "npm": "^6.13.6",
"request": "^2.81.0",
"soap": "^0.30.0" "soap": "^0.30.0"
}, },
"babel": { "babel": {
......
...@@ -6,13 +6,451 @@ const bodyParser = require('body-parser') ...@@ -6,13 +6,451 @@ const bodyParser = require('body-parser')
const soap = require('soap'); const soap = require('soap');
app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json()) app.use(bodyParser.json())
const request = require('ajax-request'); const request_ajax = require('ajax-request');
const request = require('request');
app.use(express.static('vcm')); app.use(express.static('vcm'));
app.listen(process.env.PORT || 8083); app.listen(process.env.PORT || 8083);
console.log("on 8083"); console.log("on 8083");
//https://traffic.ls.hereapi.com/traffic/6.1/flow.json?bbox=48.8575,8.9757;48.6747,9.3712&responseattributes=sh%2Cfc&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y
var flow
request('https://traffic.ls.hereapi.com/traffic/6.2/flow.json?prox=48.7823,9.1807,919&responseattributes=sh%2Cfc&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y', {json:true},(err, res, body) => {
if (err) {return console.log(err); }
console.log(body.url);
console.log(body.explanation);
flow = res
})
var accident
request('https://traffic.ls.hereapi.com/traffic/6.3/incidents.json?apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y&bbox=48.790,9.139;48.771,9.239', { json: true }, (err, res, body) => {
if (err) { return console.log(err); }
console.log(body.url);
console.log(body.explanation);
accident = res
console.log(accident[1]);
});
var testjsonsflow = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "LineString",
"coordinates": [
[
9.211758404732821,
48.79928779052079,
-0.003812428450083977
],
[
9.21372550369925,
48.79757037042029,
-0.004464600820639255
],
[
9.217416766673484,
48.79386716715126,
-0.0037284616307613283
],
[
9.217370353016513,
48.79390319685058,
-0.0038132023499026415
]
]
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
51,
153,
204,
1
],
"width": 39,
"lineDash": null
}
}
}
}
],
"vcsMeta": {
"version": "1.0",
"altitudeMode": "clampToGround",
"embeddedIcons": []
}
}
var flowjson;
app.get('/FLOW', function (req, res) {
console.log('command angekommen!')
try {
// res.json(testjsonsflow);
res.json(flowjson);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
app.get('/CONSTRUCTION', function (req, res) {
console.log('command angekommen!')
try {
var testjson = {
"name":"incident" + "01",
"type":"FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": buildJSON('CONSTRUCTION')
};
res.json(testjson);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
app.get('/ROAD_CLOSURE', function (req, res) {
console.log('command angekommen!')
try {
var testjson = {
"name":"incident" + "01",
"type":"FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": buildJSON('ROAD_CLOSURE')
};
res.json(testjson);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
function buildFLOW(){
var JsonFeature = [];
var length = flow.body.RWS[0].RW.length;
console.log(length);
for (var i = 0; i<= length -1; i++){
var shplength = flow.body.RWS[0].RW[i].FIS[0].FI[0].SHP.length;
// var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
var mid = flow.body.RWS[0].RW[i].mid;
var LI = flow.body.RWS[0].RW[i].LI;
var DE = flow.body.RWS[0].RW[i].DE;
var PBT = flow.body.RWS[0].RW[i].PBT;
var TMC = flow.body.RWS[0].RW[i].FIS[0].FI[0].TMC;
var CF = flow.body.RWS[0].RW[i].FIS[0].FI[0].CF[0];
var locationshp = [];
for (var j = 0; j <= shplength - 1; j++ ){
var value = flow.body.RWS[0].RW[i].FIS[0].FI[0].SHP[j].value[0];
// console.log(value[0])
var splitvalue = [];
splitvalue = value.split(" ");
// console.log(splitvalue.length)
var coord = [];
for (var k = 0; k <= splitvalue.length -2; k++){
var latlon = [];
latlon = splitvalue[k].split(",");
var lat = latlon[0];
var lon = latlon[1];
coord.push([parseFloat(lon),parseFloat(lat)])
}
// var FC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LONGITUDE;
locationshp.push(coord)
// console.log(value)
}
if (CF.JF){
// console.log("CF.JF -- " + CF.JF)
}
if ((CF.JF >= 3) ){
JsonFeature.push({
"type":"Feature",
"properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
"geometry":{
"type":"MultiLineString",
"coordinates": locationshp
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
153,
0,
0,
1
],
"width": 2,
"lineDash": null
}
}
}
})
} else if ((CF.JF <3 && CF.JF >= 2) ){
JsonFeature.push({
"type":"Feature",
"properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
"geometry":{
"type":"MultiLineString",
"coordinates": locationshp
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
255,
153,
51,
1
],
"width": 2,
"lineDash": null
}
}
}
})
} else if ((CF.JF <2 && CF.JF >= 1)){
JsonFeature.push({
"type":"Feature",
"properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
"geometry":{
"type":"MultiLineString",
"coordinates": locationshp
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
230,
230,
0,
1
],
"width": 2,
"lineDash": null
}
}
}
})
} else if ((CF.JF < 1)){
JsonFeature.push({
"type":"Feature",
"properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
"geometry":{
"type":"MultiLineString",
"coordinates": locationshp
},
"vcsMeta": {
"style": {
"type": "vector",
"stroke": {
"color": [
0,
153,
0,
1
],
"width": 2,
"lineDash": null
}
}
}
})
}
// JsonFeature.push({
// "type":"Feature",
// "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF},
// "geometry":{
// "type":"MultiLineString",
// "coordinates": locationshp
// },
// "vcsMeta": {
// "style": {
// "type": "vector",
// "stroke": {
// "color": [
// 51,
// 153,
// 204,
// 1
// ],
// "width": 39,
// "lineDash": null
// }
// }
// }
// })
// console.log(JsonFeature)
}
return JsonFeature
}
function buildJSON(type){
var JsonFeature = [];
var length = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM.length;
console.log(length)
for (var i = 0; i <= length - 1; i++){
// console.log(accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i])
var lat = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LATITUDE;
var lon = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LONGITUDE;
// var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
var id = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_ID;
var origid = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ORIGINAL_TRAFFIC_ITEM_ID;
var TRAFFIC_ITEM_DESCRIPTION = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_DESCRIPTION;
var COMMENTS = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].COMMENTS;
var CRITICALITY = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].CRITICALITY;
var VERIFIED = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].VERIFIED;
var TRAFFIC_ITEM_TYPE_DESC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
var TRAFFIC_ITEM_STATUS_SHORT_DESC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_STATUS_SHORT_DESC;
var TRAFFIC_ITEM_DETAIL = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_DETAIL;
var START_TIME = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].START_TIME;
var LOCATION = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION;
var ENTRY_TIME = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ENTRY_TIME;
var END_TIME = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].END_TIME;
var ABBREVIATION = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ABBREVIATION;
if (type == 'CONSTRUCTION'){
console.log(i)
if (TRAFFIC_ITEM_TYPE_DESC == "CONSTRUCTION"){
JsonFeature.push({
"type":"Feature",
"properties": { "id": id, "name": "datapoint" , "original_traffic_id": origid, "TRAFFIC_ITEM_DESCRIPTION": TRAFFIC_ITEM_DESCRIPTION, "COMMENTS":COMMENTS, "CRITICALITY":CRITICALITY,
"VERIFIED":VERIFIED,"TRAFFIC_ITEM_TYPE_DESC":TRAFFIC_ITEM_TYPE_DESC, "TRAFFIC_ITEM_STATUS_SHORT_DESC":TRAFFIC_ITEM_STATUS_SHORT_DESC, "TRAFFIC_ITEM_DETAIL":TRAFFIC_ITEM_DETAIL,
"START_TIME":START_TIME, "LOCATION":LOCATION, "ENTRY_TIME":ENTRY_TIME, "END_TIME":END_TIME, "ABBREVIATION":ABBREVIATION},
"geometry":{
"type":"MultiPoint",
"coordinates": [ [lon, lat]]
}
})
}
} else if (type == "ROAD_CLOSURE"){
if (TRAFFIC_ITEM_TYPE_DESC == "ROAD_CLOSURE"){
JsonFeature.push({
"type":"Feature",
"properties": { "id": id, "name": "datapoint" , "original_traffic_id": origid, "TRAFFIC_ITEM_DESCRIPTION": TRAFFIC_ITEM_DESCRIPTION, "COMMENTS":COMMENTS, "CRITICALITY":CRITICALITY,
"VERIFIED":VERIFIED,"TRAFFIC_ITEM_TYPE_DESC":TRAFFIC_ITEM_TYPE_DESC, "TRAFFIC_ITEM_STATUS_SHORT_DESC":TRAFFIC_ITEM_STATUS_SHORT_DESC, "TRAFFIC_ITEM_DETAIL":TRAFFIC_ITEM_DETAIL,
"START_TIME":START_TIME, "LOCATION":LOCATION, "ENTRY_TIME":ENTRY_TIME, "END_TIME":END_TIME, "ABBREVIATION":ABBREVIATION},
"geometry":{
"type":"MultiPoint",
"coordinates": [ [lon, lat]]
}
})
}
}
}
return JsonFeature;
}
app.post('/getTrafficIncidents', function (req, res) {
console.log('command angekommen!')
try {
res.json(accident);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
app.post('/FLOWdata', function (req, res) {
console.log('command angekommen!')
try {
flowjson = {
"name":"flow" + "01",
"type":"FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": buildFLOW()
};
res.json(flowjson);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
app.post('/FLOWtest', function (req, res) {
console.log('command angekommen!')
try {
res.json(testjsonsflow);
console.log('.../loadSetP successful!');
}
catch (err) {
console.log('.../loadSetP failed!\n' + err);
}
});
var IDGeojson = 100000 var IDGeojson = 100000
var ballonContent = { var ballonContent = {
......
...@@ -207,6 +207,111 @@ ...@@ -207,6 +207,111 @@
"allAvailable": false, "allAvailable": false,
"properties": [], "properties": [],
"balloonHeader": "Balloon header" "balloonHeader": "Balloon header"
},{
"template": [
"<div class='balloon' id='myBalloon'>",
"<div class='balloon-content'>",
"<h1 class='balloon-title'>Balloon header</h1>",
"<% for (var key in obj) { %>",
"<% if (obj[key] instanceof Object){%>",
"<% for (var key2 in obj[key]) { %>",
"<p class='balloon-text'><span class='balloon-street'> <strong> <%=key%>.<%=key2%> </strong> : <%=obj[key][key2]%></span><br></p>",
"<% } %>",
"<% } else{ %>",
"<p class='balloon-text'>",
"<span class='balloon-street'> <strong> <%=key%> </strong> : <%=obj[key]%></span><br>",
"</p>",
"<% } %>",
"<% } %>",
"</div>",
"<div class='balloon-close-col'>",
"<button class='close-balloon'><i class='fa fa-times fa-lg'></i></button>",
"</div>",
"<div class='dialog-image-balloon'></div>",
"<div class='balloon-left-edge'></div>",
"</div>"
],
"layerTypes": [
null
],
"layerNames": [
"FLOW"
],
"minTop": "balloonHeight + 30",
"minLeft": "70",
"allAvailable": true,
"properties": [],
"balloonHeader": "Balloon header"
},{
"template": [
"<div class='balloon' id='myBalloon'>",
"<div class='balloon-content'>",
"<h1 class='balloon-title'>Balloon header</h1>",
"<% for (var key in obj) { %>",
"<% if (obj[key] instanceof Object){%>",
"<% for (var key2 in obj[key]) { %>",
"<p class='balloon-text'><span class='balloon-street'> <strong> <%=key%>.<%=key2%> </strong> : <%=obj[key][key2]%></span><br></p>",
"<% } %>",
"<% } else{ %>",
"<p class='balloon-text'>",
"<span class='balloon-street'> <strong> <%=key%> </strong> : <%=obj[key]%></span><br>",
"</p>",
"<% } %>",
"<% } %>",
"</div>",
"<div class='balloon-close-col'>",
"<button class='close-balloon'><i class='fa fa-times fa-lg'></i></button>",
"</div>",
"<div class='dialog-image-balloon'></div>",
"<div class='balloon-left-edge'></div>",
"</div>"
],
"layerTypes": [
null
],
"layerNames": [
"CONSTRUCTION"
],
"minTop": "balloonHeight + 30",
"minLeft": "70",
"allAvailable": true,
"properties": [],
"balloonHeader": "Balloon header"
},{
"template": [
"<div class='balloon' id='myBalloon'>",
"<div class='balloon-content'>",
"<h1 class='balloon-title'>Balloon header</h1>",
"<% for (var key in obj) { %>",
"<% if (obj[key] instanceof Object){%>",
"<% for (var key2 in obj[key]) { %>",
"<p class='balloon-text'><span class='balloon-street'> <strong> <%=key%>.<%=key2%> </strong> : <%=obj[key][key2]%></span><br></p>",
"<% } %>",
"<% } else{ %>",
"<p class='balloon-text'>",
"<span class='balloon-street'> <strong> <%=key%> </strong> : <%=obj[key]%></span><br>",
"</p>",
"<% } %>",
"<% } %>",
"</div>",
"<div class='balloon-close-col'>",
"<button class='close-balloon'><i class='fa fa-times fa-lg'></i></button>",
"</div>",
"<div class='dialog-image-balloon'></div>",
"<div class='balloon-left-edge'></div>",
"</div>"
],
"layerTypes": [
null
],
"layerNames": [
"ROAD_CLOSURE"
],
"minTop": "balloonHeight + 30",
"minLeft": "70",
"allAvailable": true,
"properties": [],
"balloonHeader": "Balloon header"
}, },
{ {
"template": [ "template": [
...@@ -834,6 +939,71 @@ ...@@ -834,6 +939,71 @@
} }
], ],
"layers": [ "layers": [
{ "name": "Test",
"url": "./datasource-data/TestHere/test.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": true,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{ "name": "Railday",
"url": "./datasource-data/accoustic/DE_a_ag1_Aggrail_Lden.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": false,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{ "name": "Railnight",
"url": "./datasource-data/accoustic/DE_a_ag1_Aggrail_Lnight.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": false,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{ "name": "Streetday",
"url": "./datasource-data/accoustic/DE_a_ag1_Aggroad_Lden.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": false,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{ "name": "Streetnight",
"url": "./datasource-data/accoustic/DE_a_ag1_Aggroad_Lnight.json",
"type": "vcs.vcm.layer.GeoJSON",
"datasourceId": "...",
"activeOnStartup": false,
"exclusive": false,
"projection": {
"epsg": "4326",
"proj4": ""
},
"altitudeMode": "relativeToGround",
"heightAboveGround": 0
},
{ {
"name": "Böckingerstrasse", "name": "Böckingerstrasse",
"url": "./datasource-data/f02945f6-7978-4abc-940b-4c47af169b12/tileset.json", "url": "./datasource-data/f02945f6-7978-4abc-940b-4c47af169b12/tileset.json",
......
...@@ -20,4 +20,24 @@ ...@@ -20,4 +20,24 @@
display: none; display: none;
overflow: hidden; overflow: hidden;
background-color: #f1f1f1; background-color: #f1f1f1;
} }
\ No newline at end of file
.switch-toggle {
float: left;
background: #242729;
}
.switch-toggle input {
position: absolute;
opacity: 0;
}
.switch-toggle input + label {
width: 3rem;
float:left;
text-align:center;
color: #fff;
cursor: pointer;
}
.switch-toggle input:checked + label {
background: green;
}
\ No newline at end of file
{"TIMESTAMP":"12/17/2020 14:41:26 GMT","VERSION":2.4,"TRAFFIC_ITEMS":{"TRAFFIC_ITEM":[{"TRAFFIC_ITEM_ID":711716174877874647,"ORIGINAL_TRAFFIC_ITEM_ID":3260759043408795416,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 12:22:25","END_TIME":"12/18/2020 11:00:22","ENTRY_TIME":"12/17/2020 12:24:31","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Augustenstraße"},"STREET2":{"ADDRESS1":"Senefelderstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Augustenstraße"},"STREET2":{"ADDRESS1":"Silberburgstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77161,"LONGITUDE":9.16662},"TO":[{"LATITUDE":48.77205,"LONGITUDE":9.16806}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.77161,9.16662 48.77205,9.16806","FC":5,"LID":"52852348F","LE":0.11661033764852913,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaEuyKumgAJBQQEAy4ACgQDBHUAAJAALAAJBQQEA64AMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["52852348"]},"VERSION_ID":"202004"},"LENGTH":0.07245},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701,"SUPP_TRAFFIC_CODE":[4]}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Senefelderstraße und Silberburgstraße - Baustelle. eine Umleitung ist eingerichtet.","TYPE":"short_desc"},{"value":"Zwischen Senefelderstraße und Silberburgstraße - Baustelle. eine Umleitung ist eingerichtet.","TYPE":"desc"},{"value":"Baustelle. eine Umleitung ist eingerichtet.","TYPE":"no_exit_description"}],"mid":"e6db969c-8233-47b6-8f86-b446ec259333|1608207871215","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3398694447995353468,"ORIGINAL_TRAFFIC_ITEM_ID":3398694447995353468,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:43","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:43","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.786325,"LONGITUDE":9.180011},"TO":[{"LATITUDE":48.78623,"LONGITUDE":9.17979}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78631,9.17999 48.78635,9.18006 48.78642,9.18018","FC":5,"LID":"1236608390F","LE":0.018562659673404557,"FW":"SD"},{"value":"48.78642,9.18018 48.78657,9.18022","FC":2,"LID":"1226470429F","LE":0.016937670537516984,"FW":"MD"},{"value":"48.78657,9.18022 48.78675,9.18027","FC":2,"LID":"1232479160F","LE":0.020351408193896216,"FW":"MD"},{"value":"48.78675,9.18027 48.78703,9.18035","FC":2,"LID":"1232479161F","LE":0.03168753746269842,"FW":"MD"},{"value":"48.78703,9.18035 48.78733,9.18042","FC":2,"LID":"589239502F","LE":0.0337559374545165,"FW":"MD"},{"value":"48.78733,9.18042 48.78728,9.1802 48.78726,9.18012 48.78696,9.17952 48.78688,9.17932","FC":5,"LID":"52853185T","LE":0.09585107011624797,"FW":"SD"},{"value":"48.78688,9.17932 48.7868,9.17936","FC":5,"LID":"574413649T","LE":0.009369380615031647,"FW":"SD"},{"value":"48.7868,9.17936 48.78638,9.17968","FC":5,"LID":"574413648T","LE":0.0522918990633943,"FW":"SD"},{"value":"48.78638,9.17968 48.78623,9.17979","FC":5,"LID":"52853183T","LE":0.018536271737541223,"FW":"SD"}]}}},"POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1236608390","1226470429","1232479160","1232479161","589239502","52853185","574413649","574413648","52853183"]},"VERSION_ID":"202004"},"LENGTH":0.18475},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","TYPE":"no_exit_description"}],"mid":"ADAC/1586686081_reverse|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":2633367068012695584,"ORIGINAL_TRAFFIC_ITEM_ID":2633367068012695584,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/09/2020 23:00:00","END_TIME":"09/30/2021 21:59:00","ENTRY_TIME":"12/15/2020 15:44:43","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78417,"LONGITUDE":9.17908},"TO":[{"LATITUDE":48.7906,"LONGITUDE":9.18112}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78417,9.17908 48.78428,9.17923 48.78436,9.17934","FC":2,"LID":"52852913F","LE":0.028487081317034497,"FW":"MD"},{"value":"48.78436,9.17934 48.78444,9.17944 48.78472,9.17977","FC":2,"LID":"53123545F","LE":0.051005921813103185,"FW":"MD"},{"value":"48.78472,9.17977 48.78483,9.17989 48.78492,9.17999 48.78498,9.18005","FC":2,"LID":"1251777598F","LE":0.03549455849256219,"FW":"MD"},{"value":"48.78498,9.18005 48.78506,9.18011 48.78514,9.18016 48.7852,9.18019","FC":2,"LID":"1251777599F","LE":0.026582084714544943,"FW":"MD"},{"value":"48.7852,9.18019 48.78528,9.18021 48.78536,9.18022 48.78556,9.18022 48.7857,9.18023 48.78584,9.18026 48.78598,9.1803","FC":2,"LID":"1190912643F","LE":0.08733834693549355,"FW":"MD"},{"value":"48.78598,9.1803 48.78608,9.18032 48.78618,9.18034","FC":2,"LID":"1190912644F","LE":0.022434631888156958,"FW":"MD"},{"value":"48.78618,9.18034 48.78698,9.18053","FC":2,"LID":"589242751F","LE":0.09005344190143923,"FW":"MD"},{"value":"48.78698,9.18053 48.78724,9.18058","FC":2,"LID":"589242752F","LE":0.02914593883565874,"FW":"MD"},{"value":"48.78724,9.18058 48.78739,9.18061 48.78752,9.18064 48.78764,9.18067","FC":2,"LID":"76871483F","LE":0.0449748452868604,"FW":"MD"},{"value":"48.78764,9.18067 48.78822,9.18083","FC":2,"LID":"76871478F","LE":0.06556215793950082,"FW":"MD"},{"value":"48.78822,9.18083 48.78858,9.18093 48.78868,9.18096","FC":2,"LID":"589234918F","LE":0.05203948851790515,"FW":"MD"},{"value":"48.78868,9.18096 48.78953,9.18103","FC":3,"LID":"1188705775F","LE":0.09466471324277316,"FW":"SD"},{"value":"48.78953,9.18103 48.78986,9.18106","FC":3,"LID":"1196572259F","LE":0.03676405409402691,"FW":"SD"},{"value":"48.78986,9.18106 48.79024,9.18109","FC":3,"LID":"1196572260F","LE":0.04231562954506399,"FW":"SD"},{"value":"48.79024,9.18109 48.7906,9.18112","FC":3,"LID":"1196572261F","LE":0.04009464848666778,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaHACKw4wAJBQQBAh4ACgUEAoVqAADMAoMACQUEAgOCADAAAA==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["52852913","53123545","1251777598","1251777599","1190912643","1190912644","589242751","589242752","76871483","76871478","589234918","1188705775","1196572259","1196572260","1196572261"]},"VERSION_ID":"202004"},"LENGTH":0.46413},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","TYPE":"no_exit_description"}],"mid":"ADAC/203267770_original|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3294712490363049918,"ORIGINAL_TRAFFIC_ITEM_ID":3294712490363049918,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:42","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stuttgart-Nord, Feuerbacher Heide zwischen Am Bismarckturm und Lenzhalde gesperrt, Baustelle, bis voraussichtlich 18.12.2020","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.79145,"LONGITUDE":9.15668},"TO":[{"LATITUDE":48.78729,"LONGITUDE":9.15157}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.79145,9.15668 48.79115,9.15637 48.79076,9.15586 48.79041,9.15534","FC":5,"LID":"52881421T","LE":0.15225497405140115,"FW":"SD"},{"value":"48.79041,9.15534 48.79035,9.15525","FC":5,"LID":"52881419T","LE":0.009394037289061852,"FW":"SD"},{"value":"48.79035,9.15525 48.78965,9.15412","FC":5,"LID":"1233996613T","LE":0.11381512465839826,"FW":"SD"},{"value":"48.78965,9.15412 48.78944,9.15378","FC":5,"LID":"1233996612T","LE":0.03419829883181487,"FW":"SD"},{"value":"48.78944,9.15378 48.78925,9.15349 48.78888,9.15311 48.78884,9.15308","FC":5,"LID":"1233996627T","LE":0.0846983642207865,"FW":"SD"},{"value":"48.78884,9.15308 48.78849,9.15279","FC":5,"LID":"1233996626T","LE":0.04437352740246703,"FW":"SD"},{"value":"48.78849,9.15279 48.78829,9.15258 48.78785,9.152 48.78777,9.1519","FC":5,"LID":"1280401354T","LE":0.10349825856539882,"FW":"SD"},{"value":"48.78777,9.1519 48.78765,9.15176","FC":5,"LID":"1280401356T","LE":0.016849565169700067,"FW":"SD"},{"value":"48.78765,9.15176 48.78756,9.15168","FC":5,"LID":"1280401355T","LE":0.011607374340227615,"FW":"SD"},{"value":"48.78756,9.15168 48.78746,9.15163 48.78729,9.15157","FC":5,"LID":"52852637T","LE":0.031124423562728213,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaC7CKyNgAJBQQEA5gACgUEBIRZAP4B/mAACQUEBAMJADAAAA==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["52881421","52881419","1233996613","1233996612","1233996627","1233996626","1280401354","1280401356","1280401355","52852637"]},"VERSION_ID":"202004"},"LENGTH":0.37394},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Wegen Baustelle gesperrt. Stuttgart-Nord, Feuerbacher Heide zwischen Am Bismarckturm und Lenzhalde gesperrt, Baustelle, bis voraussichtlich 18.12.2020","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt. Stuttgart-Nord, Feuerbacher Heide zwischen Am Bismarckturm und Lenzhalde gesperrt, Baustelle, bis voraussichtlich 18.12.2020","TYPE":"no_exit_description"}],"mid":"LMS-BW/r_IVLZStuttgart/r_IVLZStuttgart/8118_TIC-IVLZStuttgart/1_DBWLMS-BW/244083|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":827604263824456220,"ORIGINAL_TRAFFIC_ITEM_ID":827604263824456220,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:12","END_TIME":"12/21/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:23","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14310","LOCATION_DESC":"Heilmannstraße","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14309","LOCATION_DESC":"Nordbahnhofstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":514,"QUANTIFIERS":0,"DESCRIPTION":"Fahrbahn von auf einen Fahrstreifen verengt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D15","EXTENT":"2","DURATION":0},"LENGTH":0.27902,"PRIMARY_OFFSET":0.26784},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14310","LOCATION_DESC":"Heilmannstraße","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14309","LOCATION_DESC":"Nordbahnhofstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"2","DURATION":0},"LENGTH":0.27902,"PRIMARY_OFFSET":0.26784}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Cannstatter Straße","TYPE":"NTCSA"},{"value":"Cannstatter Straße","TYPE":"RDSGN"},{"value":"Cannstatter Straße","TYPE":"LOCAL"}],"ID":14308},"POINT":{"DESCRIPTION":[{"value":"Heilmannstraße","TYPE":"NTCSA"},{"value":"Heilmannstraße","TYPE":"RDSGN"},{"value":"Heilmannstraße","TYPE":"LOCAL"},{"value":"Cannstatter Straße","TYPE":"BNAME"}],"ID":14310},"DIRECTION":{"DESCRIPTION":[{"value":"HEILBRONNER STRAßE","TYPE":"LOCAL"},{"value":"HEILBRONNER STRAßE","TYPE":"NTCSA"},{"value":"HEILBRONNER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Budapester Platz","TYPE":"NTCSA"},{"value":"Budapester Platz","TYPE":"RDSGN"},{"value":"Budapester Platz","TYPE":"LOCAL"}],"ID":14308},"POINT":{"DESCRIPTION":[{"value":"Nordbahnhofstraße","TYPE":"NTCSA"},{"value":"Nordbahnhofstraße","TYPE":"RDSGN"},{"value":"Nordbahnhofstraße","TYPE":"LOCAL"},{"value":"Budapester Platz","TYPE":"BNAME"}],"ID":14309},"DIRECTION":{"DESCRIPTION":[{"value":"HEILBRONNER STRAßE","TYPE":"LOCAL"},{"value":"HEILBRONNER STRAßE","TYPE":"NTCSA"},{"value":"HEILBRONNER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78872,"LONGITUDE":9.1909},"TO":[{"LATITUDE":48.79077,"LONGITUDE":9.18628}]},"TPEGOpenLRBase64":"CCkBEAAlJAaJJyKxtwAJBQQCA9AACgUEAoNZAP4WANgACQUEAgNWADAAFw==","NAVTECH":{"EDGE":{"EDGE_ID":["1265466132","1265466133","589239598","1188587922","1265465812","1265465811","540887036","1115246844","1115246845","1115246843","1115246842","1115246841","1115246840","1115246839","1115246838","574413617","574413618","52888414","1189088334"]},"VERSION_ID":"202004"},"LENGTH":0.27902},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":514},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Heilmannstraße und Nordbahnhofstraße - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"short_desc"},{"value":"Zwischen Heilmannstraße und Nordbahnhofstraße - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"no_exit_description"}],"mid":"9abe56fc-a5c5-4995-8743-b87afec2fe03|1608047183368","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":4432406554275314397,"ORIGINAL_TRAFFIC_ITEM_ID":4432406554275314397,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:11","END_TIME":"12/31/2021 22:59:00","ENTRY_TIME":"12/15/2020 15:46:11","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":"Arnulf-Klett-Platz"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":"Heilbronner Straße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78386,"LONGITUDE":9.17983},"TO":[{"LATITUDE":48.784295,"LONGITUDE":9.179332}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78386,9.17983 48.784,9.17955 48.78404,9.17948 48.78408,9.17943 48.78412,9.17939 48.78417,9.17936 48.78422,9.17934 48.78428,9.17933 48.78436,9.17934","FC":3,"LID":"851356186F","LE":0.07107640482616133,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaHIyKw1QAJBQQCA9oACgQDAkcA/88AMgAJBQQCA34AMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["851356186"]},"VERSION_ID":"202004"},"LENGTH":0.04416},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803},{"EVENT_CODE":514}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Arnulf-Klett-Platz und Heilbronner Straße - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"short_desc"},{"value":"Zwischen Arnulf-Klett-Platz und Heilbronner Straße - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/99047_TIC/NAVTEQ-ORIGINAL-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3948327483708000332,"ORIGINAL_TRAFFIC_ITEM_ID":3948327483708000332,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:12","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:12","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14327","LOCATION_DESC":"Heilbronner Straße","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14326","LOCATION_DESC":"Ossietzkystraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.07599,"PRIMARY_OFFSET":0.34633}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Kriegsbergstraße","TYPE":"NTCSA"},{"value":"Kriegsbergstraße","TYPE":"RDSGN"},{"value":"Kriegsbergstraße","TYPE":"LOCAL"}],"ID":14322},"POINT":{"DESCRIPTION":[{"value":"Heilbronner Straße","TYPE":"NTCSA"},{"value":"Heilbronner Straße","TYPE":"RDSGN"},{"value":"Heilbronner Straße","TYPE":"LOCAL"},{"value":"Kriegsbergstraße","TYPE":"BNAME"}],"ID":14327},"DIRECTION":{"DESCRIPTION":[{"value":"ROTEBÜHLSTRAßE","TYPE":"LOCAL"},{"value":"ROTEBÜHLSTRAßE","TYPE":"NTCSA"},{"value":"ROTEBÜHLSTRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Kriegsbergstraße","TYPE":"NTCSA"},{"value":"Kriegsbergstraße","TYPE":"RDSGN"},{"value":"Kriegsbergstraße","TYPE":"LOCAL"}],"ID":14322},"POINT":{"DESCRIPTION":[{"value":"Ossietzkystraße","TYPE":"NTCSA"},{"value":"Ossietzkystraße","TYPE":"RDSGN"},{"value":"Ossietzkystraße","TYPE":"LOCAL"},{"value":"Kriegsbergstraße","TYPE":"BNAME"}],"ID":14326},"DIRECTION":{"DESCRIPTION":[{"value":"ROTEBÜHLSTRAßE","TYPE":"LOCAL"},{"value":"ROTEBÜHLSTRAßE","TYPE":"NTCSA"},{"value":"ROTEBÜHLSTRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78417,"LONGITUDE":9.17908},"TO":[{"LATITUDE":48.78429,"LONGITUDE":9.1776}]},"TPEGOpenLRBase64":"CCgBEAAkIwaHACKw4wAJBQQCAtwACgQDAnkA/2sADAAJBQQCAi4AMAAA","NAVTECH":{"EDGE":{"EDGE_ID":["52852912","722269979","1234075027","1234075026"]},"VERSION_ID":"202004"},"LENGTH":0.07599},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Heilbronner Straße und Ossietzkystraße - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Zwischen Heilbronner Straße und Ossietzkystraße - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/233515_TIC/NAVTEQ-ORIGINAL-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":946702600611959340,"ORIGINAL_TRAFFIC_ITEM_ID":946702600611959340,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:43","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:43","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78623,"LONGITUDE":9.17979},"TO":[{"LATITUDE":48.786325,"LONGITUDE":9.180011}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78623,9.17979 48.78638,9.17968","FC":5,"LID":"52853183F","LE":0.018536271737541223,"FW":"SD"},{"value":"48.78638,9.17968 48.7868,9.17936","FC":5,"LID":"574413648F","LE":0.0522918990633943,"FW":"SD"},{"value":"48.7868,9.17936 48.78688,9.17932","FC":5,"LID":"574413649F","LE":0.009369380615031647,"FW":"SD"},{"value":"48.78688,9.17932 48.78696,9.17952 48.78726,9.18012 48.78728,9.1802 48.78733,9.18042","FC":5,"LID":"52853185F","LE":0.09585107011624797,"FW":"SD"},{"value":"48.78733,9.18042 48.78703,9.18035","FC":2,"LID":"589239502T","LE":0.0337559374545165,"FW":"MD"},{"value":"48.78703,9.18035 48.78675,9.18027","FC":2,"LID":"1232479161T","LE":0.03168753746269842,"FW":"MD"},{"value":"48.78675,9.18027 48.78657,9.18022","FC":2,"LID":"1232479160T","LE":0.020351408193896216,"FW":"MD"},{"value":"48.78657,9.18022 48.78642,9.18018","FC":2,"LID":"1226470429T","LE":0.016937670537516984,"FW":"MD"},{"value":"48.78642,9.18018 48.78635,9.18006 48.78631,9.17999","FC":5,"LID":"1236608390T","LE":0.018562659673404557,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaHISKxQwAJBQQEA+4ACgUEBII7AAAAAAAACQUEBAMqADAAEQ==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["52853183","574413648","574413649","52853185","589239502","1232479161","1232479160","1226470429","1236608390"]},"VERSION_ID":"202004"},"LENGTH":0.18475},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Jägerstraße, in beiden Richtungen, in Höhe Heilbronner Straße, Baustelle, Fahrbahnverengung, bis 31.12.2020","TYPE":"no_exit_description"}],"mid":"ADAC/1586686081_original|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":4401015693302025755,"ORIGINAL_TRAFFIC_ITEM_ID":3992938573233681562,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/16/2020 15:46:09","END_TIME":"12/20/2020 15:45:37","ENTRY_TIME":"12/16/2020 15:46:17","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Sängerstraße"},"STREET2":{"ADDRESS1":"Willy-Brandt-Straße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Sängerstraße"},"STREET2":{"ADDRESS1":"Landhausstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78254,"LONGITUDE":9.18772},"TO":[{"LATITUDE":48.78242,"LONGITUDE":9.18807}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78254,9.18772 48.78242,9.18807","FC":5,"LID":"1090689572T","LE":0.028977018721502726,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaIkyKwlwAJBQQEA1MACgQDBB0AACP/9AAJBQQEA9MAMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["1090689572"]},"VERSION_ID":"202004"},"LENGTH":0.018},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735,"SUPP_TRAFFIC_CODE":[63]}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen zwischen Willy-Brandt-Straße und Landhausstraße - Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"short_desc"},{"value":"Geschlossen zwischen Willy-Brandt-Straße und Landhausstraße - Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"no_exit_description"}],"mid":"0aa89719-e80d-4e84-871e-f5103115f9c3|1608133577315","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":2370466029812104886,"ORIGINAL_TRAFFIC_ITEM_ID":2068618593608323609,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 09:46:55","END_TIME":"12/18/2020 09:45:37","ENTRY_TIME":"12/17/2020 09:46:55","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Lerchenstraße"},"STREET2":{"ADDRESS1":"Hegelstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Lerchenstraße"},"STREET2":{"ADDRESS1":"Hoppenlaustraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.783043,"LONGITUDE":9.166595},"TO":[{"LATITUDE":48.78295,"LONGITUDE":9.16628}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.7831,9.16679 48.78295,9.16628","FC":5,"LID":"52853245T","LE":0.041023890507023174,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaEwyKwsQAJBQQEA68ACgQDBCkA/83/8QAJBQQEAy8AMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["52853245"]},"VERSION_ID":"202004"},"LENGTH":0.02548},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen zwischen Hegelstraße und Hoppenlaustraße - Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen zwischen Hegelstraße und Hoppenlaustraße - Wegen Baustelle gesperrt.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt.","TYPE":"no_exit_description"}],"mid":"NAVTEQ/r_NAVTEQ/10886118_TIC/NAVTEQ-ORIGINAL-1|1608198384545","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1945169082182305705,"ORIGINAL_TRAFFIC_ITEM_ID":4478685570035415403,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/16/2020 15:46:09","END_TIME":"12/20/2020 15:45:37","ENTRY_TIME":"12/16/2020 15:46:18","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78242,"LONGITUDE":9.18807},"TO":[{"LATITUDE":48.78254,"LONGITUDE":9.18772}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78242,9.18807 48.78254,9.18772","FC":5,"LID":"1090689572F","LE":0.028977018721502726,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaIoyKwkgAJBQQEA9MACgQDBB0A/90ADAAJBQQEA1MAMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1090689572"]},"VERSION_ID":"202004"},"LENGTH":0.018},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735,"SUPP_TRAFFIC_CODE":[63]}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"short_desc"},{"value":"Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt. eine örtliche Umleitung ist eingerichtet.","TYPE":"no_exit_description"}],"mid":"946c487b-50f1-4642-8dfb-e06a5d1183e9|1608133578022","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":2438656320007653137,"ORIGINAL_TRAFFIC_ITEM_ID":2438656320007653137,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:09","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/16/2020 03:55:11","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14315","LOCATION_DESC":"Lautenschlagerstraße","RDS_DIRECTION":"-"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14316","LOCATION_DESC":"Konrad-Adenauer-Straße","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":518,"DESCRIPTION":"Fahrbahnverengung.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D19","EXTENT":"2","DURATION":0},"LENGTH":0.15657,"PRIMARY_OFFSET":0.0842},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14315","LOCATION_DESC":"Lautenschlagerstraße","RDS_DIRECTION":"-"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14316","LOCATION_DESC":"Konrad-Adenauer-Straße","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"2","DURATION":0},"LENGTH":0.15657,"PRIMARY_OFFSET":0.0842}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Arnulf-Klett-Platz","TYPE":"NTCSA"},{"value":"Arnulf-Klett-Platz","TYPE":"RDSGN"},{"value":"Arnulf-Klett-Platz","TYPE":"LOCAL"}],"ID":14313},"POINT":{"DESCRIPTION":[{"value":"Lautenschlagerstraße","TYPE":"NTCSA"},{"value":"Lautenschlagerstraße","TYPE":"RDSGN"},{"value":"Lautenschlagerstraße","TYPE":"LOCAL"},{"value":"Arnulf-Klett-Platz","TYPE":"BNAME"}],"ID":14315},"DIRECTION":{"DESCRIPTION":[{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"LOCAL"},{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"NTCSA"},{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Gebhard-Müller-Platz","TYPE":"NTCSA"},{"value":"Gebhard-Müller-Platz","TYPE":"RDSGN"},{"value":"Gebhard-Müller-Platz","TYPE":"LOCAL"}],"ID":14313},"POINT":{"DESCRIPTION":[{"value":"Konrad-Adenauer-Straße","TYPE":"NTCSA"},{"value":"Konrad-Adenauer-Straße","TYPE":"RDSGN"},{"value":"Konrad-Adenauer-Straße","TYPE":"LOCAL"},{"value":"Gebhard-Müller-Platz","TYPE":"BNAME"}],"ID":14316},"DIRECTION":{"DESCRIPTION":[{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"LOCAL"},{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"NTCSA"},{"value":"KONRAD-ADENAUER-STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78275,"LONGITUDE":9.18206},"TO":[{"LATITUDE":48.78179,"LONGITUDE":9.18515}]},"TPEGOpenLRBase64":"CCoBEAAmJQaHOCKwwgAJBQQCAlcACgUEAoMVAAHo/1kACQUEAgLSADCBGQA=","NAVTECH":{"EDGE":{"EDGE_ID":["841534048","716479357","716479356","706870702","706870701"]},"VERSION_ID":"202004"},"LENGTH":0.15657},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":518},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Lautenschlagerstraße und Konrad-Adenauer-Straße - Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Zwischen Lautenschlagerstraße und Konrad-Adenauer-Straße - Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"no_exit_description"}],"mid":"48dc9f33-0411-47c6-ae8f-87d59abd591f|1608090911247","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":327121107549763699,"ORIGINAL_TRAFFIC_ITEM_ID":3178022420691006842,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 09:46:55","END_TIME":"12/18/2020 09:45:37","ENTRY_TIME":"12/17/2020 09:46:55","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Eichstraße"},"STREET2":{"ADDRESS1":"Nadlerstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Eichstraße"},"STREET2":{"ADDRESS1":"Nadlerstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77387,"LONGITUDE":9.17811},"TO":[{"LATITUDE":48.77443,"LONGITUDE":9.17763}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.77387,9.17811 48.77408,9.17836 48.7743,9.17865 48.77437,9.17853","FC":5,"LID":"76871960F","LE":0.07392809153258348,"FW":"SD"},{"value":"48.77437,9.17853 48.77467,9.17799","FC":5,"LID":"589250012F","LE":0.05184935675655247,"FW":"SD"},{"value":"48.77467,9.17799 48.77456,9.17781 48.77449,9.1777 48.77443,9.17763","FC":5,"LID":"53229308T","LE":0.03766771464291719,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaG0yKvAwAJBQQEAxsACgUEBIEkAP/QADgACQUEBAMeADAAAA==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["76871960","589250012","53229308"]},"VERSION_ID":"202004"},"LENGTH":0.10155},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen bei Nadlerstraße - Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen bei Nadlerstraße - Wegen Baustelle gesperrt.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt.","TYPE":"no_exit_description"}],"mid":"NAVTEQ/r_NAVTEQ/10885152_TIC/NAVTEQ-ORIGINAL-1|1608198384540","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1737718185808422944,"ORIGINAL_TRAFFIC_ITEM_ID":1737718185808422944,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:42","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54762","LOCATION_DESC":"Killesberg","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54761","LOCATION_DESC":"Zeppelinstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":708,"QUANTIFIERS":0,"DESCRIPTION":"Vorübergehende Regelung mit provisorischer Ampelanlage.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E8","EXTENT":"1","DURATION":0},"LENGTH":0.27974,"PRIMARY_OFFSET":0.00551},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54762","LOCATION_DESC":"Killesberg","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54761","LOCATION_DESC":"Zeppelinstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":742,"QUANTIFIERS":0,"DESCRIPTION":"Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"E1.E14","EXTENT":"1","DURATION":0},"LENGTH":0.27974,"PRIMARY_OFFSET":0.00551}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Am Kräherwald","TYPE":"NTCSA"},{"value":"Am Kräherwald","TYPE":"RDSGN"},{"value":"Am Kräherwald","TYPE":"LOCAL"}],"ID":30971},"POINT":{"DESCRIPTION":[{"value":"Killesberg","TYPE":"NTCSA"},{"value":"Killesberg","TYPE":"RDSGN"},{"value":"Killesberg","TYPE":"LOCAL"},{"value":"Am Kräherwald","TYPE":"BNAME"}],"ID":54762},"DIRECTION":{"DESCRIPTION":[{"value":"LEONBERG","TYPE":"LOCAL"},{"value":"LEONBERG","TYPE":"NTCSA"},{"value":"LEONBERG","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Am Kräherwald","TYPE":"NTCSA"},{"value":"Am Kräherwald","TYPE":"RDSGN"},{"value":"Am Kräherwald","TYPE":"LOCAL"}],"ID":30971},"POINT":{"DESCRIPTION":[{"value":"Zeppelinstraße","TYPE":"NTCSA"},{"value":"Zeppelinstraße","TYPE":"RDSGN"},{"value":"Zeppelinstraße","TYPE":"LOCAL"},{"value":"Am Kräherwald","TYPE":"BNAME"}],"ID":54761},"DIRECTION":{"DESCRIPTION":[{"value":"LEONBERG","TYPE":"LOCAL"},{"value":"LEONBERG","TYPE":"NTCSA"},{"value":"LEONBERG","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78726,"LONGITUDE":9.15096},"TO":[{"LATITUDE":48.78417,"LONGITUDE":9.14701}]},"TPEGOpenLRBase64":"CCkBEAAlJAaB5yKxfAAJBQQCA44ACgUEAoNhAP5h/rMACQUEAgMfADAWCQ==","NAVTECH":{"EDGE":{"EDGE_ID":["1071213747","809477092","1188661476","1188661475","52852320","809470388","1265157734","1265157733","1265744608"]},"VERSION_ID":"202004"},"LENGTH":0.27974},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":708},{"EVENT_CODE":742}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Killesberg und Zeppelinstraße - Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei.","TYPE":"short_desc"},{"value":"Zwischen Killesberg und Zeppelinstraße - Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei. Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","TYPE":"desc"},{"value":"Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei. Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","TYPE":"no_exit_description"}],"mid":"LMS-BW/r_IVLZStuttgart/r_IVLZStuttgart/8606_TIC-IVLZStuttgart/1_DBWLMS-BW/253988_reverse|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3548704514586727824,"ORIGINAL_TRAFFIC_ITEM_ID":3548704514586727824,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:12","END_TIME":"03/30/2021 21:59:00","ENTRY_TIME":"12/15/2020 15:46:23","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"42096","LOCATION_DESC":"Fritz-Elsas-Straße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":503,"QUANTIFIERS":0,"DESCRIPTION":"Linker Fahrstreifen gesperrt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D4","EXTENT":"1","DURATION":0},"LENGTH":0.08629,"PRIMARY_OFFSET":0.1819},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"42096","LOCATION_DESC":"Fritz-Elsas-Straße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.08629,"PRIMARY_OFFSET":0.1819}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Theodor-Heuss-Straße","TYPE":"NTCSA"},{"value":"Theodor-Heuss-Straße","TYPE":"RDSGN"},{"value":"Theodor-Heuss-Straße","TYPE":"LOCAL"}],"ID":42124},"POINT":{"DESCRIPTION":[{"value":"Lange Straße","TYPE":"NTCSA"},{"value":"Lange Straße","TYPE":"RDSGN"},{"value":"Lange Straße","TYPE":"LOCAL"},{"value":"Theodor-Heuss-Straße","TYPE":"BNAME"}],"ID":42096},"DIRECTION":{"DESCRIPTION":[{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"LOCAL"},{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"NTCSA"},{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Theodor-Heuss-Straße","TYPE":"NTCSA"},{"value":"Theodor-Heuss-Straße","TYPE":"RDSGN"},{"value":"Theodor-Heuss-Straße","TYPE":"LOCAL"}],"ID":42124},"POINT":{"DESCRIPTION":[{"value":"Fritz-Elsas-Straße","TYPE":"NTCSA"},{"value":"Fritz-Elsas-Straße","TYPE":"RDSGN"},{"value":"Fritz-Elsas-Straße","TYPE":"LOCAL"},{"value":"Theodor-Heuss-Straße","TYPE":"BNAME"}],"ID":42096},"DIRECTION":{"DESCRIPTION":[{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"LOCAL"},{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"NTCSA"},{"value":"ÖSTERREICHISCHER PLATZ","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77623,"LONGITUDE":9.17273},"TO":[{"LATITUDE":48.77522,"LONGITUDE":9.17162}]},"TPEGOpenLRBase64":"CCkBEAAlJAaF2CKvcQAJBQQBApsACgUEAYELAP+R/5sACQUEAQIZADAAAA==","NAVTECH":{"EDGE":{"EDGE_ID":["76871572","76871571","589251743","855633701","855633700"]},"VERSION_ID":"202004"},"LENGTH":0.08629},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":503},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Fritz-Elsas-Straße - Bauarbeiten auf Abschnitt. Linker Fahrstreifen gesperrt.","TYPE":"short_desc"},{"value":"Bei Fritz-Elsas-Straße - Bauarbeiten auf Abschnitt. Linker Fahrstreifen gesperrt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Linker Fahrstreifen gesperrt.","TYPE":"no_exit_description"}],"mid":"98f9c054-efff-4dec-850e-cb719e364a82|1608047183760","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1382082596731240982,"ORIGINAL_TRAFFIC_ITEM_ID":1382082596731240982,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"02/11/2020 02:35:00","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:45","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Jägerstraße"},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Jägerstraße"},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.786322,"LONGITUDE":9.180008},"TO":[{"LATITUDE":48.786228,"LONGITUDE":9.179785}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78631,9.17999 48.78623,9.17979","FC":5,"LID":"1236608389T","LE":0.017179789353681394,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaHMyKxTAAJBQQEA6MACgQDBCQA/9n/7QAJBQQEAyoAMBMA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1236608389"]},"VERSION_ID":"202004"},"LENGTH":0.01067},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"28366|1608047067799","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":4572131690502468412,"ORIGINAL_TRAFFIC_ITEM_ID":3594639132852251517,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 12:07:10","END_TIME":"12/18/2020 12:06:22","ENTRY_TIME":"12/17/2020 12:07:10","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Lerchenstraße"},"STREET2":{"ADDRESS1":"Hoppenlaustraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Lerchenstraße"},"STREET2":{"ADDRESS1":"Hegelstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78295,"LONGITUDE":9.16628},"TO":[{"LATITUDE":48.783043,"LONGITUDE":9.166595}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78295,9.16628 48.7831,9.16679","FC":5,"LID":"52853245F","LE":0.041023890507023174,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaErCKwqgAJBQQEAy8ACgQDBCkAADMADwAJBQQEA68AMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["52853245"]},"VERSION_ID":"202004"},"LENGTH":0.02548},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen zwischen Hoppenlaustraße und Hegelstraße - Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen zwischen Hoppenlaustraße und Hegelstraße - Wegen Baustelle gesperrt.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt.","TYPE":"no_exit_description"}],"mid":"NAVTEQ/r_NAVTEQ/10886118_TIC/NAVTEQ-REVERSE-1|1608206794512","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1561977083379889723,"ORIGINAL_TRAFFIC_ITEM_ID":1561977083379889723,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:10","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:10","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14327","LOCATION_DESC":"Friedrichsplatz","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.07683,"PRIMARY_OFFSET":0.0}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Kriegsbergstraße","TYPE":"NTCSA"},{"value":"Kriegsbergstraße","TYPE":"RDSGN"},{"value":"Kriegsbergstraße","TYPE":"LOCAL"}],"ID":14322},"POINT":{"DESCRIPTION":[{"value":"Kronenstraße","TYPE":"NTCSA"},{"value":"Kronenstraße","TYPE":"RDSGN"},{"value":"Kronenstraße","TYPE":"LOCAL"},{"value":"Kriegsbergstraße","TYPE":"BNAME"}],"ID":14327},"DIRECTION":{"DESCRIPTION":[{"value":"ARNULF-KLETT-PLATZ","TYPE":"LOCAL"},{"value":"ARNULF-KLETT-PLATZ","TYPE":"NTCSA"},{"value":"ARNULF-KLETT-PLATZ","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Kriegsbergstraße","TYPE":"NTCSA"},{"value":"Kriegsbergstraße","TYPE":"RDSGN"},{"value":"Kriegsbergstraße","TYPE":"LOCAL"}],"ID":14322},"POINT":{"DESCRIPTION":[{"value":"Friedrichsplatz","TYPE":"NTCSA"},{"value":"Friedrichsplatz","TYPE":"RDSGN"},{"value":"Friedrichsplatz","TYPE":"LOCAL"},{"value":"Kriegsbergstraße","TYPE":"BNAME"}],"ID":14327},"DIRECTION":{"DESCRIPTION":[{"value":"ARNULF-KLETT-PLATZ","TYPE":"LOCAL"},{"value":"ARNULF-KLETT-PLATZ","TYPE":"NTCSA"},{"value":"ARNULF-KLETT-PLATZ","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78412,"LONGITUDE":9.17743},"TO":[{"LATITUDE":48.78407,"LONGITUDE":9.17893}]},"TPEGOpenLRBase64":"CCgBEAAkIwaGsyKw4QAJBQQCAi0ACgQDAnwAAJf/+wAJBQQCAtoAMAAA","NAVTECH":{"EDGE":{"EDGE_ID":["1234106080","1234106081","1205225983","1205225982","52888365"]},"VERSION_ID":"202004"},"LENGTH":0.07683},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Friedrichsplatz - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Bei Friedrichsplatz - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/233515_TIC/NAVTEQ-REVERSE-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":550603799007483964,"ORIGINAL_TRAFFIC_ITEM_ID":550603799007483964,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:42","END_TIME":"12/31/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Schillerstraße, Konrad-Adenauer-Straße - Heilbronner Straße, in beiden Richtungen, zwischen Kreuzung Gebhard-Müller-Platz und Hauptbahnhof, Fahrbahnverengung, Baustelle, bis 31.12.2020","RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14315","LOCATION_DESC":"Hauptbahnhof","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":701,"QUANTIFIERS":0,"DESCRIPTION":"Baustelle.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E1","EXTENT":"1","DURATION":0},"LENGTH":0.14291,"PRIMARY_OFFSET":0.00268},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14315","LOCATION_DESC":"Hauptbahnhof","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":518,"DESCRIPTION":"Fahrbahnverengung.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D19","EXTENT":"1","DURATION":0},"LENGTH":0.14291,"PRIMARY_OFFSET":0.00268}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Schillerstraße","TYPE":"NTCSA"},{"value":"Schillerstraße","TYPE":"RDSGN"},{"value":"Schillerstraße","TYPE":"LOCAL"}],"ID":14313},"POINT":{"DESCRIPTION":[{"value":"Gebhard-Müller-Platz","TYPE":"NTCSA"},{"value":"Gebhard-Müller-Platz","TYPE":"RDSGN"},{"value":"Gebhard-Müller-Platz","TYPE":"LOCAL"},{"value":"Schillerstraße","TYPE":"BNAME"}],"ID":14315},"DIRECTION":{"DESCRIPTION":[{"value":"HEILBRONNER STRAßE","TYPE":"LOCAL"},{"value":"HEILBRONNER STRAßE","TYPE":"NTCSA"},{"value":"HEILBRONNER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Schillerstraße","TYPE":"NTCSA"},{"value":"Schillerstraße","TYPE":"RDSGN"},{"value":"Schillerstraße","TYPE":"LOCAL"}],"ID":14313},"POINT":{"DESCRIPTION":[{"value":"Hauptbahnhof","TYPE":"NTCSA"},{"value":"Hauptbahnhof","TYPE":"RDSGN"},{"value":"Hauptbahnhof","TYPE":"LOCAL"},{"value":"Schillerstraße","TYPE":"BNAME"}],"ID":14315},"DIRECTION":{"DESCRIPTION":[{"value":"HEILBRONNER STRAßE","TYPE":"LOCAL"},{"value":"HEILBRONNER STRAßE","TYPE":"NTCSA"},{"value":"HEILBRONNER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78159,"LONGITUDE":9.18646},"TO":[{"LATITUDE":48.78241,"LONGITUDE":9.18358}]},"TPEGOpenLRBase64":"CCkBEAAlJAaIWCKwawAJBQQCAtAACgUEAoFqAP7bAFMACQUEAgJQADAABA==","NAVTECH":{"EDGE":{"EDGE_ID":["574379214","574379215","706870696","706870697"]},"VERSION_ID":"202004"},"LENGTH":0.14291},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Hauptbahnhof - Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Bei Hauptbahnhof - Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Schillerstraße, Konrad-Adenauer-Straße - Heilbronner Straße, in beiden Richtungen, zwischen Kreuzung Gebhard-Müller-Platz und Hauptbahnhof, Fahrbahnverengung, Baustelle, bis 31.12.2020","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Schillerstraße, Konrad-Adenauer-Straße - Heilbronner Straße, in beiden Richtungen, zwischen Kreuzung Gebhard-Müller-Platz und Hauptbahnhof, Fahrbahnverengung, Baustelle, bis 31.12.2020","TYPE":"no_exit_description"}],"mid":"ADAC/1204793137_original|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3054400731117117738,"ORIGINAL_TRAFFIC_ITEM_ID":3054400731117117738,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:09","END_TIME":"12/31/2020 11:00:00","ENTRY_TIME":"12/15/2020 15:46:09","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":"Konrad-Adenauer-Straße"},"STREET2":{"ADDRESS1":"B14"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":"Gebhard-Müller-Platz"},"STREET2":{"ADDRESS1":"Gebhard-Müller-Platz"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77975,"LONGITUDE":9.18586},"TO":[{"LATITUDE":48.78184,"LONGITUDE":9.18721}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.77975,9.18586 48.77986,9.18593 48.78011,9.18608","FC":3,"LID":"1189035467F","LE":0.043177767125916214,"FW":"SD"},{"value":"48.78011,9.18608 48.7804,9.18627","FC":3,"LID":"1265694574F","LE":0.03514295821577,"FW":"SD"},{"value":"48.7804,9.18627 48.78049,9.18633","FC":3,"LID":"1265694575F","LE":0.010936633542959937,"FW":"SD"},{"value":"48.78049,9.18633 48.78073,9.18648","FC":3,"LID":"1193066245F","LE":0.028876299525298934,"FW":"SD"},{"value":"48.78073,9.18648 48.781,9.18665","FC":3,"LID":"1193066246F","LE":0.032521204747916914,"FW":"SD"},{"value":"48.781,9.18665 48.78129,9.18683","FC":3,"LID":"52888534F","LE":0.03485726235318157,"FW":"SD"},{"value":"48.78129,9.18683 48.78144,9.18692","FC":3,"LID":"53228737F","LE":0.017944484034024245,"FW":"SD"},{"value":"48.78144,9.18692 48.78172,9.18712","FC":3,"LID":"589242984F","LE":0.03443238271895092,"FW":"SD"},{"value":"48.78172,9.18712 48.78184,9.18721","FC":3,"LID":"589242985F","LE":0.014894073453246047,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCkBEAAlJAaIKCKwAQAJBQQCAxwACgUEAoI3AACyAPwACQUEAgOSADA6AA==","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["1189035467","1265694574","1265694575","1193066245","1193066246","52888534","53228737","589242984","589242985"]},"VERSION_ID":"202004"},"LENGTH":0.15707},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen B14 und Gebhard-Müller-Platz - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Zwischen B14 und Gebhard-Müller-Platz - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/227062_TIC/NAVTEQ-ORIGINAL-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3077956326196462546,"ORIGINAL_TRAFFIC_ITEM_ID":3077956326196462546,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/09/2020 23:00:00","END_TIME":"09/30/2021 21:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.7906,"LONGITUDE":9.18112},"TO":[{"LATITUDE":48.78417,"LONGITUDE":9.17908}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.7906,9.18112 48.79024,9.18109","FC":3,"LID":"1196572261T","LE":0.04009464848666778,"FW":"SD"},{"value":"48.79024,9.18109 48.78986,9.18106","FC":3,"LID":"1196572260T","LE":0.04231562954506399,"FW":"SD"},{"value":"48.78986,9.18106 48.78953,9.18103","FC":3,"LID":"1196572259T","LE":0.03676405409402691,"FW":"SD"},{"value":"48.78953,9.18103 48.78868,9.18096","FC":3,"LID":"1188705775T","LE":0.09466471324277316,"FW":"SD"},{"value":"48.78868,9.18096 48.78858,9.18093 48.78822,9.18083","FC":2,"LID":"589234918T","LE":0.05203948851790515,"FW":"MD"},{"value":"48.78822,9.18083 48.78764,9.18067","FC":2,"LID":"76871478T","LE":0.06556215793950082,"FW":"MD"},{"value":"48.78764,9.18067 48.78752,9.18064 48.78739,9.18061 48.78724,9.18058","FC":2,"LID":"76871483T","LE":0.0449748452868604,"FW":"MD"},{"value":"48.78724,9.18058 48.78698,9.18053","FC":2,"LID":"589242752T","LE":0.02914593883565874,"FW":"MD"},{"value":"48.78698,9.18053 48.78618,9.18034","FC":2,"LID":"589242751T","LE":0.09005344190143923,"FW":"MD"},{"value":"48.78618,9.18034 48.78608,9.18032 48.78598,9.1803","FC":2,"LID":"1190912644T","LE":0.022434631888156958,"FW":"MD"},{"value":"48.78598,9.1803 48.78584,9.18026 48.7857,9.18023 48.78556,9.18022 48.78536,9.18022 48.78528,9.18021 48.7852,9.18019","FC":2,"LID":"1190912643T","LE":0.08733834693549355,"FW":"MD"},{"value":"48.7852,9.18019 48.78514,9.18016 48.78506,9.18011 48.78498,9.18005","FC":2,"LID":"1251777599T","LE":0.026582084714544943,"FW":"MD"},{"value":"48.78498,9.18005 48.78492,9.17999 48.78483,9.17989 48.78472,9.17977","FC":2,"LID":"1251777598T","LE":0.03549455849256219,"FW":"MD"},{"value":"48.78472,9.17977 48.78444,9.17944 48.78436,9.17934","FC":2,"LID":"53123545T","LE":0.051005921813103185,"FW":"MD"},{"value":"48.78436,9.17934 48.78428,9.17923 48.78417,9.17908","FC":2,"LID":"52852913T","LE":0.028487081317034497,"FW":"MD"}]}}},"POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1196572261","1196572260","1196572259","1188705775","589234918","76871478","76871483","589242752","589242751","1190912644","1190912643","1251777599","1251777598","53123545","52852913"]},"VERSION_ID":"202004"},"LENGTH":0.46413},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":701},{"EVENT_CODE":518}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Baustelle. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","TYPE":"desc"},{"value":"Baustelle. Fahrbahnverengung. Stadtgebiet Stuttgart, Heilbronner Straße, in beiden Richtungen, zwischen Arnulf-Klett Platz und Am Hauptbahnhof, Fahrbahnverengung, Baustelle, von 10.12.2020 bis 30.09.2021","TYPE":"no_exit_description"}],"mid":"ADAC/203267770_reverse|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3524944435272417886,"ORIGINAL_TRAFFIC_ITEM_ID":3524944435272417886,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:44:42","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:44:42","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"COMMENTS":"Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54762","LOCATION_DESC":"Doggenburg","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":708,"QUANTIFIERS":0,"DESCRIPTION":"Vorübergehende Regelung mit provisorischer Ampelanlage.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E8","EXTENT":"1","DURATION":0},"LENGTH":0.28484,"PRIMARY_OFFSET":0.02014},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54762","LOCATION_DESC":"Doggenburg","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":742,"QUANTIFIERS":0,"DESCRIPTION":"Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"E1.E14","EXTENT":"1","DURATION":0},"LENGTH":0.28484,"PRIMARY_OFFSET":0.02014}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Am Kräherwald","TYPE":"NTCSA"},{"value":"Am Kräherwald","TYPE":"RDSGN"},{"value":"Am Kräherwald","TYPE":"LOCAL"}],"ID":30971},"POINT":{"DESCRIPTION":[{"value":"Zeppelinstraße","TYPE":"NTCSA"},{"value":"Zeppelinstraße","TYPE":"RDSGN"},{"value":"Zeppelinstraße","TYPE":"LOCAL"},{"value":"Am Kräherwald","TYPE":"BNAME"}],"ID":54762},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART","TYPE":"LOCAL"},{"value":"STUTTGART","TYPE":"NTCSA"},{"value":"STUTTGART","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Am Kräherwald","TYPE":"NTCSA"},{"value":"Am Kräherwald","TYPE":"RDSGN"},{"value":"Am Kräherwald","TYPE":"LOCAL"}],"ID":30971},"POINT":{"DESCRIPTION":[{"value":"Doggenburg","TYPE":"NTCSA"},{"value":"Doggenburg","TYPE":"RDSGN"},{"value":"Doggenburg","TYPE":"LOCAL"},{"value":"Am Kräherwald","TYPE":"BNAME"}],"ID":54762},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART","TYPE":"LOCAL"},{"value":"STUTTGART","TYPE":"NTCSA"},{"value":"STUTTGART","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78417,"LONGITUDE":9.14701},"TO":[{"LATITUDE":48.78733,"LONGITUDE":9.15101}]},"TPEGOpenLRBase64":"CCkBEAAlJAaBJiKw4AAJBQQCAx8ACgUEAoNhAAGfAU0ACQUEAgOOADAJFg==","NAVTECH":{"EDGE":{"EDGE_ID":["1265744608","1265157733","1265157734","809470388","52852320","1188661475","1188661476","809477092","1071213747"]},"VERSION_ID":"202004"},"LENGTH":0.28484},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":708},{"EVENT_CODE":742}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Doggenburg - Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei.","TYPE":"short_desc"},{"value":"Bei Doggenburg - Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei. Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","TYPE":"desc"},{"value":"Vorübergehende Regelung mit provisorischer Ampelanlage. Baustelle; für beide Richtungen nur ein Fahrstreifen abwechselnd frei. Stuttgart, Am Kräherwald in Höhe Lenzhalde in beiden Richtungen Baustelle, vorübergehende Regelung durch provisorische Ampelanlagen, für beide Richtungen nur ein Fahrstreifen abwechselnd frei, bis voraussichtlich 18.12.2020","TYPE":"no_exit_description"}],"mid":"LMS-BW/r_IVLZStuttgart/r_IVLZStuttgart/8606_TIC-IVLZStuttgart/1_DBWLMS-BW/253988_original|1608047072670","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":505084262114183522,"ORIGINAL_TRAFFIC_ITEM_ID":626080552464381400,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/16/2020 15:46:09","END_TIME":"12/20/2020 15:45:37","ENTRY_TIME":"12/16/2020 15:46:17","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"20796","LOCATION_DESC":"Neckartor","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"20795","LOCATION_DESC":"Charlottenplatz","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":518,"DESCRIPTION":"Fahrbahnverengung.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D19","EXTENT":"2","DURATION":0},"LENGTH":0.60546,"PRIMARY_OFFSET":0.16741},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"20796","LOCATION_DESC":"Neckartor","RDS_DIRECTION":"+"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"20795","LOCATION_DESC":"Charlottenplatz","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"2","DURATION":0},"LENGTH":0.60546,"PRIMARY_OFFSET":0.16741}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Willy-Brandt-Straße","TYPE":"NTCSA"},{"value":"Willy-Brandt-Straße","TYPE":"RDSGN"},{"value":"Willy-Brandt-Straße","TYPE":"LOCAL"}],"ID":50206},"POINT":{"DESCRIPTION":[{"value":"Neckartor","TYPE":"NTCSA"},{"value":"Neckartor","TYPE":"RDSGN"},{"value":"Neckartor","TYPE":"LOCAL"},{"value":"Willy-Brandt-Straße","TYPE":"BNAME"}],"ID":20796},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART","TYPE":"LOCAL"},{"value":"STUTTGART","TYPE":"NTCSA"},{"value":"STUTTGART","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Konrad-Adenauer-Straße","TYPE":"NTCSA"},{"value":"Konrad-Adenauer-Straße","TYPE":"RDSGN"},{"value":"Konrad-Adenauer-Straße","TYPE":"LOCAL"}],"ID":50206},"POINT":{"DESCRIPTION":[{"value":"Charlottenplatz","TYPE":"NTCSA"},{"value":"Charlottenplatz","TYPE":"RDSGN"},{"value":"Charlottenplatz","TYPE":"LOCAL"},{"value":"Konrad-Adenauer-Straße","TYPE":"BNAME"}],"ID":20795},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART","TYPE":"LOCAL"},{"value":"STUTTGART","TYPE":"NTCSA"},{"value":"STUTTGART","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78488,"LONGITUDE":9.18917},"TO":[{"LATITUDE":48.77693,"LONGITUDE":9.18364}]},"TPEGOpenLRBase64":"CCsBEAAnJgaI+yKxNwAJBQQBApcACgUEAYplAPzJ+6sACQUEAQIdADCBCIIN","NAVTECH":{"EDGE":{"EDGE_ID":["851354797","933046951","933046950","851354792","589239602","589235127","855628540","855628539","1275672243","1275672242","563887856","563887861","563887860","52888853","52853167","52853166","78591319"]},"VERSION_ID":"202004"},"LENGTH":0.60546},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":518},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Neckartor und Charlottenplatz - Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"short_desc"},{"value":"Zwischen Neckartor und Charlottenplatz - Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahnverengung.","TYPE":"no_exit_description"}],"mid":"ffb1f935-cf49-4794-b083-87c50e21b215|1608133577285","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3875566210008068345,"ORIGINAL_TRAFFIC_ITEM_ID":3892077491525165935,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"ROAD_CLOSURE","START_TIME":"12/17/2020 09:52:54","END_TIME":"12/18/2020 09:51:47","ENTRY_TIME":"12/17/2020 09:52:54","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CLOS","DESCRIPTION":""},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14340","LOCATION_DESC":"Doggenburg","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":401,"DESCRIPTION":"Gesperrt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"URGENCY":"U","UPDATE_CLASS":5,"PHRASE_CODE":"C1","EXTENT":"1","DURATION":0},"LENGTH":0.03203,"PRIMARY_OFFSET":0.0}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Herdweg/Lenzhalde","TYPE":"NTCSA"},{"value":"Herdweg/Lenzhalde","TYPE":"RDSGN"},{"value":"Herdweg/Lenzhalde","TYPE":"LOCAL"}],"ID":14336},"POINT":{"DESCRIPTION":[{"value":"Gäubahn","TYPE":"NTCSA"},{"value":"Gäubahn","TYPE":"RDSGN"},{"value":"Gäubahn","TYPE":"LOCAL"},{"value":"Herdweg/Lenzhalde","TYPE":"BNAME"}],"ID":14340},"DIRECTION":{"DESCRIPTION":[{"value":"DOGGENBURG","TYPE":"LOCAL"},{"value":"DOGGENBURG","TYPE":"NTCSA"},{"value":"DOGGENBURG","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Herdweg/Lenzhalde","TYPE":"NTCSA"},{"value":"Herdweg/Lenzhalde","TYPE":"RDSGN"},{"value":"Herdweg/Lenzhalde","TYPE":"LOCAL"}],"ID":14336},"POINT":{"DESCRIPTION":[{"value":"Doggenburg","TYPE":"NTCSA"},{"value":"Doggenburg","TYPE":"RDSGN"},{"value":"Doggenburg","TYPE":"LOCAL"},{"value":"Herdweg/Lenzhalde","TYPE":"BNAME"}],"ID":14340},"DIRECTION":{"DESCRIPTION":[{"value":"DOGGENBURG","TYPE":"LOCAL"},{"value":"DOGGENBURG","TYPE":"NTCSA"},{"value":"DOGGENBURG","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78729,"LONGITUDE":9.15157},"TO":[{"LATITUDE":48.78718,"LONGITUDE":9.15089}]},"TPEGOpenLRBase64":"CCgBEAAkIwaB/iKxdAAJBQQCA7kACgQDAjMA/7z/9QAJBQQCAzUAMAAA","NAVTECH":{"EDGE":{"EDGE_ID":["809478833","809478832","53123516"]},"VERSION_ID":"202004"},"LENGTH":0.03203},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"INCIDENT":{"RESPONSE_VEHICLES":false,"MISCELLANEOUS_INCIDENT":{"MISCELLANEOUS_TYPE_DESC":""}},"ALERTC":[{"EVENT_CODE":401}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen bei Doggenburg - Gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen bei Doggenburg - Gesperrt.","TYPE":"desc"},{"value":"Gesperrt.","TYPE":"no_exit_description"}],"mid":"override-D01+14336-809478833-1608048509456|1608198766248","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":2874628134805646228,"ORIGINAL_TRAFFIC_ITEM_ID":2809916621436943122,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/17/2020 09:46:55","END_TIME":"12/18/2020 09:45:37","ENTRY_TIME":"12/17/2020 09:46:55","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":"Hegelstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}},"TO":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":"Lerchenstraße"},"COUNTY":"Stuttgart","STATE":"","PROXIMITY":{"ID":"MID","DESCRIPTION":"midway between"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.783146,"LONGITUDE":9.166287},"TO":[{"LATITUDE":48.783011,"LONGITUDE":9.166295}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78321,9.16626 48.78314,9.16629 48.78308,9.1663 48.78303,9.1663 48.78295,9.16628","FC":5,"LID":"52888609T","LE":0.029378955031999596,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaEqyKwtgAJBQQEA3oACgQDBB0AAAL/5gAJBQQEAwEAMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218},"COUNTY":"Stuttgart","MUNICIPALITY":{"NAME":"Stuttgart"}},"NAVTECH":{"EDGE":{"EDGE_ID":["52888609"]},"VERSION_ID":"202004"},"LENGTH":0.01825},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":735}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen zwischen Hegelstraße und Lerchenstraße - Wegen Baustelle gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen zwischen Hegelstraße und Lerchenstraße - Wegen Baustelle gesperrt.","TYPE":"desc"},{"value":"Wegen Baustelle gesperrt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/77050_TIC/NAVTEQ-ORIGINAL-1|1608198384529","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1222014698298517349,"ORIGINAL_TRAFFIC_ITEM_ID":1222014698298517349,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:12","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:12","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14318","LOCATION_DESC":"Senefelderstraße","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.19865,"PRIMARY_OFFSET":0.25816}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Rotebühlstraße","TYPE":"NTCSA"},{"value":"Rotebühlstraße","TYPE":"RDSGN"},{"value":"Rotebühlstraße","TYPE":"LOCAL"}],"ID":53062},"POINT":{"DESCRIPTION":[{"value":"Silberburgstraße","TYPE":"NTCSA"},{"value":"Silberburgstraße","TYPE":"RDSGN"},{"value":"Silberburgstraße","TYPE":"LOCAL"},{"value":"Rotebühlstraße","TYPE":"BNAME"}],"ID":14318},"DIRECTION":{"DESCRIPTION":[{"value":"BIRKENKOPF","TYPE":"LOCAL"},{"value":"BIRKENKOPF","TYPE":"NTCSA"},{"value":"BIRKENKOPF","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Rotebühlstraße","TYPE":"NTCSA"},{"value":"Rotebühlstraße","TYPE":"RDSGN"},{"value":"Rotebühlstraße","TYPE":"LOCAL"}],"ID":53062},"POINT":{"DESCRIPTION":[{"value":"Senefelderstraße","TYPE":"NTCSA"},{"value":"Senefelderstraße","TYPE":"RDSGN"},{"value":"Senefelderstraße","TYPE":"LOCAL"},{"value":"Rotebühlstraße","TYPE":"BNAME"}],"ID":14318},"DIRECTION":{"DESCRIPTION":[{"value":"BIRKENKOPF","TYPE":"LOCAL"},{"value":"BIRKENKOPF","TYPE":"NTCSA"},{"value":"BIRKENKOPF","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77303,"LONGITUDE":9.1673},"TO":[{"LATITUDE":48.77192,"LONGITUDE":9.16331}]},"TPEGOpenLRBase64":"CCkBEAAlJAaE3CKu3AAJBQQCA7AACgUEAoJAAP5v/5EACQUEAgMxADAAAA==","NAVTECH":{"EDGE":{"EDGE_ID":["1188633283","1188633282","1188632885","1188633104","1236226993","1236226992","589241608","1188632687","1188632686"]},"VERSION_ID":"202004"},"LENGTH":0.19865},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Senefelderstraße - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Bei Senefelderstraße - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/252996_TIC/NAVTEQ-REVERSE-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":456457506387012148,"ORIGINAL_TRAFFIC_ITEM_ID":2670894768263638109,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"ROAD_CLOSURE","START_TIME":"12/17/2020 10:46:54","END_TIME":"12/18/2020 10:46:44","ENTRY_TIME":"12/17/2020 10:46:54","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CLOS","DESCRIPTION":""},"LOCATION":{"INTERSECTION":{"ORIGIN":{"ID":"","STREET1":{"ADDRESS1":""},"STREET2":{"ADDRESS1":""},"COUNTY":"","STATE":"","PROXIMITY":{"ID":"AFT","DESCRIPTION":"past"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78748,"LONGITUDE":9.23092},"TO":[{"LATITUDE":48.78768,"LONGITUDE":9.23056}],"GEOMETRY":{"SHAPES":{"SHP":[{"value":"48.78748,9.23092 48.78768,9.23056","FC":5,"LID":"1245759009F","LE":0.03456093477811367,"FW":"SD"}]}}},"TPEGOpenLRBase64":"CCgBEAAkIwaQcCKxfQAJBQQEA9wACgQDBCMA/9wAFAAJBQQEA1wAMAAA","POLITICAL_BOUNDARY":{"METRO_AREA":{"value":"","ID":218}},"NAVTECH":{"EDGE":{"EDGE_ID":["1245759009"]},"VERSION_ID":"202004"},"LENGTH":0.02147},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"INCIDENT":{"RESPONSE_VEHICLES":false,"MISCELLANEOUS_INCIDENT":{"MISCELLANEOUS_TYPE_DESC":""}},"ALERTC":[{"EVENT_CODE":401}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Gesperrt.","TYPE":"short_desc"},{"value":"Gesperrt.","TYPE":"desc"},{"value":"Gesperrt.","TYPE":"no_exit_description"}],"mid":"override-S1245759009F-1245759009-1608103179775|1608202010756","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1935656073345608578,"ORIGINAL_TRAFFIC_ITEM_ID":1935656073345608578,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:09","END_TIME":"12/21/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:23","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14310","LOCATION_DESC":"Heilbronner Straße/B27","RDS_DIRECTION":"-"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14311","LOCATION_DESC":"Cannstatter Straße/B14","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":514,"QUANTIFIERS":0,"DESCRIPTION":"Fahrbahn von auf einen Fahrstreifen verengt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":5,"PHRASE_CODE":"D15","EXTENT":"2","DURATION":0},"LENGTH":0.27903,"PRIMARY_OFFSET":0.02504},{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14310","LOCATION_DESC":"Heilbronner Straße/B27","RDS_DIRECTION":"-"},"TO":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"14311","LOCATION_DESC":"Cannstatter Straße/B14","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"2","DURATION":0},"LENGTH":0.27903,"PRIMARY_OFFSET":0.02504}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Wolframstraße","TYPE":"NTCSA"},{"value":"Wolframstraße","TYPE":"RDSGN"},{"value":"Wolframstraße","TYPE":"LOCAL"}],"ID":14308},"POINT":{"DESCRIPTION":[{"value":"Heilbronner Straße/B27","TYPE":"NTCSA"},{"value":"Heilbronner Straße/B27","TYPE":"RDSGN"},{"value":"Heilbronner Straße/B27","TYPE":"LOCAL"},{"value":"Wolframstraße","TYPE":"BNAME"}],"ID":14310},"DIRECTION":{"DESCRIPTION":[{"value":"CANNSTATTER STRAßE","TYPE":"LOCAL"},{"value":"CANNSTATTER STRAßE","TYPE":"NTCSA"},{"value":"CANNSTATTER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Wolframstraße","TYPE":"NTCSA"},{"value":"Wolframstraße","TYPE":"RDSGN"},{"value":"Wolframstraße","TYPE":"LOCAL"}],"ID":14308},"POINT":{"DESCRIPTION":[{"value":"Cannstatter Straße/B14","TYPE":"NTCSA"},{"value":"Cannstatter Straße/B14","TYPE":"RDSGN"},{"value":"Cannstatter Straße/B14","TYPE":"LOCAL"},{"value":"Wolframstraße","TYPE":"BNAME"}],"ID":14311},"DIRECTION":{"DESCRIPTION":[{"value":"CANNSTATTER STRAßE","TYPE":"LOCAL"},{"value":"CANNSTATTER STRAßE","TYPE":"NTCSA"},{"value":"CANNSTATTER STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.79077,"LONGITUDE":9.18628},"TO":[{"LATITUDE":48.78872,"LONGITUDE":9.1909}]},"TPEGOpenLRBase64":"CCkBEAAlJAaIQyKyHAAJBQQCA1YACgUEAoNZAAHq/ygACQUEAgPQADAXAA==","NAVTECH":{"EDGE":{"EDGE_ID":["1189088334","52888414","574413618","574413617","1115246838","1115246839","1115246840","1115246841","1115246842","1115246843","1115246845","1115246844","540887036","1265465811","1265465812","1188587922","589239598","1265466133","1265466132"]},"VERSION_ID":"202004"},"LENGTH":0.27903},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":514},{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Zwischen Heilbronner Straße/B27 und Cannstatter Straße/B14 - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"short_desc"},{"value":"Zwischen Heilbronner Straße/B27 und Cannstatter Straße/B14 - Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt. Fahrbahn von auf einen Fahrstreifen verengt.","TYPE":"no_exit_description"}],"mid":"08ae72c1-1497-440e-aa05-21d15ae11f38|1608047183374","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":3843148658068682097,"ORIGINAL_TRAFFIC_ITEM_ID":3843148658068682097,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"CONSTRUCTION","START_TIME":"12/15/2020 15:46:11","END_TIME":"12/18/2020 22:59:00","ENTRY_TIME":"12/15/2020 15:46:11","CRITICALITY":{"ID":"2","DESCRIPTION":"minor"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CONST","DESCRIPTION":"construction"},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"53064","LOCATION_DESC":"Silberburgstraße","RDS_DIRECTION":"-"},"DIRECTION":"+","ALERTC":{"TRAFFIC_CODE":803,"QUANTIFIERS":0,"DESCRIPTION":"Bauarbeiten auf Abschnitt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"UPDATE_CLASS":11,"PHRASE_CODE":"E11","EXTENT":"1","DURATION":0},"LENGTH":0.19867,"PRIMARY_OFFSET":0.15719}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Rotebühlstraße","TYPE":"NTCSA"},{"value":"Rotebühlstraße","TYPE":"RDSGN"},{"value":"Rotebühlstraße","TYPE":"LOCAL"}],"ID":53062},"POINT":{"DESCRIPTION":[{"value":"Senefelderstraße","TYPE":"NTCSA"},{"value":"Senefelderstraße","TYPE":"RDSGN"},{"value":"Senefelderstraße","TYPE":"LOCAL"},{"value":"Rotebühlstraße","TYPE":"BNAME"}],"ID":53064},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART-WEST","TYPE":"LOCAL"},{"value":"STUTTGART-WEST","TYPE":"NTCSA"},{"value":"STUTTGART-WEST","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Rotebühlstraße","TYPE":"NTCSA"},{"value":"Rotebühlstraße","TYPE":"RDSGN"},{"value":"Rotebühlstraße","TYPE":"LOCAL"}],"ID":53062},"POINT":{"DESCRIPTION":[{"value":"Silberburgstraße","TYPE":"NTCSA"},{"value":"Silberburgstraße","TYPE":"RDSGN"},{"value":"Silberburgstraße","TYPE":"LOCAL"},{"value":"Rotebühlstraße","TYPE":"BNAME"}],"ID":53064},"DIRECTION":{"DESCRIPTION":[{"value":"STUTTGART-WEST","TYPE":"LOCAL"},{"value":"STUTTGART-WEST","TYPE":"NTCSA"},{"value":"STUTTGART-WEST","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.77192,"LONGITUDE":9.16331},"TO":[{"LATITUDE":48.77303,"LONGITUDE":9.1673}]},"TPEGOpenLRBase64":"CCkBEAAlJAaEISKuqAAJBQQCAzEACgUEAoJAAAGRAG8ACQUEAgOwADAAAA==","NAVTECH":{"EDGE":{"EDGE_ID":["1188632686","1188632687","589241608","1236226992","1236226993","1188633104","1188632885","1188633282","1188633283"]},"VERSION_ID":"202004"},"LENGTH":0.19867},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":false,"EVENT":{"EVENT_ITEM_CANCELLED":false,"SCHEDULED_CONSTRUCTION_EVENT":{"SCHEDULED_CONSTRUCTION_TYPE_DESC":"CONSTRUCTION","SCHEDULED_CONSTRUCTION_DETAIL":"construction"}},"ALERTC":[{"EVENT_CODE":803}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Bei Silberburgstraße - Bauarbeiten auf Abschnitt.","TYPE":"short_desc"},{"value":"Bei Silberburgstraße - Bauarbeiten auf Abschnitt.","TYPE":"desc"},{"value":"Bauarbeiten auf Abschnitt.","TYPE":"no_exit_description"}],"mid":"HERE-Europe-PR/r_HERE-Europe-PR/252996_TIC/NAVTEQ-ORIGINAL-1|1608047129931","PRODUCT":"basic"},{"TRAFFIC_ITEM_ID":1504123306603357608,"ORIGINAL_TRAFFIC_ITEM_ID":1454767416629063173,"TRAFFIC_ITEM_STATUS_SHORT_DESC":"ACTIVE","TRAFFIC_ITEM_TYPE_DESC":"ROAD_CLOSURE","START_TIME":"12/17/2020 13:37:56","END_TIME":"12/18/2020 12:37:46","ENTRY_TIME":"12/17/2020 13:37:56","CRITICALITY":{"ID":"0","DESCRIPTION":"critical"},"VERIFIED":true,"ABBREVIATION":{"SHORT_DESC":"CLOS","DESCRIPTION":""},"RDS-TMC_LOCATIONS":{"RDS-TMC":[{"ORIGIN":{"EBU_COUNTRY_CODE":"D","TABLE_ID":1,"LOCATION_ID":"54850","LOCATION_DESC":"Mercedes-Benz-Arena","RDS_DIRECTION":"+"},"DIRECTION":"-","ALERTC":{"TRAFFIC_CODE":401,"DESCRIPTION":"Gesperrt.","ALERTC_DURATION":"L","ALERTC_DIRECTION":1,"URGENCY":"U","UPDATE_CLASS":5,"PHRASE_CODE":"C1","EXTENT":"1","DURATION":0},"LENGTH":0.07096,"PRIMARY_OFFSET":0.25496}]},"LOCATION":{"DEFINED":{"ORIGIN":{"ROADWAY":{"DESCRIPTION":[{"value":"Mercedesstraße","TYPE":"NTCSA"},{"value":"Mercedesstraße","TYPE":"RDSGN"},{"value":"Mercedesstraße","TYPE":"LOCAL"}],"ID":54846},"POINT":{"DESCRIPTION":[{"value":"Martin-Schrenk-Weg","TYPE":"NTCSA"},{"value":"Martin-Schrenk-Weg","TYPE":"RDSGN"},{"value":"Martin-Schrenk-Weg","TYPE":"LOCAL"},{"value":"Mercedesstraße","TYPE":"BNAME"}],"ID":54850},"DIRECTION":{"DESCRIPTION":[{"value":"KÖNIG-KARL-STRAßE","TYPE":"LOCAL"},{"value":"KÖNIG-KARL-STRAßE","TYPE":"NTCSA"},{"value":"KÖNIG-KARL-STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}},"TO":{"ROADWAY":{"DESCRIPTION":[{"value":"Mercedesstraße","TYPE":"NTCSA"},{"value":"Mercedesstraße","TYPE":"RDSGN"},{"value":"Mercedesstraße","TYPE":"LOCAL"}],"ID":54846},"POINT":{"DESCRIPTION":[{"value":"Mercedes-Benz-Arena","TYPE":"NTCSA"},{"value":"Mercedes-Benz-Arena","TYPE":"RDSGN"},{"value":"Mercedes-Benz-Arena","TYPE":"LOCAL"},{"value":"Mercedesstraße","TYPE":"BNAME"}],"ID":54850},"DIRECTION":{"DESCRIPTION":[{"value":"KÖNIG-KARL-STRAßE","TYPE":"LOCAL"},{"value":"KÖNIG-KARL-STRAßE","TYPE":"NTCSA"},{"value":"KÖNIG-KARL-STRAßE","TYPE":"RDSGN"}],"ID":0},"PROXIMITY":{"ID":"AT","DESCRIPTION":"at"}}},"GEOLOC":{"ORIGIN":{"LATITUDE":48.78966,"LONGITUDE":9.23337},"TO":[{"LATITUDE":48.79031,"LONGITUDE":9.23217}]},"TPEGOpenLRBase64":"CCgBEAAkIwaQ4iKx4wAJBQQDA9wACgQDA3IA/4gAQQAJBQQDA1wAMAAA","NAVTECH":{"EDGE":{"EDGE_ID":["52882989"]},"VERSION_ID":"202004"},"LENGTH":0.07096},"TRAFFIC_ITEM_DETAIL":{"ROAD_CLOSED":true,"INCIDENT":{"RESPONSE_VEHICLES":false,"MISCELLANEOUS_INCIDENT":{"MISCELLANEOUS_TYPE_DESC":""}},"ALERTC":[{"EVENT_CODE":401}]},"TRAFFIC_ITEM_DESCRIPTION":[{"value":"Geschlossen bei Mercedes-Benz-Arena - Gesperrt.","TYPE":"short_desc"},{"value":"Geschlossen bei Mercedes-Benz-Arena - Gesperrt.","TYPE":"desc"},{"value":"Gesperrt.","TYPE":"no_exit_description"}],"mid":"override-D01-54846-820268230-1608200007469|1608212269292","PRODUCT":"basic"}]},"diagnostic":{"info":"","sfile":"Incident-E0D01-1608216084974.xml.gz|pr1","pdd":"trafficml-incident-24-v6"},"TIMESTAMP2":"2020-12-17T14:41:26.000+0000","EXTENDED_COUNTRY_CODE":"E0"}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment