commit 92bc816e0c13434c5ebc679bb3a77e2d7c54c681 Author: Vasyl Palamarchuk Date: Fri Sep 4 10:43:46 2026 -0700 Init. diff --git a/01_Knowledge_Base/API_DISCOVERY_WORKSHEET.md b/01_Knowledge_Base/API_DISCOVERY_WORKSHEET.md new file mode 100644 index 0000000..a365818 --- /dev/null +++ b/01_Knowledge_Base/API_DISCOVERY_WORKSHEET.md @@ -0,0 +1,17 @@ +# Built-in API Discovery Worksheet + +Complete this from **Local Script > Help** in your installed Multi-PROG version. + +| Function | Exact signature | Return type | Buffer/file affected | Failure behavior | Tested version | +|---|---|---|---|---|---| +| AddFunctionButton | Verify in Help | Unknown | UI | Unknown | | +| ReadData | Verify in Help | Unknown | Current buffer | Unknown | | +| WriteData | Verify in Help | Unknown | Current buffer | Unknown | | +| GetOpenFileName | Verify in Help | Unknown | File dialog | Unknown | | +| GetSaveFileName | Verify in Help | Unknown | File dialog | Unknown | | +| ReadFile | Verify in Help | Unknown | File | Unknown | | +| WriteFile | Verify in Help | Unknown | File | Unknown | | +| Hex2Dec | Verify in Help | Unknown | None | Unknown | | +| areEqual | Verify in Help | Unknown | None | Unknown | | + +Record screenshots and minimal read-only tests. Do not infer signatures from third-party posts. diff --git a/01_Knowledge_Base/README.md b/01_Knowledge_Base/README.md new file mode 100644 index 0000000..53a0ecc --- /dev/null +++ b/01_Knowledge_Base/README.md @@ -0,0 +1,65 @@ +# XHorse Multi-PROG Scripting Knowledge Base + +## Purpose +This archive combines three deliverables: an expanded knowledge base, a curated link catalog, and a safe script starter kit. It is designed for legitimate module repair, data validation, research on owned hardware, and controlled bench work. + +## Safety and legal scope +Use scripts only on modules and vehicles you own or are explicitly authorized to service. Keep immutable originals, record hashes, use current-limited bench power, verify part numbers and memory sizes, and never write a modified image until validation succeeds. This kit intentionally excludes operational immobilizer bypass, unauthorized key creation, mileage fraud, security-access circumvention, and theft-enabling instructions. + +## Platform model +Multi-PROG provides Local Scripts for creating, opening, modifying, saving, debugging and publishing scripts, and Released Features for importing and running published scripts. A running script can add buttons to the main toolbar. Public documentation identifies JavaScript as the scripting language and shows .mjs examples. + +## Recommended development lifecycle +1. Update Multi-PROG and archive the installed version. +2. Open Local Script and use Help as the API source of truth for that exact version. +3. Start with read-only operations and synthetic test buffers. +4. Assert expected buffer length, erased-state patterns and known signatures. +5. Hash and save the untouched input. +6. Make changes in a copy, never in the original buffer. +7. Produce a byte-level change report. +8. Validate ranges, checksums and invariants. +9. Save to a new filename. +10. Test on a spare bench module before any production use. + +## Known interface concepts +The manual and screenshots describe functions and areas including AddFunctionButton, ReadData, WriteData, GetOpenFileName, GetSaveFileName, ReadFile and WriteFile, plus conversion/comparison helpers such as Hex2Dec and areEqual. Exact signatures can vary by software release, so verify each call in built-in Help. + +## Automation patterns +- Read-only metadata inspection +- Buffer length and blank-area validation +- VIN or calibration identifier display without modification +- Byte-range extraction for reports +- Before/after diff generation +- Generic CRC test vectors +- File naming and audit logging +- Batch validation of known-good backups +- Controlled export of a modified copy after all checks pass + +## Checksum strategy +Treat the green C indicator in the device library/main view as the product's signal that checksum handling is available for that specific EEPROM or Flash entry. Do not assume every listed ECU is supported. Keep checksum verification distinct from generic CRC examples: an ECU checksum may cover multiple regions, use proprietary transforms, or include stored complements. + +## Testing checklist +- Correct module, MCU/EEPROM and memory region selected +- Exact file size verified +- Original SHA-256 recorded +- Two independent reads compared +- Power supply and current limit documented +- Patch ranges explicitly allow-listed +- Unchanged areas byte-identical +- Output checksum independently verified where possible +- Output saved under a new name +- Recovery path and known-good backup available + +## Trust model for downloads +Official/built-in documentation has highest priority. Dealer blogs and mirrors are secondary. Forums, cloud-drive files and attachments are untrusted. Scan them, open in an isolated VM, compare hashes, and inspect source before import. Never run an opaque locked script on a production module without understanding its effect. + +## Compatibility note +Node.js/NPM packages are learning references only. Multi-PROG's embedded JavaScript host may not provide Node APIs, package imports, Buffer, filesystem access beyond host functions, or modern module features. Port only small dependency-free routines and validate against known vectors. + +## Archive navigation +- `01_Knowledge_Base`: this guide and API discovery worksheet +- `02_Resource_Catalog`: CSV and Markdown link inventories +- `03_Script_Starter_Kit`: safe, vendor-neutral templates and tests +- `04_Workflows`: repeatable validation and release procedures +- `05_Reference`: glossary, search queries, checklist and security-research notes +- `06_URL_Shortcuts`: browser shortcut files diff --git a/02_Resource_Catalog/links.csv b/02_Resource_Catalog/links.csv new file mode 100644 index 0000000..3f3eb9b --- /dev/null +++ b/02_Resource_Catalog/links.csv @@ -0,0 +1,50 @@ +Category,Title,URL,Description,Confidence +Official,Multi-PROG Script Function Manual PDF,https://www.xhorsevvdi.com/upload/pro/24040217120425363837.pdf,"Primary scripting manual: local scripts, released features, editor, testing, publishing, function browser and restrictions.",High +Official mirror,Multi-PROG Script Function Manual mirror,https://images.dkgcc.com/files/2025/5/8537_Xhorse%20Multi%20Prog%20User%20Manual.pdf,"Searchable mirror showing sample functions such as ReadData, WriteData, file dialogs, function buttons, AES/DES and SHA256 entries.",Medium +Manual,Multi-PROG Owner Manual,https://www.manualslib.com/manual/3420478/Xhorse-Multi-Prog.html,"Hardware, EEPROM/MCU/ECU/TCU operations, third-party scripting and batch writing.",High +Manual,Multi-PROG Operation Manual,https://www.manualslib.com/guide/4237862/xhorse-multi-prog-automotive-programmer-operation-manual.html,Operation guide with script-use and script-development chapters.,High +Tutorial,First Multi-PROG script tutorial,https://blog.xhorsetool.com/how-to-make-first-script-with-xhorse-multi-prog/,"Walkthrough of importing, testing, correcting and locking a JavaScript-based script; refers to built-in Help.",Medium +Tutorial,Third-party script introduction,https://www.obdexpress.co.uk/service/introduction-to-xhorse-multi-prog-third-party-script-function.html,Overview of processing original data with a third-party script and saving the result.,Medium +Tutorial,Third-party scripting how-to,https://obd2services.wordpress.com/2024/02/02/xhorse-multi-prog-third-party-scripting-how-to/,Community overview of Multi-PROG third-party scripting. Verify details against the manual.,Low +Repository,CarKeyGuyNL Multi-Prog-Scripts,https://github.com/CarKeyGuyNL/Multi-Prog-Scripts,Public .mjs example and installation notes. Review legality and authorization before use.,Medium +Forum,MHH Auto Multi-PROG script thread,https://mhhauto.com/Thread-Xhores-Multi-Prog-script,Community discussion and beta-script references. Treat attachments as untrusted and scan offline.,Low +Checksum,Xhorse checksum workflow guide,https://blog.xhorsetool.com/how-to-calculate-checksum-for-xhorse-multi-prog/,Explains green C support indicator and checksum/verification prompt during supported writes.,Medium +Checksum,Checksum function guide mirror,https://blog.xhorsevvdi.com/how-to-use-checksum-calculation-in-xhorse-multi-prog/,Alternate description of supported checksum workflow and cautions.,Medium +Checksum,Supported ECU checksum identification,https://blog.vvdishop.com/which-ecu-is-supported-for-checksum-in-xhorse-multi-prog/,Shows how supported EEPROM/Flash items are identified in the device library.,Medium +JavaScript,binary-parser GitHub,https://github.com/keichi/binary-parser,"Declarative JavaScript parser for integers, bit fields, strings, arrays and Uint8Array. External modules may not run inside Multi-PROG without adaptation.",High +JavaScript,Awesome Binary Parsing,https://github.com/dloss/binary-parsing,Curated cross-language list of binary parsing tools and learning resources.,High +JavaScript,jBinary,https://jdataview.github.io/jBinary/,High-level JavaScript binary read/write library and examples. Use as a learning reference unless runtime compatibility is proven.,Medium +JavaScript,js-crc,https://www.npmjs.com/package/js-crc,CRC-8/16/24/32/64 and custom-model reference. Multi-PROG may require a dependency-free port.,High +Automotive research,GitHub ECU topic,https://github.com/topics/ecu,Discovery page for open automotive diagnostics and ECU projects. Carefully evaluate licenses and permitted use.,Medium +Automotive research,EcuBus-Pro,https://github.com/ecubus/EcuBus-Pro,"Open automotive ECU development and test tool with TypeScript-like scripting; useful architecture reference, not a Multi-PROG library.",Medium +Binary analysis,OpenRemap,https://pypi.org/project/openremap/,"Offline ECU binary identification, health-checking and checksum verification project; use only on authorized files.",Medium +Professional security,NASTF VSP Registry,https://wp.nastf.org/?page_id=367,"Credentialing, application resources, secure-tool validation and VSP operational guidance for security-related automotive work.",High +Professional security,NASTF VSP definition,https://support.nastf.org/support/solutions/articles/43000755446-what-is-a-nastf-vehicle-security-professional-,"Explains qualification and business requirements for professionals performing key programming, code ordering or immobilizer resets.",High +Professional security,NASTF Memberships,https://wp.nastf.org/?page_id=3969,"Describes membership levels, VSP capabilities, customer authorization forms and access to key/immobilizer codes.",High +Professional security,NASTF SDRM portal,https://sdrm.nastfsecurityregistry.org/,"Secure Data Release Model account, login and VSP application portal for the US and Canada.",High +Reference,CyberChef,https://gchq.github.io/CyberChef/,Browser-based data transformation and analysis workbench. Avoid entering customer secrets into unapproved hosted tools; prefer an approved offline instance.,High +JavaScript,GitHub checksum topic,https://github.com/topics/checksum,Discovery catalog for checksum implementations. Validate licenses and test vectors before reuse.,Medium +JavaScript,CRC32 portable example,https://gist.github.com/diachedelic/582ac8fab84b7f2c34ff358ac5cc7cfa,Compact Uint8Array CRC-32 reference for JavaScript runtimes. Review license and verify against standard vectors.,Medium +JavaScript,Checksum algorithm examples,https://gist.github.com/bryc/8a0885a4be58b6bbf0ec54c7758c0841,"Educational implementations of Fletcher, Adler and related checksums. Independently verify before use.",Low +JavaScript,restructure,https://github.com/foliojs/restructure,"Declarative binary data structure parser/encoder for JS, alternative to binary-parser.",High +JavaScript,buffer-layout,https://github.com/pabigot/buffer-layout,"Structured binary data layout library (C-like structs) for Buffer/Uint8Array.",High +Hashing,js-sha256,https://github.com/emn178/js-sha256,Dependency-free SHA-256/224 implementation for JavaScript.,High +Hashing,js-sha1,https://github.com/emn178/js-sha1,Dependency-free SHA-1 implementation for JavaScript.,High +Hashing,blueimp JavaScript-MD5,https://github.com/blueimp/JavaScript-MD5,Dependency-free MD5 implementation for JavaScript.,High +Hashing,crypto-js,https://github.com/brix/crypto-js,"AES/DES/SHA/MD5 suite; evaluate bundle size and Multi-PROG runtime compatibility before embedding.",Medium +Encoding,MDN TextEncoder,https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder,Reference for UTF-8 encode/decode behavior in JavaScript runtimes.,High +Encoding,MDN DataView,https://developer.mozilla.org/en-US/docs/Web/API/DataView,Reference for typed binary read/write access to ArrayBuffers.,High +Encoding,MDN Uint8Array,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array,Reference for the typed array used throughout Multi-PROG-style buffer handling.,High +Checksum,Wikipedia CRC,https://en.wikipedia.org/wiki/Cyclic_redundancy_check,Background on cyclic redundancy check theory and common polynomials.,High +Checksum,Wikipedia Fletcher checksum,https://en.wikipedia.org/wiki/Fletcher%27s_checksum,Background on the Fletcher-16/32 checksum algorithms.,High +Checksum,Wikipedia Adler-32,https://en.wikipedia.org/wiki/Adler-32,Background on the Adler-32 checksum algorithm.,High +Checksum,CRC RevEng catalogue,https://reveng.sourceforge.io/crc-catalogue/all.htm,Canonical CRC parameter and check-value catalogue for verifying implementations against known vectors.,High +Cryptography reference,NIST FIPS 180-4 (SHA),https://csrc.nist.gov/pubs/fips/180-4/upd1/final,Official Secure Hash Standard specification (SHA-1/SHA-2 family).,High +Cryptography reference,NIST FIPS 197 (AES),https://csrc.nist.gov/pubs/fips/197/final,Official Advanced Encryption Standard specification.,High +Cryptography reference,OWASP Cryptographic Storage Cheat Sheet,https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html,General guidance on safe use of cryptographic primitives and key handling.,High +JavaScript,pako,https://github.com/nodeca/pako,"zlib/deflate port for JS; occasionally relevant for compressed dump handling.",Medium +Reference,Node.js Buffer docs,https://nodejs.org/api/buffer.html,Reference for Buffer APIs when prototyping outside the Multi-PROG host runtime.,Medium +Professional security,NASTF Assisted Immobilizer Reprogramming,https://support.nastf.org/support/solutions/articles/43000755445-what-is-air-assisted-immobilizer-reprogramming-,High-level overview of AIR and its role in authorized immobilizer-related workflows.,High +Professional security,NASTF account types comparison,https://support.nastf.org/support/solutions/articles/43000755695-nastf-account-types-comparison,Describes different NASTF account types and how they map to professional access needs.,High +Professional security,Choosing the correct NASTF account,https://support.nastf.org/support/solutions/articles/43000761328-choosing-the-correct-nastf-account,Helps determine which NASTF account is appropriate for a given secure-service workflow.,High +Reference,NIST Cryptographic Standards and Guidelines,https://csrc.nist.gov/projects/cryptographic-standards-and-guidelines,Official NIST cryptography guidance and standards for understanding general cryptographic principles.,High diff --git a/02_Resource_Catalog/links.md b/02_Resource_Catalog/links.md new file mode 100644 index 0000000..4a96dc5 --- /dev/null +++ b/02_Resource_Catalog/links.md @@ -0,0 +1,295 @@ +# Expanded Resource Catalog + +## Multi-PROG Script Function Manual PDF +- Category: Official +- URL: https://www.xhorsevvdi.com/upload/pro/24040217120425363837.pdf +- Confidence: High +- Description: Primary scripting manual: local scripts, released features, editor, testing, publishing, function browser and restrictions. + +## Multi-PROG Script Function Manual mirror +- Category: Official mirror +- URL: https://images.dkgcc.com/files/2025/5/8537_Xhorse%20Multi%20Prog%20User%20Manual.pdf +- Confidence: Medium +- Description: Searchable mirror showing sample functions such as ReadData, WriteData, file dialogs, function buttons, AES/DES and SHA256 entries. + +## Multi-PROG Owner Manual +- Category: Manual +- URL: https://www.manualslib.com/manual/3420478/Xhorse-Multi-Prog.html +- Confidence: High +- Description: Hardware, EEPROM/MCU/ECU/TCU operations, third-party scripting and batch writing. + +## Multi-PROG Operation Manual +- Category: Manual +- URL: https://www.manualslib.com/guide/4237862/xhorse-multi-prog-automotive-programmer-operation-manual.html +- Confidence: High +- Description: Operation guide with script-use and script-development chapters. + +## First Multi-PROG script tutorial +- Category: Tutorial +- URL: https://blog.xhorsetool.com/how-to-make-first-script-with-xhorse-multi-prog/ +- Confidence: Medium +- Description: Walkthrough of importing, testing, correcting and locking a JavaScript-based script; refers to built-in Help. + +## Third-party script introduction +- Category: Tutorial +- URL: https://www.obdexpress.co.uk/service/introduction-to-xhorse-multi-prog-third-party-script-function.html +- Confidence: Medium +- Description: Overview of processing original data with a third-party script and saving the result. + +## Third-party scripting how-to +- Category: Tutorial +- URL: https://obd2services.wordpress.com/2024/02/02/xhorse-multi-prog-third-party-scripting-how-to/ +- Confidence: Low +- Description: Community overview of Multi-PROG third-party scripting. Verify details against the manual. + +## CarKeyGuyNL Multi-Prog-Scripts +- Category: Repository +- URL: https://github.com/CarKeyGuyNL/Multi-Prog-Scripts +- Confidence: Medium +- Description: Public .mjs example and installation notes. Review legality and authorization before use. + +## MHH Auto Multi-PROG script thread +- Category: Forum +- URL: https://mhhauto.com/Thread-Xhores-Multi-Prog-script +- Confidence: Low +- Description: Community discussion and beta-script references. Treat attachments as untrusted and scan offline. + +## Xhorse checksum workflow guide +- Category: Checksum +- URL: https://blog.xhorsetool.com/how-to-calculate-checksum-for-xhorse-multi-prog/ +- Confidence: Medium +- Description: Explains green C support indicator and checksum/verification prompt during supported writes. + +## Checksum function guide mirror +- Category: Checksum +- URL: https://blog.xhorsevvdi.com/how-to-use-checksum-calculation-in-xhorse-multi-prog/ +- Confidence: Medium +- Description: Alternate description of supported checksum workflow and cautions. + +## Supported ECU checksum identification +- Category: Checksum +- URL: https://blog.vvdishop.com/which-ecu-is-supported-for-checksum-in-xhorse-multi-prog/ +- Confidence: Medium +- Description: Shows how supported EEPROM/Flash items are identified in the device library. + +## binary-parser GitHub +- Category: JavaScript +- URL: https://github.com/keichi/binary-parser +- Confidence: High +- Description: Declarative JavaScript parser for integers, bit fields, strings, arrays and Uint8Array. External modules may not run inside Multi-PROG without adaptation. + +## Awesome Binary Parsing +- Category: JavaScript +- URL: https://github.com/dloss/binary-parsing +- Confidence: High +- Description: Curated cross-language list of binary parsing tools and learning resources. + +## jBinary +- Category: JavaScript +- URL: https://jdataview.github.io/jBinary/ +- Confidence: Medium +- Description: High-level JavaScript binary read/write library and examples. Use as a learning reference unless runtime compatibility is proven. + +## js-crc +- Category: JavaScript +- URL: https://www.npmjs.com/package/js-crc +- Confidence: High +- Description: CRC-8/16/24/32/64 and custom-model reference. Multi-PROG may require a dependency-free port. + +## GitHub ECU topic +- Category: Automotive research +- URL: https://github.com/topics/ecu +- Confidence: Medium +- Description: Discovery page for open automotive diagnostics and ECU projects. Carefully evaluate licenses and permitted use. + +## EcuBus-Pro +- Category: Automotive research +- URL: https://github.com/ecubus/EcuBus-Pro +- Confidence: Medium +- Description: Open automotive ECU development and test tool with TypeScript-like scripting; useful architecture reference, not a Multi-PROG library. + +## OpenRemap +- Category: Binary analysis +- URL: https://pypi.org/project/openremap/ +- Confidence: Medium +- Description: Offline ECU binary identification, health-checking and checksum verification project; use only on authorized files. + +## NASTF VSP Registry +- Category: Professional security +- URL: https://wp.nastf.org/?page_id=367 +- Confidence: High +- Description: Credentialing, application resources, secure-tool validation and VSP operational guidance for security-related automotive work. + +## NASTF VSP definition +- Category: Professional security +- URL: https://support.nastf.org/support/solutions/articles/43000755446-what-is-a-nastf-vehicle-security-professional- +- Confidence: High +- Description: Explains qualification and business requirements for professionals performing key programming, code ordering or immobilizer resets. + +## NASTF Memberships +- Category: Professional security +- URL: https://wp.nastf.org/?page_id=3969 +- Confidence: High +- Description: Describes membership levels, VSP capabilities, customer authorization forms and access to key/immobilizer codes. + +## NASTF SDRM portal +- Category: Professional security +- URL: https://sdrm.nastfsecurityregistry.org/ +- Confidence: High +- Description: Secure Data Release Model account, login and VSP application portal for the US and Canada. + +## CyberChef +- Category: Reference +- URL: https://gchq.github.io/CyberChef/ +- Confidence: High +- Description: Browser-based data transformation and analysis workbench. Avoid entering customer secrets into unapproved hosted tools; prefer an approved offline instance. + +## GitHub checksum topic +- Category: JavaScript +- URL: https://github.com/topics/checksum +- Confidence: Medium +- Description: Discovery catalog for checksum implementations. Validate licenses and test vectors before reuse. + +## NASTF Assisted Immobilizer Reprogramming +- Category: Professional security +- URL: https://support.nastf.org/support/solutions/articles/43000755445-what-is-air-assisted-immobilizer-reprogramming- +- Confidence: High +- Description: High-level overview of AIR and its role in authorized immobilizer-related workflows. + +## NASTF account types comparison +- Category: Professional security +- URL: https://support.nastf.org/support/solutions/articles/43000755695-nastf-account-types-comparison +- Confidence: High +- Description: Describes different NASTF account types and how they map to professional access needs. + +## Choosing the correct NASTF account +- Category: Professional security +- URL: https://support.nastf.org/support/solutions/articles/43000761328-choosing-the-correct-nastf-account +- Confidence: High +- Description: Helps determine which NASTF account is appropriate for a given secure-service workflow. + +## NIST Cryptographic Standards and Guidelines +- Category: Reference +- URL: https://csrc.nist.gov/projects/cryptographic-standards-and-guidelines +- Confidence: High +- Description: Official NIST cryptography guidance and standards for understanding general cryptographic principles. + +## CRC32 portable example +- Category: JavaScript +- URL: https://gist.github.com/diachedelic/582ac8fab84b7f2c34ff358ac5cc7cfa +- Confidence: Medium +- Description: Compact Uint8Array CRC-32 reference for JavaScript runtimes. Review license and verify against standard vectors. + +## Checksum algorithm examples +- Category: JavaScript +- URL: https://gist.github.com/bryc/8a0885a4be58b6bbf0ec54c7758c0841 +- Confidence: Low +- Description: Educational implementations of Fletcher, Adler and related checksums. Independently verify before use. + +## restructure +- Category: JavaScript +- URL: https://github.com/foliojs/restructure +- Confidence: High +- Description: Declarative binary data structure parser/encoder for JS, alternative to binary-parser. + +## buffer-layout +- Category: JavaScript +- URL: https://github.com/pabigot/buffer-layout +- Confidence: High +- Description: Structured binary data layout library (C-like structs) for Buffer/Uint8Array. + +## js-sha256 +- Category: Hashing +- URL: https://github.com/emn178/js-sha256 +- Confidence: High +- Description: Dependency-free SHA-256/224 implementation for JavaScript. + +## js-sha1 +- Category: Hashing +- URL: https://github.com/emn178/js-sha1 +- Confidence: High +- Description: Dependency-free SHA-1 implementation for JavaScript. + +## blueimp JavaScript-MD5 +- Category: Hashing +- URL: https://github.com/blueimp/JavaScript-MD5 +- Confidence: High +- Description: Dependency-free MD5 implementation for JavaScript. + +## crypto-js +- Category: Hashing +- URL: https://github.com/brix/crypto-js +- Confidence: Medium +- Description: AES/DES/SHA/MD5 suite; evaluate bundle size and Multi-PROG runtime compatibility before embedding. + +## MDN TextEncoder +- Category: Encoding +- URL: https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder +- Confidence: High +- Description: Reference for UTF-8 encode/decode behavior in JavaScript runtimes. + +## MDN DataView +- Category: Encoding +- URL: https://developer.mozilla.org/en-US/docs/Web/API/DataView +- Confidence: High +- Description: Reference for typed binary read/write access to ArrayBuffers. + +## MDN Uint8Array +- Category: Encoding +- URL: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array +- Confidence: High +- Description: Reference for the typed array used throughout Multi-PROG-style buffer handling. + +## Wikipedia CRC +- Category: Checksum +- URL: https://en.wikipedia.org/wiki/Cyclic_redundancy_check +- Confidence: High +- Description: Background on cyclic redundancy check theory and common polynomials. + +## Wikipedia Fletcher checksum +- Category: Checksum +- URL: https://en.wikipedia.org/wiki/Fletcher%27s_checksum +- Confidence: High +- Description: Background on the Fletcher-16/32 checksum algorithms. + +## Wikipedia Adler-32 +- Category: Checksum +- URL: https://en.wikipedia.org/wiki/Adler-32 +- Confidence: High +- Description: Background on the Adler-32 checksum algorithm. + +## CRC RevEng catalogue +- Category: Checksum +- URL: https://reveng.sourceforge.io/crc-catalogue/all.htm +- Confidence: High +- Description: Canonical CRC parameter and check-value catalogue for verifying implementations against known vectors. + +## NIST FIPS 180-4 (SHA) +- Category: Cryptography reference +- URL: https://csrc.nist.gov/pubs/fips/180-4/upd1/final +- Confidence: High +- Description: Official Secure Hash Standard specification (SHA-1/SHA-2 family). + +## NIST FIPS 197 (AES) +- Category: Cryptography reference +- URL: https://csrc.nist.gov/pubs/fips/197/final +- Confidence: High +- Description: Official Advanced Encryption Standard specification. + +## OWASP Cryptographic Storage Cheat Sheet +- Category: Cryptography reference +- URL: https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html +- Confidence: High +- Description: General guidance on safe use of cryptographic primitives and key handling. + +## pako +- Category: JavaScript +- URL: https://github.com/nodeca/pako +- Confidence: Medium +- Description: zlib/deflate port for JS; occasionally relevant for compressed dump handling. + +## Node.js Buffer docs +- Category: Reference +- URL: https://nodejs.org/api/buffer.html +- Confidence: Medium +- Description: Reference for Buffer APIs when prototyping outside the Multi-PROG host runtime. diff --git a/03_Script_Starter_Kit/binary_utils.mjs b/03_Script_Starter_Kit/binary_utils.mjs new file mode 100644 index 0000000..481ef62 --- /dev/null +++ b/03_Script_Starter_Kit/binary_utils.mjs @@ -0,0 +1,41 @@ +/* Dependency-free binary utilities for offline testing and authorized repair work. + Verify Multi-PROG host compatibility and API signatures in Local Script > Help. */ +export function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} +export function assertRange(data, offset, length) { + requireBytes(data); + if (!Number.isInteger(offset)||!Number.isInteger(length)||offset<0||length<0||offset+length>data.length) throw new RangeError("Range outside buffer"); +} +export function cloneBytes(data){ requireBytes(data); return new Uint8Array(data); } +export function sliceBytes(data,offset,length){ assertRange(data,offset,length); return data.slice(offset,offset+length); } +export function bytesToHex(data,separator=" "){ requireBytes(data); return Array.from(data,b=>b.toString(16).padStart(2,"0")).join(separator).toUpperCase(); } +export function hexToBytes(text){ + const s=String(text).replace(/[^0-9a-f]/gi,""); + if(s.length%2) throw new Error("Hex text must contain complete bytes"); + const out=new Uint8Array(s.length/2); for(let i=0;ib>=32&&b<=126?String.fromCharCode(b):replacement).join(""); } +export function readU16LE(d,o){assertRange(d,o,2);return d[o]|(d[o+1]<<8);} +export function readU16BE(d,o){assertRange(d,o,2);return (d[o]<<8)|d[o+1];} +export function readU32LE(d,o){assertRange(d,o,4);return (d[o]|d[o+1]<<8|d[o+2]<<16|d[o+3]<<24)>>>0;} +export function readU32BE(d,o){assertRange(d,o,4);return ((d[o]<<24)|(d[o+1]<<16)|(d[o+2]<<8)|d[o+3])>>>0;} +export function writeU16LE(d,o,v){assertRange(d,o,2);d[o]=v&255;d[o+1]=(v>>>8)&255;} +export function writeU16BE(d,o,v){assertRange(d,o,2);d[o]=(v>>>8)&255;d[o+1]=v&255;} +export function writeU32LE(d,o,v){assertRange(d,o,4);for(let i=0;i<4;i++)d[o+i]=(v>>>(8*i))&255;} +export function writeU32BE(d,o,v){assertRange(d,o,4);for(let i=0;i<4;i++)d[o+i]=(v>>>(8*(3-i)))&255;} +export function findPattern(data,pattern,start=0){requireBytes(data);requireBytes(pattern);const hits=[];for(let i=start;i<=data.length-pattern.length;i++){let ok=true;for(let j=0;j=0){const e=a[i]===b[i]?i-1:i;out.push({start:s,end:e,length:e-s+1});s=-1;}}return out;} +export function changedByteCount(a,b){return diffRanges(a,b).reduce((n,r)=>n+r.length,0);} +export function sum8(data){requireBytes(data);let s=0;for(const b of data)s=(s+b)&255;return s;} +export function xor8(data){requireBytes(data);let x=0;for(const b of data)x^=b;return x;} +export function crc16CcittFalse(data){requireBytes(data);let crc=0xFFFF;for(const b of data){crc^=b<<8;for(let i=0;i<8;i++)crc=((crc&0x8000)?(crc<<1)^0x1021:crc<<1)&0xFFFF;}return crc;} +export function crc32(data){requireBytes(data);let crc=0xFFFFFFFF;for(const b of data){crc^=b;for(let i=0;i<8;i++)crc=(crc>>>1)^((crc&1)?0xEDB88320:0);}return (crc^0xFFFFFFFF)>>>0;} +export function adler32(data){requireBytes(data);let a=1,b=0;for(const v of data){a=(a+v)%65521;b=(b+a)%65521;}return ((b<<16)|a)>>>0;} +export function bcdToInt(byte){const hi=(byte>>>4)&15,lo=byte&15;if(hi>9||lo>9)throw new Error("Invalid BCD");return hi*10+lo;} +export function intToBcd(value){if(!Number.isInteger(value)||value<0||value>99)throw new RangeError("BCD value must be 0..99");return ((Math.floor(value/10)<<4)|(value%10));} +export function constantTimeEqual(a,b){requireBytes(a);requireBytes(b);if(a.length!==b.length)return false;let d=0;for(let i=0;ioffset>=r.start&&offset+newBytes.length-1<=r.end);if(!ok)throw new Error("Write is outside allow-list");copy.set(newBytes,offset);return copy;} diff --git a/03_Script_Starter_Kit/examples/01_read_only_inspector.mjs b/03_Script_Starter_Kit/examples/01_read_only_inspector.mjs new file mode 100644 index 0000000..fdff63e --- /dev/null +++ b/03_Script_Starter_Kit/examples/01_read_only_inspector.mjs @@ -0,0 +1,2 @@ +import { bytesToHex, asciiPreview, countByte, crc32 } from "../binary_utils.mjs"; +export function inspect(data){return {length:data.length,first32:bytesToHex(data.slice(0,32)),ascii:asciiPreview(data.slice(0,64)),ffBytes:countByte(data,0xFF),crc32:crc32(data).toString(16).padStart(8,"0").toUpperCase()};} diff --git a/03_Script_Starter_Kit/examples/02_double_read_verifier.mjs b/03_Script_Starter_Kit/examples/02_double_read_verifier.mjs new file mode 100644 index 0000000..34352da --- /dev/null +++ b/03_Script_Starter_Kit/examples/02_double_read_verifier.mjs @@ -0,0 +1,2 @@ +import { constantTimeEqual, crc32 } from "../binary_utils.mjs"; +export function verifyTwoReads(a,b){return {sameLength:a.length===b.length,identical:constantTimeEqual(a,b),crcA:crc32(a),crcB:crc32(b)};} diff --git a/03_Script_Starter_Kit/examples/03_pattern_inventory.mjs b/03_Script_Starter_Kit/examples/03_pattern_inventory.mjs new file mode 100644 index 0000000..73c0153 --- /dev/null +++ b/03_Script_Starter_Kit/examples/03_pattern_inventory.mjs @@ -0,0 +1,2 @@ +import { findPattern, hexToBytes } from "../binary_utils.mjs"; +export function inventory(data,patterns){return patterns.map(p=>({label:p.label,offsets:findPattern(data,hexToBytes(p.hex))}));} diff --git a/03_Script_Starter_Kit/examples/04_allowlisted_patch_demo.mjs b/03_Script_Starter_Kit/examples/04_allowlisted_patch_demo.mjs new file mode 100644 index 0000000..c1e41fd --- /dev/null +++ b/03_Script_Starter_Kit/examples/04_allowlisted_patch_demo.mjs @@ -0,0 +1,3 @@ +import { cloneBytes, allowListedWrite, diffRanges } from "../binary_utils.mjs"; +// Synthetic demonstration only. No vehicle-security data or real module offsets. +export function demo(input){const output=cloneBytes(input);allowListedWrite(output,4,new Uint8Array([0xAA,0x55]),[{start:4,end:5}]);return {output,changes:diffRanges(input,output)};} diff --git a/03_Script_Starter_Kit/examples/05_checksum_test_vectors.mjs b/03_Script_Starter_Kit/examples/05_checksum_test_vectors.mjs new file mode 100644 index 0000000..9a0b867 --- /dev/null +++ b/03_Script_Starter_Kit/examples/05_checksum_test_vectors.mjs @@ -0,0 +1,2 @@ +import { hexToBytes,crc16CcittFalse,crc32,adler32 } from "../binary_utils.mjs"; +export function selfTest(){const d=new TextEncoder().encode("123456789");return {crc16Ok:crc16CcittFalse(d)===0x29B1,crc32Ok:crc32(d)===0xCBF43926,adler32:adler32(d)};} diff --git a/03_Script_Starter_Kit/examples/06_authorized_job_record_validator.mjs b/03_Script_Starter_Kit/examples/06_authorized_job_record_validator.mjs new file mode 100644 index 0000000..441c3d9 --- /dev/null +++ b/03_Script_Starter_Kit/examples/06_authorized_job_record_validator.mjs @@ -0,0 +1,2 @@ +const REQUIRED=["caseId","customerName","vehicleVin","proofOfOwnershipRef","authorizationRef","technician","timestampUtc","requestedService"]; +export function validateAuthorizedJob(job){const missing=REQUIRED.filter(k=>!String(job[k]??"").trim());const vinOk=/^[A-HJ-NPR-Z0-9]{17}$/.test(String(job.vehicleVin||"").toUpperCase());return {valid:missing.length===0&&vinOk,missing,vinOk};} diff --git a/03_Script_Starter_Kit/examples/07_key_inventory_audit.mjs b/03_Script_Starter_Kit/examples/07_key_inventory_audit.mjs new file mode 100644 index 0000000..b141227 --- /dev/null +++ b/03_Script_Starter_Kit/examples/07_key_inventory_audit.mjs @@ -0,0 +1,2 @@ +// Administrative inventory only. Does not calculate, extract, clone, generate or program credentials. +export function auditKeyInventory(entries){return entries.map((e,i)=>({row:i+1,assetTag:String(e.assetTag||""),type:String(e.type||""),source:String(e.source||""),sealed:Boolean(e.sealed),assigned:Boolean(e.assigned),notes:String(e.notes||"")}));} diff --git a/03_Script_Starter_Kit/examples/08_redacted_security_report.mjs b/03_Script_Starter_Kit/examples/08_redacted_security_report.mjs new file mode 100644 index 0000000..c1ab527 --- /dev/null +++ b/03_Script_Starter_Kit/examples/08_redacted_security_report.mjs @@ -0,0 +1,2 @@ +export function redact(value,keepLast=4){const s=String(value??"");return s.length<=keepLast?"*".repeat(s.length):"*".repeat(s.length-keepLast)+s.slice(-keepLast);} +export function securityReport(job){return {caseId:job.caseId,vin:redact(job.vehicleVin,6),authorizationRef:redact(job.authorizationRef,4),technician:job.technician,timestampUtc:job.timestampUtc,status:job.status};} diff --git a/03_Script_Starter_Kit/examples/airbag_authorized_safe/17_airbag_case_intake_validator.mjs b/03_Script_Starter_Kit/examples/airbag_authorized_safe/17_airbag_case_intake_validator.mjs new file mode 100644 index 0000000..ef2a850 --- /dev/null +++ b/03_Script_Starter_Kit/examples/airbag_authorized_safe/17_airbag_case_intake_validator.mjs @@ -0,0 +1,19 @@ +/* Authorized-shop administrative example. + Does not read, alter, or conceal crash/deployment data. */ +const REQUIRED = [ + "caseId", "timestampUtc", "technician", "customerName", "vehicleVin", + "proofOfOwnershipRef", "authorizationRef", "requestedService" +]; + +export function validateAirbagCase(caseRecord) { + const missing = REQUIRED.filter(k => !String(caseRecord[k] ?? "").trim()); + const vin = String(caseRecord.vehicleVin ?? "").trim().toUpperCase(); + const vinValid = /^[A-HJ-NPR-Z0-9]{17}$/.test(vin); + const authorizationValid = Boolean(String(caseRecord.authorizationRef ?? "").trim()); + return { + valid: missing.length === 0 && vinValid && authorizationValid, + missing, + vinValid, + authorizationValid + }; +} diff --git a/03_Script_Starter_Kit/examples/airbag_authorized_safe/18_airbag_module_read_consistency.mjs b/03_Script_Starter_Kit/examples/airbag_authorized_safe/18_airbag_module_read_consistency.mjs new file mode 100644 index 0000000..5ff98ad --- /dev/null +++ b/03_Script_Starter_Kit/examples/airbag_authorized_safe/18_airbag_module_read_consistency.mjs @@ -0,0 +1,11 @@ +import { constantTimeEqual, crc32 } from "../../binary_utils.mjs"; + +/* Verifies two independent reads of the same module dump match before any further processing. */ +export function verifyAirbagReadConsistency(readA, readB) { + return { + sameLength: readA.length === readB.length, + identical: constantTimeEqual(readA, readB), + crcA: crc32(readA), + crcB: crc32(readB) + }; +} diff --git a/03_Script_Starter_Kit/examples/airbag_authorized_safe/19_airbag_crash_data_disclosure_redactor.mjs b/03_Script_Starter_Kit/examples/airbag_authorized_safe/19_airbag_crash_data_disclosure_redactor.mjs new file mode 100644 index 0000000..456678d --- /dev/null +++ b/03_Script_Starter_Kit/examples/airbag_authorized_safe/19_airbag_crash_data_disclosure_redactor.mjs @@ -0,0 +1,19 @@ +/* Redacts sensitive/identifying values before including module status in a shop report. + Does not delete, alter, or reinterpret crash/deployment records. */ +export function redactAirbagValue(value, visibleTail = 4) { + const text = String(value ?? ""); + const keep = Math.max(0, Math.min(Number(visibleTail) || 0, text.length)); + return "*".repeat(text.length - keep) + text.slice(text.length - keep); +} + +export function airbagStatusReport(job) { + return { + caseId: job.caseId, + vin: redactAirbagValue(job.vehicleVin, 6), + authorizationRef: redactAirbagValue(job.authorizationRef, 4), + technician: job.technician, + timestampUtc: job.timestampUtc, + deploymentStatusAsFound: job.deploymentStatusAsFound, + status: job.status + }; +} diff --git a/03_Script_Starter_Kit/examples/airbag_authorized_safe/20_airbag_backup_naming_policy.mjs b/03_Script_Starter_Kit/examples/airbag_authorized_safe/20_airbag_backup_naming_policy.mjs new file mode 100644 index 0000000..7b9ed7e --- /dev/null +++ b/03_Script_Starter_Kit/examples/airbag_authorized_safe/20_airbag_backup_naming_policy.mjs @@ -0,0 +1,12 @@ +/* Produces a consistent, sanitized filename for authorized airbag/SRS module backups. */ +function safe(value) { + return String(value ?? "unknown").trim().replace(/[^A-Za-z0-9._-]+/g, "_").slice(0, 50); +} + +export function buildAirbagBackupName(meta) { + const stamp = safe(meta.timestampUtc).replace(/[:]/g, "-"); + return [ + safe(meta.caseId), safe(meta.vehicleVin), safe(meta.module), + safe(meta.memoryRegion), safe(meta.readNumber), stamp + ].join("_") + ".bin"; +} diff --git a/03_Script_Starter_Kit/examples/airbag_authorized_safe/21_airbag_service_completion_audit.mjs b/03_Script_Starter_Kit/examples/airbag_authorized_safe/21_airbag_service_completion_audit.mjs new file mode 100644 index 0000000..e8b60cb --- /dev/null +++ b/03_Script_Starter_Kit/examples/airbag_authorized_safe/21_airbag_service_completion_audit.mjs @@ -0,0 +1,13 @@ +/* Final administrative gate before returning the vehicle or module. */ +export function auditAirbagCompletion(job) { + const checks = { + authorizationOnFile: Boolean(job.authorizationRef), + ownershipVerified: Boolean(job.proofOfOwnershipRef), + originalBackupPreserved: Boolean(job.originalBackupHash), + duplicateReadsMatched: job.duplicateReadsMatched === true, + crashDataUnaltered: job.crashDataUnaltered === true, + customerAcknowledged: Boolean(job.customerAcknowledgmentRef), + technicianSigned: Boolean(job.technicianSignatureRef) + }; + return { complete: Object.values(checks).every(Boolean), checks }; +} diff --git a/03_Script_Starter_Kit/examples/airbag_authorized_safe/README.md b/03_Script_Starter_Kit/examples/airbag_authorized_safe/README.md new file mode 100644 index 0000000..6eccd00 --- /dev/null +++ b/03_Script_Starter_Kit/examples/airbag_authorized_safe/README.md @@ -0,0 +1,12 @@ +# Safe Airbag/SRS Module Script Examples for Authorized Shop Work + +These examples support administrative control, evidence preservation, read consistency, backup naming, and service completion auditing for authorized airbag/SRS module work. + +They intentionally do not include: + +- Crash/deployment data deletion, clearing, or alteration intended to conceal collision history +- Disabling, defeating, or bypassing airbag/SRS deployment logic +- DTC clearing to hide accident or repair history +- Any cryptographic, security-access, or seed-key material + +Host-facing Multi-PROG calls are not assumed. Adapt only after validating exact API signatures in the installed Multi-PROG Local Script Help. diff --git a/03_Script_Starter_Kit/examples/ecu_authorized_safe/22_ecu_case_intake_validator.mjs b/03_Script_Starter_Kit/examples/ecu_authorized_safe/22_ecu_case_intake_validator.mjs new file mode 100644 index 0000000..96f19c9 --- /dev/null +++ b/03_Script_Starter_Kit/examples/ecu_authorized_safe/22_ecu_case_intake_validator.mjs @@ -0,0 +1,18 @@ +/* Authorized-shop administrative example. */ +const REQUIRED = [ + "caseId", "timestampUtc", "technician", "customerName", "vehicleVin", + "proofOfOwnershipRef", "authorizationRef", "requestedService" +]; + +export function validateEcuCase(caseRecord) { + const missing = REQUIRED.filter(k => !String(caseRecord[k] ?? "").trim()); + const vin = String(caseRecord.vehicleVin ?? "").trim().toUpperCase(); + const vinValid = /^[A-HJ-NPR-Z0-9]{17}$/.test(vin); + const authorizationValid = Boolean(String(caseRecord.authorizationRef ?? "").trim()); + return { + valid: missing.length === 0 && vinValid && authorizationValid, + missing, + vinValid, + authorizationValid + }; +} diff --git a/03_Script_Starter_Kit/examples/ecu_authorized_safe/23_ecu_calibration_read_consistency.mjs b/03_Script_Starter_Kit/examples/ecu_authorized_safe/23_ecu_calibration_read_consistency.mjs new file mode 100644 index 0000000..9925bf3 --- /dev/null +++ b/03_Script_Starter_Kit/examples/ecu_authorized_safe/23_ecu_calibration_read_consistency.mjs @@ -0,0 +1,11 @@ +import { constantTimeEqual, crc32 } from "../../binary_utils.mjs"; + +/* Verifies two independent reads of the same ECU calibration image match before any further processing. */ +export function verifyEcuReadConsistency(readA, readB) { + return { + sameLength: readA.length === readB.length, + identical: constantTimeEqual(readA, readB), + crcA: crc32(readA), + crcB: crc32(readB) + }; +} diff --git a/03_Script_Starter_Kit/examples/ecu_authorized_safe/24_ecu_partnumber_crosscheck.mjs b/03_Script_Starter_Kit/examples/ecu_authorized_safe/24_ecu_partnumber_crosscheck.mjs new file mode 100644 index 0000000..98e82d5 --- /dev/null +++ b/03_Script_Starter_Kit/examples/ecu_authorized_safe/24_ecu_partnumber_crosscheck.mjs @@ -0,0 +1,13 @@ +import { sliceBytes, asciiPreview } from "../../binary_utils.mjs"; + +/* Read-only comparison of a declared part-number field against an expected value. + Uses a caller-supplied offset/length; no real module offsets are hard-coded. */ +export function crosscheckPartNumber(data, field, expectedPartNumber) { + const raw = sliceBytes(data, field.offset, field.length); + const found = asciiPreview(raw, "").trim(); + return { + found, + expected: String(expectedPartNumber ?? ""), + matches: found === String(expectedPartNumber ?? "") + }; +} diff --git a/03_Script_Starter_Kit/examples/ecu_authorized_safe/25_ecu_change_scope_guard.mjs b/03_Script_Starter_Kit/examples/ecu_authorized_safe/25_ecu_change_scope_guard.mjs new file mode 100644 index 0000000..29a0825 --- /dev/null +++ b/03_Script_Starter_Kit/examples/ecu_authorized_safe/25_ecu_change_scope_guard.mjs @@ -0,0 +1,18 @@ +/* Generic change-scope guard for an explicitly authorized ECU repair plan. + Uses synthetic/configured ranges only. No real calibration offsets are included. */ +import { diffRanges } from "../../binary_utils.mjs"; + +function rangeInside(change, allowed) { + return change.start >= allowed.start && change.end <= allowed.end; +} + +export function validateAuthorizedEcuChangeScope(original, modified, allowedRanges) { + const changes = diffRanges(original, modified); + const violations = changes.filter(c => !allowedRanges.some(a => rangeInside(c, a))); + return { + valid: violations.length === 0, + changes, + violations, + changedBytes: changes.reduce((n, r) => n + r.length, 0) + }; +} diff --git a/03_Script_Starter_Kit/examples/ecu_authorized_safe/26_ecu_service_completion_audit.mjs b/03_Script_Starter_Kit/examples/ecu_authorized_safe/26_ecu_service_completion_audit.mjs new file mode 100644 index 0000000..0b3ba24 --- /dev/null +++ b/03_Script_Starter_Kit/examples/ecu_authorized_safe/26_ecu_service_completion_audit.mjs @@ -0,0 +1,13 @@ +/* Final administrative gate before returning the vehicle or module. */ +export function auditEcuCompletion(job) { + const checks = { + authorizationOnFile: Boolean(job.authorizationRef), + ownershipVerified: Boolean(job.proofOfOwnershipRef), + originalBackupPreserved: Boolean(job.originalBackupHash), + duplicateReadsMatched: job.duplicateReadsMatched === true, + partNumberVerified: job.partNumberVerified === true, + customerAcknowledged: Boolean(job.customerAcknowledgmentRef), + technicianSigned: Boolean(job.technicianSignatureRef) + }; + return { complete: Object.values(checks).every(Boolean), checks }; +} diff --git a/03_Script_Starter_Kit/examples/ecu_authorized_safe/README.md b/03_Script_Starter_Kit/examples/ecu_authorized_safe/README.md new file mode 100644 index 0000000..71b797b --- /dev/null +++ b/03_Script_Starter_Kit/examples/ecu_authorized_safe/README.md @@ -0,0 +1,11 @@ +# Safe ECU Script Examples for Authorized Shop Work + +These examples support administrative control, calibration read consistency, part-number cross-checking, allow-listed change-scope validation, and service completion auditing for authorized ECU work. + +They intentionally do not include: + +- Emissions defeat, torque/power "unlock" cracking, or immobilizer/security-access bypass +- Any cryptographic, security-access, or seed-key material +- Real calibration offsets or tuning maps + +Host-facing Multi-PROG calls are not assumed. Adapt only after validating exact API signatures in the installed Multi-PROG Local Script Help. diff --git a/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/09_immo_case_intake_validator.mjs b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/09_immo_case_intake_validator.mjs new file mode 100644 index 0000000..4211931 --- /dev/null +++ b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/09_immo_case_intake_validator.mjs @@ -0,0 +1,19 @@ +/* Authorized-shop administrative example. + Does not read, derive, calculate, program, clone, or bypass immobilizer credentials. */ +const REQUIRED = [ + "caseId", "timestampUtc", "technician", "customerName", "vehicleVin", + "proofOfOwnershipRef", "authorizationRef", "requestedService" +]; + +export function validateImmoCase(caseRecord) { + const missing = REQUIRED.filter(k => !String(caseRecord[k] ?? "").trim()); + const vin = String(caseRecord.vehicleVin ?? "").trim().toUpperCase(); + const vinValid = /^[A-HJ-NPR-Z0-9]{17}$/.test(vin); + const authorizationValid = Boolean(String(caseRecord.authorizationRef ?? "").trim()); + return { + valid: missing.length === 0 && vinValid && authorizationValid, + missing, + vinValid, + authorizationValid + }; +} diff --git a/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/10_immo_module_read_consistency.mjs b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/10_immo_module_read_consistency.mjs new file mode 100644 index 0000000..ec8ff43 --- /dev/null +++ b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/10_immo_module_read_consistency.mjs @@ -0,0 +1,18 @@ +/* Confirms that two authorized module reads are identical. + It does not locate or expose security fields. */ +import { constantTimeEqual, crc32, diffRanges } from "../../binary_utils.mjs"; + +export function compareAuthorizedReads(readA, readB) { + if (readA.length !== readB.length) { + return { valid: false, reason: "Different file lengths", lengthA: readA.length, lengthB: readB.length }; + } + const identical = constantTimeEqual(readA, readB); + return { + valid: identical, + identical, + length: readA.length, + crc32A: crc32(readA).toString(16).padStart(8, "0").toUpperCase(), + crc32B: crc32(readB).toString(16).padStart(8, "0").toUpperCase(), + changedRanges: identical ? [] : diffRanges(readA, readB) + }; +} diff --git a/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/11_immo_dump_quality_report.mjs b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/11_immo_dump_quality_report.mjs new file mode 100644 index 0000000..878e4ed --- /dev/null +++ b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/11_immo_dump_quality_report.mjs @@ -0,0 +1,18 @@ +/* Generic dump-quality report for authorized repair intake. + Does not identify, decode, or reveal immobilizer secrets. */ +import { countByte, crc32, asciiPreview } from "../../binary_utils.mjs"; + +export function buildDumpQualityReport(data) { + if (!data.length) return { valid: false, reason: "Empty input" }; + const ff = countByte(data, 0xFF); + const zero = countByte(data, 0x00); + return { + valid: true, + length: data.length, + crc32: crc32(data).toString(16).padStart(8, "0").toUpperCase(), + ffPercent: Number((ff * 100 / data.length).toFixed(2)), + zeroPercent: Number((zero * 100 / data.length).toFixed(2)), + printablePreview: asciiPreview(data.slice(0, 64)), + warning: ff === data.length || zero === data.length ? "Input appears blank or erased" : "" + }; +} diff --git a/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/12_authorized_key_count_reconciliation.mjs b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/12_authorized_key_count_reconciliation.mjs new file mode 100644 index 0000000..ca552d7 --- /dev/null +++ b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/12_authorized_key_count_reconciliation.mjs @@ -0,0 +1,16 @@ +/* Reconciles physical key inventory for a documented job. + Does not generate, clone, learn, or program keys. */ +export function reconcileKeys(record) { + const received = Number(record.keysReceived ?? 0); + const returned = Number(record.keysReturned ?? 0); + const added = Number(record.newKeysIssued ?? 0); + const retained = Number(record.keysRetainedByShop ?? 0); + const expectedReturn = received + added - retained; + return { + received, returned, added, retained, expectedReturn, + balanced: Number.isInteger(received) && Number.isInteger(returned) && + Number.isInteger(added) && Number.isInteger(retained) && + [received, returned, added, retained].every(v => v >= 0) && + returned === expectedReturn + }; +} diff --git a/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/13_security_value_redactor.mjs b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/13_security_value_redactor.mjs new file mode 100644 index 0000000..636affc --- /dev/null +++ b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/13_security_value_redactor.mjs @@ -0,0 +1,17 @@ +/* Redacts sensitive values in shop reports. + Raw security values should not appear in general logs. */ +export function redactSecurityValue(value, visibleTail = 4) { + const text = String(value ?? ""); + const keep = Math.max(0, Math.min(Number(visibleTail) || 0, text.length)); + return "*".repeat(text.length - keep) + text.slice(text.length - keep); +} + +export function redactRecord(record, fields) { + const copy = { ...record }; + for (const field of fields) { + if (Object.prototype.hasOwnProperty.call(copy, field)) { + copy[field] = redactSecurityValue(copy[field]); + } + } + return copy; +} diff --git a/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/14_immo_backup_naming_policy.mjs b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/14_immo_backup_naming_policy.mjs new file mode 100644 index 0000000..5140b43 --- /dev/null +++ b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/14_immo_backup_naming_policy.mjs @@ -0,0 +1,12 @@ +/* Produces a consistent, sanitized filename for authorized backups. */ +function safe(value) { + return String(value ?? "unknown").trim().replace(/[^A-Za-z0-9._-]+/g, "_").slice(0, 50); +} + +export function buildBackupName(meta) { + const stamp = safe(meta.timestampUtc).replace(/[:]/g, "-"); + return [ + safe(meta.caseId), safe(meta.vehicleVin), safe(meta.module), + safe(meta.memoryRegion), safe(meta.readNumber), stamp + ].join("_") + ".bin"; +} diff --git a/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/15_immo_change_scope_guard.mjs b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/15_immo_change_scope_guard.mjs new file mode 100644 index 0000000..80845bf --- /dev/null +++ b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/15_immo_change_scope_guard.mjs @@ -0,0 +1,18 @@ +/* Generic change-scope guard for an explicitly authorized repair plan. + Uses synthetic/configured ranges only. No real module offsets are included. */ +import { diffRanges } from "../../binary_utils.mjs"; + +function rangeInside(change, allowed) { + return change.start >= allowed.start && change.end <= allowed.end; +} + +export function validateAuthorizedChangeScope(original, modified, allowedRanges) { + const changes = diffRanges(original, modified); + const violations = changes.filter(c => !allowedRanges.some(a => rangeInside(c, a))); + return { + valid: violations.length === 0, + changes, + violations, + changedBytes: changes.reduce((n, r) => n + r.length, 0) + }; +} diff --git a/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/16_immo_service_completion_audit.mjs b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/16_immo_service_completion_audit.mjs new file mode 100644 index 0000000..75c00b8 --- /dev/null +++ b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/16_immo_service_completion_audit.mjs @@ -0,0 +1,14 @@ +/* Final administrative gate before returning the vehicle or module. */ +export function auditCompletion(job) { + const checks = { + authorizationOnFile: Boolean(job.authorizationRef), + ownershipVerified: Boolean(job.proofOfOwnershipRef), + originalBackupPreserved: Boolean(job.originalBackupHash), + duplicateReadsMatched: job.duplicateReadsMatched === true, + physicalKeysReconciled: job.physicalKeysReconciled === true, + customerAcknowledged: Boolean(job.customerAcknowledgmentRef), + securityDataRedacted: job.securityDataRedacted === true, + technicianSigned: Boolean(job.technicianSignatureRef) + }; + return { complete: Object.values(checks).every(Boolean), checks }; +} diff --git a/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/README.md b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/README.md new file mode 100644 index 0000000..ee904cf --- /dev/null +++ b/03_Script_Starter_Kit/examples/immobilizer_authorized_safe/README.md @@ -0,0 +1,13 @@ +# Safe Immobilizer Script Examples for Authorized Shop Work + +These examples support administrative control, evidence preservation, read consistency, dump-quality assessment, key inventory reconciliation, redaction, backup naming, change-scope validation, and service completion auditing. + +They intentionally do not include: + +- PIN, CS, MAC, ISN, password, secret-key, or seed-key extraction +- Transponder cloning or credential generation +- All-keys-lost programming sequences +- Immobilizer off, delete, bypass, virginization, synchronization, or security-access circumvention +- Real EEPROM/DFLASH/PFLASH security offsets or cryptographic material + +Host-facing Multi-PROG calls are not assumed. Adapt only after validating exact API signatures in the installed Multi-PROG Local Script Help. diff --git a/03_Script_Starter_Kit/examples/other_modules_authorized_safe/27_module_case_intake_validator.mjs b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/27_module_case_intake_validator.mjs new file mode 100644 index 0000000..eac6839 --- /dev/null +++ b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/27_module_case_intake_validator.mjs @@ -0,0 +1,18 @@ +/* Authorized-shop administrative example for BCM/instrument cluster/TCU work. */ +const REQUIRED = [ + "caseId", "timestampUtc", "technician", "customerName", "vehicleVin", + "proofOfOwnershipRef", "authorizationRef", "requestedService", "module" +]; + +export function validateModuleCase(caseRecord) { + const missing = REQUIRED.filter(k => !String(caseRecord[k] ?? "").trim()); + const vin = String(caseRecord.vehicleVin ?? "").trim().toUpperCase(); + const vinValid = /^[A-HJ-NPR-Z0-9]{17}$/.test(vin); + const authorizationValid = Boolean(String(caseRecord.authorizationRef ?? "").trim()); + return { + valid: missing.length === 0 && vinValid && authorizationValid, + missing, + vinValid, + authorizationValid + }; +} diff --git a/03_Script_Starter_Kit/examples/other_modules_authorized_safe/28_module_read_consistency.mjs b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/28_module_read_consistency.mjs new file mode 100644 index 0000000..0c996a5 --- /dev/null +++ b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/28_module_read_consistency.mjs @@ -0,0 +1,11 @@ +import { constantTimeEqual, crc32 } from "../../binary_utils.mjs"; + +/* Verifies two independent reads of the same module dump match before any further processing. */ +export function verifyModuleReadConsistency(readA, readB) { + return { + sameLength: readA.length === readB.length, + identical: constantTimeEqual(readA, readB), + crcA: crc32(readA), + crcB: crc32(readB) + }; +} diff --git a/03_Script_Starter_Kit/examples/other_modules_authorized_safe/29_module_backup_naming_policy.mjs b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/29_module_backup_naming_policy.mjs new file mode 100644 index 0000000..4ea97cf --- /dev/null +++ b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/29_module_backup_naming_policy.mjs @@ -0,0 +1,12 @@ +/* Produces a consistent, sanitized filename for authorized module backups. */ +function safe(value) { + return String(value ?? "unknown").trim().replace(/[^A-Za-z0-9._-]+/g, "_").slice(0, 50); +} + +export function buildModuleBackupName(meta) { + const stamp = safe(meta.timestampUtc).replace(/[:]/g, "-"); + return [ + safe(meta.caseId), safe(meta.vehicleVin), safe(meta.module), + safe(meta.memoryRegion), safe(meta.readNumber), stamp + ].join("_") + ".bin"; +} diff --git a/03_Script_Starter_Kit/examples/other_modules_authorized_safe/30_module_change_scope_guard.mjs b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/30_module_change_scope_guard.mjs new file mode 100644 index 0000000..54431d9 --- /dev/null +++ b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/30_module_change_scope_guard.mjs @@ -0,0 +1,20 @@ +/* Generic change-scope guard for an explicitly authorized repair plan. + Uses synthetic/configured ranges only. No real module offsets are included. + Callers must exclude any mileage/odometer field from allowedRanges; this guard + only checks that changes stay within the caller-declared allow-list. */ +import { diffRanges } from "../../binary_utils.mjs"; + +function rangeInside(change, allowed) { + return change.start >= allowed.start && change.end <= allowed.end; +} + +export function validateAuthorizedModuleChangeScope(original, modified, allowedRanges) { + const changes = diffRanges(original, modified); + const violations = changes.filter(c => !allowedRanges.some(a => rangeInside(c, a))); + return { + valid: violations.length === 0, + changes, + violations, + changedBytes: changes.reduce((n, r) => n + r.length, 0) + }; +} diff --git a/03_Script_Starter_Kit/examples/other_modules_authorized_safe/31_module_service_completion_audit.mjs b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/31_module_service_completion_audit.mjs new file mode 100644 index 0000000..ebb4b71 --- /dev/null +++ b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/31_module_service_completion_audit.mjs @@ -0,0 +1,13 @@ +/* Final administrative gate before returning the vehicle or module. */ +export function auditModuleCompletion(job) { + const checks = { + authorizationOnFile: Boolean(job.authorizationRef), + ownershipVerified: Boolean(job.proofOfOwnershipRef), + originalBackupPreserved: Boolean(job.originalBackupHash), + duplicateReadsMatched: job.duplicateReadsMatched === true, + mileageFieldUnchanged: job.mileageFieldUnchanged === true, + customerAcknowledged: Boolean(job.customerAcknowledgmentRef), + technicianSigned: Boolean(job.technicianSignatureRef) + }; + return { complete: Object.values(checks).every(Boolean), checks }; +} diff --git a/03_Script_Starter_Kit/examples/other_modules_authorized_safe/README.md b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/README.md new file mode 100644 index 0000000..090fef7 --- /dev/null +++ b/03_Script_Starter_Kit/examples/other_modules_authorized_safe/README.md @@ -0,0 +1,12 @@ +# Safe Other-Module (BCM / Instrument Cluster / TCU) Script Examples for Authorized Shop Work + +These examples support administrative control, read consistency, backup naming, allow-listed change-scope validation, and service completion auditing for authorized body/cluster/transmission module work. + +They intentionally do not include: + +- Odometer/mileage alteration, rollback, or correction of any kind +- Feature-unlock cracking or piracy of paid options +- Immobilizer/security-access bypass or cryptographic material +- Real module memory offsets + +Host-facing Multi-PROG calls are not assumed. Adapt only after validating exact API signatures in the installed Multi-PROG Local Script Help. diff --git a/03_Script_Starter_Kit/templates/multiprog_safe_template.mjs b/03_Script_Starter_Kit/templates/multiprog_safe_template.mjs new file mode 100644 index 0000000..b9f9be1 --- /dev/null +++ b/03_Script_Starter_Kit/templates/multiprog_safe_template.mjs @@ -0,0 +1,20 @@ +/* SAFE MULTI-PROG ADAPTATION TEMPLATE + This file intentionally uses placeholders. Replace them only with exact functions + documented in your installed Multi-PROG Local Script > Help. */ + +function inspectCurrentBuffer() { + // const data = HOST_READ_CURRENT_BUFFER(); + // if (!data || data.length !== EXPECTED_SIZE) { HOST_MESSAGE("Unexpected size"); return; } + // Perform read-only inspection and display metadata. +} + +function exportValidatedCopy() { + // 1. Read current buffer. + // 2. Clone it. + // 3. Apply only an explicitly authorized, allow-listed transformation. + // 4. Generate a diff report. + // 5. Refuse output unless every invariant passes. + // 6. Save to a new filename. Never overwrite the original. +} + +// HOST_ADD_FUNCTION_BUTTON("Inspect", inspectCurrentBuffer); diff --git a/03_Script_Starter_Kit/tests/test_binary_utils.mjs b/03_Script_Starter_Kit/tests/test_binary_utils.mjs new file mode 100644 index 0000000..65337f5 --- /dev/null +++ b/03_Script_Starter_Kit/tests/test_binary_utils.mjs @@ -0,0 +1,7 @@ +import { strict as assert } from "node:assert"; +import { crc32, diffRanges, hex } from "../binary_utils.mjs"; +const v=new TextEncoder().encode("123456789"); +assert.equal(crc32(v),0xCBF43926); +assert.equal(hex(new Uint8Array([0,15,255])),"00 0F FF"); +assert.deepEqual(diffRanges(new Uint8Array([1,2,3,4]),new Uint8Array([1,9,8,4])),[{start:1,end:2,length:2}]); +console.log("All tests passed"); diff --git a/04_Workflows/AUTHORIZED_REPAIR_WORKFLOW.md b/04_Workflows/AUTHORIZED_REPAIR_WORKFLOW.md new file mode 100644 index 0000000..ca6d4d9 --- /dev/null +++ b/04_Workflows/AUTHORIZED_REPAIR_WORKFLOW.md @@ -0,0 +1,28 @@ +# Validation and Release Workflow + +## Intake +- Record customer authorization, VIN, module identity, part number and complaint. +- Photograph connections and note adapter/pinout source. + +## Acquisition +- Perform two reads. +- Save as `CASEID_module_region_read01.bin` and `read02.bin`. +- Compare byte-for-byte; stop if they differ. +- Record SHA-256 hashes. + +## Development +- Work only on a copy. +- Use synthetic or known-good test vectors first. +- Maintain an allow-list of writable offsets. +- Log every changed range with original and new bytes. + +## Validation +- Verify size, identifiers, blank regions, changed ranges and checksum. +- Save a machine-readable diff report. +- Peer-review production scripts. + +## Release +- Version the script and record Multi-PROG software/firmware versions. +- Sign or hash the release bundle. +- Test on spare hardware. +- Preserve rollback files and notes. diff --git a/05_Reference/SEARCH_QUERIES.md b/05_Reference/SEARCH_QUERIES.md new file mode 100644 index 0000000..4b4a33d --- /dev/null +++ b/05_Reference/SEARCH_QUERIES.md @@ -0,0 +1,15 @@ +# Research Queries + +- `"Multi-PROG Script Function Manual"` +- `site:github.com "Multi-Prog" mjs` +- `site:github.com "AddFunctionButton" "ReadData"` +- `"Xhorse Multi-PROG" script JavaScript` +- `"Multi-PROG" checksum green C` +- `JavaScript Uint8Array binary parser` +- `JavaScript CRC known test vectors` +- `NASTF Vehicle Security Professional` +- `NASTF Assisted Immobilizer Reprogramming` +- `OpenRemap ECU binary identification` + +## Evaluation rules +Prefer official manuals and built-in Help. Verify mirrors against official text. Check repository license, activity, issue history and source transparency. Do not collect or deploy content intended for unauthorized access, immobilizer bypass, odometer fraud or circumvention. diff --git a/05_Reference/SECURITY_RESEARCH_TOPICS.md b/05_Reference/SECURITY_RESEARCH_TOPICS.md new file mode 100644 index 0000000..cbabf4a --- /dev/null +++ b/05_Reference/SECURITY_RESEARCH_TOPICS.md @@ -0,0 +1,43 @@ +# Security-sensitive topic research notes + +This note gathers high-level, legitimate references for topics that are often discussed around XHorse Multi-PROG and immobilizer work. These materials support documentation review, professional credentialing, and safe bench-study work only. They are not operational instructions for extraction, bypass, cloning, or unauthorized patching. + +## PIN / CS / MAC / ISN / password / secret-key / seed-key extraction +- NASTF Vehicle Security Professional Registry — official credentialing and secure-access context for professionals. +- NASTF "I need a code" article — explains legitimate code-ordering options and the role of secure automotive information access. +- NASTF SDRM portal — secure registry portal and VSP workflow entry point. + +## Real immobilizer memory offsets +- OpenRemap — offline ECU binary identification and health-checking workflows. +- EcuBus-Pro — ECU development and test-tool architecture reference for understanding how ECUs and security-related data are organized. +- Binary parser and checksum references in this kit — useful for safe, read-only inspection of dumps and binary images. + +## Key or transponder cloning +- NASTF AIR (Assisted Immobilizer Reprogramming) — high-level professional context for immobilizer reprogramming and authorized workflows. +- NASTF VSP Registry — qualification and governance material for secure vehicle-security work. +- Multi-PROG owner/manual references — for understanding the tool’s supported workflows and limits. + +## Credential generation +- NASTF VSP Registry — explains how credentialing, secure tool validation and access are managed. +- NASTF account types comparison — helps differentiate free, member and VSP access paths. +- NASTF choosing the correct account — useful for understanding which account fits a professional workflow. + +## All-keys-lost procedures +- NASTF AIR article — professional context for assisted immobilizer reprogramming. +- NASTF "I need a code" article — legitimate code procurement and approved workflow context. +- NASTF VSP Registry — official access and governance route for security-related operations. + +## Immobilizer disabling or bypassing +- Treat this topic as out of scope for operational instructions in this kit. +- Use NASTF scan tool validation and VSP terms/conditions as governance references for legitimate security work. +- Prefer read-only inspection, vehicle documentation review, and authorized service procedures. + +## Virginization or synchronization patches +- OpenRemap and checksum references — useful for validating dumps and understanding patch safety. +- Multi-PROG checksum workflow guides — helpful for understanding supported validation and verification steps. +- Keep immutable originals, record hashes, and validate in a controlled bench environment before any write. + +## Security-access algorithms or cryptographic material +- CyberChef — safe, offline-friendly byte-level analysis and transformation reference. +- GitHub checksum topic and js-crc — high-level learning references for checksum and validation routines. +- NIST Cryptographic Standards and Guidelines — official, general-purpose cryptography reference material. diff --git a/06_URL_Shortcuts/01_Multi_PROG_Script_Function_Manual_PDF.url b/06_URL_Shortcuts/01_Multi_PROG_Script_Function_Manual_PDF.url new file mode 100644 index 0000000..5da1344 --- /dev/null +++ b/06_URL_Shortcuts/01_Multi_PROG_Script_Function_Manual_PDF.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://www.xhorsevvdi.com/upload/pro/24040217120425363837.pdf diff --git a/06_URL_Shortcuts/02_Multi_PROG_Script_Function_Manual_mirror.url b/06_URL_Shortcuts/02_Multi_PROG_Script_Function_Manual_mirror.url new file mode 100644 index 0000000..bd1cf2f --- /dev/null +++ b/06_URL_Shortcuts/02_Multi_PROG_Script_Function_Manual_mirror.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://images.dkgcc.com/files/2025/5/8537_Xhorse%20Multi%20Prog%20User%20Manual.pdf diff --git a/06_URL_Shortcuts/03_Multi_PROG_Owner_Manual.url b/06_URL_Shortcuts/03_Multi_PROG_Owner_Manual.url new file mode 100644 index 0000000..6b80a62 --- /dev/null +++ b/06_URL_Shortcuts/03_Multi_PROG_Owner_Manual.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://www.manualslib.com/manual/3420478/Xhorse-Multi-Prog.html diff --git a/06_URL_Shortcuts/04_Multi_PROG_Operation_Manual.url b/06_URL_Shortcuts/04_Multi_PROG_Operation_Manual.url new file mode 100644 index 0000000..1eca9d2 --- /dev/null +++ b/06_URL_Shortcuts/04_Multi_PROG_Operation_Manual.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://www.manualslib.com/guide/4237862/xhorse-multi-prog-automotive-programmer-operation-manual.html diff --git a/06_URL_Shortcuts/05_First_Multi_PROG_script_tutorial.url b/06_URL_Shortcuts/05_First_Multi_PROG_script_tutorial.url new file mode 100644 index 0000000..b8e4064 --- /dev/null +++ b/06_URL_Shortcuts/05_First_Multi_PROG_script_tutorial.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://blog.xhorsetool.com/how-to-make-first-script-with-xhorse-multi-prog/ diff --git a/06_URL_Shortcuts/06_Third_party_script_introduction.url b/06_URL_Shortcuts/06_Third_party_script_introduction.url new file mode 100644 index 0000000..fe053d1 --- /dev/null +++ b/06_URL_Shortcuts/06_Third_party_script_introduction.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://www.obdexpress.co.uk/service/introduction-to-xhorse-multi-prog-third-party-script-function.html diff --git a/06_URL_Shortcuts/07_Third_party_scripting_how_to.url b/06_URL_Shortcuts/07_Third_party_scripting_how_to.url new file mode 100644 index 0000000..bbef915 --- /dev/null +++ b/06_URL_Shortcuts/07_Third_party_scripting_how_to.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://obd2services.wordpress.com/2024/02/02/xhorse-multi-prog-third-party-scripting-how-to/ diff --git a/06_URL_Shortcuts/08_CarKeyGuyNL_Multi_Prog_Scripts.url b/06_URL_Shortcuts/08_CarKeyGuyNL_Multi_Prog_Scripts.url new file mode 100644 index 0000000..e0ec072 --- /dev/null +++ b/06_URL_Shortcuts/08_CarKeyGuyNL_Multi_Prog_Scripts.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://github.com/CarKeyGuyNL/Multi-Prog-Scripts diff --git a/06_URL_Shortcuts/09_MHH_Auto_Multi_PROG_script_thread.url b/06_URL_Shortcuts/09_MHH_Auto_Multi_PROG_script_thread.url new file mode 100644 index 0000000..c359194 --- /dev/null +++ b/06_URL_Shortcuts/09_MHH_Auto_Multi_PROG_script_thread.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://mhhauto.com/Thread-Xhores-Multi-Prog-script diff --git a/06_URL_Shortcuts/10_Xhorse_checksum_workflow_guide.url b/06_URL_Shortcuts/10_Xhorse_checksum_workflow_guide.url new file mode 100644 index 0000000..45547ad --- /dev/null +++ b/06_URL_Shortcuts/10_Xhorse_checksum_workflow_guide.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://blog.xhorsetool.com/how-to-calculate-checksum-for-xhorse-multi-prog/ diff --git a/06_URL_Shortcuts/11_Checksum_function_guide_mirror.url b/06_URL_Shortcuts/11_Checksum_function_guide_mirror.url new file mode 100644 index 0000000..f699605 --- /dev/null +++ b/06_URL_Shortcuts/11_Checksum_function_guide_mirror.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://blog.xhorsevvdi.com/how-to-use-checksum-calculation-in-xhorse-multi-prog/ diff --git a/06_URL_Shortcuts/12_Supported_ECU_checksum_identification.url b/06_URL_Shortcuts/12_Supported_ECU_checksum_identification.url new file mode 100644 index 0000000..7f62d16 --- /dev/null +++ b/06_URL_Shortcuts/12_Supported_ECU_checksum_identification.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://blog.vvdishop.com/which-ecu-is-supported-for-checksum-in-xhorse-multi-prog/ diff --git a/06_URL_Shortcuts/13_binary_parser_GitHub.url b/06_URL_Shortcuts/13_binary_parser_GitHub.url new file mode 100644 index 0000000..7a2aa9d --- /dev/null +++ b/06_URL_Shortcuts/13_binary_parser_GitHub.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://github.com/keichi/binary-parser diff --git a/06_URL_Shortcuts/14_Awesome_Binary_Parsing.url b/06_URL_Shortcuts/14_Awesome_Binary_Parsing.url new file mode 100644 index 0000000..f5fa4ea --- /dev/null +++ b/06_URL_Shortcuts/14_Awesome_Binary_Parsing.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://github.com/dloss/binary-parsing diff --git a/06_URL_Shortcuts/15_jBinary.url b/06_URL_Shortcuts/15_jBinary.url new file mode 100644 index 0000000..b1d99fe --- /dev/null +++ b/06_URL_Shortcuts/15_jBinary.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://jdataview.github.io/jBinary/ diff --git a/06_URL_Shortcuts/16_js_crc.url b/06_URL_Shortcuts/16_js_crc.url new file mode 100644 index 0000000..d1781e0 --- /dev/null +++ b/06_URL_Shortcuts/16_js_crc.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://www.npmjs.com/package/js-crc diff --git a/06_URL_Shortcuts/17_GitHub_ECU_topic.url b/06_URL_Shortcuts/17_GitHub_ECU_topic.url new file mode 100644 index 0000000..d1e0c91 --- /dev/null +++ b/06_URL_Shortcuts/17_GitHub_ECU_topic.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://github.com/topics/ecu diff --git a/06_URL_Shortcuts/18_EcuBus_Pro.url b/06_URL_Shortcuts/18_EcuBus_Pro.url new file mode 100644 index 0000000..e9f7f3e --- /dev/null +++ b/06_URL_Shortcuts/18_EcuBus_Pro.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://github.com/ecubus/EcuBus-Pro diff --git a/06_URL_Shortcuts/19_OpenRemap.url b/06_URL_Shortcuts/19_OpenRemap.url new file mode 100644 index 0000000..23c4a64 --- /dev/null +++ b/06_URL_Shortcuts/19_OpenRemap.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://pypi.org/project/openremap/ diff --git a/07_Authorized_Key_Immobilizer_Work/AUTHORIZATION_TEMPLATE.csv b/07_Authorized_Key_Immobilizer_Work/AUTHORIZATION_TEMPLATE.csv new file mode 100644 index 0000000..a3a66ed --- /dev/null +++ b/07_Authorized_Key_Immobilizer_Work/AUTHORIZATION_TEMPLATE.csv @@ -0,0 +1 @@ +case_id,timestamp_utc,customer_name,customer_id_ref,proof_of_ownership_ref,VIN,vehicle_year_make_model,requested_service,authorization_ref,technician,module_asset_tag,keys_received,keys_returned,status,notes diff --git a/07_Authorized_Key_Immobilizer_Work/CHAIN_OF_CUSTODY.csv b/07_Authorized_Key_Immobilizer_Work/CHAIN_OF_CUSTODY.csv new file mode 100644 index 0000000..f0969a4 --- /dev/null +++ b/07_Authorized_Key_Immobilizer_Work/CHAIN_OF_CUSTODY.csv @@ -0,0 +1 @@ +case_id,item_id,item_type,from_person,to_person,timestamp_utc,condition,seal_number,location,signature_ref,notes diff --git a/07_Authorized_Key_Immobilizer_Work/README.md b/07_Authorized_Key_Immobilizer_Work/README.md new file mode 100644 index 0000000..71c523c --- /dev/null +++ b/07_Authorized_Key_Immobilizer_Work/README.md @@ -0,0 +1,29 @@ +# Authorized Key and Immobilizer Work + +This section supports lawful shop operations without providing credential extraction, bypass, cloning, PIN calculation, transponder generation, or immobilizer-disable procedures. + +## Required controls +1. Verify government-issued identification and proof of ownership or documented agent authority. +2. Record VIN, registration/title reference, customer authorization, requested service and technician identity. +3. For security-related services in the United States or Canada, use applicable OEM-approved processes and the NASTF Vehicle Security Professional/SDRM framework where required. +4. Keep credentials, PINs, key codes and security files out of general logs. Store them only in approved encrypted systems and redact routine reports. +5. Maintain chain of custody for modules, keys and dumps. +6. Perform two independent reads and preserve immutable hashes before authorized repair. +7. Separate diagnostic evidence from security secrets. +8. Record completion, returned keys, consumed inventory and customer acknowledgment. + +## Supported examples in this archive +- Authorization/job-record validation +- Key inventory administration +- Redacted reporting +- Dual-read verification +- Read-only metadata inspection +- Audit log and chain-of-custody templates + +## Deliberately excluded +- PIN, CS, MAC, ISN, password or secret extraction +- Seed-key/security-access algorithms +- Key/transponder cloning or generation +- All-keys-lost programming sequences +- Immobilizer bypass, delete, virginize or disable patches +- Real EEPROM offsets, cryptographic material or vehicle-specific credential maps diff --git a/08_Collected_MultiPROG_Scripts/GitHub/CarKeyGuyNL_Multi-Prog-Scripts b/08_Collected_MultiPROG_Scripts/GitHub/CarKeyGuyNL_Multi-Prog-Scripts new file mode 160000 index 0000000..b1b2091 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/CarKeyGuyNL_Multi-Prog-Scripts @@ -0,0 +1 @@ +Subproject commit b1b20916b098d46240280f7b42c64b0d2ad57e62 diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.editorconfig b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.editorconfig new file mode 100644 index 0000000..3dce414 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.eslintignore b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.eslintignore new file mode 100644 index 0000000..24e4413 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.eslintignore @@ -0,0 +1,14 @@ +node_modules +dist +out +cli +build +tools +.gitignore +resources/bin +resources/lib +resources/docs/scriptApi +resources/buildInScript +src/renderer/src/views/uds/panel/panel-designer +src/renderer/src/views/ostrace/timeline +src/main/worker/canopen/source \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.eslintrc.cjs b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.eslintrc.cjs new file mode 100644 index 0000000..44196b8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.eslintrc.cjs @@ -0,0 +1,23 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + extends: [ + 'eslint:recommended', + 'plugin:vue/vue3-recommended', + '@electron-toolkit', + '@electron-toolkit/eslint-config-ts/eslint-recommended', + '@vue/eslint-config-typescript/recommended', + '@vue/eslint-config-prettier' + ], + rules: { + 'vue/require-default-prop': 'off', + 'vue/multi-word-component-names': 'off', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/ban-types': 'off', + 'prettier/prettier': 'off' + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.gitignore b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.gitignore new file mode 100644 index 0000000..f8abd79 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.gitignore @@ -0,0 +1,55 @@ +node_modules +dist +out +.DS_Store +*.log* +__pycache__ +.env.local +build +cache +!/build +.env +.ScriptBuild +resources/docs/scriptApi +resources/lib/kerneldlls/devices_property/*.xml +ecb_cli.exe +resources/examples/**/tsconfig.json +resources/examples/**/*.code-workspace +resources/examples/**/*.html +resources/examples/**/**/*.html +resources/examples/**/**/*.csv +resources/examples/**/**/*.blf +resources/examples/**/**/*.txt +resources/examples/**/**/*.bin +resources/examples/**/**/.claude +*.bak +log.txt +tools/a.bin +tools/a.txt +tools/a.csv + +.env.development +doip-certs + + +# generated lib js and d.ts docs +resources/lib/js/cryptoExt.js +resources/lib/js/cryptoExt.js.map +resources/lib/js/plugin.js +resources/lib/js/plugin.js.map +resources/lib/js/secureAccess.js +resources/lib/js/uds.js +resources/lib/js/uds.js.map +resources/lib/js/utli.js +resources/lib/js/utli.js.map +resources/lib/js/index.js +resources/lib/js/index.js.map +src/main/share/crc.d.ts.html +src/main/share/cryptoExt.d.ts.html +src/main/share/uds.d.ts.html +src/main/share/utli.d.ts.html +src/main/share/index.d.ts.html +# python + +resources/python +resources/get-pip.py*.tsbuildinfo diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.npmrc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.npmrc new file mode 100644 index 0000000..34862ff --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.npmrc @@ -0,0 +1,2 @@ +electron_mirror=https://npmmirror.com/mirrors/electron/ +electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.prettierignore b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.prettierignore new file mode 100644 index 0000000..a8f47c0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.prettierignore @@ -0,0 +1,13 @@ +out +dist +/cli +build +tools +pnpm-lock.yaml +LICENSE.md +tsconfig.json +tsconfig.*.json +resources/bin +resources/lib +**/*.html +webpack.config.js \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.prettierrc.yaml b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.prettierrc.yaml new file mode 100644 index 0000000..35893b3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/.prettierrc.yaml @@ -0,0 +1,4 @@ +singleQuote: true +semi: false +printWidth: 100 +trailingComma: none diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/AGENTS.md b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/AGENTS.md new file mode 100644 index 0000000..4385f3d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/AGENTS.md @@ -0,0 +1,106 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +EcuBus-Pro is an open-source automotive ECU (Electronic Control Unit) development and testing tool built with Electron. It serves as an alternative to commercial tools like CAN-OE. + +**Key Features:** +- Cross-platform (Windows, Linux, macOS) +- Multi-hardware support (PEAK, Kvaser, Vector, ZLG, Toomotss, EcuBus-LinCable, SLCAN, GS_USB) +- Protocol support: CAN/CAN-FD, LIN, DoIP, SOME/IP +- UDS diagnostic capabilities +- TypeScript-based scripting and HIL testing framework +- DBC/LDF database support +- Panel builder for custom UI creation + +## Architecture + +This is an Electron application with a clear separation between main and renderer processes: + +**Main Process (src/main/):** +- `docan/` - CAN protocol native module (C++) +- `dolin/` - LIN protocol native module (C++) +- `doip/` - DoIP protocol implementation +- `uds/` - Unified Diagnostic Services +- `vsomeip/` - SOME/IP protocol with C++ bindings +- `worker/` - **Third-party scripts provided to users** (must run `npm run worker:js` after any changes) +- `ipc/` - IPC communication handlers + +**Renderer Process (src/renderer/src/):** +- Vue 3 + TypeScript frontend +- `views/` - UI pages (home, uds, ostrace, etc.) +- `stores/` - Pinia state management +- `router/` - Vue Router +- `database/` - DBC/LDF/ORTI parsers + +**CLI (src/cli/):** Command-line interface for automation + +## Development Commands + +| Command | Description | +|---------|-------------| +| `npm run dev` | Start development server with HMR | +| `npm run build` | Build production version (runs typecheck first) | +| `npm run start` | Preview production build | +| `npm run test` | Run tests with Vitest | +| `npm run lint` | Run ESLint with auto-fix | +| `npm run format` | Run Prettier format | +| `npm run typecheck` | Run TypeScript type checks for both node and web | +| `npm run worker` | Build worker processes (requires Python/build tools) | +| `npm run worker:js` | **Build worker scripts (JS only) - MUST RUN after any changes to `src/main/worker/`** | +| `npm run native` | Build all native modules (docan, dolin, someip) | +| `npm run docan` | Build CAN native module | +| `npm run dolin` | Build LIN native module | +| `npm run someip` | Build SOME/IP native module | +| `npm run build:win` | Build for Windows (NSIS installer) | +| `npm run build:linux` | Build for Linux (deb, rpm) | +| `npm run build:mac` | Build for macOS | +| `npm run docs:dev` | Start VitePress docs dev server | +| `npm run docs:build` | Build VitePress documentation | + +**Note:** Native module builds require Python and build tools (Visual Studio on Windows, gcc on Linux). + +## Key Configuration Files + +- `package.json` - Dependencies, scripts, and vendor hardware support config +- `electron-builder.yml` - Electron builder configuration +- `electron.vite.config.ts` - Vite configuration for Electron +- `tsconfig.json`, `tsconfig.node.json`, `tsconfig.web.json` - TypeScript configs +- `vitest.config.ts` - Vitest test configuration +- `webpack.config.js` - Webpack config for workers + +## Internationalization + +The project uses i18next for internationalization with support for English and Chinese. Translation files are located in `resources/locales/`. + +## Frontend Development Guidelines + +**UI Component Library:** +- Prefer using **Element Plus** components for all UI implementation +- For tables: + - Simple tables: Use `el-table` (from Element Plus) + - Complex tables: Use `vxe-table` + +## Important Notes + +**SWIG Generated Files:** All `*_wrap.cxx` files are generated by SWIG (Simplified Wrapper and Interface Generator). These files should be ignored and never modified manually. They are generated from the corresponding `.i` interface files. + +**Worker Scripts:** The `src/main/worker/` directory contains scripts provided to third-party users, all code in here should has detailed typedoc format comments. **Any changes to this directory must be followed by running `npm run worker:js`** to rebuild the worker scripts. + +## Cursor Cloud specific instructions + +This section captures non-obvious, durable notes for developing EcuBus-Pro in a Cursor Cloud VM. Standard commands live in the tables above and in `package.json`; only the caveats specific to this Linux headless environment are listed here. + +**Environment startup layer (already handled by the update script):** `npm install`, downloading the embedded standalone Python into `resources/python` plus `pip install -r resources/requirements.txt`, `npm run native`, and `npm run worker:js`. You do NOT need to rerun these manually on a fresh session unless you change the relevant sources. + +**Node version:** CI uses Node 24, but the VM ships Node 22 and everything (install, native build, lint, typecheck, tests, `npm run dev`) works on it. Don't switch Node versions unless you hit a concrete incompatibility. + +**Native modules on Linux:** `src/main/docan|dolin|vsomeip/binding.gyp` compile only `fake_linux.cxx` stubs on Linux — no SWIG or vendor SDKs are needed to build them, and the committed `*_wrap.cxx` files are only used on Windows. Only the `simulate` and `slcan` CAN vendors are functional on Linux (see `ecubusPro.vendor` in `package.json`); other vendors are stubbed. After changing `src/main/worker/`, rerun `npm run worker:js`. + +**Python for diagnostic DB parsing:** ODX (`test/odx`) and CDD (`test/cdd`) parsing shell out to `resources/python/bin/python3` (see `getPythonPath()`). If that embedded Python or its packages (`odxtools`, `canmatrix`, `openpyxl`, ...) are missing, those tests and the app's ODX/CDD features fail with `spawn ... ENOENT`. + +**Running the GUI:** This is an Electron desktop app. Run it with `DISPLAY=:1 npm run dev` (a headless X server is already running on display `:1`). It launches without extra `--no-sandbox` flags. The `Autofill.enable`/`Autofill.setAddresses` DevTools console errors at startup are harmless. + +**Known pre-existing test failures on Linux (not environment issues):** There is no CI job that runs the Vitest suite, so some tests only pass on the original author's setup. `test/util/s19Parse.spec.ts > ok1` reads `./CMSIS-DAP_OpenSDA.s19` but the committed fixture is `CMSIS-DAP_OpenSDA.S19` (case mismatch, fails on case-sensitive Linux filesystems). `test/dbc/dbc.test.ts > id2001.dbc` has the same problem: it reads `id2001.dbc` but the committed fixture is `ID2001.dbc`. One `test/odx` assertion (`subfunc as first param`) is sensitive to the installed `odxtools` version. Hardware-backed suites under `test/docan`, `test/dolin`, `test/pwm`, `test/sa_dll` require physical devices and are expected to fail/skip. For a quick smoke run of hardware-independent tests: `npm run test -- --run test/util test/dbc test/odx test/viewer test/cdd test/encoding`. diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/CLAUDE.md b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/CLAUDE.md new file mode 100644 index 0000000..e72cd8b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/CLAUDE.md @@ -0,0 +1,118 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +EcuBus-Pro is an open-source automotive ECU (Electronic Control Unit) development and testing tool built with Electron. It serves as an alternative to commercial tools like CAN-OE. + +**Key Features:** +- Cross-platform (Windows, Linux, macOS) +- Multi-hardware support (PEAK, Kvaser, Vector, ZLG, Toomotss, EcuBus-LinCable, SLCAN, GS_USB) +- Protocol support: CAN/CAN-FD, LIN, DoIP, SOME/IP +- UDS diagnostic capabilities +- TypeScript-based scripting and HIL testing framework +- DBC/LDF database support +- Panel builder for custom UI creation + +## Development Commands + +| Command | Description | +|---------|-------------| +| `npm run dev` | Start development server with HMR | +| `npm run build` | Build production version (runs typecheck first) | +| `npm run start` | Preview production build | +| `npm run test` | Run all tests with Vitest | +| `npm run test -- test/util/hexParse.spec.ts` | Run single test file | +| `npm run test -- test/util/hexParse.spec.ts -t "test name"` | Run single test by name pattern | +| `npm run lint` | Run ESLint with auto-fix | +| `npm run format` | Run Prettier format | +| `npm run typecheck` | Run TypeScript type checks (node + web) | +| `npm run typecheck:node` | Type-check main/preload/CLI/tests only | +| `npm run typecheck:web` | Type-check renderer only | +| `npm run worker:js` | **Build worker scripts (JS only) - MUST RUN after any changes to `src/main/worker/`** | +| `npm run worker` | Build worker bundle including native secure-access addon | +| `npm run native` | Build all native modules (docan, dolin, someip) | +| `npm run docan` / `dolin` / `someip` | Build individual native modules | +| `npm run build:win` / `build:linux` / `build:mac` | Platform-specific builds | +| `npm run docs:dev` / `docs:build` | VitePress documentation | +| `npm run cli:build` | Build CLI | + +**Note:** Native module builds require Python and platform build tools (Visual Studio on Windows, gcc on Linux). + +## Architecture + +This is an Electron application with clear separation between processes: + +**Main Process (`src/main/`):** +- `index.ts` - Creates frameless BrowserWindow, registers `local-resource://` protocol, initializes logging/analytics/i18n +- `docan/`, `dolin/` - CAN/LIN protocol native modules (C++ with SWIG bindings) +- `doip/`, `uds/`, `vsomeip/` - DoIP, UDS, SOME/IP protocol implementations +- `worker/` - **Public worker script API provided to users** (must run `npm run worker:js` after changes) +- `workerClient.ts` - Runs user scripts in Node `worker_threads`, handles RPC/event messages +- `ipc/*.ts` - IPC handlers registered via side-effect imports in `ipc/index.ts` +- `multiWin.ts` - Manages extra Electron windows with MessageChannelMain for log sharing +- `share/` - Shared types and utilities accessible via `nodeCan/*` alias + +**Preload (`src/preload/`):** +- Exposes `window.electron`, `window.api`, `window.store`, `window.path`, `window.dataParseWorker` +- Renderer must use these bridges instead of importing Electron/Node APIs directly + +**Renderer (`src/renderer/src/`):** +- Vue 3 + Pinia + Vue Router (memory history) + Element Plus + VXE components +- `stores/` - `project.ts` (project metadata), `data.ts` (ECU/device/data), `runtime.ts` (runtime flags) +- `views/uds/layout.ts` - UDS workspace panels declared as `layoutMap` items +- State sync between windows uses `BroadcastChannel` pattern in `main.ts` + +**CLI (`src/cli/`):** Automation CLI with separate Electron Vite config (`cli.vite.ts`) + +## Path Aliases + +| Alias | Target | +|-------|--------| +| `src/*` | Repository source root | +| `@r/*` | `src/renderer/src/` | +| `nodeCan/*` | `src/main/share/` | + +Use existing aliases instead of long relative paths. + +## Key Configuration Files + +- `package.json` - Dependencies, scripts, vendor hardware support under `ecubusPro.vendor` +- `electron-builder.yml` - Electron builder configuration +- `electron.vite.config.ts` - Vite configuration for Electron +- `vitest.config.ts` - Vitest test configuration with path aliases +- `webpack.config.js` - Webpack config for worker bundling + +## Repository Conventions + +**UI Components:** Prefer Element Plus. Use `el-table` for simple tables, `vxe-table` for complex tables. + +**Theme:** Dark mode maps to `VxeUI.setTheme('dark')` via `useDark()` watcher in `App.vue`. + +**Plugin State Sync:** Use Wujie `bus` events (`update:dataStore`, `update:dataStore:fromMain`, `update:globalStart:fromMain`). + +**Worker API Documentation:** Keep `src/main/worker/` documented with TSDoc (`@param`, `@returns`, `@throws`, `@example`, `@category`). This is shipped to users via TypeDoc. + +**Formatter:** Single quotes, no semicolons, print width 100, no trailing commas. + +**SWIG Generated Files:** Never edit `*_wrap.cxx` files - they are generated from `.i` interface files. + +## Tests + +Tests live under `test/` and run with Vitest. + +- Hardware-dependent: `test/docan/`, `test/dolin/`, `test/pwm/` (require matching devices) +- Hardware-independent: `test/util/*.spec.ts`, `test/dbc/`, `test/odx/`, `test/viewer/` (good smoke tests) + +## Internationalization + +i18next-based. App translations in `resources/locales//translation.json`. Plugin translations loaded from `locales//translation.json` and merged via IPC. + +## Git Commit Rules + +- Do NOT add `Co-authored-by` trailers to commit messages. + +## MCP Servers + +Workspace MCP config in `.vscode/mcp.json`. The `playwright` server (`npx -y @playwright/mcp@latest`) is useful for browser-based UI exploration when dev server is running. \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/README.md b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/README.md new file mode 100644 index 0000000..6d3019f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/README.md @@ -0,0 +1,118 @@ +
+ + + + +

EcuBus-Pro

+ + + A powerful automotive ECU development tool + Easy of use, Cross platform, Multi dongle, Powerful script ability, CLI support
+ Document: https://app.whyengineer.com | 中文文档 +
+ +## Overview + +![main](https://ecubus.oss-cn-chengdu.aliyuncs.com/img/main.png) + +EcuBus-Pro is an open-source alternative to commercial automotive diagnostic tools like `CAN-OE`. It provides a comprehensive solution for ECU development and testing with: + +- 🆓 Open-source and free to use +- 🚀 Modern, intuitive user interface +- 💻 Cross-platform support (Windows, Linux, MacOS) - [Install](./docs/about/install.md) +- 🔌 Multi-hardware support + - **[EcuBus-LinCable](https://app.whyengineer.com/docs/um/hardware/lincable.html)**: LIN (Support Lin conformance test), [PWM](https://app.whyengineer.com/docs/um/pwm/pwm.html) + - **PEAK**: CAN, CAN-FD, LIN + - **KVASER**: CAN, CAN-FD, LIN + - **ZLG**: CAN, CAN-FD + - **Toomotss**: CAN, CAN-FD, LIN + - **VECTOR**: CAN, CAN-FD, LIN + - **SLCAN**: CAN, CAN-FD [Detail](https://app.whyengineer.com/docs/um/can/can.html#slcan-special) + - **GS_USB (CANDLE)**: CAN, CAN-FD [Detail](https://app.whyengineer.com/docs/um/can/can.html#gs-usb) +- 🛠️ Comprehensive diagnostic capabilities + - **Diagnostic Protocols**: CAN/CAN-FD, DoIP, LIN +- 🌐 **SOME/IP**: SOME/IP protocol support - [Details](./docs/um/someip/index.md) +- 📝 **Scripting**: Advanced TypeScript-based automation - [Details](./docs/um/script.md) +- 🧪 **Test**: HIL Test Framework - [Details](./docs/um/test/test.md) +- 📊 **Database Support**: LIN LDF (edit & export), CAN DBC (view) - [Details](./docs/um/database.md) +- 📈 **Data Visualization**: Real-time signal graphing and analysis - [Details](./docs/um/graph/graph.md) +- ⌨️ **Command Line**: Full-featured CLI for automation and integration - [Details](./docs/um/cli.md) +- 🎨 **Panel**: Drag-and-drop interface builder for custom UI - [Details](./docs/um/panel/index.md) + +[Read the Docs to Learn More.](https://app.whyengineer.com) + + +## Support & Sponsorship + +
+

Platinum Sponsors

+ + + + + + + + +
+ Become a Sponsor + + Become a Sponsor + + Become a Sponsor +
+

Gold Sponsors

+ + + + + + + + + + +
+ + KUNHONG + + + Become a Sponsor + + Become a Sponsor + + Become a Sponsor +
+
+ +--- + +Consider [becoming a sponsor](./docs/about/sponsor) to support ongoing development. Sponsors receive prominent logo placement with website links. 🙏 + + +## Contributors + +Thanks to all the contributors who have helped shape EcuBus-Pro: + + + +We welcome contributions! Please review our [contribution guidelines](./.github/contributing.md) before getting started. + +## License + +[Apache License 2.0](./license.txt) + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/README.zh.md b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/README.zh.md new file mode 100644 index 0000000..f37b8f3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/README.zh.md @@ -0,0 +1,117 @@ +
+ + + + +

EcuBus-Pro

+ + + 功能强大的汽车ECU开发工具 + 易于使用、跨平台、多适配器支持、强大的脚本能力、CLI支持
+ 文档: https://app.whyengineer.com/zh | English Document +
+ +## 概览 + +![main](https://ecubus.oss-cn-chengdu.aliyuncs.com/img/main.png) + +EcuBus-Pro是商业汽车诊断工具(如`CAN-OE`)的开源替代品。它为ECU开发和测试提供了全面的解决方案,具有以下特点: + +- 🆓 开源且免费使用 +- 🚀 现代化、直观的用户界面 +- 💻 跨平台支持(Windows、Linux、MacOS)- [安装指南](./docs/about/install.md) +- 🔌 多硬件支持 + - **[EcuBus-LinCable](https://app.whyengineer.com/zh/docs/um/hardware/lincable.html)**: LIN(支持LIN一致性测试)、[PWM](https://app.whyengineer.com/zh/docs/um/pwm/pwm.html) + - **PEAK**: CAN、CAN-FD、LIN + - **KVASER**: CAN、CAN-FD、LIN + - **ZLG**: CAN、CAN-FD + - **Toomotss**: CAN、CAN-FD、LIN + - **VECTOR**: CAN、CAN-FD、LIN + - **SLCAN**: CAN、CAN-FD [详情](https://app.whyengineer.com/zh/docs/um/can/can.html#slcan-special) + - **GS_USB (CANDLE)**: CAN、CAN-FD [详情](https://app.whyengineer.com/zh/docs/um/can/can.html#gs-usb) +- 🛠️ 全面的诊断功能 + - **诊断协议**: CAN/CAN-FD、DoIP、LIN +- 🌐 **SOME/IP**: SOME/IP协议支持 - [详情](https://app.whyengineer.com/zh/docs/um/someip/index.html) +- 📝 **脚本**: 基于TypeScript的高级自动化 - [详情](./docs/um/script.md) +- 🧪 **测试**: HIL测试框架 - [详情](./docs/um/test/test.md) +- 📊 **数据库支持**: LIN LDF(编辑和导出)、CAN DBC(查看) - [详情](./docs/um/database.md) +- 📈 **数据可视化**: 实时信号图表和分析 - [详情](./docs/um/graph/graph.md) +- ⌨️ **命令行**: 功能齐全的CLI,支持自动化和集成 - [详情](./docs/um/cli.md) +- 🎨 **面板**: 拖拽式界面构建器,用于自定义UI - [详情](./docs/um/panel/index.md) + +[阅读文档了解更多](https://app.whyengineer.com/zh/) + + +## 支持与赞助 + +
+

白金赞助商

+ + + + + + + + +
+ 成为赞助商 + + 成为赞助商 + + 成为赞助商 +
+

金牌赞助商

+ + + + + + + + + + +
+ + KUNHONG + + + 成为赞助商 + + 成为赞助商 + + 成为赞助商 +
+
+ +--- + +考虑[成为赞助商](./docs/about/sponsor)以支持持续开发。赞助商将获得显著的徽标展示位置和网站链接。🙏 + +## 贡献者 + +感谢所有帮助塑造EcuBus-Pro的贡献者: + + + +我们欢迎贡献!在开始之前,请查看我们的[贡献指南](./.github/contributing.md)。 + + +## 许可证 + +[Apache License 2.0](./license.zh.txt) + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/cli.vite.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/cli.vite.ts new file mode 100644 index 0000000..6d5d39a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/cli.vite.ts @@ -0,0 +1,35 @@ +import { resolve } from 'path' +import { defineConfig, externalizeDepsPlugin } from 'electron-vite' +import ConditionalCompile from 'vite-plugin-conditional-compiler' + +export default defineConfig({ + main: { + plugins: [externalizeDepsPlugin(), ConditionalCompile()], + resolve: { + // src + alias: { + src: resolve(__dirname, 'src') + } + }, + build: { + target: 'node18', + sourcemap: true, + rollupOptions: { + input: { + index: resolve(__dirname, 'src/cli/index.ts'), + fake: resolve(__dirname, 'src/cli/fake.ts'), + vsomeip: resolve(__dirname, 'src/main/vsomeip/worker.ts') + }, + output: { + entryFileNames: (chunk) => { + if (chunk.name === 'vsomeip') return 'vsomeip.js' + if (chunk.name === 'index') return 'ecb_cli.js' + return chunk.name + '.js' + }, + format: 'cjs', + dir: resolve(__dirname, 'cli/out/') + } + } + } + } +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/crowdin.yml b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/crowdin.yml new file mode 100644 index 0000000..8414289 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/crowdin.yml @@ -0,0 +1,11 @@ +project_id_env: CROWDIN_PROJECT_ID +api_token_env: CROWDIN_PERSONAL_TOKEN + + +files: + - source: /docs/en/**/*.md + translation: /docs/%two_letters_code%/**/%original_file_name% + - source: /resources/examples/**/readme.md + translation: /resources/examples/**/readme.%two_letters_code%.md + - source: /.vitepress/en.json + translation: /.vitepress/%two_letters_code%.json diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/dev-app-update.yml b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/dev-app-update.yml new file mode 100644 index 0000000..0689391 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/dev-app-update.yml @@ -0,0 +1,3 @@ +provider: generic +url: https://example.com/auto-updates +updaterCacheDirName: ecubus-pro-updater diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/ecubus-pro.code-workspace b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/ecubus-pro.code-workspace new file mode 100644 index 0000000..7284a23 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/ecubus-pro.code-workspace @@ -0,0 +1,17 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "../ecubus-plugin-template" + }, + { + "path": "../ecubus-lang-zh" + } + ], + "settings": { + "typescript.tsserver.log": "off", + "typescript.experimental.useTsgo": false + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/electron-builder.yml b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/electron-builder.yml new file mode 100644 index 0000000..ef13cff --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/electron-builder.yml @@ -0,0 +1,67 @@ +appId: EcuBus-Pro +productName: EcuBus-Pro +fileAssociations: + ext: ecb + description: EcuBus-Pro + +directories: + buildResources: build +files: + - '!**/.vscode/*' + - '!src/*' + - '!electron.vite.config.{js,ts,mjs,cjs}' + - '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}' + - '!{.env,.env.*,.npmrc,pnpm-lock.yaml,package-lock.json}' + - '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}' +asarUnpack: + - resources/** +nodeGypRebuild: false +win: + target: + - target: nsis + arch: + - x64 + publish: + provider: generic + url: '' +nsis: + oneClick: false + allowElevation: true + perMachine: false + license: license.txt + allowToChangeInstallationDirectory: true + installerIcon: ./build/icon.ico + uninstallerIcon: ./build/icon.ico + installerHeaderIcon: ./build/icon.ico + installerSidebar: ./build/sidebar.bmp + uninstallerSidebar: ./build/sidebar.bmp + createDesktopShortcut: true + createStartMenuShortcut: true + artifactName: EcuBus-Pro ${version}.exe + guid: 98123fde-012f-5ff3-8b50-881449dac91a + include: build/installer.nsh +mac: + target: + - target: dmg + icon: ./build/icon.icns + entitlements: build/entitlements.mac.plist + entitlementsInherit: build/entitlements.mac.plist + identity: null + artifactName: EcuBus-Pro-${version}-${arch}.dmg +linux: + target: + - target: deb + - target: rpm + icon: ./build/icon.icns + executableName: ecubuspro + description: EcuBus-Pro + category: Development + desktop: + entry: + Name: EcuBus-Pro + Comment: EcuBus-Pro + Terminal: false + Type: Application + Icon: ecubuspro + Categories: Development + maintainer: https://github.com/ecubus/EcuBus-Pro diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/electron.vite.config.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/electron.vite.config.ts new file mode 100644 index 0000000..b54fa73 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/electron.vite.config.ts @@ -0,0 +1,47 @@ +import { resolve } from 'path' +import { defineConfig, externalizeDepsPlugin } from 'electron-vite' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import { nodePolyfills } from 'vite-plugin-node-polyfills' +import ConditionalCompile from 'vite-plugin-conditional-compiler' + +export default defineConfig({ + main: { + resolve: { + alias: { + src: resolve(__dirname, 'src') + } + }, + plugins: [externalizeDepsPlugin(), ConditionalCompile()], + build: { + rollupOptions: { + input: { + index: resolve(__dirname, 'src/main/index.ts'), + vsomeip: resolve(__dirname, 'src/main/vsomeip/worker.ts') + } + } + } + }, + preload: { + plugins: [externalizeDepsPlugin()] + }, + renderer: { + resolve: { + alias: { + src: resolve(__dirname, 'src'), + '@r': resolve('src/renderer/src'), + nodeCan: resolve(__dirname, 'src/main/share') + } + }, + plugins: [ + vue(), + vueJsx(), + nodePolyfills({ + include: ['buffer'], + globals: { + Buffer: true + } + }) + ] + } +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/installPython.ps1 b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/installPython.ps1 new file mode 100644 index 0000000..b41322f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/installPython.ps1 @@ -0,0 +1,11 @@ +param( + [Parameter(Mandatory=$false)] + [string]$PackageName +) + +Write-Host "Installing $PackageName" +./resources/python/python -m pip install --upgrade $PackageName --no-warn-script-location + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/license.txt b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/license.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/license.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/package-lock.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/package-lock.json new file mode 100644 index 0000000..7d2e374 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/package-lock.json @@ -0,0 +1,20758 @@ +{ + "name": "ecubuspro", + "version": "0.8.65", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ecubuspro", + "version": "0.8.65", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@electron-toolkit/preload": "^3.0.0", + "@electron-toolkit/utils": "^3.0.0", + "@element-plus/icons-vue": "^2.3.1", + "@form-create/element-ui": "^3.2.22", + "@iconify/icons-grommet-icons": "^1.2.5", + "@iconify/icons-mdi": "^1.2.48", + "@joint/core": "^4.0.4", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "@vueuse/core": "^10.7.2", + "@vxe-ui/plugin-render-element": "^4.0.10", + "@xterm/addon-canvas": "^0.7.0", + "@xterm/addon-fit": "^0.10.0", + "@xterm/xterm": "^5.5.0", + "adm-zip": "^0.5.16", + "ajv": "^8.18.0", + "animate.css": "^4.1.1", + "async": "^3.2.6", + "async-validator": "^4.2.5", + "axios": "^1.8.2", + "body-parser": "^2.2.1", + "chevrotain": "^12.0.0", + "codemirror": "^6.65.7", + "colors": "^1.4.0", + "commander": "^12.1.0", + "conf": "^15.1.0", + "dayjs": "^1.11.13", + "e-virt-table": "^1.2.35", + "echarts": "^6.0.0", + "electron-log": "^5.1.2", + "electron-updater": "^6.3.9", + "element-plus": "^2.11.0", + "emittery": "^1.2.0", + "events": "^3.3.0", + "exceljs": "^4.4.0", + "glob": "^11.1.0", + "handlebars": "^4.7.9", + "i18next": "^25.6.2", + "i18next-vue": "^5.3.0", + "iconv-lite": "^0.7.0", + "javascript-obfuscator": "^5.2.0", + "jquery": "^3.7.1", + "jquery-ui": "^1.14.1", + "js-beautify": "^1.15.4", + "json5": "^2.2.3", + "lodash": "^4.17.23", + "marked": "^14.1.3", + "mitt": "^3.0.1", + "path-browserify": "^1.0.1", + "pinia": "^3.0.2", + "pixi.js-legacy": "^5.3.3", + "python-shell": "^5.0.0", + "serialport": "^13.0.0", + "sortablejs": "^1.15.2", + "ts-morph": "^26.0.0", + "uuid": "^14.0.0", + "vite-plugin-string": "^1.2.3", + "vite-raw-plugin": "^1.0.2", + "vitepress-plugin-image-viewer": "^1.1.6", + "vue-grid-layout-v3": "^3.1.2", + "vue-router": "^4.2.5", + "vuedraggable": "4.1.0", + "vxe-pc-ui": "^4.2.53", + "vxe-table": "^4.16.11", + "winston": "^3.17.0", + "wujie-polyfill": "^1.1.3", + "wujie-vue3": "^1.0.29", + "xterm": "^5.3.0" + }, + "devDependencies": { + "@electron-toolkit/eslint-config": "^1.0.2", + "@electron-toolkit/eslint-config-ts": "^1.0.1", + "@electron-toolkit/tsconfig": "^1.0.1", + "@electron/rebuild": "^4.0.4", + "@iconify/icons-ep": "^1.2.12", + "@iconify/icons-material-symbols": "^1.2.58", + "@iconify/icons-ph": "^1.2.5", + "@iconify/vue": "^4.1.1", + "@liudonghua123/pkg": "^6.0.1", + "@rollup/plugin-node-resolve": "^15.3.0", + "@rushstack/eslint-patch": "^1.7.1", + "@types/adm-zip": "^0.5.7", + "@types/async": "^3.2.24", + "@types/node": "^22.9.1", + "@types/path-browserify": "^1.0.3", + "@types/uuid": "^10.0.0", + "@typescript/native-preview": "^7.0.0-dev.20260124.1", + "@vitejs/plugin-vue": "^5.0.3", + "@vue/eslint-config-prettier": "^9.0.0", + "@vue/eslint-config-typescript": "^12.0.0", + "ali-oss": "^6.21.0", + "dotenv": "^16.4.5", + "electron": "^39.8.6", + "electron-builder": "26.8.1", + "electron-vite": "^2.3.0", + "eslint": "^8.57.1", + "eslint-plugin-vue": "^9.32.0", + "husky": "^9.1.7", + "lint-staged": "^15.4.3", + "mermaid": "^11.12.3", + "node-addon-api": "^8.2.2", + "node-gyp": "^12.3.0", + "node-loader": "^2.1.0", + "prettier": "^3.5.2", + "rollup": "^4.59.0", + "rollup-plugin-dts": "^6.3.0", + "sass": "^1.83.0", + "ts-loader": "^9.5.4", + "typedoc": "^0.27.6", + "typescript": "^5.3.3", + "viewerjs": "^1.11.6", + "vite": "^5.4.21", + "vite-plugin-conditional-compiler": "^0.3.1", + "vite-plugin-dts": "^4.5.4", + "vite-plugin-node-polyfills": "^0.21.0", + "vitepress": "^2.0.0-alpha.16", + "vitepress-mermaid-renderer": "^1.1.11", + "vitest": "^3.2.4", + "vue": "^3.5.13", + "vue-tsc": "^2.1.6", + "webpack": "^5.105.0", + "webpack-cli": "^5.1.4", + "yaml": "^2.6.0" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.46.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "9.2.0", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-9.2.0.tgz", + "integrity": "sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", + "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.18.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.4.tgz", + "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", + "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/types": { + "version": "7.19.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-12.0.0.tgz", + "integrity": "sha512-fSL4KXjTl7cDgf0B5Rip9Q05BOrYvkJV/RrBTE/bKDN096E4hN/ySpcBK5B24T76dlQ2i32Zc3PAE27jFnFrKg==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "12.0.0", + "@chevrotain/types": "12.0.0" + } + }, + "node_modules/@chevrotain/gast": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-12.0.0.tgz", + "integrity": "sha512-1ne/m3XsIT8aEdrvT33so0GUC+wkctpUPK6zU9IlOyJLUbR0rg4G7ZiApiJbggpgPir9ERy3FRjT6T7lpgetnQ==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "12.0.0" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-12.0.0.tgz", + "integrity": "sha512-p+EW9MaJwgaHguhoqwOtx/FwuGr+DnNn857sXWOi/mClXIkPGl3rn7hGNWvo31HA3vyeQxjqe+H36yZJwYU8cA==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-12.0.0.tgz", + "integrity": "sha512-S+04vjFQKeuYw0/eW3U52LkAHQsB1ASxsPGsLPUyQgrZ2iNNibQrsidruDzjEX2JYfespXMG0eZmXlhA6z7nWA==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-12.0.0.tgz", + "integrity": "sha512-lB59uJoaGIfOOL9knQqQRfhl9g7x8/wqFkp13zTdkRu1huG9kg6IJs1O8hqj9rs6h7orGxHJUKb+mX3rPbWGhA==", + "license": "Apache-2.0" + }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "license": "MIT", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@develar/schema-utils/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@develar/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/@develar/schema-utils/node_modules/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-4.6.0.tgz", + "integrity": "sha512-YlcAimkXclvqta47g47efzCM5CFxDwv2ClkDfEs/fC/Ak0OxPH2b3czwa4o8O1TRBf+ujFF2RiUwszz2fPVNJQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/@docsearch/js/-/js-4.6.0.tgz", + "integrity": "sha512-9/rbgkm/BgTq46cwxIohvSAz3koOFjnPpg0mwkJItAfzKbQIj+310PvwtgUY1YITDuGCag6yOL50GW2DBkaaBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/sidepanel-js": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/@docsearch/sidepanel-js/-/sidepanel-js-4.6.0.tgz", + "integrity": "sha512-lFT5KLwlzUmpoGArCScNoK41l9a22JYsEPwBzMrz+/ILVR5Ax87UphCuiyDFQWEvEmbwzn/kJx5W/O5BUlN1Rw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@electron-toolkit/eslint-config": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@electron-toolkit/eslint-config/-/eslint-config-1.0.2.tgz", + "integrity": "sha512-GJVuMsxBHfVARfmUoSTCHT0e/QfWlVbXcGk3tgoku0ad6tLjydbv2LpvKi02+Sy2WiEz9L9SkGSw090ukT/F0A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">= 8.0.0" + } + }, + "node_modules/@electron-toolkit/eslint-config-ts": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@electron-toolkit/eslint-config-ts/-/eslint-config-ts-1.0.1.tgz", + "integrity": "sha512-6RkoGE/W/WVlDozy/u6/lo5THNP5CCAPxdKpdQuYaopUfObs3o+JyxdlSb45imh+nL8nv875970EoyplntXaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0" + }, + "peerDependencies": { + "eslint": ">=8.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@electron-toolkit/preload": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/@electron-toolkit/preload/-/preload-3.0.2.tgz", + "integrity": "sha512-TWWPToXd8qPRfSXwzf5KVhpXMfONaUuRAZJHsKthKgZR/+LqX1dZVSSClQ8OTAEduvLGdecljCsoT2jSshfoUg==", + "license": "MIT", + "peerDependencies": { + "electron": ">=13.0.0" + } + }, + "node_modules/@electron-toolkit/tsconfig": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@electron-toolkit/tsconfig/-/tsconfig-1.0.1.tgz", + "integrity": "sha512-M0Mol3odspvtCuheyujLNAW7bXq7KFNYVMRtpjFa4ZfES4MuklXBC7Nli/omvc+PRKlrklgAGx3l4VakjNo8jg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/node": "*" + } + }, + "node_modules/@electron-toolkit/utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@electron-toolkit/utils/-/utils-3.0.0.tgz", + "integrity": "sha512-GaXHDhiT7KCvMJjXdp/QqpYinq69T/Pdl49Z1XLf8mKGf63dnsODMWyrmIjEQ0z/vG7dO8qF3fvmI6Eb2lUNZA==", + "license": "MIT", + "peerDependencies": { + "electron": ">=13.0.0" + } + }, + "node_modules/@electron/asar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz", + "integrity": "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@electron/asar/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@electron/asar/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@electron/asar/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/asar/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@electron/fuses": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz", + "integrity": "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.1", + "fs-extra": "^9.0.1", + "minimist": "^1.2.5" + }, + "bin": { + "electron-fuses": "dist/bin.js" + } + }, + "node_modules/@electron/fuses/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/get": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@electron/get/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@electron/get/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@electron/notarize": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz", + "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/osx-sign": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.3.tgz", + "integrity": "sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@electron/rebuild": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/@electron/rebuild/-/rebuild-4.0.4.tgz", + "integrity": "sha512-Rzc39XPdk/+/wBG8MfwAHohXflep0ITUfulb6Rgz3R0NeSB1noE+E9/M/cb8ftCAiyDD9PPhLuuWgE1GaInbKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.1.1", + "node-abi": "^4.2.0", + "node-api-version": "^0.2.1", + "node-gyp": "^12.2.0", + "read-binary-file-arch": "^1.0.6" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@electron/rebuild/node_modules/node-abi": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-4.26.0.tgz", + "integrity": "sha512-8QwIZqikRvDIkXS2S93LjzhsSPJuIbfaMETWH+Bx8oOT9Sa9UsUtBFQlc3gBNd1+QINjaTloitXr1W3dQLi9Iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.6.3" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@electron/universal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz", + "integrity": "sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "^3.3.1", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "dir-compare": "^4.2.0", + "fs-extra": "^11.1.1", + "minimatch": "^9.0.3", + "plist": "^3.1.0" + }, + "engines": { + "node": ">=16.4" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", + "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "peer": true, + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz", + "integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmmirror.com/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "license": "MIT", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "node_modules/@fast-csv/format/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "license": "MIT", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/@fast-csv/parse/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@form-create/component-elm-checkbox": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/component-elm-checkbox/-/component-elm-checkbox-3.2.31.tgz", + "integrity": "sha512-XQT66E+nRXA2KGZwU1TujSGtICevDUUwks8K+79xs214lofva+rMaRFtrpZYXFgt0+molMUSOl/wc9dOrNr+1Q==", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.31" + } + }, + "node_modules/@form-create/component-elm-frame": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/component-elm-frame/-/component-elm-frame-3.2.31.tgz", + "integrity": "sha512-8ub7SnIRVV6YVIBXHps1A7hi7ivrjm8v1qNIcUOndUliXjP90PZ02YUZkVNh12aX8LNhGtuq8kLZqtdSdh78uA==", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.31" + } + }, + "node_modules/@form-create/component-elm-group": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/component-elm-group/-/component-elm-group-3.2.31.tgz", + "integrity": "sha512-EzAatuXCYfJzm+5yCcG1cgdN0dkJmpYF+opb5NV7Xk3DBY9Ek9xaL0Y0PFvxHsCCxnluXhwyJho7xPiIreYBXQ==", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.31" + } + }, + "node_modules/@form-create/component-elm-radio": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/component-elm-radio/-/component-elm-radio-3.2.31.tgz", + "integrity": "sha512-hm/+tuBPf6bH1iw1xP80JXGe9rhUTovMcQpDfLMNkrdXrLZJ618sKXzID1nId03QKYcocnOHvkbX0NuNPila+A==", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.31" + } + }, + "node_modules/@form-create/component-elm-select": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/component-elm-select/-/component-elm-select-3.2.31.tgz", + "integrity": "sha512-olUL1rt31xn5MYF13b/5KGWXf0iJuo5z3l5xowP2xmfzWV9OfX8fRNToXNurZj9Y2HQbFBAA/uy78TFHqKh4gQ==", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.31" + } + }, + "node_modules/@form-create/component-elm-tree": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/component-elm-tree/-/component-elm-tree-3.2.31.tgz", + "integrity": "sha512-cLWwqT+3ES5FSRywQ7HIh05jvEeMPhoQnIxcSbLnzB24tS2eM2x5DhbhjJ02wsZGPvfcO4m3BBp0fgv1RKww1g==", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.31" + } + }, + "node_modules/@form-create/component-elm-upload": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/component-elm-upload/-/component-elm-upload-3.2.31.tgz", + "integrity": "sha512-2XJr7x8gPf+U0FnPYLyPt0+qLG9+lZSO7tlInT0fw7TJF9pWzrtxicnX6sWvd4EoWCNzYU13HXL33Aq1zP2IeA==", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.31" + } + }, + "node_modules/@form-create/component-subform": { + "version": "3.1.34", + "resolved": "https://registry.npmmirror.com/@form-create/component-subform/-/component-subform-3.1.34.tgz", + "integrity": "sha512-OJcFH/7MTHx7JLEjDK/weS27qfuFWAI+OK+gXTJ2jIt9aZkGWF/EWkjetiJLt5a0KMw4Z15wOS2XCY9pVK9vlA==", + "license": "MIT" + }, + "node_modules/@form-create/core": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/core/-/core-3.2.31.tgz", + "integrity": "sha512-7WTHeQk2M8bWWuQXiLKdeUQ8i6eqcoP3m5KjgcekLIcMKPb48yVqULRcAujK3jGZgLHm5IW4KVt7nw0oxWP7iQ==", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.31" + }, + "peerDependencies": { + "vue": "^3.1.0" + } + }, + "node_modules/@form-create/element-ui": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/element-ui/-/element-ui-3.2.31.tgz", + "integrity": "sha512-/dyd5pSRu0GnF27LluK62dLuNNTortVNOizQ7qk3mdfUoaf1Gsx4yAzvU9/SQNtyKvvQt0AH5blxc03CWFddhA==", + "license": "MIT", + "dependencies": { + "@form-create/component-elm-checkbox": "^3.2.31", + "@form-create/component-elm-frame": "^3.2.31", + "@form-create/component-elm-group": "^3.2.31", + "@form-create/component-elm-radio": "^3.2.31", + "@form-create/component-elm-select": "^3.2.31", + "@form-create/component-elm-tree": "^3.2.31", + "@form-create/component-elm-upload": "^3.2.31", + "@form-create/component-subform": "^3.1.34", + "@form-create/core": "^3.2.31", + "@form-create/utils": "^3.2.31" + }, + "peerDependencies": { + "vue": "^3.1.0" + } + }, + "node_modules/@form-create/utils": { + "version": "3.2.31", + "resolved": "https://registry.npmmirror.com/@form-create/utils/-/utils-3.2.31.tgz", + "integrity": "sha512-YcisHXuQEF0r9y2VKS2CB2nMQ2q8EkKvQXp4nPR9sjbsCabPZOXq2n2MrkWDMhwQNwep08/0NCf7z0wslHzyWQ==", + "license": "MIT" + }, + "node_modules/@gerrit0/mini-shiki": { + "version": "1.27.2", + "resolved": "https://registry.npmmirror.com/@gerrit0/mini-shiki/-/mini-shiki-1.27.2.tgz", + "integrity": "sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-oniguruma": "^1.27.2", + "@shikijs/types": "^1.27.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@iconify-json/simple-icons": { + "version": "1.2.72", + "resolved": "https://registry.npmmirror.com/@iconify-json/simple-icons/-/simple-icons-1.2.72.tgz", + "integrity": "sha512-wkcixntHvaCoqPqerGrNFcHQ3Yx1ux4ZkhscCDK0DEHpP62XCH+cxq1HTsRjbUiQl/M9K8bj03HF6Wgn5iE2rQ==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/icons-ep": { + "version": "1.2.12", + "resolved": "https://registry.npmmirror.com/@iconify/icons-ep/-/icons-ep-1.2.12.tgz", + "integrity": "sha512-DxDyb9WXuTRZBKYH3rIFHGs+jjeKoawFWz28H8hN6jKy6BkXd6TP8WL+7IM3J/yPnnsXbnLpsZklIX/UNVZGuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/icons-grommet-icons": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@iconify/icons-grommet-icons/-/icons-grommet-icons-1.2.5.tgz", + "integrity": "sha512-lZ8CWGhcBaNpC/ajBK8gyD/pY1aze7RgKgsPcS3tiJrEZ5jA0TNJVWVQK58OMzYzS97sBsS6/IWyUJvMGBz2Rw==", + "license": "Apache-2.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/icons-material-symbols": { + "version": "1.2.58", + "resolved": "https://registry.npmmirror.com/@iconify/icons-material-symbols/-/icons-material-symbols-1.2.58.tgz", + "integrity": "sha512-EFBflkqoJmk8FJqA5U8xgJub3a3IaIX4hZVEY4nTnCr8XM4Qopu8H5DRRI9qStF8K3t7XQIJz3AeWmSZrF3+7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/icons-mdi": { + "version": "1.2.48", + "resolved": "https://registry.npmmirror.com/@iconify/icons-mdi/-/icons-mdi-1.2.48.tgz", + "integrity": "sha512-1Tiq+iX1d2MzrdDiw45Tc9HuhNgg8H4vvaKNV+kF+jmr/kPG+YyeLMyXUKp4bwv+gheIAgNpZPjuqAPRkmMieA==", + "license": "Apache-2.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/icons-ph": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@iconify/icons-ph/-/icons-ph-1.2.5.tgz", + "integrity": "sha512-ewrnpL0u3MAP0wLDnXb/39W9W71ObyY8DNig6rYj7NEwcndWWlrGHt1RxEGYE3eqILl/IUcNIQQF1CXZAhwr/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/@iconify/utils/-/utils-3.0.1.tgz", + "integrity": "sha512-A78CUEnFGX8I/WlILxJCuIJXloL0j/OJ9PSchPAfCargEIKmUBWvvEMmKWB5oONwiUqlNt+5eRufdkLxeHIWYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@antfu/utils": "^9.2.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.1", + "globals": "^15.15.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.1.1", + "mlly": "^1.7.4" + } + }, + "node_modules/@iconify/utils/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@iconify/vue": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/@iconify/vue/-/vue-4.3.0.tgz", + "integrity": "sha512-Xq0h6zMrHBbrW8jXJ9fISi+x8oDQllg5hTDkDuxnWiskJ63rpJu9CvJshj8VniHVTbsxCg9fVoPAaNp3RQI5OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "vue": ">=3" + } + }, + "node_modules/@interactjs/actions": { + "version": "1.10.27", + "resolved": "https://registry.npmmirror.com/@interactjs/actions/-/actions-1.10.27.tgz", + "integrity": "sha512-FCRg5KwB+stkPcAMx/Cn0fgGP6p4LyMX9S/Upcn/W+hpYme31bPi54PCqmOebzz6myTthN6zFf9jMyLOqtI/gg==", + "license": "MIT", + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/core": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/auto-scroll": { + "version": "1.10.27", + "resolved": "https://registry.npmmirror.com/@interactjs/auto-scroll/-/auto-scroll-1.10.27.tgz", + "integrity": "sha512-zPg5TnVsZv+9Hnt4qnbxLvBMf+rIWHkoJVoSETEbLNaj90C8hIyr0pVwukSUySSgDhCgQ7np0f3pg4INLq9beQ==", + "license": "MIT", + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/auto-start": { + "version": "1.10.27", + "resolved": "https://registry.npmmirror.com/@interactjs/auto-start/-/auto-start-1.10.27.tgz", + "integrity": "sha512-ECLBO/nxmaF1knncJKIE5F7la3KKRgEkn0Cu2JTPOYj9xy/LpfYElo3wkRHsodgOqF651nR70GK2/IzPR2lO9A==", + "license": "MIT", + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/core": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/core": { + "version": "1.10.27", + "resolved": "https://registry.npmmirror.com/@interactjs/core/-/core-1.10.27.tgz", + "integrity": "sha512-SliUr/3ZbLAdED8LokzYzWHWMdCB5Cq+UnpXuRy+BIod1j97m4IUFf/D1iIKUBBjBcucgXbz28z96WnenVCB7Q==", + "license": "MIT", + "peerDependencies": { + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/dev-tools": { + "version": "1.10.27", + "resolved": "https://registry.npmmirror.com/@interactjs/dev-tools/-/dev-tools-1.10.27.tgz", + "integrity": "sha512-YolmBwRaKH1gWbvyLeV3m5QSwtD38lOZnCBA87PCAlcd9PQAC2gb03fEPeEyD336bE20oLB8f0WZt4Wre+afiw==", + "license": "MIT", + "optionalDependencies": { + "@interactjs/interact": "1.10.27", + "vue": "3" + }, + "peerDependencies": { + "@interactjs/modifiers": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/interact": { + "version": "1.10.27", + "resolved": "https://registry.npmmirror.com/@interactjs/interact/-/interact-1.10.27.tgz", + "integrity": "sha512-XdH3A2UUzjEFGGJgFuJlhiz99tE8jB8xNh/DmnoMuL6uOQPxNA+sWRnzEVjG0+zY2P3/dbhEpi4Cn3FLPzydwA==", + "license": "MIT", + "dependencies": { + "@interactjs/core": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/modifiers": { + "version": "1.10.27", + "resolved": "https://registry.npmmirror.com/@interactjs/modifiers/-/modifiers-1.10.27.tgz", + "integrity": "sha512-ei/qfoQ+9/8k6WzNzdNqHI6cWkIV576N4Ap16r5CoqOWwhA6Xzj3OMHf1g0t1O4eSq2HdJsVJn3eLNfw9HsbeQ==", + "license": "MIT", + "dependencies": { + "@interactjs/snappers": "1.10.27" + }, + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/core": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/snappers": { + "version": "1.10.27", + "resolved": "https://registry.npmmirror.com/@interactjs/snappers/-/snappers-1.10.27.tgz", + "integrity": "sha512-HZLZ0XSi6HI08OmTv/HKG6AltQoaKAALLQ+KDW92utj3XSgw7oren0KsWUKPhaPg3Av7R1jFQd08s+uafqIlLw==", + "license": "MIT", + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/utils": { + "version": "1.10.27", + "resolved": "https://registry.npmmirror.com/@interactjs/utils/-/utils-1.10.27.tgz", + "integrity": "sha512-+qfLOio2OxQqg1cXSnRaCl+N8MQDQLDS9w+aOGxH8YLAhIMyt7Asxx/46//sT8orgsi16pmlBPtngPHT9s8zKw==", + "license": "MIT" + }, + "node_modules/@inversifyjs/common": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/@inversifyjs/common/-/common-1.3.3.tgz", + "integrity": "sha512-ZH0wrgaJwIo3s9gMCDM2wZoxqrJ6gB97jWXncROfYdqZJv8f3EkqT57faZqN5OTeHWgtziQ6F6g3L8rCvGceCw==", + "license": "MIT" + }, + "node_modules/@inversifyjs/core": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/@inversifyjs/core/-/core-1.3.4.tgz", + "integrity": "sha512-gCCmA4BdbHEFwvVZ2elWgHuXZWk6AOu/1frxsS+2fWhjEk2c/IhtypLo5ytSUie1BCiT6i9qnEo4bruBomQsAA==", + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.3.3", + "@inversifyjs/reflect-metadata-utils": "0.2.3" + } + }, + "node_modules/@inversifyjs/reflect-metadata-utils": { + "version": "0.2.3", + "resolved": "https://registry.npmmirror.com/@inversifyjs/reflect-metadata-utils/-/reflect-metadata-utils-0.2.3.tgz", + "integrity": "sha512-d3D0o9TeSlvaGM2I24wcNw/Aj3rc4OYvHXOKDC09YEph5fMMiKd6fq1VTQd9tOkDNWvVbw+cnt45Wy9P/t5Lvw==", + "license": "MIT", + "peerDependencies": { + "reflect-metadata": "0.2.2" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@javascript-obfuscator/escodegen": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/@javascript-obfuscator/escodegen/-/escodegen-2.3.1.tgz", + "integrity": "sha512-Z0HEAVwwafOume+6LFXirAVZeuEMKWuPzpFbQhCEU9++BMz0IwEa9bmedJ+rMn/IlXRBID9j3gQ0XYAa6jM10g==", + "license": "BSD-2-Clause", + "dependencies": { + "@javascript-obfuscator/estraverse": "^5.3.0", + "esprima": "^4.0.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/@javascript-obfuscator/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@javascript-obfuscator/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@javascript-obfuscator/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@javascript-obfuscator/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@javascript-obfuscator/estraverse": { + "version": "5.4.0", + "resolved": "https://registry.npmmirror.com/@javascript-obfuscator/estraverse/-/estraverse-5.4.0.tgz", + "integrity": "sha512-CZFX7UZVN9VopGbjTx4UXaXsi9ewoM1buL0kY7j1ftYdSs7p2spv9opxFjHlQ/QGTgh4UqufYqJJ0WKLml7b6w==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@joint/core": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/@joint/core/-/core-4.1.3.tgz", + "integrity": "sha512-X769blCoVxtx6NNm/cbHDXDOa+Gt7eZwrJMLnqJw8c5NkjmcYWCY1kA3ep8RfRRVG76f3QLNd9a8Q/aItI/WWw==", + "license": "MPL-2.0" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@liudonghua123/pkg": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@liudonghua123/pkg/-/pkg-6.0.1.tgz", + "integrity": "sha512-u89Ac3kgWral2i0tvD+w7bYbqgts8sSq5LFs9qJflnk5pv4FIAsq/HpCJAkKRW8n5F+bUDCfdQq9Op6z34cHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/generator": "7.18.2", + "@babel/parser": "7.18.4", + "@babel/types": "7.19.0", + "@liudonghua123/pkg-fetch": "^3.6.0", + "chalk": "^4.1.2", + "fs-extra": "^9.1.0", + "globby": "^11.1.0", + "into-stream": "^6.0.0", + "is-core-module": "2.9.0", + "minimist": "^1.2.6", + "multistream": "^4.1.0", + "prebuild-install": "7.1.1", + "resolve": "^1.22.0", + "stream-meter": "^1.0.4" + }, + "bin": { + "pkg": "lib-es5/bin.js" + } + }, + "node_modules/@liudonghua123/pkg-fetch": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/@liudonghua123/pkg-fetch/-/pkg-fetch-3.6.1.tgz", + "integrity": "sha512-ik6h/LFJrcXpYkvxkVDn9vWgty9VMwnFt+dgPEvqgQd0S7s+P6eN+L4tgMpJOoo65OoCD5T9aztOO2GJtizJ+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "fs-extra": "^9.1.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.6", + "progress": "^2.0.3", + "semver": "^7.3.5", + "tar-fs": "^2.1.1", + "yargs": "^16.2.0" + }, + "bin": { + "pkg-fetch": "lib-es5/bin.js" + } + }, + "node_modules/@liudonghua123/pkg-fetch/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/@liudonghua123/pkg-fetch/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@liudonghua123/pkg-fetch/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@liudonghua123/pkg-fetch/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@liudonghua123/pkg-fetch/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/@liudonghua123/pkg/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mermaid-js/parser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.0.0.tgz", + "integrity": "sha512-vvK0Hi/VWndxoh03Mmz6wa1KDriSPjS2XMZL/1l19HFwygiObEEoEwSDxOqyLzzAI6J2PU3261JjTMTO7x+BPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "langium": "^4.0.0" + } + }, + "node_modules/@microsoft/api-extractor": { + "version": "7.53.1", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.53.1.tgz", + "integrity": "sha512-bul5eTNxijLdDBqLye74u9494sRmf+9QULtec9Od0uHnifahGeNt8CC4/xCdn7mVyEBrXIQyQ5+sc4Uc0QfBSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor-model": "7.31.1", + "@microsoft/tsdoc": "~0.15.1", + "@microsoft/tsdoc-config": "~0.17.1", + "@rushstack/node-core-library": "5.17.0", + "@rushstack/rig-package": "0.6.0", + "@rushstack/terminal": "0.19.1", + "@rushstack/ts-command-line": "5.1.1", + "lodash": "~4.17.15", + "minimatch": "10.0.3", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "5.8.2" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.31.1", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor-model/-/api-extractor-model-7.31.1.tgz", + "integrity": "sha512-Dhnip5OFKbl85rq/ICHBFGhV4RA5UQSl8AC/P/zoGvs+CBudPkatt5kIhMGiYgVPnUWmfR6fcp38+1AFLYNtUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "~0.15.1", + "@microsoft/tsdoc-config": "~0.17.1", + "@rushstack/node-core-library": "5.17.0" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.15.1", + "resolved": "https://registry.npmmirror.com/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", + "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.17.1", + "resolved": "https://registry.npmmirror.com/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz", + "integrity": "sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "0.15.1", + "ajv": "~8.12.0", + "jju": "~1.4.0", + "resolve": "~1.22.2" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "license": "MIT" + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true + }, + "node_modules/@pixi/accessibility": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/accessibility/-/accessibility-5.3.12.tgz", + "integrity": "sha512-JnfII2VsIeIpvyn1VMNDlhhq5BzHwwHn8sMRKhS3kFyxn4CdP0E4Ktn3/QK0vmL9sHCeTlto5Ybj3uuoKZwCWg==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/app": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/app/-/app-5.3.12.tgz", + "integrity": "sha512-XMpqoO+1BFIVakgHX/VlBaO4qWxg9TitvybDeXZxyVlSCG84DMNulN55jYufVp92nqHhiRr2fAIc9JDccOcNcQ==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12" + } + }, + "node_modules/@pixi/canvas-display": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-display/-/canvas-display-5.3.12.tgz", + "integrity": "sha512-IMqXmAF0X7xcmYTZ2fYn/pToXgUTpRoraI+zarBGv2HfklbF7woQBicNmAVacR+5lXK3+MEl1zrPt64yuPEdDA==", + "license": "MIT", + "dependencies": { + "@pixi/display": "5.3.12" + } + }, + "node_modules/@pixi/canvas-extract": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-extract/-/canvas-extract-5.3.12.tgz", + "integrity": "sha512-iHEp5XZcHbhIQUKdDZzB3eHBkkmDxXONCBBWJp8Gf8+LqwdnsUneB3eAdazCoG6DSEPuYWniu/7pUf9fHtfsKQ==", + "license": "MIT", + "dependencies": { + "@pixi/canvas-renderer": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/canvas-graphics": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-graphics/-/canvas-graphics-5.3.12.tgz", + "integrity": "sha512-dRrh30xcVuCDcFhZ+EpWL3l6P59gpT1gTKs9SyYG51p3AJcij4njteBAdUtEloN4+pIqNVFs20HrntcwDTgvPg==", + "license": "MIT", + "dependencies": { + "@pixi/canvas-renderer": "5.3.12", + "@pixi/constants": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/graphics": "5.3.12", + "@pixi/math": "5.3.12" + } + }, + "node_modules/@pixi/canvas-mesh": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-mesh/-/canvas-mesh-5.3.12.tgz", + "integrity": "sha512-FoDuRkxrqXWvq6cosG5xax/Nv+YJHeOh2QP2qY9QQKkjGBWPQLgCoHZ+PUxbjY4fzSjs8NFlJIdbXAEox6PmiA==", + "license": "MIT", + "dependencies": { + "@pixi/canvas-renderer": "5.3.12", + "@pixi/constants": "5.3.12", + "@pixi/mesh": "5.3.12", + "@pixi/mesh-extras": "5.3.12", + "@pixi/settings": "5.3.12" + } + }, + "node_modules/@pixi/canvas-particles": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-particles/-/canvas-particles-5.3.12.tgz", + "integrity": "sha512-mDIfh3hOZSOLiajL72HnSWWRh/vMHRa1zjosyNe9MOwh0gpdsa33PqgSI+c88XYj054vU/xw4Uu9CoiQO59IWg==", + "license": "MIT", + "dependencies": { + "@pixi/particles": "5.3.12" + } + }, + "node_modules/@pixi/canvas-prepare": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-prepare/-/canvas-prepare-5.3.12.tgz", + "integrity": "sha512-LOj/yTi6th0iFQUSGoaKM0sPCVDEmyn4wxefPwS3baAlWaMewHYwYaef9s6Pyo475aVOuz9bKt2+B1pnV7c0HA==", + "license": "MIT", + "dependencies": { + "@pixi/canvas-renderer": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/prepare": "5.3.12" + } + }, + "node_modules/@pixi/canvas-renderer": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-renderer/-/canvas-renderer-5.3.12.tgz", + "integrity": "sha512-BuUgEeapZH4Twhv3TGlUXkKhGDFCuHDClQWJEJX/R6JzxmXJ9wi6CeSK+fk6/We8899/3y2R+jvEUD51wAMx9g==", + "license": "MIT", + "dependencies": { + "@pixi/constants": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/canvas-sprite": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-sprite/-/canvas-sprite-5.3.12.tgz", + "integrity": "sha512-oq3IDaidhQMlzgkHSjir3h9CGFteIFrytukzpV845AqPE02wOkFKwdZJ/FKOSgnlx64XEHXORXKgjqdn5ZHqKQ==", + "license": "MIT", + "dependencies": { + "@pixi/canvas-renderer": "5.3.12", + "@pixi/constants": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/sprite": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/canvas-sprite-tiling": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-sprite-tiling/-/canvas-sprite-tiling-5.3.12.tgz", + "integrity": "sha512-5Y5JSA6AQhfq1gBqF8KKNcdJlztF3uqK4Eg1h64GadkbLYrwgFCcU/TYn7jNq8/1rjZ5uxgB+HtzC3fOFO+nLw==", + "license": "MIT", + "dependencies": { + "@pixi/canvas-renderer": "5.3.12", + "@pixi/canvas-sprite": "5.3.12", + "@pixi/sprite-tiling": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/canvas-text": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/canvas-text/-/canvas-text-5.3.12.tgz", + "integrity": "sha512-5sWkBUSfMp3ufs4SNu8uNGsauQvnQ0qlNJiAVrqFE+V+tYtmweRVK9bopzJ8xydDGD4UzHSyLWd8g42+9WqSmA==", + "license": "MIT", + "dependencies": { + "@pixi/sprite": "5.3.12", + "@pixi/text": "5.3.12" + } + }, + "node_modules/@pixi/constants": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/constants/-/constants-5.3.12.tgz", + "integrity": "sha512-UcuvZZ8cQu+ZC7ufLpKi8NfZX0FncPuxKd0Rf6u6pzO2SmHPq4C1moXYGDnkZjPFAjNYFFHC7chU+zolMtkL/g==", + "license": "MIT" + }, + "node_modules/@pixi/core": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/core/-/core-5.3.12.tgz", + "integrity": "sha512-SKZPU2mP4UE4trWOTcubGekKwopnotbyR2X8nb68wffBd1GzMoaxyakltfJF2oCV/ivrru/biP4CkW9K6MJ56g==", + "license": "MIT", + "dependencies": { + "@pixi/constants": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/runner": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/ticker": "5.3.12", + "@pixi/utils": "5.3.12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + } + }, + "node_modules/@pixi/display": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/display/-/display-5.3.12.tgz", + "integrity": "sha512-/fsH/GAxc62rvwTnmrnV8oGCkk4LwJ9pt2Jv3UIorNsjXyL0V5fGw7uZnilF2eSdu6LgQKBMWPOtBF0TNML3lg==", + "license": "MIT", + "dependencies": { + "@pixi/math": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/extract": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/extract/-/extract-5.3.12.tgz", + "integrity": "sha512-PRs9sKeZT+eYSD8wGUqSjHhIRrfvnLU65IIJYlmgTxYo9U4rwzykt74v09ggMj/GFUpjsILISA5VIXM1TV79PQ==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/filter-alpha": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/filter-alpha/-/filter-alpha-5.3.12.tgz", + "integrity": "sha512-/VG+ojZZwStLfiYVKcX4XsXNiPZpv40ZgiDL6igZOMqUsWn7n7dhIgytmbx6uTUWfxIPlOQH3bJGEyAHVEgzZA==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12" + } + }, + "node_modules/@pixi/filter-blur": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/filter-blur/-/filter-blur-5.3.12.tgz", + "integrity": "sha512-8zuOmztmuXCl1pXQpycKTS8HmXPtkmMe6xM93Q1gT7CRLzyS97H3pQAh4YuaGOrJslOKBNDrGVzLVY95fxjcTQ==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/settings": "5.3.12" + } + }, + "node_modules/@pixi/filter-color-matrix": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/filter-color-matrix/-/filter-color-matrix-5.3.12.tgz", + "integrity": "sha512-CblKOry/TvFm7L7iangxYtvQgO3a9n5MsmxDUue68DWZa/iI4r/3TSnsvA+Iijr590e9GsWxy3mj9P4HBMOGTA==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12" + } + }, + "node_modules/@pixi/filter-displacement": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/filter-displacement/-/filter-displacement-5.3.12.tgz", + "integrity": "sha512-D/LpJxnGi85wHB6VeBpw0FQAN0mzHHUYNxCADwUhknY+SKfP5RhaYOlk79zqOuakBfQTzL3lPgMNH2EC85EJPw==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/math": "5.3.12" + } + }, + "node_modules/@pixi/filter-fxaa": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/filter-fxaa/-/filter-fxaa-5.3.12.tgz", + "integrity": "sha512-EI+foorDnYUAy7VF3fzi635u/dyf5EHZOFovGEDrHm/ZTmEJ1i6RolwexCN94vf6HGfaDrIgNmqFcKWtbIvJFA==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12" + } + }, + "node_modules/@pixi/filter-noise": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/filter-noise/-/filter-noise-5.3.12.tgz", + "integrity": "sha512-9KWmlM2zRryY6o0bfNOHAckdCk8X7g9XWZbmEIXZZs7Jr90C1+RhDreqNs8OrMukmNo2cW9hMrshHgJ9aA1ftQ==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12" + } + }, + "node_modules/@pixi/graphics": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/graphics/-/graphics-5.3.12.tgz", + "integrity": "sha512-uBmFvq15rX0f459/4F2EnR2UhCgfwMWVJDB1L3OnCqQePE/z3ju4mfWEwOT+I7gGejWlGNE6YLdEMVNw/3zb6w==", + "license": "MIT", + "dependencies": { + "@pixi/constants": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/sprite": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/interaction": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/interaction/-/interaction-5.3.12.tgz", + "integrity": "sha512-Ks7vHDfDI58r1TzKHabnQXcXzFbUu2Sb4eQ3/jnzI/xGB5Z8Q0kS7RwJtFOWNZ67HHQdoHFkQIozTUXVXHs3oA==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/ticker": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/loaders": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/loaders/-/loaders-5.3.12.tgz", + "integrity": "sha512-M56m1GKpCChFqSic9xrdtQOXFqwYMvGzDXNpsKIsQbkHooaJhUR5UxSPaNiGC4qWv0TO9w8ANouxeX2v6js4eg==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/utils": "5.3.12", + "resource-loader": "^3.0.1" + } + }, + "node_modules/@pixi/math": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/math/-/math-5.3.12.tgz", + "integrity": "sha512-VMccUVKSRlLFTGQu6Z450q/W6LVibaFWEo2eSZZfxz+hwjlYiqRPx4heG++4Y6tGskZK7W8l8h+2ixjmo65FCg==", + "license": "MIT" + }, + "node_modules/@pixi/mesh": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/mesh/-/mesh-5.3.12.tgz", + "integrity": "sha512-8ZiGZsZQBWoP1p8t9bSl/AfERb5l3QlwnY9zYVMDydF/UWfN1gKcYO4lKvaXw/HnLi4ZjE+OHoZVmePss9zzaw==", + "license": "MIT", + "dependencies": { + "@pixi/constants": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/mesh-extras": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/mesh-extras/-/mesh-extras-5.3.12.tgz", + "integrity": "sha512-tEBEEIh96aSGJ/KObdtlNcSzVfgrl9fBhvdUDOHepSyVG+SkmX4LMqP3DkGl6iUBDiq9FBRFaRgbxEd8G2U7yw==", + "license": "MIT", + "dependencies": { + "@pixi/constants": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/mesh": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/mixin-cache-as-bitmap": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-5.3.12.tgz", + "integrity": "sha512-hPiu8jCQJctN3OVJDgh7jqdtRgyB3qH1BWLM742MOZLjYnbOSamnqmI8snG+tba5yj/WfdjKB+8v0WNwEXlH6w==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/sprite": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/mixin-get-child-by-name": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-5.3.12.tgz", + "integrity": "sha512-VQv0GMNmfyBfug9pnvN5s/ZMKJ/AXvg+4RULTpwHFtAwlCdZu9IeNb4eviSSAwtOeBAtqk5c0MQSsdOUWOeIkA==", + "license": "MIT", + "dependencies": { + "@pixi/display": "5.3.12" + } + }, + "node_modules/@pixi/mixin-get-global-position": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/mixin-get-global-position/-/mixin-get-global-position-5.3.12.tgz", + "integrity": "sha512-qxsfCC9BsKSjBlMH1Su/AVwsrzY8NHfcut5GkVvm2wa9+ypxFwU5fVsmk6+4a9G7af3iqmOlc9YDymAvbi+e8g==", + "license": "MIT", + "dependencies": { + "@pixi/display": "5.3.12", + "@pixi/math": "5.3.12" + } + }, + "node_modules/@pixi/particles": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/particles/-/particles-5.3.12.tgz", + "integrity": "sha512-SV/gOJBFa4jpsEM90f1bz5EuMMiNAz81mu+lhiUxdQQjZ8y/S4TiK7OAiyc+hUtp97JbJ//6u+4ynGwbhV+WDA==", + "license": "MIT", + "dependencies": { + "@pixi/constants": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/polyfill": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/polyfill/-/polyfill-5.3.12.tgz", + "integrity": "sha512-qkm8TBIb6m7FmE/Cd/yVagONDlVF5/cWFSSnk4pWA/vt/HLNrXgY9Tx0IXAk6NNK/xc5deGcLPc4iw+DlEhsQw==", + "license": "MIT", + "dependencies": { + "es6-promise-polyfill": "^1.2.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@pixi/prepare": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/prepare/-/prepare-5.3.12.tgz", + "integrity": "sha512-loZhLzV4riet9MU72WpWIYF6LgbRM78S4soeZOr5SzL1/U5mBneOOmfStaui7dN2GKQKp5GLygDF4dH3FPalnA==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/graphics": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/text": "5.3.12", + "@pixi/ticker": "5.3.12" + } + }, + "node_modules/@pixi/runner": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/runner/-/runner-5.3.12.tgz", + "integrity": "sha512-I5mXx4BiP8Bx5CFIXy3XV3ABYFXbIWaY6FxWsNFkySn0KUhizN7SarPdhFGs//hJuC54EH2FsKKNa98Lfc2nCQ==", + "license": "MIT" + }, + "node_modules/@pixi/settings": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/settings/-/settings-5.3.12.tgz", + "integrity": "sha512-tLAa8tpDGllgj88NMUQn2Obn9MFJfHNF/CKs8aBhfeZGU4yL4PZDtlI+tqaB1ITGl3xxyHmJK+qfmv5lJn+zyA==", + "license": "MIT", + "dependencies": { + "ismobilejs": "^1.1.0" + } + }, + "node_modules/@pixi/sprite": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/sprite/-/sprite-5.3.12.tgz", + "integrity": "sha512-vticet92RFZ3nDZ6/VDwZ7RANO0jzyXOF/5RuJf0yNVJgBoH4cNix520FfsBWE2ormD+z5t1KEmFeW4e35z2kw==", + "license": "MIT", + "dependencies": { + "@pixi/constants": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/sprite-animated": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/sprite-animated/-/sprite-animated-5.3.12.tgz", + "integrity": "sha512-WkGdGRfqboXFzMZ/SM6pCVukYmG2E2IlpcFz7aEeWvKL2Icm4YtaCBpHHDU07vvA6fP6JrstlCx1RyTENtOeGA==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/sprite": "5.3.12", + "@pixi/ticker": "5.3.12" + } + }, + "node_modules/@pixi/sprite-tiling": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/sprite-tiling/-/sprite-tiling-5.3.12.tgz", + "integrity": "sha512-5/gtNT46jIo7M69sixqkta1aXVhl4NTwksD9wzqjdZkQG8XPpKmHtXamROY2Fw3R+m+KGgyK8ywAf78tPvxPwg==", + "license": "MIT", + "dependencies": { + "@pixi/constants": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/sprite": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/spritesheet": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/spritesheet/-/spritesheet-5.3.12.tgz", + "integrity": "sha512-0t5HKgLx0uWtENtkW0zVpqvmfoxqMcRAYB7Nwk2lkgZMBPCOFtFF/4Kdp9Sam5X0EBMRGkmIelW3fD6pniSvCw==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/loaders": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/text": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/text/-/text-5.3.12.tgz", + "integrity": "sha512-tvrDVetwVjq1PVDR6jq4umN/Mv/EPHioEOHhyep63yvFIBFv75mDTg2Ye0CPzkmjqwXXvAY+hHpNwuOXTB40xw==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/sprite": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/text-bitmap": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/text-bitmap/-/text-bitmap-5.3.12.tgz", + "integrity": "sha512-tiorA3XdriJKJtUhMDcKX1umE3hGbaNJ/y0ZLuQ0lCvoTLrN9674HtveutoR9KkXWguDHCSk2cY+y3mNAvjPHA==", + "license": "MIT", + "dependencies": { + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/loaders": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/mesh": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/text": "5.3.12", + "@pixi/utils": "5.3.12" + } + }, + "node_modules/@pixi/ticker": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/ticker/-/ticker-5.3.12.tgz", + "integrity": "sha512-YNYUj94XgogipYhPOjbdFBIsy7+U6KmolvK+Av1G88GDac5SDoALb1Nt6s23fd8HIz6b4YnabHOdXGz3zPir1Q==", + "license": "MIT", + "dependencies": { + "@pixi/settings": "5.3.12" + } + }, + "node_modules/@pixi/utils": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/@pixi/utils/-/utils-5.3.12.tgz", + "integrity": "sha512-PU/L852YjVbTy/6fDKQtYji6Vqcwi5FZNIjK6JXKuDPF411QfJK3QBaEqJTrexzHlc9Odr0tYECjwtXkCUR02g==", + "license": "MIT", + "dependencies": { + "@pixi/constants": "5.3.12", + "@pixi/settings": "5.3.12", + "earcut": "^2.1.5", + "eventemitter3": "^3.1.0", + "url": "^0.11.0" + } + }, + "node_modules/@pixi/utils/node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", + "license": "ISC" + }, + "node_modules/@pixi/utils/node_modules/eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "license": "MIT" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmmirror.com/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz", + "integrity": "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmmirror.com/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.3.1", + "resolved": "https://registry.npmmirror.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.12.0", + "resolved": "https://registry.npmmirror.com/@rushstack/eslint-patch/-/eslint-patch-1.12.0.tgz", + "integrity": "sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/node-core-library": { + "version": "5.17.0", + "resolved": "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-5.17.0.tgz", + "integrity": "sha512-24vt1GbHN6kyIglRMTVpyEiNRRRJK8uZHc1XoGAhmnTDKnrWet8OmOpImMswJIe6gM78eV8cMg1HXwuUHkSSgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "~8.13.0", + "ajv-draft-04": "~1.0.0", + "ajv-formats": "~3.0.1", + "fs-extra": "~11.3.0", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@rushstack/problem-matcher": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/@rushstack/problem-matcher/-/problem-matcher-0.1.1.tgz", + "integrity": "sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/rig-package": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/@rushstack/rig-package/-/rig-package-0.6.0.tgz", + "integrity": "sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "node_modules/@rushstack/terminal": { + "version": "0.19.1", + "resolved": "https://registry.npmmirror.com/@rushstack/terminal/-/terminal-0.19.1.tgz", + "integrity": "sha512-jsBuSad67IDVMO2yp0hDfs0OdE4z3mDIjIL2pclDT3aEJboeZXE85e1HjuD0F6JoW3XgHvDwoX+WOV+AVTDQeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/node-core-library": "5.17.0", + "@rushstack/problem-matcher": "0.1.1", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/terminal/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-5.1.1.tgz", + "integrity": "sha512-HPzFsUcr+wZ3oQI08Ec/E6cuiAVHKzrXZGHhwiwIGygAFiqN5QzX+ff30n70NU2WyE26CykgMwBZZSSyHCJrzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/terminal": "0.19.1", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" + } + }, + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@rushstack/ts-command-line/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@serialport/binding-mock": { + "version": "10.2.2", + "resolved": "https://registry.npmmirror.com/@serialport/binding-mock/-/binding-mock-10.2.2.tgz", + "integrity": "sha512-HAFzGhk9OuFMpuor7aT5G1ChPgn5qSsklTFOTUX72Rl6p0xwcSVsRtG/xaGp6bxpN7fI9D/S8THLBWbBgS6ldw==", + "license": "MIT", + "dependencies": { + "@serialport/bindings-interface": "^1.2.1", + "debug": "^4.3.3" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@serialport/bindings-cpp": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/bindings-cpp/-/bindings-cpp-13.0.0.tgz", + "integrity": "sha512-r25o4Bk/vaO1LyUfY/ulR6hCg/aWiN6Wo2ljVlb4Pj5bqWGcSRC4Vse4a9AcapuAu/FeBzHCbKMvRQeCuKjzIQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@serialport/bindings-interface": "1.2.2", + "@serialport/parser-readline": "12.0.0", + "debug": "4.4.0", + "node-addon-api": "8.3.0", + "node-gyp-build": "4.8.4" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-delimiter/-/parser-delimiter-12.0.0.tgz", + "integrity": "sha512-gu26tVt5lQoybhorLTPsH2j2LnX3AOP2x/34+DUSTNaUTzu2fBXw+isVjQJpUBFWu6aeQRZw5bJol5X9Gxjblw==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-readline/-/parser-readline-12.0.0.tgz", + "integrity": "sha512-O7cywCWC8PiOMvo/gglEBfAkLjp/SENEML46BXDykfKP5mTPM46XMaX1L0waWU6DXJpBgjaL7+yX6VriVPbN4w==", + "license": "MIT", + "dependencies": { + "@serialport/parser-delimiter": "12.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/node-addon-api": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-8.3.0.tgz", + "integrity": "sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg==", + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/@serialport/bindings-interface": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@serialport/bindings-interface/-/bindings-interface-1.2.2.tgz", + "integrity": "sha512-CJaUd5bLvtM9c5dmO9rPBHPXTa9R2UwpkJ0wdh9JCYcbrPWsKz+ErvR0hBLeo7NPeiFdjFO4sonRljiw4d2XiA==", + "license": "MIT", + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/@serialport/parser-byte-length": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-byte-length/-/parser-byte-length-13.0.0.tgz", + "integrity": "sha512-32yvqeTAqJzAEtX5zCrN1Mej56GJ5h/cVFsCDPbF9S1ZSC9FWjOqNAgtByseHfFTSTs/4ZBQZZcZBpolt8sUng==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-cctalk": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-cctalk/-/parser-cctalk-13.0.0.tgz", + "integrity": "sha512-RErAe57g9gvnlieVYGIn1xymb1bzNXb2QtUQd14FpmbQQYlcrmuRnJwKa1BgTCujoCkhtaTtgHlbBWOxm8U2uA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-delimiter": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-delimiter/-/parser-delimiter-13.0.0.tgz", + "integrity": "sha512-Qqyb0FX1avs3XabQqNaZSivyVbl/yl0jywImp7ePvfZKLwx7jBZjvL+Hawt9wIG6tfq6zbFM24vzCCK7REMUig==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-inter-byte-timeout": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-13.0.0.tgz", + "integrity": "sha512-a0w0WecTW7bD2YHWrpTz1uyiWA2fDNym0kjmPeNSwZ2XCP+JbirZt31l43m2ey6qXItTYVuQBthm75sPVeHnGA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-packet-length": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-packet-length/-/parser-packet-length-13.0.0.tgz", + "integrity": "sha512-60ZDDIqYRi0Xs2SPZUo4Jr5LLIjtb+rvzPKMJCohrO6tAqSDponcNpcB1O4W21mKTxYjqInSz+eMrtk0LLfZIg==", + "license": "MIT", + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@serialport/parser-readline": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-readline/-/parser-readline-13.0.0.tgz", + "integrity": "sha512-dov3zYoyf0dt1Sudd1q42VVYQ4WlliF0MYvAMA3MOyiU1IeG4hl0J6buBA2w4gl3DOCC05tGgLDN/3yIL81gsA==", + "license": "MIT", + "dependencies": { + "@serialport/parser-delimiter": "13.0.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-ready": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-ready/-/parser-ready-13.0.0.tgz", + "integrity": "sha512-JNUQA+y2Rfs4bU+cGYNqOPnNMAcayhhW+XJZihSLQXOHcZsFnOa2F9YtMg9VXRWIcnHldHYtisp62Etjlw24bw==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-regex": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-regex/-/parser-regex-13.0.0.tgz", + "integrity": "sha512-m7HpIf56G5XcuDdA3DB34Z0pJiwxNRakThEHjSa4mG05OnWYv0IG8l2oUyYfuGMowQWaVnQ+8r+brlPxGVH+eA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-slip-encoder": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-slip-encoder/-/parser-slip-encoder-13.0.0.tgz", + "integrity": "sha512-fUHZEExm6izJ7rg0A1yjXwu4sOzeBkPAjDZPfb+XQoqgtKAk+s+HfICiYn7N2QU9gyaeCO8VKgWwi+b/DowYOg==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-spacepacket": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/parser-spacepacket/-/parser-spacepacket-13.0.0.tgz", + "integrity": "sha512-DoXJ3mFYmyD8X/8931agJvrBPxqTaYDsPoly9/cwQSeh/q4EjQND9ySXBxpWz5WcpyCU4jOuusqCSAPsbB30Eg==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/stream": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/@serialport/stream/-/stream-13.0.0.tgz", + "integrity": "sha512-F7xLJKsjGo2WuEWMSEO1SimRcOA+WtWICsY13r0ahx8s2SecPQH06338g28OT7cW7uRXI7oEQAk62qh5gHJW3g==", + "license": "MIT", + "dependencies": { + "@serialport/bindings-interface": "1.2.2", + "debug": "4.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/stream/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@shikijs/core": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/core/-/core-3.23.0.tgz", + "integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/core/node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/engine-javascript/-/engine-javascript-3.23.0.tgz", + "integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.4" + } + }, + "node_modules/@shikijs/engine-javascript/node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.2", + "resolved": "https://registry.npmmirror.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/langs/node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/themes/node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/transformers": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/transformers/-/transformers-3.23.0.tgz", + "integrity": "sha512-F9msZVxdF+krQNSdQ4V+Ja5QemeAoTQ2jxt7nJCwhDsdF1JWS3KxIQXA3lQbyKwS3J61oHRUSv4jYWv3CkaKTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.23.0", + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/transformers/node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/types": { + "version": "1.29.2", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmmirror.com/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.27.0", + "resolved": "https://registry.npmmirror.com/@ts-morph/common/-/common-0.27.0.tgz", + "integrity": "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.3", + "minimatch": "^10.0.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/adm-zip": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/@types/adm-zip/-/adm-zip-0.5.7.tgz", + "integrity": "sha512-DNEs/QvmyRLurdQPChqq0Md4zGvPwHerAJYWk9l2jCbD1VPpnzRJorOdiq4zsw09NFbYnhfsoEhWtxIzXpn2yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmmirror.com/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/async": { + "version": "3.2.25", + "resolved": "https://registry.npmmirror.com/@types/async/-/async-3.2.25.tgz", + "integrity": "sha512-O6Th/DI18XjrL9TX8LO9F/g26qAz5vynmQqlXt/qLGrskvzCKXKc5/tATz3G2N6lM8eOf3M8/StB14FncAmocg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmmirror.com/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmmirror.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmmirror.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmmirror.com/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmmirror.com/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmmirror.com/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmmirror.com/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmmirror.com/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.18.1", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.18.1.tgz", + "integrity": "sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/path-browserify": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@types/path-browserify/-/path-browserify-1.0.3.tgz", + "integrity": "sha512-ZmHivEbNCBtAfcrFeBCiTjdIc2dey0l7oCGNGpSuRTy8jP6UVND7oUowlvDujBy8r2Hoa8bfFUOCiPWfmtkfxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmmirror.com/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/validator": { + "version": "13.15.10", + "resolved": "https://registry.npmmirror.com/@types/validator/-/validator-13.15.10.tgz", + "integrity": "sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==", + "license": "MIT" + }, + "node_modules/@types/verror": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.11.tgz", + "integrity": "sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmmirror.com/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript/native-preview": { + "version": "7.0.0-dev.20260124.1", + "resolved": "https://registry.npmmirror.com/@typescript/native-preview/-/native-preview-7.0.0-dev.20260124.1.tgz", + "integrity": "sha512-VRIKr9caNPE8zZqQKyPaRB+3HZQVy5AECW2B8GMRqp2LQvE5eDKXsilXAcLc0LaaHDwXIKxMlvIVC1sWkJOYhw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsgo": "bin/tsgo.js" + }, + "optionalDependencies": { + "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260124.1", + "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260124.1", + "@typescript/native-preview-linux-arm": "7.0.0-dev.20260124.1", + "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260124.1", + "@typescript/native-preview-linux-x64": "7.0.0-dev.20260124.1", + "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260124.1", + "@typescript/native-preview-win32-x64": "7.0.0-dev.20260124.1" + } + }, + "node_modules/@typescript/native-preview-darwin-arm64": { + "version": "7.0.0-dev.20260124.1", + "resolved": "https://registry.npmmirror.com/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260124.1.tgz", + "integrity": "sha512-hFA0vQyyrmTwRLfZnC03QtCCwg/6kyM5qfOjEoIqKlAi7TllP4eLFSJz38X9fh/3Geh0krkZHeIh6h6QP0Jjfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@typescript/native-preview-darwin-x64": { + "version": "7.0.0-dev.20260124.1", + "resolved": "https://registry.npmmirror.com/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260124.1.tgz", + "integrity": "sha512-WvhTJ0YucAQpTQwy54tj8c8rzsPFXJeXAk04vYQSBBq7gv3k8CoLuVzghAYG2zGzAFEHA9FW/rT9NACqNJ8Iww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@typescript/native-preview-linux-arm": { + "version": "7.0.0-dev.20260124.1", + "resolved": "https://registry.npmmirror.com/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260124.1.tgz", + "integrity": "sha512-fJGwwQYldfeSO/rzXJMgRR+YhfBdGZgQN+n3vBX5/lCUWS1dtXI/8yWpBs/mc0UtYm0w2oY912eG4Xd0kJMElw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@typescript/native-preview-linux-arm64": { + "version": "7.0.0-dev.20260124.1", + "resolved": "https://registry.npmmirror.com/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260124.1.tgz", + "integrity": "sha512-YjhWXiQdCOMbWhZgOy4eYs5l6i6lKxtI8rsmzLiGyM7sgD7Uzq8hh9z1DCSpGwvDR7Bky9sjkjGHJ2r+KGaU2Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@typescript/native-preview-linux-x64": { + "version": "7.0.0-dev.20260124.1", + "resolved": "https://registry.npmmirror.com/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260124.1.tgz", + "integrity": "sha512-ReEuzIqgwydFCsRUmlPERfgt38m7Z+Lyw3MddOCT6mJFArZ4J+XxOFlPL3PLI1pSXJHeHc3oTSQGToODLR1bnw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@typescript/native-preview-win32-arm64": { + "version": "7.0.0-dev.20260124.1", + "resolved": "https://registry.npmmirror.com/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260124.1.tgz", + "integrity": "sha512-4jwjoKlsapGj0wFTxI/d9TLBK+kVHwn+qSdPIcuE2t8OsjpEXSvjvjHMX64ysyf6VGVKd9m/qJs8708qo4RYmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@typescript/native-preview-win32-x64": { + "version": "7.0.0-dev.20260124.1", + "resolved": "https://registry.npmmirror.com/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260124.1.tgz", + "integrity": "sha512-dtUucoRDMi0bUbM2GkSF3qMbNRwE+K9udc6lTUj6+akXLqatuXm7PHVcqjrdXCyarc3CSNJE5Uq6GDHWzjDxyw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz", + "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3", + "@vue/babel-plugin-jsx": "^1.1.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.15", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.15.tgz", + "integrity": "sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.15" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.15", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.15.tgz", + "integrity": "sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.15", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.15.tgz", + "integrity": "sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.15", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.5.0.tgz", + "integrity": "sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==", + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.5.0.tgz", + "integrity": "sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.2", + "@vue/babel-helper-vue-transform-on": "1.5.0", + "@vue/babel-plugin-resolve-type": "1.5.0", + "@vue/shared": "^3.5.18" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-jsx/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.5.0.tgz", + "integrity": "sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/parser": "^7.28.0", + "@vue/compiler-sfc": "^3.5.18" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.29.tgz", + "integrity": "sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@vue/shared": "3.5.29", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-core/node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@vue/compiler-core/node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.29.tgz", + "integrity": "sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.29", + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.29.tgz", + "integrity": "sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@vue/compiler-core": "3.5.29", + "@vue/compiler-dom": "3.5.29", + "@vue/compiler-ssr": "3.5.29", + "@vue/shared": "3.5.29", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.29.tgz", + "integrity": "sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.29", + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-7.7.7.tgz", + "integrity": "sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==", + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.7" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz", + "integrity": "sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.7", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz", + "integrity": "sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==", + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/@vue/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.0" + }, + "peerDependencies": { + "eslint": ">= 8.0.0", + "prettier": ">= 3.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz", + "integrity": "sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "vue-eslint-parser": "^9.3.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core": { + "version": "2.2.12", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.12.tgz", + "integrity": "sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.15", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^1.0.3", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.29.tgz", + "integrity": "sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.29.tgz", + "integrity": "sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.29", + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.29.tgz", + "integrity": "sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.29", + "@vue/runtime-core": "3.5.29", + "@vue/shared": "3.5.29", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.29.tgz", + "integrity": "sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.29", + "@vue/shared": "3.5.29" + }, + "peerDependencies": { + "vue": "3.5.29" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.29.tgz", + "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==", + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "10.11.1", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.11.1.tgz", + "integrity": "sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.11.1", + "@vueuse/shared": "10.11.1", + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations": { + "version": "14.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/integrations/-/integrations-14.2.1.tgz", + "integrity": "sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vueuse/core": "14.2.1", + "@vueuse/shared": "14.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7 || ^8", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7 || ^8", + "vue": "^3.5.0" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations/node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueuse/integrations/node_modules/@vueuse/core": { + "version": "14.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-14.2.1.tgz", + "integrity": "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "14.2.1", + "@vueuse/shared": "14.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/integrations/node_modules/@vueuse/metadata": { + "version": "14.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-14.2.1.tgz", + "integrity": "sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/integrations/node_modules/@vueuse/shared": { + "version": "14.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-14.2.1.tgz", + "integrity": "sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.11.1", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.11.1.tgz", + "integrity": "sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.11.1", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.11.1.tgz", + "integrity": "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==", + "license": "MIT", + "dependencies": { + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vxe-ui/core": { + "version": "4.2.12", + "resolved": "https://registry.npmmirror.com/@vxe-ui/core/-/core-4.2.12.tgz", + "integrity": "sha512-g6gNDykKrKLzxsDDFDYTD/6tWrV9AfSaU7WIlKCO67BSXgKDMaEVTsH7ZZ7fI5qkOO9DH1vo07kbacyBNx7gSQ==", + "license": "MIT", + "dependencies": { + "dom-zindex": "^1.0.6", + "xe-utils": "^3.7.9" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@vxe-ui/plugin-render-element": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/@vxe-ui/plugin-render-element/-/plugin-render-element-4.1.0.tgz", + "integrity": "sha512-9ZihmHfH0blqi17TkqaDmdrvvUr2tiGeZwslHApyR25wOM3OUCyCb6zZq0xrXFfeW/YAzTh2QUQfDhgYNxAKCA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz", + "integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@xterm/addon-canvas": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/@xterm/addon-canvas/-/addon-canvas-0.7.0.tgz", + "integrity": "sha512-LF5LYcfvefJuJ7QotNRdRSPc9YASAVDeoT5uyXS/nZshZXjYplGXRECBGiznwvhNL2I8bq1Lf5MzRwstsYQ2Iw==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-fit": { + "version": "0.10.0", + "resolved": "https://registry.npmmirror.com/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", + "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/xterm": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/@xterm/xterm/-/xterm-5.5.0.tgz", + "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==", + "license": "MIT" + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/7zip-bin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", + "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-4.0.0.tgz", + "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmmirror.com/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "license": "MIT", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.3.tgz", + "integrity": "sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ali-oss": { + "version": "6.23.0", + "resolved": "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.23.0.tgz", + "integrity": "sha512-FipRmyd16Pr/tEey/YaaQ/24Pc3HEpLM9S1DRakEuXlSLXNIJnu1oJtHM53eVYpvW3dXapSjrip3xylZUTIZVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "address": "^1.2.2", + "agentkeepalive": "^3.4.1", + "bowser": "^1.6.0", + "copy-to": "^2.0.1", + "dateformat": "^2.0.0", + "debug": "^4.3.4", + "destroy": "^1.0.4", + "end-or-error": "^1.0.1", + "get-ready": "^1.0.0", + "humanize-ms": "^1.2.0", + "is-type-of": "^1.4.0", + "js-base64": "^2.5.2", + "jstoxml": "^2.0.0", + "lodash": "^4.17.21", + "merge-descriptors": "^1.0.1", + "mime": "^2.4.5", + "platform": "^1.3.1", + "pump": "^3.0.0", + "qs": "^6.4.0", + "sdk-base": "^2.0.1", + "stream-http": "2.8.2", + "stream-wormhole": "^1.0.4", + "urllib": "^2.44.0", + "utility": "^1.18.0", + "xml2js": "^0.6.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/alien-signals": { + "version": "1.0.13", + "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-1.0.13.tgz", + "integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/animate.css": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/animate.css/-/animate.css-4.1.1.tgz", + "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-7.1.0.tgz", + "integrity": "sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/app-builder-bin": { + "version": "5.0.0-alpha.12", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-5.0.0-alpha.12.tgz", + "integrity": "sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/app-builder-lib": { + "version": "26.8.1", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-26.8.1.tgz", + "integrity": "sha512-p0Im/Dx5C4tmz8QEE1Yn4MkuPC8PrnlRneMhWJj7BBXQfNTJUshM/bp3lusdEsDbvvfJZpXWnYesgSLvwtM2Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/asar": "3.4.1", + "@electron/fuses": "^1.8.0", + "@electron/get": "^3.0.0", + "@electron/notarize": "2.5.0", + "@electron/osx-sign": "1.3.3", + "@electron/rebuild": "^4.0.3", + "@electron/universal": "2.0.3", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "async-exit-hook": "^2.0.1", + "builder-util": "26.8.1", + "builder-util-runtime": "9.5.1", + "chromium-pickle-js": "^0.2.0", + "ci-info": "4.3.1", + "debug": "^4.3.4", + "dotenv": "^16.4.5", + "dotenv-expand": "^11.0.6", + "ejs": "^3.1.8", + "electron-publish": "26.8.1", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "isbinaryfile": "^5.0.0", + "jiti": "^2.4.2", + "js-yaml": "^4.1.0", + "json5": "^2.2.3", + "lazy-val": "^1.0.5", + "minimatch": "^10.0.3", + "plist": "3.1.0", + "proper-lockfile": "^4.1.2", + "resedit": "^1.7.0", + "semver": "~7.7.3", + "tar": "^7.5.7", + "temp-file": "^3.4.0", + "tiny-async-pool": "1.3.0", + "which": "^5.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "dmg-builder": "26.8.1", + "electron-builder-squirrel-windows": "26.8.1" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-3.1.0.tgz", + "integrity": "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/get/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/app-builder-lib/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/app-builder-lib/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/app-builder-lib/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/app-builder-lib/node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/app-builder-lib/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/app-builder-lib/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/app-builder-lib/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "license": "MIT", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atomically": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/atomically/-/atomically-2.1.1.tgz", + "integrity": "sha512-P4w9o2dqARji6P7MHprklbfiArZAWvo07yW7qs3pdljb3BWr12FIB7W+p0zJiuiVsUpRO0iZn1kFFcpPegg0tQ==", + "license": "MIT", + "dependencies": { + "stubborn-fs": "^2.0.0", + "when-exit": "^2.1.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.12.0", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.12.0.tgz", + "integrity": "sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==", + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "license": "MIT", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/birpc": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz", + "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "optional": true + }, + "node_modules/bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dev": true, + "license": "ISC", + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/browserify-sign/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/builder-util": { + "version": "26.8.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-26.8.1.tgz", + "integrity": "sha512-pm1lTYbGyc90DHgCDO7eo8Rl4EqKLciayNbZqGziqnH9jrlKe8ZANGdityLZU+pJh16dfzjAx2xQq9McuIPEtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/debug": "^4.1.6", + "7zip-bin": "~5.2.0", + "app-builder-bin": "5.0.0-alpha.12", + "builder-util-runtime": "9.5.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.6", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "js-yaml": "^4.1.0", + "sanitize-filename": "^1.6.3", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0", + "tiny-async-pool": "1.3.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.5.1.tgz", + "integrity": "sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/builder-util/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmmirror.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "license": "MIT/X11", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chance": { + "version": "1.1.13", + "resolved": "https://registry.npmmirror.com/chance/-/chance-1.1.13.tgz", + "integrity": "sha512-V6lQCljcLznE7tUYUM9EOAnnKXbctE6j/rdQkYOHIWbfGQbrzTsAXNW9CdU5XCo4ArXQCj/rb6HgxPlmGJcaUg==", + "license": "MIT" + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/chevrotain": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-12.0.0.tgz", + "integrity": "sha512-csJvb+6kEiQaqo1woTdSAuOWdN0WTLIydkKrBnS+V5gZz0oqBrp4kQ35519QgK6TpBThiG3V1vNSHlIkv4AglQ==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "12.0.0", + "@chevrotain/gast": "12.0.0", + "@chevrotain/regexp-to-ast": "12.0.0", + "@chevrotain/types": "12.0.0", + "@chevrotain/utils": "12.0.0" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.4.1.tgz", + "integrity": "sha512-PvVJm3oGqrveUVW2Vt/eZGeiAIsJszYweUcYwcskg9e+IubNYKKD+rHHem7A6XVO22eDAL+inxNIGAzZ/VIWlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^12.0.0" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cipher-base": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/class-validator": { + "version": "0.14.3", + "resolved": "https://registry.npmmirror.com/class-validator/-/class-validator-0.14.3.tgz", + "integrity": "sha512-rXXekcjofVN1LTOSw+u4u9WXVEUvNBVjORW154q/IdmYWy1nMbOU9aNtZB0t8m+FJQ9q91jlr2f9CwwUFdFMRA==", + "license": "MIT", + "dependencies": { + "@types/validator": "^13.15.3", + "libphonenumber-js": "^1.11.1", + "validator": "^13.15.20" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmmirror.com/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "license": "MIT" + }, + "node_modules/codemirror": { + "version": "6.65.7", + "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.65.7.tgz", + "integrity": "sha512-HcfnUFJwI2FvH73YWVbbMh7ObWxZiHIycEhv9ZEXy6e8ZKDjtZKbbYFUtsLN46HFXPvU5V2Uvc2d55Z//oFW5A==", + "deprecated": "This is an accidentally mis-tagged instance of 5.65.7", + "license": "MIT" + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "license": "MIT", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "dev": true, + "license": "MIT" + }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/conf": { + "version": "15.1.0", + "resolved": "https://registry.npmmirror.com/conf/-/conf-15.1.0.tgz", + "integrity": "sha512-Uy5YN9KEu0WWDaZAVJ5FAmZoaJt9rdK6kH+utItPyGsCqCgaTKkrmZx3zoE0/3q6S3bcp3Ihkk+ZqPxWxFK5og==", + "license": "MIT", + "dependencies": { + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "atomically": "^2.0.3", + "debounce-fn": "^6.0.0", + "dot-prop": "^10.0.0", + "env-paths": "^3.0.0", + "json-schema-typed": "^8.0.1", + "semver": "^7.7.2", + "uint8array-extras": "^1.5.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conf/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/conf/node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "dev": true, + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmmirror.com/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "dev": true, + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmmirror.com/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dev": true, + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmmirror.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmmirror.com/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmmirror.com/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmmirror.com/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmmirror.com/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "dev": true, + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz", + "integrity": "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/dayjs": { + "version": "1.11.18", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.18.tgz", + "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", + "license": "MIT" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debounce-fn": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/debounce-fn/-/debounce-fn-6.0.0.tgz", + "integrity": "sha512-rBMW+F2TXryBwB54Q0d8drNEI+TfoS9JpNTAoVpukbWEhjXQq4rySFYLaqXMFXwdv61Zb2OHtj5bviSoimqxRQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-user-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz", + "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-name": "~1.0.3" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dev": true, + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT", + "optional": true + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/digest-header": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz", + "integrity": "sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/dir-compare": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", + "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5", + "p-limit": "^3.1.0 " + } + }, + "node_modules/dir-compare/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dmg-builder": { + "version": "26.8.1", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.8.1.tgz", + "integrity": "sha512-glMJgnTreo8CFINujtAhCgN96QAqApDMZ8Vl1r8f0QT8QprvC1UCltV4CcWj20YoIyLZx6IUskaJZ0NV8fokcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "26.8.1", + "builder-util": "26.8.1", + "fs-extra": "^10.1.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/dmg-builder/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dmg-license/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/dmg-license/node_modules/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==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-zindex": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/dom-zindex/-/dom-zindex-1.0.6.tgz", + "integrity": "sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA==", + "license": "MIT" + }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/dompurify": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.1.tgz", + "integrity": "sha512-JahakDAIg1gyOm7dlgWSDjV4n7Ip2PKR55NIT6jrMfIgLFgWo81vdr1/QGqWtFNRqXP9UV71oVePtjqS2ebnPw==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/dot-prop": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-10.1.0.tgz", + "integrity": "sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==", + "license": "MIT", + "dependencies": { + "type-fest": "^5.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-prop/node_modules/type-fest": { + "version": "5.4.4", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-5.4.4.tgz", + "integrity": "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/e-virt-table": { + "version": "1.2.35", + "resolved": "https://registry.npmmirror.com/e-virt-table/-/e-virt-table-1.2.35.tgz", + "integrity": "sha512-GlxHq01i3QtJZIsrz5c6hqUNj4+0dieIwCjOsrJZMpgk5YabZg6Tl5/gWv3QHL8mqZpcbOtGoFcJuyZkU8EKeQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.6.11" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/echarts": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-6.0.0.tgz", + "integrity": "sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "2.3.0", + "zrender": "6.0.0" + } + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "license": "MIT", + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron": { + "version": "39.8.6", + "resolved": "https://registry.npmjs.org/electron/-/electron-39.8.6.tgz", + "integrity": "sha512-uWX6Jh5LmwL13VwOSKBjebI+ck+03GOwc8V2Sgbmr9pJVJ/cHfli/PkjXuRDr+hq+SLHQuT9mGHSIfScebApRA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^22.7.7", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, + "node_modules/electron-builder": { + "version": "26.8.1", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-26.8.1.tgz", + "integrity": "sha512-uWhx1r74NGpCagG0ULs/P9Nqv2nsoo+7eo4fLUOB8L8MdWltq9odW/uuLXMFCDGnPafknYLZgjNX0ZIFRzOQAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "26.8.1", + "builder-util": "26.8.1", + "builder-util-runtime": "9.5.1", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "dmg-builder": "26.8.1", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder-squirrel-windows": { + "version": "26.8.1", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-26.8.1.tgz", + "integrity": "sha512-o288fIdgPLHA76eDrFADHPoo7VyGkDCYbLV1GzndaMSAVBoZrGvM9m2IehdcVMzdAZJ2eV9bgyissQXHv5tGzA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "app-builder-lib": "26.8.1", + "builder-util": "26.8.1", + "electron-winstaller": "5.4.0" + } + }, + "node_modules/electron-log": { + "version": "5.4.3", + "resolved": "https://registry.npmmirror.com/electron-log/-/electron-log-5.4.3.tgz", + "integrity": "sha512-sOUsM3LjZdugatazSQ/XTyNcw8dfvH1SYhXWiJyfYodAAKOZdHs0txPiLDXFzOZbhXgAgshQkshH2ccq0feyLQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/electron-publish": { + "version": "26.8.1", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.8.1.tgz", + "integrity": "sha512-q+jrSTIh/Cv4eGZa7oVR+grEJo/FoLMYBAnSL5GCtqwUpr1T+VgKB/dn1pnzxIxqD8S/jP1yilT9VrwCqINR4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "26.8.1", + "builder-util-runtime": "9.5.1", + "chalk": "^4.1.2", + "form-data": "^4.0.5", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "license": "ISC" + }, + "node_modules/electron-updater": { + "version": "6.6.2", + "resolved": "https://registry.npmmirror.com/electron-updater/-/electron-updater-6.6.2.tgz", + "integrity": "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==", + "license": "MIT", + "dependencies": { + "builder-util-runtime": "9.3.1", + "fs-extra": "^10.1.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.6.3", + "tiny-typed-emitter": "^2.1.0" + } + }, + "node_modules/electron-updater/node_modules/builder-util-runtime": { + "version": "9.3.1", + "resolved": "https://registry.npmmirror.com/builder-util-runtime/-/builder-util-runtime-9.3.1.tgz", + "integrity": "sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/electron-vite": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/electron-vite/-/electron-vite-2.3.0.tgz", + "integrity": "sha512-lsN2FymgJlp4k6MrcsphGqZQ9fKRdJKasoaiwIrAewN1tapYI/KINLdfEL7n10LuF0pPSNf/IqjzZbB5VINctg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.7", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "cac": "^6.7.14", + "esbuild": "^0.21.5", + "magic-string": "^0.30.10", + "picocolors": "^1.0.1" + }, + "bin": { + "electron-vite": "bin/electron-vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@swc/core": "^1.0.0", + "vite": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + } + } + }, + "node_modules/electron-winstaller": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", + "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.21", + "temp": "^0.9.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "@electron/windows-sign": "^1.1.2" + } + }, + "node_modules/electron-winstaller/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/electron-winstaller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-winstaller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/element-plus": { + "version": "2.11.2", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.11.2.tgz", + "integrity": "sha512-sTMDXtgeqy17TUsBSH/DL3h1/5sqIOVUUgXFoVbdD8lWWYssKrDX50CEYy4k29tYJhPHKZyFSwcLJsIajr+dDA==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.13", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/element-plus/node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==", + "license": "MIT" + }, + "node_modules/element-plus/node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/element-plus/node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/element-plus/node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/element-plus/node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "license": "MIT", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/element-plus/node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", + "license": "MIT", + "dependencies": { + "batch-processor": "1.0.0" + } + }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/emittery": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/emittery/-/emittery-1.2.0.tgz", + "integrity": "sha512-KxdRyyFcS85pH3dnU8Y5yFUm2YJdaHwcBZWrfG8o89ZY9a13/f9itbN+YG3ELbBo9Pg5zvIozstmuV8bX13q6g==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/end-or-error": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz", + "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.11.14" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmmirror.com/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "license": "MIT", + "optional": true + }, + "node_modules/es6-promise-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz", + "integrity": "sha512-HHb0vydCpoclpd0ySPkRXMmBw80MRt1wM4RBJBlXkux97K7gleabZdsR0gvE1nNPM9mgOZIBTzjjXiPxf4lIqQ==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.2", + "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", + "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.33.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", + "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/exceljs": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.4.0.tgz", + "integrity": "sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==", + "license": "MIT", + "dependencies": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.10.1", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/exceljs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/exsolve": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/exsolve/-/exsolve-1.0.7.tgz", + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "optional": true + }, + "node_modules/fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "license": "MIT", + "dependencies": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "license": "MIT" + }, + "node_modules/focus-trap": { + "version": "7.8.0", + "resolved": "https://registry.npmmirror.com/focus-trap/-/focus-trap-7.8.0.tgz", + "integrity": "sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tabbable": "^6.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formstream": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/formstream/-/formstream-1.5.2.tgz", + "integrity": "sha512-NASf0lgxC1AyKNXQIrXTEYkiX99LhCEXTkiGObXAkpBui86a4u8FjH1o2bGb3PpqI3kafC+yw4zWeK6l6VHTgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "destroy": "^1.0.4", + "mime": "^2.5.2", + "node-hex": "^1.0.1", + "pause-stream": "~0.0.11" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/from2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/from2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fstream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fstream/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-ready": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz", + "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmmirror.com/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmmirror.com/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmmirror.com/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/i18next": { + "version": "25.6.2", + "resolved": "https://registry.npmmirror.com/i18next/-/i18next-25.6.2.tgz", + "integrity": "sha512-0GawNyVUw0yvJoOEBq1VHMAsqdM23XrHkMtl2gKEjviJQSLVXsrPqsoYAxBEugW5AB96I2pZkwRxyl8WZVoWdw==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.6" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/i18next-vue": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/i18next-vue/-/i18next-vue-5.3.0.tgz", + "integrity": "sha512-X5gYF1R9FadUdRyIze6p+mU4+kztIRWb1SYeoegB0eFBt/lDA++i0A235enWq5qdrRpWZIHlLV8gd/D5xakOsw==", + "license": "MIT", + "peerDependencies": { + "i18next": ">=23", + "vue": "^3.4.38" + } + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + }, + "engines": { + "node": "^8.11.2 || >=10" + } + }, + "node_modules/iconv-corefoundation/node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/immutable": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/into-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/into-stream/-/into-stream-6.0.0.tgz", + "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inversify": { + "version": "6.1.4", + "resolved": "https://registry.npmmirror.com/inversify/-/inversify-6.1.4.tgz", + "integrity": "sha512-PbxrZH/gTa1fpPEEGAjJQzK8tKMIp5gRg6EFNJlCtzUcycuNdmhv3uk5P8Itm/RIjgHJO16oQRLo9IHzQN51bA==", + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.3.3", + "@inversifyjs/core": "1.3.4" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-class-hotfix": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz", + "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-type-of": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz", + "integrity": "sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "^1.0.2", + "is-class-hotfix": "~0.0.6", + "isstream": "~0.1.2" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.7.tgz", + "integrity": "sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/ismobilejs": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ismobilejs/-/ismobilejs-1.1.1.tgz", + "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==", + "license": "MIT" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/javascript-obfuscator": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/javascript-obfuscator/-/javascript-obfuscator-5.2.0.tgz", + "integrity": "sha512-gM86E4lRbi9zayWXOe+zW2QeUQfEXknd9yqZc6wy+GC2LP3TPYwD9mjJPN24QSwoJmUO5wYJB2u3rceAwnjQsw==", + "license": "BSD-2-Clause", + "dependencies": { + "@javascript-obfuscator/escodegen": "2.3.1", + "@javascript-obfuscator/estraverse": "5.4.0", + "acorn": "8.15.0", + "assert": "2.1.0", + "chalk": "4.1.2", + "chance": "1.1.13", + "class-validator": "0.14.3", + "commander": "12.1.0", + "conf": "15.0.2", + "eslint-scope": "8.4.0", + "eslint-visitor-keys": "4.2.1", + "fast-deep-equal": "3.1.3", + "inversify": "6.1.4", + "js-string-escape": "1.0.1", + "md5": "2.3.0", + "mkdirp": "3.0.1", + "multimatch": "5.0.0", + "process": "0.11.10", + "reflect-metadata": "0.2.2", + "source-map-support": "0.5.21", + "string-template": "1.0.0", + "stringz": "2.1.0", + "tslib": "2.8.1" + }, + "bin": { + "javascript-obfuscator": "bin/javascript-obfuscator" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/javascript-obfuscator/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/javascript-obfuscator/node_modules/conf": { + "version": "15.0.2", + "resolved": "https://registry.npmmirror.com/conf/-/conf-15.0.2.tgz", + "integrity": "sha512-JBSrutapCafTrddF9dH3lc7+T2tBycGF4uPkI4Js+g4vLLEhG6RZcFi3aJd5zntdf5tQxAejJt8dihkoQ/eSJw==", + "license": "MIT", + "dependencies": { + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "atomically": "^2.0.3", + "debounce-fn": "^6.0.0", + "dot-prop": "^10.0.0", + "env-paths": "^3.0.0", + "json-schema-typed": "^8.0.1", + "semver": "^7.7.2", + "uint8array-extras": "^1.5.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/javascript-obfuscator/node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/javascript-obfuscator/node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/javascript-obfuscator/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/javascript-obfuscator/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/javascript-obfuscator/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "license": "MIT" + }, + "node_modules/jquery-ui": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/jquery-ui/-/jquery-ui-1.14.1.tgz", + "integrity": "sha512-DhzsYH8VeIvOaxwi+B/2BCsFFT5EGjShdzOcm5DssWjtcpGWIMsn66rJciDA6jBruzNiLf1q0KvwMoX1uGNvnQ==", + "license": "MIT", + "dependencies": { + "jquery": ">=1.12.0 <5.0.0" + } + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/js-beautify": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.4.tgz", + "integrity": "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==", + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.4.2", + "js-cookie": "^3.0.5", + "nopt": "^7.2.1" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-beautify/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/js-beautify/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmmirror.com/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC", + "optional": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jstoxml": { + "version": "2.2.9", + "resolved": "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz", + "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/katex": { + "version": "0.16.22", + "resolved": "https://registry.npmmirror.com/katex/-/katex-0.16.22.tgz", + "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "license": "MIT" + }, + "node_modules/langium": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.2.tgz", + "integrity": "sha512-JUshTRAfHI4/MF9dH2WupvjSXyn8JBuUEWazB8ZVJUtXutT0doDlAv1XKbZ1Pb5sMexa8FF4CFBc0iiul7gbUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@chevrotain/regexp-to-ast": "~12.0.0", + "chevrotain": "~12.0.0", + "chevrotain-allstar": "~0.4.1", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.1.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "license": "MIT" + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.12.35", + "resolved": "https://registry.npmmirror.com/libphonenumber-js/-/libphonenumber-js-1.12.35.tgz", + "integrity": "sha512-T/Cz6iLcsZdb5jDncDcUNhSAJ0VlSC9TnsqtBNdpkaAmy24/R1RhErtNWVWBrcUZKs9hSgaVsBkc7HxYnazIfw==", + "license": "MIT" + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lint-staged": { + "version": "15.5.2", + "resolved": "https://registry.npmmirror.com/lint-staged/-/lint-staged-15.5.2.tgz", + "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "license": "ISC" + }, + "node_modules/listr2": { + "version": "8.3.3", + "resolved": "https://registry.npmmirror.com/listr2/-/listr2-8.3.3.tgz", + "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", + "license": "MIT" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "license": "MIT", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "license": "MIT" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "license": "MIT" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "license": "MIT" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "license": "MIT" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "license": "MIT" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/logform": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/logform/-/logform-2.7.0.tgz", + "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", + "license": "MIT", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmmirror.com/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmmirror.com/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/marked": { + "version": "14.1.4", + "resolved": "https://registry.npmmirror.com/marked/-/marked-14.1.4.tgz", + "integrity": "sha512-vkVZ8ONmUdPnjCKc5uTRvmkRbx4EAi2OkTOXmfTDhZz3OFqMNBM1oTTWwTr4HY4uAEojhzPf+Fy8F1DWa3Sndg==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "license": "MIT", + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/mermaid": { + "version": "11.12.3", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.3.tgz", + "integrity": "sha512-wN5ZSgJQIC+CHJut9xaKWsknLxaFBwCPwPkGTSUYrTiHORWvpT8RxGk849HPnpUAQ+/9BPRqYb80jTpearrHzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.1", + "@mermaid-js/parser": "^1.0.0", + "@types/d3": "^7.4.3", + "cytoscape": "^3.29.3", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.13", + "dayjs": "^1.11.18", + "dompurify": "^3.2.5", + "katex": "^0.16.22", + "khroma": "^2.1.0", + "lodash-es": "^4.17.23", + "marked": "^16.2.1", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/mermaid/node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/mermaid/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-signals": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mini-signals/-/mini-signals-1.2.0.tgz", + "integrity": "sha512-alffqMkGCjjTSwvYMVLx+7QeJ6sTuxbXqBkP21my4iWU5+QpTQAJt3h7htA1OKm9F3BpMM0vnu72QIoiJakrLA==", + "license": "MIT" + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minisearch": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/minisearch/-/minisearch-7.2.0.tgz", + "integrity": "sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "license": "MIT", + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/multimatch/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/multimatch/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/multistream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/multistream/-/multistream-4.1.0.tgz", + "integrity": "sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "once": "^1.4.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.77.0", + "resolved": "https://registry.npmmirror.com/node-abi/-/node-abi-3.77.0.tgz", + "integrity": "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "8.5.0", + "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-8.5.0.tgz", + "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-api-version": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/node-api-version/-/node-api-version-0.2.1.tgz", + "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "12.4.0", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-12.4.0.tgz", + "integrity": "sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "graceful-fs": "^4.2.6", + "nopt": "^9.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5", + "tar": "^7.5.4", + "tinyglobby": "^0.2.12", + "undici": "^6.25.0", + "which": "^6.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/node-hex": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/node-hex/-/node-hex-1.0.1.tgz", + "integrity": "sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/node-loader": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/node-loader/-/node-loader-2.1.0.tgz", + "integrity": "sha512-OwjPkyh8+7jW8DMd/iq71uU1Sspufr/C2+c3t0p08J3CrM9ApZ4U53xuisNrDXOHyGi5OYHgtfmmh+aK9zJA6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" + }, + "node_modules/node-stdlib-browser": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz", + "integrity": "sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.12.1", + "domain-browser": "4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.4", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-stdlib-browser/node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/nopt": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-9.0.0.tgz", + "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^4.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", + "license": "BSD-3-Clause" + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "license": "MIT", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmmirror.com/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", + "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/os-name": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz", + "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", + "dev": true, + "license": "MIT", + "dependencies": { + "osx-release": "^1.0.0", + "win-release": "^1.0.0" + }, + "bin": { + "os-name": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osx-release": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz", + "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.1.0" + }, + "bin": { + "osx-release": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/package-manager-detector": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/package-manager-detector/-/package-manager-detector-1.3.0.tgz", + "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "dev": true, + "license": "ISC", + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-uri": { + "version": "1.0.16", + "resolved": "https://registry.npmmirror.com/parse-uri/-/parse-uri-1.0.16.tgz", + "integrity": "sha512-WMX9ygt2zzbtd3UlChi8S2Uj/dZa0N9QaotTkyRD7v06c50dor4qEWrM5ZvHiiaZYpXal4otRS9hynwwX0DVoA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.2.1.tgz", + "integrity": "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "license": [ + "MIT", + "Apache2" + ], + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.3.tgz", + "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "create-hash": "~1.1.3", + "create-hmac": "^1.1.7", + "ripemd160": "=2.0.1", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.11", + "to-buffer": "^1.2.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pbkdf2/node_modules/create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" + } + }, + "node_modules/pbkdf2/node_modules/hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1" + } + }, + "node_modules/pbkdf2/node_modules/ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^2.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/pe-library": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", + "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pinia": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-3.0.3.tgz", + "integrity": "sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^7.7.2" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pixi.js-legacy": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/pixi.js-legacy/-/pixi.js-legacy-5.3.12.tgz", + "integrity": "sha512-GHq2ZfQZ+9hOXObipbqbRSqPQ/xRSq5lw/1ACsDWVQex88Owq/BRZUUzyoKcym4FtztLdJwXW/zSDoqucj0JnQ==", + "license": "MIT", + "dependencies": { + "@pixi/canvas-display": "5.3.12", + "@pixi/canvas-extract": "5.3.12", + "@pixi/canvas-graphics": "5.3.12", + "@pixi/canvas-mesh": "5.3.12", + "@pixi/canvas-particles": "5.3.12", + "@pixi/canvas-prepare": "5.3.12", + "@pixi/canvas-renderer": "5.3.12", + "@pixi/canvas-sprite": "5.3.12", + "@pixi/canvas-sprite-tiling": "5.3.12", + "@pixi/canvas-text": "5.3.12", + "pixi.js": "5.3.12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + } + }, + "node_modules/pixi.js-legacy/node_modules/pixi.js": { + "version": "5.3.12", + "resolved": "https://registry.npmmirror.com/pixi.js/-/pixi.js-5.3.12.tgz", + "integrity": "sha512-XZzUhrq/m6fx3E0ESv/zXKEVR/GW82dPmbwdapIqsgAldKT2QqBYMfz1WuPf+Q9moPapywVNjjyxPvh+DNPmIg==", + "license": "MIT", + "dependencies": { + "@pixi/accessibility": "5.3.12", + "@pixi/app": "5.3.12", + "@pixi/constants": "5.3.12", + "@pixi/core": "5.3.12", + "@pixi/display": "5.3.12", + "@pixi/extract": "5.3.12", + "@pixi/filter-alpha": "5.3.12", + "@pixi/filter-blur": "5.3.12", + "@pixi/filter-color-matrix": "5.3.12", + "@pixi/filter-displacement": "5.3.12", + "@pixi/filter-fxaa": "5.3.12", + "@pixi/filter-noise": "5.3.12", + "@pixi/graphics": "5.3.12", + "@pixi/interaction": "5.3.12", + "@pixi/loaders": "5.3.12", + "@pixi/math": "5.3.12", + "@pixi/mesh": "5.3.12", + "@pixi/mesh-extras": "5.3.12", + "@pixi/mixin-cache-as-bitmap": "5.3.12", + "@pixi/mixin-get-child-by-name": "5.3.12", + "@pixi/mixin-get-global-position": "5.3.12", + "@pixi/particles": "5.3.12", + "@pixi/polyfill": "5.3.12", + "@pixi/prepare": "5.3.12", + "@pixi/runner": "5.3.12", + "@pixi/settings": "5.3.12", + "@pixi/sprite": "5.3.12", + "@pixi/sprite-animated": "5.3.12", + "@pixi/sprite-tiling": "5.3.12", + "@pixi/spritesheet": "5.3.12", + "@pixi/text": "5.3.12", + "@pixi/text-bitmap": "5.3.12", + "@pixi/ticker": "5.3.12", + "@pixi/utils": "5.3.12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + } + }, + "node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "dev": true, + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "license": "ISC" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/python-shell": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/python-shell/-/python-shell-5.0.0.tgz", + "integrity": "sha512-RUOOOjHLhgR1MIQrCtnEqz/HJ1RMZBIN+REnpSUrfft2bXqXy69fwJASVziWExfFXsR1bCY0TznnHooNsCo0/w==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmmirror.com/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-3.0.1.tgz", + "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.7.0", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-binary-file-arch": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", + "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "bin": { + "read-binary-file-arch": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resedit": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz", + "integrity": "sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pe-library": "^0.4.1" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve/node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resource-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/resource-loader/-/resource-loader-3.0.1.tgz", + "integrity": "sha512-fBuCRbEHdLCI1eglzQhUv9Rrdcmqkydr1r6uHE2cYHvRBrcLXeSmbE/qI/urFt8rPr/IGxir3BUwM5kUK8XoyA==", + "license": "MIT", + "dependencies": { + "mini-signals": "^1.2.0", + "parse-uri": "^1.0.0" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmmirror.com/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-dts": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/rollup-plugin-dts/-/rollup-plugin-dts-6.3.0.tgz", + "integrity": "sha512-d0UrqxYd8KyZ6i3M2Nx7WOMy708qsV/7fTHMHxCMCBOAe3V/U7OMPu5GkX8hC+cmkHhzGnfeYongl1IgiooddA==", + "dev": true, + "license": "LGPL-3.0-only", + "dependencies": { + "magic-string": "^0.30.21" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/Swatinem" + }, + "optionalDependencies": { + "@babel/code-frame": "^7.27.1" + }, + "peerDependencies": { + "rollup": "^3.29.4 || ^4", + "typescript": "^4.5 || ^5.0" + } + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmmirror.com/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "license": "WTFPL OR ISC", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sass": { + "version": "1.92.1", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.92.1.tgz", + "integrity": "sha512-ffmsdbwqb3XeyR8jJR6KelIXARM9bFQe8A6Q3W4Klmwy5Ckd5gz7jgUNHo4UOqutU5Sk1DtKLbpDP0nLCg1xqQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/sdk-base": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz", + "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-ready": "~1.0.0" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "license": "MIT", + "optional": true + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "license": "MIT", + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "license": "(MIT OR CC0-1.0)", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialport": { + "version": "13.0.0", + "resolved": "https://registry.npmmirror.com/serialport/-/serialport-13.0.0.tgz", + "integrity": "sha512-PHpnTd8isMGPfFTZNCzOZp9m4mAJSNWle9Jxu6BPTcWq7YXl5qN7tp8Sgn0h+WIGcD6JFz5QDgixC2s4VW7vzg==", + "license": "MIT", + "dependencies": { + "@serialport/binding-mock": "10.2.2", + "@serialport/bindings-cpp": "13.0.0", + "@serialport/parser-byte-length": "13.0.0", + "@serialport/parser-cctalk": "13.0.0", + "@serialport/parser-delimiter": "13.0.0", + "@serialport/parser-inter-byte-timeout": "13.0.0", + "@serialport/parser-packet-length": "13.0.0", + "@serialport/parser-readline": "13.0.0", + "@serialport/parser-ready": "13.0.0", + "@serialport/parser-regex": "13.0.0", + "@serialport/parser-slip-encoder": "13.0.0", + "@serialport/parser-spacepacket": "13.0.0", + "@serialport/stream": "13.0.0", + "debug": "4.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/serialport/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/shiki/-/shiki-3.23.0.tgz", + "integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.23.0", + "@shikijs/engine-javascript": "3.23.0", + "@shikijs/engine-oniguruma": "3.23.0", + "@shikijs/langs": "3.23.0", + "@shikijs/themes": "3.23.0", + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/shiki/node_modules/@shikijs/engine-oniguruma": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/shiki/node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sortablejs": { + "version": "1.15.6", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.6.tgz", + "integrity": "sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmmirror.com/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmmirror.com/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-http/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-http/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-meter": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/stream-meter/-/stream-meter-1.0.4.tgz", + "integrity": "sha512-4sOEtrbgFotXwnEuzzsQBYEV1elAeFSO8rSGeTwabuX1RRn/kEq9JVH7I0MRBhKVRR0sJkr0M0QCH7yOLf9fhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.1.4" + } + }, + "node_modules/stream-meter/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-meter/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-meter/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-meter/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-wormhole": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz", + "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-template": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/string-template/-/string-template-1.0.0.tgz", + "integrity": "sha512-SLqR3GBUXuoPP5MmYtD7ompvXiG87QjT6lzOszyXjTM86Uu7At7vNnt2xgyTLq5o9T4IxTYFyGxcULqpsmsfdg==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringz": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/stringz/-/stringz-2.1.0.tgz", + "integrity": "sha512-KlywLT+MZ+v0IRepfMxRtnSvDCMc3nR1qqCs3m/qIbSOWkNZYT8XHQA31rS3TnKp0c5xjZu3M4GY/2aRKSi/6A==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/stubborn-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/stubborn-fs/-/stubborn-fs-2.0.0.tgz", + "integrity": "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA==", + "license": "MIT", + "dependencies": { + "stubborn-utils": "^1.0.1" + } + }, + "node_modules/stubborn-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/stubborn-utils/-/stubborn-utils-1.0.2.tgz", + "integrity": "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==", + "license": "MIT" + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmmirror.com/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tabbable": { + "version": "6.4.0", + "resolved": "https://registry.npmmirror.com/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar": { + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC" + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/temp/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/temp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/temp/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/terser": { + "version": "5.44.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "devOptional": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.17.tgz", + "integrity": "sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "license": "MIT" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tiny-async-pool": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", + "integrity": "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.5.0" + } + }, + "node_modules/tiny-async-pool/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==", + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-buffer": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/to-buffer/-/to-buffer-1.2.1.tgz", + "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "license": "MIT/X11", + "engines": { + "node": "*" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-loader": { + "version": "9.5.4", + "resolved": "https://registry.npmmirror.com/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ts-morph": { + "version": "26.0.0", + "resolved": "https://registry.npmmirror.com/ts-morph/-/ts-morph-26.0.0.tgz", + "integrity": "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.27.0", + "code-block-writer": "^13.0.3" + } + }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typedoc": { + "version": "0.27.9", + "resolved": "https://registry.npmmirror.com/typedoc/-/typedoc-0.27.9.tgz", + "integrity": "sha512-/z585740YHURLl9DN2jCWe6OW7zKYm6VoQ93H0sxZ1cwHQEQrUn5BJrEnkWhfzUdyO+BLGjnKUZ9iz9hKloFDw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@gerrit0/mini-shiki": "^1.24.0", + "lunr": "^2.3.9", + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "yaml": "^2.6.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uint8array-extras": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici": { + "version": "6.26.0", + "resolved": "https://registry.npmmirror.com/undici/-/undici-6.26.0.tgz", + "integrity": "sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unescape": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz", + "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unplugin": { + "version": "1.16.1", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.16.1.tgz", + "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "license": "MIT", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "license": "MIT" + }, + "node_modules/unzipper/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "license": "MIT" + }, + "node_modules/urllib": { + "version": "2.44.0", + "resolved": "https://registry.npmmirror.com/urllib/-/urllib-2.44.0.tgz", + "integrity": "sha512-zRCJqdfYllRDA9bXUtx+vccyRqtJPKsw85f44zH7zPD28PIvjMqIgw9VwoTLV7xTBWZsbebUFVHU5ghQcWku2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.3.0", + "content-type": "^1.0.2", + "default-user-agent": "^1.0.0", + "digest-header": "^1.0.0", + "ee-first": "~1.1.1", + "formstream": "^1.1.0", + "humanize-ms": "^1.2.0", + "iconv-lite": "^0.6.3", + "pump": "^3.0.0", + "qs": "^6.4.0", + "statuses": "^1.3.1", + "utility": "^1.16.1" + }, + "engines": { + "node": ">= 0.10.0" + }, + "peerDependencies": { + "proxy-agent": "^5.0.0" + }, + "peerDependenciesMeta": { + "proxy-agent": { + "optional": true + } + } + }, + "node_modules/urllib/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/urllib/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmmirror.com/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utility": { + "version": "1.18.0", + "resolved": "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz", + "integrity": "sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-to": "^2.0.1", + "escape-html": "^1.0.3", + "mkdirp": "^0.5.1", + "mz": "^2.7.0", + "unescape": "^1.0.1" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/uuid": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.15.26", + "resolved": "https://registry.npmmirror.com/validator/-/validator-13.15.26.tgz", + "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/viewerjs": { + "version": "1.11.7", + "resolved": "https://registry.npmmirror.com/viewerjs/-/viewerjs-1.11.7.tgz", + "integrity": "sha512-0JuVqOmL5v1jmEAlG5EBDR3XquxY8DWFQbFMprOXgaBB0F7Q/X9xWdEaQc59D8xzwkdUgXEMSSknTpriq95igg==", + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-conditional-compiler": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/vite-plugin-conditional-compiler/-/vite-plugin-conditional-compiler-0.3.1.tgz", + "integrity": "sha512-nsvK6U99PuiLpINEfgoX48Gxz4csnzrBELVl8L/swMd7OmQUxdyg2/x0rxH6Mzj+6EaCg0SAyz7W0OA0B6iaVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "unplugin-preprocessor-directives": "^1.0.1" + } + }, + "node_modules/vite-plugin-conditional-compiler/node_modules/rollup": { + "version": "3.30.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.30.0.tgz", + "integrity": "sha512-kQvGasUgN+AlWGliFn2POSajRQEsULVYFGTvOZmK06d7vCD+YhZztt70kGk3qaeAXeWYL5eO7zx+rAubBc55eA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vite-plugin-conditional-compiler/node_modules/unplugin-preprocessor-directives": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/unplugin-preprocessor-directives/-/unplugin-preprocessor-directives-1.0.3.tgz", + "integrity": "sha512-l/ZZ7CpVSqzkG3v2zBl2DEur4sC+qUdHpc9TrKahXP+JbPCQYHKUgdCgFpbrM5hLLQqxoa9gVleIZJL/2Lk4Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "magic-string": "^0.30.5", + "unplugin": "^1.6.0" + }, + "peerDependencies": { + "@nuxt/kit": "^3", + "@nuxt/schema": "^3", + "@rspack/core": "*", + "esbuild": "*", + "rollup": "^3", + "vite": ">=3", + "webpack": "^4 || ^5" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@nuxt/schema": { + "optional": true + }, + "@rspack/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "rollup": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/vite-plugin-dts": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/vite-plugin-dts/-/vite-plugin-dts-4.5.4.tgz", + "integrity": "sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor": "^7.50.1", + "@rollup/pluginutils": "^5.1.4", + "@volar/typescript": "^2.4.11", + "@vue/language-core": "2.2.0", + "compare-versions": "^6.1.1", + "debug": "^4.4.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "magic-string": "^0.30.17" + }, + "peerDependencies": { + "typescript": "*", + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vite-plugin-dts/node_modules/@vue/language-core": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.0.tgz", + "integrity": "sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "~2.4.11", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^0.4.9", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vite-plugin-dts/node_modules/alien-signals": { + "version": "0.4.14", + "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-0.4.14.tgz", + "integrity": "sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite-plugin-node-polyfills": { + "version": "0.21.0", + "resolved": "https://registry.npmmirror.com/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz", + "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/plugin-inject": "^5.0.5", + "node-stdlib-browser": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/davidmyersdev" + }, + "peerDependencies": { + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/vite-plugin-string": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/vite-plugin-string/-/vite-plugin-string-1.2.3.tgz", + "integrity": "sha512-zw2jL0c4B6CAvxO8PshX04494jTcqJjNH2kW1AugBH+fImRY0evdNtVgmeS1i1VFdua/OFhL7fMqIPh0uF21/Q==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": ">=4.1.0" + }, + "peerDependencies": { + "vite": ">=2" + } + }, + "node_modules/vite-raw-plugin": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/vite-raw-plugin/-/vite-raw-plugin-1.0.2.tgz", + "integrity": "sha512-gdp/OFVXBiVq1UwPujVb7+4mmgYHTGrzslMbQvxmgzTN4/HC+3j4GNrumsIKSWfA/y3hktII7XqY38muRaGjhw==", + "license": "ISC" + }, + "node_modules/vitepress": { + "version": "2.0.0-alpha.16", + "resolved": "https://registry.npmmirror.com/vitepress/-/vitepress-2.0.0-alpha.16.tgz", + "integrity": "sha512-w1nwsefDVIsje7BZr2tsKxkZutDGjG0YoQ2yxO7+a9tvYVqfljYbwj5LMYkPy8Tb7YbPwa22HtIhk62jbrvuEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/css": "^4.5.3", + "@docsearch/js": "^4.5.3", + "@docsearch/sidepanel-js": "^4.5.3", + "@iconify-json/simple-icons": "^1.2.68", + "@shikijs/core": "^3.21.0", + "@shikijs/transformers": "^3.21.0", + "@shikijs/types": "^3.21.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^6.0.3", + "@vue/devtools-api": "^8.0.5", + "@vue/shared": "^3.5.27", + "@vueuse/core": "^14.1.0", + "@vueuse/integrations": "^14.1.0", + "focus-trap": "^7.8.0", + "mark.js": "8.11.1", + "minisearch": "^7.2.0", + "shiki": "^3.21.0", + "vite": "^7.3.1", + "vue": "^3.5.27" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "oxc-minify": "*", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "oxc-minify": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vitepress-mermaid-renderer": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/vitepress-mermaid-renderer/-/vitepress-mermaid-renderer-1.1.11.tgz", + "integrity": "sha512-Yrew74GoZarfvjCeHhrgLozFoaoRhN2/3w7KpC+KhweZW0ug0P0nxoAAiGaAEP35j0h1QOI63uWZqOLtvuFXQQ==", + "dev": true, + "license": "GPL-3.0-only", + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "mermaid": "^11.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/vitepress-plugin-image-viewer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/vitepress-plugin-image-viewer/-/vitepress-plugin-image-viewer-1.1.6.tgz", + "integrity": "sha512-ZfYy1s/bXju6vGVsE/5gPXT449+KaXZ6ZIPAvcmPM07VmC7Bv57bCvFar2II7C2EjexxfPQsxUh70vSBbe14kQ==", + "license": "MIT", + "dependencies": { + "viewerjs": "^1.11.6" + } + }, + "node_modules/vitepress/node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/vitepress/node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vitepress/node_modules/@vitejs/plugin-vue": { + "version": "6.0.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-6.0.4.tgz", + "integrity": "sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-rc.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", + "vue": "^3.2.25" + } + }, + "node_modules/vitepress/node_modules/@vue/devtools-api": { + "version": "8.0.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-8.0.7.tgz", + "integrity": "sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^8.0.7" + } + }, + "node_modules/vitepress/node_modules/@vue/devtools-kit": { + "version": "8.0.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-kit/-/devtools-kit-8.0.7.tgz", + "integrity": "sha512-H6esJGHGl5q0E9iV3m2EoBQHJ+V83WMW83A0/+Fn95eZ2iIvdsq4+UCS6yT/Fdd4cGZSchx/MdWDreM3WqMsDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^8.0.7", + "birpc": "^2.6.1", + "hookable": "^5.5.3", + "perfect-debounce": "^2.0.0" + } + }, + "node_modules/vitepress/node_modules/@vue/devtools-shared": { + "version": "8.0.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-shared/-/devtools-shared-8.0.7.tgz", + "integrity": "sha512-CgAb9oJH5NUmbQRdYDj/1zMiaICYSLtm+B1kxcP72LBrifGAjUmt8bx52dDH1gWRPlQgxGPqpAMKavzVirAEhA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vitepress/node_modules/@vueuse/core": { + "version": "14.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-14.2.1.tgz", + "integrity": "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "14.2.1", + "@vueuse/shared": "14.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/vitepress/node_modules/@vueuse/metadata": { + "version": "14.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-14.2.1.tgz", + "integrity": "sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vitepress/node_modules/@vueuse/shared": { + "version": "14.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-14.2.1.tgz", + "integrity": "sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/vitepress/node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/vitepress/node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.29", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.29.tgz", + "integrity": "sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.29", + "@vue/compiler-sfc": "3.5.29", + "@vue/runtime-dom": "3.5.29", + "@vue/server-renderer": "3.5.29", + "@vue/shared": "3.5.29" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-grid-layout-v3": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/vue-grid-layout-v3/-/vue-grid-layout-v3-3.1.2.tgz", + "integrity": "sha512-4VB6pel2OklFNnFSUVg4wXwx/fKuKKvnhleLyscwk5ay7aEFk+HghcVKbComg+EgMvjuPzZ7hgIES3FlxuVK6w==", + "dependencies": { + "@interactjs/actions": "^1.10.27", + "@interactjs/auto-scroll": "^1.10.27", + "@interactjs/auto-start": "^1.10.27", + "@interactjs/dev-tools": "^1.10.27", + "@interactjs/interact": "^1.10.27", + "@interactjs/modifiers": "^1.10.27", + "element-resize-detector": "^1.2.4", + "mitt": "^3.0.1" + } + }, + "node_modules/vue-router": { + "version": "4.5.1", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.1.tgz", + "integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-router/node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/vue-tsc": { + "version": "2.2.12", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.2.12.tgz", + "integrity": "sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/typescript": "2.4.15", + "@vue/language-core": "2.2.12" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "license": "MIT", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/vuedraggable/node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==", + "license": "MIT" + }, + "node_modules/vxe-pc-ui": { + "version": "4.9.26", + "resolved": "https://registry.npmmirror.com/vxe-pc-ui/-/vxe-pc-ui-4.9.26.tgz", + "integrity": "sha512-tVunZQm0x45YgnLg1D7JNR6NKLlTJC0L2LkUhi6InB1DU7TLnnQRmzMfLuDefOen/qDXNzaT33X5+07X2RFVtw==", + "license": "MIT", + "dependencies": { + "@vxe-ui/core": "^4.2.12" + } + }, + "node_modules/vxe-table": { + "version": "4.16.11", + "resolved": "https://registry.npmmirror.com/vxe-table/-/vxe-table-4.16.11.tgz", + "integrity": "sha512-TGDQTBD02m6Hfg5sczhPmZD1QE5F0N1enOfBBXiBYLvj1BFDkzZrXwX7rJraLc++uL2EDE0HkxjQUvjkGUXPoA==", + "license": "MIT", + "dependencies": { + "vxe-pc-ui": "^4.8.0" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.105.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", + "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.19.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack/node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/when-exit": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/when-exit/-/when-exit-2.1.5.tgz", + "integrity": "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg==", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/win-release/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/winston": { + "version": "3.17.0", + "resolved": "https://registry.npmmirror.com/winston/-/winston-3.17.0.tgz", + "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==", + "license": "MIT", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.7.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.9.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.9.0", + "resolved": "https://registry.npmmirror.com/winston-transport/-/winston-transport-4.9.0.tgz", + "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", + "license": "MIT", + "dependencies": { + "logform": "^2.7.0", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/wujie": { + "version": "1.0.29", + "resolved": "https://registry.npmmirror.com/wujie/-/wujie-1.0.29.tgz", + "integrity": "sha512-u7PmBT4l5ov7ciwmZNG8DLIRKrYrnXDa0LnAFgRQikJ/ZrVZYzzSNz6duzEJoj8/o46dnMy/g9Hh/PBYGbgFUw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.6" + } + }, + "node_modules/wujie-polyfill": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/wujie-polyfill/-/wujie-polyfill-1.1.3.tgz", + "integrity": "sha512-qYvluvjquCO/T1yIknJba6a+8dZUeRffUN/OvQQ22RHfgyCDNtxGg7Xgw1ZCZ1YB4hs/qFsVRl66GT/VvB3/0Q==", + "license": "MIT" + }, + "node_modules/wujie-vue3": { + "version": "1.0.29", + "resolved": "https://registry.npmmirror.com/wujie-vue3/-/wujie-vue3-1.0.29.tgz", + "integrity": "sha512-OGt5Veyq/DtmFzHQCANmv8nZgu877u7ZjS5qjFpSrtKARKhLjID3x99D40a4pb3Kj5UmRatkV5Gn5hqOWpziZQ==", + "license": "MIT", + "dependencies": { + "wujie": "1.0.29" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/xe-utils": { + "version": "3.7.9", + "resolved": "https://registry.npmmirror.com/xe-utils/-/xe-utils-3.7.9.tgz", + "integrity": "sha512-LWH6M7g+TKX8P2fqGxDPgJQygiULhbMtpmfxTMxJTUjuUv9y2+I45UCcVLh5AnmJSxDV1xTxsq7G5P9Eid06JQ==", + "license": "MIT" + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/xterm": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/xterm/-/xterm-5.3.0.tgz", + "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==", + "deprecated": "This package is now deprecated. Move to @xterm/xterm instead.", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "license": "MIT", + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/zip-stream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/zip-stream/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/zrender": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-6.0.0.tgz", + "integrity": "sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==", + "license": "BSD-3-Clause", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/package.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/package.json new file mode 100644 index 0000000..8d589d4 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/package.json @@ -0,0 +1,205 @@ +{ + "name": "ecubuspro", + "version": "0.8.66", + "description": "EcuBus-Pro", + "main": "./out/main/index.js", + "author": "frankie.zengfu@gmail.com", + "homepage": "https://app.whyengineer.com", + "license": "Apache-2.0", + "ecubusPro": { + "vendor": { + "win32": [ + "simulate", + "kvaser", + "peak", + "zlg", + "toomoss", + "vector", + "slcan", + "ecubus", + "candle" + ], + "linux": [ + "simulate", + "slcan" + ], + "darwin": [ + "simulate", + "slcan" + ] + } + }, + "lint-staged": { + "*.{ts,vue}": [ + "prettier --write", + "eslint --ext .ts,.vue --fix" + ] + }, + "scripts": { + "format": "prettier --write .", + "lint": "eslint . --ext .ts,.vue --fix", + "typecheck:node": "tsgo --noEmit -p tsconfig.node.json --composite false", + "typecheck:web": "vue-tsc --noEmit -p tsconfig.web.json --composite false", + "typecheck": "npm run typecheck:node && npm run typecheck:web", + "worker": "cd src/main/worker/secureAccess && npx node-gyp rebuild && cd ../../../.. && npx webpack --config webpack.config.js --mode production", + "worker:js": "npx webpack --config webpack.config.js --mode production", + "start": "electron-vite preview", + "dev": "electron-vite dev", + "test": "vitest --config vitest.config.ts", + "build": "npm run typecheck && electron-vite build", + "build:sdk": "vite build --config vite.sdk.config.ts", + "cli:dev": "electron-vite dev -c cli.vite.ts -w --entry cli/out/ecb_cli2.js", + "cli:build": "electron-vite build -c cli.vite.ts", + "cli:build:win": "electron-vite build -c cli.vite.ts && cd cli && npm run win", + "cli:build:linux": "electron-vite build -c cli.vite.ts && cd cli && npm run linux", + "cli:build:mac": "electron-vite build -c cli.vite.ts && cd cli && npm run mac", + "postinstall": "electron-builder install-app-deps", + "build:unpack": "npm run build && electron-builder --dir", + "build:win": "npm run build && electron-builder --win", + "build:mac": "npm run build && electron-builder --mac", + "build:linux": "npm run build && electron-builder --linux", + "native": "npm run docan && npm run dolin && npm run someip", + "api": "typedoc --tsconfig tsconfig.worker.json --lang en-US", + "docan": "cd src/main/docan && npx node-gyp rebuild", + "dolin": "cd src/main/dolin && npx node-gyp rebuild", + "someip": "cd src/main/vsomeip && npx node-gyp rebuild", + "docs:dev": "vitepress dev", + "docs:build": "vitepress build", + "docs:preview": "vitepress preview", + "prepare": "husky" + }, + "dependencies": { + "@electron-toolkit/preload": "^3.0.0", + "@electron-toolkit/utils": "^3.0.0", + "@element-plus/icons-vue": "^2.3.1", + "@form-create/element-ui": "^3.2.22", + "@iconify/icons-grommet-icons": "^1.2.5", + "@iconify/icons-mdi": "^1.2.48", + "@joint/core": "^4.0.4", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "@vueuse/core": "^10.7.2", + "@vxe-ui/plugin-render-element": "^4.0.10", + "@xterm/addon-canvas": "^0.7.0", + "@xterm/addon-fit": "^0.10.0", + "@xterm/xterm": "^5.5.0", + "adm-zip": "^0.5.16", + "ajv": "^8.18.0", + "animate.css": "^4.1.1", + "async": "^3.2.6", + "async-validator": "^4.2.5", + "axios": "^1.8.2", + "body-parser": "^2.2.1", + "chevrotain": "^12.0.0", + "codemirror": "^6.65.7", + "colors": "^1.4.0", + "commander": "^12.1.0", + "conf": "^15.1.0", + "dayjs": "^1.11.13", + "e-virt-table": "^1.2.35", + "echarts": "^6.0.0", + "electron-log": "^5.1.2", + "electron-updater": "^6.3.9", + "element-plus": "^2.11.0", + "emittery": "^1.2.0", + "events": "^3.3.0", + "exceljs": "^4.4.0", + "glob": "^11.1.0", + "handlebars": "^4.7.9", + "i18next": "^25.6.2", + "i18next-vue": "^5.3.0", + "iconv-lite": "^0.7.0", + "javascript-obfuscator": "^5.2.0", + "jquery": "^3.7.1", + "jquery-ui": "^1.14.1", + "js-beautify": "^1.15.4", + "json5": "^2.2.3", + "lodash": "^4.17.23", + "marked": "^14.1.3", + "mitt": "^3.0.1", + "path-browserify": "^1.0.1", + "pinia": "^3.0.2", + "pixi.js-legacy": "^5.3.3", + "python-shell": "^5.0.0", + "serialport": "^13.0.0", + "sortablejs": "^1.15.2", + "ts-morph": "^26.0.0", + "uuid": "^14.0.0", + "vite-plugin-string": "^1.2.3", + "vite-raw-plugin": "^1.0.2", + "vitepress-plugin-image-viewer": "^1.1.6", + "vue-grid-layout-v3": "^3.1.2", + "vue-router": "^4.2.5", + "vuedraggable": "4.1.0", + "vxe-pc-ui": "^4.2.53", + "vxe-table": "^4.16.11", + "winston": "^3.17.0", + "wujie-polyfill": "^1.1.3", + "wujie-vue3": "^1.0.29", + "xterm": "^5.3.0" + }, + "devDependencies": { + "@electron-toolkit/eslint-config": "^1.0.2", + "@electron-toolkit/eslint-config-ts": "^1.0.1", + "@electron-toolkit/tsconfig": "^1.0.1", + "@electron/rebuild": "^4.0.4", + "@iconify/icons-ep": "^1.2.12", + "@iconify/icons-material-symbols": "^1.2.58", + "@iconify/icons-ph": "^1.2.5", + "@iconify/vue": "^4.1.1", + "@liudonghua123/pkg": "^6.0.1", + "@rollup/plugin-node-resolve": "^15.3.0", + "@rushstack/eslint-patch": "^1.7.1", + "@types/adm-zip": "^0.5.7", + "@types/async": "^3.2.24", + "@types/node": "^22.9.1", + "@types/path-browserify": "^1.0.3", + "@types/uuid": "^10.0.0", + "@typescript/native-preview": "^7.0.0-dev.20260124.1", + "@vitejs/plugin-vue": "^5.0.3", + "@vue/eslint-config-prettier": "^9.0.0", + "@vue/eslint-config-typescript": "^12.0.0", + "ali-oss": "^6.21.0", + "dotenv": "^16.4.5", + "electron": "^39.8.6", + "electron-builder": "26.8.1", + "electron-vite": "^2.3.0", + "eslint": "^8.57.1", + "eslint-plugin-vue": "^9.32.0", + "husky": "^9.1.7", + "lint-staged": "^15.4.3", + "mermaid": "^11.12.3", + "node-addon-api": "^8.2.2", + "node-gyp": "^12.3.0", + "node-loader": "^2.1.0", + "prettier": "^3.5.2", + "rollup": "^4.59.0", + "rollup-plugin-dts": "^6.3.0", + "sass": "^1.83.0", + "ts-loader": "^9.5.4", + "typedoc": "^0.27.6", + "typescript": "^5.3.3", + "viewerjs": "^1.11.6", + "vite": "^5.4.21", + "vite-plugin-conditional-compiler": "^0.3.1", + "vite-plugin-dts": "^4.5.4", + "vite-plugin-node-polyfills": "^0.21.0", + "vitepress": "^2.0.0-alpha.16", + "vitepress-mermaid-renderer": "^1.1.11", + "vitest": "^3.2.4", + "vue": "^3.5.13", + "vue-tsc": "^2.1.6", + "webpack": "^5.105.0", + "webpack-cli": "^5.1.4", + "yaml": "^2.6.0" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.46.2" + }, + "overrides": { + "esbuild": "^0.25.0", + "axios": "^1.8.2", + "@babel/runtime": "^7.26.10", + "tar-fs": "2.1.4", + "node-gyp": "^12.3.0" + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/analytics.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/analytics.ts new file mode 100644 index 0000000..6e5a959 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/analytics.ts @@ -0,0 +1,199 @@ +import { app, ipcMain, net } from 'electron' +import { exec } from 'child_process' +import { readFile } from 'fs' +import { hostname, release } from 'os' +import log from 'electron-log' + +export type AptabaseOptions = { + host?: string +} + +const SDK_VERSION = 'ecubus-analytics@1.0.0' + +const _hosts: Record = { + US: 'https://us.aptabase.com', + EU: 'https://eu.aptabase.com', + DEV: 'http://localhost:3000', + SH: '' +} + +type EnvironmentInfo = { + appVersion: string + isDebug: boolean + locale: string + osName: string + osVersion: string + engineName: string + engineVersion: string + sdkVersion: string +} + +const _sessionId = newSessionId() +let _appKey = '' +let _apiUrl = '' +let _env: EnvironmentInfo | undefined + +function newSessionId(): string { + return (process.env.COMPUTERNAME ?? hostname()).trim() +} + +async function getOsVersion(): Promise<[string, string]> { + switch (process.platform) { + case 'win32': + return ['Windows', release()] + case 'darwin': + try { + const v = await new Promise((resolve, reject) => { + exec('/usr/bin/sw_vers -productVersion', (err, stdout) => { + if (err) reject(err) + else resolve(stdout.trim()) + }) + }) + return ['macOS', v] + } catch { + return ['macOS', ''] + } + default: { + try { + const text = await new Promise((resolve, reject) => { + readFile('/etc/os-release', 'utf8', (err, data) => { + if (err) reject(err) + else resolve(data) + }) + }) + const lines = text.split('\n') + const map: Record = {} + for (const line of lines) { + const [k, ...rest] = line.split('=') + if (k && rest.length) { + map[k] = rest.join('=').replace(/"/g, '') + } + } + const name = map.NAME ?? 'Linux' + const ver = map.VERSION_ID ?? '' + return [name, ver] + } catch { + return ['Linux', ''] + } + } + } +} + +async function getEnvironmentInfo(): Promise { + const [osName, osVersion] = await getOsVersion() + return { + appVersion: app.getVersion(), + isDebug: !app.isPackaged, + locale: app.getLocale(), + osName, + osVersion, + engineName: 'Chromium', + engineVersion: process.versions.chrome ?? '', + sdkVersion: SDK_VERSION + } +} + +function getBaseUrl(region: string, options?: AptabaseOptions): string | undefined { + if (region === 'SH') { + if (!options?.host) { + log.warn('Aptabase: Host parameter must be defined when using Self-Hosted App Key.') + return undefined + } + return options.host + } + return _hosts[region] +} + +function registerEventHandler(): void { + ipcMain.on( + 'aptabase-track-event', + ( + _event, + payload: { + eventName?: string + name?: string + props?: Record + properties?: Record + } + ) => { + const eventName = payload.eventName ?? payload.name + if (!eventName) return + const props = payload.props ?? payload.properties + void trackEvent(eventName, props) + } + ) +} + +export async function initialize(appKey: string, options?: AptabaseOptions): Promise { + const parts = appKey.split('-') + if (parts.length !== 3 || _hosts[parts[1]] === undefined) { + log.warn(`Analytics: App Key "${appKey}" is invalid. Tracking will be disabled.`) + return + } + + const baseUrl = getBaseUrl(parts[1], options) + if (!baseUrl) return + + _apiUrl = `${baseUrl}/api/v0/event` + _env = await getEnvironmentInfo() + _appKey = appKey + + registerEventHandler() +} + +export function trackEvent( + eventName: string, + props?: Record +): Promise { + if (!_appKey || !_env) { + return Promise.resolve() + } + + const now = new Date() + + const body = { + timestamp: now.toISOString(), + sessionId: _sessionId, + eventName, + systemProps: { + isDebug: _env.isDebug, + locale: _env.locale, + osName: _env.osName, + osVersion: _env.osVersion, + engineName: _env.engineName, + engineVersion: _env.engineVersion, + appVersion: _env.appVersion, + sdkVersion: _env.sdkVersion + }, + props + } + + return new Promise((resolve) => { + const onReject = (err: Error) => { + log.error('Analytics: Failed to send event', err) + resolve() + } + + const req = net.request({ + method: 'POST', + url: _apiUrl, + credentials: 'omit' + }) + + req.setHeader('Content-Type', 'application/json') + req.setHeader('App-Key', _appKey) + + req.on('error', onReject) + req.on('response', (res) => { + if (res.statusCode && res.statusCode >= 300) { + log.warn( + `Analytics: Failed to send event "${eventName}": ${res.statusCode} ${res.statusMessage}` + ) + } + resolve() + }) + + req.write(JSON.stringify(body)) + req.end() + }) +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/canmartix.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/canmartix.ts new file mode 100644 index 0000000..76feff0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/canmartix.ts @@ -0,0 +1,121 @@ +import { CanDB } from './share/can' +import { execBinary } from './util' +import { getPythonPath } from './python' +import fsP from 'fs/promises' +import path from 'path' +import iconv from 'iconv-lite' + +/** Common encodings for DBC comments/units (Chinese etc.). Tried in order when encoding is not specified. */ +const DEFAULT_ENCODINGS = ['gbk', 'gb2312', 'gb18030', 'big5', 'cp936'] as const + +/** + * Fix strings that were encoded (e.g. GBK/Big5) but misinterpreted as Latin-1 during DBC parse. + * Each byte (0x80-0xFF) becomes U+00XX; convert back to bytes and decode with given encoding(s). + * Only applies when all chars are in 0-255 (indicating misinterpreted bytes). + */ +function fixMisencodedString( + str: string, + encodings: readonly string[] = DEFAULT_ENCODINGS +): string { + if (typeof str !== 'string' || str.length === 0) return str + const chars = [...str] + const allSingleByte = chars.every((c) => (c.codePointAt(0) ?? 0) <= 0xff) + const hasHighBytes = chars.some((c) => { + const cp = c.codePointAt(0) ?? 0 + return cp >= 0x80 && cp <= 0xff + }) + if (!allSingleByte || !hasHighBytes) return str + const bytes = Buffer.from(chars.map((c) => c.charCodeAt(0) & 0xff)) + for (const enc of encodings) { + try { + const decoded = iconv.decode(bytes, enc) + if (!decoded.includes('�')) return decoded + } catch { + /* try next */ + } + } + return str +} + +function fixMisencodedInValue(val: unknown, encodings: readonly string[]): unknown { + if (typeof val === 'string') return fixMisencodedString(val, encodings) + if (Array.isArray(val)) return val.map((v) => fixMisencodedInValue(v, encodings)) + if (val !== null && typeof val === 'object') { + const out: Record = {} + for (const [k, v] of Object.entries(val)) out[k] = fixMisencodedInValue(v, encodings) + return out + } + return val +} + +export interface ParseFileOptions { + /** Encoding(s) to try when fixing misinterpreted strings (e.g. gbk, big5). If omitted, tries gbk, gb2312, gb18030, big5, cp936. */ + encoding?: string | string[] +} + +export async function parseFile( + filePath: string, + outputJsonPath: string, + options?: ParseFileOptions +): Promise<{ data: CanDB; msg: string }> { + const pythonPath = getPythonPath() + const result = await execBinary(pythonPath, [ + '-m', + 'canmatrix.cli.convert', + filePath, + outputJsonPath, + '--jsonExportAll' + ]) + if (result.success) { + if (result.stdout.toLowerCase().includes('error')) { + throw new Error(result.stdout) + } + if (result.stderr.toLowerCase().includes('error')) { + throw new Error(result.stderr) + } + const json = await fsP.readFile(outputJsonPath, 'utf-8') + const encodings = + options?.encoding === undefined + ? DEFAULT_ENCODINGS + : Array.isArray(options.encoding) + ? options.encoding + : [options.encoding] + const data = fixMisencodedInValue(JSON.parse(json), encodings) as CanDB + return { + data, + msg: result.stdout + } + } else { + throw new Error(result.stderr) + } +} + +export async function exportOtherFile( + tmpDir: string, + fileType: string, + candb: CanDB, + outputFilePath: string +): Promise { + //covert candb to json firstly, then conver the json file to the other file + const jsonFilePath = path.join(tmpDir, 'canmatrix.json') + await fsP.writeFile(jsonFilePath, JSON.stringify(candb, null, 2)) + const pythonPath = getPythonPath() + // Omit -f to infer format from output path extension; avoids KeyError when a + // format module failed to load (e.g. arxml when lxml is missing) + const result = await execBinary(pythonPath, [ + '-m', + 'canmatrix.cli.convert', + jsonFilePath, + outputFilePath + ]) + if (result.success) { + if (result.stdout.toLowerCase().includes('error')) { + throw new Error(result.stdout) + } + if (result.stderr.toLowerCase().includes('error')) { + throw new Error(result.stderr) + } + } else { + throw new Error(result.stderr) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/global.d.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/global.d.ts new file mode 100644 index 0000000..c40064f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/global.d.ts @@ -0,0 +1,40 @@ +/* eslint-disable no-var */ +import type { Logger } from 'winston' +import type { EventEmitter } from 'events' +import { LDF } from 'src/renderer/src/database/ldfParse' +import { DBC } from 'src/renderer/src/database/dbc/dbcVisitor' +import { VarItem } from 'src/preload/data' +import { BrowserWindow } from 'electron' +import { IntervalHistogram } from 'node:perf_hooks' +import type { DataSet } from 'src/preload/data' + +type VarUpdateItem = { + name: string + value: number | string | number[] + id: string + uuid?: string +} +type VarEvent = { + update: [VarUpdateItem | VarUpdateItem[]] +} + +declare global { + var sysLog: Logger + var scriptLog: Logger + var keyEvent: EventEmitter | undefined + var varEvent: EventEmitter | undefined + var dataSet: DataSet + var startTs: number + var vars: Record + var deviceIndexMap: Map + var mainWindow: BrowserWindow + var toomossDeviceHandles: + | Map< + number, + { + refCount: number // 引用计数 + channels: Set // 当前使用的通道 + } + > + | undefined +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/i18n.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/i18n.ts new file mode 100644 index 0000000..b20cc3f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/i18n.ts @@ -0,0 +1,209 @@ +import i18next from 'i18next' +import { dirname, join, relative } from 'path' +import fs from 'fs/promises' +import { glob } from 'glob' +import localesPath from '../../resources/locales/.gitkeep?asset&asarUnpack' +import log from 'electron-log' +import { getPluginsDirectory } from './ipc/plugin' + +// 缓存 +const translationsCache = new Map>() +let supportedLanguagesCache: string[] | null = null + +// 获取主应用 locales 目录路径 +export const getAppLocalesPath = () => { + // localesPath 会指向 resources/locales/en/translation.json + // 我们需要返回 resources/locales 目录 + const localesDir = dirname(localesPath) + return localesDir +} + +// 使用 glob 加载指定语言的所有翻译文件并合并为一个大的 JSON +async function loadAllTranslations(lng: string): Promise> { + const merged: Record = {} + const appLocalesPath = getAppLocalesPath() + + try { + // 加载主应用翻译:locales/{lng}/translation.json + const appPattern = join(appLocalesPath, lng, 'translation.json').replace(/\\/g, '/') + const appFiles = await glob(appPattern) + + for (const file of appFiles) { + try { + const content = await fs.readFile(file, 'utf-8') + const translations = JSON.parse(content) + Object.assign(merged, translations) + } catch (error) { + log.error(`Failed to load app translation from ${file}:`, error) + } + } + + // 加载插件翻译:plugins/*/locales/{lng}/translation.json + const pluginsDir = getPluginsDirectory() + const pluginPattern = join(pluginsDir, '*', 'locales', lng, 'translation.json').replace( + /\\/g, + '/' + ) + const pluginFiles = await glob(pluginPattern) + + for (const file of pluginFiles) { + try { + const content = await fs.readFile(file, 'utf-8') + const translations = JSON.parse(content) + // 插件翻译直接覆盖主应用翻译 + Object.assign(merged, translations) + } catch (error) { + log.error(`Failed to load plugin translation from ${file}:`, error) + } + } + } catch (error) { + log.error(`Failed to load translations for ${lng}:`, error) + } + + return merged +} + +// 从 i18next 获取已加载的翻译(如果已初始化) +export function getAllTranslationsFromI18next(lng: string): Record | null { + if (!i18next.isInitialized) { + return null + } + + // 使用 hasResourceBundle 检查该语言是否已加载 + if (!i18next.hasResourceBundle(lng, 'translation')) { + return null + } + + // 获取 translation 命名空间的翻译(插件翻译已合并到其中) + const bundle = i18next.getResourceBundle(lng, 'translation') + return bundle || null +} + +// 获取所有翻译 - 供 IPC 使用 +// 优先从 i18next 获取,如果未初始化则读取文件 +export async function getAllTranslations(lng: string): Promise> { + // 优先从已加载的 i18next 获取 + const cachedTranslations = getAllTranslationsFromI18next(lng) + if (cachedTranslations) { + return cachedTranslations + } + + // 检查缓存 + if (translationsCache.has(lng)) { + return translationsCache.get(lng)! + } + + // 如果 i18next 未初始化或该语言未加载,则使用 glob 读取文件 + const translations = await loadAllTranslations(lng) + translationsCache.set(lng, translations) + return translations +} + +export const initMainI18n = async (lng: string = 'en') => { + // 使用 glob 加载所有翻译并合并为一个大的 JSON + const mergedTranslations = await loadAllTranslations(lng) + + // 更新缓存 + translationsCache.set(lng, mergedTranslations) + + // 构建资源对象 + const resources = { + [lng]: { + translation: mergedTranslations + } + } + + await i18next.init({ + lng, + fallbackLng: 'en', + resources, + ns: ['translation'], + defaultNS: 'translation', + debug: false, + interpolation: { + escapeValue: false + } + }) + + return i18next +} + +// 重新加载翻译(用于语言切换或插件动态加载) +export const reloadTranslations = async (lng: string) => { + // 使用 glob 加载所有翻译并合并为一个大的 JSON + const mergedTranslations = await loadAllTranslations(lng) + + // 更新缓存 + translationsCache.set(lng, mergedTranslations) + + // 添加或更新资源 + i18next.addResourceBundle(lng, 'translation', mergedTranslations, true, true) + + await i18next.changeLanguage(lng) +} + +// 清除翻译缓存(用于插件加载/卸载后) +export function clearTranslationsCache(lng?: string) { + if (lng) { + translationsCache.delete(lng) + } else { + translationsCache.clear() + } +} + +// 清除支持语言缓存 +export function clearSupportedLanguagesCache() { + supportedLanguagesCache = null +} + +// 获取所有支持的语言(使用 glob 从主应用和插件中扫描) +export async function getAllSupportedLanguages(): Promise { + // 检查缓存 + if (supportedLanguagesCache) { + return supportedLanguagesCache + } + + const languageSet = new Set() + const appLocalesPath = getAppLocalesPath() + + try { + // 扫描主应用支持的语言:locales/*/translation.json + const appPattern = join(appLocalesPath, '*', 'translation.json').replace(/\\/g, '/') + const appFiles = await glob(appPattern) + + for (const file of appFiles) { + const relativePath = relative(appLocalesPath, file) + const lng = relativePath.split(/[/\\]/)[0] + languageSet.add(lng) + } + + // 扫描插件支持的语言:plugins/*/locales/*/translation.json + const pluginsDir = getPluginsDirectory() + const pluginPattern = join(pluginsDir, '*', 'locales', '*', 'translation.json').replace( + /\\/g, + '/' + ) + const pluginFiles = await glob(pluginPattern) + + for (const file of pluginFiles) { + const relativePath = relative(pluginsDir, file) + const parts = relativePath.split(/[/\\]/) + const lng = parts[parts.length - 2] // locales 目录下的子目录名 + languageSet.add(lng) + } + } catch (error) { + log.error('Failed to scan supported languages:', error) + } + + // 返回排序后的语言列表(确保 en 在前) + const languages = Array.from(languageSet).sort((a, b) => { + if (a === 'en') return -1 + if (b === 'en') return 1 + return a.localeCompare(b) + }) + + // 更新缓存 + supportedLanguagesCache = languages + + return languages +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/index.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/index.ts new file mode 100644 index 0000000..69fa1ab --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/index.ts @@ -0,0 +1,265 @@ +import { app, shell, BrowserWindow, ipcMain, dialog, protocol as eProtocol, net } from 'electron' +import path, { join } from 'path' +import { electronApp, optimizer, is } from '@electron-toolkit/utils' +import icon from '../../resources/icon.png?asset' +import { store } from './store' +import './ipc' +import log from 'electron-log/main' +import { initialize as initAnalytics, trackEvent } from './analytics' + +import { createLogs } from './log' +import './update' +import { globalStop } from './ipc/uds' +import { startRpcHost } from './rpcHost' +import Transport from 'winston-transport' +import { initMainI18n } from './i18n' +import { setupCasdoor } from './ipc/casdoor' +import 'src/renderer/src/helper' + +import { closeAllWindows, closeWindow, logQ, maximizeWindow, minimizeWindow } from './multiWin' +initAnalytics('A-EU-6409047217') +log.initialize() + +// Track app exit once (user closes window / app quits). +let exitTracked = false +app.once('before-quit', async () => { + if (exitTracked) return + exitTracked = true + try { + // Small timeout so we don't block quitting too long. + await Promise.race([ + trackEvent('app_exit'), + new Promise((resolve) => setTimeout(resolve, 1500)) + ]) + } catch { + // Ignore tracking errors on shutdown. + } +}) + +// Register custom protocol as privileged before app is ready +eProtocol.registerSchemesAsPrivileged([ + { + scheme: 'local-resource', + privileges: { + secure: true, + supportFetchAPI: true, + bypassCSP: true, + corsEnabled: true + } + } +]) + +setupCasdoor() + +log.info(app.getGPUFeatureStatus()) + +function registerLocalResourceProtocol() { + eProtocol.handle('local-resource', (request) => { + try { + // Remove protocol prefix (handle both // and /// after protocol) + const url = request.url.replace(/^local-resource:\/\/\/?/, '') + // Decode URL components to handle encoded characters + const decodedUrl = decodeURIComponent(url) + // Normalize path (handle both forward and back slashes) + const normalizedPath = decodedUrl.replace(/\\/g, '/') + // For Windows absolute paths (e.g., D:/path), ensure proper file:/// format + const fileUrl = /^[a-zA-Z]:\//.test(normalizedPath) + ? `file:///${normalizedPath}` + : `file://${normalizedPath}` + + if (fileUrl.endsWith('.map')) { + //404 + return new Response(null, { status: 404 }) + } + + return net.fetch(fileUrl) + } catch (error) { + log.error('ERROR: registerLocalResourceProtocol:', error) + return new Response(null, { status: 404 }) + } + }) +} + +// process.env.PYTHON_PATH=pythonPath +const isDev = process.env.NODE_ENV === 'development' + +ipcMain.on('electron-store-get', async (event, val) => { + event.returnValue = store.get(val) +}) +ipcMain.on('electron-store-set', async (event, key, val) => { + store.set(key, val) +}) + +class ElectronLog extends Transport { + constructor( + private q: typeof logQ, + opts?: Transport.TransportStreamOptions + ) { + super(opts) + } + + log(info: any, callback: () => void) { + if (!info.message.method) { + info.message = { + method: 'ipc-log-main', + message: info.message + } + } + this.q.list.push(info) + callback() + } +} + +function createWindow(): void { + // Get stored window bounds and state + const windowBounds = store.get('windowBounds') as Electron.Rectangle + const isMaximized = store.get('windowMaximized', false) + + function getBounds() { + const bounds = global.mainWindow.getBounds() + // bounds.x += 5 + // bounds.y += 5 + return bounds + } + // Create the browser window. + const mainWindow = new BrowserWindow({ + minWidth: 1000, + minHeight: 600, + width: 1000, + height: 600, + + frame: false, + show: false, + ...(process.platform === 'linux' ? { icon } : {}), + webPreferences: { + backgroundThrottling: false, + preload: join(__dirname, '../preload/index.js'), + sandbox: false, + contextIsolation: true + } + }) + if (windowBounds) { + mainWindow.setBounds(windowBounds) + } + global.mainWindow = mainWindow + logQ.addWin(mainWindow, true) + createLogs( + [ + () => + new ElectronLog(logQ, { + level: 'debug' + }) + ], + [] + ) + ipcMain.on('minimize', (event, id) => { + if (id) { + minimizeWindow(id) + } else { + mainWindow?.minimize() + } + }) + + ipcMain.on('maximize', (event, id) => { + if (id) { + maximizeWindow(id) + } else { + if (mainWindow.isMaximized()) { + mainWindow.unmaximize() + store.set('windowMaximized', false) + } else { + mainWindow.maximize() + store.set('windowMaximized', true) + } + // Save current bounds before maximizing + store.set('windowBounds', getBounds()) + } + }) + + ipcMain.on('close', (event, id) => { + if (id) { + closeWindow(id) + } else { + logQ.stopTimer() + globalStop() + // Only save bounds if window is not maximized + store.set('windowBounds', getBounds()) + store.set('windowMaximized', mainWindow.isMaximized()) + closeAllWindows() + mainWindow.close() + } + }) + mainWindow.on('ready-to-show', () => { + mainWindow.show() + // Restore maximized state + if (isMaximized) { + mainWindow.maximize() + } + if (isDev) { + mainWindow.webContents.openDevTools() + } + }) + + mainWindow.webContents.setWindowOpenHandler((details) => { + shell.openExternal(details.url) + return { action: 'deny' } + }) + + // HMR for renderer base on electron-vite cli. + // Load the remote URL for development or the local html file for production. + if (is.dev && process.env['ELECTRON_RENDERER_URL']) { + mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL']) + } else { + mainWindow.loadFile(join(__dirname, '../renderer/index.html')) + } +} + +// This method will be called when Electron has finished +// initialization and is ready to create browser windows. +// Some APIs can only be used after this event occurs. +app.whenReady().then(async () => { + // Set app user model id for windows + electronApp.setAppUserModelId('com.electron') + + // Default open or close DevTools by F12 in development + // and ignore CommandOrControl + R in production. + // see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils + app.on('browser-window-created', (_, window) => { + optimizer.watchWindowShortcuts(window) + }) + + registerLocalResourceProtocol() + + // 初始化主进程 i18n + try { + const savedLang = store.get('language', 'en') as string + await initMainI18n(savedLang) + log.info(`Main process i18n initialized with language: ${savedLang}`) + } catch (error) { + log.error('Failed to initialize main process i18n:', error) + } + + createWindow() + + void startRpcHost() + + trackEvent('app_open') + + app.on('activate', function () { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (BrowserWindow.getAllWindows().length === 0) createWindow() + }) +}) + +// Quit when all windows are closed, except on macOS. There, it's common +// for applications and their menu bar to stay active until the user quits +// explicitly with Cmd + Q. +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit() + } +}) + +// In this file you can include the rest of your app"s specific main process +// code. You can also put them in separate files and require them here. diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/log.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/log.ts new file mode 100644 index 0000000..a713640 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/log.ts @@ -0,0 +1,934 @@ +/* eslint-disable no-var */ +import { transport, createLogger, format, Logger, transports } from 'winston' +import type { Format } from 'logform' +import Transport from 'winston-transport' +import { CAN_ERROR_ID, CanAddr, CanMessage, CanMsgType, getTsUs } from './share/can' +import EventEmitter from 'events' +import type { Sequence, ServiceItem } from './share/uds' +import { PayloadType } from './doip' +import type { LinMsg } from './share/lin' +import type { SerialMessage } from './share/serial' +import type { TestEvent } from 'node:test/reporters' +import { setVar as setVarMain, setVarByKey, getVar as getVarMain } from './var' +import { VarItem } from 'src/preload/data' +import { v4 } from 'uuid' +import type { SomeipMessage, VsomeipAvailabilityInfo } from './share/someip' +import type { OsEvent } from './share/osEvent' +import path from 'path' +import dayjs from 'dayjs' + +global.deviceIndexMap = new Map() + +type LogFunc = (...args: any[]) => Transport + +export function createLogs(logs: LogFunc[], formats: Format[]) { + global.sysLog = createLogger({ + transports: logs.map((t) => t()), + format: format.combine(format.json(), format.label({ label: 'System' }), ...formats) + }) + global.scriptLog = createLogger({ + transports: logs.map((t) => t()), + format: format.combine(format.json(), format.label({ label: 'Script' }), ...formats) + }) + + for (const l of logs) { + addTransport(l) + } + for (const f of formats) { + addFormat(f) + } +} + +class Base extends Transport { + constructor(opts?: Transport.TransportStreamOptions) { + super(opts) + // + // Consume any custom options here. e.g.: + // - Connection information for databases + // - Authentication information for APIs (e.g. loggly, papertrail, + // logentries, etc.). + // + } + + log(info: any, callback: () => void) { + if (process.env.VITEST) { + console.table(info.message) + } + // Perform the writing to the remote service + callback() + } +} +const instanceFormat = format((info, opts: any) => { + info.instance = opts.instance + return info +}) +const externalTransport: { id: string; t: () => Transport }[] = [] +const deviceTransport: { id: string; devices: string[]; logger: Logger }[] = [] +export function addTransport(t: () => Transport): string { + const id = v4() + externalTransport.push({ id, t }) + return id +} +export function addDeviceTransport(t: () => Transport): string { + const id = v4() + const transport = t() + const devices = (transport as Transport & { devices?: string[] }).devices ?? [] + const logger = createLogger({ transports: [transport] }) + deviceTransport.push({ id, devices, logger }) + return id +} + +export function removeDeviceTransport(id: string) { + const index = deviceTransport.findIndex((t) => t.id == id) + if (index != -1) { + const [target] = deviceTransport.splice(index, 1) + target.logger.close() + } +} + +class DeviceTransportRouter extends Transport { + constructor() { + super({ level: 'debug' }) + } + + log(info: any, callback: () => void) { + const message = typeof info.message === 'object' ? info.message : undefined + const deviceId = message?.deviceId + + if (deviceId) { + for (const target of deviceTransport) { + if (target.devices.includes(deviceId)) { + target.logger.log({ level: info.level, message }) + } + } + } + + callback() + } +} + +function getDeviceTransportRouters(): Transport[] { + return deviceTransport.length > 0 ? [new DeviceTransportRouter()] : [] +} +export function removeTransport(id: string) { + const index = externalTransport.findIndex((t) => t.id == id) + if (index != -1) { + externalTransport.splice(index, 1) + } +} + +const externalFormat: Format[] = [] +export function addFormat(f: Format) { + externalFormat.push(f) +} +export function clearFormat() { + externalFormat.splice(0, externalFormat.length) +} + +export class CanLOG { + vendor: string + log: Logger + + deviceId: string + constructor( + vendor: string, + instance: string, + deviceId: string, + private event: EventEmitter + ) { + this.deviceId = deviceId + this.vendor = vendor + const et1 = externalTransport.map((t) => t.t()) + const dt1 = getDeviceTransportRouters() + this.log = createLogger({ + transports: [new Base(), ...et1, ...dt1], + format: format.combine( + format.json(), + instanceFormat({ instance: instance }), + format.label({ label: `Can-${vendor}` }), + ...externalFormat + ) + }) + } + close() { + this.log.close() + + this.event.removeAllListeners() + } + canBase(data: CanMessage) { + this.log.debug({ + method: 'canBase', + deviceId: this.deviceId, + data + }) + this.event.emit('can-frame', data) + } + + setOption(cmd: string, val: any) { + this.log.info({ + method: 'setOption', + deviceId: this.deviceId, + data: { cmd, val } + }) + } + error(ts: number, msg?: string) { + this.log.error({ + method: 'canError', + deviceId: this.deviceId, + data: { + ts: ts, + msg: msg + } + }) + } +} + +export class UdsLOG { + log: Logger + methodPrefix: string = '' + startTime = Date.now() + constructor(name: string, instance?: string) { + const et = externalTransport.map((t) => t.t()) + const formatList = [format.json(), format.label({ label: name })] + if (instance) { + formatList.push(instanceFormat({ instance: instance })) + } + this.log = createLogger({ + transports: [new Base(), ...et], + format: format.combine(...formatList, ...externalFormat) + }) + } + addTransport(t: Transport) { + this.log.add(t) + } + removeTransport(t: Transport) { + this.log.remove(t) + } + sent(testerid: string, service: ServiceItem, ts: number, recvData?: Buffer, msg?: string) { + this.log.info({ + method: this.methodPrefix + 'udsSent', + id: testerid, + data: { + service, + ts, + recvData, + msg + } + }) + } + recv(testerid: string, service: ServiceItem, ts: number, recvData?: Buffer, msg?: string) { + this.log.info({ + method: this.methodPrefix + 'udsRecv', + id: testerid, + data: { + service, + ts, + recvData, + msg + } + }) + } + warning( + testerid: string, + service: ServiceItem, + sequence: Sequence, + seqIndex: number, + index: number, + ts: number, + recvData?: Buffer, + msg?: string + ) { + this.log.warn({ + method: this.methodPrefix + 'udsWarning', + id: testerid, + data: { + service, + sequence, + index, + seqIndex, + ts, + recvData, + msg + } + }) + } + addMethodPrefix(prefix: string) { + this.methodPrefix = prefix + } + scriptMsg(msg: string, ts: number, level: 'info' | 'warn' | 'error' = 'info') { + this.log[level]({ + method: this.methodPrefix + 'udsScript', + data: { + msg, + ts + } + }) + } + systemMsg(msg: string, ts: number, level: 'info' | 'warn' | 'error' = 'info') { + this.log[level]({ + method: this.methodPrefix + 'udsSystem', + data: { + msg, + ts + } + }) + } + error(testerid: string, msg: string, ts: number, recvData?: Buffer) { + this.log.error({ + method: this.methodPrefix + 'udsError', + id: testerid, + data: { + msg, + ts, + recvData + } + }) + } + udsIndex( + testerid: string, + index: number, + serviceName: string, + action: 'start' | 'finished' | 'progress', + percent?: number + ) { + const l = action == 'start' ? 'debug' : 'info' + this.log[l]({ + method: this.methodPrefix + 'udsIndex', + id: testerid, + data: { + serviceName, + index, + action, + percent + } + }) + } + close() { + this.log.close() + } + testInfo(id: string | undefined, event: TestEvent, msg?: string) { + this.log.info({ + method: 'testInfo', + id, + data: event, + msg + }) + } +} + +export class DoipLOG { + vendor: string + log: Logger + + deviceId: string + + constructor( + vendor: string, + instance: string, + deviceId: string, + private event: EventEmitter, + private ts: number + ) { + this.vendor = vendor + this.deviceId = deviceId + const et1 = externalTransport.map((t) => t.t()) + const dt1 = getDeviceTransportRouters() + this.log = createLogger({ + transports: [new Base(), ...et1, ...dt1], + format: format.combine( + format.json(), + instanceFormat({ instance: instance }), + format.label({ label: `IP-${vendor}` }), + ...externalFormat + ) + }) + } + close() { + this.log.close() + this.event.removeAllListeners() + } + ipBase( + type: 'tcp' | 'udp', + dir: 'OUT' | 'IN', + local: { address?: string; port?: number }, + remote: { address?: string; port?: number }, + data: Buffer + ) { + const ts = getTsUs() - this.ts + if (data.length < 2) { + this.error(ts, `error data lenght, data: ${data.toString('hex')}`) + return ts + } + + const payloadType = data.readUint16BE(2) + let name = '' + switch (payloadType) { + case PayloadType.DoIP_HeaderNegativeAcknowledge: + name = 'Generic DoIP header negative acknowledge' + break + case PayloadType.DoIP_VehicleIdentificationRequest: + name = 'Vehicle identification request message' + break + case PayloadType.DoIP_VehicleIdentificationRequestWithVIN: + name = 'Vehicle identification request message with VIN' + break + case PayloadType.DoIP_VehicleIdentificationRequestWithEID: + name = 'Vehicle identification request message with EID' + break + case PayloadType.DoIP_VehicleAnnouncementResponse: + name = 'Vehicle announcement message/vehicle identification response message' + break + case PayloadType.DoIP_RouteActivationRequest: + name = 'Routing activation request' + break + case PayloadType.DoIP_RouteActivationResponse: + name = 'Routing activation response' + break + case PayloadType.DoIP_AliveRequest: + name = 'Alive check request' + break + case PayloadType.DoIP_AliveResponse: + name = 'Alive check response' + break + case PayloadType.DoIP_EntityStateRequest: + name = 'DoIP entity status request' + break + case PayloadType.DoIP_EntityStateResponse: + name = 'DoIP entity status response' + break + case PayloadType.DoIP_PowerModeInfoRequest: + name = 'Diagnostic power mode information request' + break + case PayloadType.DoIP_PowerModeInfoResponse: + name = 'Diagnostic power mode information response' + break + case PayloadType.DoIP_DiagnosticMessage: + name = 'Diagnostic message' + break + case PayloadType.DoIP_DiagnosticMessagePositiveAcknowledge: + name = 'Diagnostic message positive acknowledgement' + break + case PayloadType.DoIP_DiagnosticMessageNegativeAcknowledge: + name = 'Diagnostic message negative acknowledgement' + break + } + + const val = { + dir, + type, + local: `${local.address}:${local.port}`, + remote: `${remote.address}:${remote.port}`, + data, + ts: ts, + name: name + } + + this.log.info({ + method: 'ipBase', + deviceId: this.deviceId, + data: val + }) + // this.event.emit('ip-frame', val) + return ts + } + error(ts: number, msg?: string) { + this.log.error({ + method: 'ipError', + deviceId: this.deviceId, + data: { + ts: ts, + msg: msg + } + }) + } +} + +export class LinLOG { + vendor: string + log: Logger + deviceId: string + + constructor( + vendor: string, + instance: string, + deviceId: string, + private event: EventEmitter + ) { + this.vendor = vendor + this.deviceId = deviceId + const et1 = externalTransport.map((t) => t.t()) + const dt1 = getDeviceTransportRouters() + this.log = createLogger({ + transports: [new Base(), ...et1, ...dt1], + format: format.combine( + format.json(), + instanceFormat({ instance: instance }), + format.label({ label: `Lin-${vendor}` }), + ...externalFormat + ) + }) + } + close() { + this.log.close() + + this.event.removeAllListeners() + } + linBase(data: LinMsg) { + this.log.debug({ + method: 'linBase', + data, + deviceId: this.deviceId + }) + this.event.emit('lin-frame', data) + } + sendEvent(msg: string, ts: number) { + this.log.info({ + method: 'linEvent', + data: { + msg, + ts + }, + deviceId: this.deviceId + }) + } + error(ts: number, msg?: string, data?: LinMsg) { + this.log.error({ + method: 'linError', + data: { + ts, + msg, + data + }, + deviceId: this.deviceId + }) + } +} + +export class SerialLOG { + vendor: string + log: Logger + deviceId: string + + constructor( + vendor: string, + instance: string, + deviceId: string, + private event: EventEmitter + ) { + this.vendor = vendor + this.deviceId = deviceId + const et1 = externalTransport.map((t) => t.t()) + const dt1 = getDeviceTransportRouters() + this.log = createLogger({ + transports: [new Base(), ...et1, ...dt1], + format: format.combine( + format.json(), + instanceFormat({ instance: instance }), + format.label({ label: `Serial-${vendor}` }), + ...externalFormat + ) + }) + } + close() { + this.log.close() + + this.event.removeAllListeners() + } + serialBase(data: SerialMessage) { + this.log.debug({ + method: 'serialBase', + data, + deviceId: this.deviceId + }) + this.event.emit('serial-frame', data) + } + error(ts: number, msg?: string) { + this.log.error({ + method: 'serialError', + data: { + ts, + msg + }, + deviceId: this.deviceId + }) + } +} + +export class VarLOG { + log: Logger + id?: string + constructor(id?: string) { + this.id = id + + const et1 = externalTransport.map((t) => t.t()) + this.log = createLogger({ + transports: [new Base(), ...et1], + format: format.combine(format.json(), ...externalFormat) + }) + } + setVarByKey(key: string, value: number | string | number[], ts: number) { + const { found, target } = setVarByKey(key, value) + if (found && target) { + this.log.info({ + method: 'setVar', + data: [{ name: target.name, value, id: target.id, uuid: this.id }], + ts + }) + globalThis.varEvent?.emit('update', { + name: target.name, + value, + id: target.id, + uuid: this.id + }) + } + } + setVarByKeyBatch(data: { key: string; value: number | string | number[] }[], ts: number) { + const founds: { index: number; var: VarItem }[] = [] + for (const [index, item] of data.entries()) { + const found = setVarByKey(item.key, item.value) + if (found) { + founds.push({ + index, + var: found.target + }) + } + } + if (founds.length > 0) { + this.log.info({ + method: 'setVar', + data: founds.map((f) => ({ + index: f.index, + name: f.var.name, + value: data[f.index].value, + id: f.var.id, + uuid: this.id + })), + ts + }) + globalThis.varEvent?.emit( + 'update', + founds.map((f) => ({ + name: f.var.name, + value: data[f.index].value, + id: f.var.id, + uuid: this.id + })) + ) + } + } + setVar(name: string, value: number | string | number[], ts: number) { + const { found, target } = setVarMain(name, value) + if (found && target) { + this.log.info({ + method: 'setVar', + data: [{ name: target.name, value, id: target.id, uuid: this.id }], + ts + }) + globalThis.varEvent?.emit('update', { + name: target.name, + value, + id: target.id, + uuid: this.id + }) + } + } + getVar(name: string): number | string | number[] { + return getVarMain(name) + } + close() { + this.log.close() + } +} + +export class SomeipLOG { + vendor: string + log: Logger + + deviceId: string + + constructor( + vendor: string, + instance: string, + deviceId: string, + private event: EventEmitter, + private applicationId?: number + ) { + this.vendor = vendor + this.deviceId = deviceId + const et1 = externalTransport.map((t) => t.t()) + const dt1 = getDeviceTransportRouters() + this.log = createLogger({ + transports: [new Base(), ...et1, ...dt1], + format: format.combine( + format.json(), + instanceFormat({ instance: instance }), + format.label({ label: `${vendor}` }), + ...externalFormat + ) + }) + } + close() { + this.log.close() + + this.event.removeAllListeners() + } + + someipBase(header: Buffer, data: Buffer, ts: number) { + try { + this.log.info({ + method: 'someipBase', + deviceId: this.deviceId, + data: { + header, + data, + ts + } + }) + } catch (e: any) { + this.log.error({ + method: 'someipError', + deviceId: this.deviceId, + data: { + ts: ts, + error: e.toString() + } + }) + } + } + someipMessage(message: SomeipMessage, sending: boolean, ts: number) { + const resolvedSending = + typeof (message as any).sending === 'boolean' ? (message as any).sending : sending === true + // if ( + // this.applicationId !== undefined && + // Number.isFinite(this.applicationId) && + // !resolvedSending && + // (message.client & 0xffff) === (this.applicationId & 0xffff) + // ) { + // return + // } + message.ts = ts + message.sending = resolvedSending + message.payload = Buffer.from(message.payload) + + this.event.emit('someip-frame', message) + setTimeout(() => { + this.log.info({ + method: 'someipBase', + deviceId: this.deviceId, + data: message + }) + }, 0) + } + someipServiceValid(info: VsomeipAvailabilityInfo, ts: number) { + this.log.info({ + method: 'someipServiceValid', + deviceId: this.deviceId, + data: { + info, + ts: ts + } + }) + } + error(ts: number, msg?: string) { + this.log.error({ + method: 'someipError', + deviceId: this.deviceId, + data: { + ts: ts, + error: msg + } + }) + } +} + +export class OsTraceLOG { + vendor: string + log: Logger + closeFlag = false + + constructor(vendor: string, writerToFile?: string) { + this.vendor = vendor + + const et1 = externalTransport.map((t) => t.t()) + this.log = createLogger({ + transports: [new Base(), ...et1], + format: format.combine( + format.json(), + + format.label({ label: `${vendor}` }), + ...externalFormat + ) + }) + + if (writerToFile) { + const csvLine = format((info: any, opts: any) => { + const d = info.data || {} + const method = info.message.method + if (method === 'osEvent') { + const d = (info.message.data as OsEvent) || {} + info[Symbol.for('message')] = `${d.ts},${d.type},${d.id},${d.status},${d.coreId}` + return info + } + return false + }) + + // 获取当前时间作为时间戳后缀 (格式: YYYYMMDDHHmmss) + const timestamp = dayjs().format('YYYYMMDDHHmmss') + + const parsedPath = path.parse(writerToFile) + const fileWithSuffix = path.format({ + dir: parsedPath.dir, + name: parsedPath.name + '_' + timestamp, + ext: parsedPath.ext + }) + + const fileTransport = new transports.File({ + filename: fileWithSuffix, + level: 'info', + options: { + options: { flags: 'w' } + }, + format: format.combine(csvLine()) + }) + this.log.add(fileTransport) + } + } + close() { + this.closeFlag = true + this.log.close() + } + osEvent(ts: number, event: OsEvent) { + if (this.closeFlag) { + return + } + this.log.info({ + method: 'osEvent', + data: event, + ts: ts + }) + } + + error(ts: number, msg?: string) { + if (this.closeFlag) { + return + } + this.log.error({ + method: 'osError', + + error: msg, + ts: ts + }) + } +} + +export class PluginLOG { + log: Logger + + constructor(public pluginId: string) { + const et1 = externalTransport.map((t) => t.t()) + this.log = createLogger({ + transports: [new Base(), ...et1], + format: format.combine(format.json(), ...externalFormat) + }) + } + + pluginEvent(event: string, data: any) { + this.log.info({ + method: 'pluginEvent', + id: this.pluginId, + event: event, + data: data + }) + } + + error(msg: string, data?: any) { + this.log.error({ + method: 'pluginError', + id: this.pluginId, + msg: msg, + data: data + }) + } + + close(): void { + this.log.close() + } +} + +export class ReplayLOG { + log: Logger + closeFlag = false + replayId: string + + constructor(replayId: string, instance?: string) { + this.replayId = replayId + const et1 = externalTransport.map((t) => t.t()) + const formatList = [format.json(), format.label({ label: 'Replay' })] + if (instance) { + formatList.push(instanceFormat({ instance: instance })) + } + this.log = createLogger({ + transports: [new Base(), ...et1], + format: format.combine(...formatList, ...externalFormat) + }) + } + + close() { + this.closeFlag = true + this.log.close() + } + + start(filePath: string, fileFormat: string) { + if (this.closeFlag) return + this.log.info({ + method: 'replayStart', + replayId: this.replayId, + data: { filePath, format: fileFormat } + }) + } + + stop(reason?: string) { + if (this.closeFlag) return + this.log.info({ + method: 'replayStop', + replayId: this.replayId, + data: { reason } + }) + } + + pause() { + if (this.closeFlag) return + this.log.info({ + method: 'replayPause', + replayId: this.replayId, + data: {} + }) + } + + resume() { + if (this.closeFlag) return + this.log.info({ + method: 'replayResume', + replayId: this.replayId, + data: {} + }) + } + + progress(current: number, total: number, percent: number, repeat: number) { + if (this.closeFlag) return + this.log.info({ + method: 'replayProgress', + replayId: this.replayId, + data: { current, total, percent, repeat } + }) + } + + error(msg: string) { + if (this.closeFlag) return + this.log.error({ + method: 'replayError', + replayId: this.replayId, + data: { msg } + }) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/logo.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/logo.html new file mode 100644 index 0000000..4c3743f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/logo.html @@ -0,0 +1 @@ +iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IArs4c6QAAIABJREFUeF7svQmcXVWVLv7tfc65U92ap8wkJEwJAQwyqSCKgohBAQEHtGlFwKG77dbX/+62n9rT69d2222LOGE3tE+USUBQGUQZHCJjJIEQAiEhgUw1V93xDHv/f2vtfe69dasqVYEQArnnR1GpqnPPsPde07e+tbZA42iMQGMEDtgREAfsmzdevDECjRFAQwE0FkFjBA7gEWgogAN48huv3hiBhgJorIHGCBzAI9BQAAfw5DdevTECDQXQWAONETiAR6ChAA7gyW+8emMEGgqgsQYaI3AAj0BDARzAk9949cYINBRAYw00RuAAHoGGAjiAJ7/x6o0RaCiAxhpojMABPAINBXAAT37j1Rsj0FAAjTXQGIEDeAQaCuAAnvzGqzdGoKEAGmugMQIH8Ag0FMABPPmNV2+MQEMBNNZAYwQO4BFoKIADePIbr94YgYYCaKyBxggcwCPQUAAH8OQ3Xr0xAg0F0FgDjRE4gEegoQAO4MlvvHpjBBoKoLEGGiNwAI9AQwG89ibfAeDZx9b2e+3vAgAhAPpbE5DqAFQTAGW/6uecfo4AEQIiAEQEFEsAivb8hL0HXTey/46vQdeke9H3xvEaHIGGAnhtTZoAmjuQkq2p1jadymRUpqNDl30vAyFaA2ihXHck8rwxqUQotV6sBE4UEAdLINBShDIkzaDNvGshIJXQkS5BYlRDjbiRLkiNbYB8MRTK91TYoeEIocNhFbkF0gtaRVLrhPAQlVVbS27wwRNywJcbSuC1tZb4aRsKYP+cNJoXCaAZqVRHItOT6uldGPjZVLdOtR4Kx+mNFKJAaSWEVKGKMg50G71KJMSohhhzIAMhsFgLdaKGPlhrGAuu6LIVOy4EHAmokgZGJeSw0Kqgtd4OjReEkL6C6IDWUms9LITMQ2qhIikgIIWKClo6QzoMd0WOOySDYERK4btKFMcCt4hCf4iwV2Dh5hD33UeeQuPYz0agoQD2swlhwZ8zJ9XaeXBSJtNLvWz7SZF0D1KhKikhOpVSh2qgF5pcdq2UVlqTiQbYVdcCgdDWLRdoEkCH1qKJztWA1qxXSPWTDEPQT5r0BrvyFALoSAMlAZSgEQktEgoQGvCVQESxBjSkhpACKCgVDQNil0Y0oqNom0a0Q2u1SQq1zS+UR1NO0i0FpRGs/+WgDUv2vxE/gJ+ooQBe3cmPLX021baorX3RQd0q29aqvExHEOmsUuooLcWJSmOhFLKkVJSFQgegK2acpL/2qP+5YuyFmWpVN+Ny/McnjIbQksGE+LP15ytAaYGCEKqgBXYKjR3Q2CSV3qZVNIow8nQU9iHwnylF8sV00gmKvl9EwikhbA1Q6JPY3B0AN8b4wqs7IwfY3RsK4NWbcAfoTbUdc4SXyGSPUMn2E0MVLg8hCbDrEFq3RVp3A1EbtMhAsKl3hFLuTAS+/rWEVQAmspj5Ma0CkBz6KwE3AnQZAH3lQR4E/167EOiXWm9EqJ5WUXlnFEabdDnc7jsYSUm4pUiM4Mm7hhoewsznZW+d2VAAe2skp7+OiemRast0dXc3zz+0TbV0tSvhNEURlkcSJwE4QkF70FEKERwFAQ3F/rciv5vd75eOtZESiD2EqkLY/YOzArCrhDyBCSkEejg+6OnkhHSAgIQQSguFMS3V84wvQGyC0tuiIByT5ZIXIuhzhPNsCXITChjFs3fkGpmF6RfU3jijoQD2xiiOvwaN6SSOdW9T++LZxzjd849X6aYjI+VkNdABrdqg0K2FatNAlhB2krNYUOtd+oq8zfC5Y+Gd6vQ9uh69mWAUYMIxtUKxHoc2oQLhC4D5LqyHIKJoAKG/Sfn+Kij1SFHicay5m7yIxvEKj0BDAbxyA0wrP4v03JaexYsXiK6eBQEciuePC7U4XMJJKugUlMXVbCyv9fhQeKqY/qU+9h4J/G5uMpXAa4YVCWOMl9b4kGOi/yIBwRSFnCPE41rph1U5/yB8tVn7ekcp6QdwVRlFlLDu1EIj3fhSZ37yzzUUwN4dz8rVuruXZsVBvUeLbPtxkXZPiOAsUFosiHTQouE0QWmpBSXiDTbP3n0NoDcTwa9352s/M3MXf5oBYOGsOar4Y+WXtfeKFcB4JVD9fAxCVp5VEKQhIJQiDyEnpBgVwGah1SYdljeoUnlnGIbPSzg7/CaxGQ/eMfoKTdkBedmGAtg7004puCzS6UzvguWe29XbW/YyC7XCiT6i4wTk0dC6ieJ4rUigJFPqOGKu8dF3J/Tx3+pR/N09PgmmQe2nnmZRl0WY6NuPVwC7zRoIAQUKEcz9Kk6AEXF+1aguOhJ8fo3y47yIpg+PCC2eFxDbEfnPqzKBh8EzGtGm0HU2ork8hPvuo3CicbyMEWgogJcxePajApmuWV0HH36Y29l7hJLJrkBFh2iIRVqphVrrFmhkiThDQkziNJmgTyf8uxP82K0fF++zpeagfdwbOhOUAQlbJdFnwbxY6AmAjF10FlNIJhJVr0kibw7znaFKRgvjc+z3GEiUDr+/kuz7mOvbg+S+8p5CREIQ7ZD5CCUpEGqoHbpcfj4MyvdKBPeWH//lhimmbwoc5uVP9uvtCg0F8NJmlPzWTLJ1fnfTokN63faWIyOVWBZpHAmIHq31fBb8GjAvvk00ibtf+whTKYKq5ZyIL8a/YWpPRQvElnj8+fWhQfVnI8BVcTQ/V3RDHArUhQBV3D9WBJOnGauOBnkCAiAaUf0dWWzHf57Go/aZhRAFoaLf6bB0V1gu/9rRUV/JiQahEgHWtJYafII9W9ANBTD9eNVbE4He3u6e2UcdItpaj4siuTSUeplWslcJ1Sm18LTWKcrZ06Kvj+unQuXj86LKCVVcgARgQuxc89z8WRIq+oj9vGC0fmpDKCxYF4ubmIAOUhKyauvjv9efNkEBEN9w3FFHVOL7GutvAgOH+Ygk95N6ORMxBy2E6JMSlFJcrcvFdTosP6lCZ6fvJLbiD7eONPgE0y/q+IyGApj5WGWRbO3tWXpMj2jtXBppd1kIfZyO5CEaqsdY+wg6rrOpk4NKDD9ZhjAOCyhGrsPcFFlAVBVAJcOotbkSyb4FEqu3FDAKwAjZuIOvbxUG/U0aMjDjBcQNNn65/ZyCtCGA5PMmYvhxCKC1YS3UK4j6n2l4xv1OO+wRUGRhPIPxIUa9R0D3o2tI4RAjYpcQ8mkRBetDv9AHP3oSCk/6Um1seAMzW9gNBTCzcUp0LV6x3Jk1/5TI9Y6IIr1Ua9EL6G4N3aQ1mJ1nYvyJLjD9vqoAzJBX8/zGaJOFJZCQFjyfz7JmLDgh64Ko+oqEjGJoW1ejIwgdgkRBELxG3+l30HBgriP5eRwISYQestckcLau13GhhGcEXyZYMLXkp4Amc1zJAJBCYRiPrxYvGiPM4zGA8SGExRCmHePYI6D7k0dgwgS+vjIKgp6lVqdaglIghMgJiKKA0pFST+pS4QGlgnvDMNqIJ365q84baGADdXPRUABTL05ay+mmRUdmW2bNOyb0mk6OtHsqdLREaXQrXS2rq3XzYwUw3vVXcaYPVGlTe5CoGpvMOQIocpFJ0JW1vswLILENIbQPqSIIVYYTFJFURSTCPJLKR7NbQktGoNkTSCUdpFwHHisWhUhpFMoBigEwUlQYKbvIqwTKIgGZSEF5bQgTzQicFEI48IVEpCU/iwkVNCQrIVIuVBvAaIOF/BjWrHgHDulCNvHmd3vOOzDMQxJ6Zi4Kx4YGxuOh+5tbm+/jeAcCZQG5BkHx12Ept15DP+lIf1e5hB1Ydx8Ri6apfJhWU73uTmgogKmmtLe3qXfuEctFU+cbfeGcoqCPUFovFEqnTXw/+VqKY/jJLL7xEASUqgJb8YJmAhBZU032ugxPlQC/hAR9qRJanDwO7nFxRG8S85ojLGotYnEvMK/bQ8oNIUlBkIBa4WObGv+bBIo8C7LqmoTbeBWlssCW7QHW9yXwbL/EUzsLeOpFYEfYDJXMQKc7EXrNKNEzS/IlSCmYUgS20Axy2ECD6gPZQyCFFvceIVAxflfjBRmPpOao4xlQlqEGymCPgK7MOIG9Gb0Ghyb8HFVmIisMODkt9Q6JaJcq59eh7K9TIvpN0BatbaQNJy72hgIYPyYS6E3PWrpgoeice7ivnZMj4DitcZQSUZYR6dp6+prPVgWeXG+y+LRcyTGtLngqyGUHneN6IzxCKjg6hKd9IMghVc6hWw7ixIUJLO6QeMPsAg7rTaC3OYITleHICFJEkOT6U0WwJKG3VnhC9EHWlFQOBdjWhWbLysCBiT20i1AkyOmAdpOIfA+DeRcPPRvhiR0uHtk6imf6POSdZoSJNoTpduQiiVC6UI4LrU1zIospVsWb7qs54BjPB6jTm/HnpjSt4yy95PShOca9rMUUhdDCNX1OpNBSib5I+RvDQuEuROHdYWdpNe67z2/UGVRHu6EAasYiu+QNXU298xYr13tbpHAKFN4QaTRpqIwmE8oWqI4LryK2pmRdI7Z8HI2zcPFP2vxesPW1ABaBBqoIJ8wjURzBLC+PUw5N47iFPk46VGB+q+K/OTJAIihDqIBjfWMA44R6LElWmC1kX59lqCXjTCpk8QmxR0P5eapHEmloCgmkiyB08MLOAKuekVi7TeHeZ3PYHrQBzT0oOW0oCwehTAAkfFBQggIbQiFoJCy4aLuUxcFDNasQU4dr+Qa1mrUuLcgegVEABoOoFCuR/yTin4V0KHwh7edDyNXaL94VlnN3h0HwHJ74ZV9DCVjP7XUX1LykF2pv7VpxzBI0d6xQkThMCXWy1vporVWSVtl4d9+6nrW0XbbsBjiLqKUeA3miUrhHf5WKBCGPZFhCsjiAo9rH8NZFDt6+VGP5bAcpkYMjfXblpS6zlWYfglZ5LfgeW0S+v/UkYuE3zrIl4tiBqNMAsYKoz/9Xh60W5iM/hWISCaEJMMwg1AKhSGPzToV7npC4a/0I1g+lUUz0oJDsRF4mqJCRPYIYwGMAkT2RuB2J8QrMz7GAW94BZwEmHoZBSRJOFt4oALoiZTsYJKx7bZoDfkeH1JBTciTWyij4bVgcXReqcJ0jg51l4fZhxCvh2TvIKzgg8YED0QOYgAT3nvLu5aFMX+ir6AyhZIeAJjJPllz5WqouL7JKmq+W1kv/poVmXH9znuXhaQU3GkNqtA+HZnO44LgM3vkGYHHbKFK6ABkSsEcl9HE8TQrHZAXiw6T7rJfLbnuNgDBabwVAWIVQm/qLZ5iVBP2vPpUXB/HjM4axs8EKiITUCh0/CoN0SWi3CaFMY3jMwS8eL+LudSX8+nkPpfQc5Ag7cFLQMjku78fqxb6bINyAQiqhIO2zVYlHBgSsjIFVAAxJkpKILb92oW1YMD7FGHsWpJSlhuPlhZQ7oKM+Xc49ERXz6zScR72k3lxs8rcfqC3LDkQFEPvRTaneg7rbDz22vQR5htL6Qg11dMTou4kw40p8XrK1nH1lUH3K0StapOz+GyWgNIFxCp6O4PijaMnvwCkLSvjom9N48yKFrBzl2F2iYBrwWoEmt1kQOBgD6JVcmxUBK6cVx6NGbhkdj6m19cZzXO6M0LPd9BNggbMfqDPERrgoRRdbXyvI/PsEIpFCIJMYGHPxs9XATatHsD7fiXzTPOQi+juh+eQFuUawLfgXU5NJRumYQFWmcSFwzyqAWAGxJ2CzAhxq2fePsQFLMeZOCkpIQWAhp0Klqx3h9Omg+GxQHP61FOpBxxGPFPv8Pmw+8GoLDiQFUGv5Uy0HL1ue7F38ptBLHBEpfSyAJZFSbbzua42v0lybz3JKgm8Ug0XTTXGL1AqKUnca8KISnOIA5uohnHe0wIffnsDilhy8cAwyKvG5HBtUrHGVGceFOZXQ3uAJsW8bI+AzSquNr8KZ1KW2/rS9fkwMsqeScHIKLk741SyTCSvGxh+M1NO/XUTsGTTj6W0Brvutj5vXKwy48zHqZhHJrKEB2+tQctFoPWpJSAqAwg1TTmw8gMkVFgmzmaqqpY9VCD+15RGYyqK4v4KEdihN6ZBOKEOrNbo4cm8YFO9K+on1+XU/33mghQIHkgKIBSHRfNDyY5PzF53uC/cMrbBEa3Rqm1gmKzzuUFXhN5X6No1HMajWMB5DBE8FcHM7sUDvwEdPSuEDb/YwK5mDq4bhcLt98hSqpb/Ve4zPElQMf8Xln1p+Z/SXCmo+g7NjxVGrAOpQxYkYQt11+QVIqImwlEQkmjDop/DjRxT++/dj2OLPw1iqGz41FZekC1wTYVhCkROHB/ZZYshvQg1DnQLgu/JnKFVJT2AIT7XZgjgzw+dIF47rFR3g8SjI/07nR56OpH4skPoZPHoP0YkPiONAUAC1lj/RvfSNy3T73JW+I87QkV6htZOIhZ/z1DXyb/LclMozNB3WDRYUVIoYeOS2+0jkd2GJswuXnZrCeScItGIMrsoxek9W1Fyzxq2ouYeJsWuOCVz62CrbOH+q8l02wC9xOo0vXTnY8pvIxtrP3Vw3TilWPh2DpKbsmYWNGIeyFWXdhLsfK+Hbq0pYM9qLsWQnQpFF6Dq2XzHdNwYDzT1rMUHCCSZ4QHWgIRGXOCxjBoIFAmvHl6eUQFoCE6V2HG8MLvpF5A8GuaG74fvX+0/8cs0kau11CRK+xBXzmlSOyeYlb1iR7F3wzgDqbCWcIyNCsuoErspLoZieHG+y9KYnHykCNlQq4BhfFvuwINyKy09O44MnSrTTWtJjnKNngeLPx7JlcvEcPVhFYm0lDyY37Z7I3K+oDW7CvReOCQSmGEuouX6sAOr0wvi7T6FsTNgQp/SI1UhZBAI2DSVZyQyKyOKeJ4Ar7s/jidwcjCY72CMwzENLO7av61oHKVZusYKuKLsJWQPCZSgFSL5DNTyIH56VAk0Bj7cQFBIQqChcB46K1ka5kRuiqPzTIKG24qHXfyvzvbOq9sLCfAUuUWv5k61HHLvM6Z67MtTe6VqrY5VCst7i8zOw0JrUH9F2KVUVWmAuYqsfIVkeQm9hGz52ksYfv91Fj8zBjUahiZQTF9vUxO9GwusMiK0UrLfacawfj0dMPCKOPiuIesGLL2uTA/HfY0GvTHAFW7A4Q3x+hWhj6MhGD1Rj9HEsnsk0VOVB4zvtBmQ0Nt30FXQyyOsW3LkmxNfvL+EJfw5GnXZEbtamMc1mB4ww8P9subI0TETKJIxfvLVZA0oRGu/D3NKcSR4N8RPsYbEByyNwXAjpjkmI51Rx7G5dGr2r5KVW4dHbCzVrs3ZNvQJLdt9f8vWsAOLRTHYsecMKt2f+6SUtz9aOXKaUZuHnjFKN4TUuv+leabr3GBKPJv691kjqAtKDz+O9i4r4y/c2Y2HbCGQ4DNcQfG3xyuQufUUg6x3J6Sx7bUMOrtapTQMaclFFYNkdj1N2NuhQsdtsbkzZDJYl4hlwbr7mqL1X7XPNFFRkyZzGU6YxJiHmQF1CuUmMRm34waoQ3/x9hO1yCfJOEwJiPGqy5LESsCEBcRIsOGhSh+MPU7swXgGYYitTUUkU4nolysqCx42zFFT4sFEF+XtVcewuROWnfa/5uTpFsO8l9RW64+tRAYyz/F1Ljl0me+auLME9QyFaoSFj4Y8VAI8BI/ws/IavT0dIHrvScHWIVH4nljtb8MVzmvDWQ0K4wSAk0XetZarkoGPqb2zxay2vMV1mKivMOzuz8UzUzkgciLMVswJMAk0FN8SZJzeXUocx1ZfSitxxx+gEU01nqu65qtC8KGMXXF1ngXumJvOHqg1J+RKTKafpFNZM9gm1MTrhroqUELn/ThteLGbw9V8UcN0TKQwkZsP3shWST6V/gUMGfWIaMZaPChBICUVbJxDDLLUewKRKoJKRSPiOFCNRVHpMFUd/4yK6szDmrsWzdxBhg2fx9ZIteD0qgIrlp5g/3XPQ6T5wdgCxTCNKWrC/4jiTXJnyW1uNxyg/EHFprUA6KqJp1wZ88oQQf3JGBm1yF2SUN4LMbrl1qeNVVi/w9Zq7XoCkxQkmWDM7NcwudKCJauskEEVEzU1hdExjpBCh6EsEoUSZtJULlPzQWDt736TrIJ1wkE65yCRcNKc9pBICnks1BSFXFkKVIFURri4CEW0hWPWe65VAbE2nNkjThQDxJ+PsBw0YIfYk2R58pxkPPOfgy7fksT5awqnDkGm95PrThmR26G2+liP6msNhTGC8B8CWnzEBMu4mBBjPhLTEIsZ4SRnSs0jCLgKlonU6N3SrA3V3Mec8WqMEXiGbvG8v+3pSAOMt/+IVR6J3wcpAyNNDrVcASJJ1536TtWRZZVB+cvUZ7COGWeRz2NhUHMHh/lP4+sUdOLp3GF44xNhyNY9vLXptfM94gaUBsiBNHGLWEVw9RyszttS2DJaeR5CwNyGAh4KfwOqnC1i9OY0nXhjBmueH8cIw4EdxdZzxWOKImI1jDS5gzJUZGkPsNQXIjgYyKaCrCVhxcC8ObVX48DtczM4OAWHJgHFVxG1CX5FJl+lLyUKYeMRINWceiKyTxHDQgW/dW8b3HvawK70IRafJnKYJpzAdhPgjPI61Am3pxYKoy6QeTDqQqMysFu10xApgYuaE6jooL2SfyXF9CfVomB/5hesHtxWKzhOvJ0/g9aQAKpa/46DlK9zZB51Rdt2VkRLLFCWkreNdH/NTvM9iQa6/Ulwqm1ABWkZ34T09L+L/XJRFl+yDRJHLfEwMXkecqVcAsZc/mRvNlqtGShlvoJx4kpl0xXIC9/w+wEMveLjviW3YMqhR5oya4JCEWoHQl0HVTX/haiRvG4Fwm63YpbekGPJoSNmQEiTJsR2F6HcJJZDWGsu7gR9/rg0d6TFoQXWLNVykOsGZkZ2aiUKoKwfm+n6m+joIvTases7FF28rYk3uYIwlWhGyZY51BsXzhilovui1QwiHNy82JcScxk0y+GcUL4UcVcBwCgXAldOsV8j7cL0ytF6n88O3i6h81+vJE3g9KIBxlr91yVHLvK4FK33pnhEJsQKE3VUFlEC/yjuT5SdhUpGJ/yne91QZLX0b8Nen+Lj0bS5S0XbDXZ8sPz9ZTr5CprEiUhvzc9hgk+sBAWAZlEUaz2xN4GePCNz++DZs7AtRCAQC6gFEDMMaITKOBXHllN0qjJRAZHv+GBadS1+OAhFqKKgxCLq1lrbjFj8Gk+pt5x8lEUQa87sU7vvCfDSpHRYPoM9XXaZY6F92SnIcqDgxZOBmIKRoJbEKkxhQbfjabTlc/Yc2DGXmwk+kDJhJbD/2BAywR2Bt0onQJMpIjr0IqDJKTfOQd3tNCGHrqmoVQFxIZMaoKg6CFgczCB1oR8LxkmWpw9WqMPoLBPnbC7nEmtdDOPB6UADxukw0H3T4sd7cQ0+PpDw71GKZJrTf4mET0H4SfKV4J0v6TsBY0i9hTv9aXPmBJpx6WA5uOAwZ19qz82+tYuxO2PQgm4o4pI1h67g6LTaj3BbMuPehTGK03Iwf3Onj2kf78Wy/YkVUoq12rXNQLesxGqsqJqblBj1NChoZITCvXePYJZ1YMiuD4w8uYn6nQFubh0RSmn4DLnEZqGWYSafpKKI2AtChMOUIIVAoaaiEQrdXgERcHGdYkOww1K2Ul60EKtqkJmsQ3yP+FWkpKRFJB4Hbidsfl/jyzSW8kDkcOSpGori+4g2YegEvKGGJeA7/8W4PszPA3/5iBL8eOxz5VCcEhVb2kJUCovoXszRkU5ehCRPQ2qUGA5BewheI1unC6O06KN1ZHPYfw+b7bCXXjHyi/e6k17ICqLX8ibaDli6TcxavDJzEGUqrY+stP2tzS+zhunzO85PbTzIRIB3kcGRpA675eDOWtA3AiWgDGpt2484d1vWfxOqzkNhuAUYZxHl0Yz0Vsc50Cr5uwernJK55oIDbHhtEXtFGecJ06JlyadSQWXQEV0q0aI3TlrbgtOXNeO+bBVrTVFxU5jJiIiGZ5pwG2GRA0GYK2NpxebEG9RIhogOHBBEXM4P2HRYJx3g7NkXIXkctplBPvLG04crj13fxrS8+qm+oUhsCxMqzNsRij8n2CHSasKE/i8/90Mfv8wsw6rVwGpGVE3kBhA+oPBb4T+CXl3Ugm9uKLUE7PvaTCE95y6FFiwUTzfyMq3eKGYgTeBamMsHEWxIylfYF1KMqN3K3LuXuLHrhs3j0voHXalbgtawA4jWXap57+BuSCw55pw95diTlkWT5YyMdO+L0nRWARf0Z+OP0F5ApDOA4tQHXfDKLOV4fBIklCQCD/DF1b2rlXasAeEC5qQZJDXXOaUJRteOWX5fxg1UFPPh8ju0rufjGukyTN6/aLFD921EdLr56yQKctDgHR+Xh+EXWU8p1oV0P8BIIIwnaRbxcDFAsAvliiHIkkCsJlAMBFQgkhEZTRqE5qdHWRI1BFZJpCZE0HYqcsAxHUQ0Djxw/BUMRxM6Z7qgVoj1RAKw9ay5eJQHYtCbF8w7G3F781f+M4ZbnezHUPAcBvTdoyklBRkiMbsVnjhrCp45PYsdwgD+91cdT8iD4TT3Wb6qwpqoty+qwiDpswGRQuf+IC5lMl6TSa1V+8LciKKyDjB4rBJnnsPZntMX5a+qYwWzu1++TbZ192OHeQYecFYrk6YFQVNU3LubnJRWn+tjyG4vL1XtKoak0iFO9LfjOJ1LoFduZ5st+MfsXxqrwUYes144Kx6xcQ1xF/yLdxEy36x8ErryjDxsHQhb8sEpQ5fg+BiDj600ApWLyDxw0QePmT87F2w4ZhpQlKGq+IZIYGnHw8AaNP2xL4MltQ3h2VwG7RoAylycbL4SZ8TGHyEIRZOhD+6r0t2YPWNzr4KQlPXjH4SGOWpREJpmDDHLchoy5BBVq7uSNO2a0WnaHAUy2ImsUganKdFEWHfjOAwr/9tsm9LUsQpDMsoInpiZUiGShH6nhTcgGPsJ0M3wpINs6UW6ajxwyJs9JhVwNaZnMAAAgAElEQVQEodo2aZPVUtT8zmAC7Gx4WiTTeUeovmB0oB9h6R4pwh8XHrv3sdeaJ/CaVgCp3sMWZQ4+7OxQeBeEWq7QCFO2wXRVXG0BXtynj2i9hgKskMkP4m3e07jq0lZ06m3cjYfZcTWx/aQLun7UyC0mCyLJQrkoiV78zz0hrrq/D+sHFXzuGy6QhkRXc4QVc9swli9j1Qsl5IQNAeLqv3oX1CoAQv2bBXDjxbOwsKuEZ3dKPLZJ4O6n+7GxjzAEgbKUKNtERWjRP35vCwYSWFbFMUy6i3kQVLDEKTNSikTBFfCkxqwM8Fdn9+KiEwN4wQj3H5ygAGaweehulUJdCFApe66ApzVeAY0vF1cR2Umg7DTj1j+k8L9/prC17TCjBKhHoQogZQg9NIx0rh/v6h7DOcdIjAjgf9ansU4vRsFp4YIgGdmQKa5mtg9r9kGoNi+JPUpGZLQjhOfC9VLsdURjgw8j8K9ynPItY6+xcOA1rQBaTzjrWOUkL1UQ52ilu2qWisX+TMaOiT5s9TUCarGtAjSVB/A2uQX/fWkKrdgORweWnVfXcafillKRCdkN0yrErA6r75nLQgIFFGUPPvy1ETywpYiRwIB6ZG/OPKgNf/2eLA5uKcPJlTEm23Hat7ZgY0Bo/0zCAMGC2UourmNYiqWQMAS6h2k/Zjr1EmnGEJQISWcAkVJfLOj0s81vsVdDYYh5lwqqXuOGu0KhW2pc9fF2nHk41TnkzLtzzG0BQvNDVcb31oqKFUO9QrTZC+OUCfgyizXbm/GpH0VYn1mKUrLZQLVUrKUiYHgHTs5uwTfPa0M2GkR/kMVn7vbxuFjGXgSY5k2Kkau84FZA3Di9OL4HJL02kzE5PZggYJBSsc8Fw4O3IghuLDZlH8eqG4t2QGpxqhk5R/v6pL01Xfv0ubu6DmuODjl8YVk7K4WQ52qtiOgz4V2M1SfhsJV8rA0iZEv9OEltwP98ug2d6kW2/IYqS6nAulepWRBGAdQd5JNaBq0K0/jVUylc9qMhbKatLImZC6BLAPd9ahEWp1+EQyQjncSmfDPOvLofG2m/j5nky+MVxWCXeR9j0eufh0gyxl3ndn42aUihuymQiSvsyZKaNKGpk7eViraSz8o4slLgnENdfOvjCaQEMSDtSMcKgFVtjRLYWytqwkTYSMxev+KaawcREtgw2IZP3hziMSxDLtnMjUnYw5FlpIe34IzUdvzruSlkomFsCztw+d0OnvAPRdlLQxJIy52DIvbUHNPQ0FCouLJw/Esx5kOVjbQekgk40stBBeuC4YHbZVT6eWFN5+OvlT0K99Z07VMF0H7Se5dH2rkgcvTZiMRBGmidIAem5paFkBF/7tij0OyP4bjwaVzz6Qx6yPIrm/KKcaH6fP9UCoDly4FCEqJM6HMIXdR4sS+NS68r4KFhjZzd7bYDwD+8tQUfOiEBEYbYsF3iit+XcfPmPEYnth3c7VgaJD8OxMdvxcWAIi1YJjcRP4DceWLGVTv7EFwWE4Gk0HClwQYsgxZJl2jCGgkXSHgSB/e24qPHSpx1TBEyKBgPwgKDkypExkH2wrKaQgFMPjgOwkhgm56NT1wbYpU6HIVEh+2/EsHRZWSGt+KU5u248pwMUrk+PD7WhU/dn8QLiUMQCnLlTZ0EPTmND21QVOvWxCFBvBGJ8QAJEyFPIAnXS5QRlH7nj4zcIMr4eSm9fTsefdTyqvepeOzRzfbCTO3R/V7mycd6rcfNmq/cxLlay4sU9NGTXdBYfuMkkgJgIEwrpPwCjsmvxvV/0oVZzguQ5EDH1N2pnixWAHFqj3vTUayfQkG04tZflBAVHLzvjRrN0ShUQWNwNIM7Nnm4YvUQ1pcAisc7hcKZi5sxXPTx0LYyhhyJUmC6Ce/5EfshlsDEkBZZLhPLu0ogJYCWTITD52axdEEXerMuepoK6G0uY1abi/YmcH1AMkEp7pg1SBwBYilTMQRVQVIvTQ1PlOFQZmQcEBrXMIx/+mqtwORLa2LWYybhT5XMNCFasgQFstJh5KBfzsHHfujjd8FSjHlZsy+DCtjzSuV34DhnC7793iakwmHctaMZX3p8NvrduYwHEBeEMzOsEMl7qPp7FbJRhfDBYZbm0mbhCplMQ0pnJCoX7g1zwze4CO4vrP7Ftj2f2337ideCAqjEUdmTz+yGnz5HC3GBhj4GQOdEy29eiZUAuf7KsOaaojIOHV6LH/9JE+aR8FMlH6+9Op/fVI6Y6jtr6QzKbxg6lF4LdRseWJPCP94xgDXbiiCrevEiD599k4sOtwzP0ciXPTxdbsG5N/djm+1x5xEJR5kU4IxLZtiLiK0qIdaU4gNc4UKKwBCYINCV1njz4T04ZmEaR87L4+glTcikQjhBibsWMaEp7mJU2bnHth231swMnK1l4KGJWxvvZpnEf6q4yePfrJ5AVD9f01UPz1gcrGASpWGXOw8X/yDEb9Vy5KkHoaJW6xFkUELaH8TxYhP+9fQU0qKM/9yQxA+2HIKiy7u5G8PO76Joc5EJtOG4KjF+L5Pxpe0IPMhUKvKkt93PD92CfP7qwuN3rJ7x879KJ74WFIAZmmOP9ZoSC9+utP6EAM7UWqfNXFVfIc6989qNiPlGuf4QTZFCz/bHcNMnW7C0fTtclTeFMTU1O3Ewzc5yJaVneuLHpbRKexgJZ+Fvvz+CG/4wgjFG8IEUBL79tiwuPMSHqwKuzCsLFztFF87+f9uxMQBX9HFfoanQ/ikXgICsNOLTcGnTDa3RlQTetLQTJy5sxQkHl3DUQS5kkOf0IPUg5K5EnOKKKYlxgipWkOMt72QpMFMmPM3KnNA3YB8pgCmei2i7YeBgl5yNj/4wxO+DI1GUabtxaggR+UhHIzg62IB/PCWDoEnic/d42OAejkgnrTdk0X8TD1SUghkjW0cQvzdxy223I2Imupkm2jfucX+4/yahyrfnRfj8/txj8LWhAE46KZ3BnMMV9DlS4xyt9ZHxsqzvgBNvvsmof6SQFAod257BVe8v4bTFg/C4lNd097UGvrZdn21jZ6SGeebcloYEPY2ntrXjT6/aiUd3BdTUm117uhDZjkcv78ZCMQDpA/lEEx7oz+IffzWAtQNllOnzDMBNl1+sc6cZpOPqfxCJtd0DznnjHLztaOC0YxPw/GG4kc/EHUa8eSNRIxmGwVdbGjiNIE8GRM4gOzGxPLhWq75Eszad0tndZXlSJUJfYpuYgw//KMJjajmKwmPvizZZRVBGSg3hsPIm/NmbM1hTSOO7G3pRkO3cltzgHLYzMnkBNUquUkXoWJCA8AJ+XgJfBbRHFOzMKEJ/czC066dAdHPhsbv3W37Aa0IBZE84f6kS0fu0VucC4giYzNqkBymAOO3nknAOPI+/fWM/Lj+5AC8aqlBhKx+uN3Es8Fb4mYJKIH8THt06Bx/79w3Y5APlSmGtURSkADZ8tgOdwTCKuhXfeCjE1x4dw6gU8LkTMCkban4x/cqOPQRac7TEmoTA0tkJXHTyHJxzgkC7NwJHF83uQTZvz5qMy4N5rxzbfZid2QkdeiY00qrtgjoJi2W6BVJxTioKpO4dp73AS1QSU32swtuSCEOJTdFcfPiHAda6S+ETR4CUWhjQHshIhyV05J7BmUe342fPS/S7ixHBq/Q0pDfhqkAh4LAnaA5WAhYfIOyFp9VSljlc89Lwkh5k4D9SGtj13ZJTvgWPnjoIfHmmkd9eHpSpLzfd9OyzB5nyRqdenMoUxt6loC4TQpwGmN0o41r1uG7TWD0q56USUEP/a8oP4qO96/GVczwk/G0sDBO68DLhzyxaDiPjEaG8PlvuNH63eTYu/s9n8CIZj0rrfmPRab6JoffkXy+ELJbxT7eP4rpnCxhzHC7A2Q3J376yeSbDZzdpA3rBZgm8Y3k7LjszgxMXBey5yJC4/pzWsN19uFxt/NBFdVPK17TeB5MBuAe37fhBHsMUSyBWVi+F8DdVWjMGVGOu/ww8jOkWIBODOO9vFH8leWB6gyMIPTye78H5PxLYmlmMSCR4vKXyoVWAhMqhrbgDbz18Fh7aqjCQ7EZJE6pCpRI2q8KNSLgeqKbPYLW1WLUc2dyT6MJuKgPhyOd0bvQWf3TwpiLkWqy5m7Yo36+O/VoBNJ+6sisoiuXQ7vlC6PMA9MRSYxWAiBVAzPTjwhqlkQkLeGPxCdz6Jyk0hzsguNNNBU+stuTiklIzwZWAl4VRIpDNeGDTbFz8H+uxg8tzKw1F+Fpm60uBJDTOOqID618YwtacQEFIhJp27Z0ZMTRm+7pao1kInH5kKz59ViveOLcETwzb1mOmeMdsMloj9PU2Jf6ZacZWQcREF35FS2SarrXXy1EAVVM5cbHv5RXHZCCV4g0/EqQgicpttIGZb+2gpBO4aUM7/vyBVgymeyppVFozBKTKcgHz/G142yFZrBlysTHoRkk2IeRxM9hN3CBF2qakJvSZqATIEyBvj0lCqdSYo/W6YGTw1rJfus1ffce6/Ur6907C9hV7JZE5/uxjtXAuBPBeAAeZUNi03RXC4R17zGGYfhGlriCQUGXM71uN2y5rwZLEVkhJLD86bxIPjKSU2uMYYlxls8lINuOm33n43I92gbaSJeSe0mwLPYmE4+C5Uogy73dvXEKXc0cavqK0kGXXscex+/Gh56aoowkCJyzM4q/Pb8eJi8pIqBGIqMwW3uT1rX6KeQqVV7cSVRmLqtahmNRsdCKgOUSwTTLYotGiNr2EYo/J+rfmgSvdgGY4vxXqbn0IUO+RTHO9ynvVXKfWo4gH1OrBPJrx3fslnt4e4TOntePwzmG4fs4UgJgX4jWRE6344q+A/950MHJuM7v1HCpS81EVIFMewdkHa3zoxFn4wm0b8ZxciKKm+gKTETAKwJYKcwgQZwhMPXKlxwA3nKAyZg8gJZDwyq6KflUc6LuqmEzfiVU3Enlz+lhwhsP+ck/by/r45T5O/PnzHbwh15FKpt4nNC4BcHws6NWxs66+afJeUQBEl23uew7XnF3E6Qv74CrqbkNAzRRjTpNpOk2b2J8ia68V1z+YxOe/vxNUG2h6/ipQ2uHPl7ch66XwT4/tQMFW/RFwxJ+rFI5WF9/u5poGnzho89PAF845GOedqJDRuyB1yTAODY/Z4hYxiFinxOLdi2PsjTsZm0YayqVtvgUCX2JkDNg5EqI/54Ao7C0phbndKbQmysiIIhBSx6N4HOKmBLSph+2hxwTbuKX4JGM5lQKoWxL1mEE9L2A6hVmhYvLWXy4e257CBV/PoV8JdEngvy45CG+ZOwAZjplmJtwo2YGKNHLeHFxwncJvivORVy4cakbKEVGZ58Eb3oxrL1/MlYWfuKEfQ24PVEQbiBgwlrgBFatfUQB2r0NrCNgzFWRRqPW5I5xkkkqQ+2SpcHNxeOBG18mvya3+NdmU/eLYPxXACWe2pGXTkYii8yDE+xyhDmZUnx0ys8mkKeihkNnW9XMT/wjZ3AA+Nmcr/undPlKq38pfzWvyhp62Mo47aMchgOGWK7cNN65K4fPXbscOAgBr1johj99+eztakg4+ducghuNOu7uZSvOMlfDeuqaSrX6ro3HxmzrxF+/LotcbhvRztudgLZJOVEEyQtTbjpBp8zfaL4Cxi4DCjSSU8BDCwVjgYtXTCuv6s1i9uQ9P7chjZ454PQIRayiqf6N+lwoJKbC8R+KrF7Xh6Fl5zpMTRhDJBEoihaFiClsHS3BdB7M602jL2C3QZAgZFdl9rigoKvut1Qss6XshI1A/tjGOwH0BJXaFnXjzl3Ziq0/YiYOmIMI1l8zDOw4ehhOM2doN451R/cR6fxbe94MQzycWINJUBk28ChpXerciDnZexHc/cxr+8tqNeGw0i0gnTL9FAgGl6UdIBKFqVyEbBtT8jrsT0X9EJJAUCiR9V8vnyyM7fqLLhRsKf/jlI/uLF7BfKoDkMe85xE0mzhJQ5yqJo6RGq1EAZmMHEwbb1aY1Auq0oxSyKGP56KO45bImdKkXIDgtVu8iG6VBc8Oxf/xnKTjmv311Kz579VbQLpGU5qu1UEQY/fxxHWhNOfi73w6gyC27pnNpzQnxdRzKFWuFIzpd/OOFc/G2JTkkNe0fSAIU9/0fb2HNbjsVej8rA9qWOxQJ9OVd/GQV8MiLJazaNIqBAuBz5yFwBsKWBRlFZxuJsbNjraMrgKUdAj+8vBcLmgP2HmhjrCt+NYi1/SECZcbAkRopV2PF/DROPrQH7z9OYU4b7YI8xlRbVgZ8EOGIvls+/XTjs6d2sEYB0C3CRDO+eL2LK387hLKilKmDXtfHTZ+ah6PbqXW7rcuxfT0CmcIPN3Tgz+5PY1R2cMhn9gWgSsgyUmEB3TIHRySxIzMbZc4cmE7DTOWwsX9VCdh0YJ0C4BCBMwMOtJeAR+FA5D9U6Nv5PW8/qhrc29Ozp9M52flO9riVb1HS/ShkdJZW6CRIhem3bFSqj8woLRxGaz06ceAZXP/+MZzYtYsXpXHrJzb0MIJfVQBUQRcihV+t78HHr9rEbj9VCNS77xRepC2yF5CAUUeditc8+VDGqXgSIio0aYHABce14ksXNqFLD8HRxCiIt9MyfPTKc8ejwxgFKTmPsxIDxQxufAS44ZFBPL2zzE1D6YtE0BT8xM9unq6mfrEy3nHPfJP40OhNKSxud9FfiLB9BCgIMOgZNx81vfM0EvQegqjGGsvnpPDu5d14z/EC8zs1kioHJ8pxXURld+E94vTPbPmYBiw27w6JvqAbH/n6EFZtC1CMJJcyH5IKcMfn52O23M6GgBWeXT45tweX/dzB7dtmI09twnizEBq7gJusujqAG4VQyRb4DjVe4xIhk/5z4ipB4wmYJRZjAnQdc17MjyAeCTcRSSThON5GFHO3lod23lDMJx/fH7oL738K4KTz01ntnw0tPw1Eb4l4K0fTt50tfw1yGVJkziZOoSUYwwfbNuCrK8tIhoMG7Z5q8VmlHXsAoU7jkRdn4YNf24QXiAYfN/6tUwE8sTyzpnKOGHr0PJx+miL1xdggEVAE0OUC//L+ubjwuBCe6rOlqNZVjp83npFxDEcg9LJ4YSyDb9+lcO1DfRgJAbJt1NXY2PZqkmOcwNdkIkzFvxEEVgBWOxGGQjgGDQs1LGHwnH3YuBkgNTsxvcFIjqRNsZFYJCmlBoGDOyJ88KS5+PCpQLssIKEo41WuNBWdKjM4M5Eff1YsXMzalh6nfjePdeIDX9uJJ4eBQGkmTl24LIMrLvCQjoYqDD/u2RBJbIhm4T1XF7HJWwgl6E3iKkpTFuxQn0jeuSjNBV9U9MMlwHbjVMn/rtmOjNOEptoyVgj01MQfIL9EOw5EMjnqCKwLBvp+HoX+PcXUyB+watWrCgrubwpAtC4/qy1Ie+dKiU8DeIMxiNb6M05H+fm4px9NVYSkKmPB0BO46xKJeXKHyZXHR5z2in1objRJGI0BiAhIer7QiXP/ZSeeGjP19ZMdUwn45CebWJs0Fj0rdSZd2ibxjUvn44SuIe5bJ4i5ZyTRGmzrS1APP4dgR2OVyDspOB24bW0z/r9rn0V/YIhIpmnt9Mf0z11DcOFNUG3QUJHY8bnMGF33WCkbbz+iwExEyEiNFkfjolPm4rJ3pDDbGzK7JJNvQpexwjPuqVmD1uWjpno1voYdLvudhEtJKo9Ocb/AP7pyF54cIw9OoiWKcP2lXXj73FE4UdlsUmr3YyipNL61NoMvPtSGnNNhtwaLQ0byo6gIikJ/gUimuJErQbaGK2JqMhxJew/Egm+qCONaAUMhJwUVk4YcwHW0k0qXZLm0ujCw6x6h9c+Lzal1+O1tY9PP5Ctzxn6lAFqXn9WuMmKZgnseBM4RwEFxnr8aaxv7xht5MPNVoyW3E1856UV8dNkovLBuLNlaGVonmy/b044WAq2zIiHD/zKI+18sgYpdp2rPWU85nkqwzBWMq0JuakIrHD8rhas/2YH5ySF4moC23Qgv5+dtxaGTwsaxVvzVD3K4Z2MeeQY892whTK8A6qzrDGoViK9wSGsGJ3SmsXb7EJ4va4wRwc6upgQEOqTCpW+fjz89y0E66oOjCnAYxKkDBmMFsCevZXWWqcu35cmCirRSeHJHMz54xTY8WzIezfuOaMLVH3KQKlFHI8uDsp5TzunBeTdo/KYwFyVlXXfGA+JW6woJFSGTUPBlBjnRBOHEm5NaYa8rGJLkTXB4Oc47oLQ17UAsnESSGruW/NHBPwTF4o1KBT8tP/7LDXvy+nvz3P1JAYjsCe89Qkt5ltD6fQCWAWidqAAMMk9ud6hDpFWEFWOP4vZLPbQEOziGG2dVY9c6rvCL23cpgdBtxpX3p/DFn/RhzBJHJuzOO84Vr0qfCQemdv2JgJIRCqcvzuKbf9yKLnc7SHCM1qo5Yowivg/Fthrc7upXT2fx2WtfwAtFMCZhmpLvmQbYUwUw/eKi7ItERmi8d14G756bRr+fxxPFBO7ZNIJBHyiRMoDgZiIHNSl87owenH+yi0R5CEKVrCdgl17MN5jpa9V6C5wZrbZjo5AmUlnct7ENH7pqKwa1RLtQWPu3s9AT7TTOA/2PNBFleKIEfj3cgw/drLHL7eFQgl145kjQtSMklMLiVo2j56ZwyzNlhKnumm3HyZs0gh7jAewFSJNpkcQmpX0a+GepqXJNeAm4nqekivpz/TtuB9T3S6vv/s3kJJXpZ+PlnrF/KIB5J6WbO1oXiEzqdKXxHgicRExe8oPrFQB3taYdcqh5gwrRMrQV3z8rj3fN3gaXHfi6lUQhg90Nhq2Pjf/DKIUHNvfgw9/cyqCfARTtNlPWNa9fk/UCP7kCMLvzprTGuxe14L8uy6JZ7wI0AUw2tz+ZAjDxACDSGHU78dU7CvjmvZRqNPwC45pPBuftfglMqwDqE+/T1O+aLKTZtbdDKLx/XgZ/8Y5meIlRRKkU7ntW4/qHc/h9v48xwgc00AaBdy3J4MvnZ7GwLcfIPIcS7JHF2ZwZLuVaikUs/zGJi/dvceCLNnzv9yn89c3beEavOKcTHz2yBCfIccMU7ZIqNchJ0WvHF+5N4jvPdqIIau9FWSbT35GwpSQkmvI78I2LluJb9z6Lh4tzEcgMI/yEB8R4BAk7j7WWHApQitKwS6knE+cEjZKQDqTnwXMcHeZH7y/nhr9ZHA5ux+b7poo+ZzgwL+20/UMBLD5lfntX+8oA8n0Qmiz/7Djao5g/jndjFiz19ot0hIzO4UxvI/7rnBKy0YDp5lvplhMPCE0mJ74rhA7S9C+Ue3DW/9mOZwqCm3ZyvAZgcVcr2ps9rNk8gMCW14yTV4dLEUxajxvx1VQW2oVIzThWLm7Fd/84i1a93WwpNuEgxqBF/UODRQROBuv6M/jcdSN4eFsR+RjcewlzO63gv4Rrmo+Qh2KJMQDaPIHjOyX+/UPd6HJG4KoIA+jCn900gF88X0TILCvCQSImPH3lA3Pw7uUBvHAUGr7tJmbSn3tSvDjh8WPzTmk3pVFENz59fRE3/mEYx8/K4KeXZpEJ+rh9m6nyNJ4DtVDfKmbjnVcXsdmZz4i/2bHYiAZ7O34OFx0R4pD57fj7B3yMpToMZMrZCNpS3Lr8rDSMAjDMQb4Re6QmJUhwtgR5AdJN0Mg8Whra+Y2x0cEf4+nfvio4wH6hAFpPPHcFJD6jlDhXI6p2ZmD5MI8YYwBKKwRc1glk+5/BreeP4KS2Adpdb/z21nEsy7X9VgHQvyOBUrILn/hOgFufGkYhJrdRxRc03rn8MCyc3Yxr7nqU3e74vhWBirngnCKLm21Wl2NaaLxldhOu/0wb2hS5nZabHp9CFoh356EQhPjmCYzkNLbuBO56NoUr7tuOYd6yzBaWzBDsqxeIV1oBxPczqVFgSavGx06cjbOWRnhul8L/vmMMj/b7VvUZa0/TkAXwieNb8MVzm5GVu5hkHR+7VQCTjcOkqQWzayh5AsTku+CKQTy+JY//eP8sfGDpGNxy0YB4TOwxz1VUTfjOk1l86cEW5JwWqwBs0l8KOCrEIrEDl75tAf7j3iH0p2dDE+WbS0ZsGMDlmwZkqCgPVgQu/97gAuRY0M8O3AT1HpBbo9LYT0ojwz8RUXl9cc191EFon1YM7g8KQLS96dyTA60/TYZTgPaprDrfpABiISTgj2P/CMjoMt4l1+Ga84to8gesS8kzwoLJk0OQLWM21qUD4QYZ3PB4G/7kh9sxarfWrHXlE1ZzszrhFtsGUzCTSl8GgTIlx+QBWERKAAkBnNjt4drLOzHb2wlJFQQV7roZagKHlExhMOzAf/60hNv+0I8dtGGHMkLPXX5fgtC/cgI/XrXUU3e57SgrT4UkD7fJUFAqzuyZVbO1md2muwkKp8xN4Zsfa8O87ChEVLSegAVrKxphhsDABEVg5irSLp4aa8c5/7kDSWrM+tledEX9pjV6XG/NDYQl+kQXVv6/Mv4QzYfPSp7SpHajUtpOJCpgdqqMnG7GCLUa48QpWXuzH4RJ/VGGyoCEZptyWjpuFRAkb4FxAQeO61GdQEFq9XxxqP8e+MGdhchZhbX5MeA+6uayT45XWwG42Ted0yG0fI+G/qgW+i3U8KYWJY9sTMqxv1YIaVurKEL74BbcfEERJ7ZsgaONK1lvQYgDDmoKYJUq2aDNxS6c/ve7sElJi6jHyiIeCtNpl7edrgh97caRZmKJeWjCAGOpacIPTUe4/c9nYWGyz7QZt3wBuxL4umWXOAdz8KmrnsXzRbMfIPsIHA7Y1JGN+MdVL06zHF49BWA7D9t4mF3eyGy4USlMjJEZW41I0TcJ5NGdEtdc0oNDOig16ps9GeJpmITANa1EVFKqNuMT0V4JaXxvdQu+fPN2fGxFK/7hdAEvGjF4D8kqwyoCIRK4+bl2XH5/EkOyDRCWAWjTfsTl8GifRc/sypuBeGcAACAASURBVEg7OvP249w70G4qYOsTSBEwMMjP41QUAHsLjv29cOEkE0Qt1lG5sKY8OnSD0vJWn3YzWbUqbis+7Su/3BNeXQXQsaSl+dCjlkPKc5RSKyHEofUWhi2tpf6GKuIa+0xUwMr0Vnx35SiaKa5jhR8niC0ww+xNwwE3BCKBINGNP73ax48eHwY1BaMjBqHrKb2uayuErFCOT0NWqb3kBJAV6BUhrv/UfJzQuwOe5RFWuPCsnDS7/PdvnYuPX7kBOyLi8FeF5KVO5L4S/Nrnm+gF1PzVJirqnyv+DKXDjMdFulnjsGaNH146D8tmDXF9gd17Zw+Go95jNiFAzBegpMtYqhvnfmsE67cWcfsls3FMyyAVd/NGJ2YndVP0MZroxrk/jvDbXC9KKsnxP4F53BOSdyzWcB0Bl614ArQjI1HTTUhhtmQnD4AE3YCE1mOkn1kRONVmoxYQdKh5iMCmsaG+n6oguKlUcFfj6X3HC3hVFUD3ESccUm6be5YSzjlaqaMhDOe/frHVKgAa7OzAVly3chindfXDU4VpFIB5xUAmcNtT7bj0v3ZghHfyVEwgIVZbLNzG2SC0ttoLvlLMY+md3GTb9hxgV0+7aFYRvnZhKz54VB6eps0zbH7aXI6tDQF8923swCeu2mrYhnuwxHd36quhAPiNpglTplIAtTsr0DkUOizNaHz/E7OxfNYIdzqqaOXJXnzCfWvWi50/OwH8jf5KBT2/29WOD39zOw7vbcO1F7WiFbuQcH0Ih/AYU3LtR0nc/kIbPnm/hwG0sdFglz7O9WtwsxaHCihoWzbOhoyvBeA24RVqcBwauMa7s1gAewz8byK5Ey/AGY1K+SdLYyM/kWHw8/zae57cV1jAq6kAnLbjzn5z6Lkf0VqcRftnaN7XqXrEi4xifzoiFSGlSzih/Axu/YCP5mjn5HTfmO3HCphYYgLD7hy89UsvYn2eBNgIPbW/Hi/8JmaLCz1YkO0EVyi0NS3HSMypQOjCZWlc+WEXab9vApGIlnjgpfD7bbPx0Ss34oWQhL+yAdYe5/Xj0Xm1BL9eJqdSBJM9nzm3CpKZa5kmp0dkNa67bDaO6B4DdN4WK1EMXnfHmeAjNR4Ac7IigaLI4p/uSeJbv+7HIe1JfOrEZrx1ETCrpQSPNlmVEVToYBSdOPvGMh4sz0FAG4YQ8afS/oswDgXHcZB0XPiUoZJEOjZZAF4vcfm0FXZeP3bTBWoaGncaJgXA27E5LmUEaLOz8tjArvtFFH6/GOBOPNkysi82F3m1FIBA99KmloMPe4+S8pMa+mTyCicTfhZ8C/5FUYRsfie+dfIQzp/fB4+2qqLgrP4trAJgiy4BX7Tgn+9I4Kv3DjDbz3besrdT1foipm8Sk8ukcqqW3JB+4p5+Jvan1tzAYakAv/ybuejWLzBqWPsodJ9IeXh8rBcXfeMFPFdyUK7Yfusrv0RPYH9XAPWvFROn6iXaVHdSDaLCMW0OrrusHYvaRk325OXkBeOQkNuhG0r1gNOLt39lBzYMUQMXoF1EuPTEDvzFO4h0MsxYQBAm8f1NrfiL30mMOe2cFuRQshLTa+4amGWX30FBegzqkXDzwVk/E4ZUwgDeZYT6A9C6soxD41VoIV04XkKQ1xnlRzaVC7krhI6uL8jBvn2xscirpQDc7BtObne8jnNDx72MOf8VzT4eZTd9+chNo9LTMhaNrMd9F0fojii/zpUpsSEx9oRCd87PGlwgijxsLHTi9H/ejq1UQz+B6GIUAAsUa+9aAIeKZ+wFrbUy7n/EYUI2KuO6j/fi9Pn9vHGGKS4weAM3AQWwS/dg5b/twLpRqjMwjUVezrG/CP5071DvGVSfe7xJr2IDgKcpherhuk93oMvpM3scjusrYEHX6W5edZOqxkEI+KGDn23qwMeu7scIgcm0U5TW+JvT2vDnpwBuOAIEgjMCb/tRCRswl5uEUjWfcetN8QOlPlsciaznYkRT5oY8FbNOTA2HFf6YB8DCTi1HLDkoLhwiTAAebc8kpCchonBdcWDXFQUfN+DJu2ir8RmmQWY6IBPPe7UUQKbjuJWLfMd7vxLiI9Ca2rDYo14B2Ao1FSJbGsXnD30B/2vFIJLhsDk/Xk8xoYw0sGF08lH2OvGJ74X48ZOjKFF11yRvTMJc5W5zi8lKLpfSPbUuBqUltQ6QQoQLjmzGNy9UaArMXFGYwKAiKwGJYrIbl11dxi1Pj3Ab8anqDPZk+vZ3BTBZSFC1/lO/afxeHFId3oxv/FEKGT3MbM9452VbvWUV/hSyUZ8SjHsf8gaqGkW3Ax/57xJue6bI5c7E/aC9G2/7RDfeSIVaYYhSmMFX12bwf5/OIqcyJiNAi8oixmTFUwjRk/QQCIlB9l+oWIiKuGyVoBVy0xqBXH/qzmRDSvs37lRF7cqlQIK6CENvKgwP3hb6wS1uFD2VW3M3ESVe0ePVUQCtC9pblx6/IgLer7Si+H9+rQIwi8ju6Eu9/qirvlLo2vUsfvGRMg5PbKUuAEb4az3pOLfLrhh1gHHwSP8snPXVFzFs436jHWruRu2iYg+ANbUleNi8YrW+3q47RZMWYbYq4YH/PR8HiefhRHENv+2vJ4CyaMEVD6bwDz/tQ67CKHx5Cn1/F/7aca1VBJMpgHqPoDZLkEWEvzmtGZ9/pwuHWrnHW7bviShUaivsErc/R6HAI7s6sfLKXeiz7drJ83jnvBR+9PEWZIu7QHuqrMu14x23afR5szjnzz3+mDhETAfAExFaJNCWcrErchBoUgDGwMRdg+hxGRuI11XFkzDgINOFhcNVhcJ1IB0nr0vFLeWx0Z8q6JuLi7MP48Yb9xZePOnovSoKoOWIUw5BW9dZAZz3CR0eBYj2+Om4Dt0SeTiDz9t6R0iihHc6G/GDs0eRDQet9bfxfyxXNeQOY/3bccl/R7hp3Qhb/0r7bfoj4wOEztohGNfkseoBxJtBVha0lkiHAf71ve245I0jSIQ506abH8VUqgRwsbY4F6d/5XkM2U5GJi6p9BTfk6XM576WhL86l1MrPCOPFqSpySpwmpA2cxEKN18yBycvGoRQtl9hbSHQTEYwBgP5u5lnWlu0LfinrvXxg3V55mDISKBJa/znWe246KgCvHIJY7oVF98N3FHoRpGFmxSA5fYTH8CgRehOEd3Lw6iikM+UB3N2w+4uqrn60YSW9HnyBOKsAvdbsF2EHdpaLOFBKKWLgwOrtAqvLCr9E6y5i9JcL89y7GasXg0F4LQdd+ZbfK/pIkCcBaVpfz+CUu0EEc/fWFRyqYmNxw0/Sn34l+O244+X9CHBu/vUPHrc7YXdfxps2g3YwRPD3Tjz37ZzS2/O5caeBa8HYmiZNhgxd9sImvEIeLHQdyL8cNrQFPpSR5xjWhXu+VwbsmVqO8atZKp16pFGoeUgvPfrg3hg+xiC0JS/UvOQOJMwk7Ubn/NaE3zKndceU7VMm7yQKv6k4lr8pVmNu//XXHQ74ynDezJ+RvhiJqiCdgSiMIH7t7TinO/2g5O2TOYTOLpJ447LO9AdDCLwXdyxLYuLH05i1GnjRqGcjratwIn4Rc0+kuS+O+QBEKGL4nxSYKbNPAGDtMI45ccNR2h9GQXA7cW5dsDUEwjHg/SIQyDgjwyticrFb4sgujmfHB58JcHAfa0ABLq7m9qXvHllCd7lhP5zf4Ya4ad/1ioAFRBY42Pu6Eb87uM+ZgdbDLw2pQIwRR5ltx2XX6NwHVn/GsthGjbYfu9WozNoE6P+NgSoYoXWSnHRT8hNJ7930Sycs2QHvLC6Yy57CAQ0OS34u5+6+N7D/ShJiTRtViKAfCTgU0pyDzHA15oCmJi3m1xcYwUwDpO1rQJsb2akIHHJMVl89aIUvDI10n0JhrBOAZDQUd6/IDrwge+VcPemMgKaO0ciFUb4l1PbcemKIhJ+CX3lNrzjLh/rGQw0DUHYpbcZAYfcdq1ZAVCcT8Qg3keAFYDNBFgmIOEGtQrApAdNNyXTP9DUDDieC1UsP1XKj3wHYemmYrCjD+vWmQ51r8CxrxWAl118VDt6Dj0ngiYFcAxvdDHuMF1+6SCmHElP0h/BRT3b8LV37ELGJ8CtrpNOjAXYbItSDp4e7cGp/3cH+tlA24XDE8eZXHMN66YxbTPO9dZ4AKYHIRed85cbBTi2Bbj7L9uRLb4IQbG/tXgEMIXaweOjs/GBK7eivS2Ff35nK5bJCJv7BT5+fz+e8c1mItORaMzr7eup2Vurqw7ln+Y1Jq1G5jZnVGgl0SpCXPuR2ThjGfUazFd7JlasRuza22VRt9XZuH4BbOrNeVGQwp3rm/HBHwwh55LgRkTIwWGOj/s/04uOUh9KQRpffiKDK7ekURQtAHUIptwvk0yJ1+/AJTIZpfYISDZ/MQaGQ0pTDWhal5HFp78bXoBDVaXjNlY11t9Lp0hBPVEc3PHNQhD9GN7A0OvJA8i2H3nawUFzy3mRFh8WEIvreR0Uo8VGkhWA0mgd2Y7vnbYD75lH7r8tm66h/lbAQFu/EYhm/M1PkvjWgwMoEmpvK+tYqEgTx3nCesZWLfFnXBgQwdFkIcr4zgW9+MCyXXDCgqHz2UaFZFWKTjsuu17hl5tGcM37Z+OUphEkcmWMqFacefsQHitRRmN6Ft1rWQHEmMnLUSfxTkmUpqPNWI5qFfjlX85BKwVzte3eTHTIR7yOYoy3oj9tw5DY06guGwe5qB1nXjGMh4ZMZ2m6b0YpfOXtbbjkqCJQ9PHAQDMu/F0Cw04XFDUQrWkESiGA4xjgmAlkVB1KxWj0M/cBJE+VcAETWprUtFl/jkvXqhKIXMs3oH0ENJznopG+m/3A/3HRwzo8eMfoyxnP3X12H5uZ5q6Ok95+bEl452mIdyFS82tdQFNhR49LhTam4aerQxwy+hTu/aMyOuPcf+wB0Mkx5z9GeYXELtWNN315O7YwB6S6tZPJ8ZMHQN6WnRh7rZi+OT7tZ/YaIGDSVcCh6QAP/lUnmsovElhj23jbYpLQxar+Bfjw1c8h6Qg89MedaMv1ISo6WJtvxco7h7HdbtdlPIDJY4H93/LvmYV/uQuXcBvqxPyF09rxl2eU4frEFLS7+lT7s05+GyusxmO0482uudEYQZDEN37Tgi/8ahAlrlGg2dc4qV3gZ3/UgmxhGDvLLTiDwgBnFgKkjWBTXb/l+7vE7mNvwJb8ch9I8iiJ5ExCXwUBuQSZnUpDIZZxvUllq3EJj3Ztkd5wVMw/EZSGfxzp4ObSo/dsebnjONXn96kCSHcsmZc47KizAuGcB61XKM0AYOXgDRps1xulQlDjjya/gMvnPId/eMswkkTUqGxZZVv31imAUKTx779uxd/dtZ275jL5ouJnVss1x/d2M3EYrYxKeGCmin9DKjyjfXzpXT340xMG4PpUSGzvH0omKeUyPbjgqhIe2jqKC4/uwb8el0emmEdBt+Kzvwlx7ZY8Sjb0aCiAmS9nUgDkYs+SAR754lz0uju5GpR5F2avjt0fsRKIFQA3ArFcjUBjy2gXTv76ALYFtEuQAQtbIoUfvacNZyzKoVR28fcPp/HNviaMyTSEog7BVQXgWWYfh5DxdRkorOGW2LLDWAFQFSHXmzgxwSjORNHviRmYinRUGimPDt6qo/BbhdW/oI1EXpFjXyiASqa+9bBTFkVd3R9RWp6vlV6koZvitzLCb9pRc7dZcvWiEK2Dm3DHB0OsSG+Bq/xqiW0lz1uN78mwDokenPj3O7GJGm7wn6qvyFo57tBiQZh4a2eyvLy1s642etD2mQjo6QwKWP1P89AbboET2r0G6ZFDiUA5uG94Hi74zlYuLrrlQ+14U2YYKEZYO9KBs37Wj13Ue8C21Z5MAeyvln9vuPQva+XatudJKPzZ8R34x3MF3GAYlKyfCVO44vrHjsv/z957gEtVnWvA725TzsycOZVDF0ERG4pBxY4du4LdWLEbTa5J1Ki5SUy7MTFqrLFFo7GDHSN2iYpYUBBRbAgCp58502e39T/ft9aeM2c4iAX89f8zz5PrBabuvda7vvJ+78uuz0rIw/ZQ8BI45pYinlxJJECZt1OMePSoEP4+1YTZk8Vr3UkcOgfoDpMeoASAgO3HfSQm+vTNOEgugJz+k9EHbXRJBebGUhUABExUqhtQO9CwQgLCy5d6u55wXfum4vydnl9f1uLfBgCU739iwpQd3Gj8bA3awfBE3JdWtdKaST1kGiDgex4sN4e9a5bj3oMLiDqr5OEfIHk1AOg0XhvCnW/V47yHW0Fi1BTmMcOXtOmo/UPFnzKrq8/eSW5+CRbcpgm+i/peYd/ByRMa8NfDMgiTsKVi+xFQeSWBrNGIHz2u4YGF3Wj2gXfPbETS7kLejeLC/5i49eNepovK6nbgNtT/6PovAHwBTJDMFjwMNgTm/qIFw8Kd0Imt8yUe5RQzoAKoqU6ay2e6ds7ArIW1OPHRDHpkEMhV/sF+AXPPbsRwL4XOUhyTZzlYYgyGhxjzR4KR3wAAgk4SrTfmAlAkyyE/RQYSAGiDU7rAOgJMF7aUVJjahqxSZMDSyURE8+xs+gXbyd1aMLQn8Nr22fUBAt8WAOhAc01sh50O8nXrbFLNCjY6VWlpY5T/rNxq4dmozbThyl07cMzoLpheth8dQqImrQDVXxUCBasBh12Xx3OrCnAoPlTW3VO2rEMiFscD81pRMsLyovNm75tOK7MBgw4BF5hok/pI2jYeOasJO7WsgsH208qhBAJFz8Br6ZE46OpPURI6TtyqEdfuUYKRyWCF14Adbu9Cq7LoCirEffn/6vHr//tA8O3m+Kvt4SoeQQD4bMMufFw0uQkXT7Fh2imm51KhsA+xq96tcnUHqSKNZsNEyaqD7vowC0Xki7XY9+YuvJkLsdYkRQFR18bvJzfgnO1ycBwdZ71k4v62OIpaAuRCyKc5bWhB/gCyiyRZpHJtBZtdRgGy+CznTQJOgDxseHpQ1QD4NVQMJKvzkAW3mJtv51O3Csd5uOA0duC9B9Z5O/DbAoD6+hHjt3BGjD3Ch3aYEGJ4sOGD4Zzgzxwi+UBIFLBRejFmn+xhkEunPxVTKiKFMqJLwo7wLMxrb8IBN65CTyBcKYAthkfw7F8Oww33vou/PL0UGXatkllJpb+7HOek//VtAAIAHS62TQg8/eM4YnZrH5OY51IE8noSx/8LeGJJBpYH/GHnepw1IQsaa7/u3Vr88pVO5BXAMRmkvEa/q0XA7y4AUD1mlOXj7cuGIe6skCBe2UYaiCYQrHDehyTHZmC5GIJpN34OMns9bMMmHLBZGDe/Bly/qAcFsphnu3cHOw/y8fjptbCyBfxjSQw/e1ND1mgiA3o5IKRLs1oCABkB9OkDyNafPNErAUACQ1AfWB0A5PuYsEJhCNf5IJftullzxIxiqti6PpSDvyUAiIxObLbdVDfZfLim6ZsKIWqDXjhr/gXUXyW0QdN2tbku/GTsKly4XTciJOFUPReuev9Bm97WkvjJ/RruWJRCkSuxAsQxaIwZOGCbUZj91jL0+DUoqbSgMgLoN89NYWGwqHyBiOvgF7s34sLJnbAcTizUQxJ/e8ODsMlFbejUdcR9gYenJrBLcwFpUYvJd3TivRJp03FAWGHOOfDJv6ZBmi8R6a7Dp3x3AID58mp8OpgnqBE+7jiyAVO3LkJzSDeg4qdzajbAkqa/UoYwvm5ieXgktvnlZ8japCwt0KIL7DC8DvevKKJAQzvcDfDQ5NtYcMEgNLg9eLMrggOf1NBlDmI1IBIEqQQATiB53l8qSQXDZeUJQGlvKVMHxQ3g1qHZxwfgGgD/BJNFQzVNey+farsJJTGj4Mbbv8cRQHyL+kn7nFXU9GkAGohYzXm+L/umVO3nWgChL1xE7RI2Ly7Gg0cBw9AKnauz/Iy+mp5yeZHOXzqW5huw05860caU3YB3rzG5g/I0X5cabvx8xQ7rG/zpmxLkvLAMAECsWMS8i4dgbOhTGJ5bXkhq8hfdXhJ7/jWNdqFhy6FR/PNAC/WlEh5dHMb0F1JIKxEMuUzXXLJe08Tct58SfLcAgKK+Stqw5fs4ctMYbjsxBIuLgZU2cAMAgMIDtlJXXaGu2lGY+OtP8XmK2sjSrTmpGcjqGgMAU3OFQMx1ceuBSRw+oYiefBjb3ZLF0thweFq4PCHI0qAcxcuNTYXmygNFrjVacjRRuBYAoBkC/r4GjFAEmqF9UOrt+pdtOzNsz/sMC2aT4eI6fXwrEUCocew4a+z4M1xNTNOFNkgIEQ4Kf3ShSadfyn97iBRWYbuaVfjjjh4m1nfD8BzZ+uN+ajB1p2azuQRAPnA1uPqFWvzm2VXIqRw+2DhMyuBwTXG0K6f9uCKrwrfgXKcOBNcPfZgeMDqUx2sX1iNpt8m+P91gBVj0Z88zGATolI+aNuJOHiUnjhPvc/HYqixKa2Gvlr9nFSPq29v41aFV//U10IG6Tldgdc5f8eaV1yAAAaKBD9JcLPrNCNSLlRIAyn2mNUQAvE4kVZveJ2c14YjbS3jmgyy8YHjHF7B0AwVWkiZGGRDWXJw8LoYrj9RhFz0cfXcWz9hD4RgJgMSrWOdfzv5TuC9BgLe7UggKTEIoNZDpAKUXZQ4KFQdJEYh1B+UPl2Q1k3kFphVa5uQzs4ql/MySXnoL857tWqfXvl+PbF2/c8X71W20wwS7afhpnoZDdSGafOFzBCARmSbpCADI4ruAQ4euwhXbpjEY7dAcNQXGE1UVnnKBOIOMtZC3mrDb5e14h5xhA2UWdTFlrkY0zIAQ1Kf3J18uN0CAhGW1IHKFcV2cPakFf9i3G6ZNXvOKGqw6FeUFSrBN38n1IUo6VuQasP21XWjV/DJWfNXL+18A6E+HrowCosLDP45owNStMjADZmhwgYOdVE0xDejiJOAhErj4mQSun7sSNqeLcnlRoOkxJ1+29XTNx5hQAa//YgiMXAp/mVODv3wUQsZMQvNpTVllQlBAJ5f1PEkFZn1JHvtdMwCwcxBX/+UKrAQAwwp1ecX8fDufnun72qzi/FmffdV1tLbnfxsRgB7fZr/JXih2mq9p5PsXE8LX+6r+qvcPIOpncWjsfVy3Ww4JvUeetJWbvbxL1R2jlotn4p2uBuxzbSe6KZ1QZTZ5ISlSkFVVmXcFRCMCb9WjVVeI2zNEOlERAOkPxNwSbjm6FoeM6YHlk8p9BQCoKIAHBdUpQNVL147iX28mce7T7cisJeTnt1ML9dvb8NVL4rsZAQx0Peha0V4x4XJb9m9HerBKlAZU/CapILv6ui+vdA2OiOD6N+K46N+dUs2HC8xSHViKgOpKvx9IwsHs05IYX5vHvz8IY/rLOnqsRrB8Jff/JYc/aANSQbASAGhqkErJ0iZMDhPRa8riIOq0rwQA1g4k9+FQKAfXWVZMp2Z6undn6Y1/f7C2Df1V/319A4AGNMeSO00+oChwuuaLyXTm9nUApIQ3xdxErSXFvMHd7+Lpg3PYqC4DkBpMgNz9jmkV82mALWK44j/N+P1znyFHqKzSBK7ps9W2xYUWyv9lDi4XfCUA8M1T2gNloiEVIu0i3v1VM1o8qjiT2svqACDnuWWFmRZSSdTi9Jk6HngvhRKPAK+NqiZv2X8BoP/SXeP1YPqvhw0jHt7+TRNipc7+0/JrutwVAOD5IbzRWYe9buhg+zXe/0Erjod1KG2UzL6w6+DXuybxP7u6+LDdx14zgLZwCwTVClhBWraVAwCQw4Kyyk9rrRoA+gaDlPjMmgCAioWmZetARynVNcMRxRvtt55Z/FU3+Nqev74BwIy3jGnAxtscavs4A77Yhhphfaw/AgCdJ/7YrcV30Jxvxx3bL8GeG9pSIpr3uooE+NdU1AEA5LUm7H1DCq91uDLc9nWyYUfcE2iqAZZ7Flzyd+cBDU9+XgUABEDB78wnBzuSQvd8TEwW8dRZMcQEOQ8pjUrWFeyb6AvEQyUAADmzCdv8rgMf24Gb7xf3+r94Ln5tt0+Gm5UP7n7wJB3lm7RZpJ4B9culTmGFIjEr7SgAo7A1sFHnjEt2UrhNGxRglaBq/8/7Mt/xC55TVQMoDwIFhJ3gpUrKncFSeKgVAq/9rBFjk+Q4XEEKostdGQBURo3B7Ag5AYlmbPmnNrQ7UiosmAYNZv5ZJk4zEIKPyUN9PHRWAsWcwK635bAYLfC1OLcCDQaAwESGDjHK6yXRR5LLAiEQmYZKfwCZGlD9SddC8vmsH6Akw3hQ1YBhmEXN0FcV0j0Puk7xptJbT32kLkdl1eMb3YD1DQDx+jETRzktIw93hX6cL8RGfA6Xab8SADRy6fEcCOGiqZDGPTsuwuSReQYAPgnWAAC0OJcV67DtFSl00O5nYQcd9cLDDXslsfWwJA6a2YalXhQlecaXs/0gAqgGAO4rEw/B9fGjbevw2716EBYVbUjWBOxT9glODllg0vFxug7bXd2DHt5wq6sADlT0+2an/+ohPG12nmmgDS7V7Tl0toj9RuKTauKB8ZLrGgaDX5Ep9szDVlG0tCrnW6AQUDY/+x7fuEj4VQGAfpOvI+x7uPKgZpw2KQPdVe3AoA1YmQJUrnBOC+X9zaABu17djQW9MvXj9pzSHOVDQjH1qA6woVXCvF8OhukUcNzdJTyTbkJJS/KciW5+VQBQaYACACIVBQBQlg5jlNNhmIarG2avXcg85pbStxTeePrVde0XsL4BoCm28U4TxKAh0zyh7y98b0QAAEHbi5ZoAADwHQwu9OCpKZ9g83rK7eyKvnuAfX0L0PUtPLoogemPp5Bi4j+bO2PruMAzxzUwS2uvf6Xxjh+CTcjMLkNBuKYKNOU5UiX9TWqxNITkCdxyWBzTNibJx7wq0kjpr8pHJQC4COMfr9Xi/KfakOWdEYBO3yu+2WYfCOyrAICxibJOHZYhDS92njgCu+66PcaOjmDibiOpCQAAIABJREFUxDForI8jzEVseZAUijZaezJ4f3knPvg4g9blGTz8yPNY0VaA73rQhMm6jDIMWsdtwgEAoMyM40tY8Xmsu0Z/9pgVePKERvxtGjkN9wSSDX2d1mCZrMYfYY85FEUSZzxi4Z6FXazmUw40OPIgAJCz/HSNmoWDp/8niaG1Ln79pIk7loaRN+pZAkz6SATFO4JdGvKRheaBIgC2ClOCIjxTQABgqjmCikKgfA+d+AB+KZue6zuFW3Q//1gmgRReWHfegesZACIjk9vssp8TTU4VQt/GE24TS2NVcP8lAJB8twPNL2F0cQXmHNSOlkg3cwLKG6x8h9TdEqT3H8MfX0zi8pdXIs+hn4aIAE7aOIK/TgmjuwfY/eEMPnXDJPegZrVlvs5VW8795ZlGp4AM7emE0VBru3j3whYMw1Jp763L03y1C1Yh6lBCDP/7fD2u+c9yFAM+QlUNYP0CgPwNpq5h4w1bcMoJ++Lck/cAigW0tnbj5YWf4qMV5KUgB1P4t2oCkRAwqElg24mjMW6zsSxQSWMar772Hv521bN45JG58KjAyZe+zx6c/rSuIwDaEuVC/hoBQM5sjos7eO3CRsScTrk6Kqesg2WibliZMCTxAw7iuOy5WlwxdxUKAahztNMHAHKGX0Od7+H6aQnsunkRT7xj4cKXTKSiNBgUYgCgayhrADxwXgaAoA7QJwFGH04FQOUPyLMCxDvokwvnw5/eKwAA04JTKHzs2tlbXc97oBROr1iX3oHrFwDCibF1E/c6rghjmvC1UUJzY9RqCZh/3C9lwQ4Ky1wYfgHjCp/g+QN7UWcR11tweNSXJwsIXeatfHKJOhx1j4PZn+ZRYs0/HTHPxwPTkthjhI05Sy0c+2wRnR4bOskQT4kwEMU3ImhCL8SSXQQArEREm8JzmQW25KIkkm57vyJfOQJWdGJymFCVAxS0OhzyjxxeWlaCy1yyyhUp1+j6AACGMOpgQGCLjUfgsv89Hgceti1QSsN1Bc4593rc9dDr8Kh+EdQ6Ku+8NLjl6xw2BE48bk9M2WcC9t9vW2haFK/MfQ9nnXctPvjkczhMkpBTbZVF1erY5OsCg+TCVQEL5//q3kiuHEc5DbqPD3/VhHpBNuzqEfCCqr9AMBJOLVtymPajuP31OM6f3YlMZVTHJCDpB2gaIf4cEgn52a61OG2yg4WfeDj+MQ09saFwtTDrA3AVhWW95HwJpaFyEIhuuFWeAZARF723Mp7h7pT6s6INB9OpUkFIh2mGYNuF9518+jahuw8W2+1V65ISvH4BID5489rxO5xu6+ZU4YlBQvNC/QFA6Z0yK5B8wfPYsrAQTxzoo9bskgAgd03f+iJOgFp7WbMB21zVjY+ydAOIvGGhxbTx1o9aEPdz+N1zPm740EPWUywteqlScLE0B4MsDW0FA64pc2AGAGInej5GR7OY/+N6xJ3OgQEg+F78fSQgZa1GbPXHTnxKQgQMSP27AOtm81elFjztKDB5u/GYfsKBOOLwCTy/AMPhHPWUc67F3Q++BtenpIASJBI4CYpWqwMSQQQ73goNwwcl8Kf/OwuHTd0FJdfAcSf8AY888aJsqa6lubG+AKBckBA+4kLg1Z/UcbooZz1VUYOXSPXSVutG7UvPj+CJhTU4/tEeZMoTmpJYFgCARQCg6Qh7HqZuFsYfp2n4vN3H1Ls9dMSa4ekJJRMeSH8TCFQCAFdfJNFHTQLSaS/bfHTj1gwAzFKlFMAKwffsRflM6ibdETPXNSV4vQJAfOTmm2HYxqe5ujVV+KJFaH5YD2i/ZS0nie6G8BBHDgfVfIrfbd6DIY02hJvvSwECEFBtPlqA7VoTtrg8hW4++6jAY6FGlHDB9gnEXA9Xv5tDO2qIn6PqA0q33SCrZ4E6rYjuUgSuomkyAJC9l+NifF0ec85OIuaQk2xfm281XUo6USg9YP/BJmx6WSfayGySD5pg4lCerl8HAFbjCVTULMjBeKPRG+D3v7oQB++7LUAGJXpWXTMPmZxA8waHwWNBCqZcfcnvICcXTFqsvovjj90dN1z3v9CtGjw+63WcdtoF6Erl5LyF8kosFzdVzh4cuF8ZCCi6qO4AVIQXZT6Y0FADH3ceV4+DNknD8KhjJAt88h6tAQD4xCWnqRDmfhbFlLvSyFSGLwoAiAxkKiEPU2iY0FLCfaclkMr6OPjmApZHm+CbSYCigEppuSoAkKPAFNIrwpkCAPkaSR0OlIaJs0KuQ9x4UaakJB3me87CUqb3+rxjz1zXGoHrFQASY3cYh6Yhp9qaPhU+hgjNj1QDAKMtdctJj80oYJ9hWUxauQBTx+sY1UBOflW+CEpK2RUWXu+OY59b0szhptlq5hMYQMwQsDQXeYTgUDuMwYbOP6rWSIS2tBImDI7gzRUuSkzMkENJ1DbTHQfbNth49qwEonYVAAQ0YAVIXMNi8oCOFW4DNvtTFzL8HMk7qKz6fy0ACNyGCN/UkEk8ZmG/KXtj6qEH45CD94LvOICbh44cTFJCsAymKN/2r2dw9o//xCVBTny5HfhlUhHKUemuyCIctUW333Zz3H7HX7DByNFIZ21c9Ivf4Y477oXvkQR7xe8M2pKrMfG+5FILioKVgpn9AEBGXPT2ESHwh/0H4dyd0jDtbJ/vgswW+j3KtUQu7vnwPQvzV0Wxx21ZZFT6wy9YDQC4248h0Qxe+GkT3JKPg25K4xNrCFwrCd+nIqCsFcjOQf8IQI4BkwnoFwMA312aS1C04AAAdCNE4iefFNI9M+F7MwuiuBhvv6BssaoTr6/+5y95V776G9MrEuN338SNNU0Xmj5NCG8ogIhOhu3qQacbFwXJnp0Xmw/DzSCZXYE9oitx4wFRxL0uduIpE75Vv70owrj7/STOm9WJnE83gGa0TQjhsXtrX7dbMomkGzDlliTl7GF0k44jttsQVz/xPnKUpxEI8OkhYDg2JjUV8e8zaAS4QoVYtQhlbqd+BNOUiZGo49NSEyZc2dEPACqv3JcBAPqOVDugXNjQBbbcchR+eOReGDwogcGDmrHVVlsgnpBCSlJekqbX5KyE7xfhgfgTknd+8x2z8KvLbkOx5MB1PJbDJjssmVrJKIWvTTA8xWrrpG3fR7uWI8w+0+MpgXhpzmxsvcVY6GYEr819C7/+9R/w8qtzUSpJlSQ+vfkVkiHJoiwKSILvKf9ugFyfl4CK0QNizgArlA8FocHygf/ZbSh+OyUFq0RagUwS4IOAIy5uC6r3C1JH/q0+hG9iUVcCO93YywDQ78FMQMr/eYyMr0lSL2DOz2sR1Twcc2svFnhDWXpeY0NrOecvab9KYbpcA1BvTpx/BgiZAkiw4V5/mSsQSIXLArXsRJBuoA49lc/0vCf80kyhuw8VX3/2k6+3I1d/1XoFgJqJB08QocipQhOHCl80AbIG0G9T+NKimwkqdO88l01A69PLcdFm3ThlKwc1HmnwlWGDb3SeGIDz6nD5nFbkmfRiAqZUapG9a/nTgswhAABC44ihY5/NohgzYihueHwh8uz6IsVC4QlYnocdmop48vQYamzlQqRou7IASQ91lKpxb1pQ7+fqse3fOpErTwB+HdUfmU7QzHhtCFi+5BpCTVkVMyJy47JOgS4XOvMfiODkQ+j072QySZs9C0SoSBVBIZVFqieHz9p6sLwri560g0yuhHxBR8l1kc0Xkc7m0N2VQi5bQFdXCql0CvlSHp7rwHGJ8SY39dChjfjXHTdjq60nSGorLX7PQceqVXj+hWfxydJVeGfBQrw1/x20tfegxO0Z2X+XVA0pklkefqny+/xyAEAb2EcIBqZv34KrDskiRJTg4DEAADDJqdxV1OB7Gpak6rA9AUA1t8GwQGKfJB9HaQ5d6wRsPHymhTEtFo6/JY3X8y0oWQ3wae0o2nkgC8akonUCABqzWHXoTiHT0+35pZk+vBvsN59Z+H0AAD2y42GTAeNUoZEDkBfn1CYIodWGktRb4gEqKTCuaHuIeEU05Zfi0h9kcMRYGwk3QwK9knfv+ygigV/MqcWtr69EzrcgOI+nKCC4H/2xjdlXfLD5SFoeLpgyGo8u6sL8j7MsHirDZNkjJgDYaZCNx06JIOb2lA97eapUAYCaVSAnovdyjdjhmo5vCAB8NDBnb8MWE++9eD4MOw/ds1FatRRGqgd+Og/kiWroQNCIMp2IBolkeqQnBy3SAFHXBD0Shm7UQDeiEGYNqN/nm0REof8RJyJEdFP+M0yKGiwGUd2wYJD+vS5bf/S7aWKTwCIaq0MoWouiE4ZhNsHXyb7DhO670HwCjCI0w4NOHAQIrFzajqdefA0rW4uY+/IbeOX1RcjlXGbDuV4QXwTtt74IoKyTN2AEIAGRsPfgTWK4+wSNpdrKfVpmlvaPAKoBQHgmPs4k8YPrqAgowZxnDVjRN8JLwVO6frQy4n4JtxwXwU5b6Dj7zhKebUuiYNUpU9C+ImAAAqz0w/Valbvp/SOAoN0ony9T0CBVCGjFwQShZVilQjbV7rm5mZ6u32y//tSi7zoA6A0NG8VLm2x1gAvtVGj+btIRgSi28o7K4pZsXdGRHfThicMmc3GBiOaiPrUYV+wRxv7DexEt9io5bnLaSeKM2QZmvt8NSgf49GcShpQKDwiugU1wAACm5mHSRnWIugW89FkBJY9OflouyjpcBABQwmOnRPsBgGxFVQEAs0B8eMLCgnQDdr6uDXnVL6+e//8yKYBUDaSWpYsTD52Av180FmbHchTmL+KBJMOmUJs0I3nPS5GRgOHG/WjZeiprH9DFJnA0NQja5HSiWBaEacKnRUppE4/A6vCp/x+qAQhEwmFopF1vhGU7KkTedSSEQR0TQDiAEWqAVzcSqB0BjaMPhyMotsfizeTx+7qaB9dzmF6tGWHMnbcE1978FGY+8pISgJUUZcn6lLFe+TKvVgsIQFgG6HttGMZDp1qIlLrL9m1B2YjvlDKeCfQApEo80c91fJRJYuJ13cioMWFKqTaoDaE1L/0dXR4Yo4o9ELaL+OMBNThmLx3n3VnErBVx5K06eBr5GUvmID2R9QG4pRcMAH0TAJDDbJZhFovZ3lbXzc3whLh1Xc4ErK8UIFQzYkKTN2LkodDMUyHEhACxpBOQNPygkysYvmGBEFU4IjNQJuV4HsJeDk29y/C7HW0ctWEGIdfmVl0adTj8YRsvLCvCYW01OtWoy9ensSY/KSi+mNSyRxIFbN7k4PNe4HMvgSJx5TlKlYQk4pmTtNfOg4t49JSafimAzFHULwkkxPjt2VcGCzKN2OWaVkjVBgkMldHllwEAyt9p89LE28XHb4//PSICb9FCmF3EeafqteLpq2IoF7SUI22Q21M6JCOtoHaiQm/eWDy+WE5iAsl0ueHo/yiuAEVbTIySZVhfE8yX0H05805CK0QYIiVdtyYOc+xmiG4xEWbdZvB5Xl4VXQz6PfSl6Z47MDSbOfC2a2LZ51n86MfX48VX3oNDN6EidSunCBUajfJbq/VDGZEP7D0mipnTQ4iUOmXqRwQsYnMyqV/VABgU5eCZBEg5gv5BdwI73JhGr9qjlvAxbcsReP3zbizLCDiUVlIoT1oPno0ztw/jkiOjuPDePO5fGkXWIjowFenUdB8XAGWeL1mEgSsQ64NJ3QA+7SVTMKj+y5NfKglR/z+oJTBNTTepFVgs5tKtrp2f4fn2bfb8Z9/7rkcAkeQG44e4Q8cc7mr6dEBsUg0Asn3krgEApDGI51HE4KIh14tzN1yGCyYWECZHHgj0oh773p3Cm50aXJrMolPOkBptfCIGYzJlqqmOsHAwdYyBSybH8fT7OVz5ehrL/Tgc9vgweI1qms8AsGNzEY9Pr0GN01cDqASAoNMk3V5oq1lfCgCCtl7lDewPDHITWsLDlSdsiTN3sYElH0GnWJxOV5d4CrQmSWrMgh2NQwtFoYUswM7DcDIwhMMqurJtUMFzlVjVf1hmtZUkAYIFUZUMA29GQw2rVBqtMDtSbiw7ZKE1NggL/J2xxW57Y8TGQ6CbHoTuwaPiLn8fF7qfh6bR4JbJVmq2Y+KIY/6Ep196ry8KqIgAgmJhv6/JKkHgIuCx27Tghql5RIkOzHgXAEBAHlJ6/QEABMpAZB7bmcAuN/UirUYESBnowE2GYFm6gAVdBdi6jH5I6j3iOThqCw1XTK/DL+7O476lEaStBIRPRUDl+MvKVarvz+IgsgVY3tBlBqAkBw0EAFJXULYN+wNApk0CQOnW7wUA1I3aenBp6KhpPggAsOkaAUAdqWUZLmLnURGL8k7XRcizsVFmOf61Tx5b1nRD113+t5SexC53ZPF+lk4oCmUJBFT1XAEAN//oRFVV5ziK+O1ucZwyPg9h+/gwF8dPns/jleUCrkYhrJQeM1wf2zXnMXt6vC8CCIaSVARQBgCV43nQ8UGhGdtfTXMAqg1YFQF8EWoHsxHSvYgozQL/OGkjTB3VCbOdWpFKicghs1GNi6CfO02Y+SEwe8Ey5B0fk8Y0Yp9NwthnnI9QsUsp5gZfuAoIgi9T7c0Y9AmDSCeIEcv5rOQIKHWUcoHP1UJ4pXcYfv5QK9pKAkNa6pjOuvGYERi3xUY4/5JjIbweHqghG00yhPb49PTR/nknNtn5Z8iVVBpfwQOoBIAyl0IBQNjXcNEeo3DJ7u2wSDdS9i1lBFC2eFYAQKklRwCyKyFg4fVVMex9e4ZrAJrHiQu2HV6PjqKNz7K+dPuleX/6tq6LKaNd3HbuIFx8dxb3fxZFj1EDrcI6nF2ACABYek6e6MFkYPBf/jslK06RHqUMcsNLOfpKAJARAdVjrKJTLLTZpcwMz/ueAEBk1NaDxeCRU2FY0yHEZsF6ow1JrbpyBMA2YH1TcxwJqjBOeEVsYHfiuu2y2Dm6ElGtxHU+en6PkcROt+ewJE83UwIAVaop9KJCDj14Fi4gqkBHvW7jrqkW9hyRg+mQKUQUN7wdx6/+k0FOi8pXMAC42KI2i5fPaUCNXaHCVHF69kUALPTGILPcHYTxf2mr0AH8cloA8sYHfgFSFTYiPPx536E4dXwPrHSO2WlsVe7qKJlJPLokgWvmrkC3J1BbZ2HKobvjg48/xUvzPsQBwxrw58NqEXeWMcGKD34VCZSr7NWRQTU6BXhhKKpzAABB8hC0ZWRggq7QIBx7TQeoaXrQnptgq3Emks21eGGBjidf+wgbj98MN19/LiwvxQYvcgo8LOdAHBtTjvsrXnz1A6UB0zcPENQEytcnkIVjIpCGqw8eihO3boelUSlX5vz9ACBQ/KEIgKM1WRyk6v0ry2LYn4hAVOnnWyUwNBlD1nORdSwaUFdz/wKW62HyBjb+9ePBuPTeNKcAKSPOhqHE75chPn2GcqhlWrAiAanwX1KFZfuP6gRfBAByMlC+BwGAZ5fanGJ2huMVvh8RQGTcpMGiYchUCHM6NLFZkHfy+fEFAED312aQ8BF20pgWX4mrJ6YRK3Vx8EkiqsTY60Iddr07jQ/z1IqiGWyZ+8tJTkNp+sv8jYqK9Ll1no0XzwhjXLyXC1K2G8Zjn8Qw/ck80nwjWY4R5EkwtraAeec0IE4pQPlUrKwBqB1Dn6t4dmlrEDa+rA2dioUgT5q1ParG1ThqMBCBwP/sNBy/nJRCNJdhwo3vaiiWYnjxozj+Ma8V+x04FEcekIQe0mEMGwe3fjA+6g3hnPMewMhiHjceHUG80C5NK8mbgBb6ahz5KgWd1dx1VdqtIh1m/1VWjnyN26iPLG7Gn55biX9cti22HLYKfikHa8gYeImRyEc3wvRfzUZzyxhc+dujYfrdgEF9H9nr9hwNv7/yefzx6rvhMVNPcXoGqlDxHAKVDHWmAj96SjN2HdYNQyfXKEIjduZQNabgt6lhB+58UDlCg+ebeG5pDQ6/rxdZNeDEJDE679mfT+b1PHZEHpWeh12G27j3J0Nx6b3dePCzGvQa1AUgERpad0oEpBz6UzzBWkDcaenjCUh3YCL8BMAvWYGUFvRFAP0BwCgK120t5Hpner641Z7/5He+BhCOjJs0RGsYMtUfAACCIiDXAKoiAEJi0mmjxVrj53GIsQQ3TsojXEqxYirVZejE6dbqJQDkKOeXM9X9AEBV7GUhS+7EBreIRT+LYxC6+Ct4nokXVsVw5INF9Ag52sl5l+dgsJ7H4gsakHDXAAAy2lQqwbICnLUaMOEvHfiUjIPLdNS1QcBAAEBMRQ07DI7gsWOiSOQ62VbYcyzMWxLHvfN6cMJJY7DNlimAiEqmjrRWh+R2P4CXbMH8zywceMQ/cfEO9Th7fB4my5nTaVbZxlTAFKQ2fSHawIhVNrDs/3vIIb1Efoyv1GFeewfuv7gF4VIHaMSu5OkIjd8SItKCdn1j7HHSA5h172UYMZj2gCOHljUTRGT88w1z8Psr/4kStfDWAgB86QWQgMC7vxiOYfoKmRqyFLyq/PerdVQAAKO1zlJyjy2O48RZ3ciwDgKxJAUEM54i8oRmircEAIoKdxpSwj3nj8Al93TjkeU1SBtJRbMO2oBSRET2jeX7aVSwoU4KyXwH9mEKAPraffSbA3uxoEAoo0JKAXTTKOL7CACibtBUoYWmaxo4BaDQjLnOVREAR24qJKUDiLj7pLJr6S5Gdr+Dp/f0MRRdMAyfCq5wPYEerQG73tOLD4nGRaosVQAgP09Wr7n+5GsYqufw7rkJJAUNGkkAeL2jBvvdXUKKioDU9qJF5LpoFAV8fHETEjRqWhYw6QsGJHxL6qgEAgN5vRb73daLV1bwyE1Qr15LCFA9sC5py5T7JjSBOw9rwD4taYScElwvgWseKyKxYR1OPcKHToUv+m4u4LqAGFEPY/NxsJvHY8QOt2GU4+K56fWIe918IspCvzpWq2Yr1vglgz62KsyVjVZlOR3C01DSYzjnYQ/jtmzBj/fshuWSOisxWHUGc31YE0T9BrjjuSj+swK45aozYYDqGhS9EW1Zw6W/eQh/++fjsAMloyqCUL/vR0QpAYyKepj/0xbU+m2q20tHtiJNcRdEMQKD+8RVTVkTcN0wbn89gfNfbEeWTaCJeyFgWAYcPcRcCPKnZIdf+jzXxY5DS/jnT0bi0nu68PjnMWSMOHcBZMlHXlfa5LrmUlyAELEvnTx8Mww3koCIxiVfRZe5P4uBqvSPIg6pStSnDSABwoBhWUU4blsh3zvj+xIBRDgF+AoAENQB+HxRztueLziE/eWIz3HW2DSiosgtXNcDulGP3e5O4aMcnfxrAgBVC/AoxxMYF85g7jlqQ1Dv3tfxXiqBybcX0E0ngEne7LShXNT7Dpb+bzNqS21fCAB8WtHN13UU9Rr88qU6XDtH6gF8mQRgdccTeXpwmUo3sXnMxz3HDcJwpwfZYhQXP9CNo/ZtwD7bkVUatUQV9dUD7BoToUmbozhocwzb9yGIdhvzzohhtJ6BwdJgFfyILwsAFZRc2a1QdY1gFoLs0bQG/PC+HA6aVIdjJ+UQ8vMgxjdxBZhBGNUhogmsMrfEpF8twszrf4LtfjAUgiTfBVD0Yth0h7OwoiMv+QtfFAEoJKCW7n4b1+HeI8m5WU6OSpJYIOszMAAw4Ya0JAS5SNfhsldX8r0iQKkxgGERIKsZ6PQNyS/hWQjwgNhOwxzcfO4I/PKudjyxMo6CKeXB2VRWHQjU7ajxszhknIexeglmycfKfAnzCyG87YyAHSHylM7tahoPDqKAtQGA8Ny2YqZ3pifELd+HFKAPAGBN1w29HAHIERk6kYk5puy3+e/UjADn/3I82KU6gO9i6+JiPDaliEa3m9t0dGK0uXWY/GAvPspSpVbJKqkerKEcfqmIwyQfX8D0NGwVT+PFM5KIUVgvla/wcbEWO96YRyetFyskuwZeCbXw8dyp9ZhQT/13R56e9JwgvwxCYp4FkLp5jhbGre/U4qez2pkMJPl8ioJaLvJVn/hrDhDYo860MCpk42e7D0LStXD57GX42X7NOGwHylyLqt/N/Uv4NQb8MSNR2GAnDNlpBtyih8v3q8OR44AYqRqr/JchRqkBVZcEypGY4vRXpuGycCUt0ejiEVmQUh070oIDrluCo3caijMnp2C5BUmBYKkt6b1QDMXw9LJhmH7HZzjl0H1x0U/3Q9T0MW/uB7j85ufw9MvvghLCADTXOEWo2roh4eOnu4zCryf3IOSl+nzCXdX+Cy4rz0moKI2DFqrxkCJQFBc9F8ff32ylq8jWc0Mt4JFzRiJhuPjxIz14ZhngEf2abq9TwO6jdFx12hD8/PY2PN+RQCEUBzw66+VGltOWDoZ4q/Dk9AaM8HtglARKrsCn+Rqc8YKOD2s2RZFIzIojQJEAzQ8wr4I5B33iILJVaMA0zaLwvbZCpnemEKVbvhdtwMj4XYeIWN3hAtYpuq6PC1KAAACkAAjvKNkFUNVdFgjh/F1ncgiVUlqyn+HhyR0Yb3YhxJNcGlbZtdj30Qze66XiC8kqqf4poWsFADAFxhOgkc7t6zL49ym1iDok8ik/Z4Vbh22uzaCDVrYyhKDFEPJc/HVKC06dmIZZUpZgnFeqAlNlTixb95zTflxqxMQrO5Au5wgyZ65s860lJ+j3zwbZRGkawnB5/DVsmBjXHMI/z25Ec6gVsG1ZozQJAIDisBbc/+HmOOOSOaAIiuYIBkU9xHmYp389k17nVhXayvCkSDO8vGWKKzez+na1YQMtiRhM00B7poR5K/KYNDqBu39Uj9rSKh6rliBLeXUN06SP//sKvN/poSZs4IB9dsN7H36IdxcvL5ONuHgb0HIHKgAG31/o7Ot3y9RmTNs0DUvkVGrDwv5KPKSiVlEJAIrunXUSOPb+Ep7+vCT1InVgkC7w+qUtSJo6fvpgHvd8IFAM5kjdIvYfF8ZlP2zAebesxKs99SiZNJQlh4FkdESHQRGjjU48dayJwX43TCKXuTrXztf4AAAgAElEQVTaizU46VkLc8OboGQkeNaDZOqZt/JlASDbO0N8T3gA0fAWOw4VseYjoJkUAWxUDQAcARA1lIdECDmJAiw3PgOCr8HlWq+Gunwnfj/2E5w8KouQV4CwNbTaCUx5IoNFGUtafqtwik4pUmalB0UAtGHJa5BII7u3FDDzuCgixO9nsotAp6jHD/6ewuclqubKRUNfI6RpOHbTWtxwmI8IOdEGMwxUZQ5OFd7ZknosRwl0kEjJdld14n0aTqvIAr4uAARowG+viCSUqOw8MoLbz2lGraBF5kIPGSiYIbznjcDhv3kXK0hQiRmKBEuVhTuVq64BhdZespQSaoqwqwaN5SlbAx0nbBPDH45rglFs43RK02N4Z3kU593biYWdBdla0yRhiyRLOH9mBpYEV+mi+AVSYzKyR8IHFlw4AiO15Yr0pBBDTXRW/jx+iWwIyVvsAWmnDrvdksK7WVnpp4JfVPi477wx6FqexR+e6cRSt0YSxIh05DmYNj6Mn0yrx1k3L8fCTDOKFgGAXGsS5SmiLWFcqBuPH6FhGHokPPg6euwETnxGwzPaGNhGHXSeW6F1T1OfcpKQuf9KhqxPF9FgKrDQ/NZStnfm94UHYCbGTq5z6pMHCc2crhn6DszJIfnlIIusAABJ8JAAUBkBEADQUqtFFtNCi/G3HUuIlVLsvtNhxzH1eQdz24lptiYAoBCcNrqLkK9h75Yi7j8mjBoKGRUApFCH7W7uxSdZ8g+UhS0eNNF1bBKx8eqP61FLQhtB31z6hlUMeqj/X7nP2lYSpz8E3PtuLxuRltfG10gB5GvlSCoPCascng6bqGZhVK2PYyZvhLpwHnbOx+ufZfDEojQKHoGnUgXm71BORPpKDsF34y5AsIADLn7F8VvhyFxGRxnSKOMW2lkE5FKRuQYCmzSFcOjEoYhGfSxckcXDr3XwKcvXQ0XjBPQsmcZIrJjTjJhrAQAlv7BtvY7ZZyZR68uCbvkh2y8VlG3189St5c9ydXQ5Ddj6+k6sYPq3rDtYFARSodqSfhIln1yAZeuUiEAn7xjDD/eqwck3rMCn9iCUzAS3//oeVGuyMdrqxNNHGRiGFEyWwNLR6yRwynM6nvRGomQ0KACQnACTqN/cPiQCkdIWKNdeFADAay3l0t8bAOAlEp148I7CME+FaRykCyQ9IczAeYdNP2isVSk3EImCIwGPmH2SzEEFITp4Q3oBI7vexMuHGGgiiS5HQ7eXwPSXTcxamoNNLTyactOoK0tgQgM+FEkobXz2+dOx56AcZhwdkbRRtYB7tTrsdEcPFnfTOUksoL4wuV74eOf8Zgw1unjEVi7Wir65Oo14AdDqAW28EO5cWIsfzepAUWkNyv0SEH3WVgOo/nf6M9VHAh0F+TlsXUUCoKrbQGenQ1p3stRfjj6qI+k15tZriAiqvc0C2nI1pbk8fk2VD7reQSivU1tXnnQ85BVwKtb0eav9ff/rQSSxiCZwwaQWXLI7RYSZPuVgySLrP4MVvLzc7tTh+iZe+bwGBz+YRm8VE1KSd5S1N6OV3OARYeNHe9bhwG1DOPq6drSiHj5RgTXij8jiqHQVdjAu1InZR4Yw2CPmKo1m60i7cZz4HPCUNwI2WYwbITXrLz9LFgMpErDkCDJpYTJ9WQ4DCfitTi4z0/G87wUPgC9aeJuDN9JC5qkwjMN1gWG+EJEAAOhUrgQAnmcngRDyCKgAAMpj6SI29nyE+3bows4NaViOi6yoxbmvhHDvx2mUiMTD0ko+TF5gVJm1lCK+zx0A0wUmN2Ux89goYkQb5Xsm2MZ773/14i2aKSAUZkUYuQqJaHLrtAYcukkWZkkxzdYEACoS9H0dbWjAD67sRLtXsW2/NgBUHmeyRdj/UT6+lemEKjquIZb/pgCwpn27JmAIhg8CAPwyA1H9P6Pq9woNCfh48qQmbN/SCwNEAJJRyGqbn96oGgA8HSVE8Le5Mfzm1U7kqq5nmb+viDpSLRWIay5+eXAc48eEcMyNafTotfCsBDSKPsvjxB5Mt4Stol14/CgLg7wUKysRGbPbrsExswVeMkb1A4BgelCyBEl3QUKnBAApYEMA4Auv1S5kZniuf9v3oQsgAWDiwZsIwzhVN8zDdWBwNQAwUUIpBJXntYMIgDoBgZONcJEodOOCYUvx860KCBcyKLox/PGdWlzxbhfyPvXvqR3owxBkJxaBr5Oni0roKYezBbZNdGP29DrEWDtPhrB5rRYnPOZj1ic5FFQsyrpzVHgTPg4ZG8Ntx0UQzXSo079iwKYyAlDCIPSRRTOJH97n4PFP8gO4A68tAvjSR6N6Ynk8kf9c3ohBZ6oKCL4yAARfp6zj0Ac4lZ8XPG2gYaf+z/vy9Gj5nv2vlyUExtUIzDmzCbVGV8U/q7ZO9WxDJbNRdXEKiOPkRwQeXkruzVxdKV905oJwW1/+nfT/9ZHQHFxzfAyhSAgn31lAxkoARl8NgGnArCXhYLt4Gx6aaqLJT8sujSfQbsdw5GyBV61RcIxGaDppMUjaOqVOtOED6m9Qz6L/EgAYhkFdgFWlfHqGEPpt9ltPrDOLsDXUWr/qIhz4+aEJh2wmwvp0wzCn6QItXkUEQCnAFwEAvSORgSh7FcJG3Hews7cI9+9ZQsJOs6zzXe/HcN68NLJM46XT20NUL/GNKfoUBVCRSd5gmqbbMtyFOacmEaciILVcfIGCEcMlLydw4+utKKgWUxAB0KHeqPl4+SfN2NDsVD3mNQCAyjFZ3kyP4P7FtTjrsQ5kVuPcr2sAqOQb9I8QBjptvzYAcCCyelhR/RlE8hro8dVP/uBdguRd/pkKdedvOxiX7p5F2M/0xwcu+FS3NSq+M+f/Gjr9BuxyQxc+dDWmHlc+BgYAD400R3JOMz5o9XDBk0VkWRCU5keUHyV/jMfdo70HZXD3FBe1bloVoYF2J45DZjl4K7IhHL2BJdXIEMTgsF9ufgkCkirMQ1BKwt4wjJLwvFaHIoDvCRWYr2lown6bCcOaboTDUwEMBkSEcnwmTvg01UdnvNIE4HlxOadNG9bnLgB18VkiBJZwsVH6fbx4UAnNbjc8W8drnTHs+0QOWaICc7HMwZiEDs/1sMoLoUCMLnZ302G4HkZrnXjjNFU44hDPR0GEccs7dbj4JVLy6etD89SY0FAHA/+3Ry1Ompjj8K48Tlu9sSWRG+wToNGwUjN2uKIDH5fUUNIaTEIlV6BPEWe1zTPApvsq8LzaBv2GkB+oAJe3Z7/BAPm35ak9/tNXPfFX/3U8469O4gYA/zljKDZOtEHnaE/+IEn5lu7O5Qd9t0ALkO4tkUJdA88vS+CYR1LoZB6KAoAgBOccXOkG0vy+oFvqYVxtEdefNBRPLPJxzWsOMnoUQo/Kwl3wgb5A2C/gyBE2rtu9gAQBAJMTdbQWa7DvEx4WRzeEZzVA00mtie67DoP0BGlCkKm/arCIdBQUK1DXdFsTTrudy9IswE32O999RaA+ADCt04wQA0CLgAjrniSTSACg20oAQDF3AADyhkqGqywEstAnXAzrXYG7d2jFpIYMtJKPj3IJbH9/Fmmd8n0S+xTYOFTEmVs04u4PU5jvxeEgzK1FsvseIrrx1ilxNOtEKJJ3zXU1zO2M44D7smouPNghVMgin0GB3+9ai5MmlaQXfVloYoAkO1hwugbbqsEfnqvBn17tQJGrEVJcs/qx7gGgf4hOn1cJAt8oAlBdz8owf8Aoo58E+jcDAGlSKq8ahf+Hj0ng5qlh1HD1X9F+JQIMgBxB309y/emNHHJvesHCNe90Ic/3sg8AeBMGehKsscjSrAgJG7sN9/GbI5tx1bMFPPSxAKURgklCVQDg5nHKRg4u37GAuJvhLoLna1hZjGPfx318GNsQnkmj0gQAqg24NgDQ9Zzw7KVOPjtT+MZdpXdmLfkqh8AXPfcbngdf/DVCW+27uR8KnW5aBADaIKGJ0FoBQG0wqvYSANCcvZwdcNFc7MXPh32Cn0ywYfamscquw3b3pbGSNAEJSX1glzqBKzaPYk53Cb9cKpDWY3yTDV9DvZ3BGyeHMTKcgsZCmzrTVTuMOmx5Qw/aA5arUpYhWNm5MYp7TkqgWQtmAoJJMzViG+TaQR5JE0uGD8fX8ZnTgF2u6UIbnzSSKVa9TNcGAGV9/bWN767xVvQxEdfVovm23kdSLOgklGkOSXDee9RgTB6WgkFKjhywVU0zVn+5cptT52JcWq/HHjd14t2CBpu7kgEA0ElMhRxFRSZuAIv96oj6BZzwgxqcvlcdTrxtBRbm4/CNJIuGSmcf9aGeQNjO4oKtBX6+ZQYJv8i6CSQ4s9xOYp9HBZYmRsLTk6SnxgBAoFMZAZBKsOxGyfxfUYU7Nd+dX8pnZmq6N6v4JnEU181jvQJAeKv9x3qm/kMzEqUIYJSAiNHQBV+wNUQA5XCOUwBJ0mBCiXBRK7LYS/sQ/9zTQTjTg1SpFrs9nsPitLT3Mn1g66iNeyYlsDTv4LRFJSz1Y2xuaQgdzYUs3pheg6FWtxS0oO/hATmrDgfdl8NLrQ6LbdAuNbjaDMw4dhR2GbYSlluSFFgiqyiNASklJm+EzACUDJYindjhOlzwOHDLgl7k1xDK/xcA1raQ6X4YCGku9h0ew91HRhETwYQmRY3q9QpZg83Yl5koa2NfY1Ce21mLqfd3ozOQK1c1IhonD4ZxJN+CAIAKdD4rAl88JYkdN7Rw+O0ptOu1fPqzryVLfKk14AlE7Qz+uAtw8sgUEkS/NiTQfFJMYp/HdKysHQ6PJNNUCkCyYWsDAGjaMrj2k04hO6MU8t7CvGcrRCrWdv2++N/XKwDgB3uN1P3Q/qGa+FRATIBAE/vNc4gvi4Cc6XDFX6UC6vtSc4B62nQjmDBCSsEoYVT6Xbx0gItGO4WsE8PRT3t4pkPwRaanbRop4oFdkyj1lvCLT4DncibINCbu2Dh4lIXr9gRqNXL7VRxxqtprYVz2ZgP++uoKnkZjUq8QGGwAb5/TgkatXTr9BFai/FnBiqssIhHtlfjvMvekHG5JsR773NiNFTZD24BJQL9btAZDjPJzVgOSMrXqC/Ptr1+E+2YLbF28mog4jRC4/7gW7DyITn++mH2PgaKjoBigQJ7IOEXE8Nv/hHH1wk7kA8qwmj9gm29u/0huP/PBpHc6b+S7zx6C7s4CzptVQrdZK5/HrD31fKVzmXSyuPVADfsluxD1ba5R2L6OdzIxHPSMiY7YCPhGDBqnD7LwVwkArG2pioJUJFARwBLhlv5l51MzbGEtxYLZUnZyHTzWLwBst2ejaYe3MWPxaYDYT/hiZFC27Q8A9EuIO96XL0oAIIAw4DJouAhpDpp6P8J92/diUkMethPCpa+GccMnGeS5+Kyj1ivi3oNHIFEq4vz5Obzd7SDkC1w4qQ5nbAo0iW4W/mR+hyK5U///36tqcfSDKZAXEZfthEA9gHmnNGFUtAc6cYnptAhkvgYEACLuKXYbt3AEimYMN75Vg9/M7kKai5rVj6quwH8BYLUrFBUCJ4yrx18PBKLE4WAsXQPRIXh1GQBo9pdGk4Eurx57/qMbi0lRXUWWQQhnhqiiLxWN+VEBAMPMPB7+6SjcPyeLv7/rI6VJijBvUAYAtW59D0m7F7OPq8FW2kqEaAJTB4rCwpMrozhtXgQ90aEQRpQnT+lw0w2tHwCw17gqCJYBANoizS3dlC70zoDT2oH33qtCwK+PBOsXAMbvE4NhbBCpSRAAHCeE2KQs+0wJGVX6NDptJQBwOUWdcMEsAG99KgQxu8xFfbELPx+yAudtnQMKDh78KIqzXs0iTQagZNfsAS0hD0NNGx9oPnJ2CCFX4OfbN+LSCRmESll5tZSSM4lp0Md3W4Ow5dWtaFWy5fS3YQCXTWzCeTuRUnBazZwrpd81AQC9d3lCkJMXpK1GHHhzCvO6XWbrfeGjH7V0gGf+/ywCoCGukYaPJ08bhtE17WWJsy8LALSOKO0k9t9jH8Vw2lPdIAsRDu/lJDXvditMm1pq+pUf9EfPwY7Dgb+dNAwX39uB5zrCyCtXYJmrK+oy16kEGko9eOXECEa7HTDp/QwgQ8SjhWH834cxZKODpMGLJT0Fq1MASkWC3D8AAACLhFO6JZfJzoRtteGjJ0tff8v3f+X6BYDNjgjBKjSHY5GpmqafLoS/xVcFAPYM4E4AtXg81gSYVFyEGQd4iObTWJJNYK8ZGbT5NFVFGu0CdU4e/7l0T5x0/Ry81UsC9hbGWUXMOb4BdWT2WSkRTRqDNFhr1uLQe3N4bpUjSbc0Iw6BMTrwwhlDMETrANMJg6JS5WxA5TUNks8ABAwqZFp4emUTjr97FboGKAT2uyVfGQCqeQCrL43va/hPvywhgN/s0oQzJzoIa9RXl6d/uZxahafl36o6ulTkJTGYglGLkx4s4NGOEmxXGXAyAKhCnBXtJ+zBn6NpCPkOTt4mgZP2qMER163AMq0ewgxxXYnWpQQA6SxBA27D/W7MOTrM/yXXZsKIXiOB8+aYuG9VDKVoM2BFFQDQZ1tVKcDqAKAJvO+Xcrd5dvrBYlr/HtmDb7RfGEmjJRwyp0K3ToWvbc6HL89/KO1/VQeQw7SBX0DQ15VFQNIADARDQnAxuucDzD6ohOFWN1KlGA64vwdz02R0IQUcaooF3Dp1CJZ21+C3L3+Moh5CzC7hgcPrsWcjiWOUlIMu5exS0MNBDa56K4lfzVnJTkGBsQhN3v186zr8cjdIpZsq4shq5BjmrShcZQ0zSYwphOpw8dMCN73Vq96/j1LQf8vKE6Wa0Rc8p7oP/2X67N8nAJAFOEngImXkvQbX4J5jEohR208nDQkp9Fp5PeQFU2E4p140tkEdHtk/8Dwdb3clcfCD3WhjE9iKQ56UpyyLFYAY9xUAB63OuF/Er/eow4bDTBz/QBq9egKGJVvLdFKzDSO3sWUKu02sF48eqGMQT5xKBaJuvRYHP1TEPH8IvHAddEo3SMWaeAakQUG9CNIN5JRUagz25f9ke+9+JIq5W91S6oFSSqzE568qXvo3jwPWbwQwanIEdZHBphWaZoTD0+Fpm9LN4QGpwKe+CgAqFziVBMiSKrANo9eSyu2QfBd+t/EyHLt5Dl4BuPQ5Czd8mkcO8qJGCkVcsutwbD2iFkfduwg5mrYSwL7DTNx1SA1qnW5ZeJRCPlyoIY39N7pjmHJXDxtFcMFPKciONIDnTmzGqEg3K7/2ewSrSa1K6h3LqDIAAVlIImei7sggHHV7Bi+vzMMesCDI8LhWAOCFWt4FX9xn/z5tfnldZbuUAvGRusATJw/HuFgHC23wPQmm/SqnGasAQL4PKbTILkFBS+CS5038/YNuFFYjQuiwwiFV9ZeinOXr6wvUu0Xcf9JQvPhpHn9eUELWjzFY0BgWx/f8dCKNeQj5Ho4e5eKvk3JIer2qW6RjuajHLg/YWFkzGL4ZZwAQ5NBEKUAVALAMeX8AoF3wqijlb831rnoMSxIp4AVqkK2Tx/oHgNrEkHBIOxyh8HQIbZPyTLYSAuGBoMBLlkVC5dScXOC0MXWOAOjBWrDCRb1XwKHxj3Dd7g60nl7Mb41h38ezSJvk6EqDPw6OHNuE83cfjn1uehPd7P5rIG47uPOQBuw/tBcmtWhoq9IprdrJJPI4+R89WNgrB3D5GwiBmKbhvPFJ/Gp3kodO921w+l4BHqyJiEKy2iwZRtN6Bt53GnHc7W1YkqUip1QsHujRFwFUUVVVC7LvNf/fAIAA0KRankATBK7aZyimjSPBj6zERRbvrLpawQoOgDlwTKJIwZWyb0tydTj0nh580ldiKr8JD9tYNE7e59jLa40GyISHrWqKuP7oYbjsmS7MTkVQEiTuSexSOpmpCCiVhulAiTklXLSVjR9vnEVMyynOmIVnOmtwzEs6UuFmCCMOzaIaAA2wUQGQzD9VBFBRAFSdAFfTjV7huY/5dvaWwhtPvjLAFfhGQLB+AYBqAOFSk6WLQ7Vw+FRN6BMYgDk0ksMTdOE03gRUeadCYN/pxtJglAIQRVjVaKkYGNVtbNC7AC9NNdCY7UR3Noa9n8hiYYm03KWba3O+hBmnjcMvH1+Kl7oo4WCOF3ZpBGYeUYOkk+LpQaZesiEI0YKjuGZhLX7zQjvyHOpLJ15S5BmsCbxwQiNGxXr7UVCDnHSNd4GmAA1FA9J0OIaJl1rrcdL9bVhJCrj/BYC+E1cFTnEBnLtlPS7ZXUcUKRlKc4F49ep/uQev9i8fMPQ8qvyTXJmWxCXPerjpwxzPZVRHRBR6GyGLdSikxVpfBEBejD8cV4dTJkVx3AOtWKbXwgX5T1jKco7adLKGRPWi+lIWd0xxsHcihZBOxQegaNTg8vlRXPFJCJlwPaBHoYciLA5K0epaAKAIzVwF4Tzo5lI3l95++sNvtNsHePH6BQD8Wsf2r8UNWzvArImd5vvabhT1sECFZAPBIK856tFw712dZmqghMDBE2wqpRxqCW1dhHQPzdnPceP4LkwZnIHjmrjgRQu3rigizwq+OmoKNi6aNBxhM4pfv/wpikT0IPBwXFy1Tz2O37jI4pW8qhSBh4o6y9CEHa/tQFtAWOJ/F4gIDWdvlsDv9tAR5iiA3HhVwN7v9O9/SanIpHq55YVeMGO476MYzn+iHb3KFIUXkrwk/R6rh/BBRCCfuKbpu+BNvuspgKwHyZoLSWRFKVVrieHWw+tQp7UqLcaqSEtdYmn5rkKCsh23YEFSmjmhOsLb3fWY9mAHPleF5MrLSy+1IjXSUl69J/FUpJOUhhq3iBuPGIF8bw4Xzi0gpSWY/SflvOQVppSBvRY0YHCxDS8cZWA0TQHqMlzJ60kc97SDJ3P1cMINEBa5NUvPQdOgcJ8ARXoD8vfgWQB6c5a5twGjQ/jODK+YunFdmoKW18e6RpTV3+/XOsa/NjkSj53mQz8AAjHSSAoAgEQ46eRn0i8NBykLb1n1l7bUQQ2A/ytjAh60ODz6Ca7e2YaRKeKF9jiOfDaDXo7HTKb+jgm7+P2Bm+G0OxcgHaKwjU5zHaP1Ip6d3oxhbopzS77gKoQsWLU4+wng3vfTUFKg8kbrAoN84NEjB2Hrxh7olJNyK6l/TNqvQMV1gIp/rxhcyVlJ3LjAwm+f70KGP0HGuKvPGFVj9FcDALlI1zPOf4NFRPefjmzejJrApGQYtx/RhBFWm3QX5oZ8kBL2Nwxhqm7w2QEA0BV3yfBVY5n2Hz3u4MEVBSnSWm77BZuX8v8avv8BQ4MmUKVCmYeRVhF3nTAKf32mE092GShoMV59NL1XnjomLgA5IRMNPdmD+/dx0WSng9EDdPpJ7DSjgE8jQ+GFG9nZhgRBKSokACBDEAYAZRfGRUAeTGKtQCL8LINjz/TyqTtLC57/4Btc6oFTzXX9hgO+31b7TQhHY6fCNA8Vvt8E+CG2/+JTX2nnslFoNQBQqbCvC8CMQK4dkKuch1GpxXjlcIH6Qifa8kkc9Gga7xQtHr6gohvZf20/pAarOrNYWnDhky02CWu6Ahdtn8TF29oIORkZ+tFKYvQP4z8dtZh6Xzt6pBtXOeePkBT1kDDumBZD3O2WRhsVP1hlNv0uQWXNSW5ESUEmACQK8h9f9nDjGxkQvYU9DBRe9BvgGSB07ZuDlUIqX/T4rgKAHAaTm48GujeNavjn4UOwWW0nDGGr3FrVaNRvDESZ6PeWAUARumRIRHLktG5CmL08gdNn9aBVNQ3pfgVBJl0Tk63So1KLUoEzTaHSg1in+ww3cfYu9TjpoXasIhsSK1aeHZA+g8F30xD1XZw51sNvx3cj5uUYAMgx+tVUHNOe8dAVGQQRSkKYYUk5DiIAmgngCICcgSgSUQY3xDI09C5fiPlwCjP83s4ni4tf+Wxd79dv52jY8qBx4ah5OkKhacIXLYBPtqtsvEDtGl4CCgC4fR5Iafse91pp4/ueNNuQB4Jgrk1zeiVuntCBfUak4WU0XLUght8vSiFHKOrJzRkRJpr0ElYUfHgmTXtRncHEUK2EV09v4glBHkuWLlU8jpy3GjD1XpoNKKJYrjZLIEgK4K971uP4cQ4MctxRSkDlp62F58PRomoV0jfMGI34w5wCrn87hzxFPOoOfxUA+D6mAsHIMP2XCFdjoxr+fvAwbNvYBVOoLleFs1dlyBrM/9Cl5oOfbx7HOjzcRcjQLeow9a5OzCsCJYquRB8LM7i2kUgUvhaShVgFAFxwFiSjbuNXu9TDdm1cvlAgRfKeBBhCqgBzYZfPDJKx01HvFnDNZBdTB3WzCzXd45IWwRWL4vjj+xqykRZ2cZYsP53dnDgCMEJsa1ceA5ahv9IF0JYJIZ70isUZpWzrW3h/3jqbAfgWUwAA4w/YwghbZ5nh6DTh+w3spsD6EhTmS98+OfEn/0wAwLmh8KSyrxIHYacfpR1IYWGdl8Nx9Z/i8ok5hLuzWJ6P46h/p/AhLERDBhrjYXRmHdbH7yq48HihSO+4qLDx062TuGRn6UHImQN9FhmPIIwZy2I4/ZEuUAwWbErVMcTGJvDUSYMwTO/kWgB92eBk+jKSdxIElOSTADJmEpe/auOGN/JIBYcRhat8EdaO0WuLAL5LaQCXc2nnSgEnVs0dHzdw7UGD2YPBopFrBvogKQ/qQgEyqpQhyMHVhqHnC3KMERqKqME180z8+e1edHPtsA+VuVzH5B8doTAJrZtc8ecTPej8QKDRy+G2qcNw2/xePNlNs4dhzs/p9XLjy8lBBhPfRWO+Cy8dW4Mxok3pUgIZoxZHzXLxbLEedqQBGouAqM1OSj90IBEA0HsQuagykpFzAEuEr93lZnMzbfHZUixYsM5mAL5dANj2gNE6jMOMcHSqDmwmfFEXAIAs/ikih09FQRKOpI4ApYaeVArmo1lnoxDpyyHLRmHNxoj0fLx6sIm6nk4I28K7raQN/yoAACAASURBVAYWlAA7FkZ3KIpnV4Xw3PwVvPnlKI5cOaTVNkRzMPuH9RgXoaKecixWWnCZSD2m3JrCmz1e3+iJWiQxAZy+aQx/2D2MMHvzrX7srykqL6fjSoxXMyQxJWcmcdu7On7/XApd6jdLIvEXP74vm7+vzRdUzYEwfExsCOHa/RswLtEDqrqXVYGDkL+678fS2dLlSAIb527yBHc9uF4Ib3TV4YcPteMzQYo//QulAQBELJPDf2rN8hpTrWAeHYeDHVt0nD4+jkv+k8Jyjab/iPlH3051CRQAUCeJOP87x7px/94GGoQkAFGt4CO3Fns84mFluAWg05/afwoAqOhHHQAZ+lMxIyACqR/GAKAvhu/f7PemHiy8+3kbsO5mAL5dANh6ch20+KZWLEbSYIcJIUYHX4DSgEoAkBGBBACKAOjfZO5PfADapgEJlEY1HTRkluPmzXuwfzP19l10Z0184EfwVkrDfYuLeKNb8UHIXZdDMwOmr8PVBWqEh7M3jeJ3uwMhm1zi1cGjS3Xf+z5O4NwnO5FiOykFH6pe2Azg71Masf/IPEyS/FC+88GOXSMABFgR1PKUJgXVOopmDWZ9msDPZrWilXrY7HERqAkHC35tkLCus8Rv/n7VIEVZUxwa9hsRx//tV4OhegoGWYYP2OavKrLypJ6k2MpUSrqVCJ9SRAr9G3DC/Wm81Ouw4091esQsA02gMRFD3v1/2HsPcLuu6lz0n6vsfrp6l4tsy3IV7gX3ggu44uCQhOK8JEAoCXyX60sSSHITLuGR975QEgMmhRfAvWFsY8dx70VylWVZklVPP2e3tVeb7xtjzLn2PkeSZRPb2Cb7wxyds9sqc4w5xj/+8Q8HEWNMVlZA5lIU0gBfOHoOJutV/OsGYAKk/kN1f9u83Y4AKBLtSkL86fIYf7psHEU0+MAiJ49/faWML65SGPNncO2fegCId0LhPpGJqBpgHQBFAqIBaNvKucS4VsfJ95Pq2FVB9eUtWL+ewqM39fH2rKaVK320evv97v7zFZw/BPQBmQPgLkCJAGhQiGtSAL63PNaaSoZ0waVpJzYRJCHwKem76AbOSF/Gj44NUWiMYUO1iM89rXHPlgBN0nyj0I1LeZRzuKwQzPgDRxkpFqkWHrpsJmYlojAjTkAGVEzkB3DOv47j4eFQooDsainktMayPHDth/uwF0UQVMmwi3LHcnV207hGbT+nrUAGTU1JWqPllfDEaC8+df1WrGmkPLeOjic1A0rfqYDerlblDsavFPq1xqdWDuDzR+dQiofhJNQaLhc4a5jOwFAb+stPRnbI2TKBy+QSxBPRJPBawTcecPAPqwhU1aztsKN8OVDO5dFd8DERAiE8jhJsRErrbbYb4C9Pmo//99FBvJB2IaYwnbr/JPCU4zARAHmf/vokbrkgj5XudlauIsttkjDs7RF+EfSg6fdx+y+NniN2KYuA8L8J6JMIQAbTkgOg+01L1Eu10g+lrfD7wdjYTVhDPUxvHgPw7Y0AiBDk1Wb5pcL5ys39vgK4J8Ay/qQaQL/HDO4JDsC3pIMVKIfMQqEmDSDU3HVizNr+Em49qYH9i+MYCso4/rpxrEt86JjmtnuZ9qCXEFGIQEXhCmiVoBSH+JvDevEHhwTwY2kGFq0AF7Hj4eeb+/Cx67ZxFMDuwSxMonGSEzhnfgFXfLAL3eEwFB28eT4LUXeTw2f7mxlfRedEwNT6sILL7whx24Ya6hzKGjUCthQFh7rcDBL+WlvCdObydKLBdBHd/+r2QhJePIaE7dMgnhzVKdpHsU/FwVdPmYuTFzRRCMlx8o1vf+30bIrP12ACnBealmwz25DfGAORLuDurT247Jbt2KJ5OPFOIgqaOO1ir4EyRpsRxhPqLxUUl+tLNBwkCXHiXB9H7VHC3z8TYEIXZKw3f5pVJ2rvm1RXel+uhps/oNEfjnAnKLUKv9Tqxim3xNhUnAPkSoBHuDf1/5MACM0EIMOnqUA021J4AJzqcvlPU4f6JBLclLbiK5qPXfvgmyKuuJOb+/ZEANQT0J2b6+SLF/i54icALbMCsyYf4wBoPCSvnanlwE4vzmkA58hyw8hZdAeT+GTvWvzl4S1EDeCTt8e4cSJFK6QGvhRln4aMakRuCeMccIiharr9KbCfG+DO35uJgXSYv5/DeQ7NFWr5XvzOtRFu3VCXGXIdwz7pty6tcflh3fjMSiAfV02vkBwf72nTFGuye9DR95+teQ57OPThHWbC6cFPnnPxd/cNYUuoECliQFCUJKQZ8+I3aLP/NY2+3X3Z1B1XGJBUe+mHxof27cWXTyhjvjMGN2kwWYd3/Q4HsAOIytfJNvqYkJ/O3V6/lJiiwLpmHy75yRBeiBTLu9vNero/6e+uYGYuh83NGAGx/9pMAj61gg7w+aPm4J4NY3i4UUCsTY4ud5N5KdnuSfMCkgBf3F/ji8smUUgbXBqOnRK++2IFf/YcMJkbgMq1d3/mqBgHIMZPdGLRAGBHQGUlV7c0sF2l6dVxrfm91lM3WwbgzrKk3d2S13z+7XMAXeV58HBRoVT5pAb26rzpO8UBbFrQwX2n92Q4gIkCuKynW1g68iweOttHV2sMN22t4JMPTKAWKiyvePins+aBKByf/vkwHm35CAIi8YgWAe0+lTjC147sxh+uCJBPTD4vDh+p9vFEtR8f/PEgtjMGMdWAaCDQTA1cee5snDS3CjehzFMEJTlUZU+1m9qgLSlx+iGvlc3TQ6BKeCXI45v3B7h+TR3j0hEhbazsxKb2CkwPOHasSrw1DsDeTwE5pX5HcBnJqh0xo4gvndCLw2cEKKLKIT+d4M54Ezus1mkOQOrkghHxdUpcDKU9+NSNDdw23ELdYDU7W/X0UeW8R+LUCKi8zIw+MQEmoGmNxV0OztzDx09fCTFKI0itOo9xAJ0Og1LI/sY4br+kjAPS7fC41Kgx6fbiQz8PcX88gDgn3H/4Ut6jyT8eAX4uEYLI2KkPoV3/J2IQHCdSSEd1FF0dB43vvJmDQKZfl7fHAeAiF/tP9sB3zy2Uui7TCkdpqw2WlQDblQDO/W3ANc0BEIGGgUCet2DHi2v0T2zG1xdtx2/v00TNKeH4q0fwatPHBYt78PXjcvCaDdw4WMKf3j+CauAgcX0G2UgqhgCofVSEBz4+B9001JLKenY3ppl2hT58+U7gB6vHUJvWz097HIWBS33gZ5fMwn75cXjchC5hK3/O7hwAr8COW8GWIbVm3kMVUHW6cO9QAX975yieHY1QlbpFx8gxYxD2Yzry1ak3faoDeD1ly9ezxbQdgPDiy1pjj7KDzxw2Gxfsp1GOx+Ca60LDMil84z4IwmI6mIrtzzEnMt0BZI5VMocqenH5L2L8+4Yaxl4jTiZnVHQA382h7uURGlAvw2OIiRi3cOY+fdg62cQzrRKaKRlsJ+GH/FZ7GKiXhDi5t45/P1GhJyGlKbonHh4c7cL592oM52dw6M+NP57V/s8zAUkYgNRNKDs/ORpmlvLv7rij9fNJq3GtbtSuDVbfue713INf5TVvkwMw7vOgM47JFcq/Dy93joLu0uS+bfefQf6lOchUBgwPn+l4mVaAEINo8VM0wDiBSlFKWzig+jxu/YCDYjKJn2zowlcfHMNCL8WVFy5FrjmCzbobF1y7FYNNhYQbMsgBENAYoRxG+Icje3HpfgHcRMaBc0hGss6OwnZvFs6/chBP1gl6tD3p7Z2dZsQc0u3iX86fgYXOMEFLcj8sV9W+dHrSzY6i89Z17OjsBExfoqLRZR6qqgu3vOzin5+o4vGhFkuYUWogV5iuBVUsEmm55pn19HkWuSJH88YigKkOQmYeyD0yLtoApyR+QdMZCtDYvy+HTxzah3OXO+iOqvDipunxp+Yq41mzsH/q8TA3MAMuCIsxdXd2yuQMBV+g7w9UGf/0tIu/fmACxJDhPH6aFdC3UbPvHkUPh86t4LatAcYVOX9B9Zl6xWQ0oEslOGNZD27fHGBSkbgMDe2wVSdZdzywg0sQQE9zHN88wsVH5o8jrwP2+Q2vgi8/7OEHQyU0SDvQ5vs09IOMnpyB63FDEeFMhAmIACn5AMr/ySm4r6g0vi4NgmuaQxPPYf3dJGL0ljzeTgcAHHzGEi9XvNTxixcqYE+to65OB8D2YsBAxuF4hyAmR6cD4L5BxOwAaEHKLSfpqIHxzfjGHoP4rf2I+53H715fxYOTCU7bow9n7TuAHz+yHXeMxQhjmc3O+yuFbTqGT62fKsbNH+nHzHRUpgDxGpeSU+Lk8Z/b+/HR67die2dvill4vMMAeP+sIn54dgUzMAEqMrGSsC0v0j92QN0s3G3tdJpGoF3StEsa2yGiUhVFPDTk4V9XBbhrYw2ThBHQdZH6qTGWDt17u3ymT/vdzbLaIULgEd7kaGRqLpkQRUC9CjhucQXn7VXB6XsQ0WocuZTSIZPjZ1TeXZyfOY6dO4BUKH+m/k9NPqTvf/VzHr58zxi28nqQ+2V9B60KuidE3t3T1fjE0h480Ehwc91BLRZQjxWnSZqb5oskCVbML2Oy2cKmtICIzo3BP4vrGv4/OwvpYN0rGcedFxQwL6KxceIo1id9OP3mFtYXZiMh7T8q9XlU9hP9QHYAxAYkFiA1Elnwj6NAmQYE13tOx9F3m8HkNcDwMB5/nDDNt+Tx9jqAg86eT+XfXKXrAqXxPiCZYTcCwgH4GjDoS30BbC1TOAFklPw0cT5oboCp34ryikYxDrDf2Grcdk4OXc0x3P5qBX/wWA2jETG4FBI/j5j03DQVfwKkYSRDinkDVSjEMf7ikC585qAIeUITeUUZUA4azVw3/vIhhW8/OcEMQXY9ZoUYGQ9Gus+dV8Hfn1XBDAoLqaGr0wHwgIrdYALTb3UWIpuOFjI7kolwXQS6iMG4iJvXKVz34hhWD4YcutK3MouSkWW5zUy/3bEsMOXbXpNYxBJ3ZKKaKyAVR2HFjBzO2qMP56xwMdenDssAXkSG34HuTznfN+AAyPsYvYbMsrWDQBVxx4YKPv+L7dikHT5XU3vIDJZOmeTEzurP4/L9ynh1MsEfr2thnSLischutYfVa+S1xsIehVeTAkJeLdJXzMpCsjLZd1PmSt9VjFv49D4af7aijlJY5/UXe2V8e1URX1vnYMzrYvIPE34I4GPuvxB/Oh0AmJ4+hf9P6/slJPE/JiONq4NozTasXfumaQDusLTeEreyqw89/OQBRIVD8sWui6DU2UA8z0ABOtVSjbUUYA5ep5CChBPAanAUDpsmEmneoJtETiNEz+Sr+ObCUfz20gBN7eOSu5p4cJwGhCnMrZA4ZIyevIdFVHdNE6xvhFhVD9GCiIksTSLcfckszNXDXDCU/FQAPfresUI/Pn5DC7dvrqJl8D0LF5BDIO2ACjTOmNeNb32ghFl6mNud2zY81QFMQcBfV9eeqTAwP8BgBWwEHppuEcNpHne8onH3xhYe2TqBiYaDFjkLHosneAI7rl36oPYTdA8oQJVRFYoZFXPzGkcu6sGhM0s4bkGIJT0JCproNBQCG3COh75OXQTZp05vd57mD7jYyU7XNPbbch+/TqGFEm58IYev3D2G9VAImVGZ9RRn51UCcFRPDlee2oX+RhM/XJvHn29qYgIkxkkOQOS8WRNCK/SVc2imIcvH0Zqk3Z+e29EBkFCIxpz6KH55SRf2xBZ4mvpaHAyjFx+8qY7H0Y8oX2GmIUUu0upL1F8C/nxB/rkTsJ3/CxuQnAGDvA+nYfCPQS24Ac/eRn1iOx+4+CYY79sbAZBKMPyluWL+YsfxPqYdvcA6AC4JStdtuy/AaARwzwAF/iYCoPNmHIDnrsnr5c4nKKgWDp5cgxuPU+hujOORWhl/9+Q4/vTo2VimAuR9F2GTzN1BqxVjvc7hL19s4fbtEUL4KLVifGrPAv7iGB9F0nWzV4h3UvLyChvSAVz0k2E806CSj6iZ21DRcntodzxjdhl/f3YFc/QIpwOyDbcdwM52252Cchkvns6xg21kwt5OEIGap8gZRJTn+kVsGI9x71YXW5o5PL1pGOsnW5iIHTRCoSCz/FZnWs7RFFB2NHpzGkv6KjhwZgV798RYOS/FHjN8qFYdfkolVHK61rRtXmTadw1xaXdrdLrEIpOpOlmS9tjgoOl042fPuvire0awhSdB7liVoWP3NXBYt49/PqMXSzCGVlTEZQ+muGEiQeBQ+y/t/u0HafMXXBctJmMJdyEDJg2+ImxUiQRKrQY+sVTjf69soBxPsnuMVQE/21DGZ55MMe73QVPuXxAlKiL5OMpjB2Bzf05puPXX8BBkSGiqXNWI4/hmHTS/Ezxxy32v5ap3d21fz/NvrwOgq3fEmZVcmjtT+YWPKZWekGqOyfghzUH8L7ZskQoToVD6N4ewpirAVQAmBtHf29sKYQhdY5vx53OH8Ed7NdFqAjdscHDQPBdL3TpKnkYaJ6wTT9vhCHK4JqjgT+8fQ+A4vKBnxzF+ctosHD1zAi4NBM0qAqQCpRA7Ofxy+wA+cfMWDIuWkejCthNGbhopK41jZhTw7XN6scgdAaHGncb6uh3AlDs5rew37S6bYJ+zDE6XXJf57kSASskp0Pgr10UzcTARAI0gRhQJwdrzXBR9B6U80O07LK2mkgSeQ9h2zD95pgLvzjb8McdjqzXWIbzONGe6A+DE3a5KlvfiI0Pd68PX76zhR2uaGDTpjWyLU0MZOrZerfGj9w/grEUkHR9jfdiD0++sY2NK5y+j5LN3kS4/aUa6njhzBiE7zMKIf/AGxdOnHMwORvDzC8tYTo0/mkbYuphAP86/pYoHMROhV5IuP08ZDCDHaYBD380jwWSmgNT9KRoRx6JcZ0JDrdZJ6yrUgmubq27d9HqM+L/ymrfbAUgcd8AHVhR6u88B0g+lKfaDRsU6AOMKOrCAtkpQNuuBureIE2DCWWrntE6AogQ3jbBkcDVuPSmHJekYNtVd3LIuxMX75dELQqRpfJ+DJE0xmebxve1l/PXTY6gzUqvhhymOrbj42Yf60B+NcHNStmKojAyFwO/Cd5938fX7xrj8RIsxw/cMfkjfU1QKB1YcfOdDM7G8MMk5MkmhTY/2s/JXx3pmG7K/Z7uSSKlN2aWmrAB5nltOjXy2GBn9n2miYeyEoaxsu5WNXxxsRnZiIsTU6NNmRG2mo8Q8MkXnjT3I0NogqVmKnRiFQ0mYhy2tHvzVLwNcv7nGmv4kD2of07+VUr19XI0bzp2BOZUE25o5fPOROv5lVKGWSs2dqwnMKSIDlYiKe/S56kLtuu3zYKDQpE70pkLUxO8uDPH1wwMe/kmaJTQO/vqNXfijJ1IMc92/CK2I7Ucew4Pj5aTxh6ZVO+QEqPhF4b9oRUpgQcmW2gClr01bjauao0PPYu3Dk2/sir7xV/86HACw/ISKV5l5gJtTF0Crc7TWy3blALJuQQMSch+IcQDCBRBGnDBKyTEIx78cDON3S1vwNwcG8JMYN7+sGaA7foFGyeT2tGi36QLOu6uBJ1oEKpJnFiJ/V5jiT5ZX8D8OU8zws8CdqD85XEKs5gbwhdsDXLO+Cho3IvFKR7hgeGY5BSzJAf9w9jwcNVDnz+vYg2Qfy9DQaTfxDdoVL2xe3MxiardOyR/lKC142ulfdlg7xmHsqmpojIKrJR2P3XZBmtfKLmvKepzyW0OQXZ1KmIlTwrPjZXz+liE8XaOav5R/6ZW7mrHUB4XPrOjGCq1x7StVPBl4GPSLmCDVHxKNteIqRMphBp41QuFdiEakfUhdX5ylEIEXNAZx+4W92ANb4PM4+xSjTh8uuSXAvbobrVwJjkf1IH+KA+DJw9z7Tz0AhAPQ91HDj1GnFgWgJ1QSfacx2boWq28h43/Lcv/2Gb5xp/EmvOMiFytaMwr9pbOR6N9JU31sW2qFLrXd9W01gP4kgqFCDTdtwsy8kjo3i4akJKlFCySGq0IMDK7FVUdpHNE1jtGGg9vWBjhpSRlz3AY8h96rMOGWce4dDTxUAyKe92aazdIUM5MEPzlzAMf01+DRgEGTH8uLZMGMFPrw+7e08MvNVTTYIe388tBmQLPtf/+gfnzuSB99MZUajehYNgJbug7ZBDK5cWsxYiD2+R2+xUYLnf5nJ4cizSZtv58drvnTdAyCFrh8sSlD7mSnf61ofwdc0wqiZCvQXPBMKUVYjo1cD25bV8BXfrkFmxKFhlTsd+KmJO+i86I5ApcdPBMfWN6Nb926EQ/XHFQpw3Q8Jn3ReTuk5GtIOdx9xw7ARAWONPsy2s/RJTkoAxZSNBfV8KVlGl/at4ai4YpEKo9/X1fGF54GRvNdrPijKNd3LeOPAD8K+4n9Z3L+bPfnXZ+1Jdn+U31fGiXfacbxjXj8JlJFeYPu/42b5q8nAjBLqnDcRccjdf8o1ek5rMLE1ZypDoBeylGhCUWteIj0EQiJQ8ozRBMWbTkeN4YExWASK+sv4urTSugPJrC96nM56NCZKXw34ssbII/vbCzhL56YZHadjf/41iQxDsmluOa82VigRvl3y/DjU6C2YcfB9sJM/M5143hkqImmyb13tnHSsVO9/Ij+PP7PB7qxR7mKQhTxxKMMRrSxNZ9fewlYI9tNFW+3K0CkrHbysilAY+ceaLAEEzVYBOJ1pvg7fFcb4LMex3h1juBoj/UxpHrwN/c08bO1NYxyfUe2BBO/7MQJiIPqdhTO328uXhgax6rxCDVWbSUJLkO04XOUabzMujMOgNMlVuEhR2AcgCn7pewANHwV40BM4NozfcyPhzgKJVrylqgHF95awxPeAGLK/UnYg8E+Cf0J9OMqAM0SYPKPGf5hIgBmGrgq1kqPqFTfktaCfw2eKt4LXPWW7/7s13e7Yt7CF/hHnn+o6+Q+BWjSCOhmHhCvrHYEkG0UqQh2WAfAu6SRFBOBEGoKE6BQOsMVvDhA98QmfGH+JD6/b4h8FOPVkRjzSoCflyCSOrcGC9346O1N3D8sPeT8aQaAIhXhSxeX8M0T86i0xncM3V3q1HOxwe3Dx2+q4vHhFqhpW1hjO7pw2mEI9ZyjFD57zAB+7+A8KuEg8+PZd03BAKaqWIqM+pt0QzJ0fernZQuiw/lYbIM36d18/3TnsgPI17nzM0bhQPnys4kKHtnWjcvv3oJnqymnVdQF+dr7oJCRCMjziWlH47hTwgkoTaOrLRN2uRzHbd4EghqDz4zeRgFt42eeALcTi3hMuTmJ7xzr4cKZI8glIXQirdvfXp3H32xwMOrSoiJuf4GNn4yeJg5z44+bE4afafxhnMGljUvcqeM4k0C6WifJdWk9uKn19M/XvEl3ebcf82t1ANjvpMXFvoELNNSFWnOLMDkBU9aTUJ878wwrMKsC2LEdnO/LirTKwdQaJqZEasMRckkTM7a/iJ8cn8NRXVUgDKGI+SVMUF4UoevimbQfF189hPUJNYkY18hc/BQ9YYr/cWAFf3yIg0JrQgzbdKiKSoxC7OWwTnXjspuqeGokmCIl1nkXBDITQmk3NI6eVcRfndKDZZU68mmTVZCm3BRjfRzxvJkOYLdLo/2Ct9YBAIlfwGDajW/cG+D/WzPJAqlUL+E7a5yO5P07PihSqxRI3quI0UYI4oWw5r5p4qHeEesApLZPjDwTBnFzTnv3Z+lAri7RwiAFIFH8LSRNnNtTx/eOB3riYW4/ThMPzzd7cdF/BFiT60bq0bw/S/KRPn8yfpfG1VHen0l+0/fJfxRBUFu5VuplpMlNutm8NphMn8baW99y8C/zw29gHbwFL+3t7Tr0mAPiQvkiDX0eUrWAbzTLRJtbzv8WYI8AJyJmcHbGqUK7OmtzZkL2bUWA35dG3AewovYyfnZ6NxZyKypBt6Ym7wp/vukX8NMtFfzJnaMMGFkREcoR3URhVhzjH0+aidPm1eAzt93shlnNmjj5Dl71+nDZzxt4aLDB7cOykfLoSN6pZBHLOUg0QK2ywG8dNIBPHZHDbDWBXNzkcmQWEfBOJKSHTInWCoS8MWr/bu/hjvoAu9sjxAHbnZ/Bxw5QU47XALV0FawUmkMSbw5IHv0/Xi3ir+7ejDUNTXo6rwv5knwemNdXwJc/fia+8o+/wGhIx0IIuwH32H9Ynj2X2fh3rj7Qcy4Va7n9VkA5ZuTR+qP3eLzmiPSzuDGIa88tY7ka4goTaQjWVC/++N4U11TLqJHhs9wX1ftFg4J2f8r7WenHlP2oF4B1/yk+NTLmSmmtHOehNAx/1KiGN+K5xvBbIfyxqxu/u7u72wXzX3yBg+UnlMo9/ecmjvtpnaqjRLu9wwHwYpJKu0WcrTPohIV27gAoj47hxiGK9UFc2jeGrx/loJt0/Eg7ngZI0BVgyUGFqt+Lv3hM45+eraLBC4JeIAKepBuwR5riB6fPxJE9Y7wQyHF0xqf0a+y52OT14//6eRMPbKuhwSteDN9KYFsHYOnDdBBUoZjjaPzJkbPxkZU+CsEYOxquFlhgkEt1xsCsA6Ab8CY6gdcrELIr0qJ1ANm6oFzZdFcKpkHovoOW34WnB4v4u0druGdzjWcj0LzE3T8sEqBQdBT+50dPwkPPrMNdzw+iSTx9vtCyrLMyJ0VyZtel65eJbxLvw8z3o92YkCNKG/h9THtO0c0NPx4+MnscedIs1BqxW8TPXi7ii6tTbMtVoH1fFH1M5EFiHwL6GQfAoT8BgFL+E7yBwb9EQY2qNL1Jh+EPm4/d+KaP/trd9fx1OwA+vuKR5x6jXf8zOnXPcVIUUid1bARg+++5A41HdQlGwCxYShE60ChyAvwsVwNEJoqbfmIS0Wihb2Q9/nb/EL+9dwgvqIv4h23GM55/OD+Ay24PcMfWmuAB7CCk9JSLE+zraPzbWTOwvFgFaMrwtCtImw9NMxoq9ON/3WVKhCaXlLEm7QjApgNWT5BJTApYWgQ+ccQcvh4/EQAAIABJREFUfPjAHCrhCLxWwzBjqUrQvqUZQt9xl7PD+RWdwi5Bwl2tJKvIncWUdkaXqWaYbke6bzT5sZWr4LnRAr7/VAM3MshHEXV7MMcudypzoWld0Df4rsbpBy2Bn3dx2zODqCVUrqOoSr7fzpMU2S0790/ktq0DICIOpRDCJqf+TdLrl+GcOo1QbFVx8dwWvnmoRl80xmuA8J5XkgFcfHsVq1UXYj8PxzOjvljth8p/VO4jkU9hATL3P0sB5Pul+8+pK4XVqhVeE7dqN7wVo7/eyQ4g2z6LB56wAOUZF2rlXYQ03V+rtKftAOQUWCaM8SCZIGSrBZ1lMRsFWCdAOnp8cxksjOFFdSwaeRlXnV7BisII3Dhi1Ic+g7vbmFvuYHN+Ji65bgxPVBMOU1n2m8LHNIGfAgfnNa44uQ/Li9Lx1/ngNllyJo6LCa8b33wyxhVPT2LUTCSQqEVOPbsAHYEE/dNXCnkNLC5oXPa+Wbj4YAc9YY1n1TvEzjNf+HocQIeAze7Wwk6f3yWIt0tLneoAEpUyLTl2Klg16OLKF0LcvGYSpMPcUlS5MbwKkyztzgGQK845KU45ZBmCZhMPbBxDoAtcj6d76Br+KEcAjPTbUVvGkbMDMKQf0+svRB9yINS0I6mWl0Y4IBnBv5+Swx56kIFASj/rbh++eF+AH08U0PALSLnd1+T5lFKQ1Jch/chPigQs7VcqAKbQQ8jlM9C4WTXD65uN8efw3N2Ee76tj3dEBID+vbqL++y/IkX+QqXU+VrrxbJ7W4KM7PpSDhRacOYAmBVnIwJSo5NTokEilDp0oATQSYyuaAIrw5fxg1O7sSgZhBvLnEI7jIS2WnICT4X9+L0bx/ASwQUsQknhm0QYfpTgACfFD88c4EiA0oE2sad9SWlh1bwybtlWxFfvHsL6SKPVoTBMOwTnITt5mMwEZQeYoYDz9x/ApQf7WNoVo9giHIJgMjlbYUKTI5s6SYMByo47zHnvtO/aVdCdhfK20UGi9ykRyJTPt08ysqp5Km/oFRA4FdyxNsG/Pd/EQ1vrIHQrA/h2ct6dROfppT9C+ufN7cMJ79sfTz67Di9vp4YsauLKipO2hiPHyoIpxO1o8/u5EkBUYGYh0n8S8qemX5+MnzaGmY0h/OjEMo4vDyKfhozBpG4BN2/rwWeeamGrQyO+c0jZ4I3KL//b9Puzyq9UA1iX0oB+1BXIPCfHq0Glt+o4vrI11Lgba299yzr+XsujvDMcAKVbx57VXUgK52nlfgYaB3MYZ3JCAfXaDkDahNvcAOan80q22IEQaZgbYMeQGyzBSQOUa4M4xdmG751SxIyI6vuWOG8JLwqhk8NDkz346K0j2MRMsJS9OaUU9N0k/3SAivEPJ8/GIZVJFoTYwUI4dAEC38fLSQ+++MsG7tveYM06KgHZNOW1bhB9FxlxjvTnlMLBMzxcvN8AztgvRbcK4Ict5uxTvso304T+VAKny2cdwOvJrtmNGBCvfUzygRn1V6gy8jR/oYB80ljkInbzCN08XhhSuGmtwjUvjODVkKbzSM/+681MGGS1B0GddPkcFi2cg5l9A1i7biOqoUZI5P2prRHtAS1k9HbCjnVe/DdG/xiFl2OhCIE+hxyB5rSwtzmOryxv4bLFLZTSmhh/6mJt0o9L75rEarcHEaH7nPeT8ZOR+9mgD8r9uemHyoL8XRKFELhobkhDKecVRyc/1XH9yubDGed/Kqj0NsQC7xQHoHDCCfli0P9Brfw/1tBH79IBGH666OGR4RtZKa4QmMVqOPBkAGzbHcMlyZmQ4s+MxhA+2juKrxzpodKcYGyB0F1e0nxVaDyEj5uHe/HpO4cwyOBQCnhSP1QOfU6MBUmK775/No6bVUUxFfLWVK6/gvaIK6Aw6ffiB2uA/+ehUQwnGvFrMAd3FRXQDL08HFS8FIfPLeKUpV04c28XfTS7hlOEGL6K+FpwxMQbjjym7ODTiT/m93YXnFkaXIo1VN1stUhjTJiS2/GRuh5C5PHymIsb16a4ac0wNjYAuhrUrsuMOu7ofCN4pQvH87iH3slVQB17CXElyJBiYoI6SD07p6dTtsucrfF8GbU3K/2xS5UGLioVygAO8ZZJjHKriY/Nq+NrhwDd1A3KmJLCEHrx2QdC3FQvoJkjdqGE/YTwi/HLT8r/ZfQ3hf40Bag98Zfr/jxdOB13Uv14HEdXuRONmxov3rHlbbD1nX7FO8UBsMUVDz/vcHi5C1ONcwC9OIGm9U6hPNcGhARDK1pmCdDOL4CgNX47UMQAUNwbQOTCaY4hDZgfMDCxFZ9dUMenD/BQDKn6TAubQCCqxcv3UPvoDVu68Lm7RzDiKyoeGI9O+0XMAhlzI40vHdiNjy7T6E6qUrLMEnWz41C50VFo5ItY1azgz++YxKPDTWYf0kfuWohDNgW70UlYTEi2iHJQB3lRaSwpAycum41DemIcvdhFxSVHEMNNIrgUITHtWMpw/InWK5gPtr9n5TzzjXTRKUQmnWpmsvke4yKN2MOrowke3KDwdE3j3pfHsT0Sg2ciVJYS7JrBt7MVyVIclFeTki6p5bAagXD/uYpC/p6PSTy1dVhtxyXJWAa0EQ7AtG1TPWGHSCQfMUb5L4WT0Oj4Fk7NDeO7xxcwS4+KNkUK1HO9+OrDLfzzcAHD1OhDRk/AHxk9jfc2ub/l+9MUIWn6kYYfiqpSdkAiJ+YgfcVJ4puSVuuaYGRyNTbeR/1kv5bHO8kBoLziiNlxedGBrosLtdbnpcBMQ4vRprbfFrQhwgzbNe8vUjfnup5tGabneeIAYwEZnkCuhBmFLeTiScwZ24I/2zfFh/eMUGjVeJZA6OSR53FfkmcT4+uWbRV84T+GsYllpATIEWksSgccdKcxLp2fx+WHFzEjGYdL/cYsZyYqtgzG8UZDtR+FCb8H/7zWwbcfHcX2OEVAsAa5HUP+y+YOd7Q6y5qXW8akqI4iJKkTUxUhpxR8rTGQAw6cV8aKgQqWlSOsmKsxty/Hwpw0Ppul1y3LxoAD3EXBEZXUxHl3dBUaEfDScIKntyisDRw8tnEYm2tAI6YBmNSXT7r8rz+833GlS8BPobSXIwPz2cETzVoavYRNweQeU7WxwznZSLOOOkFOrPHz95jmHlt3l6qSlOX4fXRj0hClOMEhGMT3TyxhLzXO7c/0nQ3VgyteUvjGmhTb3DKSfEHwIKPo61BfAav+5KB51p9R/SFjN6+j4xYpRHFYSutHVSv8QaMxcQOK1ZG3UvJrd17lHeUA+G4feFopV+w9Qzn4JFR6YsKTo4kuIYuA7ylvCaYb3IqFZBiANA3ZKIHmxEs6ITRhGkdOlGHq41S6hWJcw6yhjfj7gz2cPo9y6hgvbU6xpZbH4QcUkXcm4LoRAreAO7Z14/N3jmCz4yMk1Nnmk5QZkFCEjnF0KcU3juvD3oUJ5KmByMp8W2UbGWbAMtHNfBHrWkV869EWrn2xiqYiCqu0yIpAUpsGy6WpjjHhu4oYmOSSikCnqWhzVcFIWbJGQckHyvyfgk/98BSmci+FRphq1EONegS0EqBJICgZI6swifOkn9L+vDua7u6WnwHqDG2Wa+WmJVdcux2galMzpvFkbdd0Kel3WRTyk8p8GZeBMQDjrHmwi0H/tYTmrDGYJsilLezbGMIVp1RwUG4MHk+p0oj9Eq7bUMDlqwOsd8pIKPSnZh9KB4nFxxUAO93HgzYVAEkLqLuHoklXa6WUtD4jVEpvVFF8QxwEP42e+sVjU4gku79cb/or3mkOgE8wd9hv7e946Tkpkg9pqH010GNSgewCtEuBktG1m4gsPXhqOsBUYWLS8Q5sx4QS6BOiGFcxd2g9vvW+PE6dXYMOgZufUXhoc4LzDu/BIQtJ9moSgefgsYk+/OGN2/Gqk0PVIs08rMTlKIRafxfrAF8+tBfnL0pQSqjgJeGr1cli43UUIsqdcxVsdFzcXy3givuH8PzWEImrEEQWLvvVbpEQiMhYJIRnAowJpkXnVLgN1ql2goTW1VpDEh8mOTPTs7O7sHvMyjquna1c2hmZMefReC4yEDkq5kySgXJzkHH6pmPPfo4FJamSn/VPMV/DlCEN998+RwM9OIJgFF5yfq0jFJMIS4JhfPv9XTiiMIIiQ5Wk9FTAvcNlfPaRGl50u7iVOGV575wpL5rJPowHUATgIyVCkOj6G4FPEbVTTA/k/w05aXqdioKr6mOTT2PtvUNvukW/wQ/81VbXG/yS1/ny9mo65tyuQlJaqVX6Ya1wbqr1PHEAosvCgR53/skOxCzBrImoky9gtiyzzIWSS47AnrbpHkSAYlTF/G3r8Z0jinj/nDqilosfr0rw4+fr2H9mCX90Ug+WzGyQ+BPWjFfwP2+bwAP1BGMc0hEYRhVohtE55+tLAlw428GXVhYx32vAJ9loBhltqc5BteXhmmcibMx3oXdhEb1Lu7F6UwO/eHwM64abnKjT9Bqb01ows7Odd4drSykQcRvYyUk0wbp2/CEdwib2jdNXQKesET9nj9e8Yfc2P+WQJLiXN9H/0zhwuoE0CpRJMj7NCBYSvuTl4q7YiLikKC5KynfGZZl/SwQgub29pSS9xUGW6fVnyoile/KubMBRUjpKIyysb8V3juvBceVJFEjAldaVV8TjEwV8+oEGVjndCEjUg8p+vs3pZcS3RyAgafxzJSAvqWFG+pG+AxOdUBBAp3yXE8ffb0bxL96udt/d2d47yQG0j3XBUcXK/AVLY09fgtT5WKr1AvNkhgW0612UNxuQT6QveaFlDoKbgixrkAKFdkrAy5vAX5o0Q3lgNInFg+vw7aPKOLq/hlArXL+ugL97eAx1+Dht7xw+eXQ3luQbiMIc/u6X4/i3oRRDroeIWcPSiEKGyuBcGmGpDnD5ETNw5sIY5WiSHQivahpLFSpsqZXws7UaP9tcQ1D0sWLZHMwdcBDmXDz0wjBefLWOMEkQx1Q1sFJcdH4yHizrDjSpxu4Hiu+4JDI1op0M09z1AhLDM8O5jWgqARhi4IxHcI83zQpQ6EaK3hywZ28epUIJt22vYZtTRGi48e3vkTo9N+lMC+mFYyWtvNbo7ev4thplH1u1YOF3LYmQ+BKKLFIgpiaxCAuDEXzrmAJOLlVRNENLYuXj2VoPPvvwJB5X3agpclKU99tyIYX+hPaTExCVH8r9ZcIPvYb+JhwDTme4+ciZcKBe0Gl8fRrUbnwrJ/3szuCnP//OdACA07fylK4gP3CmBj6mtT5Ba6kISCQgvAAxYNrdZJBIyoZsKgOZEzC5oWkmsmAg/8wmBdPiSOCmDXTFk1g6sgF/e1AB718aIkgd/MuLHr75cICGLiOHOk6dr/Dxw8rYZ34F1zwyjm89PYZXvSKChAeV8eJlijE7Ao0uHeLsmS6+eGQ39sjXkIvrcDmZpgqFg1CXsGqkiGteauC+oRq2uQo9A904cnkvZvYoPL1+Ek+9NIqROuXoBLhRuiE9E+QIOvsRXi+Xf1cLZdfViHYEQMZdUC6KSJFjtWQDrBK0YcaBzS4p7FUpYv+ij0O6Eyzr85DLpyjmNSbjPD79SA0/j0po2NG89oCIL28mHlkHwPfcrFTK8WVXtQ7C0Go7ZL544IdVHDIig4zGc8QYw09DLK1tw7eOqeD4rkkUKR5JaACMjzX1Cj7/cAMPpBVm+lHlgyIVTn9otDfl9yz2Idx/4ftLKZQ5FMz1ZyCSc38jy75ZpclNiIKfBtWxx/Hi/dT6wKf33xjArl2Wyh1x7gGOWzgXCh/SKfbTWpPaswHDbKmPDM2kA0aLmltqbcjLke9UjgB9RkYySg3QxFJZCTzdQiUaw+LhV/B/jqzguHlNJLGD2zdX8KW7R7AxrSCnUhTTKo6Z5eFTR8xHoxrj/35sEE8GCepeQbrZTPisU5kpT80+A2kLv7NvBZ84oIC56QS8sAmXGIsxkCQ+WqmPsTSHn2/xcPWaMayNNaiadPLBs7C4P8HgSANPbozwwnAoCLypaEieLRFImzw1lfrzmmnDG9g26HMqqcYXD+rBBUs9VAJpkPFcF2mUIOc7yBk6LQ0MIdksCrW5byNNkaQK250efOS+MTygunn0thh826DF8NugXrajM4wiBk/AJfcY2vKe5SqwQAxBgxIpCJZAvxHgRzt/CyvSMXzryDzel59gSXPJ+T08X+/GVx6u4p6khCqN86Z8n9F+oghLT4Gd7qvcPOf7BPyx0g9jDjJvgIxfjo3QPwaKNiGKrkxr1Z+EE41XsOlBoki8Ix7v1AhALs5RRxVLeu5+KXLnaZV+UGt9wM4cgG0OEiEQ41o7nYDhCVinwCxBM1yUIURDmKGfHklJxC30RhNYMP4qvrifh/NWUNEhwt3DPfjcTYN4JfIRE+DnRChpjZMXdOHMZf2485nt+OVohHEvZyYJ07FQMiCwmqNc5JMIS50Qn1rRjYv2UeiOa/BDGlRP3Yk0uMNHM1Gou124f0uCa19qYHUjgtObw3F7dGHlXA8qCLFmW4iHNwV4qR6jHvPb2SFItd/kxLZk9iYtNRlDoNCtU/zw5Nk4ZWASpSjkGjo5sYxbIHNa5A+mlp76HqJCAcPNHL79ZB0/nHAw4pcsp9Ns6m0En3CzKRGARfkNyJeBgIzISwwkKIOZ1siApZkxwCzSCPlWHUd44/jmUQXs6xN7M+ZrnnhFrB7N44tPNPBwVESzUBKugE8ovpnga6b7SKcfFaaE9ktUYN7xWfBDnEDGdpRjDj3g7lZt8sqkNnIr1j1Ou//rJUS+SXfuNXbZt/wb/qtfsHKln88tOQlQn3RS58zUoZGtFM3ZHc6SfEyfHf+w/Pr2FFkmDbGghiwVGTAq9BL7WQLRUQku5tJQF5UIRzbgcwcoXLK/BxU2sGqygi/cUcOTkwmapFPouMg7Dnqhceme/ViUc/HDFwfxkuOjwfuAz7sCVwEMQ9FzXJTTFAucBi7dr4KP7FtCfziOQtTiZh+ZjaAQJR5aqoiNDYXrXlX4j83jGEqAs/YewIWLXcyi488lWDsS4vGxIh4dnsSLwyHGEqLeyn+0BCPCOXiakrQ2s4qy0b0z9QljQYatZwxKCEjSxCxqTLKrUgpwULfC907swT55Kp1GUBExKY3Kgedyyy91zsWJQjVJsbbq4M5B4BfrJ7A+zaPqlRFxl541dFMjt0ykjiaGrH2XUwGGEdstv6a3X5rHROWY836m/RIXhIa/RuhqTuBDM2JcfoiPRdrU+aku55Rw37Yi/uypKla7FdTdosh1865P7cGi4+dTJOApOH7JjPQ2eT8/L12G7ACIDk1txlx21A0F/Twa9evDRvVGvHjv6l93yD/dHN/JEUCWH5WPOHd2rAofhsLFgN4fUL3THYBEBsbgWU9A+GMy9llKhfy3Ds1BGSgyVcAiVRSqKnjUWRaT9HMDA7XNuHhWA587qoSCqmMzuvC5m2q4Z3sTVbKsXIlDzkoa4ZQ+Dx9Y1o+rV23FozVg3M1JXEIINK9RY42ODw8tFJMEAyrEhYtLOG+hwvJZHgppC26rBZeQxZAanByeclR1ivjP7cB/rqtjohbi3CVlnH5gEUWPRpzFrKlHi7UZp9g2HmFN3cMrzRw2tRK8MDqBkWaKSarvp+2GnClbkZDi+JpRFE+GTnwBEjSlqxm7wGDqYULnuf6+LB/i0r36sYfbZAdYDxwMRT42k9pyGGFDtYFtQYLBOIcmE4Y8hNRP7xQyXnwnk6+N8ncw+Vjgw5QO+IdR7c0EPAwgKKQMAeHoaFkvIUJONdE3PozPLs/hk3sCfWmVmZFE+255vbh1nYOvvhDgJVQQkePiOr+E9Mzecx1W9iGnTVp/cPNICQQ0s/0YAGRnRcfJQnRIuM7Kx/Ws22pdF9Qmr0O1+fw7KfS3juCd7ADazmrm8kpx8V4HwS2clzo4GwDJiPOxixF3PJgraqMCO2VYSoWys4pjYEdgymJTgS8aoiFRhEM7fBKgnEaYUR/EmT0T+OxhPuZ4NUw6Xfju6gTff2oCW+EjoZ1Jedw5tiyn8SeHzME9z23HDeMJxuh5MwKa91NaqyQFwV2MTGVDSSfIIcYcL8SJ87tx9ECCkxf5KDVp3h4dC+1kmlWHIt/Hq6MKt74UYe1IC/vOL+CAuXks69aolF34NIqMhn0wbJ5w/kqnS7VwUsChq9OKNSaDCHEiHZR0SD4Jn7CxpcjnqJqRoJATg0rimFOTnw87+NuXGtgUFkykFDP3wQ5BpuiC+/tpgKcrswcSBsYonBYHJV14sotTh5+E+rbEJ/dSdAmIxmsm51iRDzNIQ2IVI+6RkaVNbwBvBCH8sIr9dBV//b4iju9vopQ2MnbopNuL762OcMWGEJv9CjcwSfee8PtZqdcjdQFp8bWqvvQ8jZa3Ah+i7We4CyxDxo5AK6WbOoluTaqTV8SFsbt+nWy/1wrC3x0OgNbXHisr5f5Fh8e+exrgnAKFJTSUVjoApwJe0nNvkk8zbci2+4rYA4GE9PyOrbhSJpQ0QSjDMZwoQj5ucm1/72gD/uywIg5fGCFsAQ9vLeB/PTiCVYGPOk0ZJcGK1MF81cBpSwawdrKGx4ZSNMjwuPFEREaoGiUeLOFQmfkM1PWmUxSiFDSispIkOLhP4Yi+EvauJNi7O8aciotixUUzdfFi08W1T1bx4LYAY2ZeQm9RY+8ZZRzUXcLSQoSlXRHm9eRRcGW2ogpj6IgcY8wVChqjJQZofnJ50eTwDGITzZFJLIhjYLsq4zPPK9y8qY6IiTf0RhNFGdIO7dL2PC2tWLriSGOvzdVnYk7G4Gs7AGv8IsQyNeSXKgd9hjgApjexs3B5Vyd9Bo9mRDbHcUp/gK+uLGKxOwmfyq8xtSm72Or24W8eqeP60Ry2U2jP/H5K1agPQTT7mTToevBZ0Zdae32kxPrjnF/yftb1z4hI0unHPk67I9DRU0lj/GdRPbyug/Dza0f9300pwPRjdbqWrexPBpYsTB3/TCA5X6c41BaIdnACnH+3VYS4ly/reLGtxR2KQh3TLC3BSA5ASkcqiTifHECAOfWt+PiyBJcu95CfmMRQXMY/rE3w/RdqGI9y3DpK+ELRkRFbaeJiPEwRsSaczXnbTsvUM6SGTiQeYRQIcSZNWYqqoBL4SYpCIlqCVAIkjmGNIgLON6XuzFhDmiCvFDyqXBFFiVqJkWJ+xcGKvgr2zSns3xNhfpeDPpqlZyb+Sm8fBep0fcijiBiKRNcUuvtYE3bhwvtGsTYm9p6Z6mZ37+yOtVF907VjdPiszr6g91Ilkzl9zN/nn+QU6K7almOm0xqij22ooBfamENiQe7yTGOUohoWRKP4wvIiLliq0ZNW4bgJqMwf+d14cqSArz1Vw30THpqFLr4nNL6bNQIo53e0hPfU2UeKQX6eIztyBqQZIAq/JuxnyMGXZi6jQygxiH7aqVd/3KyNX4ue1sZ36u7Pjv+1woN36nOlw84/LPW9y7RS5yFNBtrpgPDd7HFbLUHuizeagry7WG2BKVoBu5ZhJ11BmSNO7LEEJTdBb2MExxWG8eVDC1iUCxDEDu4fL+BrD4/jmYkETU2UUcMU45yQdija6U0KIkQBM0Y7O2IbfLSxIvN62r1ZFDSxJU6R0cqIP4ZeLB9A3Yi0S0puap2JkHPkM3IONTERxzrF/KLG7HIBS0t5HN0T4uiFOfSoOtwklLIbpQyFAh7flsNfP9/EXc2U9RKoWTMjFE9fSdNQfFvmY0MxBi8qvbZLz4YgRr+PcQcj1JnN8jMU286Qha4JYu67qNTHcfbMGH9yaAF75erI0yxGEoVxPFT9bvxodYR/XBthoyohoDA+k/Iy5CLh68P1ZYqvlPdE2IPSgJTRftH2t41EdA7sqrgKoAjhX49W8wZMjl0VvnjvqneqDdnjelc6gJ4Djt0jLs/+YOo5H9YaB+lU01AR3q5NJNB2AqwZIKPG2xuUGTja0SZscQOrKWA+LOuhp7+nPBiE8nGaP9hCd9TAotomXH5wEcfPieHWGxhRJfxoo4MfPjOJwbSAhiJ1WKMIQy06vLO1MQo77LTdtC9Rh+XQW0ajRCVt/GL6jWtHQBJPtC8AYROSEknYHJsBq9IXTNiCx4AZFb6AigZW9ri4/OgyDizFyKcxmrGH2zc7+KvVk1jndaPBNRQK5+kjaHcWBF9Kc4ag1cHk6zSCjMhj5NRpN+2s87OOniDo0sPAxCDhaticnyXcDBnMpV6OoIoVqoHPHlzAGQtTVJIqpzhIXAReBY9uz+Hvn5nEf05SfT/Hwq2k3087vuz+Jo3gOYFE8TUNPhnBh5yAi5SIQHy8gvhnD5IXp5EWDlapMLwqrY7dECqs/3VIfL1Rh/OudACYObPSvfjQ5chXzorgnKqhDtFpyk5gByabqQjI7Hqp/7P+KxcE2ru+BROtToy9kJZYw5NgqAOQmkVSuuExsw4LcQszm8M4q7uOTy/3sKDUZPR4XT2PbzwR4NZBYDzOISR1GNKOy0JXcUK2Xj6lqsHRgZQNufTG0YsBPDMgs4NHZrMJzjCF729vrAwSZVYKS4ZloTXvnPRaAU05yuHWFQ++VpilEpy3Rw+WKuCZWogbtrQw4ftC3Omc3209V0bIMYZhIgDiPkx1ADYFsgM6zahu837aZW05j0/L9NBbkEIUoWlkXIxc1MCsYAIfW+LhskPymKEm4KcEbCokbgFbWkV896kQ12zV2KryaBGzj4zd5PQi7WRTEZnk6xLIaCS+yPkQ4i80YEoBZLSYAJhcXxKij+NEDpwNSOJrk9rYj8Nn7nzH7/zv6giAV8iSJfmuWSsOSfz8qVo5Z6nUWZGqtGSlwKZ7QtkxGJNm488MvXMUWVY+bO9kvPtkjoIL3Vl/OjuENEQuSdGfNDGnuRWfWubiQ3ulKNTqaOg87t3u4ZtP17AqdFFzSywpzcq0bDg0atvrmGMgO3xWXpx9AAAgAElEQVR7tzcGbaqHLIPRwfXl6GGaC8/65Q3eYZ8mgdTpD4PRmxFrhIfYa0QCqBo5ig6IXEQlPC8voBc18BhHy/wpk58zYs+8H8O3Z/49dVtKeczu8tKHZwybm39MCmCovDLJxwzPYOk06XtgJ8iELopK6uhvVHHubIU/OCCHZd1N+KTQTKQeVcRInMdVL6W4cl0Da8MCamT4HIVJWC8qwRLG00h00QiUeQIedfxxOC/U3pR2fE8YfhydyPFpEwFQSEBxyhDS+DrUJ34ajFafwqYHSez4XfF4N0YAbSR1yZJC9+wDDtZe8YJEqbMSrffjbq5djKrOMAETAVgnIOCgCV1teZBvH/1tugMg2m1H5SFJkVAvAslJORq9zVEcorbjU3sXceSCBG4rQC0p4qZXNL77UgPr0zLGaBfhnFJ06Fgy2oT4tlSZRQRUKpSsIOtd6Azxp0c8LHUuk8Ezprm07ZswoePacGBA/QQkTcYOwpCVCO9g1SX5EBYGYQMxxmwOgJ/lEF34d/zTSF6bXziiEH1+29XHbqMtOmIiBHYQdB3YwDxRcaJztxUbyI7fG9RxdKWBzx7ejZUzYxTDBhBFSJwixlQZtzyX4sqXq3guIbJRCVTroFZeTsOMGKig9VKGpL+7VrPf5vic+8v4LqrQdDoIh0aF8MZvnZoTKeDOtDZ8RTg09gtsefxtGer5ZnmXd6MD6Dx3p7LngTOcWXueEav8RamTnAgNigLEZqaVB+VvRg2H7aHdTceswA52YUYkMo6gzR9oC3PYPDQ2CjukF0blpnLawoxwHKd3j+MTexewp9+ECmJUUcbVryb40fom1usSxqnyz2Ult63wM/2Y7Vh0c9a2lTnj9nc6O94h25fHao+I/zDYwPRAgD1GRv1joJF22zaSQJudtOaywROSKJZuDN84gA7mnp1ALF17MnE5y1IsoMfOrx0BcD3dei2uwtJxRXCpBJvU0RU2cVx3jE8eWMKxC4B8XIeKIqQ6j6Yu4dZ1Cb67porngiIm3SJaPBaQ2nhp96ddXWqbfEwm7Kfzono+RWSkScAOjgk+wv2XUp9Ihwmn39WGiKSMwlBLIXk2adSuCSeHb8DaR599swzz7fqcd7sDoOvkVJYfsx+6556kHeesRHG/wDzeMTvEQDsv6FQnYHd6IcAIU1D+Ru+XKEEUhqXnwEpUiTPhllNCyimH5kcCHcdctuuJQ/Q3t+DiWQk+PNfB/HIAHWpU4zxu26pwxasBXkYFE4nDUuTitsRgrMVIzt6pvGO2d4MR7DCs0zoQy8c3ZppFAPZC8GkS2ChEpAw14JHrMvlW3mo7DiV4tzJodqfn1l3mMNjmHHqThNNsx6YbT8RJhTIr4J5UKdqOga4r0bUpRUu4AkEj0nqDBo7tDfGJg7pw5BzNLdsqThB7RQyFHm58TuGajTU80/Ix4ZfQYqkvIepwekJ1fSOHxGPliJzEKkjS3COcBXEAot+XNyxF0g4w7bwiJc6SIjI0lPUGWlD68Tio3RbXRm7GRPQCtjxOk834qrXv4Ntlyr/a97wXHACdeaXrwBPn6/KMU2NXnQvoY5A6RRov1CkLzt7CmrfJiY2chIT7Zr5AO+cnw7f3UohDoj3YThn4eXY27Y5Edjz0+ZqINi30RQEGaiO4eH4Lv7OHh4GwBd2K0cyV8MutGj9+NcRTrRzqORd1FJDSimUdOUlBaDeUoyBj5Eo/S5zt/NFGp6XCwIF+GxTsWKEcmZvQPws8qGJgWUHsBwVE7OzOm+JDpujxifFzeGyNO5PkMqrE1D9P4CenDoLmEy6jEnK+xN5rwG81MDdp4KyFBVyyv4MDZmp4QQOk15HmCxiserj2uQQ/2dzAS2kOddIVUCTZbkJ3Y9x8nGTEZg4fdfLxuRFXnwxeeXBZeJRqfwT+uXDNgBAZ4yUTfDnnlxZlJSq/acvR6tk0qN8YjI/dBmx/EmvX/lp0/X81s2+/673iANjrdh96+p66UDkxcZ2zVaoOSaAX8j5nZgR0OgBe26mZL8DGJA5AgKxOinEHBmB0B9rsQ9nj2sNIjfqO+T5yBAkxCWnCLBJ0BzXMbm3HR+eB9QHmFUOoVszDLdZMOLh6CLhxNMQEyqhqF4GRrJaAnPW1M6GM1933v5vRQFkEkZUNTAef2ZtFSExyZj4KMjJzOALstWm7HPqbaEKAvrbjkKjAhCXUgs0Rk2BpbtpELmyg2GrhQK+B31rahVP3iDG3nMKJGwzARaqIp14Frl7Twp0jMTarPKpuEbEN19n4qeQpKkJC0TVKQryzC4ZBCr5CcJJZfazky2Cf7Pg8K5ArAcLqhEMwqEH7OQVyW0rFjyf15u26OXFTFG19tsP43zU7v3UB7yUHQOfkdx91elfkVE5R8C9NoU8BUtEQ6HACU7xmFrqbbsIsJpUdvT1wRHZ92oFthCBzCeTTbASQ/W6+j1qUaSWS/hyl21SmqqQN9AUT+FB/C5fOAxYXU6hGyDTTYe3jrhGF24dCPFIl3CCPmvIQUi5rxUY4RN/5rbOaeBKldDDy7EkTs69DXLRt9x25faa+QScmZTJ2dYz0G4Udg0xyJtJxKBblF7ygo1Zu+i8ovKc+CDduwE9aPNhkDmr4wIIyzt/Pw4G9GsW4yRES4SMNVcB9m1L8+wsTeKqew9bEReiW0LLlSLvb25FbpsdA+vMN6YhDfaPJz+3DBtQ04p0C8knzD0UALP7Bkqr0Uu5F4DNUyolcRz+TNus3xOPV22NsfuLduvO/Vx0An1f3URf1p65zYQx1sUJKQiJzuZK2MydAHFF+yCoWiS1LQ+0UGxUjFwUeeQ0bEqHUFmTjOQSG5MODSu2/JW8nxEAqbRFyVDEImig3BnFMV4ALZns4ok/Bj+q8C2mVx3AM3DumcMtwiMebCnWnDJoXTOJyCYNoZgvOgD8DutmAnw810801R9lBErCrwOzochk68AC5ItmOz7+l7Z2VWXOZFBm7QZFi48yBwvxMwhk+OcAwgN+iHocI+/gtHDu7hMNnAu+b76Dfb0GFAeB5CNIiXtquceuGBNdva2KT9lBNcwioFMmNRcTbpx3fiIDSZk3ti+Z4eY4jg3dUpTNAHzkIMxqcG3mMxJe8ThiJ1NjJak50zra6YaoUylFVR+MxHdb+I6lN3vJu3/nf0w6AIoGuw09eqnMDZ6RKnZXq9GitVZk1crM6vl0usnAtKYh2+LZew1SlIQYBSbSDDcU4Ca6WGUOniMBMHOZPZVzAsv7EStk8rEIRRxghSkmInrSF+a0RnD/g4OSZNOhDIW6RdBig/Rwm4eGhkQRPtHJ4YHsdG2MasV3kkdgtPmafcQHSqZMJNIauagQ3eU0zaNnuwRcZoY7tm+EC602s4VstfgN+JTLWTNpdiSZldBZYz5P2TOqZoCbEGJ4K4JFgSBBhttPAEQMlvH92DscsTDGnoFFwSLggZuHSxMthsKZwyzqF67ZOYl2LjD6PmlNCyK3U0prrUHMQ/y6gqaTndgyYhPbCIzD6ArbuT5EMTRLKHIiRDSOyD50KGzxhAEJMshEWgaRauQ1f4R7daNwQTQw+EsWF57D+bpp/8q5/vNdSgM4borpWnraPyvedmih1dqqxIlXJPN6t25GA0Z2VnJ+Rcv6LBdioDm3aho35tok48ho2UDIEO6RUhha1RUZMGS+rSNiUwRTb2EEYLKKoUlQoF25OYD+/jg/O9vC+YoQFXQ7SVotFJrzU4Sk9VDlYVUtxf9XBo2MtbE08NF1ycTnEjosWFSQZmSf2nghlkAMg+XKJdiwzMCsQyrWbrhxM4TILmYijZAqTGabKnXdOAjeO4SU0hr2FnI5QSVpYXAD27C9i34qDg/siHDjDRRkR3FYC0lxQeRdB5GHteIKHt7m4fVMVz7dyGHVzqOoSQh7FRju4dOlJ3i47vhi+wSSogYd/p7DeTAPmJiNTYmRSj6QAbT6DgHu2zMfOxPTzCwaQLaPYcd0JB+l9aaN+czBR+wXW3k1jvOwCedfl/NM91nvZAQCzZ5e7Fq+cr/3yaal2z9FOemymKyhOwEJkgrAxMNixu5ucPwP9dgIScsrAAyaMo0iEKCQRgCmbddTqCRCkARzkbjgaIIPk11NuLCkG0YyLOkYpDlCIapgZTeLEioNjBxwc0uOg6MTcn0/5St4T1ZpGqvDyZIiXAw/rdQ7bgxiv1CMMBgoTLqnU5BC5DqJY0HJa9Iy/c9piwMwptQJJbSgicsiwCACl3yPSJQjhRyGKaYyZuRR79uSwd5ePRcUU+85IsKDgocvV8POKNRXCKGS0PU4cTNQ0nht1cM9QhAfHI2xMHNS1j7rOI3TIWZEOgRmjZbruGIPoVAgyc/5sOzGrFHEnH+X9VEalrj3jAKyklzF4iwXw+dMJsqOxugKG68CaoxxFrXPS5K44qN6ixsefab384CsdclPv+t2f/f174ixe+yRMdaDnxFjhdA29L4ClABOGzDyBNsdWZtqZHgFqMTUpgYBqMp6Kd3MyWFLOsVz6bEy5Yxh7BmwzWIFlJ9JuygZHjDlTe6MFT6g4A2xW0ISri7QfhawPQHPrvGYNvWkV+1ZiHN1dwPJSE8u7XVR8KTuSvGUz0chTCz8dm0NYgQhzjDcTlhbbFOZB4uTjqcZkqjGRJmhGKU8ECmNpwCEz8B0N33XQ5Xko5VxUHKDXdTArjTEnH2JJv8dqQb6TwieDTCNo4uhTkkEjvvLUJutgqKbw/KjCY4MRHh9t4pXAwwTJpTkeAifPw1E0lz2Ntp/IaEs/Aw0CtYZP+T7dAnJGPEBEWocZradcn3/a3N84AMZJzKAOKedJWZA1BIxCkxkdJhoDdsKQrrpKrVda367rk7cGyZaHsGpVvWOZvet3/vc6BjDdJeQqx53Zo+PSoYnyjoOjz0CKFZoG7cpunXURMgLQoSqU6e6bEFg4dYL+C6BAa6ENGtruvqy5iFRqyThMCmHba9mhkAMygJllIVKWzp7ZMu3oZVQjN3JneWpJTijUDuHpAPlWDd1xiD1zCfbtKmBZGdirlGJRweUcW3EViyKLlJV0ZZClqOpS7i2TFS0UIPrevCtwTz4RZiiCFtor1+xbQGycjThLxUq/rcTBeDPC1qaLF+oeVlcDrJmMMKw9NBUJnToIUo+VdxLTqizUXAEdWRuAnCIZeud8AmLzGXoxGTClIFxd4PDEDvik8xIHYOv3UvYjo5ZxY8LvFz0BcioyhchEYHQd+KT5GmnHUatUmlwTTY7fHLUmN+KFR4jbn0Gt76VN8zchAmjfr5Ur/VJuyQq4/gd1mpyWKn0oUhhVCwnZ24UrkxJMG84ppUAZgDFl1JcxXJsSsNGaoVyyq0sEQXThdqVRooRMqMSChB0OQJiJJLhpnAxr9klJkuqKNMTST8BgmxeTrHkAJ2qiHAeYnU+xsOhiaTGPRb7GDD9GTy5BOa9Q8oBSjiS8U3jkGLgTUMp+4oEk76cJZdQMVI9iVAOF8ZbL+MPWENjSCLGlHmF7qDEcOqhTuVI5CJSLQHuISDxDkcQaOQqSHRFCEp+J1SvgHVnan5kdyJG3qW7whtye7EsGzPKqXF4UXEDCfvqbiRxMCsARFof2ZpAnRRMm1LcsR6ZKs/aXTG5WSBuu8jY7aXRDWJ/4cfTUHU9NM/b3zM7/mxYBtO/j8otyxV6s1AqnaoUPKg2iDvs2ROc6dgfTz77Rlvfkd+EDMG3V7NRc7+8oI0qaQCCipQ6bnV3H7dCfJazMJ1ry0DSXLIZv2Ydkl5SP23hCxDBo9gBhd+RjiKpPzDqOEGgCDu3SSYvHg3O4rqhDT1pqk4gQe5mZQPuhI11DJgKRXqDUk/yb2HSkgByTki6VInlun4eWdrl8JooDMsqbjZvmJbJh0udbHsGOGn52tBGrIJFBUy5vIhLRBDSRQYdGIBtr5jAk7Jc8XiIA6uwTVV6jQcjuwop+2PZkw7Q0oC9HFk661o2S24La+PVxa/wprHl8+L202+/sXH6TIoC2997rzHxpRnH/1PXOAPRxAFbqVPeSI7AGaUN4y7izwB4TY7ImIltAb6sQ2wvK7+cyn5QVs14Co0zEtQOTBtgbwxGIMcA2PmDoslnbbLuBSbBFel6a92z6IXoHUsGwVGdFQiZ2DyYdfx6UKjqBzFdgchAXOk0AICSolAyY+PImF6euQdrRKT3g13IqRE5OUgqS5DZjkVgdl+n3VOjIpNBM1sT1dULtzfftZDCITQt4p+cdX6b9ZiU+o8tnHY5UCmzzjpQO2XkZ+jS3KnNPv+1TEJwB0FUXel0atu5IJsdui9PoYbx4f+29GvZ3OoLfJAcwxQHOW7myNOzMW+o6xX1TNz3d0TgZ0Ht0ztbbWTehlAkykxUFuCxNIPLLVLWhqbLjBNYJBTbbadO0Awy0zUe29bddUuxsD55yIlOak8SBcIMPeQcG5cwtNlEDE5lsVcJUMDimyc6rLeDBgly2GclGKgSD70RbQGrnstO2r04HFZh78M35ZJiDhPj8947x3jzvj9MAGwrY3Z2iEBP+W80AxgcMeScr/wmyz5ihYSO2E3h2jyL9xYfKOgardCv4aVIfvCUaDzdh83s3558eBfwmOoCpedzKc0oF3z9awzvDUfpkHkSq0KkzOOWaiRxV53Jq9wKYYN502FkZMiN4YRF/Hg5KjkA+Q3btqWVDNoiO0qH9PltW7IwY2tZmj0tGkQnkYKcm25KknaWYkRHa52ZWAv+waQA/axSWzSsZfei4BrZpsH1FpioAyUmKIUtflQnxOyICfgnv8tJrkGEAtpfAtOPK5F02a+M0rMoy1/MY2GONPvs99LtRDWYnZ30hVOwor+EoPaKQjCSN+m2oV38SPn/3M9MM5D2X8/+3A5h+BWh5rjxnoOT7ixLtnASlT4dSR1OZcMeX2hZjEd2kBxnbVHxAGHcZGNjhLCTEb0cQ0ozUbi+Wwp+ZSkBDTjuFPKxRTpMynw4iCnffOICUFPqn+3iJCfiYpxh6x9l24N08UcmAklK+nOY8uBnAGLhtI7aZUecFtOW8aaG+1fnjt3RKhHMDjwUkDXmJd32BViVCoOetpqCE/FagpBPOnRJhSPF2yFFYizh8NA4az0XNyccQhWux9uHJnd3z9/LffhMjAHs/d/Du+aPO3StNvJOV45wAhcUKegmAfsDqX8tbp0YAkt9P77fnHJxtxaoK2vd2qA+zNFmnboEZYmoqBlP0DIzdcTNNh4FOUScSdKIdAVj+XqcTstRfw0VQ06bz2vkJ7YvULkuyBJrphcgESTrDejumSzzCVLsx9XczuiMzdlsCFAdg6//tmrwR4pDrbhwAiZDS+5gnwZJkpnTIzVJGSVgUDtlFcMHG4dhtWDnOeidNn9JR8HzSrD4a1xpr8PIDQ78J+f7OHNlvsgPY8XqceWYeg8V+z2kt9f3cIg3vRKj0JAB7ZcMoePx42xG0QcOO1KCDSmxBPes02gZmBEcyYzbNRfazTQogQ054+ctObP7eWTrseNoSm3Y8tyya6DBoRg9NOG3e0SmKymbW4Ww6PzRLSyw4aZ7sdAz8pw4GHx8/1eX57/LDjvpqYwBWXVjeywCjnbXHq9WqCEmoT5UJcQadn6cy4SR+B2cNTgOuflAluDWO6vdGteFhNKNhrC02gLutmsvObOQ9/bf/dgC7ur0rzynlC94x0P7pUPokBSzUwACM3Jh9Wxvy6owMbFrQRuzZhO1O3Nlr0DmujA182i2xIX8WeYtDsLhB5mCsm9iJDJoYnqQamSPKiEZTLbwTA3hdK79D7qvz9ZkjmK4KbMN6ExFkvcTGUcie3UYJpZQnIKAEH2ZyEesTkoMyjUK04xNHyAwps5fRdbyGRrrOUemLaSu6Xbdad7WeuHHt6zq334AX/bcD2PVNZmzA9/1FnnJOUo46PdXO0VCiL2AfOxUgNfqCRO+lMqDM+WGzzdqN2RBtrs7PTY8IduQjtPUJ5NvZCXRMNMp2u2lpij1Wihq4Pm70ADpvvo0opi+IXUUAYqT0f9Nkv82XWQfQ7qqzn2wijqwL0bD6DOovcwMsb0C+RAiH4gCICiQhf3uiEMOd8vEy06vdBB06rrtK6fhW3azfX4/CJ+AMjr+TJ/W83T7nvx3Ajld8R2xgz0P3cntmnewUSicmylmktVqoFbqVRqXdT2QsnDdbi+p36gcIibiNH5jaexa7WqIQw/fGwNu8ADH49nP2985BJuJidt2oxg6EDIc4AFa3n7+rE1T4/9u7uucojiP+69nb+9TpZCEJAbEtwIbEie1yqAQqD6k8JZVK5S/Nu5/84OKFooIKFzHCNkRFKGx8EAgS3NfuznRqdmZ3b/fuZE74xAKzVSrpdPsx2zPz656e7l+P2zSTwimuCMy23Bgg2j+NTyRx1KVokWYfG5M/+cmWCjofwjD5ZMVADKuZcfyZTAVDdGJIT63X30ZECKJ9MPU8IiWYd5SMLoe9/c/DysOv3cSfPtiPGnRex+fV0Fxbrayvna6tvb+las2LIP8CAZ8yeCnRqGYMxtmAdhM780XnJn7shTfLTpNem59WiXUQT5ucw2/8Q4wIZrd7htlvIGc8bsFMmASq4qlfsCCKnVPc1CsCwAQ1WdHkt4QisXNufLmQ+AbsBDY02ybRJ9HlZoKb7T0bc2QtDuP004epiWjTlME6Z/q6IP5KsHokh6Md2dvfCZ72b5exNHcZJoKzAObuhfWlxtlTn3ormxe41vyDIv+sYvmBAHX0GjSufhuv2xP/85h2TFmGra7WKbZ2wCdbiVnykS2ONcMJl1oAiQYvnJc5HfMvmHS4ZQybePvJXYD8KWkCdfLvgg+g6ARMIDDh0U/vlgKAhRhrESTbqwmwxBRn6TN06/I05DZ4sS/I6xH4Oim+LMPRFTXqPQz2Hn6P3W29tZfaWW+rt3/WMHcAMDcAxDO7hea77aWzWx+KpWMfB+T/VUD8UekivLHattU5xisOF4uVWD9BPtswWSbom9j99xlFTrL5l9fwCTDEzYiz6vJFT1MLIH3vyevHRVL0AYzz/xVFp59nWAQsGWfcGKPRM6dgormtordpuQnNuHbiZQE7NnDJBgTp/8dl2ca4BonUc8HeDcG8DRlcDsLhrWD/yT30VIT7VzRT78EvOH//v1FXOAB48e6cFhUmGr84d8I7tvU3brb/rsj7hEEDkPKZaZWAZTbJAJn3vbDmH/9O/5159U3p8oyDcMoyIQGbA97hQCfelOtyRVSnfG8IM2cfyYDKTPTkfPuNdfbZTU0bUDW+jWedgMXNEGMxhCBPV0TvARQSowvIuxTKK+j3rg2C3o3XoSDniw+5xZ/pAODlZeyhfezD1qmzv628s3EqEI2BosoWgS4C/BlItkgTacZe//E1/XgloqwRSeTdZLOss25KHP6sVyhu+U3LbSia7MnziysP44fL/BUT+/22ETFZ59iRFhgpNDLZ9zdkIJnVkHMMxgBnC7TFxTjxUDC+ZUHfCFYPlZK3o0FvNwrlXfSf7OPOVZ3A4zT+HGPaAcAcwiqcOm4RaDX3DlZPNlub50KvvboVCu8ie+ISmN4H0bvMWAa4lZXhSbz++cjCCYsgfWh+XBfDjw/7GkWNXwSN3A6B8XLGj8pCjAtDyLLpJu0xyVVThlka9psHjKRSg70+JI/6uvgmQzxi4psVJW8qFd3kwagbUP8/2P5ib8q7T7PWDiuiN/o6BwA/X/fqkaztV4W18/XG2TMdiNZ78CpbYL7ERL9jUr+EohoYNWizYNoxq7CpLVFW9BkctvkJD2Dqdbc3ykqcmX+Y8t46dsAAUPH8yeebCZ9YCDLGi+xzer4FgAmASIp5xCmN6BKpO8y4RsQ70SjY8YKoOwqfPAbtB7hxQxfidBr/sINgOjS/xN3cpZMS+OhPS/WlzmdUrf2eCb8Ge0uS1HGw0rUK1gVzFSBdc1sDQpztMm6qZ2v46UuGlxG5DiRK6fQTALAqIYk0TLzyuc85T+B0HZIFAuVxLvUNpNsRJhuChM6jxnMGngJ47HniGbO6DaV2aBRdG3L/Nv75eXeGF99p/EMOBGcBHFJwc1wmsLW1XK9vroiVtVVRqS8rxgfseb9RTB+T4uMANpSgJjEapFgke/NxKM3ERvt0hTeVu2BqI4uGx7wKNG/SZ84+szRIAoPSXIEsF8CU2EpKhMVn65AeTxsBQ9Z7+FC3iLyrJKOvFavnKhh0o0A+QI9/xJ3BWx2zP8d4m+tUBwBziWuuk2dpJWpe+Mum8hvnhfB/BeEdV1AnSaADiTVW6LAQawCvKKDpQam43Lnm24rZNgqRd4UenIgMnAgSyl9vCpDOc+SvTwk90qzgfIPyzkJt31eGTNgT4D6BnxBIr+EfM9RzjtS/hIquDp4PbqH64wjb23obL7+POU9T3bk/KQEHAD8pooWcUEXnvVb92HqbV9aqXrPRIaqvENExpXhJlzgn5kuS+bSIeXjjipxtMLViApuZkX96jZ6RjcQ6dqKHCyZ5wd2fUJbO8vLHfAOFDL/4OWkyz+whJYSQEnRPMF8XRN+xlLtMcp85+q8c9ffCZ8NHGImn2P0i8eYfEAa1kH55627qAKA8Xe7hkz/Xl1tUC1TzI6p4lxThNFjXoUeNQaukeIMFrUBxB4D2GzRJyUYMECnvJsU1EHX+u2bLYM2YkTum+x6z9N68338CCAoAQJqVFBRabi+imEOcAwBDAvpQGJqFjKwy830o+RVUdCWS0e0wGN3DaDDAzvoA+IfT9K9gLDoAeAVCP+CRuj8EVrba9eX2qmq1m2guRRWqNxSJVRK0roTXIfBJME6AcEYAJ5moAxJS634dTa9JA5RmG9eBSHp7UnNvWl1q0mfNB2P+HxzYU2yrydZLDlJM4olg+h+R8kgIjzWtL6k9AfkAkLsI8YOUwTOpoioHo65Q6lboDXYx8gbY0eDwpW7EvOuQcvXaa9waBwCvT9EZfewAAAIoSURBVOd5WDvfRKfWqKrGpt9snqhU/TPS904J4WsAiDQXmJ6R2gaI4EVMtAHGOSZsMDydm5wWJZgS0huPhYRwJLYo4nV9FqWnv7ehxDo7p0KELsP7FqS6HkeektLXCwSOgj2pwgeC8O9RKH+A5H2IYQW+eIbtL3WRDTfhSzLuHACUpCNesBlaXWsVXAPadSBsoebX4Vd8VNtcrVb1D1G9IYOldiSUf1z4tXMS2KRKLYpLGunYYs3rpavimgltDAczu3UtrjQHUWk0sNXPdXyPUrqETqQD8uNCQ8yqy574LlJBtxZyhWWoc42J/DCkkIe+qveeVb0hovsh+hsCd/Vy4e1l33nBPj7S0xwAHKm4j/xhAmivokYroIZEXXsIa1qvE+q6IJLguv6dEP2NN69WB8SIoXSFT2JtrMeUvDTSpAYEX4phP9zD99+8sWWzjry3XsEDHQC8AqEf8SO1E9D/GdNgLdNH/Baa1OCt5dM74n5cyOMcACxErKW4qYuOK0U3lLsRDgDK3T+udU4CC5WAA4CFitfd3Emg3BJwAFDu/nGtcxJYqAQcACxUvO7mTgLlloADgHL3j2udk8BCJeAAYKHidTd3Eii3BBwAlLt/XOucBBYqAQcACxWvu7mTQLkl4ACg3P3jWucksFAJOABYqHjdzZ0Eyi0BBwDl7h/XOieBhUrAAcBCxetu7iRQbgk4ACh3/7jWOQksVAIOABYqXndzJ4FyS+D/EWb0Ca6yWfwAAAAASUVORK5CYII= diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/multiWin.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/multiWin.ts new file mode 100644 index 0000000..e898906 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/multiWin.ts @@ -0,0 +1,174 @@ +import { is } from '@electron-toolkit/utils' +import { + app, + shell, + BrowserWindow, + ipcMain, + dialog, + protocol as eProtocol, + net, + MessageChannelMain, + MessagePortMain +} from 'electron' +import path, { join } from 'path' +import icon from '../../resources/icon.png?asset' +let port: MessagePortMain | null = null +ipcMain.on('ipc-get-port', (event, id: string) => { + if (port) { + port.close() + } + const { port1, port2 } = new MessageChannelMain() + port = port1 + event.sender.postMessage('port', id, [port2]) + // port2.start() +}) +class LogQueue { + private static instance: LogQueue | null = null + list: any[] = [] + timer: any + mainWin: BrowserWindow | undefined + + private constructor( + public win: BrowserWindow[] = [], + private period = 100 + ) { + this.startTimer() + } + + static getInstance(): LogQueue { + if (LogQueue.instance === null) { + LogQueue.instance = new LogQueue() + } + return LogQueue.instance + } + + addWin(win: BrowserWindow, isMain: boolean) { + this.win.push(win) + if (isMain) { + this.mainWin = win + } + } + protected startTimer() { + this.timer = setInterval(() => { + if (this.list.length) { + port?.postMessage(this.list) + this.list = [] + } + }, this.period) + } + stopTimer() { + clearInterval(this.timer) + this.list = [] + } + removeWin(win: BrowserWindow) { + this.win = this.win.filter((w) => w !== win) + } +} + +// Export the singleton instance +export const logQ = LogQueue.getInstance() + +// Export a function to get the instance (alternative access method) +export const getLogQueue = () => LogQueue.getInstance() + +// Export the class for type annotations if needed +export type { LogQueue } + +const winMap = new Map() +const winPosMap = new Map() + +ipcMain.on('ipc-open-window', (event, arg) => { + if (winMap.has(arg.id)) { + winMap.get(arg.id)?.show() + } else { + const pos = winPosMap.get(arg.id) + const win = new BrowserWindow({ + width: pos?.width || arg.w || 800, + height: pos?.height || arg.h || 600, + x: pos?.x || undefined, + y: pos?.y || undefined, + ...(process.platform === 'linux' ? { icon } : {}), + webPreferences: { + preload: join(__dirname, '../preload/index.js'), + sandbox: false, + contextIsolation: true, + backgroundThrottling: false + }, + frame: false, + show: false + }) + winMap.set(arg.id, win) + logQ.addWin(win, false) + win.on('closed', () => { + winMap.delete(arg.id) + logQ.mainWin?.webContents.send('ipc-close-window', arg.id) + logQ.removeWin(win) + }) + win.on('ready-to-show', () => { + win.show() + if (is.dev) { + win.webContents.openDevTools() + } + }) + + if (is.dev && process.env['ELECTRON_RENDERER_URL']) { + const url = new URL(process.env['ELECTRON_RENDERER_URL']) + Object.entries(arg).forEach(([key, value]) => { + url.searchParams.set(key, String(value)) + }) + win.loadURL(url.toString()) + } else { + const filePath = join(__dirname, '../renderer/index.html') + const searchParams = new URLSearchParams() + Object.entries(arg).forEach(([key, value]) => { + searchParams.set(key, String(value)) + }) + win.loadFile(filePath, { + search: searchParams.toString() + }) + } + } +}) + +ipcMain.on('ipc-close-others-windows', (event, arg) => { + closeAllWindows() +}) +export function closeAllWindows() { + winMap.forEach((win, key) => { + //store pos + + const pos = win.getBounds() + winPosMap.set(key, { + x: pos?.x, + y: pos?.y, + width: pos?.width, + height: pos?.height + }) + win.close() + }) +} + +export function closeWindow(id: string) { + const win = winMap.get(id) + if (win) { + //store pos + const pos = win.getBounds() + winPosMap.set(id, { + x: pos?.x, + y: pos?.y, + width: pos?.width, + height: pos?.height + }) + win.close() + } +} +export function minimizeWindow(id: string) { + winMap.get(id)?.minimize() +} +export function maximizeWindow(id: string) { + if (winMap.get(id)?.isMaximized()) { + winMap.get(id)?.unmaximize() + } else { + winMap.get(id)?.maximize() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/nodeItem.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/nodeItem.ts new file mode 100644 index 0000000..c99185f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/nodeItem.ts @@ -0,0 +1,1621 @@ +import path from 'path' +import fs from 'fs' +import { CanAddr, CanMessage, formatError, getTsUs, swapAddr } from './share/can' +import { TesterInfo } from './share/tester' +import UdsTester, { + linApiBaudRateCtrl, + linApiPowerCtrl, + linApiStartSch, + linApiStopSch, + pwmApiSetDuty, + SerialApi, + SomeipApiCall +} from './workerClient' +import { CAN_TP, CAN_TP_SOCKET, TpError as CanTpError } from './docan/cantp' +import { UdsLOG, VarLOG } from './log' +import { applyBuffer, getRxPdu, getTxPdu, PwmBaseInfo, ServiceItem, UdsDevice } from './share/uds' +import { findService, UDSTesterMain } from './docan/uds' +import { cloneDeep } from 'lodash' + +import { NodeItem } from 'src/preload/data' +import LinBase from './dolin/base' +import { EthAddr, EthBaseInfo, VinInfo, TlsConfig } from './share/doip' +import { LIN_TP, TpError as LinTpError } from './dolin/lintp' +import { LinDirection, LinMode, LinMsg } from './share/lin' + +import { DOIP, DoipError } from './doip' +import { CanBase } from './docan/base' +import Transport from 'winston-transport' +import logo from './logo.html?raw' +import fsP from 'fs/promises' +import type { TestEvent } from 'node:test/reporters' +import { PwmBase } from './pwm' +import { SerialBase } from './serial' +import { SerialMessage } from './share/serial' +import { setSignal } from './util' +import { VSomeIP_Client } from './vsomeip' +import { SomeipMessage, SomeipMessageType, VsomeipAvailabilityInfo } from './share/someip' +type TestTree = { + label: string + type: 'test' | 'config' | 'log' + children: TestTree[] + + time?: string + status?: 'pass' | 'fail' | 'skip' | 'running' + msg?: string + nesting?: number + parent?: TestTree +} + +type TestLog = { + message: { + method: string + data: any + } + level: string + label: string +} + +class TestTransport extends Transport { + constructor( + private cb: (info: any) => void, + opts?: Transport.TransportStreamOptions + ) { + super(opts) + // + // Consume any custom options here. e.g.: + // - Connection information for databases + // - Authentication information for APIs (e.g. loggly, papertrail, + // logentries, etc.). + // + } + + log(info: any, callback: () => void) { + this.cb(info) + + // Perform the writing to the remote service + callback() + } +} +export class NodeClass { + pool?: UdsTester + private cantp: CAN_TP[] = [] + private lintp: LIN_TP[] = [] + private cantpSocketMap: Map = new Map() + private linBaseId: string[] = [] + private canBaseId: string[] = [] + private ethBaseId: string[] = [] + private pwmBaseId: string[] = [] + private serialBaseId: string[] = [] + private someipBaseId: string[] = [] + private someipCbs: Map void> = new Map() + private startTs = 0 + private boundCb: (frame: CanMessage | LinMsg | SomeipMessage | SerialMessage) => void + private boundSomeipServiceValidCb: (info: VsomeipAvailabilityInfo) => void + private udsTesterMap = new Map() + private canBaseMap: Map = new Map() + private linBaseMap: Map = new Map() + private doips: DOIP[] = [] + private ethBaseMap: Map = new Map() + private pwmBaseMap: Map = new Map() + private serialBaseMap: Map = new Map() + private someipMap: Map = new Map() + private testers: Record = {} + freeEvent: { + doip: DOIP + id: string + cb: (data: { data: Buffer; ts: number } | DoipError) => void + }[] = [] + log?: UdsLOG + varLog: VarLOG + logs: TestLog[] = [] + constructor( + public nodeItem: NodeItem, + private projectPath: string, + private projectName: string, + private testOptions?: + | { + testOnly?: boolean + id?: string + } + | undefined + ) { + this.varLog = new VarLOG(nodeItem.id) + this.boundCb = this.cb.bind(this) + this.boundSomeipServiceValidCb = this.someipServiceValidCb.bind(this) + this.startTs = getTsUs() + if (nodeItem.script) { + let jsPath = nodeItem.script + const info = path.parse(jsPath) + if (info.ext == '.ts') { + const outDir = path.join(this.projectPath, '.ScriptBuild') + jsPath = path.join(outDir, info.name + '.js') + } else { + if (!path.isAbsolute(jsPath)) { + jsPath = path.join(this.projectPath, jsPath) + } + } + + this.log = new UdsLOG(`${nodeItem.name} ${path.basename(nodeItem.script)}`) + if (this.testOptions) { + this.log.addMethodPrefix('test-') + + const testTransport = new TestTransport((info: any) => { + const method = info.message.method + if ( + method == 'test-udsSystem' || + method == 'test-udsScript' || + method == 'test-udsWarning' || + method == 'testInfo' + ) { + this.logs.push(info) + } + }) + this.log.addTransport(testTransport) + } + this.pool = new UdsTester( + nodeItem.id, + { + PROJECT_ROOT: this.projectPath, + PROJECT_NAME: this.projectName, + MODE: this.testOptions ? 'test' : 'node', + NAME: nodeItem.name + }, + jsPath, + this.log, + this.testers, + this.testOptions + ) + if (this.testOptions) { + this.log?.systemMsg( + `----- Test Config ${this.nodeItem.name} starting -----`, + getTsUs(), + 'info' + ) + } + } + } + init( + nodeItem: NodeItem, + canBaseMap: Map, + linBaseMap: Map, + doips: DOIP[], + ethBaseMap: Map, + pwmBaseMap: Map, + someipMap: Map, + serialBaseMap: Map, + testers: Record + ) { + this.canBaseMap = canBaseMap + this.linBaseMap = linBaseMap + this.doips = doips + this.ethBaseMap = ethBaseMap + this.pwmBaseMap = pwmBaseMap + this.serialBaseMap = serialBaseMap + this.someipMap = someipMap + this.testers = testers + this.pool?.buildServiceMap(testers) + for (const c of nodeItem.channel) { + const baseItem = this.canBaseMap.get(c) + if (baseItem) { + this.canBaseId.push(c) + baseItem.attachCanMessage(this.boundCb) + continue + } + const linBaseItem = this.linBaseMap.get(c) + if (linBaseItem) { + linBaseItem.attachLinMessage(this.boundCb) + this.linBaseId.push(c) + if (nodeItem.workNode) { + const db = linBaseItem.setupEntry(nodeItem.workNode) + if (db) { + linBaseItem.registerNode(db, nodeItem.workNode) + } + } + continue + } + const ethBaseItem = this.ethBaseMap.get(c) + if (ethBaseItem) { + this.ethBaseId.push(c) + } + const pwmBaseItem = this.pwmBaseMap.get(c) + if (pwmBaseItem) { + this.pwmBaseId.push(c) + } + const serialBaseItem = this.serialBaseMap.get(c) + if (serialBaseItem) { + this.serialBaseId.push(c) + serialBaseItem.attachSerialMessage(this.boundCb) + } + const someipBaseItem = this.someipMap.get(c) + if (someipBaseItem) { + this.someipBaseId.push(c) + const wrappedSomeipCb = (msg: SomeipMessage) => { + msg.device = someipBaseItem.info.name + this.boundCb(msg) + } + this.someipCbs.set(c, wrappedSomeipCb) + someipBaseItem.attachSomeipMessage(wrappedSomeipCb) + someipBaseItem.attachSomeipServiceValid(this.boundSomeipServiceValidCb) + } + } + if (this.pool) { + this.pool.registerHandler('output', this.sendFrame.bind(this)) + this.pool.registerHandler('sendDiag', this.sendDiag.bind(this)) + this.pool.registerHandler('setSignal', setSignal) + this.pool.registerHandler('varApi', this.varApi.bind(this)) + this.pool.registerHandler('runUdsSeq', this.runUdsSeq.bind(this)) + this.pool.registerHandler('linApi', this.linApi.bind(this)) + this.pool.registerHandler('canApi', this.canApi.bind(this)) + this.pool.registerHandler('stopUdsSeq', this.stopUdsSeq.bind(this)) + this.pool.registerHandler('pwmApi', this.pwmApi.bind(this)) + this.pool.registerHandler('serialApi', this.serialApi.bind(this)) + this.pool.registerHandler('someipApi', this.someipApi.bind(this)) + + //cantp + for (const tester of Object.values(this.testers)) { + if (tester.address.length > 0) { + for (const c of nodeItem.channel) { + const canBaseItem = this.canBaseMap.get(c) + if (canBaseItem && tester.type == 'can') { + const tp = new CAN_TP(canBaseItem, nodeItem.id) + for (const [index, addr] of tester.address.entries()) { + if (addr.type == 'can' && addr.canAddr) { + const idT = tp.getReadId(addr.canAddr, tester.simulateBy != nodeItem.id) + tp.event.on(idT, (data) => { + if (data instanceof CanTpError) { + //TODO: + } else { + if (data.addr.uuid != this.nodeItem.id) { + const item = cloneDeep(findService(tester, data.data, true)) + if (item) { + try { + applyBuffer(item, data.data, true) + this.pool?.triggerSend(tester.name, item, addr, data.ts).catch((e) => { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + }) + } catch (e: any) { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + } + } + } + } + }) + if (index == 0) { + const idR = tp.getReadId( + swapAddr(addr.canAddr), + tester.simulateBy != nodeItem.id + ) + tp.event.on(idR, (data) => { + if (data instanceof CanTpError) { + //TODO: + } else { + if (data.addr.uuid != this.nodeItem.id) { + const item = cloneDeep(findService(tester, data.data, false)) + if (item) { + try { + applyBuffer(item, data.data, false) + this.pool?.triggerRecv(tester.name, item, data.ts).catch((e) => { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + }) + } catch (e: any) { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + } + } + } + } + }) + } + } + } + this.cantp.push(tp) + } + const linBaseItem = this.linBaseMap.get(c) + if (linBaseItem && tester.type == 'lin') { + const tp = new LIN_TP(linBaseItem, tester.simulateBy != nodeItem.id) + for (const addr of tester.address) { + if (addr.type == 'lin' && addr.linAddr) { + const idT = tp.getReadId(LinMode.MASTER, addr.linAddr) + tp.event.on(idT, (data) => { + if (data instanceof LinTpError) { + //TODO: + } else { + if (data.addr.uuid != this.nodeItem.id) { + const item = cloneDeep(findService(tester, data.data, true)) + if (item) { + try { + applyBuffer(item, data.data, true) + this.pool?.triggerSend(tester.name, item, addr, data.ts).catch((e) => { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + }) + } catch (e: any) { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + } + } + } + } + }) + const idR = tp.getReadId(LinMode.SLAVE, addr.linAddr) + tp.event.on(idR, (data) => { + if (data instanceof LinTpError) { + //TODO: + } else { + if (data.addr.uuid != this.nodeItem.id) { + const item = cloneDeep(findService(tester, data.data, false)) + if (item) { + try { + applyBuffer(item, data.data, false) + this.pool?.triggerRecv(tester.name, item, data.ts, addr).catch((e) => { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + }) + } catch (e: any) { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + } + } + } + } + }) + } + } + this.lintp.push(tp) + } + const ethBaseItem = this.ethBaseMap.get(c) + if (ethBaseItem && tester.type == 'eth') { + const baseItem = this.doips.find((d) => d.base.id == ethBaseItem.id) + if (baseItem) { + if (tester.simulateBy == nodeItem.id) { + // Get server TLS config from tester level, resolve relative paths + const serverTlsConfig = this.resolveTlsPaths(tester.serverTls) + baseItem.registerEntity(true, this.log, serverTlsConfig) + } + for (const addr of tester.address) { + if (addr.type == 'eth' && addr.ethAddr) { + const idT = baseItem.getId(addr.ethAddr, 'client') + + const cbT = (data: { data: Buffer; ts: number } | DoipError) => { + if (data instanceof DoipError) { + //TODO: + } else { + const item = cloneDeep(findService(tester, data.data, true)) + if (item) { + try { + applyBuffer(item, data.data, true) + this.pool?.triggerSend(tester.name, item, addr, data.ts).catch((e) => { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + }) + } catch (e: any) { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + } + } + } + } + baseItem.event.on(idT, cbT) + this.freeEvent.push({ doip: baseItem, id: idT, cb: cbT }) + + const idR = baseItem.getId(addr.ethAddr, 'server') + const cbR = (data: { data: Buffer; ts: number } | DoipError) => { + if (data instanceof DoipError) { + //TODO: + } else { + const item = cloneDeep(findService(tester, data.data, false)) + if (item) { + try { + applyBuffer(item, data.data, false) + this.pool?.triggerRecv(tester.name, item, data.ts, addr).catch((e) => { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + }) + } catch (e: any) { + this.log?.scriptMsg(e.toString(), data.ts, 'error') + } + } + } + } + baseItem.event.on(idR, cbR) + this.freeEvent.push({ doip: baseItem, id: idR, cb: cbR }) + } + } + } + } + } + } + } + } + } + /** + * Resolve relative TLS certificate paths to absolute paths based on project path + */ + private resolveTlsPaths(tlsConfig?: TlsConfig): TlsConfig | undefined { + if (!tlsConfig) return undefined + + const resolved: TlsConfig = { ...tlsConfig } + + // Resolve relative paths to absolute paths + if (resolved.ca && !path.isAbsolute(resolved.ca)) { + resolved.ca = path.join(this.projectPath, resolved.ca) + } + if (resolved.cert && !path.isAbsolute(resolved.cert)) { + resolved.cert = path.join(this.projectPath, resolved.cert) + } + if (resolved.key && !path.isAbsolute(resolved.key)) { + resolved.key = path.join(this.projectPath, resolved.key) + } + + return resolved + } + private async _generateHtml(data: TestTree) { + const statusIcons = { + pass: '✅', + fail: '❌', + skip: '⏭️', + todo: '📝', + running: '🔄' + } + + const statusColors = { + pass: '#67C23A', + fail: '#F56C6C', + skip: '#909399', + todo: '#E6A23C', + running: '#409EFF' + } + + function generateTestCaseHtml(node: TestTree): string { + if (node.type === 'log') { + // Calculate proper indentation for log entries + // If the log has a parent, use parent's nesting + 1, otherwise use node's nesting or default to 0 + const nestingLevel = node.parent ? (node.parent.nesting || 0) + 1 : node.nesting || 0 + + return ` +
+ ${`
${node.msg}
`} +
+ ` + } + + const status = node.status || 'unknown' + const icon = statusIcons[status as keyof typeof statusIcons] || '❓' + const color = statusColors[status as keyof typeof statusColors] || '#909399' + const time = node.time ? `(${node.time}s)` : '' + + let html = ` +
+
+ ${icon} + ${node.label} + ${time} +
+
+ ` + + if (node.children && node.children.length > 0) { + html += `
+ ${node.children.map((child) => generateTestCaseHtml(child)).join('')} +
` + } + + return html + } + + const timestamp = new Date().toLocaleString() + const testConfig = this.nodeItem + const scriptPath = testConfig?.script || 'No script specified' + + const html = ` + + + + + ECUBus-Pro - Test Report + + + +
+
+
+ +
+

ECUBus-Pro

+
Test Report - ${data.label}
+
Script: ${scriptPath}
+
Generated at: ${timestamp}
+
+
+
+
+ ${data.children?.map((child) => generateTestCaseHtml(child)).join('') || ''} +
+ + +
+ + + ` + return html + } + + async generateHtml(reportPath?: string, returnHtml = false) { + const root: TestTree = { + label: this.nodeItem.name, + type: 'config', + children: [] + } + + function buildSubTree(infos: TestLog[]) { + let currentSuite: TestTree | undefined + const roots: TestTree[] = [] + const testMap = new Map() + function startTest(event: any) { + const originalSuite = currentSuite + const testId = `${event.name}:${event.line || 0}:${event.column || 0}` + + currentSuite = { + type: 'test', + + label: event.name, + nesting: event.nesting, + parent: currentSuite, + children: [] + } + testMap.set(testId, currentSuite) + if (originalSuite?.children) { + originalSuite.children.push(currentSuite) + } + if (!currentSuite.parent) { + roots.push(currentSuite) + } + } + for (const info of infos) { + if (info.message.method == 'testInfo') { + const event = info.message.data as TestEvent + if ((event.data as any).name == '____ecubus_pro_test___') { + continue + } + if (event.data) + switch (event.type) { + case 'test:dequeue': { + startTest(event.data) + break + } + case 'test:pass': + case 'test:fail': { + if (!currentSuite) { + startTest({ name: 'root', nesting: 0, line: 0, column: 0 }) + } + if ( + currentSuite!.label !== event.data.name || + currentSuite!.nesting !== event.data.nesting + ) { + startTest(event.data) + } + + if (currentSuite?.nesting === event.data.nesting) { + currentSuite = currentSuite.parent + } + if (currentSuite) { + if (event.type == 'test:pass') { + if (event.data.skip) { + currentSuite.status = 'skip' + } else { + currentSuite.status = 'pass' + } + } else if (event.type == 'test:fail') { + currentSuite.status = 'fail' + } + } + // if (nonCommentChildren.length > 0) { + + // } else { + + // } + break + } + case 'test:diagnostic': { + if (currentSuite) { + currentSuite.children.push({ + type: 'log', + label: 'Test Diagnostic', + msg: event.data.message, + nesting: event.data.nesting + 2, + + children: [] + }) + } + } + } + } else { + const val: TestTree = { + label: info.label, + type: 'log', + + children: [], + parent: currentSuite, + msg: info.message.data.msg + } + if (currentSuite) { + val.nesting = (currentSuite.nesting || 0) + 1 + currentSuite.children.push(val) + } else { + root.children.push(val) + } + } + } + return { + roots, + testMap + } + } + const { roots, testMap } = buildSubTree(this.logs) + //update status + for (const log of this.logs) { + if (log.message.method == 'testInfo') { + const event = log.message.data as TestEvent + + if (event.type == 'test:pass' || event.type == 'test:fail') { + const testId = `${event.data.name}:${event.data.line || 0}:${event.data.column || 0}` + const test = testMap.get(testId) + if (test) { + if (event.type == 'test:pass') { + test.status = 'pass' + } else if (event.type == 'test:fail') { + test.status = 'fail' + } + test.time = Number(event.data.details.duration_ms / 1000).toFixed(3) + } + } + } + } + root.children = roots + const html = await this._generateHtml(root) + if (returnHtml) { + return html + } + let fpath = path.join(this.projectPath, `${this.nodeItem.name}.html`) + if (reportPath) { + fpath = path.join(reportPath, `${this.nodeItem.name}.html`) + if (path.isAbsolute(fpath)) { + const dir = path.dirname(fpath) + if (fs.existsSync(dir)) { + await fsP.writeFile(fpath, html) + return fpath + } else { + throw new Error(`report directory ${dir} not found`) + } + } else { + fpath = path.join(this.projectPath, fpath) + const dir = path.dirname(fpath) + if (!fs.existsSync(dir)) { + await fsP.mkdir(dir, { recursive: true }) + } + await fsP.writeFile(fpath, html) + return fpath + } + } else { + await fsP.writeFile(fpath, html) + return fpath + } + } + async getTestInfo() { + const info = await this.pool?.getTestInfo() + if (this.testOptions) { + this.log?.systemMsg( + `----- Test Config ${this.nodeItem.name} finished, total time: ${((getTsUs() - this.startTs) / 1000).toFixed(2)}ms -----`, + getTsUs(), + 'info' + ) + } + return info + } + varApi( + data: + | { method: 'setVar'; name: string; value: number | string | number[] } + | { method: 'setVars'; vars: Array<{ name: string; value: number | string | number[] }> } + ) { + const ts = getTsUs() - this.startTs + + if (data.method == 'setVar') { + this.varLog.setVar(data.name, data.value, ts) + } else if (data.method == 'setVars') { + for (const item of data.vars) { + this.varLog.setVar(item.name, item.value, ts) + } + } else { + throw new Error(`invalid method ${data['method']}`) + } + return + } + + async pwmApi(data: pwmApiSetDuty) { + const findPwmBase = (name?: string) => { + let ret: PwmBase | undefined + if (name != undefined) { + for (const channelId of this.pwmBaseId) { + const item = this.pwmBaseMap.get(channelId) + if (item && item.info.name == name) { + ret = item + break + } + } + } else { + // 返回第一个当前节点channel对应的pwmBase + if (this.pwmBaseId.length > 0) { + ret = this.pwmBaseMap.get(this.pwmBaseId[0]) + } + } + if (ret == undefined) { + throw new Error(`device ${name} not found`) + } + return ret + } + const pwmBase = findPwmBase(data.device) + if (data.method == 'setDuty') { + pwmBase.setDutyCycle(data.duty) + } + } + + async serialApi(data: SerialApi): Promise { + const findSerialBase = (name?: string) => { + let ret: SerialBase | undefined + if (name != undefined) { + for (const channelId of this.serialBaseId) { + const item = this.serialBaseMap.get(channelId) + if (item && item.info.name == name) { + ret = item + break + } + } + } else if (this.serialBaseId.length > 0) { + ret = this.serialBaseMap.get(this.serialBaseId[0]) + } + if (ret == undefined) { + throw new Error(`serial device ${name ?? ''} not found`) + } + return ret + } + const serialBase = findSerialBase(data.device) + if (data.method == 'write') { + return serialBase.write(Buffer.from(data.data), this.nodeItem.id) + } + throw new Error(`Unknown serialApi method`) + } + + async linApi( + data: linApiStartSch | linApiStopSch | linApiPowerCtrl | linApiBaudRateCtrl + ): Promise { + const findLinBase = (name?: string) => { + let ret: LinBase | undefined + if (name != undefined) { + // 只在当前节点的channel对应的linBase中查找 + for (const channelId of this.linBaseId) { + const item = this.linBaseMap.get(channelId) + if (item && item.info.name == name) { + ret = item + break + } + } + } else { + // 返回第一个当前节点channel对应的linBase + if (this.linBaseId.length > 0) { + ret = this.linBaseMap.get(this.linBaseId[0]) + } + } + if (ret == undefined) { + throw new Error(`device ${name} not found`) + } + return ret + } + switch (data.method) { + case 'startSch': { + const device = findLinBase(data.device) + const db = global.dataSet.database.lin[device.info.database || ''] + if (db == undefined) { + throw new Error(`database is necessary`) + } + const lastSch = device.getActiveSchName() + device.stopSch() + const atviceMap: Record = {} + if (data.activeCtrl) { + for (const [index, val] of data.activeCtrl.entries()) { + atviceMap[`${data.schName}-${index}`] = val + } + } + device.startSch(db, data.schName, atviceMap, data.slot || 0) + device.log.sendEvent( + `schChanged, changed from ${lastSch || 'idle'} to ${data.schName} at slot ${data.slot || 0}`, + getTsUs() - this.startTs + ) + break + } + case 'stopSch': { + const device = findLinBase(data.device) + device.stopSch() + break + } + + case 'powerCtrl': { + const device = findLinBase(data.device) + await device.powerCtrl(data.power) + break + } + + case 'baudRateCtrl': { + const device = findLinBase(data.device) + const actualBaudRate = await device.baudRateCtrl( + data.lincableCustomBaudRatePrescale, + data.lincableCustomBaudRateBitMap + ) + return actualBaudRate + } + } + } + async canApi(data: any): Promise { + const { op } = data + + const findCanBase = (device?: string) => { + if (device != undefined) { + for (const channelId of this.canBaseId) { + const item = this.canBaseMap.get(channelId) + if (item && item.info.name == device) return item + } + throw new Error(`CAN device '${device}' not found`) + } + if (this.canBaseId.length > 0) { + const item = this.canBaseMap.get(this.canBaseId[0]) + if (item) return item + } + throw new Error('no CAN device attached to this node') + } + + if (op === 'createConnection') { + const base = findCanBase(data.device) + const tp = new CAN_TP(base) + const socket = new CAN_TP_SOCKET(tp, data.addr) + const handle = `cantp-${Date.now()}-${Math.random().toString(36).slice(2)}` + this.cantpSocketMap.set(handle, { tp, socket }) + return handle + } + + if (op === 'closeConnection') { + const entry = this.cantpSocketMap.get(data.handle) + if (!entry) throw new Error(`CAN-TP handle '${data.handle}' not found`) + entry.socket.close() + entry.tp.close(false) + this.cantpSocketMap.delete(data.handle) + return + } + + if (op === 'sendData') { + const entry = this.cantpSocketMap.get(data.handle) + if (!entry) throw new Error(`CAN-TP handle '${data.handle}' not found`) + const ts = await entry.socket.write(Buffer.from(data.data)) + return ts + } + + if (op === 'recvData') { + const entry = this.cantpSocketMap.get(data.handle) + if (!entry) throw new Error(`CAN-TP handle '${data.handle}' not found`) + const result = await entry.socket.read(data.timeout ?? 5000) + return { data: Array.from(result.data), ts: result.ts } + } + + throw new Error(`unknown canApi op: ${op}`) + } + + private resolveSomeipClient(channel?: string): VSomeIP_Client { + if (channel) { + const c = this.someipMap.get(channel) + if (c) return c + throw new Error(`someip device not found: ${channel}`) + } + if (this.someipBaseId.length === 1) { + const c = this.someipMap.get(this.someipBaseId[0]) + if (c) return c + } + throw new Error( + 'SOME/IP device key is required (channel) when zero or multiple SOME/IP devices are attached to this node' + ) + } + + /** + * Worker RPC: SOME/IP request / notify / subscribe / unsubscribe via vSomeIP client. + */ + async someipApi(data: SomeipApiCall) { + const base = this.resolveSomeipClient(data.channel) + const toBuf = (p: SomeipMessage['payload']) => + Buffer.isBuffer(p) ? p : Buffer.from((p as any)?.data ?? p ?? []) + + if (data.op === 'subscribe') { + await base.subscribeToEvent( + data.service, + data.instance, + data.eventgroup, + data.event, + data.major ?? 0, + data.timeout, + data.eventType + ) + return { ok: true } + } + if (data.op === 'unsubscribe') { + await base.unsubscribeFromEvent( + data.service, + data.instance, + data.eventgroup, + data.event, + data.major ?? 0, + data.timeout + ) + return { ok: true } + } + + const msg = { ...data.msg, payload: toBuf(data.msg.payload), sending: true as const } + + if (data.op === 'notify') { + await base.notifyEvent( + Number(msg.service), + Number(msg.instance), + Number(msg.method), + toBuf(data.msg.payload), + false + ) + return null + } + + if (data.op === 'requestNoReturn') { + await base.requestService( + Number(msg.service), + Number(msg.instance), + data.major ?? 0, + data.minor ?? 0, + 1000 + ) + await base.sendRequest(msg) + return null + } + + if (data.op === 'request') { + await base.requestService( + Number(msg.service), + Number(msg.instance), + data.major ?? 0, + data.minor ?? 0, + 1000 + ) + if (msg.messageType !== SomeipMessageType.REQUEST) { + msg.messageType = SomeipMessageType.REQUEST + } + const resp = await base.sendRequestAndWaitResponse(msg, data.timeout) + return { + ...resp, + payload: Buffer.isBuffer(resp.payload) ? resp.payload : Buffer.from(resp.payload as any) + } + } + + throw new Error(`unsupported someipApi op: ${(data as any).op}`) + } + + async sendFrame(frame: CanMessage | LinMsg | SomeipMessage): Promise { + if ('msgType' in frame) { + frame.msgType.uuid = this.nodeItem.id + if (this.canBaseId.length == 1) { + const baseItem = this.canBaseMap.get(this.canBaseId[0]) + if (baseItem) { + return await baseItem.writeBase(frame.id, frame.msgType, frame.data, { + database: baseItem.info.database + }) + } + } + for (const c of this.canBaseId) { + const baseItem = this.canBaseMap.get(c) + if (baseItem && baseItem.info.name == frame.device) { + return await baseItem.writeBase(frame.id, frame.msgType, frame.data, { + database: baseItem.info.database + }) + } + } + throw new Error(`device ${frame.device} not found`) + } else if ('instance' in frame) { + frame.payload = Buffer.from(frame.payload) + if (this.someipBaseId.length == 1) { + const baseItem = this.someipMap.get(this.someipBaseId[0]) + if (baseItem) { + return await baseItem.sendRequest(frame) + } + } + for (const c of this.someipBaseId) { + const baseItem = this.someipMap.get(c) + if (baseItem && baseItem.info.name == frame.device) { + return await baseItem.sendRequest(frame) + } + } + throw new Error(`device ${frame.device} not found`) + } else { + frame.uuid = this.nodeItem.id + frame.data = Buffer.from(frame.data) + if (this.linBaseId.length == 1) { + const baseItem = this.linBaseMap.get(this.linBaseId[0]) + if (baseItem) { + baseItem.setEntry( + frame.frameId, + frame.data.length, + frame.direction, + frame.checksumType, + frame.data, + frame.isEvent ? 2 : 1 + ) + frame.database = baseItem.info.database + return await baseItem.write(frame) + } + } + for (const c of this.linBaseId) { + const baseItem = this.linBaseMap.get(c) + if (baseItem && baseItem.info.name == frame.device) { + frame.database = baseItem.info.database + return await baseItem.write(frame) + } + } + throw new Error(`device ${frame.device} not found`) + } + } + async sendDiag(data: { + device?: string + address?: string + service: ServiceItem + isReq: boolean + testerName: string + }): Promise { + const tester = Object.values(this.testers).find((t) => t.name == data.testerName) + if (!tester) { + throw new Error(`tester ${data.testerName} not found`) + } + if (tester) { + if (tester.address.length == 0) { + throw new Error(`address not found in ${tester.name}`) + } + let buf + + if (data.isReq) { + buf = getTxPdu(data.service) + } else { + buf = getRxPdu(data.service) + } + + if (tester.type == 'can') { + if (this.canBaseId.length == 0) { + throw new Error(`channel not found`) + } else if (this.canBaseId.length == 1 || data.device == undefined) { + if ( + (tester.address.length == 1 || data.address == undefined) && + tester.address[0].canAddr + ) { + const raddr = data.isReq + ? tester.address[0].canAddr + : swapAddr(tester.address[0].canAddr) + raddr.uuid = this.nodeItem.id + const ts = await this.cantp[0].writeTp(raddr, buf) + + return ts + } else { + //find address + const addr = tester.address.find((a) => a.canAddr?.name == data.address) + if (addr && addr.canAddr) { + const raddr = data.isReq ? addr.canAddr : swapAddr(addr.canAddr) + raddr.uuid = this.nodeItem.id + const ts = await this.cantp[0].writeTp(raddr, buf) + + return ts + } + } + } else { + //find device + let index = -1 + for (let i = 0; i < this.nodeItem.channel.length; i++) { + if (this.canBaseMap.get(this.nodeItem.channel[i])?.info.name == data.device) { + index = i + break + } + } + if (index >= 0) { + if ( + (tester.address.length == 1 || data.address == undefined) && + tester.address[0].canAddr + ) { + const raddr = data.isReq + ? tester.address[0].canAddr + : swapAddr(tester.address[0].canAddr) + raddr.uuid = this.nodeItem.id + + const ts = await this.cantp[index].writeTp(raddr, buf) + + return ts + } else { + //find address + const addr = tester.address.find((a) => a.canAddr?.name == data.address) + if (addr && addr.canAddr) { + const raddr = data.isReq ? addr.canAddr : swapAddr(addr.canAddr) + raddr.uuid = this.nodeItem.id + const ts = await this.cantp[index].writeTp(raddr, buf) + // if (data.isReq) { + // await this.pool?.triggerSend(data.service, ts) + // } else { + // await this.pool?.triggerRecv(data.service, ts) + // } + return ts + } + } + } + } + } else if (tester.type == 'lin') { + if (this.linBaseId.length == 0) { + throw new Error(`channel not found`) + } else if (this.linBaseId.length == 1 || data.device == undefined) { + if ( + (tester.address.length == 1 || data.address == undefined) && + tester.address[0].linAddr + ) { + const mode = data.isReq ? LinMode.MASTER : LinMode.SLAVE + const raddr = tester.address[0].linAddr + + const ts = await this.lintp[0].writeTp(mode, raddr, buf, this.nodeItem.id) + + return ts + } else { + //find address + const addr = tester.address.find((a) => a.linAddr?.name == data.address) + if (addr && addr.linAddr) { + const mode = data.isReq ? LinMode.MASTER : LinMode.SLAVE + const raddr = addr.linAddr + + const ts = await this.lintp[0].writeTp(mode, raddr, buf, this.nodeItem.id) + + return ts + } + } + } else { + //find device + let index = -1 + for (let i = 0; i < this.nodeItem.channel.length; i++) { + if (this.linBaseMap.get(this.nodeItem.channel[i])?.info.name == data.device) { + index = i + break + } + } + if (index >= 0) { + if ( + (tester.address.length == 1 || data.address == undefined) && + tester.address[0].linAddr + ) { + const mode = data.isReq ? LinMode.MASTER : LinMode.SLAVE + const raddr = tester.address[0].linAddr + + const ts = await this.lintp[index].writeTp(mode, raddr, buf, this.nodeItem.id) + + return ts + } else { + //find address + const addr = tester.address.find((a) => a.linAddr?.name == data.address) + if (addr && addr.linAddr) { + const mode = data.isReq ? LinMode.MASTER : LinMode.SLAVE + const raddr = addr.linAddr + + const ts = await this.lintp[index].writeTp(mode, raddr, buf, this.nodeItem.id) + + return ts + } + } + } + } + } else if (tester.type == 'eth') { + if (tester.address.length == 0) { + throw new Error(`address not found in ${tester.name}`) + } + const send = async (inst: DOIP, aa: EthAddr) => { + if (data.isReq) { + const buf = getTxPdu(data.service) + const clientTcp = await inst.createClient(aa) + const v = await inst.writeTpReq(clientTcp, buf) + return v.ts + } else { + const buf = getRxPdu(data.service) + const v = await inst.writeTpResp(aa.tester, buf) + return v.ts + } + } + if (this.ethBaseId.length == 0) { + throw new Error(`channel not found`) + } else if (this.ethBaseId.length == 1 || data.device == undefined) { + const doipInst = this.doips.find((d) => d.base.id == this.ethBaseId[0]) + if (doipInst) { + if ( + (tester.address.length == 1 || data.address == undefined) && + tester.address[0].ethAddr + ) { + const addr = tester.address[0].ethAddr + return await send(doipInst, addr) + } else { + //find address + const addr = tester.address.find((a) => a.ethAddr?.name == data.address) + if (addr && addr.ethAddr) { + return await send(doipInst, addr.ethAddr) + } + } + } else { + throw new Error(`Does't found attached tester`) + } + } else { + //find device + let index = -1 + for (let i = 0; i < this.ethBaseId.length; i++) { + if (this.ethBaseMap.get(this.ethBaseId[i])?.name == data.device) { + index = i + break + } + } + if (index >= 0) { + const doipInst = this.doips.find((d) => d.base.id == this.ethBaseId[index]) + if (doipInst) { + if ( + (tester.address.length == 1 || data.address == undefined) && + tester.address[0].ethAddr + ) { + return await send(doipInst, tester.address[0].ethAddr) + } else { + //find address + const addr = tester.address.find((a) => a.ethAddr?.name == data.address) + if (addr && addr.ethAddr) { + return await send(doipInst, addr.ethAddr) + } + } + } else { + throw new Error(`Does't found attached tester`) + } + } + } + } + } else { + throw new Error(`Does't found attached tester`) + } + return 0 + } + async runUdsSeq(data: { name: string; device?: string }) { + let targetDevice: UdsDevice | undefined + if (this.nodeItem.channel.length > 0) { + for (const id of this.nodeItem.channel) { + const canBase = this.canBaseMap.get(id) + if (canBase && (this.nodeItem.channel.length == 1 || canBase.info.name == data.device)) { + targetDevice = { + type: 'can', + canDevice: canBase.info + } + break + } + const linBase = this.linBaseMap.get(id) + if (linBase && (this.nodeItem.channel.length == 1 || linBase.info.name == data.device)) { + targetDevice = { + type: 'lin', + linDevice: linBase.info + } + break + } + const ethBase = this.ethBaseMap.get(id) + if (ethBase && (this.nodeItem.channel.length == 1 || ethBase.name == data.device)) { + targetDevice = { + type: 'eth', + ethDevice: ethBase + } + break + } + } + + const testerName = data.name.split('.')[0] + const seqName = data.name.split('.')[1] + const targetTester = Object.values(this.testers).find((t) => t.name == testerName) + if (targetDevice && targetTester) { + const cycle = 1 + const seqIndex = targetTester.seqList.findIndex((t) => t.name == seqName) + if (seqIndex == -1) { + throw new Error(`sequence ${seqName} not found in ${testerName}`) + } + + const uds = new UDSTesterMain( + { + projectPath: this.projectPath, + projectName: this.nodeItem.name + }, + targetTester, + targetDevice + ) + if (targetDevice.type == 'can' && targetDevice.canDevice) { + const canBase = this.canBaseMap.get(targetDevice.canDevice.id) + if (canBase) { + uds.setCanBase(this.canBaseMap.get(targetDevice.canDevice.id)) + this.udsTesterMap.set(data.name, uds) + await uds.runSequence(seqIndex, cycle) + } else { + throw new Error( + `can device ${targetDevice.canDevice.vendor}-${targetDevice.canDevice.handle} not found` + ) + } + } else if (targetDevice.type == 'eth' && targetDevice.ethDevice) { + const id = targetDevice.ethDevice.id + const ethBase = this.doips.find((e) => e.base.id == id) + if (ethBase) { + uds.setDoip(ethBase) + this.udsTesterMap.set(data.name, uds) + await uds.runSequence(seqIndex, cycle) + } else { + throw new Error( + `eth device ${targetDevice.ethDevice.vendor}-${targetDevice.ethDevice.device.handle} not found` + ) + } + } else if (targetDevice.type == 'lin' && targetDevice.linDevice) { + const id = targetDevice.linDevice.id + const linBase = this.linBaseMap.get(id) + if (linBase) { + uds.setLinBase(linBase) + this.udsTesterMap.set(data.name, uds) + await uds.runSequence(seqIndex, cycle) + } else { + throw new Error( + `lin device ${targetDevice.linDevice.vendor}-${targetDevice.linDevice.device.handle} not found` + ) + } + } + } + } + } + stopUdsSeq(data: { name: string; device?: string }) { + const uds = this.udsTesterMap.get(data.name) + if (uds) { + uds.cancel() + this.udsTesterMap.delete(data.name) + } + } + close() { + if (this.pool) { + //remove can + this.canBaseMap.forEach((base) => { + if (base.txPendingNode == this) { + base.txPendingNode = undefined + } + }) + } + for (const c of this.nodeItem.channel) { + const baseItem = this.canBaseMap.get(c) + if (baseItem) { + baseItem.detachCanMessage(this.boundCb) + } + const linBaseItem = this.linBaseMap.get(c) + if (linBaseItem) { + linBaseItem.detachLinMessage(this.boundCb) + } + const someipBaseItem = this.someipMap.get(c) + if (someipBaseItem) { + const wrappedSomeipCb = this.someipCbs.get(c) + if (wrappedSomeipCb) { + someipBaseItem.detachSomeipMessage(wrappedSomeipCb) + } + someipBaseItem.detachSomeipServiceValid(this.boundSomeipServiceValidCb) + } + const serialBaseItem = this.serialBaseMap.get(c) + if (serialBaseItem) { + serialBaseItem.detachSerialMessage(this.boundCb) + } + } + for (const e of this.freeEvent) { + e.doip.event.removeListener(e.id, e.cb) + } + + this.cantp.forEach((tp) => { + tp.close(false) + }) + for (const { socket, tp } of this.cantpSocketMap.values()) { + socket.close() + tp.close(false) + } + this.cantpSocketMap.clear() + this.lintp.forEach((tp) => { + tp.close(false) + }) + this.lintp.length = 0 // 清空数组 + + // 清理 UdsTester 事件处理器 + if (this.pool) { + // UdsTester 没有 unregisterHandler 方法,直接停止即可 + this.pool.stop() + } + + this.log?.close() + + // 清理变量日志 + this.varLog?.close() + + // 清理 UDS 测试器映射 + for (const [name, uds] of this.udsTesterMap) { + uds.cancel() + } + this.udsTesterMap.clear() + + // 清理数组引用 + this.linBaseId.length = 0 + this.canBaseId.length = 0 + this.ethBaseId.length = 0 + } + async start(testControl?: Record) { + this.pool?.updateTs(0) + if (this.pool) { + await this.pool.start(this.projectPath, this.nodeItem.name, testControl) + if (this.pool.methods.includes('__setTxPending')) { + //can + this.canBaseMap.forEach((base) => { + if (base.txPendingNode != undefined) { + sysLog.warn( + `Tx Pending has been registered by ${base.txPendingNode.nodeItem.name}, overwrite it by ${this.nodeItem.name}` + ) + } + base.txPendingNode = this + }) + } + } + } + async callTxPending(msg: CanMessage): Promise { + const res = await this.pool?.setTxPending(msg) + return res ? Buffer.from(res) : undefined + } + cb(frame: CanMessage | LinMsg | SomeipMessage | SerialMessage) { + const reportAsyncError = (e: any) => { + this.log?.scriptMsg(e.toString(), getTsUs(), 'error') + } + if ('msgType' in frame) { + if (frame.msgType.uuid != this.nodeItem.id) { + void this.pool?.triggerCanFrame(frame).catch(reportAsyncError) + } + } else if ('dir' in frame) { + // SerialMessage: don't echo a node's own outgoing frame back to itself + if (!(frame.dir == 'OUT' && frame.uuid == this.nodeItem.id)) { + void this.pool?.triggerSerialFrame(frame).catch(reportAsyncError) + } + } else if ('instance' in frame) { + void this.pool?.triggerSomeipFrame(frame).catch(reportAsyncError) + } else { + if (frame.uuid != this.nodeItem.id || frame.direction == LinDirection.RECV) { + void this.pool?.triggerLinFrame(frame).catch(reportAsyncError) + } + } + } + private someipServiceValidCb(info: VsomeipAvailabilityInfo) { + const reportAsyncError = (e: any) => { + this.log?.scriptMsg(e.toString(), getTsUs(), 'error') + } + void this.pool?.triggerSomeipServiceValid(info).catch(reportAsyncError) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/pluginCilent.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/pluginCilent.ts new file mode 100644 index 0000000..a0a22b0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/pluginCilent.ts @@ -0,0 +1,55 @@ +import { PluginLOG } from './log' +import path from 'path' +import { error, log } from 'electron-log' +import { NodeClass } from './nodeItem' + +export default class PluginClient { + nodeItem: NodeClass + worker: any + selfStop = false + log: PluginLOG + + constructor( + public name: string, + private id: string, + jsFilePath: string, + nodeItem?: NodeClass + ) { + this.log = new PluginLOG(this.id) + if (nodeItem) { + this.nodeItem = nodeItem + } else { + const pluginPath = path.dirname(jsFilePath) + this.nodeItem = new NodeClass( + { + id: this.id, + name: this.name, + channel: [], + script: jsFilePath + }, + pluginPath, + name + ) + this.nodeItem.pool?.registerHandler('pluginEvent', this.eventHandler.bind(this)) + } + } + + eventHandler(payload: { name: string; data: any }) { + const name = payload.name + const data = payload.data + this.log.pluginEvent(name, data) + } + + async exec(method: string, ...params: any[]): Promise { + return this.nodeItem.pool?.exec(`plugin.${method}`, params) + } + stop() { + this.nodeItem.pool?.clearHandlers() + this.nodeItem.pool?.registerHandler('pluginEvent', this.eventHandler.bind(this)) + this.nodeItem.pool?.stopEmit() + } + close() { + this.log.close() + this.nodeItem.close() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/python.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/python.ts new file mode 100644 index 0000000..7ddcec9 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/python.ts @@ -0,0 +1,15 @@ +import path from 'path' +import { PythonShell, Options, PythonShellError } from 'python-shell' +import fs from 'fs' + +import pythonRequirements from '../../resources/requirements.txt?asset&asarUnpack' + +export function getPythonPath(): string { + const baseDir = path.dirname(pythonRequirements) + const pythonDir = path.join(baseDir, 'python') + if (process.platform === 'win32') { + return path.join(pythonDir, 'python.exe') + } + // darwin (macOS) and linux: python-build-standalone uses bin/python3 + return path.join(pythonDir, 'bin', 'python3') +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/rpcHost.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/rpcHost.ts new file mode 100644 index 0000000..aa1a24d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/rpcHost.ts @@ -0,0 +1,136 @@ +import { ipcMain } from 'electron' +import { startRpcServer, type RpcServerHandle } from 'src/cli/rpc/server' +import type { CanBase } from 'src/main/docan/base' +import { store } from './store' + +export const DEFAULT_RPC_HOST = '127.0.0.1' +export const DEFAULT_RPC_PORT = 17320 + +export interface RpcHostStatus { + enabled: boolean + listening: boolean + host: string + port: number + error?: string + controllers: number +} + +interface GeneralRpcSettings { + rpcEnabled?: boolean + rpcHost?: string + rpcPort?: number +} + +let handle: RpcServerHandle | undefined +let liveMap: Map | undefined +let lastError: string | undefined +let ipcRegistered = false + +function readSettings(raw?: GeneralRpcSettings): { + enabled: boolean + host: string + port: number +} { + const general = raw ?? ((store.get('general.settings') as GeneralRpcSettings | undefined) || {}) + const port = Number(general.rpcPort) + return { + enabled: general.rpcEnabled !== false, + host: + typeof general.rpcHost === 'string' && general.rpcHost ? general.rpcHost : DEFAULT_RPC_HOST, + port: Number.isFinite(port) && port > 0 && port < 65536 ? port : DEFAULT_RPC_PORT + } +} + +function logInfo(msg: string) { + if (typeof sysLog !== 'undefined') { + sysLog.info(msg) + } +} + +function logError(msg: string) { + if (typeof sysLog !== 'undefined') { + sysLog.error(msg) + } +} + +export function getRpcHostStatus(): RpcHostStatus { + const settings = readSettings() + return { + enabled: settings.enabled, + listening: !!handle, + host: handle?.host ?? settings.host, + port: handle?.port ?? settings.port, + error: lastError, + controllers: handle?.service.listControllers().controllers.length ?? 0 + } +} + +export function attachRpcCanDevices(map: Map) { + liveMap = map + handle?.service.attachLiveControllers(map) +} + +export function detachRpcCanDevices() { + handle?.service.detachLiveControllers() + liveMap = undefined +} + +async function stopRpcServer() { + const current = handle + handle = undefined + if (current) { + try { + await current.close() + } catch { + // ignore + } + } +} + +export async function applyRpcSettings(raw?: GeneralRpcSettings): Promise { + const settings = readSettings(raw) + await stopRpcServer() + lastError = undefined + if (!settings.enabled) { + logInfo('json-rpc gateway disabled') + return getRpcHostStatus() + } + try { + handle = await startRpcServer({ + host: settings.host, + port: settings.port, + serviceOptions: { + role: 'gateway', + onShutdown: async () => { + handle = undefined + lastError = 'stopped by sys.shutdown' + } + } + }) + if (liveMap && liveMap.size > 0) { + handle.service.attachLiveControllers(liveMap) + } + logInfo(`json-rpc gateway listening on tcp://${handle.host}:${handle.port}`) + } catch (err) { + handle = undefined + const message = err instanceof Error ? err.message : String(err) + lastError = `failed to bind ${settings.host}:${settings.port}: ${message}` + logError(`json-rpc gateway ${lastError}`) + } + return getRpcHostStatus() +} + +function registerIpc() { + if (ipcRegistered) { + return + } + ipcRegistered = true + ipcMain.handle('ipc-rpc-apply', async () => applyRpcSettings()) + ipcMain.handle('ipc-rpc-status', async () => getRpcHostStatus()) +} + +/** Start the GUI JSON-RPC gateway from saved settings. Safe to call more than once. */ +export async function startRpcHost(): Promise { + registerIpc() + return applyRpcSettings() +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/can.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/can.ts new file mode 100644 index 0000000..ba36008 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/can.ts @@ -0,0 +1,688 @@ +import EventEmitter from 'events' +import { cloneDeep } from 'lodash' + +// import type { CanLOG } from '../log' + +export interface CanBitrate { + freq: number + timeSeg1: number + timeSeg2: number + sjw: number + preScaler: number + clock?: string + zlgSpec?: string +} + +export type CanVendor = + | 'peak' + | 'simulate' + | 'zlg' + | 'kvaser' + | 'toomoss' + | 'vector' + | 'slcan' + | 'ecubus' + | 'candle' +export interface CanBaseInfo { + id: string + handle: any + name: string + vendor: CanVendor + canfd: boolean + bitrate: CanBitrate + bitratefd?: CanBitrate + silent?: boolean + database?: string + toomossRes?: boolean + zlgRes?: boolean + candleRes?: boolean + slcanDelay?: number +} + +export interface SignalDefine { + default: string + define: string + name: string + type: string +} + +/** + * Value tables mapping string keys to string values for CAN signal enumerations. + * @category CAN + */ +export interface ValueTables { + string: Record +} + +/** + * CAN database containing messages, signals, ECUs, and related definitions. + * @category CAN + */ +export interface CanDB { + id: string + name: string + attributes: Record + baudrate: number + ecu_defines: EcuDefine[] + ecus: Record + enumerations: Enumerations + env_defines: EnvDefine[] + env_vars: EnvVars + fd_baudrate: number + frame_defines: FrameDefine[] + global_defines: GlobalDefine[] + messages: Message[] + signal_defines: SignalDefine[] + value_tables: ValueTables + version?: string + /** Original DBC file path (set during import) */ + filePath?: string +} + +/** + * ECU (Electronic Control Unit) definition for CAN database. + * @category CAN + */ +export interface EcuDefine { + default: string + define: string + name: string + type: string +} + +/** + * Enumerations mapping numeric values to string labels for CAN signals. + * @category CAN + */ +export interface Enumerations { + [key: string]: Record +} + +/** + * Environment variable definition for CAN database. + * @category CAN + */ +export interface EnvDefine { + default: any + define: string + name: string + type: string +} + +/** + * Environment variables in CAN database, keyed by variable name. + * @category CAN + */ +export interface EnvVars { + [key: string]: { + initialValue: string + values: Record + unit?: string + varType: string + } +} + +/** + * Frame (message) attribute definition for CAN database. + * @category CAN + */ +export interface FrameDefine { + default: string + define: string + name: string + type: string +} + +/** + * Global attribute definition for CAN database. + * @category CAN + */ +export interface GlobalDefine { + default: string + define: string + name: string + type: string +} + +/** + * CAN message (frame) definition containing signals and metadata. + * @category CAN + */ +export interface Message { + attributes: Record + comment: string + cycle_time: number + header_id: any + id: number + is_complex_multiplexed: boolean + is_extended_frame: boolean + is_fd: boolean + is_j1939: boolean + length: number + mux_names: Record + name: string + pdu_name: string + signals: Signal[] + transmitters: string[] +} + +/** + * CAN signal definition with bit layout, scaling, and value mapping. + * @category CAN + */ +export interface Signal { + attributes: Record + bit_length: number + comment?: string + comments: Record + factor: string + initial_value: string + value?: string + physValue?: string + is_big_endian: boolean + is_float: boolean + is_multiplexer: boolean + is_signed: boolean + max: string + min: string + mux_val_grp?: number[][] + mux_value?: number + name: string + offset: string + receivers: string[] + start_bit: number + values: Record + unit?: string + multiplex: any + muxer_for_signal?: string +} + +/** + * Represents a CAN (Controller Area Network) message. + * + * @category CAN + * @template T - The type of the signal data. + */ +export type CanMessage = { + /** + * The name of the CAN message. + */ + name?: string + /** + * The device associated with the CAN message. + */ + device?: string + + /** + * The direction of the CAN message, either 'IN' for incoming or 'OUT' for outgoing. + */ + dir: 'IN' | 'OUT' + + /** + * The data payload of the CAN message. + */ + data: Buffer + + /** + * The timestamp of when the CAN message was sent/recv. + */ + ts?: number + + /** + * The identifier of the CAN message. + */ + id: number + + /** + * The type of the CAN message. + */ + msgType: CanMsgType + + /** + * Indicates whether the CAN message is simulated. + * This property is optional. + */ + isSimulate?: boolean + /** + * The database id of the CAN message. + */ + database?: string + + /** + * Absolute UTC time string for display (e.g. "2024-01-15 08:30:12.345"). + * Set by replay module when using original recording time. + */ + absTimeStr?: string + + /** + * Original timestamp in microseconds from log file (before tsOffset). + * Set by replay module when using original recording time. + */ + originalTs?: number + + /** + * The children signals of the CAN message. + * internal use + */ + signals?: T +} + +/** + * Enumeration representing different CAN (Controller Area Network) ID types. + * + * @category CAN + * @enum {string} + * @readonly + */ +export enum CAN_ID_TYPE { + STANDARD = 'STANDARD', + EXTENDED = 'EXTENDED' +} + +/** + * Enumeration representing different CAN (Controller Area Network) address types. + * + * @category CAN + * @enum {string} + * @readonly + */ +export enum CAN_ADDR_TYPE { + PHYSICAL = 'PHYSICAL', + FUNCTIONAL = 'FUNCTIONAL' +} + +/** + * Enumeration representing different CAN (Controller Area Network) address formats. + * + * @category CAN + * @enum {string} + * @readonly + */ +export enum CAN_ADDR_FORMAT { + NORMAL = 'NORMAL', + FIXED_NORMAL = 'NORMAL_FIXED', + EXTENDED = 'EXTENDED', + MIXED = 'MIXED', + ENHANCED = 'ENHANCED' +} + +/** + * Represents a CAN (Controller Area Network) message type. + * @category CAN + + */ +export interface CanMsgType { + /** + * The type of CAN ID. + */ + idType: CAN_ID_TYPE + + /** + * Indicates if Bit Rate Switching (BRS) is enabled. + */ + brs: boolean + + /** + * Indicates if CAN FD (Flexible Data-rate) is used. + */ + canfd: boolean + + /** + * Indicates if the message is a remote frame. + */ + remote: boolean + + /** + * Optional unique identifier for the message. + */ + uuid?: string +} + +export enum CAN_ERROR_ID { + CAN_BUS_ERROR, + CAN_READ_TIMEOUT, + CAN_BUS_BUSY, + CAN_BUS_CLOSED, + CAN_INTERNAL_ERROR, + CAN_PARAM_ERROR, + CAN_DRIVER_SILENT +} + +const canErrorMap: Record = { + [CAN_ERROR_ID.CAN_BUS_ERROR]: 'bus error', + [CAN_ERROR_ID.CAN_READ_TIMEOUT]: 'read timeout', + [CAN_ERROR_ID.CAN_BUS_BUSY]: 'bus busy', + [CAN_ERROR_ID.CAN_INTERNAL_ERROR]: 'dll lib internal error', + [CAN_ERROR_ID.CAN_BUS_CLOSED]: 'bus closed', + [CAN_ERROR_ID.CAN_PARAM_ERROR]: 'param error', + [CAN_ERROR_ID.CAN_DRIVER_SILENT]: 'driver silent' +} + +export function getTsUs() { + const hrtime = process.hrtime() + const seconds = hrtime[0] + const nanoseconds = hrtime[1] + return seconds * 1000000 + Math.floor(nanoseconds / 1000) +} + +export interface CanInterAction { + uuid: string + trigger: { + type: 'manual' | 'periodic' + period?: number + onKey?: string + } + name: string + database?: string + id: string + channel: string + type: 'canfd' | 'can' | 'ecan' | 'ecanfd' + dlc: number + brs?: boolean + remote?: boolean + data: string[] +} +export function formatError(error: unknown) { + const errObj = + error instanceof Error + ? error + : new Error( + typeof error === 'string' + ? error + : error == null + ? 'Unknown error' + : (() => { + try { + return JSON.stringify(error) + } catch { + return String(error) + } + })() + ) + + const stack = errObj.stack || '' + + // Get first stack line (usually contains error location) + const locationLine = stack.split('\n')[1]?.trim() || '' + + // Extract file location info + const locationMatch = locationLine.match(/webpack:\\ecubuspro\\(.*):(\d+):(\d+)\)$/) + + let location = '' + if (locationMatch) { + const [, file, line, column] = locationMatch + // + // Convert webpack path to GitHub URL,#L${line}C${column}-L${line}C${column} + location = `https://github.com/ecubus/EcuBus-Pro/blob/master/${file}#L${line}C${column}` + } else { + // at listener (D:\code\ecubus-pro\resources\examples\test_simple\node.ts:5:11) + const newMatch = locationLine.match(/\((.*):(\d+):(\d+)\)/) + if (newMatch) { + const [, file, line, column] = newMatch + location = `file://${file}:${line}:${column}` + } else { + location = locationLine || 'unknown' + } + } + + // Return simplified error message + return `Error: ${errObj.message || 'Unknown error'}, Pos: ${location || 'unknown'}` +} + +export class CanError extends Error { + errorId: CAN_ERROR_ID + msgType: CanMsgType + data?: Buffer + constructor(errorId: CAN_ERROR_ID, msgType: CanMsgType, data?: Buffer, extMsg?: string) { + super(canErrorMap[errorId] + (extMsg ? `,${extMsg}` : '')) + this.errorId = errorId + this.msgType = msgType + this.data = data + } +} + +/** + * @category CAN + */ +export interface CanAddr extends CanMsgType { + name: string + addrFormat: CAN_ADDR_FORMAT + addrType: CAN_ADDR_TYPE + desc?: string + SA: string + TA: string + AE: string + canIdTx: string + canIdRx: string + nAs: number + nAr: number + nBs: number + nCr: number + nBr?: number + nCs?: number + stMin: number + bs: number + maxWTF: number + uuid?: string + dlc: number + padding: boolean + paddingValue: string +} + +export interface CandleCapability { + feature: number + fclk_can: number + tseg1_min: number + tseg1_max: number + tseg2_min: number + tseg2_max: number + sjw_max: number + brp_min: number + brp_max: number + brp_inc: number +} + +export interface CanDevice { + label: string + id: string + handle: any + serialNumber?: string + busy?: boolean + /** Vendor-specific metadata, keyed by vendor name */ + extra?: { + candle?: { + cap?: CandleCapability + dataCap?: CandleCapability + fdSupported?: boolean + Res?: boolean + } + } +} + +export interface CanEventMap { + sendTp: [ + info: { + data: Buffer + ts: number + id: number + idType: CAN_ID_TYPE + canfd: boolean + brs: boolean + remote: boolean + } + ] + sendBase: [ + info: { + data: Buffer + ts: number + id: number + idType: CAN_ID_TYPE + canfd: boolean + brs: boolean + remote: boolean + } + ] + recvTp: [ + info: { + data: Buffer + ts: number + id: number + idType: string + canfd: boolean + brs: boolean + remote: boolean + } + ] + recvBase: [ + info: { + data: Buffer + ts: number + id: number + idType: string + canfd: boolean + brs: boolean + remote: boolean + } + ] + errorTp: [ + info: { + dir: 'send' | 'recv' + data: Buffer + ts: number + id: number + idType: string + canfd: boolean + brs: boolean + remote: boolean + msg: string + } + ] +} + +export function getLenByDlc(dlc: number, canFd: boolean) { + const map: Record = { + 0: 8, + 1: 8, + 2: 8, + 3: 8, + 4: 8, + 5: 8, + 6: 8, + 7: 8, + 8: 8, + 9: 8, + 10: 8, + 11: 8, + 12: 8, + 13: 8, + 14: 8, + 15: 8 + } + const mapFd: Record = { + 0: 8, + 1: 8, + 2: 8, + 3: 8, + 4: 8, + 5: 8, + 6: 8, + 7: 8, + 8: 8, + 9: 12, + 10: 16, + 11: 20, + 12: 24, + 13: 32, + 14: 48, + 15: 64 + } + if (canFd) { + return mapFd[dlc] || 0 + } else { + return map[dlc] || 0 + } +} +export function getDlcByLen(len: number, canFd: boolean) { + const map: Record = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8 + } + const mapFd: Record = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 12: 9, + 16: 10, + 20: 11, + 24: 12, + 32: 13, + 48: 14, + 64: 15 + } + + if (canFd) { + return mapFd[len] || 0 + } else { + return map[len] || 0 + } +} +export function addrToId(addr: CanAddr): number { + let id = Number(addr.canIdTx) + if (addr.addrFormat == CAN_ADDR_FORMAT.FIXED_NORMAL) { + id = calcCanIdNormalFixed(Number(addr.SA), Number(addr.TA), addr.addrType) + } else if (addr.addrFormat == CAN_ADDR_FORMAT.MIXED) { + if (addr.idType == CAN_ID_TYPE.EXTENDED) { + id = calcCanIdMixed(Number(addr.SA), Number(addr.TA), addr.addrType) + } + } + return id +} +export function addrToStr(addr: CanAddr): string { + const cAddr = cloneDeep(addr) + delete cAddr.uuid + const jsonString = JSON.stringify(cAddr, Object.keys(cAddr).sort()) + return jsonString +} + +export function swapAddr(addr: CanAddr): CanAddr { + const cloneAddr = cloneDeep(addr) + const tmp = cloneAddr.SA + cloneAddr.SA = cloneAddr.TA + cloneAddr.TA = tmp + const tmpid = cloneAddr.canIdTx + cloneAddr.canIdTx = cloneAddr.canIdRx + cloneAddr.canIdRx = tmpid + return cloneAddr +} +export function calcCanIdMixed(sa: number, ta: number, addrType: CAN_ADDR_TYPE) { + if (addrType === CAN_ADDR_TYPE.PHYSICAL) { + //29bit 110|0|0|206|N_TA|N_SA + return 0x18ce0000 | (ta << 8) | sa + } else { + //29bit 110|0|0|205|N_TA|N_SA + return 0x18cd0000 | (ta << 8) | sa + } +} + +export function calcCanIdNormalFixed(sa: number, ta: number, addrType: CAN_ADDR_TYPE) { + if (addrType === CAN_ADDR_TYPE.PHYSICAL) { + //29bit 110|0|0|218|N_TA|N_SA + return 0x18da0000 | (ta << 8) | sa + } else { + //29bit 110|0|0|219|N_TA|N_SA + return 0x18db0000 | (ta << 8) | sa + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/doip.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/doip.ts new file mode 100644 index 0000000..f14b064 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/doip.ts @@ -0,0 +1,92 @@ +import { NetworkInterfaceInfo } from 'os' + +export interface EthDevice { + label: string + id: string + handle: string + detail?: NetworkInterfaceInfo +} + +export interface EthBaseInfo { + name: string + device: EthDevice + vendor: string + id: string +} + +/** + * TLS configuration for DoIP v3 + * @category DOIP + */ +export interface TlsConfig { + /** Enable TLS for TCP connection (DoIP v3) */ + enabled: boolean + /** Path to CA certificate file for verifying peer */ + ca?: string + /** Path to client/server certificate file */ + cert?: string + /** Path to private key file */ + key?: string + /** Skip certificate verification (for testing only) */ + rejectUnauthorized?: boolean + /** TLS port, default is 3496 for DoIP v3 */ + port?: number + enableKeyLog?: boolean + keyLogPath?: string +} + +/** + * @category DOIP + */ +export interface EthAddr { + name: string + entity: EntityAddr + tester: TesterAddr + virReqType: 'unicast' | 'omit' | 'broadcast' | 'multicast' + virReqAddr: string + entityNotFoundBehavior?: + | 'no' + | 'normal' + | 'withVin' + | 'withEid' + | 'forceNormal' + | 'forceWithVin' + | 'forceWithEid' + taType: 'physical' | 'functional' + udpClientPort?: number + tcpClientPort?: number + /** TLS configuration for DoIP v3 */ + tls?: TlsConfig +} + +export interface TesterAddr { + routeActiveTime: number + createConnectDelay: number + testerLogicalAddr: number +} + +export interface VinInfo { + vin: string + logicalAddr: number + eid: string + gid: string +} + +/** + * @category DOIP + */ +export interface EntityAddr extends VinInfo { + nodeType?: 'node' | 'gateway' + nodeAddr?: number + ta?: string + ip?: string + mcts?: number + ncts?: number + mds?: number + powerMode?: number + localPort?: number + sendSync?: boolean + udpLocalPort?: number + furtherAction?: number + syncStatus?: number +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/lin.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/lin.ts new file mode 100644 index 0000000..5626dc0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/lin.ts @@ -0,0 +1,354 @@ +import { EventEmitter } from 'stream' +import { CanVendor } from './can' +import type { Frame, LDF } from 'src/renderer/src/database/ldfParse' +import { cloneDeep, isEqual } from 'lodash' + +// export type LinVendor = 'peak' +export interface LinDevice { + label: string + id: string + handle: any + serialNumber?: string + busy?: boolean + toomossVolt?: number + lincablePowerEnable?: boolean + lincableCustomBaudRateBitMap?: number + lincableCustomBaudRatePrescale?: number +} + +export interface LinBaseInfo { + id: string + device: LinDevice + baudRate: number + mode: LinMode + vendor: CanVendor + name: string + database?: string +} + +/** + * @category LIN + */ +export enum LinDirection { + SEND = 'SEND', + RECV = 'RECV', + RECV_AUTO_LEN = 'RECV_AUTO_LEN' +} + +/** + * @category LIN + */ +export enum LinMode { + MASTER = 'MASTER', + SLAVE = 'SLAVE' +} + +/** + * @category LIN + */ +export enum LinChecksumType { + CLASSIC = 'CLASSIC', + ENHANCED = 'ENHANCED' +} + +export enum LIN_ERROR_ID { + LIN_BUS_ERROR, + LIN_READ_TIMEOUT, + LIN_BUS_BUSY, + LIN_BUS_CLOSED, + LIN_INTERNAL_ERROR, + LIN_PARAM_ERROR +} + +const linErrorMap: Record = { + [LIN_ERROR_ID.LIN_BUS_ERROR]: 'bus error', + [LIN_ERROR_ID.LIN_READ_TIMEOUT]: 'read timeout', + [LIN_ERROR_ID.LIN_BUS_BUSY]: 'bus busy', + [LIN_ERROR_ID.LIN_INTERNAL_ERROR]: 'dll lib internal error', + [LIN_ERROR_ID.LIN_BUS_CLOSED]: 'bus closed', + [LIN_ERROR_ID.LIN_PARAM_ERROR]: 'param error' +} + +/** + * LinCable Error Inject Control. See {@link https://app.whyengineer.com/docs/um/hardware/lincable.html} for details. + * @category LIN + */ +export interface LinCableErrorInject { + /** + * Break field length in bits + * @default 13 + * @minimum 13 + * @maximum 26 + */ + breakLength?: number + + /** + * Break delimiter length in bits + * @default 1 + * @minimum 0 + * @maximum 14.6 + */ + breakDelLength?: number + + /** + * Inter-byte space between sync byte field and identifier in bits + * @default 0 + * @minimum 0 + * @maximum 14 + */ + hInterLength?: number + + /** + * Inter-byte spaces between data fields in bits. Array length must match data length. + * @default 0 + * @minimum 0 + * @maximum 4 + */ + dInterLength?: number[] + + /** + * Custom sync byte value. Set to false to prevent master from sending sync. + * @default 0x55 + */ + syncVal?: number | false + + /** + * Custom PID value. Set to false to prevent master from sending PID. + * @default getPID(frameId) + */ + pid?: number | false + + /** + * Fault injection configuration + */ + errorInject?: { + /** Bit position to inject fault, starting from first break bit */ + bit: number + /** Fault value: 1 for high, 0 for low */ + value: 1 | 0 + } + + /** + * Override the checksum value + */ + checkSum?: number + + /** + * Custom pulses - LIN idle high, alternates high/low. + * Array length = pulse count (max 64). Each element = length in bit-time units (uint16). + * When set, sends only custom pulses (no LIN frame). + * + * @example + * ```ts + * // 2 segments: high 10 bit-times, low 5 bit-times + * frame.lincable = { customPulses: [10, 5] } + * ``` + */ + customPulses?: number[] +} +/** + * @category LIN + */ +export interface LinMsg { + frameId: number + data: Buffer + direction: LinDirection + checksumType: LinChecksumType + checksum?: number + database?: string + device?: string + workNode?: string + name?: string + isEvent?: boolean + uuid?: string + ts?: number + /** + * The children signals of the LIN message. + * internal use + */ + signals?: T + /* advanced for ecubus lincable */ + lincable?: LinCableErrorInject +} + +/** + * Represents a LIN (Local Interconnect Network) signal that defines data within a LIN frame. + * + * @category LIN + */ +export interface LinSignal { + /** + * The name of the LIN signal. + */ + signalName: string + /** + * The size of the signal in bits. + */ + signalSizeBits: number + /** + * The initial/default value of the signal. + * For scalar signals: a single number. + * For byte array signals: an array of numbers. + */ + initValue: number | number[] + /** + * The current raw value of the signal. + * For scalar signals: a single number. + * For byte array signals: an array of numbers. + */ + value?: number | number[] + /** + * The current physical value of the signal (if applicable). + */ + physValue?: number | string + /** + * The current physical value represented as an enumeration label (if applicable). + */ + physValueEnum?: string + /** + * Indicates whether the signal value has been updated. + */ + update?: boolean + /** + * The name of the node that publishes this signal. + */ + punishedBy: string + /** + * List of node names that subscribe to this signal. + */ + subscribedBy: string[] + /** + * The type of signal representation. + * 'ByteArray' for multi-byte array signals, 'Scalar' for single value signals. + */ + singleType: 'ByteArray' | 'Scalar' +} + +export class LinError extends Error { + errorId: LIN_ERROR_ID + msgType?: LinMsg + + constructor(errorId: LIN_ERROR_ID, msg?: LinMsg, extMsg?: string) { + super(linErrorMap[errorId] + (extMsg ? `,${extMsg}` : '')) + this.errorId = errorId + this.msgType = msg + } +} +export enum LIN_ADDR_TYPE { + PHYSICAL = 'PHYSICAL', + FUNCTIONAL = 'FUNCTIONAL' +} +export enum LIN_SCH_TYPE { + DIAG_ONLY = 'DIAG_ONLY', + DIAG_INTERLEAVED = 'DIAG_INTERLEAVED' +} + +/** + * @category LIN + */ +export interface LinAddr { + name: string + addrType: LIN_ADDR_TYPE + nad: number + stMin: number + nAs: number + nCr: number + schType: LIN_SCH_TYPE +} + +const LinPidTable = [ + 0x80, 0xc1, 0x42, 0x03, 0xc4, 0x85, 0x06, 0x47, 0x08, 0x49, 0xca, 0x8b, 0x4c, 0x0d, 0x8e, 0xcf, + 0x50, 0x11, 0x92, 0xd3, 0x14, 0x55, 0xd6, 0x97, 0xd8, 0x99, 0x1a, 0x5b, 0x9c, 0xdd, 0x5e, 0x1f, + 0x20, 0x61, 0xe2, 0xa3, 0x64, 0x25, 0xa6, 0xe7, 0xa8, 0xe9, 0x6a, 0x2b, 0xec, 0xad, 0x2e, 0x6f, + 0xf0, 0xb1, 0x32, 0x73, 0xb4, 0xf5, 0x76, 0x37, 0x78, 0x39, 0xba, 0xfb, 0x3c, 0x7d, 0xfe, 0xbf +] + +export function getPID(frameId: number) { + return LinPidTable[frameId] +} + +/** + * Calculate LIN frame checksum + * @category LIN + * @param data - Data bytes to calculate checksum for + * @param checksumType - Type of checksum (CLASSIC for LIN 1.x or ENHANCED for LIN 2.x) + * @param pid - Protected ID, required for enhanced checksum calculation + * @returns Calculated checksum byte + */ +export function getCheckSum(data: Buffer, checksumType: LinChecksumType, pid?: number) { + let checksum = 0 + + if (checksumType === LinChecksumType.CLASSIC) { + // Classic checksum (LIN 1.x): sum all bytes with carry, then NOT + for (let i = 0; i < data.length; i++) { + checksum += data[i] + checksum = (checksum & 0xff) + (checksum >> 8) + } + checksum = ~checksum & 0xff + } else { + // Enhanced checksum (LIN 2.x): PID + data, sum with carry handling, then subtract from 0xFF + if (pid === undefined) throw new Error('pid required for enhanced checksum') + checksum = pid + for (let i = 0; i < data.length; i++) { + checksum += data[i] + checksum = (checksum & 0xff) + (checksum >> 8) + } + checksum = 0xff - checksum + } + + return checksum +} + +export function getFrameData(db: LDF, frame: Frame): Buffer { + const data = Buffer.alloc(frame.frameSize) + for (const signal of frame.signals) { + const signalDef = cloneDeep(db.signals[signal.name]) + if (!signalDef) continue + + if (signalDef.singleType === 'ByteArray') { + // Handle byte array type signals + const initValues = ( + signalDef.value != undefined ? signalDef.value : signalDef.initValue + ) as number[] + const bytesToCopy = Math.ceil(signalDef.signalSizeBits / 8) + initValues.reverse() + for (let i = 0; i < bytesToCopy && i < initValues.length; i++) { + const startBit = signal.offset + i * 8 + const byteOffset = Math.floor(startBit / 8) + const bitOffset = startBit % 8 + + if (bitOffset === 0) { + // Aligned byte + data[byteOffset] = initValues[i] + } else { + // Unaligned byte + data[byteOffset] |= (initValues[i] << bitOffset) & 0xff + if (byteOffset + 1 < data.length) { + data[byteOffset + 1] = (initValues[i] >> (8 - bitOffset)) & 0xff + } + } + } + } else { + // Handle scalar type signals - process bit by bit + const value = (signalDef.value != undefined ? signalDef.value : signalDef.initValue) as number + let tempValue = value + + for (let i = 0; i < signalDef.signalSizeBits; i++) { + const targetBit = signal.offset + i + const byteOffset = Math.floor(targetBit / 8) + const bitOffset = targetBit % 8 + + if (byteOffset < data.length) { + // Clear bit + data[byteOffset] &= ~(1 << bitOffset) + // Set bit if needed + if ((tempValue & 1) === 1) { + data[byteOffset] |= 1 << bitOffset + } + tempValue >>= 1 + } + } + } + } + return data +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/logFile.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/logFile.ts new file mode 100644 index 0000000..3dd1c84 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/logFile.ts @@ -0,0 +1,43 @@ +import dayjs from 'dayjs' + +export const LOG_FILE_FIELD_CODES = { + localTime: '{LocalTime}', + loggerName: '{LoggerName}', + projectName: '{ProjectName}' +} as const + +export interface LogFileNameContext { + loggerName: string + projectName: string +} + +const INVALID_FILE_NAME_CHARACTERS = /[<>:"/\\|?*]/g + +export function isValidLogFileNameRule(rule: string): boolean { + return rule.trim().length > 0 && !/[<>:"/\\|?*]/.test(rule) +} + +function sanitizeFileName(value: string): string { + return value.replace(INVALID_FILE_NAME_CHARACTERS, '_').trim() +} + +export function resolveLogFileName( + rule: string, + context: LogFileNameContext, + now: Date = new Date() +): string { + const normalizedRule = rule.trim() || LOG_FILE_FIELD_CODES.localTime + const hasLocalTime = normalizedRule.includes(LOG_FILE_FIELD_CODES.localTime) + const localTime = dayjs(now).format('YYYY-MM-DD_HH-mm-ss') + + let fileName = normalizedRule + .replaceAll(LOG_FILE_FIELD_CODES.localTime, localTime) + .replaceAll(LOG_FILE_FIELD_CODES.loggerName, context.loggerName) + .replaceAll(LOG_FILE_FIELD_CODES.projectName, context.projectName) + + if (!hasLocalTime) { + fileName += `_${dayjs(now).format('YYYYMMDDHHmmss')}` + } + + return sanitizeFileName(fileName) || localTime +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/package.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/package.ts.html new file mode 100644 index 0000000..7d4a99d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/package.ts.html @@ -0,0 +1,155 @@ +{ + "name": "@types/node", + "version": "24.3.0", + "description": "TypeScript definitions for node", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node", + "license": "MIT", + "contributors": [ + { + "name": "Microsoft TypeScript", + "githubUsername": "Microsoft", + "url": "https://github.com/Microsoft" + }, + { + "name": "Alberto Schiabel", + "githubUsername": "jkomyno", + "url": "https://github.com/jkomyno" + }, + { + "name": "Andrew Makarov", + "githubUsername": "r3nya", + "url": "https://github.com/r3nya" + }, + { + "name": "Benjamin Toueg", + "githubUsername": "btoueg", + "url": "https://github.com/btoueg" + }, + { + "name": "David Junger", + "githubUsername": "touffy", + "url": "https://github.com/touffy" + }, + { + "name": "Mohsen Azimi", + "githubUsername": "mohsen1", + "url": "https://github.com/mohsen1" + }, + { + "name": "Nikita Galkin", + "githubUsername": "galkin", + "url": "https://github.com/galkin" + }, + { + "name": "Sebastian Silbermann", + "githubUsername": "eps1lon", + "url": "https://github.com/eps1lon" + }, + { + "name": "Wilco Bakker", + "githubUsername": "WilcoBakker", + "url": "https://github.com/WilcoBakker" + }, + { + "name": "Marcin Kopacz", + "githubUsername": "chyzwar", + "url": "https://github.com/chyzwar" + }, + { + "name": "Trivikram Kamat", + "githubUsername": "trivikr", + "url": "https://github.com/trivikr" + }, + { + "name": "Junxiao Shi", + "githubUsername": "yoursunny", + "url": "https://github.com/yoursunny" + }, + { + "name": "Ilia Baryshnikov", + "githubUsername": "qwelias", + "url": "https://github.com/qwelias" + }, + { + "name": "ExE Boss", + "githubUsername": "ExE-Boss", + "url": "https://github.com/ExE-Boss" + }, + { + "name": "Piotr Błażejewicz", + "githubUsername": "peterblazejewicz", + "url": "https://github.com/peterblazejewicz" + }, + { + "name": "Anna Henningsen", + "githubUsername": "addaleax", + "url": "https://github.com/addaleax" + }, + { + "name": "Victor Perin", + "githubUsername": "victorperin", + "url": "https://github.com/victorperin" + }, + { + "name": "NodeJS Contributors", + "githubUsername": "NodeJS", + "url": "https://github.com/NodeJS" + }, + { + "name": "Linus Unnebäck", + "githubUsername": "LinusU", + "url": "https://github.com/LinusU" + }, + { + "name": "wafuwafu13", + "githubUsername": "wafuwafu13", + "url": "https://github.com/wafuwafu13" + }, + { + "name": "Matteo Collina", + "githubUsername": "mcollina", + "url": "https://github.com/mcollina" + }, + { + "name": "Dmitry Semigradsky", + "githubUsername": "Semigradsky", + "url": "https://github.com/Semigradsky" + }, + { + "name": "René", + "githubUsername": "Renegade334", + "url": "https://github.com/Renegade334" + }, + { + "name": "Yagiz Nizipli", + "githubUsername": "anonrig", + "url": "https://github.com/anonrig" + } + ], + "main": "", + "types": "index.d.ts", + "typesVersions": { + "<=5.6": { + "*": [ + "ts5.6/*" + ] + }, + "<=5.7": { + "*": [ + "ts5.7/*" + ] + } + }, + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/node" + }, + "scripts": {}, + "dependencies": { + "undici-types": "~7.10.0" + }, + "peerDependencies": {}, + "typesPublisherContentHash": "1db0510763ba3afd8e54c0591e60a100a7b90926f5d7da28ae32d8f845d725da", + "typeScriptVersion": "5.2" +} \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/path.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/path.d.ts.html new file mode 100644 index 0000000..d363397 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/path.d.ts.html @@ -0,0 +1,200 @@ +declare module "path/posix" { + import path = require("path"); + export = path; +} +declare module "path/win32" { + import path = require("path"); + export = path; +} +/** + * The `node:path` module provides utilities for working with file and directory + * paths. It can be accessed using: + * + * ```js + * import path from 'node:path'; + * ``` + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/path.js) + */ +declare module "path" { + namespace path { + /** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ + interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; + } + interface FormatInputPathObject { + /** + * The root of the path such as '/' or 'c:\' + */ + root?: string | undefined; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir?: string | undefined; + /** + * The file name including extension (if any) such as 'index.html' + */ + base?: string | undefined; + /** + * The file extension (if any) such as '.html' + */ + ext?: string | undefined; + /** + * The file name without extension (if any) such as 'index' + */ + name?: string | undefined; + } + interface PlatformPath { + /** + * Normalize a string path, reducing '..' and '.' parts. + * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used. + * + * @param path string path to normalize. + * @throws {TypeError} if `path` is not a string. + */ + normalize(path: string): string; + /** + * Join all arguments together and normalize the resulting path. + * + * @param paths paths to join. + * @throws {TypeError} if any of the path segments is not a string. + */ + join(...paths: string[]): string; + /** + * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. + * + * Starting from leftmost {from} parameter, resolves {to} to an absolute path. + * + * If {to} isn't already absolute, {from} arguments are prepended in right to left order, + * until an absolute path is found. If after using all {from} paths still no absolute path is found, + * the current working directory is used as well. The resulting path is normalized, + * and trailing slashes are removed unless the path gets resolved to the root directory. + * + * @param paths A sequence of paths or path segments. + * @throws {TypeError} if any of the arguments is not a string. + */ + resolve(...paths: string[]): string; + /** + * The `path.matchesGlob()` method determines if `path` matches the `pattern`. + * @param path The path to glob-match against. + * @param pattern The glob to check the path against. + * @returns Whether or not the `path` matched the `pattern`. + * @throws {TypeError} if `path` or `pattern` are not strings. + * @since v22.5.0 + */ + matchesGlob(path: string, pattern: string): boolean; + /** + * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. + * + * If the given {path} is a zero-length string, `false` will be returned. + * + * @param path path to test. + * @throws {TypeError} if `path` is not a string. + */ + isAbsolute(path: string): boolean; + /** + * Solve the relative path from {from} to {to} based on the current working directory. + * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. + * + * @throws {TypeError} if either `from` or `to` is not a string. + */ + relative(from: string, to: string): string; + /** + * Return the directory name of a path. Similar to the Unix dirname command. + * + * @param path the path to evaluate. + * @throws {TypeError} if `path` is not a string. + */ + dirname(path: string): string; + /** + * Return the last portion of a path. Similar to the Unix basename command. + * Often used to extract the file name from a fully qualified path. + * + * @param path the path to evaluate. + * @param suffix optionally, an extension to remove from the result. + * @throws {TypeError} if `path` is not a string or if `ext` is given and is not a string. + */ + basename(path: string, suffix?: string): string; + /** + * Return the extension of the path, from the last '.' to end of string in the last portion of the path. + * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string. + * + * @param path the path to evaluate. + * @throws {TypeError} if `path` is not a string. + */ + extname(path: string): string; + /** + * The platform-specific file separator. '\\' or '/'. + */ + readonly sep: "\\" | "/"; + /** + * The platform-specific file delimiter. ';' or ':'. + */ + readonly delimiter: ";" | ":"; + /** + * Returns an object from a path string - the opposite of format(). + * + * @param path path to evaluate. + * @throws {TypeError} if `path` is not a string. + */ + parse(path: string): ParsedPath; + /** + * Returns a path string from an object - the opposite of parse(). + * + * @param pathObject path to evaluate. + */ + format(pathObject: FormatInputPathObject): string; + /** + * On Windows systems only, returns an equivalent namespace-prefixed path for the given path. + * If path is not a string, path will be returned without modifications. + * This method is meaningful only on Windows system. + * On POSIX systems, the method is non-operational and always returns path without modifications. + */ + toNamespacedPath(path: string): string; + /** + * Posix specific pathing. + * Same as parent object on posix. + */ + readonly posix: PlatformPath; + /** + * Windows specific pathing. + * Same as parent object on windows + */ + readonly win32: PlatformPath; + } + } + const path: path.PlatformPath; + export = path; +} +declare module "node:path" { + import path = require("path"); + export = path; +} +declare module "node:path/posix" { + import path = require("path/posix"); + export = path; +} +declare module "node:path/win32" { + import path = require("path/win32"); + export = path; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/perf_hooks.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/perf_hooks.d.ts.html new file mode 100644 index 0000000..51d78d0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/perf_hooks.d.ts.html @@ -0,0 +1,984 @@ +/** + * This module provides an implementation of a subset of the W3C [Web Performance APIs](https://w3c.github.io/perf-timing-primer/) as well as additional APIs for + * Node.js-specific performance measurements. + * + * Node.js supports the following [Web Performance APIs](https://w3c.github.io/perf-timing-primer/): + * + * * [High Resolution Time](https://www.w3.org/TR/hr-time-2) + * * [Performance Timeline](https://w3c.github.io/performance-timeline/) + * * [User Timing](https://www.w3.org/TR/user-timing/) + * * [Resource Timing](https://www.w3.org/TR/resource-timing-2/) + * + * ```js + * import { PerformanceObserver, performance } from 'node:perf_hooks'; + * + * const obs = new PerformanceObserver((items) => { + * console.log(items.getEntries()[0].duration); + * performance.clearMarks(); + * }); + * obs.observe({ type: 'measure' }); + * performance.measure('Start to Now'); + * + * performance.mark('A'); + * doSomeLongRunningProcess(() => { + * performance.measure('A to Now', 'A'); + * + * performance.mark('B'); + * performance.measure('A to B', 'A', 'B'); + * }); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/perf_hooks.js) + */ +declare module "perf_hooks" { + import { AsyncResource } from "node:async_hooks"; + type EntryType = + | "dns" // Node.js only + | "function" // Node.js only + | "gc" // Node.js only + | "http2" // Node.js only + | "http" // Node.js only + | "mark" // available on the Web + | "measure" // available on the Web + | "net" // Node.js only + | "node" // Node.js only + | "resource"; // available on the Web + interface NodeGCPerformanceDetail { + /** + * When `performanceEntry.entryType` is equal to 'gc', the `performance.kind` property identifies + * the type of garbage collection operation that occurred. + * See perf_hooks.constants for valid values. + */ + readonly kind?: number | undefined; + /** + * When `performanceEntry.entryType` is equal to 'gc', the `performance.flags` + * property contains additional information about garbage collection operation. + * See perf_hooks.constants for valid values. + */ + readonly flags?: number | undefined; + } + /** + * The constructor of this class is not exposed to users directly. + * @since v8.5.0 + */ + class PerformanceEntry { + protected constructor(); + /** + * The total number of milliseconds elapsed for this entry. This value will not + * be meaningful for all Performance Entry types. + * @since v8.5.0 + */ + readonly duration: number; + /** + * The name of the performance entry. + * @since v8.5.0 + */ + readonly name: string; + /** + * The high resolution millisecond timestamp marking the starting time of the + * Performance Entry. + * @since v8.5.0 + */ + readonly startTime: number; + /** + * The type of the performance entry. It may be one of: + * + * * `'node'` (Node.js only) + * * `'mark'` (available on the Web) + * * `'measure'` (available on the Web) + * * `'gc'` (Node.js only) + * * `'function'` (Node.js only) + * * `'http2'` (Node.js only) + * * `'http'` (Node.js only) + * @since v8.5.0 + */ + readonly entryType: EntryType; + /** + * Additional detail specific to the `entryType`. + * @since v16.0.0 + */ + readonly detail?: NodeGCPerformanceDetail | unknown | undefined; // TODO: Narrow this based on entry type. + toJSON(): any; + } + /** + * Exposes marks created via the `Performance.mark()` method. + * @since v18.2.0, v16.17.0 + */ + class PerformanceMark extends PerformanceEntry { + readonly duration: 0; + readonly entryType: "mark"; + } + /** + * Exposes measures created via the `Performance.measure()` method. + * + * The constructor of this class is not exposed to users directly. + * @since v18.2.0, v16.17.0 + */ + class PerformanceMeasure extends PerformanceEntry { + readonly entryType: "measure"; + } + interface UVMetrics { + /** + * Number of event loop iterations. + */ + readonly loopCount: number; + /** + * Number of events that have been processed by the event handler. + */ + readonly events: number; + /** + * Number of events that were waiting to be processed when the event provider was called. + */ + readonly eventsWaiting: number; + } + /** + * _This property is an extension by Node.js. It is not available in Web browsers._ + * + * Provides timing details for Node.js itself. The constructor of this class + * is not exposed to users. + * @since v8.5.0 + */ + class PerformanceNodeTiming extends PerformanceEntry { + readonly entryType: "node"; + /** + * The high resolution millisecond timestamp at which the Node.js process + * completed bootstrapping. If bootstrapping has not yet finished, the property + * has the value of -1. + * @since v8.5.0 + */ + readonly bootstrapComplete: number; + /** + * The high resolution millisecond timestamp at which the Node.js environment was + * initialized. + * @since v8.5.0 + */ + readonly environment: number; + /** + * The high resolution millisecond timestamp of the amount of time the event loop + * has been idle within the event loop's event provider (e.g. `epoll_wait`). This + * does not take CPU usage into consideration. If the event loop has not yet + * started (e.g., in the first tick of the main script), the property has the + * value of 0. + * @since v14.10.0, v12.19.0 + */ + readonly idleTime: number; + /** + * The high resolution millisecond timestamp at which the Node.js event loop + * exited. If the event loop has not yet exited, the property has the value of -1\. + * It can only have a value of not -1 in a handler of the `'exit'` event. + * @since v8.5.0 + */ + readonly loopExit: number; + /** + * The high resolution millisecond timestamp at which the Node.js event loop + * started. If the event loop has not yet started (e.g., in the first tick of the + * main script), the property has the value of -1. + * @since v8.5.0 + */ + readonly loopStart: number; + /** + * The high resolution millisecond timestamp at which the Node.js process was initialized. + * @since v8.5.0 + */ + readonly nodeStart: number; + /** + * This is a wrapper to the `uv_metrics_info` function. + * It returns the current set of event loop metrics. + * + * It is recommended to use this property inside a function whose execution was + * scheduled using `setImmediate` to avoid collecting metrics before finishing all + * operations scheduled during the current loop iteration. + * @since v22.8.0, v20.18.0 + */ + readonly uvMetricsInfo: UVMetrics; + /** + * The high resolution millisecond timestamp at which the V8 platform was + * initialized. + * @since v8.5.0 + */ + readonly v8Start: number; + } + interface EventLoopUtilization { + idle: number; + active: number; + utilization: number; + } + /** + * @param utilization1 The result of a previous call to `eventLoopUtilization()`. + * @param utilization2 The result of a previous call to `eventLoopUtilization()` prior to `utilization1`. + */ + type EventLoopUtilityFunction = ( + utilization1?: EventLoopUtilization, + utilization2?: EventLoopUtilization, + ) => EventLoopUtilization; + interface MarkOptions { + /** + * Additional optional detail to include with the mark. + */ + detail?: unknown | undefined; + /** + * An optional timestamp to be used as the mark time. + * @default `performance.now()` + */ + startTime?: number | undefined; + } + interface MeasureOptions { + /** + * Additional optional detail to include with the mark. + */ + detail?: unknown | undefined; + /** + * Duration between start and end times. + */ + duration?: number | undefined; + /** + * Timestamp to be used as the end time, or a string identifying a previously recorded mark. + */ + end?: number | string | undefined; + /** + * Timestamp to be used as the start time, or a string identifying a previously recorded mark. + */ + start?: number | string | undefined; + } + interface TimerifyOptions { + /** + * A histogram object created using `perf_hooks.createHistogram()` that will record runtime + * durations in nanoseconds. + */ + histogram?: RecordableHistogram | undefined; + } + interface Performance { + /** + * If `name` is not provided, removes all `PerformanceMark` objects from the Performance Timeline. + * If `name` is provided, removes only the named mark. + * @since v8.5.0 + */ + clearMarks(name?: string): void; + /** + * If `name` is not provided, removes all `PerformanceMeasure` objects from the Performance Timeline. + * If `name` is provided, removes only the named measure. + * @since v16.7.0 + */ + clearMeasures(name?: string): void; + /** + * If `name` is not provided, removes all `PerformanceResourceTiming` objects from the Resource Timeline. + * If `name` is provided, removes only the named resource. + * @since v18.2.0, v16.17.0 + */ + clearResourceTimings(name?: string): void; + /** + * eventLoopUtilization is similar to CPU utilization except that it is calculated using high precision wall-clock time. + * It represents the percentage of time the event loop has spent outside the event loop's event provider (e.g. epoll_wait). + * No other CPU idle time is taken into consideration. + */ + eventLoopUtilization: EventLoopUtilityFunction; + /** + * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime`. + * If you are only interested in performance entries of certain types or that have certain names, see + * `performance.getEntriesByType()` and `performance.getEntriesByName()`. + * @since v16.7.0 + */ + getEntries(): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` + * whose `performanceEntry.name` is equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to `type`. + * @param name + * @param type + * @since v16.7.0 + */ + getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` + * whose `performanceEntry.entryType` is equal to `type`. + * @param type + * @since v16.7.0 + */ + getEntriesByType(type: EntryType): PerformanceEntry[]; + /** + * Creates a new `PerformanceMark` entry in the Performance Timeline. + * A `PerformanceMark` is a subclass of `PerformanceEntry` whose `performanceEntry.entryType` is always `'mark'`, + * and whose `performanceEntry.duration` is always `0`. + * Performance marks are used to mark specific significant moments in the Performance Timeline. + * + * The created `PerformanceMark` entry is put in the global Performance Timeline and can be queried with + * `performance.getEntries`, `performance.getEntriesByName`, and `performance.getEntriesByType`. When the observation is + * performed, the entries should be cleared from the global Performance Timeline manually with `performance.clearMarks`. + * @param name + */ + mark(name: string, options?: MarkOptions): PerformanceMark; + /** + * Creates a new `PerformanceResourceTiming` entry in the Resource Timeline. + * A `PerformanceResourceTiming` is a subclass of `PerformanceEntry` whose `performanceEntry.entryType` is always `'resource'`. + * Performance resources are used to mark moments in the Resource Timeline. + * @param timingInfo [Fetch Timing Info](https://fetch.spec.whatwg.org/#fetch-timing-info) + * @param requestedUrl The resource url + * @param initiatorType The initiator name, e.g: 'fetch' + * @param global + * @param cacheMode The cache mode must be an empty string ('') or 'local' + * @param bodyInfo [Fetch Response Body Info](https://fetch.spec.whatwg.org/#response-body-info) + * @param responseStatus The response's status code + * @param deliveryType The delivery type. Default: ''. + * @since v18.2.0, v16.17.0 + */ + markResourceTiming( + timingInfo: object, + requestedUrl: string, + initiatorType: string, + global: object, + cacheMode: "" | "local", + bodyInfo: object, + responseStatus: number, + deliveryType?: string, + ): PerformanceResourceTiming; + /** + * Creates a new PerformanceMeasure entry in the Performance Timeline. + * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure', + * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark. + * + * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify + * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist, + * then startMark is set to timeOrigin by default. + * + * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp + * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown. + * @param name + * @param startMark + * @param endMark + * @return The PerformanceMeasure entry that was created + */ + measure(name: string, startMark?: string, endMark?: string): PerformanceMeasure; + measure(name: string, options: MeasureOptions): PerformanceMeasure; + /** + * _This property is an extension by Node.js. It is not available in Web browsers._ + * + * An instance of the `PerformanceNodeTiming` class that provides performance metrics for specific Node.js operational milestones. + * @since v8.5.0 + */ + readonly nodeTiming: PerformanceNodeTiming; + /** + * Returns the current high resolution millisecond timestamp, where 0 represents the start of the current `node` process. + * @since v8.5.0 + */ + now(): number; + /** + * Sets the global performance resource timing buffer size to the specified number of "resource" type performance entry objects. + * + * By default the max buffer size is set to 250. + * @since v18.8.0 + */ + setResourceTimingBufferSize(maxSize: number): void; + /** + * The [`timeOrigin`](https://w3c.github.io/hr-time/#dom-performance-timeorigin) specifies the high resolution millisecond timestamp + * at which the current `node` process began, measured in Unix time. + * @since v8.5.0 + */ + readonly timeOrigin: number; + /** + * _This property is an extension by Node.js. It is not available in Web browsers._ + * + * Wraps a function within a new function that measures the running time of the wrapped function. + * A `PerformanceObserver` must be subscribed to the `'function'` event type in order for the timing details to be accessed. + * + * ```js + * import { + * performance, + * PerformanceObserver, + * } from 'node:perf_hooks'; + * + * function someFunction() { + * console.log('hello world'); + * } + * + * const wrapped = performance.timerify(someFunction); + * + * const obs = new PerformanceObserver((list) => { + * console.log(list.getEntries()[0].duration); + * + * performance.clearMarks(); + * performance.clearMeasures(); + * obs.disconnect(); + * }); + * obs.observe({ entryTypes: ['function'] }); + * + * // A performance timeline entry will be created + * wrapped(); + * ``` + * + * If the wrapped function returns a promise, a finally handler will be attached to the promise and the duration will be reported + * once the finally handler is invoked. + * @param fn + */ + timerify any>(fn: T, options?: TimerifyOptions): T; + /** + * An object which is JSON representation of the performance object. It is similar to + * [`window.performance.toJSON`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/toJSON) in browsers. + * @since v16.1.0 + */ + toJSON(): any; + } + class PerformanceObserverEntryList { + /** + * Returns a list of `PerformanceEntry` objects in chronological order + * with respect to `performanceEntry.startTime`. + * + * ```js + * import { + * performance, + * PerformanceObserver, + * } from 'node:perf_hooks'; + * + * const obs = new PerformanceObserver((perfObserverList, observer) => { + * console.log(perfObserverList.getEntries()); + * + * * [ + * * PerformanceEntry { + * * name: 'test', + * * entryType: 'mark', + * * startTime: 81.465639, + * * duration: 0, + * * detail: null + * * }, + * * PerformanceEntry { + * * name: 'meow', + * * entryType: 'mark', + * * startTime: 81.860064, + * * duration: 0, + * * detail: null + * * } + * * ] + * + * performance.clearMarks(); + * performance.clearMeasures(); + * observer.disconnect(); + * }); + * obs.observe({ type: 'mark' }); + * + * performance.mark('test'); + * performance.mark('meow'); + * ``` + * @since v8.5.0 + */ + getEntries(): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order + * with respect to `performanceEntry.startTime` whose `performanceEntry.name` is + * equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to`type`. + * + * ```js + * import { + * performance, + * PerformanceObserver, + * } from 'node:perf_hooks'; + * + * const obs = new PerformanceObserver((perfObserverList, observer) => { + * console.log(perfObserverList.getEntriesByName('meow')); + * + * * [ + * * PerformanceEntry { + * * name: 'meow', + * * entryType: 'mark', + * * startTime: 98.545991, + * * duration: 0, + * * detail: null + * * } + * * ] + * + * console.log(perfObserverList.getEntriesByName('nope')); // [] + * + * console.log(perfObserverList.getEntriesByName('test', 'mark')); + * + * * [ + * * PerformanceEntry { + * * name: 'test', + * * entryType: 'mark', + * * startTime: 63.518931, + * * duration: 0, + * * detail: null + * * } + * * ] + * + * console.log(perfObserverList.getEntriesByName('test', 'measure')); // [] + * + * performance.clearMarks(); + * performance.clearMeasures(); + * observer.disconnect(); + * }); + * obs.observe({ entryTypes: ['mark', 'measure'] }); + * + * performance.mark('test'); + * performance.mark('meow'); + * ``` + * @since v8.5.0 + */ + getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order + * with respect to `performanceEntry.startTime` whose `performanceEntry.entryType` is equal to `type`. + * + * ```js + * import { + * performance, + * PerformanceObserver, + * } from 'node:perf_hooks'; + * + * const obs = new PerformanceObserver((perfObserverList, observer) => { + * console.log(perfObserverList.getEntriesByType('mark')); + * + * * [ + * * PerformanceEntry { + * * name: 'test', + * * entryType: 'mark', + * * startTime: 55.897834, + * * duration: 0, + * * detail: null + * * }, + * * PerformanceEntry { + * * name: 'meow', + * * entryType: 'mark', + * * startTime: 56.350146, + * * duration: 0, + * * detail: null + * * } + * * ] + * + * performance.clearMarks(); + * performance.clearMeasures(); + * observer.disconnect(); + * }); + * obs.observe({ type: 'mark' }); + * + * performance.mark('test'); + * performance.mark('meow'); + * ``` + * @since v8.5.0 + */ + getEntriesByType(type: EntryType): PerformanceEntry[]; + } + type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void; + /** + * @since v8.5.0 + */ + class PerformanceObserver extends AsyncResource { + constructor(callback: PerformanceObserverCallback); + /** + * Disconnects the `PerformanceObserver` instance from all notifications. + * @since v8.5.0 + */ + disconnect(): void; + /** + * Subscribes the `PerformanceObserver` instance to notifications of new `PerformanceEntry` instances identified either by `options.entryTypes` or `options.type`: + * + * ```js + * import { + * performance, + * PerformanceObserver, + * } from 'node:perf_hooks'; + * + * const obs = new PerformanceObserver((list, observer) => { + * // Called once asynchronously. `list` contains three items. + * }); + * obs.observe({ type: 'mark' }); + * + * for (let n = 0; n < 3; n++) + * performance.mark(`test${n}`); + * ``` + * @since v8.5.0 + */ + observe( + options: + | { + entryTypes: readonly EntryType[]; + buffered?: boolean | undefined; + } + | { + type: EntryType; + buffered?: boolean | undefined; + }, + ): void; + /** + * @since v16.0.0 + * @returns Current list of entries stored in the performance observer, emptying it out. + */ + takeRecords(): PerformanceEntry[]; + } + /** + * Provides detailed network timing data regarding the loading of an application's resources. + * + * The constructor of this class is not exposed to users directly. + * @since v18.2.0, v16.17.0 + */ + class PerformanceResourceTiming extends PerformanceEntry { + readonly entryType: "resource"; + protected constructor(); + /** + * The high resolution millisecond timestamp at immediately before dispatching the `fetch` + * request. If the resource is not intercepted by a worker the property will always return 0. + * @since v18.2.0, v16.17.0 + */ + readonly workerStart: number; + /** + * The high resolution millisecond timestamp that represents the start time of the fetch which + * initiates the redirect. + * @since v18.2.0, v16.17.0 + */ + readonly redirectStart: number; + /** + * The high resolution millisecond timestamp that will be created immediately after receiving + * the last byte of the response of the last redirect. + * @since v18.2.0, v16.17.0 + */ + readonly redirectEnd: number; + /** + * The high resolution millisecond timestamp immediately before the Node.js starts to fetch the resource. + * @since v18.2.0, v16.17.0 + */ + readonly fetchStart: number; + /** + * The high resolution millisecond timestamp immediately before the Node.js starts the domain name lookup + * for the resource. + * @since v18.2.0, v16.17.0 + */ + readonly domainLookupStart: number; + /** + * The high resolution millisecond timestamp representing the time immediately after the Node.js finished + * the domain name lookup for the resource. + * @since v18.2.0, v16.17.0 + */ + readonly domainLookupEnd: number; + /** + * The high resolution millisecond timestamp representing the time immediately before Node.js starts to + * establish the connection to the server to retrieve the resource. + * @since v18.2.0, v16.17.0 + */ + readonly connectStart: number; + /** + * The high resolution millisecond timestamp representing the time immediately after Node.js finishes + * establishing the connection to the server to retrieve the resource. + * @since v18.2.0, v16.17.0 + */ + readonly connectEnd: number; + /** + * The high resolution millisecond timestamp representing the time immediately before Node.js starts the + * handshake process to secure the current connection. + * @since v18.2.0, v16.17.0 + */ + readonly secureConnectionStart: number; + /** + * The high resolution millisecond timestamp representing the time immediately before Node.js receives the + * first byte of the response from the server. + * @since v18.2.0, v16.17.0 + */ + readonly requestStart: number; + /** + * The high resolution millisecond timestamp representing the time immediately after Node.js receives the + * last byte of the resource or immediately before the transport connection is closed, whichever comes first. + * @since v18.2.0, v16.17.0 + */ + readonly responseEnd: number; + /** + * A number representing the size (in octets) of the fetched resource. The size includes the response header + * fields plus the response payload body. + * @since v18.2.0, v16.17.0 + */ + readonly transferSize: number; + /** + * A number representing the size (in octets) received from the fetch (HTTP or cache), of the payload body, before + * removing any applied content-codings. + * @since v18.2.0, v16.17.0 + */ + readonly encodedBodySize: number; + /** + * A number representing the size (in octets) received from the fetch (HTTP or cache), of the message body, after + * removing any applied content-codings. + * @since v18.2.0, v16.17.0 + */ + readonly decodedBodySize: number; + /** + * Returns a `object` that is the JSON representation of the `PerformanceResourceTiming` object + * @since v18.2.0, v16.17.0 + */ + toJSON(): any; + } + namespace constants { + const NODE_PERFORMANCE_GC_MAJOR: number; + const NODE_PERFORMANCE_GC_MINOR: number; + const NODE_PERFORMANCE_GC_INCREMENTAL: number; + const NODE_PERFORMANCE_GC_WEAKCB: number; + const NODE_PERFORMANCE_GC_FLAGS_NO: number; + const NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED: number; + const NODE_PERFORMANCE_GC_FLAGS_FORCED: number; + const NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING: number; + const NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE: number; + const NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY: number; + const NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE: number; + } + const performance: Performance; + interface EventLoopMonitorOptions { + /** + * The sampling rate in milliseconds. + * Must be greater than zero. + * @default 10 + */ + resolution?: number | undefined; + } + interface Histogram { + /** + * The number of samples recorded by the histogram. + * @since v17.4.0, v16.14.0 + */ + readonly count: number; + /** + * The number of samples recorded by the histogram. + * v17.4.0, v16.14.0 + */ + readonly countBigInt: bigint; + /** + * The number of times the event loop delay exceeded the maximum 1 hour event + * loop delay threshold. + * @since v11.10.0 + */ + readonly exceeds: number; + /** + * The number of times the event loop delay exceeded the maximum 1 hour event loop delay threshold. + * @since v17.4.0, v16.14.0 + */ + readonly exceedsBigInt: bigint; + /** + * The maximum recorded event loop delay. + * @since v11.10.0 + */ + readonly max: number; + /** + * The maximum recorded event loop delay. + * v17.4.0, v16.14.0 + */ + readonly maxBigInt: number; + /** + * The mean of the recorded event loop delays. + * @since v11.10.0 + */ + readonly mean: number; + /** + * The minimum recorded event loop delay. + * @since v11.10.0 + */ + readonly min: number; + /** + * The minimum recorded event loop delay. + * v17.4.0, v16.14.0 + */ + readonly minBigInt: bigint; + /** + * Returns the value at the given percentile. + * @since v11.10.0 + * @param percentile A percentile value in the range (0, 100]. + */ + percentile(percentile: number): number; + /** + * Returns the value at the given percentile. + * @since v17.4.0, v16.14.0 + * @param percentile A percentile value in the range (0, 100]. + */ + percentileBigInt(percentile: number): bigint; + /** + * Returns a `Map` object detailing the accumulated percentile distribution. + * @since v11.10.0 + */ + readonly percentiles: Map; + /** + * Returns a `Map` object detailing the accumulated percentile distribution. + * @since v17.4.0, v16.14.0 + */ + readonly percentilesBigInt: Map; + /** + * Resets the collected histogram data. + * @since v11.10.0 + */ + reset(): void; + /** + * The standard deviation of the recorded event loop delays. + * @since v11.10.0 + */ + readonly stddev: number; + } + interface IntervalHistogram extends Histogram { + /** + * Enables the update interval timer. Returns `true` if the timer was + * started, `false` if it was already started. + * @since v11.10.0 + */ + enable(): boolean; + /** + * Disables the update interval timer. Returns `true` if the timer was + * stopped, `false` if it was already stopped. + * @since v11.10.0 + */ + disable(): boolean; + /** + * Disables the update interval timer when the histogram is disposed. + * + * ```js + * const { monitorEventLoopDelay } = require('node:perf_hooks'); + * { + * using hist = monitorEventLoopDelay({ resolution: 20 }); + * hist.enable(); + * // The histogram will be disabled when the block is exited. + * } + * ``` + * @since v24.2.0 + */ + [Symbol.dispose](): void; + } + interface RecordableHistogram extends Histogram { + /** + * @since v15.9.0, v14.18.0 + * @param val The amount to record in the histogram. + */ + record(val: number | bigint): void; + /** + * Calculates the amount of time (in nanoseconds) that has passed since the + * previous call to `recordDelta()` and records that amount in the histogram. + * @since v15.9.0, v14.18.0 + */ + recordDelta(): void; + /** + * Adds the values from `other` to this histogram. + * @since v17.4.0, v16.14.0 + */ + add(other: RecordableHistogram): void; + } + /** + * _This property is an extension by Node.js. It is not available in Web browsers._ + * + * Creates an `IntervalHistogram` object that samples and reports the event loop + * delay over time. The delays will be reported in nanoseconds. + * + * Using a timer to detect approximate event loop delay works because the + * execution of timers is tied specifically to the lifecycle of the libuv + * event loop. That is, a delay in the loop will cause a delay in the execution + * of the timer, and those delays are specifically what this API is intended to + * detect. + * + * ```js + * import { monitorEventLoopDelay } from 'node:perf_hooks'; + * const h = monitorEventLoopDelay({ resolution: 20 }); + * h.enable(); + * // Do something. + * h.disable(); + * console.log(h.min); + * console.log(h.max); + * console.log(h.mean); + * console.log(h.stddev); + * console.log(h.percentiles); + * console.log(h.percentile(50)); + * console.log(h.percentile(99)); + * ``` + * @since v11.10.0 + */ + function monitorEventLoopDelay(options?: EventLoopMonitorOptions): IntervalHistogram; + interface CreateHistogramOptions { + /** + * The minimum recordable value. Must be an integer value greater than 0. + * @default 1 + */ + lowest?: number | bigint | undefined; + /** + * The maximum recordable value. Must be an integer value greater than min. + * @default Number.MAX_SAFE_INTEGER + */ + highest?: number | bigint | undefined; + /** + * The number of accuracy digits. Must be a number between 1 and 5. + * @default 3 + */ + figures?: number | undefined; + } + /** + * Returns a `RecordableHistogram`. + * @since v15.9.0, v14.18.0 + */ + function createHistogram(options?: CreateHistogramOptions): RecordableHistogram; + import { + performance as _performance, + PerformanceEntry as _PerformanceEntry, + PerformanceMark as _PerformanceMark, + PerformanceMeasure as _PerformanceMeasure, + PerformanceObserver as _PerformanceObserver, + PerformanceObserverEntryList as _PerformanceObserverEntryList, + PerformanceResourceTiming as _PerformanceResourceTiming, + } from "perf_hooks"; + global { + /** + * `PerformanceEntry` is a global reference for `import { PerformanceEntry } from 'node:perf_hooks'` + * @see https://nodejs.org/docs/latest-v24.x/api/globals.html#performanceentry + * @since v19.0.0 + */ + var PerformanceEntry: typeof globalThis extends { + onmessage: any; + PerformanceEntry: infer T; + } ? T + : typeof _PerformanceEntry; + /** + * `PerformanceMark` is a global reference for `import { PerformanceMark } from 'node:perf_hooks'` + * @see https://nodejs.org/docs/latest-v24.x/api/globals.html#performancemark + * @since v19.0.0 + */ + var PerformanceMark: typeof globalThis extends { + onmessage: any; + PerformanceMark: infer T; + } ? T + : typeof _PerformanceMark; + /** + * `PerformanceMeasure` is a global reference for `import { PerformanceMeasure } from 'node:perf_hooks'` + * @see https://nodejs.org/docs/latest-v24.x/api/globals.html#performancemeasure + * @since v19.0.0 + */ + var PerformanceMeasure: typeof globalThis extends { + onmessage: any; + PerformanceMeasure: infer T; + } ? T + : typeof _PerformanceMeasure; + /** + * `PerformanceObserver` is a global reference for `import { PerformanceObserver } from 'node:perf_hooks'` + * @see https://nodejs.org/docs/latest-v24.x/api/globals.html#performanceobserver + * @since v19.0.0 + */ + var PerformanceObserver: typeof globalThis extends { + onmessage: any; + PerformanceObserver: infer T; + } ? T + : typeof _PerformanceObserver; + /** + * `PerformanceObserverEntryList` is a global reference for `import { PerformanceObserverEntryList } from 'node:perf_hooks'` + * @see https://nodejs.org/docs/latest-v24.x/api/globals.html#performanceobserverentrylist + * @since v19.0.0 + */ + var PerformanceObserverEntryList: typeof globalThis extends { + onmessage: any; + PerformanceObserverEntryList: infer T; + } ? T + : typeof _PerformanceObserverEntryList; + /** + * `PerformanceResourceTiming` is a global reference for `import { PerformanceResourceTiming } from 'node:perf_hooks'` + * @see https://nodejs.org/docs/latest-v24.x/api/globals.html#performanceresourcetiming + * @since v19.0.0 + */ + var PerformanceResourceTiming: typeof globalThis extends { + onmessage: any; + PerformanceResourceTiming: infer T; + } ? T + : typeof _PerformanceResourceTiming; + /** + * `performance` is a global reference for `import { performance } from 'node:perf_hooks'` + * @see https://nodejs.org/docs/latest-v24.x/api/globals.html#performance + * @since v16.0.0 + */ + var performance: typeof globalThis extends { + onmessage: any; + performance: infer T; + } ? T + : typeof _performance; + } +} +declare module "node:perf_hooks" { + export * from "perf_hooks"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/process.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/process.d.ts.html new file mode 100644 index 0000000..6717026 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/process.d.ts.html @@ -0,0 +1,2089 @@ +declare module "process" { + import * as tty from "node:tty"; + import { Worker } from "node:worker_threads"; + + interface BuiltInModule { + "assert": typeof import("assert"); + "node:assert": typeof import("node:assert"); + "assert/strict": typeof import("assert/strict"); + "node:assert/strict": typeof import("node:assert/strict"); + "async_hooks": typeof import("async_hooks"); + "node:async_hooks": typeof import("node:async_hooks"); + "buffer": typeof import("buffer"); + "node:buffer": typeof import("node:buffer"); + "child_process": typeof import("child_process"); + "node:child_process": typeof import("node:child_process"); + "cluster": typeof import("cluster"); + "node:cluster": typeof import("node:cluster"); + "console": typeof import("console"); + "node:console": typeof import("node:console"); + "constants": typeof import("constants"); + "node:constants": typeof import("node:constants"); + "crypto": typeof import("crypto"); + "node:crypto": typeof import("node:crypto"); + "dgram": typeof import("dgram"); + "node:dgram": typeof import("node:dgram"); + "diagnostics_channel": typeof import("diagnostics_channel"); + "node:diagnostics_channel": typeof import("node:diagnostics_channel"); + "dns": typeof import("dns"); + "node:dns": typeof import("node:dns"); + "dns/promises": typeof import("dns/promises"); + "node:dns/promises": typeof import("node:dns/promises"); + "domain": typeof import("domain"); + "node:domain": typeof import("node:domain"); + "events": typeof import("events"); + "node:events": typeof import("node:events"); + "fs": typeof import("fs"); + "node:fs": typeof import("node:fs"); + "fs/promises": typeof import("fs/promises"); + "node:fs/promises": typeof import("node:fs/promises"); + "http": typeof import("http"); + "node:http": typeof import("node:http"); + "http2": typeof import("http2"); + "node:http2": typeof import("node:http2"); + "https": typeof import("https"); + "node:https": typeof import("node:https"); + "inspector": typeof import("inspector"); + "node:inspector": typeof import("node:inspector"); + "inspector/promises": typeof import("inspector/promises"); + "node:inspector/promises": typeof import("node:inspector/promises"); + "module": typeof import("module"); + "node:module": typeof import("node:module"); + "net": typeof import("net"); + "node:net": typeof import("node:net"); + "os": typeof import("os"); + "node:os": typeof import("node:os"); + "path": typeof import("path"); + "node:path": typeof import("node:path"); + "path/posix": typeof import("path/posix"); + "node:path/posix": typeof import("node:path/posix"); + "path/win32": typeof import("path/win32"); + "node:path/win32": typeof import("node:path/win32"); + "perf_hooks": typeof import("perf_hooks"); + "node:perf_hooks": typeof import("node:perf_hooks"); + "process": typeof import("process"); + "node:process": typeof import("node:process"); + "punycode": typeof import("punycode"); + "node:punycode": typeof import("node:punycode"); + "querystring": typeof import("querystring"); + "node:querystring": typeof import("node:querystring"); + "readline": typeof import("readline"); + "node:readline": typeof import("node:readline"); + "readline/promises": typeof import("readline/promises"); + "node:readline/promises": typeof import("node:readline/promises"); + "repl": typeof import("repl"); + "node:repl": typeof import("node:repl"); + "node:sea": typeof import("node:sea"); + "node:sqlite": typeof import("node:sqlite"); + "stream": typeof import("stream"); + "node:stream": typeof import("node:stream"); + "stream/consumers": typeof import("stream/consumers"); + "node:stream/consumers": typeof import("node:stream/consumers"); + "stream/promises": typeof import("stream/promises"); + "node:stream/promises": typeof import("node:stream/promises"); + "stream/web": typeof import("stream/web"); + "node:stream/web": typeof import("node:stream/web"); + "string_decoder": typeof import("string_decoder"); + "node:string_decoder": typeof import("node:string_decoder"); + "node:test": typeof import("node:test"); + "node:test/reporters": typeof import("node:test/reporters"); + "timers": typeof import("timers"); + "node:timers": typeof import("node:timers"); + "timers/promises": typeof import("timers/promises"); + "node:timers/promises": typeof import("node:timers/promises"); + "tls": typeof import("tls"); + "node:tls": typeof import("node:tls"); + "trace_events": typeof import("trace_events"); + "node:trace_events": typeof import("node:trace_events"); + "tty": typeof import("tty"); + "node:tty": typeof import("node:tty"); + "url": typeof import("url"); + "node:url": typeof import("node:url"); + "util": typeof import("util"); + "node:util": typeof import("node:util"); + "sys": typeof import("util"); + "node:sys": typeof import("node:util"); + "util/types": typeof import("util/types"); + "node:util/types": typeof import("node:util/types"); + "v8": typeof import("v8"); + "node:v8": typeof import("node:v8"); + "vm": typeof import("vm"); + "node:vm": typeof import("node:vm"); + "wasi": typeof import("wasi"); + "node:wasi": typeof import("node:wasi"); + "worker_threads": typeof import("worker_threads"); + "node:worker_threads": typeof import("node:worker_threads"); + "zlib": typeof import("zlib"); + "node:zlib": typeof import("node:zlib"); + } + global { + var process: NodeJS.Process; + namespace NodeJS { + // this namespace merge is here because these are specifically used + // as the type for process.stdin, process.stdout, and process.stderr. + // they can't live in tty.d.ts because we need to disambiguate the imported name. + interface ReadStream extends tty.ReadStream {} + interface WriteStream extends tty.WriteStream {} + interface MemoryUsageFn { + /** + * The `process.memoryUsage()` method iterate over each page to gather informations about memory + * usage which can be slow depending on the program memory allocations. + */ + (): MemoryUsage; + /** + * method returns an integer representing the Resident Set Size (RSS) in bytes. + */ + rss(): number; + } + interface MemoryUsage { + /** + * Resident Set Size, is the amount of space occupied in the main memory device (that is a subset of the total allocated memory) for the + * process, including all C++ and JavaScript objects and code. + */ + rss: number; + /** + * Refers to V8's memory usage. + */ + heapTotal: number; + /** + * Refers to V8's memory usage. + */ + heapUsed: number; + external: number; + /** + * Refers to memory allocated for `ArrayBuffer`s and `SharedArrayBuffer`s, including all Node.js Buffers. This is also included + * in the external value. When Node.js is used as an embedded library, this value may be `0` because allocations for `ArrayBuffer`s + * may not be tracked in that case. + */ + arrayBuffers: number; + } + interface CpuUsage { + user: number; + system: number; + } + interface ProcessRelease { + name: string; + sourceUrl?: string | undefined; + headersUrl?: string | undefined; + libUrl?: string | undefined; + lts?: string | undefined; + } + interface ProcessFeatures { + /** + * A boolean value that is `true` if the current Node.js build is caching builtin modules. + * @since v12.0.0 + */ + readonly cached_builtins: boolean; + /** + * A boolean value that is `true` if the current Node.js build is a debug build. + * @since v0.5.5 + */ + readonly debug: boolean; + /** + * A boolean value that is `true` if the current Node.js build includes the inspector. + * @since v11.10.0 + */ + readonly inspector: boolean; + /** + * A boolean value that is `true` if the current Node.js build includes support for IPv6. + * + * Since all Node.js builds have IPv6 support, this value is always `true`. + * @since v0.5.3 + * @deprecated This property is always true, and any checks based on it are redundant. + */ + readonly ipv6: boolean; + /** + * A boolean value that is `true` if the current Node.js build supports + * [loading ECMAScript modules using `require()`](https://nodejs.org/docs/latest-v24.x/api/modules.md#loading-ecmascript-modules-using-require). + * @since v22.10.0 + */ + readonly require_module: boolean; + /** + * A boolean value that is `true` if the current Node.js build includes support for TLS. + * @since v0.5.3 + */ + readonly tls: boolean; + /** + * A boolean value that is `true` if the current Node.js build includes support for ALPN in TLS. + * + * In Node.js 11.0.0 and later versions, the OpenSSL dependencies feature unconditional ALPN support. + * This value is therefore identical to that of `process.features.tls`. + * @since v4.8.0 + * @deprecated Use `process.features.tls` instead. + */ + readonly tls_alpn: boolean; + /** + * A boolean value that is `true` if the current Node.js build includes support for OCSP in TLS. + * + * In Node.js 11.0.0 and later versions, the OpenSSL dependencies feature unconditional OCSP support. + * This value is therefore identical to that of `process.features.tls`. + * @since v0.11.13 + * @deprecated Use `process.features.tls` instead. + */ + readonly tls_ocsp: boolean; + /** + * A boolean value that is `true` if the current Node.js build includes support for SNI in TLS. + * + * In Node.js 11.0.0 and later versions, the OpenSSL dependencies feature unconditional SNI support. + * This value is therefore identical to that of `process.features.tls`. + * @since v0.5.3 + * @deprecated Use `process.features.tls` instead. + */ + readonly tls_sni: boolean; + /** + * A value that is `"strip"` by default, + * `"transform"` if Node.js is run with `--experimental-transform-types`, and `false` if + * Node.js is run with `--no-experimental-strip-types`. + * @since v22.10.0 + */ + readonly typescript: "strip" | "transform" | false; + /** + * A boolean value that is `true` if the current Node.js build includes support for libuv. + * + * Since it's not possible to build Node.js without libuv, this value is always `true`. + * @since v0.5.3 + * @deprecated This property is always true, and any checks based on it are redundant. + */ + readonly uv: boolean; + } + interface ProcessVersions extends Dict { + http_parser: string; + node: string; + v8: string; + ares: string; + uv: string; + zlib: string; + modules: string; + openssl: string; + } + type Platform = + | "aix" + | "android" + | "darwin" + | "freebsd" + | "haiku" + | "linux" + | "openbsd" + | "sunos" + | "win32" + | "cygwin" + | "netbsd"; + type Architecture = + | "arm" + | "arm64" + | "ia32" + | "loong64" + | "mips" + | "mipsel" + | "ppc64" + | "riscv64" + | "s390x" + | "x64"; + type Signals = + | "SIGABRT" + | "SIGALRM" + | "SIGBUS" + | "SIGCHLD" + | "SIGCONT" + | "SIGFPE" + | "SIGHUP" + | "SIGILL" + | "SIGINT" + | "SIGIO" + | "SIGIOT" + | "SIGKILL" + | "SIGPIPE" + | "SIGPOLL" + | "SIGPROF" + | "SIGPWR" + | "SIGQUIT" + | "SIGSEGV" + | "SIGSTKFLT" + | "SIGSTOP" + | "SIGSYS" + | "SIGTERM" + | "SIGTRAP" + | "SIGTSTP" + | "SIGTTIN" + | "SIGTTOU" + | "SIGUNUSED" + | "SIGURG" + | "SIGUSR1" + | "SIGUSR2" + | "SIGVTALRM" + | "SIGWINCH" + | "SIGXCPU" + | "SIGXFSZ" + | "SIGBREAK" + | "SIGLOST" + | "SIGINFO"; + type UncaughtExceptionOrigin = "uncaughtException" | "unhandledRejection"; + type MultipleResolveType = "resolve" | "reject"; + type BeforeExitListener = (code: number) => void; + type DisconnectListener = () => void; + type ExitListener = (code: number) => void; + type RejectionHandledListener = (promise: Promise) => void; + type UncaughtExceptionListener = (error: Error, origin: UncaughtExceptionOrigin) => void; + /** + * Most of the time the unhandledRejection will be an Error, but this should not be relied upon + * as *anything* can be thrown/rejected, it is therefore unsafe to assume that the value is an Error. + */ + type UnhandledRejectionListener = (reason: unknown, promise: Promise) => void; + type WarningListener = (warning: Error) => void; + type MessageListener = (message: unknown, sendHandle: unknown) => void; + type SignalsListener = (signal: Signals) => void; + type MultipleResolveListener = ( + type: MultipleResolveType, + promise: Promise, + value: unknown, + ) => void; + type WorkerListener = (worker: Worker) => void; + interface Socket extends ReadWriteStream { + isTTY?: true | undefined; + } + // Alias for compatibility + interface ProcessEnv extends Dict { + /** + * Can be used to change the default timezone at runtime + */ + TZ?: string; + /** + * The current project root path. + */ + PROJECT_ROOT: string; + /** + * The current project name. + */ + PROJECT_NAME: string; + /** + * The current work mode. + */ + MODE:'node'|'sequence'|'test', + /** + * name. + */ + NAME: string; + } + interface HRTime { + /** + * This is the legacy version of {@link process.hrtime.bigint()} + * before bigint was introduced in JavaScript. + * + * The `process.hrtime()` method returns the current high-resolution real time in a `[seconds, nanoseconds]` tuple `Array`, + * where `nanoseconds` is the remaining part of the real time that can't be represented in second precision. + * + * `time` is an optional parameter that must be the result of a previous `process.hrtime()` call to diff with the current time. + * If the parameter passed in is not a tuple `Array`, a TypeError will be thrown. + * Passing in a user-defined array instead of the result of a previous call to `process.hrtime()` will lead to undefined behavior. + * + * These times are relative to an arbitrary time in the past, + * and not related to the time of day and therefore not subject to clock drift. + * The primary use is for measuring performance between intervals: + * ```js + * const { hrtime } = require('node:process'); + * const NS_PER_SEC = 1e9; + * const time = hrtime(); + * // [ 1800216, 25 ] + * + * setTimeout(() => { + * const diff = hrtime(time); + * // [ 1, 552 ] + * + * console.log(`Benchmark took ${diff[0] * NS_PER_SEC + diff[1]} nanoseconds`); + * // Benchmark took 1000000552 nanoseconds + * }, 1000); + * ``` + * @since 0.7.6 + * @legacy Use {@link process.hrtime.bigint()} instead. + * @param time The result of a previous call to `process.hrtime()` + */ + (time?: [number, number]): [number, number]; + /** + * The `bigint` version of the {@link process.hrtime()} method returning the current high-resolution real time in nanoseconds as a `bigint`. + * + * Unlike {@link process.hrtime()}, it does not support an additional time argument since the difference can just be computed directly by subtraction of the two `bigint`s. + * ```js + * import { hrtime } from 'node:process'; + * + * const start = hrtime.bigint(); + * // 191051479007711n + * + * setTimeout(() => { + * const end = hrtime.bigint(); + * // 191052633396993n + * + * console.log(`Benchmark took ${end - start} nanoseconds`); + * // Benchmark took 1154389282 nanoseconds + * }, 1000); + * ``` + * @since v10.7.0 + */ + bigint(): bigint; + } + interface ProcessPermission { + /** + * Verifies that the process is able to access the given scope and reference. + * If no reference is provided, a global scope is assumed, for instance, `process.permission.has('fs.read')` + * will check if the process has ALL file system read permissions. + * + * The reference has a meaning based on the provided scope. For example, the reference when the scope is File System means files and folders. + * + * The available scopes are: + * + * * `fs` - All File System + * * `fs.read` - File System read operations + * * `fs.write` - File System write operations + * * `child` - Child process spawning operations + * * `worker` - Worker thread spawning operation + * + * ```js + * // Check if the process has permission to read the README file + * process.permission.has('fs.read', './README.md'); + * // Check if the process has read permission operations + * process.permission.has('fs.read'); + * ``` + * @since v20.0.0 + */ + has(scope: string, reference?: string): boolean; + } + interface ProcessReport { + /** + * Write reports in a compact format, single-line JSON, more easily consumable by log processing systems + * than the default multi-line format designed for human consumption. + * @since v13.12.0, v12.17.0 + */ + compact: boolean; + /** + * Directory where the report is written. + * The default value is the empty string, indicating that reports are written to the current + * working directory of the Node.js process. + */ + directory: string; + /** + * Filename where the report is written. If set to the empty string, the output filename will be comprised + * of a timestamp, PID, and sequence number. The default value is the empty string. + */ + filename: string; + /** + * Returns a JavaScript Object representation of a diagnostic report for the running process. + * The report's JavaScript stack trace is taken from `err`, if present. + */ + getReport(err?: Error): object; + /** + * If true, a diagnostic report is generated on fatal errors, + * such as out of memory errors or failed C++ assertions. + * @default false + */ + reportOnFatalError: boolean; + /** + * If true, a diagnostic report is generated when the process + * receives the signal specified by process.report.signal. + * @default false + */ + reportOnSignal: boolean; + /** + * If true, a diagnostic report is generated on uncaught exception. + * @default false + */ + reportOnUncaughtException: boolean; + /** + * The signal used to trigger the creation of a diagnostic report. + * @default 'SIGUSR2' + */ + signal: Signals; + /** + * Writes a diagnostic report to a file. If filename is not provided, the default filename + * includes the date, time, PID, and a sequence number. + * The report's JavaScript stack trace is taken from `err`, if present. + * + * If the value of filename is set to `'stdout'` or `'stderr'`, the report is written + * to the stdout or stderr of the process respectively. + * @param fileName Name of the file where the report is written. + * This should be a relative path, that will be appended to the directory specified in + * `process.report.directory`, or the current working directory of the Node.js process, + * if unspecified. + * @param err A custom error used for reporting the JavaScript stack. + * @return Filename of the generated report. + */ + writeReport(fileName?: string, err?: Error): string; + writeReport(err?: Error): string; + } + interface ResourceUsage { + fsRead: number; + fsWrite: number; + involuntaryContextSwitches: number; + ipcReceived: number; + ipcSent: number; + majorPageFault: number; + maxRSS: number; + minorPageFault: number; + sharedMemorySize: number; + signalsCount: number; + swappedOut: number; + systemCPUTime: number; + unsharedDataSize: number; + unsharedStackSize: number; + userCPUTime: number; + voluntaryContextSwitches: number; + } + interface EmitWarningOptions { + /** + * When `warning` is a `string`, `type` is the name to use for the _type_ of warning being emitted. + * + * @default 'Warning' + */ + type?: string | undefined; + /** + * A unique identifier for the warning instance being emitted. + */ + code?: string | undefined; + /** + * When `warning` is a `string`, `ctor` is an optional function used to limit the generated stack trace. + * + * @default process.emitWarning + */ + ctor?: Function | undefined; + /** + * Additional text to include with the error. + */ + detail?: string | undefined; + } + interface ProcessConfig { + readonly target_defaults: { + readonly cflags: any[]; + readonly default_configuration: string; + readonly defines: string[]; + readonly include_dirs: string[]; + readonly libraries: string[]; + }; + readonly variables: { + readonly clang: number; + readonly host_arch: string; + readonly node_install_npm: boolean; + readonly node_install_waf: boolean; + readonly node_prefix: string; + readonly node_shared_openssl: boolean; + readonly node_shared_v8: boolean; + readonly node_shared_zlib: boolean; + readonly node_use_dtrace: boolean; + readonly node_use_etw: boolean; + readonly node_use_openssl: boolean; + readonly target_arch: string; + readonly v8_no_strict_aliasing: number; + readonly v8_use_snapshot: boolean; + readonly visibility: string; + }; + } + interface Process extends EventEmitter { + /** + * The `process.stdout` property returns a stream connected to`stdout` (fd `1`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `1` refers to a file, in which case it is + * a `Writable` stream. + * + * For example, to copy `process.stdin` to `process.stdout`: + * + * ```js + * import { stdin, stdout } from 'node:process'; + * + * stdin.pipe(stdout); + * ``` + * + * `process.stdout` differs from other Node.js streams in important ways. See `note on process I/O` for more information. + */ + stdout: WriteStream & { + fd: 1; + }; + /** + * The `process.stderr` property returns a stream connected to`stderr` (fd `2`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `2` refers to a file, in which case it is + * a `Writable` stream. + * + * `process.stderr` differs from other Node.js streams in important ways. See `note on process I/O` for more information. + */ + stderr: WriteStream & { + fd: 2; + }; + /** + * The `process.stdin` property returns a stream connected to`stdin` (fd `0`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `0` refers to a file, in which case it is + * a `Readable` stream. + * + * For details of how to read from `stdin` see `readable.read()`. + * + * As a `Duplex` stream, `process.stdin` can also be used in "old" mode that + * is compatible with scripts written for Node.js prior to v0.10\. + * For more information see `Stream compatibility`. + * + * In "old" streams mode the `stdin` stream is paused by default, so one + * must call `process.stdin.resume()` to read from it. Note also that calling `process.stdin.resume()` itself would switch stream to "old" mode. + */ + stdin: ReadStream & { + fd: 0; + }; + /** + * The `process.argv` property returns an array containing the command-line + * arguments passed when the Node.js process was launched. The first element will + * be {@link execPath}. See `process.argv0` if access to the original value + * of `argv[0]` is needed. The second element will be the path to the JavaScript + * file being executed. The remaining elements will be any additional command-line + * arguments. + * + * For example, assuming the following script for `process-args.js`: + * + * ```js + * import { argv } from 'node:process'; + * + * // print process.argv + * argv.forEach((val, index) => { + * console.log(`${index}: ${val}`); + * }); + * ``` + * + * Launching the Node.js process as: + * + * ```bash + * node process-args.js one two=three four + * ``` + * + * Would generate the output: + * + * ```text + * 0: /usr/local/bin/node + * 1: /Users/mjr/work/node/process-args.js + * 2: one + * 3: two=three + * 4: four + * ``` + * @since v0.1.27 + */ + argv: string[]; + /** + * The `process.argv0` property stores a read-only copy of the original value of`argv[0]` passed when Node.js starts. + * + * ```console + * $ bash -c 'exec -a customArgv0 ./node' + * > process.argv[0] + * '/Volumes/code/external/node/out/Release/node' + * > process.argv0 + * 'customArgv0' + * ``` + * @since v6.4.0 + */ + argv0: string; + /** + * The `process.execArgv` property returns the set of Node.js-specific command-line + * options passed when the Node.js process was launched. These options do not + * appear in the array returned by the {@link argv} property, and do not + * include the Node.js executable, the name of the script, or any options following + * the script name. These options are useful in order to spawn child processes with + * the same execution environment as the parent. + * + * ```bash + * node --icu-data-dir=./foo --require ./bar.js script.js --version + * ``` + * + * Results in `process.execArgv`: + * + * ```js + * ["--icu-data-dir=./foo", "--require", "./bar.js"] + * ``` + * + * And `process.argv`: + * + * ```js + * ['/usr/local/bin/node', 'script.js', '--version'] + * ``` + * + * Refer to `Worker constructor` for the detailed behavior of worker + * threads with this property. + * @since v0.7.7 + */ + execArgv: string[]; + /** + * The `process.execPath` property returns the absolute pathname of the executable + * that started the Node.js process. Symbolic links, if any, are resolved. + * + * ```js + * '/usr/local/bin/node' + * ``` + * @since v0.1.100 + */ + execPath: string; + /** + * The `process.abort()` method causes the Node.js process to exit immediately and + * generate a core file. + * + * This feature is not available in `Worker` threads. + * @since v0.7.0 + */ + abort(): never; + /** + * The `process.chdir()` method changes the current working directory of the + * Node.js process or throws an exception if doing so fails (for instance, if + * the specified `directory` does not exist). + * + * ```js + * import { chdir, cwd } from 'node:process'; + * + * console.log(`Starting directory: ${cwd()}`); + * try { + * chdir('/tmp'); + * console.log(`New directory: ${cwd()}`); + * } catch (err) { + * console.error(`chdir: ${err}`); + * } + * ``` + * + * This feature is not available in `Worker` threads. + * @since v0.1.17 + */ + chdir(directory: string): void; + /** + * The `process.cwd()` method returns the current working directory of the Node.js + * process. + * + * ```js + * import { cwd } from 'node:process'; + * + * console.log(`Current directory: ${cwd()}`); + * ``` + * @since v0.1.8 + */ + cwd(): string; + /** + * The port used by the Node.js debugger when enabled. + * + * ```js + * import process from 'node:process'; + * + * process.debugPort = 5858; + * ``` + * @since v0.7.2 + */ + debugPort: number; + /** + * The `process.dlopen()` method allows dynamically loading shared objects. It is primarily used by `require()` to load C++ Addons, and + * should not be used directly, except in special cases. In other words, `require()` should be preferred over `process.dlopen()` + * unless there are specific reasons such as custom dlopen flags or loading from ES modules. + * + * The `flags` argument is an integer that allows to specify dlopen behavior. See the `[os.constants.dlopen](https://nodejs.org/docs/latest-v24.x/api/os.html#dlopen-constants)` + * documentation for details. + * + * An important requirement when calling `process.dlopen()` is that the `module` instance must be passed. Functions exported by the C++ Addon + * are then accessible via `module.exports`. + * + * The example below shows how to load a C++ Addon, named `local.node`, that exports a `foo` function. All the symbols are loaded before the call returns, by passing the `RTLD_NOW` constant. + * In this example the constant is assumed to be available. + * + * ```js + * import { dlopen } from 'node:process'; + * import { constants } from 'node:os'; + * import { fileURLToPath } from 'node:url'; + * + * const module = { exports: {} }; + * dlopen(module, fileURLToPath(new URL('local.node', import.meta.url)), + * constants.dlopen.RTLD_NOW); + * module.exports.foo(); + * ``` + */ + dlopen(module: object, filename: string, flags?: number): void; + /** + * The `process.emitWarning()` method can be used to emit custom or application + * specific process warnings. These can be listened for by adding a handler to the `'warning'` event. + * + * ```js + * import { emitWarning } from 'node:process'; + * + * // Emit a warning using a string. + * emitWarning('Something happened!'); + * // Emits: (node: 56338) Warning: Something happened! + * ``` + * + * ```js + * import { emitWarning } from 'node:process'; + * + * // Emit a warning using a string and a type. + * emitWarning('Something Happened!', 'CustomWarning'); + * // Emits: (node:56338) CustomWarning: Something Happened! + * ``` + * + * ```js + * import { emitWarning } from 'node:process'; + * + * emitWarning('Something happened!', 'CustomWarning', 'WARN001'); + * // Emits: (node:56338) [WARN001] CustomWarning: Something happened! + * ```js + * + * In each of the previous examples, an `Error` object is generated internally by `process.emitWarning()` and passed through to the `'warning'` handler. + * + * ```js + * import process from 'node:process'; + * + * process.on('warning', (warning) => { + * console.warn(warning.name); // 'Warning' + * console.warn(warning.message); // 'Something happened!' + * console.warn(warning.code); // 'MY_WARNING' + * console.warn(warning.stack); // Stack trace + * console.warn(warning.detail); // 'This is some additional information' + * }); + * ``` + * + * If `warning` is passed as an `Error` object, it will be passed through to the `'warning'` event handler + * unmodified (and the optional `type`, `code` and `ctor` arguments will be ignored): + * + * ```js + * import { emitWarning } from 'node:process'; + * + * // Emit a warning using an Error object. + * const myWarning = new Error('Something happened!'); + * // Use the Error name property to specify the type name + * myWarning.name = 'CustomWarning'; + * myWarning.code = 'WARN001'; + * + * emitWarning(myWarning); + * // Emits: (node:56338) [WARN001] CustomWarning: Something happened! + * ``` + * + * A `TypeError` is thrown if `warning` is anything other than a string or `Error` object. + * + * While process warnings use `Error` objects, the process warning mechanism is not a replacement for normal error handling mechanisms. + * + * The following additional handling is implemented if the warning `type` is `'DeprecationWarning'`: + * * If the `--throw-deprecation` command-line flag is used, the deprecation warning is thrown as an exception rather than being emitted as an event. + * * If the `--no-deprecation` command-line flag is used, the deprecation warning is suppressed. + * * If the `--trace-deprecation` command-line flag is used, the deprecation warning is printed to `stderr` along with the full stack trace. + * @since v8.0.0 + * @param warning The warning to emit. + */ + emitWarning(warning: string | Error, ctor?: Function): void; + emitWarning(warning: string | Error, type?: string, ctor?: Function): void; + emitWarning(warning: string | Error, type?: string, code?: string, ctor?: Function): void; + emitWarning(warning: string | Error, options?: EmitWarningOptions): void; + /** + * The `process.env` property returns an object containing the user environment. + * See [`environ(7)`](http://man7.org/linux/man-pages/man7/environ.7.html). + * + * An example of this object looks like: + * + * ```js + * { + * TERM: 'xterm-256color', + * SHELL: '/usr/local/bin/bash', + * USER: 'maciej', + * PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', + * PWD: '/Users/maciej', + * EDITOR: 'vim', + * SHLVL: '1', + * HOME: '/Users/maciej', + * LOGNAME: 'maciej', + * _: '/usr/local/bin/node' + * } + * ``` + * + * It is possible to modify this object, but such modifications will not be + * reflected outside the Node.js process, or (unless explicitly requested) + * to other `Worker` threads. + * In other words, the following example would not work: + * + * ```bash + * node -e 'process.env.foo = "bar"' && echo $foo + * ``` + * + * While the following will: + * + * ```js + * import { env } from 'node:process'; + * + * env.foo = 'bar'; + * console.log(env.foo); + * ``` + * + * Assigning a property on `process.env` will implicitly convert the value + * to a string. **This behavior is deprecated.** Future versions of Node.js may + * throw an error when the value is not a string, number, or boolean. + * + * ```js + * import { env } from 'node:process'; + * + * env.test = null; + * console.log(env.test); + * // => 'null' + * env.test = undefined; + * console.log(env.test); + * // => 'undefined' + * ``` + * + * Use `delete` to delete a property from `process.env`. + * + * ```js + * import { env } from 'node:process'; + * + * env.TEST = 1; + * delete env.TEST; + * console.log(env.TEST); + * // => undefined + * ``` + * + * On Windows operating systems, environment variables are case-insensitive. + * + * ```js + * import { env } from 'node:process'; + * + * env.TEST = 1; + * console.log(env.test); + * // => 1 + * ``` + * + * Unless explicitly specified when creating a `Worker` instance, + * each `Worker` thread has its own copy of `process.env`, based on its + * parent thread's `process.env`, or whatever was specified as the `env` option + * to the `Worker` constructor. Changes to `process.env` will not be visible + * across `Worker` threads, and only the main thread can make changes that + * are visible to the operating system or to native add-ons. On Windows, a copy of `process.env` on a `Worker` instance operates in a case-sensitive manner + * unlike the main thread. + * @since v0.1.27 + */ + env: ProcessEnv; + /** + * The `process.exit()` method instructs Node.js to terminate the process + * synchronously with an exit status of `code`. If `code` is omitted, exit uses + * either the 'success' code `0` or the value of `process.exitCode` if it has been + * set. Node.js will not terminate until all the `'exit'` event listeners are + * called. + * + * To exit with a 'failure' code: + * + * ```js + * import { exit } from 'node:process'; + * + * exit(1); + * ``` + * + * The shell that executed Node.js should see the exit code as `1`. + * + * Calling `process.exit()` will force the process to exit as quickly as possible + * even if there are still asynchronous operations pending that have not yet + * completed fully, including I/O operations to `process.stdout` and `process.stderr`. + * + * In most situations, it is not actually necessary to call `process.exit()` explicitly. The Node.js process will exit on its own _if there is no additional_ + * _work pending_ in the event loop. The `process.exitCode` property can be set to + * tell the process which exit code to use when the process exits gracefully. + * + * For instance, the following example illustrates a _misuse_ of the `process.exit()` method that could lead to data printed to stdout being + * truncated and lost: + * + * ```js + * import { exit } from 'node:process'; + * + * // This is an example of what *not* to do: + * if (someConditionNotMet()) { + * printUsageToStdout(); + * exit(1); + * } + * ``` + * + * The reason this is problematic is because writes to `process.stdout` in Node.js + * are sometimes _asynchronous_ and may occur over multiple ticks of the Node.js + * event loop. Calling `process.exit()`, however, forces the process to exit _before_ those additional writes to `stdout` can be performed. + * + * Rather than calling `process.exit()` directly, the code _should_ set the `process.exitCode` and allow the process to exit naturally by avoiding + * scheduling any additional work for the event loop: + * + * ```js + * import process from 'node:process'; + * + * // How to properly set the exit code while letting + * // the process exit gracefully. + * if (someConditionNotMet()) { + * printUsageToStdout(); + * process.exitCode = 1; + * } + * ``` + * + * If it is necessary to terminate the Node.js process due to an error condition, + * throwing an _uncaught_ error and allowing the process to terminate accordingly + * is safer than calling `process.exit()`. + * + * In `Worker` threads, this function stops the current thread rather + * than the current process. + * @since v0.1.13 + * @param [code=0] The exit code. For string type, only integer strings (e.g.,'1') are allowed. + */ + exit(code?: number | string | null | undefined): never; + /** + * A number which will be the process exit code, when the process either + * exits gracefully, or is exited via {@link exit} without specifying + * a code. + * + * Specifying a code to {@link exit} will override any + * previous setting of `process.exitCode`. + * @default undefined + * @since v0.11.8 + */ + exitCode?: number | string | number | undefined; + finalization: { + /** + * This function registers a callback to be called when the process emits the `exit` event if the `ref` object was not garbage collected. + * If the object `ref` was garbage collected before the `exit` event is emitted, the callback will be removed from the finalization registry, and it will not be called on process exit. + * + * Inside the callback you can release the resources allocated by the `ref` object. + * Be aware that all limitations applied to the `beforeExit` event are also applied to the callback function, + * this means that there is a possibility that the callback will not be called under special circumstances. + * + * The idea of ​​this function is to help you free up resources when the starts process exiting, but also let the object be garbage collected if it is no longer being used. + * @param ref The reference to the resource that is being tracked. + * @param callback The callback function to be called when the resource is finalized. + * @since v22.5.0 + * @experimental + */ + register(ref: T, callback: (ref: T, event: "exit") => void): void; + /** + * This function behaves exactly like the `register`, except that the callback will be called when the process emits the `beforeExit` event if `ref` object was not garbage collected. + * + * Be aware that all limitations applied to the `beforeExit` event are also applied to the callback function, this means that there is a possibility that the callback will not be called under special circumstances. + * @param ref The reference to the resource that is being tracked. + * @param callback The callback function to be called when the resource is finalized. + * @since v22.5.0 + * @experimental + */ + registerBeforeExit(ref: T, callback: (ref: T, event: "beforeExit") => void): void; + /** + * This function remove the register of the object from the finalization registry, so the callback will not be called anymore. + * @param ref The reference to the resource that was registered previously. + * @since v22.5.0 + * @experimental + */ + unregister(ref: object): void; + }; + /** + * The `process.getActiveResourcesInfo()` method returns an array of strings containing + * the types of the active resources that are currently keeping the event loop alive. + * + * ```js + * import { getActiveResourcesInfo } from 'node:process'; + * import { setTimeout } from 'node:timers'; + + * console.log('Before:', getActiveResourcesInfo()); + * setTimeout(() => {}, 1000); + * console.log('After:', getActiveResourcesInfo()); + * // Prints: + * // Before: [ 'TTYWrap', 'TTYWrap', 'TTYWrap' ] + * // After: [ 'TTYWrap', 'TTYWrap', 'TTYWrap', 'Timeout' ] + * ``` + * @since v17.3.0, v16.14.0 + */ + getActiveResourcesInfo(): string[]; + /** + * Provides a way to load built-in modules in a globally available function. + * @param id ID of the built-in module being requested. + */ + getBuiltinModule(id: ID): BuiltInModule[ID]; + getBuiltinModule(id: string): object | undefined; + /** + * The `process.getgid()` method returns the numerical group identity of the + * process. (See [`getgid(2)`](http://man7.org/linux/man-pages/man2/getgid.2.html).) + * + * ```js + * import process from 'node:process'; + * + * if (process.getgid) { + * console.log(`Current gid: ${process.getgid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v0.1.31 + */ + getgid?: () => number; + /** + * The `process.setgid()` method sets the group identity of the process. (See [`setgid(2)`](http://man7.org/linux/man-pages/man2/setgid.2.html).) The `id` can be passed as either a + * numeric ID or a group name + * string. If a group name is specified, this method blocks while resolving the + * associated numeric ID. + * + * ```js + * import process from 'node:process'; + * + * if (process.getgid && process.setgid) { + * console.log(`Current gid: ${process.getgid()}`); + * try { + * process.setgid(501); + * console.log(`New gid: ${process.getgid()}`); + * } catch (err) { + * console.log(`Failed to set gid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v0.1.31 + * @param id The group name or ID + */ + setgid?: (id: number | string) => void; + /** + * The `process.getuid()` method returns the numeric user identity of the process. + * (See [`getuid(2)`](http://man7.org/linux/man-pages/man2/getuid.2.html).) + * + * ```js + * import process from 'node:process'; + * + * if (process.getuid) { + * console.log(`Current uid: ${process.getuid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v0.1.28 + */ + getuid?: () => number; + /** + * The `process.setuid(id)` method sets the user identity of the process. (See [`setuid(2)`](http://man7.org/linux/man-pages/man2/setuid.2.html).) The `id` can be passed as either a + * numeric ID or a username string. + * If a username is specified, the method blocks while resolving the associated + * numeric ID. + * + * ```js + * import process from 'node:process'; + * + * if (process.getuid && process.setuid) { + * console.log(`Current uid: ${process.getuid()}`); + * try { + * process.setuid(501); + * console.log(`New uid: ${process.getuid()}`); + * } catch (err) { + * console.log(`Failed to set uid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v0.1.28 + */ + setuid?: (id: number | string) => void; + /** + * The `process.geteuid()` method returns the numerical effective user identity of + * the process. (See [`geteuid(2)`](http://man7.org/linux/man-pages/man2/geteuid.2.html).) + * + * ```js + * import process from 'node:process'; + * + * if (process.geteuid) { + * console.log(`Current uid: ${process.geteuid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v2.0.0 + */ + geteuid?: () => number; + /** + * The `process.seteuid()` method sets the effective user identity of the process. + * (See [`seteuid(2)`](http://man7.org/linux/man-pages/man2/seteuid.2.html).) The `id` can be passed as either a numeric ID or a username + * string. If a username is specified, the method blocks while resolving the + * associated numeric ID. + * + * ```js + * import process from 'node:process'; + * + * if (process.geteuid && process.seteuid) { + * console.log(`Current uid: ${process.geteuid()}`); + * try { + * process.seteuid(501); + * console.log(`New uid: ${process.geteuid()}`); + * } catch (err) { + * console.log(`Failed to set uid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v2.0.0 + * @param id A user name or ID + */ + seteuid?: (id: number | string) => void; + /** + * The `process.getegid()` method returns the numerical effective group identity + * of the Node.js process. (See [`getegid(2)`](http://man7.org/linux/man-pages/man2/getegid.2.html).) + * + * ```js + * import process from 'node:process'; + * + * if (process.getegid) { + * console.log(`Current gid: ${process.getegid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v2.0.0 + */ + getegid?: () => number; + /** + * The `process.setegid()` method sets the effective group identity of the process. + * (See [`setegid(2)`](http://man7.org/linux/man-pages/man2/setegid.2.html).) The `id` can be passed as either a numeric ID or a group + * name string. If a group name is specified, this method blocks while resolving + * the associated a numeric ID. + * + * ```js + * import process from 'node:process'; + * + * if (process.getegid && process.setegid) { + * console.log(`Current gid: ${process.getegid()}`); + * try { + * process.setegid(501); + * console.log(`New gid: ${process.getegid()}`); + * } catch (err) { + * console.log(`Failed to set gid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v2.0.0 + * @param id A group name or ID + */ + setegid?: (id: number | string) => void; + /** + * The `process.getgroups()` method returns an array with the supplementary group + * IDs. POSIX leaves it unspecified if the effective group ID is included but + * Node.js ensures it always is. + * + * ```js + * import process from 'node:process'; + * + * if (process.getgroups) { + * console.log(process.getgroups()); // [ 16, 21, 297 ] + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v0.9.4 + */ + getgroups?: () => number[]; + /** + * The `process.setgroups()` method sets the supplementary group IDs for the + * Node.js process. This is a privileged operation that requires the Node.js + * process to have `root` or the `CAP_SETGID` capability. + * + * The `groups` array can contain numeric group IDs, group names, or both. + * + * ```js + * import process from 'node:process'; + * + * if (process.getgroups && process.setgroups) { + * try { + * process.setgroups([501]); + * console.log(process.getgroups()); // new groups + * } catch (err) { + * console.log(`Failed to set groups: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v0.9.4 + */ + setgroups?: (groups: ReadonlyArray) => void; + /** + * The `process.setUncaughtExceptionCaptureCallback()` function sets a function + * that will be invoked when an uncaught exception occurs, which will receive the + * exception value itself as its first argument. + * + * If such a function is set, the `'uncaughtException'` event will + * not be emitted. If `--abort-on-uncaught-exception` was passed from the + * command line or set through `v8.setFlagsFromString()`, the process will + * not abort. Actions configured to take place on exceptions such as report + * generations will be affected too + * + * To unset the capture function, `process.setUncaughtExceptionCaptureCallback(null)` may be used. Calling this + * method with a non-`null` argument while another capture function is set will + * throw an error. + * + * Using this function is mutually exclusive with using the deprecated `domain` built-in module. + * @since v9.3.0 + */ + setUncaughtExceptionCaptureCallback(cb: ((err: Error) => void) | null): void; + /** + * Indicates whether a callback has been set using {@link setUncaughtExceptionCaptureCallback}. + * @since v9.3.0 + */ + hasUncaughtExceptionCaptureCallback(): boolean; + /** + * The `process.sourceMapsEnabled` property returns whether the [Source Map v3](https://sourcemaps.info/spec.html) support for stack traces is enabled. + * @since v20.7.0 + * @experimental + */ + readonly sourceMapsEnabled: boolean; + /** + * This function enables or disables the [Source Map v3](https://sourcemaps.info/spec.html) support for + * stack traces. + * + * It provides same features as launching Node.js process with commandline options `--enable-source-maps`. + * + * Only source maps in JavaScript files that are loaded after source maps has been + * enabled will be parsed and loaded. + * @since v16.6.0, v14.18.0 + * @experimental + */ + setSourceMapsEnabled(value: boolean): void; + /** + * The `process.version` property contains the Node.js version string. + * + * ```js + * import { version } from 'node:process'; + * + * console.log(`Version: ${version}`); + * // Version: v14.8.0 + * ``` + * + * To get the version string without the prepended _v_, use`process.versions.node`. + * @since v0.1.3 + */ + readonly version: string; + /** + * The `process.versions` property returns an object listing the version strings of + * Node.js and its dependencies. `process.versions.modules` indicates the current + * ABI version, which is increased whenever a C++ API changes. Node.js will refuse + * to load modules that were compiled against a different module ABI version. + * + * ```js + * import { versions } from 'node:process'; + * + * console.log(versions); + * ``` + * + * Will generate an object similar to: + * + * ```console + * { node: '20.2.0', + * acorn: '8.8.2', + * ada: '2.4.0', + * ares: '1.19.0', + * base64: '0.5.0', + * brotli: '1.0.9', + * cjs_module_lexer: '1.2.2', + * cldr: '43.0', + * icu: '73.1', + * llhttp: '8.1.0', + * modules: '115', + * napi: '8', + * nghttp2: '1.52.0', + * nghttp3: '0.7.0', + * ngtcp2: '0.8.1', + * openssl: '3.0.8+quic', + * simdutf: '3.2.9', + * tz: '2023c', + * undici: '5.22.0', + * unicode: '15.0', + * uv: '1.44.2', + * uvwasi: '0.0.16', + * v8: '11.3.244.8-node.9', + * zlib: '1.2.13' } + * ``` + * @since v0.2.0 + */ + readonly versions: ProcessVersions; + /** + * The `process.config` property returns a frozen `Object` containing the + * JavaScript representation of the configure options used to compile the current + * Node.js executable. This is the same as the `config.gypi` file that was produced + * when running the `./configure` script. + * + * An example of the possible output looks like: + * + * ```js + * { + * target_defaults: + * { cflags: [], + * default_configuration: 'Release', + * defines: [], + * include_dirs: [], + * libraries: [] }, + * variables: + * { + * host_arch: 'x64', + * napi_build_version: 5, + * node_install_npm: 'true', + * node_prefix: '', + * node_shared_cares: 'false', + * node_shared_http_parser: 'false', + * node_shared_libuv: 'false', + * node_shared_zlib: 'false', + * node_use_openssl: 'true', + * node_shared_openssl: 'false', + * strict_aliasing: 'true', + * target_arch: 'x64', + * v8_use_snapshot: 1 + * } + * } + * ``` + * @since v0.7.7 + */ + readonly config: ProcessConfig; + /** + * The `process.kill()` method sends the `signal` to the process identified by`pid`. + * + * Signal names are strings such as `'SIGINT'` or `'SIGHUP'`. See `Signal Events` and [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for more information. + * + * This method will throw an error if the target `pid` does not exist. As a special + * case, a signal of `0` can be used to test for the existence of a process. + * Windows platforms will throw an error if the `pid` is used to kill a process + * group. + * + * Even though the name of this function is `process.kill()`, it is really just a + * signal sender, like the `kill` system call. The signal sent may do something + * other than kill the target process. + * + * ```js + * import process, { kill } from 'node:process'; + * + * process.on('SIGHUP', () => { + * console.log('Got SIGHUP signal.'); + * }); + * + * setTimeout(() => { + * console.log('Exiting.'); + * process.exit(0); + * }, 100); + * + * kill(process.pid, 'SIGHUP'); + * ``` + * + * When `SIGUSR1` is received by a Node.js process, Node.js will start the + * debugger. See `Signal Events`. + * @since v0.0.6 + * @param pid A process ID + * @param [signal='SIGTERM'] The signal to send, either as a string or number. + */ + kill(pid: number, signal?: string | number): true; + /** + * Loads the environment configuration from a `.env` file into `process.env`. If + * the file is not found, error will be thrown. + * + * To load a specific .env file by specifying its path, use the following code: + * + * ```js + * import { loadEnvFile } from 'node:process'; + * + * loadEnvFile('./development.env') + * ``` + * @since v20.12.0 + * @param path The path to the .env file + */ + loadEnvFile(path?: string | URL | Buffer): void; + /** + * The `process.pid` property returns the PID of the process. + * + * ```js + * import { pid } from 'node:process'; + * + * console.log(`This process is pid ${pid}`); + * ``` + * @since v0.1.15 + */ + readonly pid: number; + /** + * The `process.ppid` property returns the PID of the parent of the + * current process. + * + * ```js + * import { ppid } from 'node:process'; + * + * console.log(`The parent process is pid ${ppid}`); + * ``` + * @since v9.2.0, v8.10.0, v6.13.0 + */ + readonly ppid: number; + /** + * The `process.threadCpuUsage()` method returns the user and system CPU time usage of + * the current worker thread, in an object with properties `user` and `system`, whose + * values are microsecond values (millionth of a second). + * + * The result of a previous call to `process.threadCpuUsage()` can be passed as the + * argument to the function, to get a diff reading. + * @since v23.9.0 + * @param previousValue A previous return value from calling + * `process.threadCpuUsage()` + */ + threadCpuUsage(previousValue?: CpuUsage): CpuUsage; + /** + * The `process.title` property returns the current process title (i.e. returns + * the current value of `ps`). Assigning a new value to `process.title` modifies + * the current value of `ps`. + * + * When a new value is assigned, different platforms will impose different maximum + * length restrictions on the title. Usually such restrictions are quite limited. + * For instance, on Linux and macOS, `process.title` is limited to the size of the + * binary name plus the length of the command-line arguments because setting the `process.title` overwrites the `argv` memory of the process. Node.js v0.8 + * allowed for longer process title strings by also overwriting the `environ` memory but that was potentially insecure and confusing in some (rather obscure) + * cases. + * + * Assigning a value to `process.title` might not result in an accurate label + * within process manager applications such as macOS Activity Monitor or Windows + * Services Manager. + * @since v0.1.104 + */ + title: string; + /** + * The operating system CPU architecture for which the Node.js binary was compiled. + * Possible values are: `'arm'`, `'arm64'`, `'ia32'`, `'loong64'`, `'mips'`, + * `'mipsel'`, `'ppc64'`, `'riscv64'`, `'s390x'`, and `'x64'`. + * + * ```js + * import { arch } from 'node:process'; + * + * console.log(`This processor architecture is ${arch}`); + * ``` + * @since v0.5.0 + */ + readonly arch: Architecture; + /** + * The `process.platform` property returns a string identifying the operating + * system platform for which the Node.js binary was compiled. + * + * Currently possible values are: + * + * * `'aix'` + * * `'darwin'` + * * `'freebsd'` + * * `'linux'` + * * `'openbsd'` + * * `'sunos'` + * * `'win32'` + * + * ```js + * import { platform } from 'node:process'; + * + * console.log(`This platform is ${platform}`); + * ``` + * + * The value `'android'` may also be returned if the Node.js is built on the + * Android operating system. However, Android support in Node.js [is experimental](https://github.com/nodejs/node/blob/HEAD/BUILDING.md#androidandroid-based-devices-eg-firefox-os). + * @since v0.1.16 + */ + readonly platform: Platform; + /** + * The `process.mainModule` property provides an alternative way of retrieving `require.main`. The difference is that if the main module changes at + * runtime, `require.main` may still refer to the original main module in + * modules that were required before the change occurred. Generally, it's + * safe to assume that the two refer to the same module. + * + * As with `require.main`, `process.mainModule` will be `undefined` if there + * is no entry script. + * @since v0.1.17 + * @deprecated Since v14.0.0 - Use `main` instead. + */ + mainModule?: Module | undefined; + memoryUsage: MemoryUsageFn; + /** + * Gets the amount of memory available to the process (in bytes) based on + * limits imposed by the OS. If there is no such constraint, or the constraint + * is unknown, `0` is returned. + * + * See [`uv_get_constrained_memory`](https://docs.libuv.org/en/v1.x/misc.html#c.uv_get_constrained_memory) for more + * information. + * @since v19.6.0, v18.15.0 + */ + constrainedMemory(): number; + /** + * Gets the amount of free memory that is still available to the process (in bytes). + * See [`uv_get_available_memory`](https://nodejs.org/docs/latest-v24.x/api/process.html#processavailablememory) for more information. + * @since v20.13.0 + */ + availableMemory(): number; + /** + * The `process.cpuUsage()` method returns the user and system CPU time usage of + * the current process, in an object with properties `user` and `system`, whose + * values are microsecond values (millionth of a second). These values measure time + * spent in user and system code respectively, and may end up being greater than + * actual elapsed time if multiple CPU cores are performing work for this process. + * + * The result of a previous call to `process.cpuUsage()` can be passed as the + * argument to the function, to get a diff reading. + * + * ```js + * import { cpuUsage } from 'node:process'; + * + * const startUsage = cpuUsage(); + * // { user: 38579, system: 6986 } + * + * // spin the CPU for 500 milliseconds + * const now = Date.now(); + * while (Date.now() - now < 500); + * + * console.log(cpuUsage(startUsage)); + * // { user: 514883, system: 11226 } + * ``` + * @since v6.1.0 + * @param previousValue A previous return value from calling `process.cpuUsage()` + */ + cpuUsage(previousValue?: CpuUsage): CpuUsage; + /** + * `process.nextTick()` adds `callback` to the "next tick queue". This queue is + * fully drained after the current operation on the JavaScript stack runs to + * completion and before the event loop is allowed to continue. It's possible to + * create an infinite loop if one were to recursively call `process.nextTick()`. + * See the [Event Loop](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#process-nexttick) guide for more background. + * + * ```js + * import { nextTick } from 'node:process'; + * + * console.log('start'); + * nextTick(() => { + * console.log('nextTick callback'); + * }); + * console.log('scheduled'); + * // Output: + * // start + * // scheduled + * // nextTick callback + * ``` + * + * This is important when developing APIs in order to give users the opportunity + * to assign event handlers _after_ an object has been constructed but before any + * I/O has occurred: + * + * ```js + * import { nextTick } from 'node:process'; + * + * function MyThing(options) { + * this.setupOptions(options); + * + * nextTick(() => { + * this.startDoingStuff(); + * }); + * } + * + * const thing = new MyThing(); + * thing.getReadyForStuff(); + * + * // thing.startDoingStuff() gets called now, not before. + * ``` + * + * It is very important for APIs to be either 100% synchronous or 100% + * asynchronous. Consider this example: + * + * ```js + * // WARNING! DO NOT USE! BAD UNSAFE HAZARD! + * function maybeSync(arg, cb) { + * if (arg) { + * cb(); + * return; + * } + * + * fs.stat('file', cb); + * } + * ``` + * + * This API is hazardous because in the following case: + * + * ```js + * const maybeTrue = Math.random() > 0.5; + * + * maybeSync(maybeTrue, () => { + * foo(); + * }); + * + * bar(); + * ``` + * + * It is not clear whether `foo()` or `bar()` will be called first. + * + * The following approach is much better: + * + * ```js + * import { nextTick } from 'node:process'; + * + * function definitelyAsync(arg, cb) { + * if (arg) { + * nextTick(cb); + * return; + * } + * + * fs.stat('file', cb); + * } + * ``` + * @since v0.1.26 + * @param args Additional arguments to pass when invoking the `callback` + */ + nextTick(callback: Function, ...args: any[]): void; + /** + * This API is available through the [--permission](https://nodejs.org/api/cli.html#--permission) flag. + * + * `process.permission` is an object whose methods are used to manage permissions for the current process. + * Additional documentation is available in the [Permission Model](https://nodejs.org/api/permissions.html#permission-model). + * @since v20.0.0 + */ + permission: ProcessPermission; + /** + * The `process.release` property returns an `Object` containing metadata related + * to the current release, including URLs for the source tarball and headers-only + * tarball. + * + * `process.release` contains the following properties: + * + * ```js + * { + * name: 'node', + * lts: 'Hydrogen', + * sourceUrl: 'https://nodejs.org/download/release/v18.12.0/node-v18.12.0.tar.gz', + * headersUrl: 'https://nodejs.org/download/release/v18.12.0/node-v18.12.0-headers.tar.gz', + * libUrl: 'https://nodejs.org/download/release/v18.12.0/win-x64/node.lib' + * } + * ``` + * + * In custom builds from non-release versions of the source tree, only the `name` property may be present. The additional properties should not be + * relied upon to exist. + * @since v3.0.0 + */ + readonly release: ProcessRelease; + readonly features: ProcessFeatures; + /** + * `process.umask()` returns the Node.js process's file mode creation mask. Child + * processes inherit the mask from the parent process. + * @since v0.1.19 + * @deprecated Calling `process.umask()` with no argument causes the process-wide umask to be written twice. This introduces a race condition between threads, and is a potential + * security vulnerability. There is no safe, cross-platform alternative API. + */ + umask(): number; + /** + * Can only be set if not in worker thread. + */ + umask(mask: string | number): number; + /** + * The `process.uptime()` method returns the number of seconds the current Node.js + * process has been running. + * + * The return value includes fractions of a second. Use `Math.floor()` to get whole + * seconds. + * @since v0.5.0 + */ + uptime(): number; + hrtime: HRTime; + /** + * If the Node.js process was spawned with an IPC channel, the process.channel property is a reference to the IPC channel. + * If no IPC channel exists, this property is undefined. + * @since v7.1.0 + */ + channel?: { + /** + * This method makes the IPC channel keep the event loop of the process running if .unref() has been called before. + * @since v7.1.0 + */ + ref(): void; + /** + * This method makes the IPC channel not keep the event loop of the process running, and lets it finish even while the channel is open. + * @since v7.1.0 + */ + unref(): void; + }; + /** + * If Node.js is spawned with an IPC channel, the `process.send()` method can be + * used to send messages to the parent process. Messages will be received as a `'message'` event on the parent's `ChildProcess` object. + * + * If Node.js was not spawned with an IPC channel, `process.send` will be `undefined`. + * + * The message goes through serialization and parsing. The resulting message might + * not be the same as what is originally sent. + * @since v0.5.9 + * @param options used to parameterize the sending of certain types of handles. `options` supports the following properties: + */ + send?( + message: any, + sendHandle?: any, + options?: { + keepOpen?: boolean | undefined; + }, + callback?: (error: Error | null) => void, + ): boolean; + /** + * If the Node.js process is spawned with an IPC channel (see the `Child Process` and `Cluster` documentation), the `process.disconnect()` method will close the + * IPC channel to the parent process, allowing the child process to exit gracefully + * once there are no other connections keeping it alive. + * + * The effect of calling `process.disconnect()` is the same as calling `ChildProcess.disconnect()` from the parent process. + * + * If the Node.js process was not spawned with an IPC channel, `process.disconnect()` will be `undefined`. + * @since v0.7.2 + */ + disconnect(): void; + /** + * If the Node.js process is spawned with an IPC channel (see the `Child Process` and `Cluster` documentation), the `process.connected` property will return `true` so long as the IPC + * channel is connected and will return `false` after `process.disconnect()` is called. + * + * Once `process.connected` is `false`, it is no longer possible to send messages + * over the IPC channel using `process.send()`. + * @since v0.7.2 + */ + connected: boolean; + /** + * The `process.allowedNodeEnvironmentFlags` property is a special, + * read-only `Set` of flags allowable within the `NODE_OPTIONS` environment variable. + * + * `process.allowedNodeEnvironmentFlags` extends `Set`, but overrides `Set.prototype.has` to recognize several different possible flag + * representations. `process.allowedNodeEnvironmentFlags.has()` will + * return `true` in the following cases: + * + * * Flags may omit leading single (`-`) or double (`--`) dashes; e.g., `inspect-brk` for `--inspect-brk`, or `r` for `-r`. + * * Flags passed through to V8 (as listed in `--v8-options`) may replace + * one or more _non-leading_ dashes for an underscore, or vice-versa; + * e.g., `--perf_basic_prof`, `--perf-basic-prof`, `--perf_basic-prof`, + * etc. + * * Flags may contain one or more equals (`=`) characters; all + * characters after and including the first equals will be ignored; + * e.g., `--stack-trace-limit=100`. + * * Flags _must_ be allowable within `NODE_OPTIONS`. + * + * When iterating over `process.allowedNodeEnvironmentFlags`, flags will + * appear only _once_; each will begin with one or more dashes. Flags + * passed through to V8 will contain underscores instead of non-leading + * dashes: + * + * ```js + * import { allowedNodeEnvironmentFlags } from 'node:process'; + * + * allowedNodeEnvironmentFlags.forEach((flag) => { + * // -r + * // --inspect-brk + * // --abort_on_uncaught_exception + * // ... + * }); + * ``` + * + * The methods `add()`, `clear()`, and `delete()` of`process.allowedNodeEnvironmentFlags` do nothing, and will fail + * silently. + * + * If Node.js was compiled _without_ `NODE_OPTIONS` support (shown in {@link config}), `process.allowedNodeEnvironmentFlags` will + * contain what _would have_ been allowable. + * @since v10.10.0 + */ + allowedNodeEnvironmentFlags: ReadonlySet; + /** + * `process.report` is an object whose methods are used to generate diagnostic reports for the current process. + * Additional documentation is available in the [report documentation](https://nodejs.org/docs/latest-v24.x/api/report.html). + * @since v11.8.0 + */ + report: ProcessReport; + /** + * ```js + * import { resourceUsage } from 'node:process'; + * + * console.log(resourceUsage()); + * /* + * Will output: + * { + * userCPUTime: 82872, + * systemCPUTime: 4143, + * maxRSS: 33164, + * sharedMemorySize: 0, + * unsharedDataSize: 0, + * unsharedStackSize: 0, + * minorPageFault: 2469, + * majorPageFault: 0, + * swappedOut: 0, + * fsRead: 0, + * fsWrite: 8, + * ipcSent: 0, + * ipcReceived: 0, + * signalsCount: 0, + * voluntaryContextSwitches: 79, + * involuntaryContextSwitches: 1 + * } + * + * ``` + * @since v12.6.0 + * @return the resource usage for the current process. All of these values come from the `uv_getrusage` call which returns a [`uv_rusage_t` struct][uv_rusage_t]. + */ + resourceUsage(): ResourceUsage; + /** + * The initial value of `process.throwDeprecation` indicates whether the `--throw-deprecation` flag is set on the current Node.js process. `process.throwDeprecation` + * is mutable, so whether or not deprecation warnings result in errors may be altered at runtime. See the documentation for the 'warning' event and the emitWarning() + * method for more information. + * + * ```bash + * $ node --throw-deprecation -p "process.throwDeprecation" + * true + * $ node -p "process.throwDeprecation" + * undefined + * $ node + * > process.emitWarning('test', 'DeprecationWarning'); + * undefined + * > (node:26598) DeprecationWarning: test + * > process.throwDeprecation = true; + * true + * > process.emitWarning('test', 'DeprecationWarning'); + * Thrown: + * [DeprecationWarning: test] { name: 'DeprecationWarning' } + * ``` + * @since v0.9.12 + */ + throwDeprecation: boolean; + /** + * The `process.traceDeprecation` property indicates whether the `--trace-deprecation` flag is set on the current Node.js process. See the + * documentation for the `'warning' event` and the `emitWarning() method` for more information about this + * flag's behavior. + * @since v0.8.0 + */ + traceDeprecation: boolean; + /** + * An object is "refable" if it implements the Node.js "Refable protocol". + * Specifically, this means that the object implements the `Symbol.for('nodejs.ref')` + * and `Symbol.for('nodejs.unref')` methods. "Ref'd" objects will keep the Node.js + * event loop alive, while "unref'd" objects will not. Historically, this was + * implemented by using `ref()` and `unref()` methods directly on the objects. + * This pattern, however, is being deprecated in favor of the "Refable protocol" + * in order to better support Web Platform API types whose APIs cannot be modified + * to add `ref()` and `unref()` methods but still need to support that behavior. + * @since v22.14.0 + * @experimental + * @param maybeRefable An object that may be "refable". + */ + ref(maybeRefable: any): void; + /** + * An object is "unrefable" if it implements the Node.js "Refable protocol". + * Specifically, this means that the object implements the `Symbol.for('nodejs.ref')` + * and `Symbol.for('nodejs.unref')` methods. "Ref'd" objects will keep the Node.js + * event loop alive, while "unref'd" objects will not. Historically, this was + * implemented by using `ref()` and `unref()` methods directly on the objects. + * This pattern, however, is being deprecated in favor of the "Refable protocol" + * in order to better support Web Platform API types whose APIs cannot be modified + * to add `ref()` and `unref()` methods but still need to support that behavior. + * @since v22.14.0 + * @experimental + * @param maybeRefable An object that may be "unref'd". + */ + unref(maybeRefable: any): void; + /** + * Replaces the current process with a new process. + * + * This is achieved by using the `execve` POSIX function and therefore no memory or other + * resources from the current process are preserved, except for the standard input, + * standard output and standard error file descriptor. + * + * All other resources are discarded by the system when the processes are swapped, without triggering + * any exit or close events and without running any cleanup handler. + * + * This function will never return, unless an error occurred. + * + * This function is not available on Windows or IBM i. + * @since v22.15.0 + * @experimental + * @param file The name or path of the executable file to run. + * @param args List of string arguments. No argument can contain a null-byte (`\u0000`). + * @param env Environment key-value pairs. + * No key or value can contain a null-byte (`\u0000`). + * **Default:** `process.env`. + */ + execve?(file: string, args?: readonly string[], env?: ProcessEnv): never; + /* EventEmitter */ + addListener(event: "beforeExit", listener: BeforeExitListener): this; + addListener(event: "disconnect", listener: DisconnectListener): this; + addListener(event: "exit", listener: ExitListener): this; + addListener(event: "rejectionHandled", listener: RejectionHandledListener): this; + addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; + addListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + addListener(event: "warning", listener: WarningListener): this; + addListener(event: "message", listener: MessageListener): this; + addListener(event: Signals, listener: SignalsListener): this; + addListener(event: "multipleResolves", listener: MultipleResolveListener): this; + addListener(event: "worker", listener: WorkerListener): this; + emit(event: "beforeExit", code: number): boolean; + emit(event: "disconnect"): boolean; + emit(event: "exit", code: number): boolean; + emit(event: "rejectionHandled", promise: Promise): boolean; + emit(event: "uncaughtException", error: Error): boolean; + emit(event: "uncaughtExceptionMonitor", error: Error): boolean; + emit(event: "unhandledRejection", reason: unknown, promise: Promise): boolean; + emit(event: "warning", warning: Error): boolean; + emit(event: "message", message: unknown, sendHandle: unknown): this; + emit(event: Signals, signal?: Signals): boolean; + emit( + event: "multipleResolves", + type: MultipleResolveType, + promise: Promise, + value: unknown, + ): this; + emit(event: "worker", listener: WorkerListener): this; + on(event: "beforeExit", listener: BeforeExitListener): this; + on(event: "disconnect", listener: DisconnectListener): this; + on(event: "exit", listener: ExitListener): this; + on(event: "rejectionHandled", listener: RejectionHandledListener): this; + on(event: "uncaughtException", listener: UncaughtExceptionListener): this; + on(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + on(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + on(event: "warning", listener: WarningListener): this; + on(event: "message", listener: MessageListener): this; + on(event: Signals, listener: SignalsListener): this; + on(event: "multipleResolves", listener: MultipleResolveListener): this; + on(event: "worker", listener: WorkerListener): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "beforeExit", listener: BeforeExitListener): this; + once(event: "disconnect", listener: DisconnectListener): this; + once(event: "exit", listener: ExitListener): this; + once(event: "rejectionHandled", listener: RejectionHandledListener): this; + once(event: "uncaughtException", listener: UncaughtExceptionListener): this; + once(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + once(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + once(event: "warning", listener: WarningListener): this; + once(event: "message", listener: MessageListener): this; + once(event: Signals, listener: SignalsListener): this; + once(event: "multipleResolves", listener: MultipleResolveListener): this; + once(event: "worker", listener: WorkerListener): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "beforeExit", listener: BeforeExitListener): this; + prependListener(event: "disconnect", listener: DisconnectListener): this; + prependListener(event: "exit", listener: ExitListener): this; + prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this; + prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; + prependListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + prependListener(event: "warning", listener: WarningListener): this; + prependListener(event: "message", listener: MessageListener): this; + prependListener(event: Signals, listener: SignalsListener): this; + prependListener(event: "multipleResolves", listener: MultipleResolveListener): this; + prependListener(event: "worker", listener: WorkerListener): this; + prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this; + prependOnceListener(event: "disconnect", listener: DisconnectListener): this; + prependOnceListener(event: "exit", listener: ExitListener): this; + prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this; + prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; + prependOnceListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + prependOnceListener(event: "warning", listener: WarningListener): this; + prependOnceListener(event: "message", listener: MessageListener): this; + prependOnceListener(event: Signals, listener: SignalsListener): this; + prependOnceListener(event: "multipleResolves", listener: MultipleResolveListener): this; + prependOnceListener(event: "worker", listener: WorkerListener): this; + listeners(event: "beforeExit"): BeforeExitListener[]; + listeners(event: "disconnect"): DisconnectListener[]; + listeners(event: "exit"): ExitListener[]; + listeners(event: "rejectionHandled"): RejectionHandledListener[]; + listeners(event: "uncaughtException"): UncaughtExceptionListener[]; + listeners(event: "uncaughtExceptionMonitor"): UncaughtExceptionListener[]; + listeners(event: "unhandledRejection"): UnhandledRejectionListener[]; + listeners(event: "warning"): WarningListener[]; + listeners(event: "message"): MessageListener[]; + listeners(event: Signals): SignalsListener[]; + listeners(event: "multipleResolves"): MultipleResolveListener[]; + listeners(event: "worker"): WorkerListener[]; + } + } + } + export = process; +} +declare module "node:process" { + import process = require("process"); + export = process; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/punycode.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/punycode.d.ts.html new file mode 100644 index 0000000..7ac26c8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/punycode.d.ts.html @@ -0,0 +1,117 @@ +/** + * **The version of the punycode module bundled in Node.js is being deprecated. **In a future major version of Node.js this module will be removed. Users + * currently depending on the `punycode` module should switch to using the + * userland-provided [Punycode.js](https://github.com/bestiejs/punycode.js) module instead. For punycode-based URL + * encoding, see `url.domainToASCII` or, more generally, the `WHATWG URL API`. + * + * The `punycode` module is a bundled version of the [Punycode.js](https://github.com/bestiejs/punycode.js) module. It + * can be accessed using: + * + * ```js + * import punycode from 'node:punycode'; + * ``` + * + * [Punycode](https://tools.ietf.org/html/rfc3492) is a character encoding scheme defined by RFC 3492 that is + * primarily intended for use in Internationalized Domain Names. Because host + * names in URLs are limited to ASCII characters only, Domain Names that contain + * non-ASCII characters must be converted into ASCII using the Punycode scheme. + * For instance, the Japanese character that translates into the English word, `'example'` is `'例'`. The Internationalized Domain Name, `'例.com'` (equivalent + * to `'example.com'`) is represented by Punycode as the ASCII string `'xn--fsq.com'`. + * + * The `punycode` module provides a simple implementation of the Punycode standard. + * + * The `punycode` module is a third-party dependency used by Node.js and + * made available to developers as a convenience. Fixes or other modifications to + * the module must be directed to the [Punycode.js](https://github.com/bestiejs/punycode.js) project. + * @deprecated Since v7.0.0 - Deprecated + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/punycode.js) + */ +declare module "punycode" { + /** + * The `punycode.decode()` method converts a [Punycode](https://tools.ietf.org/html/rfc3492) string of ASCII-only + * characters to the equivalent string of Unicode codepoints. + * + * ```js + * punycode.decode('maana-pta'); // 'mañana' + * punycode.decode('--dqo34k'); // '☃-⌘' + * ``` + * @since v0.5.1 + */ + function decode(string: string): string; + /** + * The `punycode.encode()` method converts a string of Unicode codepoints to a [Punycode](https://tools.ietf.org/html/rfc3492) string of ASCII-only characters. + * + * ```js + * punycode.encode('mañana'); // 'maana-pta' + * punycode.encode('☃-⌘'); // '--dqo34k' + * ``` + * @since v0.5.1 + */ + function encode(string: string): string; + /** + * The `punycode.toUnicode()` method converts a string representing a domain name + * containing [Punycode](https://tools.ietf.org/html/rfc3492) encoded characters into Unicode. Only the [Punycode](https://tools.ietf.org/html/rfc3492) encoded parts of the domain name are be + * converted. + * + * ```js + * // decode domain names + * punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com' + * punycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com' + * punycode.toUnicode('example.com'); // 'example.com' + * ``` + * @since v0.6.1 + */ + function toUnicode(domain: string): string; + /** + * The `punycode.toASCII()` method converts a Unicode string representing an + * Internationalized Domain Name to [Punycode](https://tools.ietf.org/html/rfc3492). Only the non-ASCII parts of the + * domain name will be converted. Calling `punycode.toASCII()` on a string that + * already only contains ASCII characters will have no effect. + * + * ```js + * // encode domain names + * punycode.toASCII('mañana.com'); // 'xn--maana-pta.com' + * punycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com' + * punycode.toASCII('example.com'); // 'example.com' + * ``` + * @since v0.6.1 + */ + function toASCII(domain: string): string; + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + const ucs2: ucs2; + interface ucs2 { + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + decode(string: string): number[]; + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + encode(codePoints: readonly number[]): string; + } + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + const version: string; +} +declare module "node:punycode" { + export * from "punycode"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/querystring.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/querystring.d.ts.html new file mode 100644 index 0000000..aaeefe8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/querystring.d.ts.html @@ -0,0 +1,152 @@ +/** + * The `node:querystring` module provides utilities for parsing and formatting URL + * query strings. It can be accessed using: + * + * ```js + * import querystring from 'node:querystring'; + * ``` + * + * `querystring` is more performant than `URLSearchParams` but is not a + * standardized API. Use `URLSearchParams` when performance is not critical or + * when compatibility with browser code is desirable. + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/querystring.js) + */ +declare module "querystring" { + interface StringifyOptions { + /** + * The function to use when converting URL-unsafe characters to percent-encoding in the query string. + * @default `querystring.escape()` + */ + encodeURIComponent?: ((str: string) => string) | undefined; + } + interface ParseOptions { + /** + * Specifies the maximum number of keys to parse. Specify `0` to remove key counting limitations. + * @default 1000 + */ + maxKeys?: number | undefined; + /** + * The function to use when decoding percent-encoded characters in the query string. + * @default `querystring.unescape()` + */ + decodeURIComponent?: ((str: string) => string) | undefined; + } + interface ParsedUrlQuery extends NodeJS.Dict {} + interface ParsedUrlQueryInput extends + NodeJS.Dict< + | string + | number + | boolean + | bigint + | ReadonlyArray + | null + > + {} + /** + * The `querystring.stringify()` method produces a URL query string from a + * given `obj` by iterating through the object's "own properties". + * + * It serializes the following types of values passed in `obj`: [string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | + * [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | + * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) | + * [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) | + * [string\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | + * [number\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | + * [bigint\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) | + * [boolean\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) The numeric values must be finite. Any other input values will be coerced to + * empty strings. + * + * ```js + * querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }); + * // Returns 'foo=bar&baz=qux&baz=quux&corge=' + * + * querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':'); + * // Returns 'foo:bar;baz:qux' + * ``` + * + * By default, characters requiring percent-encoding within the query string will + * be encoded as UTF-8\. If an alternative encoding is required, then an alternative `encodeURIComponent` option will need to be specified: + * + * ```js + * // Assuming gbkEncodeURIComponent function already exists, + * + * querystring.stringify({ w: '中文', foo: 'bar' }, null, null, + * { encodeURIComponent: gbkEncodeURIComponent }); + * ``` + * @since v0.1.25 + * @param obj The object to serialize into a URL query string + * @param [sep='&'] The substring used to delimit key and value pairs in the query string. + * @param [eq='='] . The substring used to delimit keys and values in the query string. + */ + function stringify(obj?: ParsedUrlQueryInput, sep?: string, eq?: string, options?: StringifyOptions): string; + /** + * The `querystring.parse()` method parses a URL query string (`str`) into a + * collection of key and value pairs. + * + * For example, the query string `'foo=bar&abc=xyz&abc=123'` is parsed into: + * + * ```json + * { + * "foo": "bar", + * "abc": ["xyz", "123"] + * } + * ``` + * + * The object returned by the `querystring.parse()` method _does not_ prototypically inherit from the JavaScript `Object`. This means that typical `Object` methods such as `obj.toString()`, + * `obj.hasOwnProperty()`, and others + * are not defined and _will not work_. + * + * By default, percent-encoded characters within the query string will be assumed + * to use UTF-8 encoding. If an alternative character encoding is used, then an + * alternative `decodeURIComponent` option will need to be specified: + * + * ```js + * // Assuming gbkDecodeURIComponent function already exists... + * + * querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null, + * { decodeURIComponent: gbkDecodeURIComponent }); + * ``` + * @since v0.1.25 + * @param str The URL query string to parse + * @param [sep='&'] The substring used to delimit key and value pairs in the query string. + * @param [eq='='] The substring used to delimit keys and values in the query string. + */ + function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery; + /** + * The querystring.encode() function is an alias for querystring.stringify(). + */ + const encode: typeof stringify; + /** + * The querystring.decode() function is an alias for querystring.parse(). + */ + const decode: typeof parse; + /** + * The `querystring.escape()` method performs URL percent-encoding on the given `str` in a manner that is optimized for the specific requirements of URL + * query strings. + * + * The `querystring.escape()` method is used by `querystring.stringify()` and is + * generally not expected to be used directly. It is exported primarily to allow + * application code to provide a replacement percent-encoding implementation if + * necessary by assigning `querystring.escape` to an alternative function. + * @since v0.1.25 + */ + function escape(str: string): string; + /** + * The `querystring.unescape()` method performs decoding of URL percent-encoded + * characters on the given `str`. + * + * The `querystring.unescape()` method is used by `querystring.parse()` and is + * generally not expected to be used directly. It is exported primarily to allow + * application code to provide a replacement decoding implementation if + * necessary by assigning `querystring.unescape` to an alternative function. + * + * By default, the `querystring.unescape()` method will attempt to use the + * JavaScript built-in `decodeURIComponent()` method to decode. If that fails, + * a safer equivalent that does not throw on malformed URLs will be used. + * @since v0.1.25 + */ + function unescape(str: string): string; +} +declare module "node:querystring" { + export * from "querystring"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/readline.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/readline.d.ts.html new file mode 100644 index 0000000..519b4a4 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/readline.d.ts.html @@ -0,0 +1,594 @@ +/** + * The `node:readline` module provides an interface for reading data from a [Readable](https://nodejs.org/docs/latest-v24.x/api/stream.html#readable-streams) stream + * (such as [`process.stdin`](https://nodejs.org/docs/latest-v24.x/api/process.html#processstdin)) one line at a time. + * + * To use the promise-based APIs: + * + * ```js + * import * as readline from 'node:readline/promises'; + * ``` + * + * To use the callback and sync APIs: + * + * ```js + * import * as readline from 'node:readline'; + * ``` + * + * The following simple example illustrates the basic use of the `node:readline` module. + * + * ```js + * import * as readline from 'node:readline/promises'; + * import { stdin as input, stdout as output } from 'node:process'; + * + * const rl = readline.createInterface({ input, output }); + * + * const answer = await rl.question('What do you think of Node.js? '); + * + * console.log(`Thank you for your valuable feedback: ${answer}`); + * + * rl.close(); + * ``` + * + * Once this code is invoked, the Node.js application will not terminate until the `readline.Interface` is closed because the interface waits for data to be + * received on the `input` stream. + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/readline.js) + */ +declare module "readline" { + import { Abortable, EventEmitter } from "node:events"; + import * as promises from "node:readline/promises"; + export { promises }; + export interface Key { + sequence?: string | undefined; + name?: string | undefined; + ctrl?: boolean | undefined; + meta?: boolean | undefined; + shift?: boolean | undefined; + } + /** + * Instances of the `readline.Interface` class are constructed using the `readline.createInterface()` method. Every instance is associated with a + * single `input` [Readable](https://nodejs.org/docs/latest-v24.x/api/stream.html#readable-streams) stream and a single `output` [Writable](https://nodejs.org/docs/latest-v24.x/api/stream.html#writable-streams) stream. + * The `output` stream is used to print prompts for user input that arrives on, + * and is read from, the `input` stream. + * @since v0.1.104 + */ + export class Interface extends EventEmitter implements Disposable { + readonly terminal: boolean; + /** + * The current input data being processed by node. + * + * This can be used when collecting input from a TTY stream to retrieve the + * current value that has been processed thus far, prior to the `line` event + * being emitted. Once the `line` event has been emitted, this property will + * be an empty string. + * + * Be aware that modifying the value during the instance runtime may have + * unintended consequences if `rl.cursor` is not also controlled. + * + * **If not using a TTY stream for input, use the `'line'` event.** + * + * One possible use case would be as follows: + * + * ```js + * const values = ['lorem ipsum', 'dolor sit amet']; + * const rl = readline.createInterface(process.stdin); + * const showResults = debounce(() => { + * console.log( + * '\n', + * values.filter((val) => val.startsWith(rl.line)).join(' '), + * ); + * }, 300); + * process.stdin.on('keypress', (c, k) => { + * showResults(); + * }); + * ``` + * @since v0.1.98 + */ + readonly line: string; + /** + * The cursor position relative to `rl.line`. + * + * This will track where the current cursor lands in the input string, when + * reading input from a TTY stream. The position of cursor determines the + * portion of the input string that will be modified as input is processed, + * as well as the column where the terminal caret will be rendered. + * @since v0.1.98 + */ + readonly cursor: number; + /** + * NOTE: According to the documentation: + * + * > Instances of the `readline.Interface` class are constructed using the + * > `readline.createInterface()` method. + * + * @see https://nodejs.org/dist/latest-v24.x/docs/api/readline.html#class-interfaceconstructor + */ + protected constructor( + input: NodeJS.ReadableStream, + output?: NodeJS.WritableStream, + completer?: Completer | AsyncCompleter, + terminal?: boolean, + ); + /** + * NOTE: According to the documentation: + * + * > Instances of the `readline.Interface` class are constructed using the + * > `readline.createInterface()` method. + * + * @see https://nodejs.org/dist/latest-v24.x/docs/api/readline.html#class-interfaceconstructor + */ + protected constructor(options: ReadLineOptions); + /** + * The `rl.getPrompt()` method returns the current prompt used by `rl.prompt()`. + * @since v15.3.0, v14.17.0 + * @return the current prompt string + */ + getPrompt(): string; + /** + * The `rl.setPrompt()` method sets the prompt that will be written to `output` whenever `rl.prompt()` is called. + * @since v0.1.98 + */ + setPrompt(prompt: string): void; + /** + * The `rl.prompt()` method writes the `Interface` instances configured`prompt` to a new line in `output` in order to provide a user with a new + * location at which to provide input. + * + * When called, `rl.prompt()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or `undefined` the prompt is not written. + * @since v0.1.98 + * @param preserveCursor If `true`, prevents the cursor placement from being reset to `0`. + */ + prompt(preserveCursor?: boolean): void; + /** + * The `rl.question()` method displays the `query` by writing it to the `output`, + * waits for user input to be provided on `input`, then invokes the `callback` function passing the provided input as the first argument. + * + * When called, `rl.question()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or `undefined` the `query` is not written. + * + * The `callback` function passed to `rl.question()` does not follow the typical + * pattern of accepting an `Error` object or `null` as the first argument. + * The `callback` is called with the provided answer as the only argument. + * + * An error will be thrown if calling `rl.question()` after `rl.close()`. + * + * Example usage: + * + * ```js + * rl.question('What is your favorite food? ', (answer) => { + * console.log(`Oh, so your favorite food is ${answer}`); + * }); + * ``` + * + * Using an `AbortController` to cancel a question. + * + * ```js + * const ac = new AbortController(); + * const signal = ac.signal; + * + * rl.question('What is your favorite food? ', { signal }, (answer) => { + * console.log(`Oh, so your favorite food is ${answer}`); + * }); + * + * signal.addEventListener('abort', () => { + * console.log('The food question timed out'); + * }, { once: true }); + * + * setTimeout(() => ac.abort(), 10000); + * ``` + * @since v0.3.3 + * @param query A statement or query to write to `output`, prepended to the prompt. + * @param callback A callback function that is invoked with the user's input in response to the `query`. + */ + question(query: string, callback: (answer: string) => void): void; + question(query: string, options: Abortable, callback: (answer: string) => void): void; + /** + * The `rl.pause()` method pauses the `input` stream, allowing it to be resumed + * later if necessary. + * + * Calling `rl.pause()` does not immediately pause other events (including `'line'`) from being emitted by the `Interface` instance. + * @since v0.3.4 + */ + pause(): this; + /** + * The `rl.resume()` method resumes the `input` stream if it has been paused. + * @since v0.3.4 + */ + resume(): this; + /** + * The `rl.close()` method closes the `Interface` instance and + * relinquishes control over the `input` and `output` streams. When called, + * the `'close'` event will be emitted. + * + * Calling `rl.close()` does not immediately stop other events (including `'line'`) + * from being emitted by the `Interface` instance. + * @since v0.1.98 + */ + close(): void; + /** + * Alias for `rl.close()`. + * @since v22.15.0 + */ + [Symbol.dispose](): void; + /** + * The `rl.write()` method will write either `data` or a key sequence identified + * by `key` to the `output`. The `key` argument is supported only if `output` is + * a `TTY` text terminal. See `TTY keybindings` for a list of key + * combinations. + * + * If `key` is specified, `data` is ignored. + * + * When called, `rl.write()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or `undefined` the `data` and `key` are not written. + * + * ```js + * rl.write('Delete this!'); + * // Simulate Ctrl+U to delete the line written previously + * rl.write(null, { ctrl: true, name: 'u' }); + * ``` + * + * The `rl.write()` method will write the data to the `readline` `Interface`'s `input` _as if it were provided by the user_. + * @since v0.1.98 + */ + write(data: string | Buffer, key?: Key): void; + write(data: undefined | null | string | Buffer, key: Key): void; + /** + * Returns the real position of the cursor in relation to the input + * prompt + string. Long input (wrapping) strings, as well as multiple + * line prompts are included in the calculations. + * @since v13.5.0, v12.16.0 + */ + getCursorPos(): CursorPos; + /** + * events.EventEmitter + * 1. close + * 2. line + * 3. pause + * 4. resume + * 5. SIGCONT + * 6. SIGINT + * 7. SIGTSTP + * 8. history + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "line", listener: (input: string) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "SIGCONT", listener: () => void): this; + addListener(event: "SIGINT", listener: () => void): this; + addListener(event: "SIGTSTP", listener: () => void): this; + addListener(event: "history", listener: (history: string[]) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "line", input: string): boolean; + emit(event: "pause"): boolean; + emit(event: "resume"): boolean; + emit(event: "SIGCONT"): boolean; + emit(event: "SIGINT"): boolean; + emit(event: "SIGTSTP"): boolean; + emit(event: "history", history: string[]): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "line", listener: (input: string) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "SIGCONT", listener: () => void): this; + on(event: "SIGINT", listener: () => void): this; + on(event: "SIGTSTP", listener: () => void): this; + on(event: "history", listener: (history: string[]) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "line", listener: (input: string) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "SIGCONT", listener: () => void): this; + once(event: "SIGINT", listener: () => void): this; + once(event: "SIGTSTP", listener: () => void): this; + once(event: "history", listener: (history: string[]) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "line", listener: (input: string) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "SIGCONT", listener: () => void): this; + prependListener(event: "SIGINT", listener: () => void): this; + prependListener(event: "SIGTSTP", listener: () => void): this; + prependListener(event: "history", listener: (history: string[]) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "line", listener: (input: string) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "SIGCONT", listener: () => void): this; + prependOnceListener(event: "SIGINT", listener: () => void): this; + prependOnceListener(event: "SIGTSTP", listener: () => void): this; + prependOnceListener(event: "history", listener: (history: string[]) => void): this; + [Symbol.asyncIterator](): NodeJS.AsyncIterator; + } + export type ReadLine = Interface; // type forwarded for backwards compatibility + export type Completer = (line: string) => CompleterResult; + export type AsyncCompleter = ( + line: string, + callback: (err?: null | Error, result?: CompleterResult) => void, + ) => void; + export type CompleterResult = [string[], string]; + export interface ReadLineOptions { + /** + * The [`Readable`](https://nodejs.org/docs/latest-v24.x/api/stream.html#readable-streams) stream to listen to + */ + input: NodeJS.ReadableStream; + /** + * The [`Writable`](https://nodejs.org/docs/latest-v24.x/api/stream.html#writable-streams) stream to write readline data to. + */ + output?: NodeJS.WritableStream | undefined; + /** + * An optional function used for Tab autocompletion. + */ + completer?: Completer | AsyncCompleter | undefined; + /** + * `true` if the `input` and `output` streams should be treated like a TTY, + * and have ANSI/VT100 escape codes written to it. + * Default: checking `isTTY` on the `output` stream upon instantiation. + */ + terminal?: boolean | undefined; + /** + * Initial list of history lines. + * This option makes sense only if `terminal` is set to `true` by the user or by an internal `output` check, + * otherwise the history caching mechanism is not initialized at all. + * @default [] + */ + history?: string[] | undefined; + /** + * Maximum number of history lines retained. + * To disable the history set this value to `0`. + * This option makes sense only if `terminal` is set to `true` by the user or by an internal `output` check, + * otherwise the history caching mechanism is not initialized at all. + * @default 30 + */ + historySize?: number | undefined; + /** + * If `true`, when a new input line added to the history list duplicates an older one, + * this removes the older line from the list. + * @default false + */ + removeHistoryDuplicates?: boolean | undefined; + /** + * The prompt string to use. + * @default "> " + */ + prompt?: string | undefined; + /** + * If the delay between `\r` and `\n` exceeds `crlfDelay` milliseconds, + * both `\r` and `\n` will be treated as separate end-of-line input. + * `crlfDelay` will be coerced to a number no less than `100`. + * It can be set to `Infinity`, in which case + * `\r` followed by `\n` will always be considered a single newline + * (which may be reasonable for [reading files](https://nodejs.org/docs/latest-v24.x/api/readline.html#example-read-file-stream-line-by-line) with `\r\n` line delimiter). + * @default 100 + */ + crlfDelay?: number | undefined; + /** + * The duration `readline` will wait for a character + * (when reading an ambiguous key sequence in milliseconds + * one that can both form a complete key sequence using the input read so far + * and can take additional input to complete a longer key sequence). + * @default 500 + */ + escapeCodeTimeout?: number | undefined; + /** + * The number of spaces a tab is equal to (minimum 1). + * @default 8 + */ + tabSize?: number | undefined; + /** + * Allows closing the interface using an AbortSignal. + * Aborting the signal will internally call `close` on the interface. + */ + signal?: AbortSignal | undefined; + } + /** + * The `readline.createInterface()` method creates a new `readline.Interface` instance. + * + * ```js + * import readline from 'node:readline'; + * const rl = readline.createInterface({ + * input: process.stdin, + * output: process.stdout, + * }); + * ``` + * + * Once the `readline.Interface` instance is created, the most common case is to + * listen for the `'line'` event: + * + * ```js + * rl.on('line', (line) => { + * console.log(`Received: ${line}`); + * }); + * ``` + * + * If `terminal` is `true` for this instance then the `output` stream will get + * the best compatibility if it defines an `output.columns` property and emits + * a `'resize'` event on the `output` if or when the columns ever change + * (`process.stdout` does this automatically when it is a TTY). + * + * When creating a `readline.Interface` using `stdin` as input, the program + * will not terminate until it receives an [EOF character](https://en.wikipedia.org/wiki/End-of-file#EOF_character). To exit without + * waiting for user input, call `process.stdin.unref()`. + * @since v0.1.98 + */ + export function createInterface( + input: NodeJS.ReadableStream, + output?: NodeJS.WritableStream, + completer?: Completer | AsyncCompleter, + terminal?: boolean, + ): Interface; + export function createInterface(options: ReadLineOptions): Interface; + /** + * The `readline.emitKeypressEvents()` method causes the given `Readable` stream to begin emitting `'keypress'` events corresponding to received input. + * + * Optionally, `interface` specifies a `readline.Interface` instance for which + * autocompletion is disabled when copy-pasted input is detected. + * + * If the `stream` is a `TTY`, then it must be in raw mode. + * + * This is automatically called by any readline instance on its `input` if the `input` is a terminal. Closing the `readline` instance does not stop + * the `input` from emitting `'keypress'` events. + * + * ```js + * readline.emitKeypressEvents(process.stdin); + * if (process.stdin.isTTY) + * process.stdin.setRawMode(true); + * ``` + * + * ## Example: Tiny CLI + * + * The following example illustrates the use of `readline.Interface` class to + * implement a small command-line interface: + * + * ```js + * import readline from 'node:readline'; + * const rl = readline.createInterface({ + * input: process.stdin, + * output: process.stdout, + * prompt: 'OHAI> ', + * }); + * + * rl.prompt(); + * + * rl.on('line', (line) => { + * switch (line.trim()) { + * case 'hello': + * console.log('world!'); + * break; + * default: + * console.log(`Say what? I might have heard '${line.trim()}'`); + * break; + * } + * rl.prompt(); + * }).on('close', () => { + * console.log('Have a great day!'); + * process.exit(0); + * }); + * ``` + * + * ## Example: Read file stream line-by-Line + * + * A common use case for `readline` is to consume an input file one line at a + * time. The easiest way to do so is leveraging the `fs.ReadStream` API as + * well as a `for await...of` loop: + * + * ```js + * import fs from 'node:fs'; + * import readline from 'node:readline'; + * + * async function processLineByLine() { + * const fileStream = fs.createReadStream('input.txt'); + * + * const rl = readline.createInterface({ + * input: fileStream, + * crlfDelay: Infinity, + * }); + * // Note: we use the crlfDelay option to recognize all instances of CR LF + * // ('\r\n') in input.txt as a single line break. + * + * for await (const line of rl) { + * // Each line in input.txt will be successively available here as `line`. + * console.log(`Line from file: ${line}`); + * } + * } + * + * processLineByLine(); + * ``` + * + * Alternatively, one could use the `'line'` event: + * + * ```js + * import fs from 'node:fs'; + * import readline from 'node:readline'; + * + * const rl = readline.createInterface({ + * input: fs.createReadStream('sample.txt'), + * crlfDelay: Infinity, + * }); + * + * rl.on('line', (line) => { + * console.log(`Line from file: ${line}`); + * }); + * ``` + * + * Currently, `for await...of` loop can be a bit slower. If `async` / `await` flow and speed are both essential, a mixed approach can be applied: + * + * ```js + * import { once } from 'node:events'; + * import { createReadStream } from 'node:fs'; + * import { createInterface } from 'node:readline'; + * + * (async function processLineByLine() { + * try { + * const rl = createInterface({ + * input: createReadStream('big-file.txt'), + * crlfDelay: Infinity, + * }); + * + * rl.on('line', (line) => { + * // Process the line. + * }); + * + * await once(rl, 'close'); + * + * console.log('File processed.'); + * } catch (err) { + * console.error(err); + * } + * })(); + * ``` + * @since v0.7.7 + */ + export function emitKeypressEvents(stream: NodeJS.ReadableStream, readlineInterface?: Interface): void; + export type Direction = -1 | 0 | 1; + export interface CursorPos { + rows: number; + cols: number; + } + /** + * The `readline.clearLine()` method clears current line of given [TTY](https://nodejs.org/docs/latest-v24.x/api/tty.html) stream + * in a specified direction identified by `dir`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function clearLine(stream: NodeJS.WritableStream, dir: Direction, callback?: () => void): boolean; + /** + * The `readline.clearScreenDown()` method clears the given [TTY](https://nodejs.org/docs/latest-v24.x/api/tty.html) stream from + * the current position of the cursor down. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function clearScreenDown(stream: NodeJS.WritableStream, callback?: () => void): boolean; + /** + * The `readline.cursorTo()` method moves cursor to the specified position in a + * given [TTY](https://nodejs.org/docs/latest-v24.x/api/tty.html) `stream`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number, callback?: () => void): boolean; + /** + * The `readline.moveCursor()` method moves the cursor _relative_ to its current + * position in a given [TTY](https://nodejs.org/docs/latest-v24.x/api/tty.html) `stream`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function moveCursor(stream: NodeJS.WritableStream, dx: number, dy: number, callback?: () => void): boolean; +} +declare module "node:readline" { + export * from "readline"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/repl.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/repl.d.ts.html new file mode 100644 index 0000000..60dc94a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/repl.d.ts.html @@ -0,0 +1,438 @@ +/** + * The `node:repl` module provides a Read-Eval-Print-Loop (REPL) implementation + * that is available both as a standalone program or includible in other + * applications. It can be accessed using: + * + * ```js + * import repl from 'node:repl'; + * ``` + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/repl.js) + */ +declare module "repl" { + import { AsyncCompleter, Completer, Interface } from "node:readline"; + import { Context } from "node:vm"; + import { InspectOptions } from "node:util"; + interface ReplOptions { + /** + * The input prompt to display. + * @default "> " + */ + prompt?: string | undefined; + /** + * The `Readable` stream from which REPL input will be read. + * @default process.stdin + */ + input?: NodeJS.ReadableStream | undefined; + /** + * The `Writable` stream to which REPL output will be written. + * @default process.stdout + */ + output?: NodeJS.WritableStream | undefined; + /** + * If `true`, specifies that the output should be treated as a TTY terminal, and have + * ANSI/VT100 escape codes written to it. + * Default: checking the value of the `isTTY` property on the output stream upon + * instantiation. + */ + terminal?: boolean | undefined; + /** + * The function to be used when evaluating each given line of input. + * **Default:** an async wrapper for the JavaScript `eval()` function. An `eval` function can + * error with `repl.Recoverable` to indicate the input was incomplete and prompt for + * additional lines. See the [custom evaluation functions](https://nodejs.org/dist/latest-v24.x/docs/api/repl.html#custom-evaluation-functions) + * section for more details. + */ + eval?: REPLEval | undefined; + /** + * Defines if the repl prints output previews or not. + * @default `true` Always `false` in case `terminal` is falsy. + */ + preview?: boolean | undefined; + /** + * If `true`, specifies that the default `writer` function should include ANSI color + * styling to REPL output. If a custom `writer` function is provided then this has no + * effect. + * @default the REPL instance's `terminal` value + */ + useColors?: boolean | undefined; + /** + * If `true`, specifies that the default evaluation function will use the JavaScript + * `global` as the context as opposed to creating a new separate context for the REPL + * instance. The node CLI REPL sets this value to `true`. + * @default false + */ + useGlobal?: boolean | undefined; + /** + * If `true`, specifies that the default writer will not output the return value of a + * command if it evaluates to `undefined`. + * @default false + */ + ignoreUndefined?: boolean | undefined; + /** + * The function to invoke to format the output of each command before writing to `output`. + * @default a wrapper for `util.inspect` + * + * @see https://nodejs.org/dist/latest-v24.x/docs/api/repl.html#repl_customizing_repl_output + */ + writer?: REPLWriter | undefined; + /** + * An optional function used for custom Tab auto completion. + * + * @see https://nodejs.org/dist/latest-v24.x/docs/api/readline.html#readline_use_of_the_completer_function + */ + completer?: Completer | AsyncCompleter | undefined; + /** + * A flag that specifies whether the default evaluator executes all JavaScript commands in + * strict mode or default (sloppy) mode. + * Accepted values are: + * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. + * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to + * prefacing every repl statement with `'use strict'`. + */ + replMode?: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT | undefined; + /** + * Stop evaluating the current piece of code when `SIGINT` is received, i.e. `Ctrl+C` is + * pressed. This cannot be used together with a custom `eval` function. + * @default false + */ + breakEvalOnSigint?: boolean | undefined; + } + type REPLEval = ( + this: REPLServer, + evalCmd: string, + context: Context, + file: string, + cb: (err: Error | null, result: any) => void, + ) => void; + type REPLWriter = (this: REPLServer, obj: any) => string; + /** + * This is the default "writer" value, if none is passed in the REPL options, + * and it can be overridden by custom print functions. + */ + const writer: REPLWriter & { + options: InspectOptions; + }; + type REPLCommandAction = (this: REPLServer, text: string) => void; + interface REPLCommand { + /** + * Help text to be displayed when `.help` is entered. + */ + help?: string | undefined; + /** + * The function to execute, optionally accepting a single string argument. + */ + action: REPLCommandAction; + } + interface REPLServerSetupHistoryOptions { + filePath?: string | undefined; + size?: number | undefined; + removeHistoryDuplicates?: boolean | undefined; + onHistoryFileLoaded?: ((err: Error | null, repl: REPLServer) => void) | undefined; + } + /** + * Instances of `repl.REPLServer` are created using the {@link start} method + * or directly using the JavaScript `new` keyword. + * + * ```js + * import repl from 'node:repl'; + * + * const options = { useColors: true }; + * + * const firstInstance = repl.start(options); + * const secondInstance = new repl.REPLServer(options); + * ``` + * @since v0.1.91 + */ + class REPLServer extends Interface { + /** + * The `vm.Context` provided to the `eval` function to be used for JavaScript + * evaluation. + */ + readonly context: Context; + /** + * @deprecated since v14.3.0 - Use `input` instead. + */ + readonly inputStream: NodeJS.ReadableStream; + /** + * @deprecated since v14.3.0 - Use `output` instead. + */ + readonly outputStream: NodeJS.WritableStream; + /** + * The `Readable` stream from which REPL input will be read. + */ + readonly input: NodeJS.ReadableStream; + /** + * The `Writable` stream to which REPL output will be written. + */ + readonly output: NodeJS.WritableStream; + /** + * The commands registered via `replServer.defineCommand()`. + */ + readonly commands: NodeJS.ReadOnlyDict; + /** + * A value indicating whether the REPL is currently in "editor mode". + * + * @see https://nodejs.org/dist/latest-v24.x/docs/api/repl.html#repl_commands_and_special_keys + */ + readonly editorMode: boolean; + /** + * A value indicating whether the `_` variable has been assigned. + * + * @see https://nodejs.org/dist/latest-v24.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly underscoreAssigned: boolean; + /** + * The last evaluation result from the REPL (assigned to the `_` variable inside of the REPL). + * + * @see https://nodejs.org/dist/latest-v24.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly last: any; + /** + * A value indicating whether the `_error` variable has been assigned. + * + * @since v9.8.0 + * @see https://nodejs.org/dist/latest-v24.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly underscoreErrAssigned: boolean; + /** + * The last error raised inside the REPL (assigned to the `_error` variable inside of the REPL). + * + * @since v9.8.0 + * @see https://nodejs.org/dist/latest-v24.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly lastError: any; + /** + * Specified in the REPL options, this is the function to be used when evaluating each + * given line of input. If not specified in the REPL options, this is an async wrapper + * for the JavaScript `eval()` function. + */ + readonly eval: REPLEval; + /** + * Specified in the REPL options, this is a value indicating whether the default + * `writer` function should include ANSI color styling to REPL output. + */ + readonly useColors: boolean; + /** + * Specified in the REPL options, this is a value indicating whether the default `eval` + * function will use the JavaScript `global` as the context as opposed to creating a new + * separate context for the REPL instance. + */ + readonly useGlobal: boolean; + /** + * Specified in the REPL options, this is a value indicating whether the default `writer` + * function should output the result of a command if it evaluates to `undefined`. + */ + readonly ignoreUndefined: boolean; + /** + * Specified in the REPL options, this is the function to invoke to format the output of + * each command before writing to `outputStream`. If not specified in the REPL options, + * this will be a wrapper for `util.inspect`. + */ + readonly writer: REPLWriter; + /** + * Specified in the REPL options, this is the function to use for custom Tab auto-completion. + */ + readonly completer: Completer | AsyncCompleter; + /** + * Specified in the REPL options, this is a flag that specifies whether the default `eval` + * function should execute all JavaScript commands in strict mode or default (sloppy) mode. + * Possible values are: + * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. + * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to + * prefacing every repl statement with `'use strict'`. + */ + readonly replMode: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT; + /** + * NOTE: According to the documentation: + * + * > Instances of `repl.REPLServer` are created using the `repl.start()` method and + * > _should not_ be created directly using the JavaScript `new` keyword. + * + * `REPLServer` cannot be subclassed due to implementation specifics in NodeJS. + * + * @see https://nodejs.org/dist/latest-v24.x/docs/api/repl.html#repl_class_replserver + */ + private constructor(); + /** + * The `replServer.defineCommand()` method is used to add new `.`\-prefixed commands + * to the REPL instance. Such commands are invoked by typing a `.` followed by the `keyword`. The `cmd` is either a `Function` or an `Object` with the following + * properties: + * + * The following example shows two new commands added to the REPL instance: + * + * ```js + * import repl from 'node:repl'; + * + * const replServer = repl.start({ prompt: '> ' }); + * replServer.defineCommand('sayhello', { + * help: 'Say hello', + * action(name) { + * this.clearBufferedCommand(); + * console.log(`Hello, ${name}!`); + * this.displayPrompt(); + * }, + * }); + * replServer.defineCommand('saybye', function saybye() { + * console.log('Goodbye!'); + * this.close(); + * }); + * ``` + * + * The new commands can then be used from within the REPL instance: + * + * ```console + * > .sayhello Node.js User + * Hello, Node.js User! + * > .saybye + * Goodbye! + * ``` + * @since v0.3.0 + * @param keyword The command keyword (_without_ a leading `.` character). + * @param cmd The function to invoke when the command is processed. + */ + defineCommand(keyword: string, cmd: REPLCommandAction | REPLCommand): void; + /** + * The `replServer.displayPrompt()` method readies the REPL instance for input + * from the user, printing the configured `prompt` to a new line in the `output` and resuming the `input` to accept new input. + * + * When multi-line input is being entered, a pipe `'|'` is printed rather than the + * 'prompt'. + * + * When `preserveCursor` is `true`, the cursor placement will not be reset to `0`. + * + * The `replServer.displayPrompt` method is primarily intended to be called from + * within the action function for commands registered using the `replServer.defineCommand()` method. + * @since v0.1.91 + */ + displayPrompt(preserveCursor?: boolean): void; + /** + * The `replServer.clearBufferedCommand()` method clears any command that has been + * buffered but not yet executed. This method is primarily intended to be + * called from within the action function for commands registered using the `replServer.defineCommand()` method. + * @since v9.0.0 + */ + clearBufferedCommand(): void; + /** + * Initializes a history log file for the REPL instance. When executing the + * Node.js binary and using the command-line REPL, a history file is initialized + * by default. However, this is not the case when creating a REPL + * programmatically. Use this method to initialize a history log file when working + * with REPL instances programmatically. + * @since v11.10.0 + * @param historyPath the path to the history file + * @param callback called when history writes are ready or upon error + */ + setupHistory(historyPath: string, callback: (err: Error | null, repl: this) => void): void; + setupHistory( + historyConfig?: REPLServerSetupHistoryOptions, + callback?: (err: Error | null, repl: this) => void, + ): void; + /** + * events.EventEmitter + * 1. close - inherited from `readline.Interface` + * 2. line - inherited from `readline.Interface` + * 3. pause - inherited from `readline.Interface` + * 4. resume - inherited from `readline.Interface` + * 5. SIGCONT - inherited from `readline.Interface` + * 6. SIGINT - inherited from `readline.Interface` + * 7. SIGTSTP - inherited from `readline.Interface` + * 8. exit + * 9. reset + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "line", listener: (input: string) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "SIGCONT", listener: () => void): this; + addListener(event: "SIGINT", listener: () => void): this; + addListener(event: "SIGTSTP", listener: () => void): this; + addListener(event: "exit", listener: () => void): this; + addListener(event: "reset", listener: (context: Context) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "line", input: string): boolean; + emit(event: "pause"): boolean; + emit(event: "resume"): boolean; + emit(event: "SIGCONT"): boolean; + emit(event: "SIGINT"): boolean; + emit(event: "SIGTSTP"): boolean; + emit(event: "exit"): boolean; + emit(event: "reset", context: Context): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "line", listener: (input: string) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "SIGCONT", listener: () => void): this; + on(event: "SIGINT", listener: () => void): this; + on(event: "SIGTSTP", listener: () => void): this; + on(event: "exit", listener: () => void): this; + on(event: "reset", listener: (context: Context) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "line", listener: (input: string) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "SIGCONT", listener: () => void): this; + once(event: "SIGINT", listener: () => void): this; + once(event: "SIGTSTP", listener: () => void): this; + once(event: "exit", listener: () => void): this; + once(event: "reset", listener: (context: Context) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "line", listener: (input: string) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "SIGCONT", listener: () => void): this; + prependListener(event: "SIGINT", listener: () => void): this; + prependListener(event: "SIGTSTP", listener: () => void): this; + prependListener(event: "exit", listener: () => void): this; + prependListener(event: "reset", listener: (context: Context) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "line", listener: (input: string) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "SIGCONT", listener: () => void): this; + prependOnceListener(event: "SIGINT", listener: () => void): this; + prependOnceListener(event: "SIGTSTP", listener: () => void): this; + prependOnceListener(event: "exit", listener: () => void): this; + prependOnceListener(event: "reset", listener: (context: Context) => void): this; + } + /** + * A flag passed in the REPL options. Evaluates expressions in sloppy mode. + */ + const REPL_MODE_SLOPPY: unique symbol; + /** + * A flag passed in the REPL options. Evaluates expressions in strict mode. + * This is equivalent to prefacing every repl statement with `'use strict'`. + */ + const REPL_MODE_STRICT: unique symbol; + /** + * The `repl.start()` method creates and starts a {@link REPLServer} instance. + * + * If `options` is a string, then it specifies the input prompt: + * + * ```js + * import repl from 'node:repl'; + * + * // a Unix style prompt + * repl.start('$ '); + * ``` + * @since v0.1.91 + */ + function start(options?: string | ReplOptions): REPLServer; + /** + * Indicates a recoverable error that a `REPLServer` can use to support multi-line input. + * + * @see https://nodejs.org/dist/latest-v24.x/docs/api/repl.html#repl_recoverable_errors + */ + class Recoverable extends SyntaxError { + err: Error; + constructor(err: Error); + } +} +declare module "node:repl" { + export * from "repl"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/sea.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/sea.d.ts.html new file mode 100644 index 0000000..5119ede --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/sea.d.ts.html @@ -0,0 +1,153 @@ +/** + * This feature allows the distribution of a Node.js application conveniently to a + * system that does not have Node.js installed. + * + * Node.js supports the creation of [single executable applications](https://github.com/nodejs/single-executable) by allowing + * the injection of a blob prepared by Node.js, which can contain a bundled script, + * into the `node` binary. During start up, the program checks if anything has been + * injected. If the blob is found, it executes the script in the blob. Otherwise + * Node.js operates as it normally does. + * + * The single executable application feature currently only supports running a + * single embedded script using the `CommonJS` module system. + * + * Users can create a single executable application from their bundled script + * with the `node` binary itself and any tool which can inject resources into the + * binary. + * + * Here are the steps for creating a single executable application using one such + * tool, [postject](https://github.com/nodejs/postject): + * + * 1. Create a JavaScript file: + * ```bash + * echo 'console.log(`Hello, ${process.argv[2]}!`);' > hello.js + * ``` + * 2. Create a configuration file building a blob that can be injected into the + * single executable application (see `Generating single executable preparation blobs` for details): + * ```bash + * echo '{ "main": "hello.js", "output": "sea-prep.blob" }' > sea-config.json + * ``` + * 3. Generate the blob to be injected: + * ```bash + * node --experimental-sea-config sea-config.json + * ``` + * 4. Create a copy of the `node` executable and name it according to your needs: + * * On systems other than Windows: + * ```bash + * cp $(command -v node) hello + * ``` + * * On Windows: + * ```text + * node -e "require('fs').copyFileSync(process.execPath, 'hello.exe')" + * ``` + * The `.exe` extension is necessary. + * 5. Remove the signature of the binary (macOS and Windows only): + * * On macOS: + * ```bash + * codesign --remove-signature hello + * ``` + * * On Windows (optional): + * [signtool](https://learn.microsoft.com/en-us/windows/win32/seccrypto/signtool) can be used from the installed [Windows SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/). + * If this step is + * skipped, ignore any signature-related warning from postject. + * ```powershell + * signtool remove /s hello.exe + * ``` + * 6. Inject the blob into the copied binary by running `postject` with + * the following options: + * * `hello` / `hello.exe` \- The name of the copy of the `node` executable + * created in step 4. + * * `NODE_SEA_BLOB` \- The name of the resource / note / section in the binary + * where the contents of the blob will be stored. + * * `sea-prep.blob` \- The name of the blob created in step 1. + * * `--sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2` \- The [fuse](https://www.electronjs.org/docs/latest/tutorial/fuses) used by the Node.js project to detect if a file has been + * injected. + * * `--macho-segment-name NODE_SEA` (only needed on macOS) - The name of the + * segment in the binary where the contents of the blob will be + * stored. + * To summarize, here is the required command for each platform: + * * On Linux: + * ```bash + * npx postject hello NODE_SEA_BLOB sea-prep.blob \ + * --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 + * ``` + * * On Windows - PowerShell: + * ```powershell + * npx postject hello.exe NODE_SEA_BLOB sea-prep.blob ` + * --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 + * ``` + * * On Windows - Command Prompt: + * ```text + * npx postject hello.exe NODE_SEA_BLOB sea-prep.blob ^ + * --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 + * ``` + * * On macOS: + * ```bash + * npx postject hello NODE_SEA_BLOB sea-prep.blob \ + * --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 \ + * --macho-segment-name NODE_SEA + * ``` + * 7. Sign the binary (macOS and Windows only): + * * On macOS: + * ```bash + * codesign --sign - hello + * ``` + * * On Windows (optional): + * A certificate needs to be present for this to work. However, the unsigned + * binary would still be runnable. + * ```powershell + * signtool sign /fd SHA256 hello.exe + * ``` + * 8. Run the binary: + * * On systems other than Windows + * ```console + * $ ./hello world + * Hello, world! + * ``` + * * On Windows + * ```console + * $ .\hello.exe world + * Hello, world! + * ``` + * @since v19.7.0, v18.16.0 + * @experimental + * @see [source](https://github.com/nodejs/node/blob/v24.x/src/node_sea.cc) + */ +declare module "node:sea" { + type AssetKey = string; + /** + * @since v20.12.0 + * @return Whether this script is running inside a single-executable application. + */ + function isSea(): boolean; + /** + * This method can be used to retrieve the assets configured to be bundled into the + * single-executable application at build time. + * An error is thrown when no matching asset can be found. + * @since v20.12.0 + */ + function getAsset(key: AssetKey): ArrayBuffer; + function getAsset(key: AssetKey, encoding: string): string; + /** + * Similar to `sea.getAsset()`, but returns the result in a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob). + * An error is thrown when no matching asset can be found. + * @since v20.12.0 + */ + function getAssetAsBlob(key: AssetKey, options?: { + type: string; + }): Blob; + /** + * This method can be used to retrieve the assets configured to be bundled into the + * single-executable application at build time. + * An error is thrown when no matching asset can be found. + * + * Unlike `sea.getRawAsset()` or `sea.getAssetAsBlob()`, this method does not + * return a copy. Instead, it returns the raw asset bundled inside the executable. + * + * For now, users should avoid writing to the returned array buffer. If the + * injected section is not marked as writable or not aligned properly, + * writes to the returned array buffer is likely to result in a crash. + * @since v20.12.0 + */ + function getRawAsset(key: AssetKey): ArrayBuffer; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/sqlite.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/sqlite.d.ts.html new file mode 100644 index 0000000..9019832 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/sqlite.d.ts.html @@ -0,0 +1,687 @@ +/** + * The `node:sqlite` module facilitates working with SQLite databases. + * To access it: + * + * ```js + * import sqlite from 'node:sqlite'; + * ``` + * + * This module is only available under the `node:` scheme. The following will not + * work: + * + * ```js + * import sqlite from 'sqlite'; + * ``` + * + * The following example shows the basic usage of the `node:sqlite` module to open + * an in-memory database, write data to the database, and then read the data back. + * + * ```js + * import { DatabaseSync } from 'node:sqlite'; + * const database = new DatabaseSync(':memory:'); + * + * // Execute SQL statements from strings. + * database.exec(` + * CREATE TABLE data( + * key INTEGER PRIMARY KEY, + * value TEXT + * ) STRICT + * `); + * // Create a prepared statement to insert data into the database. + * const insert = database.prepare('INSERT INTO data (key, value) VALUES (?, ?)'); + * // Execute the prepared statement with bound values. + * insert.run(1, 'hello'); + * insert.run(2, 'world'); + * // Create a prepared statement to read data from the database. + * const query = database.prepare('SELECT * FROM data ORDER BY key'); + * // Execute the prepared statement and log the result set. + * console.log(query.all()); + * // Prints: [ { key: 1, value: 'hello' }, { key: 2, value: 'world' } ] + * ``` + * @since v22.5.0 + * @experimental + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/sqlite.js) + */ +declare module "node:sqlite" { + type SQLInputValue = null | number | bigint | string | NodeJS.ArrayBufferView; + type SQLOutputValue = null | number | bigint | string | Uint8Array; + /** @deprecated Use `SQLInputValue` or `SQLOutputValue` instead. */ + type SupportedValueType = SQLOutputValue; + interface DatabaseSyncOptions { + /** + * If `true`, the database is opened by the constructor. When + * this value is `false`, the database must be opened via the `open()` method. + * @since v22.5.0 + * @default true + */ + open?: boolean | undefined; + /** + * If `true`, foreign key constraints + * are enabled. This is recommended but can be disabled for compatibility with + * legacy database schemas. The enforcement of foreign key constraints can be + * enabled and disabled after opening the database using + * [`PRAGMA foreign_keys`](https://www.sqlite.org/pragma.html#pragma_foreign_keys). + * @since v22.10.0 + * @default true + */ + enableForeignKeyConstraints?: boolean | undefined; + /** + * If `true`, SQLite will accept + * [double-quoted string literals](https://www.sqlite.org/quirks.html#dblquote). + * This is not recommended but can be + * enabled for compatibility with legacy database schemas. + * @since v22.10.0 + * @default false + */ + enableDoubleQuotedStringLiterals?: boolean | undefined; + /** + * If `true`, the database is opened in read-only mode. + * If the database does not exist, opening it will fail. + * @since v22.12.0 + * @default false + */ + readOnly?: boolean | undefined; + /** + * If `true`, the `loadExtension` SQL function + * and the `loadExtension()` method are enabled. + * You can call `enableLoadExtension(false)` later to disable this feature. + * @since v22.13.0 + * @default false + */ + allowExtension?: boolean | undefined; + /** + * The [busy timeout](https://sqlite.org/c3ref/busy_timeout.html) in milliseconds. This is the maximum amount of + * time that SQLite will wait for a database lock to be released before + * returning an error. + * @since v24.0.0 + * @default 0 + */ + timeout?: number | undefined; + } + interface CreateSessionOptions { + /** + * A specific table to track changes for. By default, changes to all tables are tracked. + * @since v22.12.0 + */ + table?: string | undefined; + /** + * Name of the database to track. This is useful when multiple databases have been added using + * [`ATTACH DATABASE`](https://www.sqlite.org/lang_attach.html). + * @since v22.12.0 + * @default 'main' + */ + db?: string | undefined; + } + interface ApplyChangesetOptions { + /** + * Skip changes that, when targeted table name is supplied to this function, return a truthy value. + * By default, all changes are attempted. + * @since v22.12.0 + */ + filter?: ((tableName: string) => boolean) | undefined; + /** + * A function that determines how to handle conflicts. The function receives one argument, + * which can be one of the following values: + * + * * `SQLITE_CHANGESET_DATA`: A `DELETE` or `UPDATE` change does not contain the expected "before" values. + * * `SQLITE_CHANGESET_NOTFOUND`: A row matching the primary key of the `DELETE` or `UPDATE` change does not exist. + * * `SQLITE_CHANGESET_CONFLICT`: An `INSERT` change results in a duplicate primary key. + * * `SQLITE_CHANGESET_FOREIGN_KEY`: Applying a change would result in a foreign key violation. + * * `SQLITE_CHANGESET_CONSTRAINT`: Applying a change results in a `UNIQUE`, `CHECK`, or `NOT NULL` constraint + * violation. + * + * The function should return one of the following values: + * + * * `SQLITE_CHANGESET_OMIT`: Omit conflicting changes. + * * `SQLITE_CHANGESET_REPLACE`: Replace existing values with conflicting changes (only valid with + `SQLITE_CHANGESET_DATA` or `SQLITE_CHANGESET_CONFLICT` conflicts). + * * `SQLITE_CHANGESET_ABORT`: Abort on conflict and roll back the database. + * + * When an error is thrown in the conflict handler or when any other value is returned from the handler, + * applying the changeset is aborted and the database is rolled back. + * + * **Default**: A function that returns `SQLITE_CHANGESET_ABORT`. + * @since v22.12.0 + */ + onConflict?: ((conflictType: number) => number) | undefined; + } + interface FunctionOptions { + /** + * If `true`, the [`SQLITE_DETERMINISTIC`](https://www.sqlite.org/c3ref/c_deterministic.html) flag is + * set on the created function. + * @default false + */ + deterministic?: boolean | undefined; + /** + * If `true`, the [`SQLITE_DIRECTONLY`](https://www.sqlite.org/c3ref/c_directonly.html) flag is set on + * the created function. + * @default false + */ + directOnly?: boolean | undefined; + /** + * If `true`, integer arguments to `function` + * are converted to `BigInt`s. If `false`, integer arguments are passed as + * JavaScript numbers. + * @default false + */ + useBigIntArguments?: boolean | undefined; + /** + * If `true`, `function` may be invoked with any number of + * arguments (between zero and + * [`SQLITE_MAX_FUNCTION_ARG`](https://www.sqlite.org/limits.html#max_function_arg)). If `false`, + * `function` must be invoked with exactly `function.length` arguments. + * @default false + */ + varargs?: boolean | undefined; + } + interface AggregateOptions extends FunctionOptions { + /** + * The identity value for the aggregation function. This value is used when the aggregation + * function is initialized. When a `Function` is passed the identity will be its return value. + */ + start: T | (() => T); + /** + * The function to call for each row in the aggregation. The + * function receives the current state and the row value. The return value of + * this function should be the new state. + */ + step: (accumulator: T, ...args: SQLOutputValue[]) => T; + /** + * The function to call to get the result of the + * aggregation. The function receives the final state and should return the + * result of the aggregation. + */ + result?: ((accumulator: T) => SQLInputValue) | undefined; + /** + * When this function is provided, the `aggregate` method will work as a window function. + * The function receives the current state and the dropped row value. The return value of this function should be the + * new state. + */ + inverse?: ((accumulator: T, ...args: SQLOutputValue[]) => T) | undefined; + } + /** + * This class represents a single [connection](https://www.sqlite.org/c3ref/sqlite3.html) to a SQLite database. All APIs + * exposed by this class execute synchronously. + * @since v22.5.0 + */ + class DatabaseSync implements Disposable { + /** + * Constructs a new `DatabaseSync` instance. + * @param path The path of the database. + * A SQLite database can be stored in a file or completely [in memory](https://www.sqlite.org/inmemorydb.html). + * To use a file-backed database, the path should be a file path. + * To use an in-memory database, the path should be the special name `':memory:'`. + * @param options Configuration options for the database connection. + */ + constructor(path: string | Buffer | URL, options?: DatabaseSyncOptions); + /** + * Registers a new aggregate function with the SQLite database. This method is a wrapper around + * [`sqlite3_create_window_function()`](https://www.sqlite.org/c3ref/create_function.html). + * + * When used as a window function, the `result` function will be called multiple times. + * + * ```js + * import { DatabaseSync } from 'node:sqlite'; + * + * const db = new DatabaseSync(':memory:'); + * db.exec(` + * CREATE TABLE t3(x, y); + * INSERT INTO t3 VALUES ('a', 4), + * ('b', 5), + * ('c', 3), + * ('d', 8), + * ('e', 1); + * `); + * + * db.aggregate('sumint', { + * start: 0, + * step: (acc, value) => acc + value, + * }); + * + * db.prepare('SELECT sumint(y) as total FROM t3').get(); // { total: 21 } + * ``` + * @since v24.0.0 + * @param name The name of the SQLite function to create. + * @param options Function configuration settings. + */ + aggregate(name: string, options: AggregateOptions): void; + aggregate(name: string, options: AggregateOptions): void; + /** + * Closes the database connection. An exception is thrown if the database is not + * open. This method is a wrapper around [`sqlite3_close_v2()`](https://www.sqlite.org/c3ref/close.html). + * @since v22.5.0 + */ + close(): void; + /** + * Loads a shared library into the database connection. This method is a wrapper + * around [`sqlite3_load_extension()`](https://www.sqlite.org/c3ref/load_extension.html). It is required to enable the + * `allowExtension` option when constructing the `DatabaseSync` instance. + * @since v22.13.0 + * @param path The path to the shared library to load. + */ + loadExtension(path: string): void; + /** + * Enables or disables the `loadExtension` SQL function, and the `loadExtension()` + * method. When `allowExtension` is `false` when constructing, you cannot enable + * loading extensions for security reasons. + * @since v22.13.0 + * @param allow Whether to allow loading extensions. + */ + enableLoadExtension(allow: boolean): void; + /** + * This method is a wrapper around [`sqlite3_db_filename()`](https://sqlite.org/c3ref/db_filename.html) + * @since v24.0.0 + * @param dbName Name of the database. This can be `'main'` (the default primary database) or any other + * database that has been added with [`ATTACH DATABASE`](https://www.sqlite.org/lang_attach.html) **Default:** `'main'`. + * @returns The location of the database file. When using an in-memory database, + * this method returns null. + */ + location(dbName?: string): string | null; + /** + * This method allows one or more SQL statements to be executed without returning + * any results. This method is useful when executing SQL statements read from a + * file. This method is a wrapper around [`sqlite3_exec()`](https://www.sqlite.org/c3ref/exec.html). + * @since v22.5.0 + * @param sql A SQL string to execute. + */ + exec(sql: string): void; + /** + * This method is used to create SQLite user-defined functions. This method is a + * wrapper around [`sqlite3_create_function_v2()`](https://www.sqlite.org/c3ref/create_function.html). + * @since v22.13.0 + * @param name The name of the SQLite function to create. + * @param options Optional configuration settings for the function. + * @param func The JavaScript function to call when the SQLite + * function is invoked. The return value of this function should be a valid + * SQLite data type: see + * [Type conversion between JavaScript and SQLite](https://nodejs.org/docs/latest-v24.x/api/sqlite.html#type-conversion-between-javascript-and-sqlite). + * The result defaults to `NULL` if the return value is `undefined`. + */ + function( + name: string, + options: FunctionOptions, + func: (...args: SQLOutputValue[]) => SQLInputValue, + ): void; + function(name: string, func: (...args: SQLOutputValue[]) => SQLInputValue): void; + /** + * Whether the database is currently open or not. + * @since v22.15.0 + */ + readonly isOpen: boolean; + /** + * Whether the database is currently within a transaction. This method + * is a wrapper around [`sqlite3_get_autocommit()`](https://sqlite.org/c3ref/get_autocommit.html). + * @since v24.0.0 + */ + readonly isTransaction: boolean; + /** + * Opens the database specified in the `path` argument of the `DatabaseSync`constructor. This method should only be used when the database is not opened via + * the constructor. An exception is thrown if the database is already open. + * @since v22.5.0 + */ + open(): void; + /** + * Compiles a SQL statement into a [prepared statement](https://www.sqlite.org/c3ref/stmt.html). This method is a wrapper + * around [`sqlite3_prepare_v2()`](https://www.sqlite.org/c3ref/prepare.html). + * @since v22.5.0 + * @param sql A SQL string to compile to a prepared statement. + * @return The prepared statement. + */ + prepare(sql: string): StatementSync; + /** + * Creates and attaches a session to the database. This method is a wrapper around + * [`sqlite3session_create()`](https://www.sqlite.org/session/sqlite3session_create.html) and + * [`sqlite3session_attach()`](https://www.sqlite.org/session/sqlite3session_attach.html). + * @param options The configuration options for the session. + * @returns A session handle. + * @since v22.12.0 + */ + createSession(options?: CreateSessionOptions): Session; + /** + * An exception is thrown if the database is not + * open. This method is a wrapper around + * [`sqlite3changeset_apply()`](https://www.sqlite.org/session/sqlite3changeset_apply.html). + * + * ```js + * const sourceDb = new DatabaseSync(':memory:'); + * const targetDb = new DatabaseSync(':memory:'); + * + * sourceDb.exec('CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)'); + * targetDb.exec('CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)'); + * + * const session = sourceDb.createSession(); + * + * const insert = sourceDb.prepare('INSERT INTO data (key, value) VALUES (?, ?)'); + * insert.run(1, 'hello'); + * insert.run(2, 'world'); + * + * const changeset = session.changeset(); + * targetDb.applyChangeset(changeset); + * // Now that the changeset has been applied, targetDb contains the same data as sourceDb. + * ``` + * @param changeset A binary changeset or patchset. + * @param options The configuration options for how the changes will be applied. + * @returns Whether the changeset was applied successfully without being aborted. + * @since v22.12.0 + */ + applyChangeset(changeset: Uint8Array, options?: ApplyChangesetOptions): boolean; + /** + * Closes the database connection. If the database connection is already closed + * then this is a no-op. + * @since v22.15.0 + */ + [Symbol.dispose](): void; + } + /** + * @since v22.12.0 + */ + interface Session { + /** + * Retrieves a changeset containing all changes since the changeset was created. Can be called multiple times. + * An exception is thrown if the database or the session is not open. This method is a wrapper around + * [`sqlite3session_changeset()`](https://www.sqlite.org/session/sqlite3session_changeset.html). + * @returns Binary changeset that can be applied to other databases. + * @since v22.12.0 + */ + changeset(): Uint8Array; + /** + * Similar to the method above, but generates a more compact patchset. See + * [Changesets and Patchsets](https://www.sqlite.org/sessionintro.html#changesets_and_patchsets) + * in the documentation of SQLite. An exception is thrown if the database or the session is not open. This method is a + * wrapper around + * [`sqlite3session_patchset()`](https://www.sqlite.org/session/sqlite3session_patchset.html). + * @returns Binary patchset that can be applied to other databases. + * @since v22.12.0 + */ + patchset(): Uint8Array; + /** + * Closes the session. An exception is thrown if the database or the session is not open. This method is a + * wrapper around + * [`sqlite3session_delete()`](https://www.sqlite.org/session/sqlite3session_delete.html). + */ + close(): void; + } + interface StatementColumnMetadata { + /** + * The unaliased name of the column in the origin + * table, or `null` if the column is the result of an expression or subquery. + * This property is the result of [`sqlite3_column_origin_name()`](https://www.sqlite.org/c3ref/column_database_name.html). + */ + column: string | null; + /** + * The unaliased name of the origin database, or + * `null` if the column is the result of an expression or subquery. This + * property is the result of [`sqlite3_column_database_name()`](https://www.sqlite.org/c3ref/column_database_name.html). + */ + database: string | null; + /** + * The name assigned to the column in the result set of a + * `SELECT` statement. This property is the result of + * [`sqlite3_column_name()`](https://www.sqlite.org/c3ref/column_name.html). + */ + name: string; + /** + * The unaliased name of the origin table, or `null` if + * the column is the result of an expression or subquery. This property is the + * result of [`sqlite3_column_table_name()`](https://www.sqlite.org/c3ref/column_database_name.html). + */ + table: string | null; + /** + * The declared data type of the column, or `null` if the + * column is the result of an expression or subquery. This property is the + * result of [`sqlite3_column_decltype()`](https://www.sqlite.org/c3ref/column_decltype.html). + */ + type: string | null; + } + interface StatementResultingChanges { + /** + * The number of rows modified, inserted, or deleted by the most recently completed `INSERT`, `UPDATE`, or `DELETE` statement. + * This field is either a number or a `BigInt` depending on the prepared statement's configuration. + * This property is the result of [`sqlite3_changes64()`](https://www.sqlite.org/c3ref/changes.html). + */ + changes: number | bigint; + /** + * The most recently inserted rowid. + * This field is either a number or a `BigInt` depending on the prepared statement's configuration. + * This property is the result of [`sqlite3_last_insert_rowid()`](https://www.sqlite.org/c3ref/last_insert_rowid.html). + */ + lastInsertRowid: number | bigint; + } + /** + * This class represents a single [prepared statement](https://www.sqlite.org/c3ref/stmt.html). This class cannot be + * instantiated via its constructor. Instead, instances are created via the`database.prepare()` method. All APIs exposed by this class execute + * synchronously. + * + * A prepared statement is an efficient binary representation of the SQL used to + * create it. Prepared statements are parameterizable, and can be invoked multiple + * times with different bound values. Parameters also offer protection against [SQL injection](https://en.wikipedia.org/wiki/SQL_injection) attacks. For these reasons, prepared statements are + * preferred + * over hand-crafted SQL strings when handling user input. + * @since v22.5.0 + */ + class StatementSync { + private constructor(); + /** + * This method executes a prepared statement and returns all results as an array of + * objects. If the prepared statement does not return any results, this method + * returns an empty array. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using + * the values in `namedParameters` and `anonymousParameters`. + * @since v22.5.0 + * @param namedParameters An optional object used to bind named parameters. The keys of this object are used to configure the mapping. + * @param anonymousParameters Zero or more values to bind to anonymous parameters. + * @return An array of objects. Each object corresponds to a row returned by executing the prepared statement. The keys and values of each object correspond to the column names and values of + * the row. + */ + all(...anonymousParameters: SQLInputValue[]): Record[]; + all( + namedParameters: Record, + ...anonymousParameters: SQLInputValue[] + ): Record[]; + /** + * This method is used to retrieve information about the columns returned by the + * prepared statement. + * @since v23.11.0 + * @returns An array of objects. Each object corresponds to a column + * in the prepared statement, and contains the following properties: + */ + columns(): StatementColumnMetadata[]; + /** + * The source SQL text of the prepared statement with parameter + * placeholders replaced by the values that were used during the most recent + * execution of this prepared statement. This property is a wrapper around + * [`sqlite3_expanded_sql()`](https://www.sqlite.org/c3ref/expanded_sql.html). + * @since v22.5.0 + */ + readonly expandedSQL: string; + /** + * This method executes a prepared statement and returns the first result as an + * object. If the prepared statement does not return any results, this method + * returns `undefined`. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using the + * values in `namedParameters` and `anonymousParameters`. + * @since v22.5.0 + * @param namedParameters An optional object used to bind named parameters. The keys of this object are used to configure the mapping. + * @param anonymousParameters Zero or more values to bind to anonymous parameters. + * @return An object corresponding to the first row returned by executing the prepared statement. The keys and values of the object correspond to the column names and values of the row. If no + * rows were returned from the database then this method returns `undefined`. + */ + get(...anonymousParameters: SQLInputValue[]): Record | undefined; + get( + namedParameters: Record, + ...anonymousParameters: SQLInputValue[] + ): Record | undefined; + /** + * This method executes a prepared statement and returns an iterator of + * objects. If the prepared statement does not return any results, this method + * returns an empty iterator. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using + * the values in `namedParameters` and `anonymousParameters`. + * @since v22.13.0 + * @param namedParameters An optional object used to bind named parameters. + * The keys of this object are used to configure the mapping. + * @param anonymousParameters Zero or more values to bind to anonymous parameters. + * @returns An iterable iterator of objects. Each object corresponds to a row + * returned by executing the prepared statement. The keys and values of each + * object correspond to the column names and values of the row. + */ + iterate(...anonymousParameters: SQLInputValue[]): NodeJS.Iterator>; + iterate( + namedParameters: Record, + ...anonymousParameters: SQLInputValue[] + ): NodeJS.Iterator>; + /** + * This method executes a prepared statement and returns an object summarizing the + * resulting changes. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using the + * values in `namedParameters` and `anonymousParameters`. + * @since v22.5.0 + * @param namedParameters An optional object used to bind named parameters. The keys of this object are used to configure the mapping. + * @param anonymousParameters Zero or more values to bind to anonymous parameters. + */ + run(...anonymousParameters: SQLInputValue[]): StatementResultingChanges; + run( + namedParameters: Record, + ...anonymousParameters: SQLInputValue[] + ): StatementResultingChanges; + /** + * The names of SQLite parameters begin with a prefix character. By default,`node:sqlite` requires that this prefix character is present when binding + * parameters. However, with the exception of dollar sign character, these + * prefix characters also require extra quoting when used in object keys. + * + * To improve ergonomics, this method can be used to also allow bare named + * parameters, which do not require the prefix character in JavaScript code. There + * are several caveats to be aware of when enabling bare named parameters: + * + * * The prefix character is still required in SQL. + * * The prefix character is still allowed in JavaScript. In fact, prefixed names + * will have slightly better binding performance. + * * Using ambiguous named parameters, such as `$k` and `@k`, in the same prepared + * statement will result in an exception as it cannot be determined how to bind + * a bare name. + * @since v22.5.0 + * @param enabled Enables or disables support for binding named parameters without the prefix character. + */ + setAllowBareNamedParameters(enabled: boolean): void; + /** + * By default, if an unknown name is encountered while binding parameters, an + * exception is thrown. This method allows unknown named parameters to be ignored. + * @since v22.15.0 + * @param enabled Enables or disables support for unknown named parameters. + */ + setAllowUnknownNamedParameters(enabled: boolean): void; + /** + * When reading from the database, SQLite `INTEGER`s are mapped to JavaScript + * numbers by default. However, SQLite `INTEGER`s can store values larger than + * JavaScript numbers are capable of representing. In such cases, this method can + * be used to read `INTEGER` data using JavaScript `BigInt`s. This method has no + * impact on database write operations where numbers and `BigInt`s are both + * supported at all times. + * @since v22.5.0 + * @param enabled Enables or disables the use of `BigInt`s when reading `INTEGER` fields from the database. + */ + setReadBigInts(enabled: boolean): void; + /** + * The source SQL text of the prepared statement. This property is a + * wrapper around [`sqlite3_sql()`](https://www.sqlite.org/c3ref/expanded_sql.html). + * @since v22.5.0 + */ + readonly sourceSQL: string; + } + interface BackupOptions { + /** + * Name of the source database. This can be `'main'` (the default primary database) or any other + * database that have been added with [`ATTACH DATABASE`](https://www.sqlite.org/lang_attach.html) + * @default 'main' + */ + source?: string | undefined; + /** + * Name of the target database. This can be `'main'` (the default primary database) or any other + * database that have been added with [`ATTACH DATABASE`](https://www.sqlite.org/lang_attach.html) + * @default 'main' + */ + target?: string | undefined; + /** + * Number of pages to be transmitted in each batch of the backup. + * @default 100 + */ + rate?: number | undefined; + /** + * Callback function that will be called with the number of pages copied and the total number of + * pages. + */ + progress?: ((progressInfo: BackupProgressInfo) => void) | undefined; + } + interface BackupProgressInfo { + totalPages: number; + remainingPages: number; + } + /** + * This method makes a database backup. This method abstracts the + * [`sqlite3_backup_init()`](https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupinit), + * [`sqlite3_backup_step()`](https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupstep) + * and [`sqlite3_backup_finish()`](https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupfinish) functions. + * + * The backed-up database can be used normally during the backup process. Mutations coming from the same connection - same + * `DatabaseSync` - object will be reflected in the backup right away. However, mutations from other connections will cause + * the backup process to restart. + * + * ```js + * import { backup, DatabaseSync } from 'node:sqlite'; + * + * const sourceDb = new DatabaseSync('source.db'); + * const totalPagesTransferred = await backup(sourceDb, 'backup.db', { + * rate: 1, // Copy one page at a time. + * progress: ({ totalPages, remainingPages }) => { + * console.log('Backup in progress', { totalPages, remainingPages }); + * }, + * }); + * + * console.log('Backup completed', totalPagesTransferred); + * ``` + * @since v23.8.0 + * @param sourceDb The database to backup. The source database must be open. + * @param path The path where the backup will be created. If the file already exists, + * the contents will be overwritten. + * @param options Optional configuration for the backup. The + * following properties are supported: + * @returns A promise that resolves when the backup is completed and rejects if an error occurs. + */ + function backup(sourceDb: DatabaseSync, path: string | Buffer | URL, options?: BackupOptions): Promise; + /** + * @since v22.13.0 + */ + namespace constants { + /** + * The conflict handler is invoked with this constant when processing a DELETE or UPDATE change if a row with the required PRIMARY KEY fields is present in the database, but one or more other (non primary-key) fields modified by the update do not contain the expected "before" values. + * @since v22.14.0 + */ + const SQLITE_CHANGESET_DATA: number; + /** + * The conflict handler is invoked with this constant when processing a DELETE or UPDATE change if a row with the required PRIMARY KEY fields is not present in the database. + * @since v22.14.0 + */ + const SQLITE_CHANGESET_NOTFOUND: number; + /** + * This constant is passed to the conflict handler while processing an INSERT change if the operation would result in duplicate primary key values. + * @since v22.14.0 + */ + const SQLITE_CHANGESET_CONFLICT: number; + /** + * If foreign key handling is enabled, and applying a changeset leaves the database in a state containing foreign key violations, the conflict handler is invoked with this constant exactly once before the changeset is committed. If the conflict handler returns `SQLITE_CHANGESET_OMIT`, the changes, including those that caused the foreign key constraint violation, are committed. Or, if it returns `SQLITE_CHANGESET_ABORT`, the changeset is rolled back. + * @since v22.14.0 + */ + const SQLITE_CHANGESET_FOREIGN_KEY: number; + /** + * Conflicting changes are omitted. + * @since v22.12.0 + */ + const SQLITE_CHANGESET_OMIT: number; + /** + * Conflicting changes replace existing values. Note that this value can only be returned when the type of conflict is either `SQLITE_CHANGESET_DATA` or `SQLITE_CHANGESET_CONFLICT`. + * @since v22.12.0 + */ + const SQLITE_CHANGESET_REPLACE: number; + /** + * Abort when a change encounters a conflict and roll back database. + * @since v22.12.0 + */ + const SQLITE_CHANGESET_ABORT: number; + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/stream.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/stream.d.ts.html new file mode 100644 index 0000000..b586dd2 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/stream.d.ts.html @@ -0,0 +1,1668 @@ +/** + * A stream is an abstract interface for working with streaming data in Node.js. + * The `node:stream` module provides an API for implementing the stream interface. + * + * There are many stream objects provided by Node.js. For instance, a [request to an HTTP server](https://nodejs.org/docs/latest-v24.x/api/http.html#class-httpincomingmessage) + * and [`process.stdout`](https://nodejs.org/docs/latest-v24.x/api/process.html#processstdout) are both stream instances. + * + * Streams can be readable, writable, or both. All streams are instances of [`EventEmitter`](https://nodejs.org/docs/latest-v24.x/api/events.html#class-eventemitter). + * + * To access the `node:stream` module: + * + * ```js + * import stream from 'node:stream'; + * ``` + * + * The `node:stream` module is useful for creating new types of stream instances. + * It is usually not necessary to use the `node:stream` module to consume streams. + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/stream.js) + */ +declare module "stream" { + import { Abortable, EventEmitter } from "node:events"; + import { Blob as NodeBlob } from "node:buffer"; + import * as streamPromises from "node:stream/promises"; + import * as streamWeb from "node:stream/web"; + + type ComposeFnParam = (source: any) => void; + + class Stream extends EventEmitter { + pipe( + destination: T, + options?: { + end?: boolean | undefined; + }, + ): T; + compose( + stream: T | ComposeFnParam | Iterable | AsyncIterable, + options?: { signal: AbortSignal }, + ): T; + } + namespace Stream { + export { Stream, streamPromises as promises }; + } + namespace Stream { + interface StreamOptions extends Abortable { + emitClose?: boolean | undefined; + highWaterMark?: number | undefined; + objectMode?: boolean | undefined; + construct?(this: T, callback: (error?: Error | null) => void): void; + destroy?(this: T, error: Error | null, callback: (error?: Error | null) => void): void; + autoDestroy?: boolean | undefined; + } + interface ReadableOptions extends StreamOptions { + encoding?: BufferEncoding | undefined; + read?(this: T, size: number): void; + } + interface ArrayOptions { + /** + * The maximum concurrent invocations of `fn` to call on the stream at once. + * @default 1 + */ + concurrency?: number; + /** Allows destroying the stream if the signal is aborted. */ + signal?: AbortSignal; + } + /** + * @since v0.9.4 + */ + class Readable extends Stream implements NodeJS.ReadableStream { + /** + * A utility method for creating Readable Streams out of iterators. + * @since v12.3.0, v10.17.0 + * @param iterable Object implementing the `Symbol.asyncIterator` or `Symbol.iterator` iterable protocol. Emits an 'error' event if a null value is passed. + * @param options Options provided to `new stream.Readable([options])`. By default, `Readable.from()` will set `options.objectMode` to `true`, unless this is explicitly opted out by setting `options.objectMode` to `false`. + */ + static from(iterable: Iterable | AsyncIterable, options?: ReadableOptions): Readable; + /** + * A utility method for creating a `Readable` from a web `ReadableStream`. + * @since v17.0.0 + */ + static fromWeb( + readableStream: streamWeb.ReadableStream, + options?: Pick, + ): Readable; + /** + * A utility method for creating a web `ReadableStream` from a `Readable`. + * @since v17.0.0 + */ + static toWeb( + streamReadable: Readable, + options?: { + strategy?: streamWeb.QueuingStrategy | undefined; + }, + ): streamWeb.ReadableStream; + /** + * Returns whether the stream has been read from or cancelled. + * @since v16.8.0 + */ + static isDisturbed(stream: Readable | NodeJS.ReadableStream): boolean; + /** + * Returns whether the stream was destroyed or errored before emitting `'end'`. + * @since v16.8.0 + */ + readonly readableAborted: boolean; + /** + * Is `true` if it is safe to call {@link read}, which means + * the stream has not been destroyed or emitted `'error'` or `'end'`. + * @since v11.4.0 + */ + readable: boolean; + /** + * Returns whether `'data'` has been emitted. + * @since v16.7.0, v14.18.0 + */ + readonly readableDidRead: boolean; + /** + * Getter for the property `encoding` of a given `Readable` stream. The `encoding` property can be set using the {@link setEncoding} method. + * @since v12.7.0 + */ + readonly readableEncoding: BufferEncoding | null; + /** + * Becomes `true` when [`'end'`](https://nodejs.org/docs/latest-v24.x/api/stream.html#event-end) event is emitted. + * @since v12.9.0 + */ + readonly readableEnded: boolean; + /** + * This property reflects the current state of a `Readable` stream as described + * in the [Three states](https://nodejs.org/docs/latest-v24.x/api/stream.html#three-states) section. + * @since v9.4.0 + */ + readonly readableFlowing: boolean | null; + /** + * Returns the value of `highWaterMark` passed when creating this `Readable`. + * @since v9.3.0 + */ + readonly readableHighWaterMark: number; + /** + * This property contains the number of bytes (or objects) in the queue + * ready to be read. The value provides introspection data regarding + * the status of the `highWaterMark`. + * @since v9.4.0 + */ + readonly readableLength: number; + /** + * Getter for the property `objectMode` of a given `Readable` stream. + * @since v12.3.0 + */ + readonly readableObjectMode: boolean; + /** + * Is `true` after `readable.destroy()` has been called. + * @since v8.0.0 + */ + destroyed: boolean; + /** + * Is `true` after `'close'` has been emitted. + * @since v18.0.0 + */ + readonly closed: boolean; + /** + * Returns error if the stream has been destroyed with an error. + * @since v18.0.0 + */ + readonly errored: Error | null; + constructor(opts?: ReadableOptions); + _construct?(callback: (error?: Error | null) => void): void; + _read(size: number): void; + /** + * The `readable.read()` method reads data out of the internal buffer and + * returns it. If no data is available to be read, `null` is returned. By default, + * the data is returned as a `Buffer` object unless an encoding has been + * specified using the `readable.setEncoding()` method or the stream is operating + * in object mode. + * + * The optional `size` argument specifies a specific number of bytes to read. If + * `size` bytes are not available to be read, `null` will be returned _unless_ the + * stream has ended, in which case all of the data remaining in the internal buffer + * will be returned. + * + * If the `size` argument is not specified, all of the data contained in the + * internal buffer will be returned. + * + * The `size` argument must be less than or equal to 1 GiB. + * + * The `readable.read()` method should only be called on `Readable` streams + * operating in paused mode. In flowing mode, `readable.read()` is called + * automatically until the internal buffer is fully drained. + * + * ```js + * const readable = getReadableStreamSomehow(); + * + * // 'readable' may be triggered multiple times as data is buffered in + * readable.on('readable', () => { + * let chunk; + * console.log('Stream is readable (new data received in buffer)'); + * // Use a loop to make sure we read all currently available data + * while (null !== (chunk = readable.read())) { + * console.log(`Read ${chunk.length} bytes of data...`); + * } + * }); + * + * // 'end' will be triggered once when there is no more data available + * readable.on('end', () => { + * console.log('Reached end of stream.'); + * }); + * ``` + * + * Each call to `readable.read()` returns a chunk of data, or `null`. The chunks + * are not concatenated. A `while` loop is necessary to consume all data + * currently in the buffer. When reading a large file `.read()` may return `null`, + * having consumed all buffered content so far, but there is still more data to + * come not yet buffered. In this case a new `'readable'` event will be emitted + * when there is more data in the buffer. Finally the `'end'` event will be + * emitted when there is no more data to come. + * + * Therefore to read a file's whole contents from a `readable`, it is necessary + * to collect chunks across multiple `'readable'` events: + * + * ```js + * const chunks = []; + * + * readable.on('readable', () => { + * let chunk; + * while (null !== (chunk = readable.read())) { + * chunks.push(chunk); + * } + * }); + * + * readable.on('end', () => { + * const content = chunks.join(''); + * }); + * ``` + * + * A `Readable` stream in object mode will always return a single item from + * a call to `readable.read(size)`, regardless of the value of the `size` argument. + * + * If the `readable.read()` method returns a chunk of data, a `'data'` event will + * also be emitted. + * + * Calling {@link read} after the `'end'` event has + * been emitted will return `null`. No runtime error will be raised. + * @since v0.9.4 + * @param size Optional argument to specify how much data to read. + */ + read(size?: number): any; + /** + * The `readable.setEncoding()` method sets the character encoding for + * data read from the `Readable` stream. + * + * By default, no encoding is assigned and stream data will be returned as `Buffer` objects. Setting an encoding causes the stream data + * to be returned as strings of the specified encoding rather than as `Buffer` objects. For instance, calling `readable.setEncoding('utf8')` will cause the + * output data to be interpreted as UTF-8 data, and passed as strings. Calling `readable.setEncoding('hex')` will cause the data to be encoded in hexadecimal + * string format. + * + * The `Readable` stream will properly handle multi-byte characters delivered + * through the stream that would otherwise become improperly decoded if simply + * pulled from the stream as `Buffer` objects. + * + * ```js + * const readable = getReadableStreamSomehow(); + * readable.setEncoding('utf8'); + * readable.on('data', (chunk) => { + * assert.equal(typeof chunk, 'string'); + * console.log('Got %d characters of string data:', chunk.length); + * }); + * ``` + * @since v0.9.4 + * @param encoding The encoding to use. + */ + setEncoding(encoding: BufferEncoding): this; + /** + * The `readable.pause()` method will cause a stream in flowing mode to stop + * emitting `'data'` events, switching out of flowing mode. Any data that + * becomes available will remain in the internal buffer. + * + * ```js + * const readable = getReadableStreamSomehow(); + * readable.on('data', (chunk) => { + * console.log(`Received ${chunk.length} bytes of data.`); + * readable.pause(); + * console.log('There will be no additional data for 1 second.'); + * setTimeout(() => { + * console.log('Now data will start flowing again.'); + * readable.resume(); + * }, 1000); + * }); + * ``` + * + * The `readable.pause()` method has no effect if there is a `'readable'` event listener. + * @since v0.9.4 + */ + pause(): this; + /** + * The `readable.resume()` method causes an explicitly paused `Readable` stream to + * resume emitting `'data'` events, switching the stream into flowing mode. + * + * The `readable.resume()` method can be used to fully consume the data from a + * stream without actually processing any of that data: + * + * ```js + * getReadableStreamSomehow() + * .resume() + * .on('end', () => { + * console.log('Reached the end, but did not read anything.'); + * }); + * ``` + * + * The `readable.resume()` method has no effect if there is a `'readable'` event listener. + * @since v0.9.4 + */ + resume(): this; + /** + * The `readable.isPaused()` method returns the current operating state of the `Readable`. + * This is used primarily by the mechanism that underlies the `readable.pipe()` method. + * In most typical cases, there will be no reason to use this method directly. + * + * ```js + * const readable = new stream.Readable(); + * + * readable.isPaused(); // === false + * readable.pause(); + * readable.isPaused(); // === true + * readable.resume(); + * readable.isPaused(); // === false + * ``` + * @since v0.11.14 + */ + isPaused(): boolean; + /** + * The `readable.unpipe()` method detaches a `Writable` stream previously attached + * using the {@link pipe} method. + * + * If the `destination` is not specified, then _all_ pipes are detached. + * + * If the `destination` is specified, but no pipe is set up for it, then + * the method does nothing. + * + * ```js + * import fs from 'node:fs'; + * const readable = getReadableStreamSomehow(); + * const writable = fs.createWriteStream('file.txt'); + * // All the data from readable goes into 'file.txt', + * // but only for the first second. + * readable.pipe(writable); + * setTimeout(() => { + * console.log('Stop writing to file.txt.'); + * readable.unpipe(writable); + * console.log('Manually close the file stream.'); + * writable.end(); + * }, 1000); + * ``` + * @since v0.9.4 + * @param destination Optional specific stream to unpipe + */ + unpipe(destination?: NodeJS.WritableStream): this; + /** + * Passing `chunk` as `null` signals the end of the stream (EOF) and behaves the + * same as `readable.push(null)`, after which no more data can be written. The EOF + * signal is put at the end of the buffer and any buffered data will still be + * flushed. + * + * The `readable.unshift()` method pushes a chunk of data back into the internal + * buffer. This is useful in certain situations where a stream is being consumed by + * code that needs to "un-consume" some amount of data that it has optimistically + * pulled out of the source, so that the data can be passed on to some other party. + * + * The `stream.unshift(chunk)` method cannot be called after the `'end'` event + * has been emitted or a runtime error will be thrown. + * + * Developers using `stream.unshift()` often should consider switching to + * use of a `Transform` stream instead. See the `API for stream implementers` section for more information. + * + * ```js + * // Pull off a header delimited by \n\n. + * // Use unshift() if we get too much. + * // Call the callback with (error, header, stream). + * import { StringDecoder } from 'node:string_decoder'; + * function parseHeader(stream, callback) { + * stream.on('error', callback); + * stream.on('readable', onReadable); + * const decoder = new StringDecoder('utf8'); + * let header = ''; + * function onReadable() { + * let chunk; + * while (null !== (chunk = stream.read())) { + * const str = decoder.write(chunk); + * if (str.includes('\n\n')) { + * // Found the header boundary. + * const split = str.split(/\n\n/); + * header += split.shift(); + * const remaining = split.join('\n\n'); + * const buf = Buffer.from(remaining, 'utf8'); + * stream.removeListener('error', callback); + * // Remove the 'readable' listener before unshifting. + * stream.removeListener('readable', onReadable); + * if (buf.length) + * stream.unshift(buf); + * // Now the body of the message can be read from the stream. + * callback(null, header, stream); + * return; + * } + * // Still reading the header. + * header += str; + * } + * } + * } + * ``` + * + * Unlike {@link push}, `stream.unshift(chunk)` will not + * end the reading process by resetting the internal reading state of the stream. + * This can cause unexpected results if `readable.unshift()` is called during a + * read (i.e. from within a {@link _read} implementation on a + * custom stream). Following the call to `readable.unshift()` with an immediate {@link push} will reset the reading state appropriately, + * however it is best to simply avoid calling `readable.unshift()` while in the + * process of performing a read. + * @since v0.9.11 + * @param chunk Chunk of data to unshift onto the read queue. For streams not operating in object mode, `chunk` must + * be a {string}, {Buffer}, {TypedArray}, {DataView} or `null`. For object mode streams, `chunk` may be any JavaScript value. + * @param encoding Encoding of string chunks. Must be a valid `Buffer` encoding, such as `'utf8'` or `'ascii'`. + */ + unshift(chunk: any, encoding?: BufferEncoding): void; + /** + * Prior to Node.js 0.10, streams did not implement the entire `node:stream` module API as it is currently defined. (See `Compatibility` for more + * information.) + * + * When using an older Node.js library that emits `'data'` events and has a {@link pause} method that is advisory only, the `readable.wrap()` method can be used to create a `Readable` + * stream that uses + * the old stream as its data source. + * + * It will rarely be necessary to use `readable.wrap()` but the method has been + * provided as a convenience for interacting with older Node.js applications and + * libraries. + * + * ```js + * import { OldReader } from './old-api-module.js'; + * import { Readable } from 'node:stream'; + * const oreader = new OldReader(); + * const myReader = new Readable().wrap(oreader); + * + * myReader.on('readable', () => { + * myReader.read(); // etc. + * }); + * ``` + * @since v0.9.4 + * @param stream An "old style" readable stream + */ + wrap(stream: NodeJS.ReadableStream): this; + push(chunk: any, encoding?: BufferEncoding): boolean; + /** + * The iterator created by this method gives users the option to cancel the destruction + * of the stream if the `for await...of` loop is exited by `return`, `break`, or `throw`, + * or if the iterator should destroy the stream if the stream emitted an error during iteration. + * @since v16.3.0 + * @param options.destroyOnReturn When set to `false`, calling `return` on the async iterator, + * or exiting a `for await...of` iteration using a `break`, `return`, or `throw` will not destroy the stream. + * **Default: `true`**. + */ + iterator(options?: { destroyOnReturn?: boolean }): NodeJS.AsyncIterator; + /** + * This method allows mapping over the stream. The *fn* function will be called for every chunk in the stream. + * If the *fn* function returns a promise - that promise will be `await`ed before being passed to the result stream. + * @since v17.4.0, v16.14.0 + * @param fn a function to map over every chunk in the stream. Async or not. + * @returns a stream mapped with the function *fn*. + */ + map(fn: (data: any, options?: Pick) => any, options?: ArrayOptions): Readable; + /** + * This method allows filtering the stream. For each chunk in the stream the *fn* function will be called + * and if it returns a truthy value, the chunk will be passed to the result stream. + * If the *fn* function returns a promise - that promise will be `await`ed. + * @since v17.4.0, v16.14.0 + * @param fn a function to filter chunks from the stream. Async or not. + * @returns a stream filtered with the predicate *fn*. + */ + filter( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Readable; + /** + * This method allows iterating a stream. For each chunk in the stream the *fn* function will be called. + * If the *fn* function returns a promise - that promise will be `await`ed. + * + * This method is different from `for await...of` loops in that it can optionally process chunks concurrently. + * In addition, a `forEach` iteration can only be stopped by having passed a `signal` option + * and aborting the related AbortController while `for await...of` can be stopped with `break` or `return`. + * In either case the stream will be destroyed. + * + * This method is different from listening to the `'data'` event in that it uses the `readable` event + * in the underlying machinary and can limit the number of concurrent *fn* calls. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise for when the stream has finished. + */ + forEach( + fn: (data: any, options?: Pick) => void | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method allows easily obtaining the contents of a stream. + * + * As this method reads the entire stream into memory, it negates the benefits of streams. It's intended + * for interoperability and convenience, not as the primary way to consume streams. + * @since v17.5.0 + * @returns a promise containing an array with the contents of the stream. + */ + toArray(options?: Pick): Promise; + /** + * This method is similar to `Array.prototype.some` and calls *fn* on each chunk in the stream + * until the awaited return value is `true` (or any truthy value). Once an *fn* call on a chunk + * `await`ed return value is truthy, the stream is destroyed and the promise is fulfilled with `true`. + * If none of the *fn* calls on the chunks return a truthy value, the promise is fulfilled with `false`. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise evaluating to `true` if *fn* returned a truthy value for at least one of the chunks. + */ + some( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method is similar to `Array.prototype.find` and calls *fn* on each chunk in the stream + * to find a chunk with a truthy value for *fn*. Once an *fn* call's awaited return value is truthy, + * the stream is destroyed and the promise is fulfilled with value for which *fn* returned a truthy value. + * If all of the *fn* calls on the chunks return a falsy value, the promise is fulfilled with `undefined`. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise evaluating to the first chunk for which *fn* evaluated with a truthy value, + * or `undefined` if no element was found. + */ + find( + fn: (data: any, options?: Pick) => data is T, + options?: ArrayOptions, + ): Promise; + find( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method is similar to `Array.prototype.every` and calls *fn* on each chunk in the stream + * to check if all awaited return values are truthy value for *fn*. Once an *fn* call on a chunk + * `await`ed return value is falsy, the stream is destroyed and the promise is fulfilled with `false`. + * If all of the *fn* calls on the chunks return a truthy value, the promise is fulfilled with `true`. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise evaluating to `true` if *fn* returned a truthy value for every one of the chunks. + */ + every( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method returns a new stream by applying the given callback to each chunk of the stream + * and then flattening the result. + * + * It is possible to return a stream or another iterable or async iterable from *fn* and the result streams + * will be merged (flattened) into the returned stream. + * @since v17.5.0 + * @param fn a function to map over every chunk in the stream. May be async. May be a stream or generator. + * @returns a stream flat-mapped with the function *fn*. + */ + flatMap(fn: (data: any, options?: Pick) => any, options?: ArrayOptions): Readable; + /** + * This method returns a new stream with the first *limit* chunks dropped from the start. + * @since v17.5.0 + * @param limit the number of chunks to drop from the readable. + * @returns a stream with *limit* chunks dropped from the start. + */ + drop(limit: number, options?: Pick): Readable; + /** + * This method returns a new stream with the first *limit* chunks. + * @since v17.5.0 + * @param limit the number of chunks to take from the readable. + * @returns a stream with *limit* chunks taken. + */ + take(limit: number, options?: Pick): Readable; + /** + * This method returns a new stream with chunks of the underlying stream paired with a counter + * in the form `[index, chunk]`. The first index value is `0` and it increases by 1 for each chunk produced. + * @since v17.5.0 + * @returns a stream of indexed pairs. + */ + asIndexedPairs(options?: Pick): Readable; + /** + * This method calls *fn* on each chunk of the stream in order, passing it the result from the calculation + * on the previous element. It returns a promise for the final value of the reduction. + * + * If no *initial* value is supplied the first chunk of the stream is used as the initial value. + * If the stream is empty, the promise is rejected with a `TypeError` with the `ERR_INVALID_ARGS` code property. + * + * The reducer function iterates the stream element-by-element which means that there is no *concurrency* parameter + * or parallelism. To perform a reduce concurrently, you can extract the async function to `readable.map` method. + * @since v17.5.0 + * @param fn a reducer function to call over every chunk in the stream. Async or not. + * @param initial the initial value to use in the reduction. + * @returns a promise for the final value of the reduction. + */ + reduce( + fn: (previous: any, data: any, options?: Pick) => T, + initial?: undefined, + options?: Pick, + ): Promise; + reduce( + fn: (previous: T, data: any, options?: Pick) => T, + initial: T, + options?: Pick, + ): Promise; + _destroy(error: Error | null, callback: (error?: Error | null) => void): void; + /** + * Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'` event (unless `emitClose` is set to `false`). After this call, the readable + * stream will release any internal resources and subsequent calls to `push()` will be ignored. + * + * Once `destroy()` has been called any further calls will be a no-op and no + * further errors except from `_destroy()` may be emitted as `'error'`. + * + * Implementors should not override this method, but instead implement `readable._destroy()`. + * @since v8.0.0 + * @param error Error which will be passed as payload in `'error'` event + */ + destroy(error?: Error): this; + /** + * @returns `AsyncIterator` to fully consume the stream. + * @since v10.0.0 + */ + [Symbol.asyncIterator](): NodeJS.AsyncIterator; + /** + * Calls `readable.destroy()` with an `AbortError` and returns + * a promise that fulfills when the stream is finished. + * @since v20.4.0 + */ + [Symbol.asyncDispose](): Promise; + /** + * Event emitter + * The defined events on documents including: + * 1. close + * 2. data + * 3. end + * 4. error + * 5. pause + * 6. readable + * 7. resume + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: any) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "data", chunk: any): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "pause"): boolean; + emit(event: "readable"): boolean; + emit(event: "resume"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: any) => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: any) => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: any) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: any) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "data", listener: (chunk: any) => void): this; + removeListener(event: "end", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "pause", listener: () => void): this; + removeListener(event: "readable", listener: () => void): this; + removeListener(event: "resume", listener: () => void): this; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + interface WritableOptions extends StreamOptions { + decodeStrings?: boolean | undefined; + defaultEncoding?: BufferEncoding | undefined; + write?( + this: T, + chunk: any, + encoding: BufferEncoding, + callback: (error?: Error | null) => void, + ): void; + writev?( + this: T, + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + final?(this: T, callback: (error?: Error | null) => void): void; + } + /** + * @since v0.9.4 + */ + class Writable extends Stream implements NodeJS.WritableStream { + /** + * A utility method for creating a `Writable` from a web `WritableStream`. + * @since v17.0.0 + */ + static fromWeb( + writableStream: streamWeb.WritableStream, + options?: Pick, + ): Writable; + /** + * A utility method for creating a web `WritableStream` from a `Writable`. + * @since v17.0.0 + */ + static toWeb(streamWritable: Writable): streamWeb.WritableStream; + /** + * Is `true` if it is safe to call `writable.write()`, which means + * the stream has not been destroyed, errored, or ended. + * @since v11.4.0 + */ + readonly writable: boolean; + /** + * Returns whether the stream was destroyed or errored before emitting `'finish'`. + * @since v18.0.0, v16.17.0 + */ + readonly writableAborted: boolean; + /** + * Is `true` after `writable.end()` has been called. This property + * does not indicate whether the data has been flushed, for this use `writable.writableFinished` instead. + * @since v12.9.0 + */ + readonly writableEnded: boolean; + /** + * Is set to `true` immediately before the `'finish'` event is emitted. + * @since v12.6.0 + */ + readonly writableFinished: boolean; + /** + * Return the value of `highWaterMark` passed when creating this `Writable`. + * @since v9.3.0 + */ + readonly writableHighWaterMark: number; + /** + * This property contains the number of bytes (or objects) in the queue + * ready to be written. The value provides introspection data regarding + * the status of the `highWaterMark`. + * @since v9.4.0 + */ + readonly writableLength: number; + /** + * Getter for the property `objectMode` of a given `Writable` stream. + * @since v12.3.0 + */ + readonly writableObjectMode: boolean; + /** + * Number of times `writable.uncork()` needs to be + * called in order to fully uncork the stream. + * @since v13.2.0, v12.16.0 + */ + readonly writableCorked: number; + /** + * Is `true` after `writable.destroy()` has been called. + * @since v8.0.0 + */ + destroyed: boolean; + /** + * Is `true` after `'close'` has been emitted. + * @since v18.0.0 + */ + readonly closed: boolean; + /** + * Returns error if the stream has been destroyed with an error. + * @since v18.0.0 + */ + readonly errored: Error | null; + /** + * Is `true` if the stream's buffer has been full and stream will emit `'drain'`. + * @since v15.2.0, v14.17.0 + */ + readonly writableNeedDrain: boolean; + constructor(opts?: WritableOptions); + _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; + _writev?( + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + _construct?(callback: (error?: Error | null) => void): void; + _destroy(error: Error | null, callback: (error?: Error | null) => void): void; + _final(callback: (error?: Error | null) => void): void; + /** + * The `writable.write()` method writes some data to the stream, and calls the + * supplied `callback` once the data has been fully handled. If an error + * occurs, the `callback` will be called with the error as its + * first argument. The `callback` is called asynchronously and before `'error'` is + * emitted. + * + * The return value is `true` if the internal buffer is less than the `highWaterMark` configured when the stream was created after admitting `chunk`. + * If `false` is returned, further attempts to write data to the stream should + * stop until the `'drain'` event is emitted. + * + * While a stream is not draining, calls to `write()` will buffer `chunk`, and + * return false. Once all currently buffered chunks are drained (accepted for + * delivery by the operating system), the `'drain'` event will be emitted. + * Once `write()` returns false, do not write more chunks + * until the `'drain'` event is emitted. While calling `write()` on a stream that + * is not draining is allowed, Node.js will buffer all written chunks until + * maximum memory usage occurs, at which point it will abort unconditionally. + * Even before it aborts, high memory usage will cause poor garbage collector + * performance and high RSS (which is not typically released back to the system, + * even after the memory is no longer required). Since TCP sockets may never + * drain if the remote peer does not read the data, writing a socket that is + * not draining may lead to a remotely exploitable vulnerability. + * + * Writing data while the stream is not draining is particularly + * problematic for a `Transform`, because the `Transform` streams are paused + * by default until they are piped or a `'data'` or `'readable'` event handler + * is added. + * + * If the data to be written can be generated or fetched on demand, it is + * recommended to encapsulate the logic into a `Readable` and use {@link pipe}. However, if calling `write()` is preferred, it is + * possible to respect backpressure and avoid memory issues using the `'drain'` event: + * + * ```js + * function write(data, cb) { + * if (!stream.write(data)) { + * stream.once('drain', cb); + * } else { + * process.nextTick(cb); + * } + * } + * + * // Wait for cb to be called before doing any other write. + * write('hello', () => { + * console.log('Write completed, do more writes now.'); + * }); + * ``` + * + * A `Writable` stream in object mode will always ignore the `encoding` argument. + * @since v0.9.4 + * @param chunk Optional data to write. For streams not operating in object mode, `chunk` must be a {string}, {Buffer}, + * {TypedArray} or {DataView}. For object mode streams, `chunk` may be any JavaScript value other than `null`. + * @param [encoding='utf8'] The encoding, if `chunk` is a string. + * @param callback Callback for when this chunk of data is flushed. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + write(chunk: any, callback?: (error: Error | null | undefined) => void): boolean; + write(chunk: any, encoding: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean; + /** + * The `writable.setDefaultEncoding()` method sets the default `encoding` for a `Writable` stream. + * @since v0.11.15 + * @param encoding The new default encoding + */ + setDefaultEncoding(encoding: BufferEncoding): this; + /** + * Calling the `writable.end()` method signals that no more data will be written + * to the `Writable`. The optional `chunk` and `encoding` arguments allow one + * final additional chunk of data to be written immediately before closing the + * stream. + * + * Calling the {@link write} method after calling {@link end} will raise an error. + * + * ```js + * // Write 'hello, ' and then end with 'world!'. + * import fs from 'node:fs'; + * const file = fs.createWriteStream('example.txt'); + * file.write('hello, '); + * file.end('world!'); + * // Writing more now is not allowed! + * ``` + * @since v0.9.4 + * @param chunk Optional data to write. For streams not operating in object mode, `chunk` must be a {string}, {Buffer}, + * {TypedArray} or {DataView}. For object mode streams, `chunk` may be any JavaScript value other than `null`. + * @param encoding The encoding if `chunk` is a string + * @param callback Callback for when the stream is finished. + */ + end(cb?: () => void): this; + end(chunk: any, cb?: () => void): this; + end(chunk: any, encoding: BufferEncoding, cb?: () => void): this; + /** + * The `writable.cork()` method forces all written data to be buffered in memory. + * The buffered data will be flushed when either the {@link uncork} or {@link end} methods are called. + * + * The primary intent of `writable.cork()` is to accommodate a situation in which + * several small chunks are written to the stream in rapid succession. Instead of + * immediately forwarding them to the underlying destination, `writable.cork()` buffers all the chunks until `writable.uncork()` is called, which will pass them + * all to `writable._writev()`, if present. This prevents a head-of-line blocking + * situation where data is being buffered while waiting for the first small chunk + * to be processed. However, use of `writable.cork()` without implementing `writable._writev()` may have an adverse effect on throughput. + * + * See also: `writable.uncork()`, `writable._writev()`. + * @since v0.11.2 + */ + cork(): void; + /** + * The `writable.uncork()` method flushes all data buffered since {@link cork} was called. + * + * When using `writable.cork()` and `writable.uncork()` to manage the buffering + * of writes to a stream, defer calls to `writable.uncork()` using `process.nextTick()`. Doing so allows batching of all `writable.write()` calls that occur within a given Node.js event + * loop phase. + * + * ```js + * stream.cork(); + * stream.write('some '); + * stream.write('data '); + * process.nextTick(() => stream.uncork()); + * ``` + * + * If the `writable.cork()` method is called multiple times on a stream, the + * same number of calls to `writable.uncork()` must be called to flush the buffered + * data. + * + * ```js + * stream.cork(); + * stream.write('some '); + * stream.cork(); + * stream.write('data '); + * process.nextTick(() => { + * stream.uncork(); + * // The data will not be flushed until uncork() is called a second time. + * stream.uncork(); + * }); + * ``` + * + * See also: `writable.cork()`. + * @since v0.11.2 + */ + uncork(): void; + /** + * Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'` event (unless `emitClose` is set to `false`). After this call, the writable + * stream has ended and subsequent calls to `write()` or `end()` will result in + * an `ERR_STREAM_DESTROYED` error. + * This is a destructive and immediate way to destroy a stream. Previous calls to `write()` may not have drained, and may trigger an `ERR_STREAM_DESTROYED` error. + * Use `end()` instead of destroy if data should flush before close, or wait for + * the `'drain'` event before destroying the stream. + * + * Once `destroy()` has been called any further calls will be a no-op and no + * further errors except from `_destroy()` may be emitted as `'error'`. + * + * Implementors should not override this method, + * but instead implement `writable._destroy()`. + * @since v8.0.0 + * @param error Optional, an error to emit with `'error'` event. + */ + destroy(error?: Error): this; + /** + * Calls `writable.destroy()` with an `AbortError` and returns + * a promise that fulfills when the stream is finished. + * @since v22.4.0, v20.16.0 + */ + [Symbol.asyncDispose](): Promise; + /** + * Event emitter + * The defined events on documents including: + * 1. close + * 2. drain + * 3. error + * 4. finish + * 5. pipe + * 6. unpipe + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: Readable) => void): this; + addListener(event: "unpipe", listener: (src: Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "drain"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pipe", src: Readable): boolean; + emit(event: "unpipe", src: Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: Readable) => void): this; + on(event: "unpipe", listener: (src: Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: Readable) => void): this; + once(event: "unpipe", listener: (src: Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: Readable) => void): this; + prependListener(event: "unpipe", listener: (src: Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "drain", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "finish", listener: () => void): this; + removeListener(event: "pipe", listener: (src: Readable) => void): this; + removeListener(event: "unpipe", listener: (src: Readable) => void): this; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + interface DuplexOptions extends ReadableOptions, WritableOptions { + allowHalfOpen?: boolean | undefined; + readableObjectMode?: boolean | undefined; + writableObjectMode?: boolean | undefined; + readableHighWaterMark?: number | undefined; + writableHighWaterMark?: number | undefined; + writableCorked?: number | undefined; + } + /** + * Duplex streams are streams that implement both the `Readable` and `Writable` interfaces. + * + * Examples of `Duplex` streams include: + * + * * `TCP sockets` + * * `zlib streams` + * * `crypto streams` + * @since v0.9.4 + */ + class Duplex extends Stream implements NodeJS.ReadWriteStream { + /** + * If `false` then the stream will automatically end the writable side when the + * readable side ends. Set initially by the `allowHalfOpen` constructor option, + * which defaults to `true`. + * + * This can be changed manually to change the half-open behavior of an existing + * `Duplex` stream instance, but must be changed before the `'end'` event is emitted. + * @since v0.9.4 + */ + allowHalfOpen: boolean; + constructor(opts?: DuplexOptions); + /** + * A utility method for creating duplex streams. + * + * - `Stream` converts writable stream into writable `Duplex` and readable stream + * to `Duplex`. + * - `Blob` converts into readable `Duplex`. + * - `string` converts into readable `Duplex`. + * - `ArrayBuffer` converts into readable `Duplex`. + * - `AsyncIterable` converts into a readable `Duplex`. Cannot yield `null`. + * - `AsyncGeneratorFunction` converts into a readable/writable transform + * `Duplex`. Must take a source `AsyncIterable` as first parameter. Cannot yield + * `null`. + * - `AsyncFunction` converts into a writable `Duplex`. Must return + * either `null` or `undefined` + * - `Object ({ writable, readable })` converts `readable` and + * `writable` into `Stream` and then combines them into `Duplex` where the + * `Duplex` will write to the `writable` and read from the `readable`. + * - `Promise` converts into readable `Duplex`. Value `null` is ignored. + * + * @since v16.8.0 + */ + static from( + src: + | Stream + | NodeBlob + | ArrayBuffer + | string + | Iterable + | AsyncIterable + | AsyncGeneratorFunction + | Promise + | Object, + ): Duplex; + /** + * A utility method for creating a web `ReadableStream` and `WritableStream` from a `Duplex`. + * @since v17.0.0 + */ + static toWeb(streamDuplex: Duplex): { + readable: streamWeb.ReadableStream; + writable: streamWeb.WritableStream; + }; + /** + * A utility method for creating a `Duplex` from a web `ReadableStream` and `WritableStream`. + * @since v17.0.0 + */ + static fromWeb( + duplexStream: { + readable: streamWeb.ReadableStream; + writable: streamWeb.WritableStream; + }, + options?: Pick< + DuplexOptions, + "allowHalfOpen" | "decodeStrings" | "encoding" | "highWaterMark" | "objectMode" | "signal" + >, + ): Duplex; + /** + * Event emitter + * The defined events on documents including: + * 1. close + * 2. data + * 3. drain + * 4. end + * 5. error + * 6. finish + * 7. pause + * 8. pipe + * 9. readable + * 10. resume + * 11. unpipe + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: any) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "pipe", listener: (src: Readable) => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "unpipe", listener: (src: Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "data", chunk: any): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pause"): boolean; + emit(event: "pipe", src: Readable): boolean; + emit(event: "readable"): boolean; + emit(event: "resume"): boolean; + emit(event: "unpipe", src: Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: any) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pause", listener: () => void): this; + on(event: "pipe", listener: (src: Readable) => void): this; + on(event: "readable", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "unpipe", listener: (src: Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: any) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pause", listener: () => void): this; + once(event: "pipe", listener: (src: Readable) => void): this; + once(event: "readable", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "unpipe", listener: (src: Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: any) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "pipe", listener: (src: Readable) => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "unpipe", listener: (src: Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: any) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "data", listener: (chunk: any) => void): this; + removeListener(event: "drain", listener: () => void): this; + removeListener(event: "end", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "finish", listener: () => void): this; + removeListener(event: "pause", listener: () => void): this; + removeListener(event: "pipe", listener: (src: Readable) => void): this; + removeListener(event: "readable", listener: () => void): this; + removeListener(event: "resume", listener: () => void): this; + removeListener(event: "unpipe", listener: (src: Readable) => void): this; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + interface Duplex extends Readable, Writable {} + /** + * The utility function `duplexPair` returns an Array with two items, + * each being a `Duplex` stream connected to the other side: + * + * ```js + * const [ sideA, sideB ] = duplexPair(); + * ``` + * + * Whatever is written to one stream is made readable on the other. It provides + * behavior analogous to a network connection, where the data written by the client + * becomes readable by the server, and vice-versa. + * + * The Duplex streams are symmetrical; one or the other may be used without any + * difference in behavior. + * @param options A value to pass to both {@link Duplex} constructors, + * to set options such as buffering. + * @since v22.6.0 + */ + function duplexPair(options?: DuplexOptions): [Duplex, Duplex]; + type TransformCallback = (error?: Error | null, data?: any) => void; + interface TransformOptions extends DuplexOptions { + transform?(this: T, chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; + flush?(this: T, callback: TransformCallback): void; + } + /** + * Transform streams are `Duplex` streams where the output is in some way + * related to the input. Like all `Duplex` streams, `Transform` streams + * implement both the `Readable` and `Writable` interfaces. + * + * Examples of `Transform` streams include: + * + * * `zlib streams` + * * `crypto streams` + * @since v0.9.4 + */ + class Transform extends Duplex { + constructor(opts?: TransformOptions); + _transform(chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; + _flush(callback: TransformCallback): void; + } + /** + * The `stream.PassThrough` class is a trivial implementation of a `Transform` stream that simply passes the input bytes across to the output. Its purpose is + * primarily for examples and testing, but there are some use cases where `stream.PassThrough` is useful as a building block for novel sorts of streams. + */ + class PassThrough extends Transform {} + /** + * A stream to attach a signal to. + * + * Attaches an AbortSignal to a readable or writeable stream. This lets code + * control stream destruction using an `AbortController`. + * + * Calling `abort` on the `AbortController` corresponding to the passed `AbortSignal` will behave the same way as calling `.destroy(new AbortError())` on the + * stream, and `controller.error(new AbortError())` for webstreams. + * + * ```js + * import fs from 'node:fs'; + * + * const controller = new AbortController(); + * const read = addAbortSignal( + * controller.signal, + * fs.createReadStream(('object.json')), + * ); + * // Later, abort the operation closing the stream + * controller.abort(); + * ``` + * + * Or using an `AbortSignal` with a readable stream as an async iterable: + * + * ```js + * const controller = new AbortController(); + * setTimeout(() => controller.abort(), 10_000); // set a timeout + * const stream = addAbortSignal( + * controller.signal, + * fs.createReadStream(('object.json')), + * ); + * (async () => { + * try { + * for await (const chunk of stream) { + * await process(chunk); + * } + * } catch (e) { + * if (e.name === 'AbortError') { + * // The operation was cancelled + * } else { + * throw e; + * } + * } + * })(); + * ``` + * + * Or using an `AbortSignal` with a ReadableStream: + * + * ```js + * const controller = new AbortController(); + * const rs = new ReadableStream({ + * start(controller) { + * controller.enqueue('hello'); + * controller.enqueue('world'); + * controller.close(); + * }, + * }); + * + * addAbortSignal(controller.signal, rs); + * + * finished(rs, (err) => { + * if (err) { + * if (err.name === 'AbortError') { + * // The operation was cancelled + * } + * } + * }); + * + * const reader = rs.getReader(); + * + * reader.read().then(({ value, done }) => { + * console.log(value); // hello + * console.log(done); // false + * controller.abort(); + * }); + * ``` + * @since v15.4.0 + * @param signal A signal representing possible cancellation + * @param stream A stream to attach a signal to. + */ + function addAbortSignal(signal: AbortSignal, stream: T): T; + /** + * Returns the default highWaterMark used by streams. + * Defaults to `65536` (64 KiB), or `16` for `objectMode`. + * @since v19.9.0 + */ + function getDefaultHighWaterMark(objectMode: boolean): number; + /** + * Sets the default highWaterMark used by streams. + * @since v19.9.0 + * @param value highWaterMark value + */ + function setDefaultHighWaterMark(objectMode: boolean, value: number): void; + interface FinishedOptions extends Abortable { + error?: boolean | undefined; + readable?: boolean | undefined; + writable?: boolean | undefined; + } + /** + * A readable and/or writable stream/webstream. + * + * A function to get notified when a stream is no longer readable, writable + * or has experienced an error or a premature close event. + * + * ```js + * import { finished } from 'node:stream'; + * import fs from 'node:fs'; + * + * const rs = fs.createReadStream('archive.tar'); + * + * finished(rs, (err) => { + * if (err) { + * console.error('Stream failed.', err); + * } else { + * console.log('Stream is done reading.'); + * } + * }); + * + * rs.resume(); // Drain the stream. + * ``` + * + * Especially useful in error handling scenarios where a stream is destroyed + * prematurely (like an aborted HTTP request), and will not emit `'end'` or `'finish'`. + * + * The `finished` API provides [`promise version`](https://nodejs.org/docs/latest-v24.x/api/stream.html#streamfinishedstream-options). + * + * `stream.finished()` leaves dangling event listeners (in particular `'error'`, `'end'`, `'finish'` and `'close'`) after `callback` has been + * invoked. The reason for this is so that unexpected `'error'` events (due to + * incorrect stream implementations) do not cause unexpected crashes. + * If this is unwanted behavior then the returned cleanup function needs to be + * invoked in the callback: + * + * ```js + * const cleanup = finished(rs, (err) => { + * cleanup(); + * // ... + * }); + * ``` + * @since v10.0.0 + * @param stream A readable and/or writable stream. + * @param callback A callback function that takes an optional error argument. + * @returns A cleanup function which removes all registered listeners. + */ + function finished( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + options: FinishedOptions, + callback: (err?: NodeJS.ErrnoException | null) => void, + ): () => void; + function finished( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + callback: (err?: NodeJS.ErrnoException | null) => void, + ): () => void; + namespace finished { + function __promisify__( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + options?: FinishedOptions, + ): Promise; + } + type PipelineSourceFunction = () => Iterable | AsyncIterable; + type PipelineSource = Iterable | AsyncIterable | NodeJS.ReadableStream | PipelineSourceFunction; + type PipelineTransform, U> = + | NodeJS.ReadWriteStream + | (( + source: S extends (...args: any[]) => Iterable | AsyncIterable ? AsyncIterable + : S, + ) => AsyncIterable); + type PipelineTransformSource = PipelineSource | PipelineTransform; + type PipelineDestinationIterableFunction = (source: AsyncIterable) => AsyncIterable; + type PipelineDestinationPromiseFunction = (source: AsyncIterable) => Promise

; + type PipelineDestination, P> = S extends + PipelineTransformSource ? + | NodeJS.WritableStream + | PipelineDestinationIterableFunction + | PipelineDestinationPromiseFunction + : never; + type PipelineCallback> = S extends + PipelineDestinationPromiseFunction ? (err: NodeJS.ErrnoException | null, value: P) => void + : (err: NodeJS.ErrnoException | null) => void; + type PipelinePromise> = S extends + PipelineDestinationPromiseFunction ? Promise

: Promise; + interface PipelineOptions { + signal?: AbortSignal | undefined; + end?: boolean | undefined; + } + /** + * A module method to pipe between streams and generators forwarding errors and + * properly cleaning up and provide a callback when the pipeline is complete. + * + * ```js + * import { pipeline } from 'node:stream'; + * import fs from 'node:fs'; + * import zlib from 'node:zlib'; + * + * // Use the pipeline API to easily pipe a series of streams + * // together and get notified when the pipeline is fully done. + * + * // A pipeline to gzip a potentially huge tar file efficiently: + * + * pipeline( + * fs.createReadStream('archive.tar'), + * zlib.createGzip(), + * fs.createWriteStream('archive.tar.gz'), + * (err) => { + * if (err) { + * console.error('Pipeline failed.', err); + * } else { + * console.log('Pipeline succeeded.'); + * } + * }, + * ); + * ``` + * + * The `pipeline` API provides a [`promise version`](https://nodejs.org/docs/latest-v24.x/api/stream.html#streampipelinesource-transforms-destination-options). + * + * `stream.pipeline()` will call `stream.destroy(err)` on all streams except: + * + * * `Readable` streams which have emitted `'end'` or `'close'`. + * * `Writable` streams which have emitted `'finish'` or `'close'`. + * + * `stream.pipeline()` leaves dangling event listeners on the streams + * after the `callback` has been invoked. In the case of reuse of streams after + * failure, this can cause event listener leaks and swallowed errors. If the last + * stream is readable, dangling event listeners will be removed so that the last + * stream can be consumed later. + * + * `stream.pipeline()` closes all the streams when an error is raised. + * The `IncomingRequest` usage with `pipeline` could lead to an unexpected behavior + * once it would destroy the socket without sending the expected response. + * See the example below: + * + * ```js + * import fs from 'node:fs'; + * import http from 'node:http'; + * import { pipeline } from 'node:stream'; + * + * const server = http.createServer((req, res) => { + * const fileStream = fs.createReadStream('./fileNotExist.txt'); + * pipeline(fileStream, res, (err) => { + * if (err) { + * console.log(err); // No such file + * // this message can't be sent once `pipeline` already destroyed the socket + * return res.end('error!!!'); + * } + * }); + * }); + * ``` + * @since v10.0.0 + * @param callback Called when the pipeline is fully done. + */ + function pipeline, B extends PipelineDestination>( + source: A, + destination: B, + callback: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + destination: B, + callback: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + destination: B, + callback: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + destination: B, + callback: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + T4 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + transform4: T4, + destination: B, + callback: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline( + streams: ReadonlyArray, + callback: (err: NodeJS.ErrnoException | null) => void, + ): NodeJS.WritableStream; + function pipeline( + stream1: NodeJS.ReadableStream, + stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, + ...streams: Array< + NodeJS.ReadWriteStream | NodeJS.WritableStream | ((err: NodeJS.ErrnoException | null) => void) + > + ): NodeJS.WritableStream; + namespace pipeline { + function __promisify__, B extends PipelineDestination>( + source: A, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + T4 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + transform4: T4, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__( + streams: ReadonlyArray, + options?: PipelineOptions, + ): Promise; + function __promisify__( + stream1: NodeJS.ReadableStream, + stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, + ...streams: Array + ): Promise; + } + interface Pipe { + close(): void; + hasRef(): boolean; + ref(): void; + unref(): void; + } + /** + * Returns whether the stream has encountered an error. + * @since v17.3.0, v16.14.0 + */ + function isErrored(stream: Readable | Writable | NodeJS.ReadableStream | NodeJS.WritableStream): boolean; + /** + * Returns whether the stream is readable. + * @since v17.4.0, v16.14.0 + */ + function isReadable(stream: Readable | NodeJS.ReadableStream): boolean; + } + export = Stream; +} +declare module "node:stream" { + import stream = require("stream"); + export = stream; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/string_decoder.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/string_decoder.d.ts.html new file mode 100644 index 0000000..3632c16 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/string_decoder.d.ts.html @@ -0,0 +1,67 @@ +/** + * The `node:string_decoder` module provides an API for decoding `Buffer` objects + * into strings in a manner that preserves encoded multi-byte UTF-8 and UTF-16 + * characters. It can be accessed using: + * + * ```js + * import { StringDecoder } from 'node:string_decoder'; + * ``` + * + * The following example shows the basic use of the `StringDecoder` class. + * + * ```js + * import { StringDecoder } from 'node:string_decoder'; + * const decoder = new StringDecoder('utf8'); + * + * const cent = Buffer.from([0xC2, 0xA2]); + * console.log(decoder.write(cent)); // Prints: ¢ + * + * const euro = Buffer.from([0xE2, 0x82, 0xAC]); + * console.log(decoder.write(euro)); // Prints: € + * ``` + * + * When a `Buffer` instance is written to the `StringDecoder` instance, an + * internal buffer is used to ensure that the decoded string does not contain + * any incomplete multibyte characters. These are held in the buffer until the + * next call to `stringDecoder.write()` or until `stringDecoder.end()` is called. + * + * In the following example, the three UTF-8 encoded bytes of the European Euro + * symbol (`€`) are written over three separate operations: + * + * ```js + * import { StringDecoder } from 'node:string_decoder'; + * const decoder = new StringDecoder('utf8'); + * + * decoder.write(Buffer.from([0xE2])); + * decoder.write(Buffer.from([0x82])); + * console.log(decoder.end(Buffer.from([0xAC]))); // Prints: € + * ``` + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/string_decoder.js) + */ +declare module "string_decoder" { + class StringDecoder { + constructor(encoding?: BufferEncoding); + /** + * Returns a decoded string, ensuring that any incomplete multibyte characters at + * the end of the `Buffer`, or `TypedArray`, or `DataView` are omitted from the + * returned string and stored in an internal buffer for the next call to `stringDecoder.write()` or `stringDecoder.end()`. + * @since v0.1.99 + * @param buffer The bytes to decode. + */ + write(buffer: string | Buffer | NodeJS.ArrayBufferView): string; + /** + * Returns any remaining input stored in the internal buffer as a string. Bytes + * representing incomplete UTF-8 and UTF-16 characters will be replaced with + * substitution characters appropriate for the character encoding. + * + * If the `buffer` argument is provided, one final call to `stringDecoder.write()` is performed before returning the remaining input. + * After `end()` is called, the `stringDecoder` object can be reused for new input. + * @since v0.9.3 + * @param buffer The bytes to decode. + */ + end(buffer?: string | Buffer | NodeJS.ArrayBufferView): string; + } +} +declare module "node:string_decoder" { + export * from "string_decoder"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/test.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/test.d.ts.html new file mode 100644 index 0000000..d397dba --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/test.d.ts.html @@ -0,0 +1,2334 @@ +/** + * The `node:test` module facilitates the creation of JavaScript tests. + * To access it: + * + * ```js + * import test from 'node:test'; + * ``` + * + * This module is only available under the `node:` scheme. The following will not + * work: + * + * ```js + * import test from 'node:test'; + * ``` + * + * Tests created via the `test` module consist of a single function that is + * processed in one of three ways: + * + * 1. A synchronous function that is considered failing if it throws an exception, + * and is considered passing otherwise. + * 2. A function that returns a `Promise` that is considered failing if the `Promise` rejects, and is considered passing if the `Promise` fulfills. + * 3. A function that receives a callback function. If the callback receives any + * truthy value as its first argument, the test is considered failing. If a + * falsy value is passed as the first argument to the callback, the test is + * considered passing. If the test function receives a callback function and + * also returns a `Promise`, the test will fail. + * + * The following example illustrates how tests are written using the `test` module. + * + * ```js + * test('synchronous passing test', (t) => { + * // This test passes because it does not throw an exception. + * assert.strictEqual(1, 1); + * }); + * + * test('synchronous failing test', (t) => { + * // This test fails because it throws an exception. + * assert.strictEqual(1, 2); + * }); + * + * test('asynchronous passing test', async (t) => { + * // This test passes because the Promise returned by the async + * // function is settled and not rejected. + * assert.strictEqual(1, 1); + * }); + * + * test('asynchronous failing test', async (t) => { + * // This test fails because the Promise returned by the async + * // function is rejected. + * assert.strictEqual(1, 2); + * }); + * + * test('failing test using Promises', (t) => { + * // Promises can be used directly as well. + * return new Promise((resolve, reject) => { + * setImmediate(() => { + * reject(new Error('this will cause the test to fail')); + * }); + * }); + * }); + * + * test('callback passing test', (t, done) => { + * // done() is the callback function. When the setImmediate() runs, it invokes + * // done() with no arguments. + * setImmediate(done); + * }); + * + * test('callback failing test', (t, done) => { + * // When the setImmediate() runs, done() is invoked with an Error object and + * // the test fails. + * setImmediate(() => { + * done(new Error('callback failure')); + * }); + * }); + * ``` + * + * If any tests fail, the process exit code is set to `1`. + * @since v18.0.0, v16.17.0 + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/test.js) + */ +declare module "node:test" { + import { Readable } from "node:stream"; + import TestFn = test.TestFn; + import TestOptions = test.TestOptions; + /** + * The `test()` function is the value imported from the `test` module. Each + * invocation of this function results in reporting the test to the `TestsStream`. + * + * The `TestContext` object passed to the `fn` argument can be used to perform + * actions related to the current test. Examples include skipping the test, adding + * additional diagnostic information, or creating subtests. + * + * `test()` returns a `Promise` that fulfills once the test completes. + * if `test()` is called within a suite, it fulfills immediately. + * The return value can usually be discarded for top level tests. + * However, the return value from subtests should be used to prevent the parent + * test from finishing first and cancelling the subtest + * as shown in the following example. + * + * ```js + * test('top level test', async (t) => { + * // The setTimeout() in the following subtest would cause it to outlive its + * // parent test if 'await' is removed on the next line. Once the parent test + * // completes, it will cancel any outstanding subtests. + * await t.test('longer running subtest', async (t) => { + * return new Promise((resolve, reject) => { + * setTimeout(resolve, 1000); + * }); + * }); + * }); + * ``` + * + * The `timeout` option can be used to fail the test if it takes longer than `timeout` milliseconds to complete. However, it is not a reliable mechanism for + * canceling tests because a running test might block the application thread and + * thus prevent the scheduled cancellation. + * @since v18.0.0, v16.17.0 + * @param name The name of the test, which is displayed when reporting test results. + * Defaults to the `name` property of `fn`, or `''` if `fn` does not have a name. + * @param options Configuration options for the test. + * @param fn The function under test. The first argument to this function is a {@link TestContext} object. + * If the test uses callbacks, the callback function is passed as the second argument. + * @return Fulfilled with `undefined` once the test completes, or immediately if the test runs within a suite. + */ + function test(name?: string, fn?: TestFn): Promise; + function test(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function test(options?: TestOptions, fn?: TestFn): Promise; + function test(fn?: TestFn): Promise; + namespace test { + export { test }; + export { suite as describe, test as it }; + } + namespace test { + /** + * **Note:** `shard` is used to horizontally parallelize test running across + * machines or processes, ideal for large-scale executions across varied + * environments. It's incompatible with `watch` mode, tailored for rapid + * code iteration by automatically rerunning tests on file changes. + * + * ```js + * import { tap } from 'node:test/reporters'; + * import { run } from 'node:test'; + * import process from 'node:process'; + * import path from 'node:path'; + * + * run({ files: [path.resolve('./tests/test.js')] }) + * .compose(tap) + * .pipe(process.stdout); + * ``` + * @since v18.9.0, v16.19.0 + * @param options Configuration options for running tests. + */ + function run(options?: RunOptions): TestsStream; + /** + * The `suite()` function is imported from the `node:test` module. + * @param name The name of the suite, which is displayed when reporting test results. + * Defaults to the `name` property of `fn`, or `''` if `fn` does not have a name. + * @param options Configuration options for the suite. This supports the same options as {@link test}. + * @param fn The suite function declaring nested tests and suites. The first argument to this function is a {@link SuiteContext} object. + * @return Immediately fulfilled with `undefined`. + * @since v20.13.0 + */ + function suite(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function suite(name?: string, fn?: SuiteFn): Promise; + function suite(options?: TestOptions, fn?: SuiteFn): Promise; + function suite(fn?: SuiteFn): Promise; + namespace suite { + /** + * Shorthand for skipping a suite. This is the same as calling {@link suite} with `options.skip` set to `true`. + * @since v20.13.0 + */ + function skip(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function skip(name?: string, fn?: SuiteFn): Promise; + function skip(options?: TestOptions, fn?: SuiteFn): Promise; + function skip(fn?: SuiteFn): Promise; + /** + * Shorthand for marking a suite as `TODO`. This is the same as calling {@link suite} with `options.todo` set to `true`. + * @since v20.13.0 + */ + function todo(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function todo(name?: string, fn?: SuiteFn): Promise; + function todo(options?: TestOptions, fn?: SuiteFn): Promise; + function todo(fn?: SuiteFn): Promise; + /** + * Shorthand for marking a suite as `only`. This is the same as calling {@link suite} with `options.only` set to `true`. + * @since v20.13.0 + */ + function only(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function only(name?: string, fn?: SuiteFn): Promise; + function only(options?: TestOptions, fn?: SuiteFn): Promise; + function only(fn?: SuiteFn): Promise; + } + /** + * Shorthand for skipping a test. This is the same as calling {@link test} with `options.skip` set to `true`. + * @since v20.2.0 + */ + function skip(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function skip(name?: string, fn?: TestFn): Promise; + function skip(options?: TestOptions, fn?: TestFn): Promise; + function skip(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `TODO`. This is the same as calling {@link test} with `options.todo` set to `true`. + * @since v20.2.0 + */ + function todo(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function todo(name?: string, fn?: TestFn): Promise; + function todo(options?: TestOptions, fn?: TestFn): Promise; + function todo(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `only`. This is the same as calling {@link test} with `options.only` set to `true`. + * @since v20.2.0 + */ + function only(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function only(name?: string, fn?: TestFn): Promise; + function only(options?: TestOptions, fn?: TestFn): Promise; + function only(fn?: TestFn): Promise; + /** + * The type of a function passed to {@link test}. The first argument to this function is a {@link TestContext} object. + * If the test uses callbacks, the callback function is passed as the second argument. + */ + type TestFn = (t: TestContext, done: (result?: any) => void) => void | Promise; + /** + * The type of a suite test function. The argument to this function is a {@link SuiteContext} object. + */ + type SuiteFn = (s: SuiteContext) => void | Promise; + interface TestShard { + /** + * A positive integer between 1 and `total` that specifies the index of the shard to run. + */ + index: number; + /** + * A positive integer that specifies the total number of shards to split the test files to. + */ + total: number; + } + interface RunOptions { + /** + * If a number is provided, then that many test processes would run in parallel, where each process corresponds to one test file. + * If `true`, it would run `os.availableParallelism() - 1` test files in parallel. If `false`, it would only run one test file at a time. + * @default false + */ + concurrency?: number | boolean | undefined; + /** + * Specifies the current working directory to be used by the test runner. + * Serves as the base path for resolving files according to the + * [test runner execution model](https://nodejs.org/docs/latest-v24.x/api/test.html#test-runner-execution-model). + * @since v23.0.0 + * @default process.cwd() + */ + cwd?: string | undefined; + /** + * An array containing the list of files to run. If omitted, files are run according to the + * [test runner execution model](https://nodejs.org/docs/latest-v24.x/api/test.html#test-runner-execution-model). + */ + files?: readonly string[] | undefined; + /** + * Configures the test runner to exit the process once all known + * tests have finished executing even if the event loop would + * otherwise remain active. + * @default false + */ + forceExit?: boolean | undefined; + /** + * An array containing the list of glob patterns to match test files. + * This option cannot be used together with `files`. If omitted, files are run according to the + * [test runner execution model](https://nodejs.org/docs/latest-v24.x/api/test.html#test-runner-execution-model). + * @since v22.6.0 + */ + globPatterns?: readonly string[] | undefined; + /** + * Sets inspector port of test child process. + * This can be a number, or a function that takes no arguments and returns a + * number. If a nullish value is provided, each process gets its own port, + * incremented from the primary's `process.debugPort`. This option is ignored + * if the `isolation` option is set to `'none'` as no child processes are + * spawned. + * @default undefined + */ + inspectPort?: number | (() => number) | undefined; + /** + * Configures the type of test isolation. If set to + * `'process'`, each test file is run in a separate child process. If set to + * `'none'`, all test files run in the current process. + * @default 'process' + * @since v22.8.0 + */ + isolation?: "process" | "none" | undefined; + /** + * If truthy, the test context will only run tests that have the `only` option set + */ + only?: boolean | undefined; + /** + * A function that accepts the `TestsStream` instance and can be used to setup listeners before any tests are run. + * @default undefined + */ + setup?: ((reporter: TestsStream) => void | Promise) | undefined; + /** + * An array of CLI flags to pass to the `node` executable when + * spawning the subprocesses. This option has no effect when `isolation` is `'none`'. + * @since v22.10.0 + * @default [] + */ + execArgv?: readonly string[] | undefined; + /** + * An array of CLI flags to pass to each test file when spawning the + * subprocesses. This option has no effect when `isolation` is `'none'`. + * @since v22.10.0 + * @default [] + */ + argv?: readonly string[] | undefined; + /** + * Allows aborting an in-progress test execution. + */ + signal?: AbortSignal | undefined; + /** + * If provided, only run tests whose name matches the provided pattern. + * Strings are interpreted as JavaScript regular expressions. + * @default undefined + */ + testNamePatterns?: string | RegExp | ReadonlyArray | undefined; + /** + * A String, RegExp or a RegExp Array, that can be used to exclude running tests whose + * name matches the provided pattern. Test name patterns are interpreted as JavaScript + * regular expressions. For each test that is executed, any corresponding test hooks, + * such as `beforeEach()`, are also run. + * @default undefined + * @since v22.1.0 + */ + testSkipPatterns?: string | RegExp | ReadonlyArray | undefined; + /** + * The number of milliseconds after which the test execution will fail. + * If unspecified, subtests inherit this value from their parent. + * @default Infinity + */ + timeout?: number | undefined; + /** + * Whether to run in watch mode or not. + * @default false + */ + watch?: boolean | undefined; + /** + * Running tests in a specific shard. + * @default undefined + */ + shard?: TestShard | undefined; + /** + * enable [code coverage](https://nodejs.org/docs/latest-v24.x/api/test.html#collecting-code-coverage) collection. + * @since v22.10.0 + * @default false + */ + coverage?: boolean | undefined; + /** + * Excludes specific files from code coverage + * using a glob pattern, which can match both absolute and relative file paths. + * This property is only applicable when `coverage` was set to `true`. + * If both `coverageExcludeGlobs` and `coverageIncludeGlobs` are provided, + * files must meet **both** criteria to be included in the coverage report. + * @since v22.10.0 + * @default undefined + */ + coverageExcludeGlobs?: string | readonly string[] | undefined; + /** + * Includes specific files in code coverage + * using a glob pattern, which can match both absolute and relative file paths. + * This property is only applicable when `coverage` was set to `true`. + * If both `coverageExcludeGlobs` and `coverageIncludeGlobs` are provided, + * files must meet **both** criteria to be included in the coverage report. + * @since v22.10.0 + * @default undefined + */ + coverageIncludeGlobs?: string | readonly string[] | undefined; + /** + * Require a minimum percent of covered lines. If code + * coverage does not reach the threshold specified, the process will exit with code `1`. + * @since v22.10.0 + * @default 0 + */ + lineCoverage?: number | undefined; + /** + * Require a minimum percent of covered branches. If code + * coverage does not reach the threshold specified, the process will exit with code `1`. + * @since v22.10.0 + * @default 0 + */ + branchCoverage?: number | undefined; + /** + * Require a minimum percent of covered functions. If code + * coverage does not reach the threshold specified, the process will exit with code `1`. + * @since v22.10.0 + * @default 0 + */ + functionCoverage?: number | undefined; + } + /** + * A successful call to `run()` will return a new `TestsStream` object, streaming a series of events representing the execution of the tests. + * + * Some of the events are guaranteed to be emitted in the same order as the tests are defined, while others are emitted in the order that the tests execute. + * @since v18.9.0, v16.19.0 + */ + interface TestsStream extends Readable { + addListener(event: "test:coverage", listener: (data: EventData.TestCoverage) => void): this; + addListener(event: "test:complete", listener: (data: EventData.TestComplete) => void): this; + addListener(event: "test:dequeue", listener: (data: EventData.TestDequeue) => void): this; + addListener(event: "test:diagnostic", listener: (data: EventData.TestDiagnostic) => void): this; + addListener(event: "test:enqueue", listener: (data: EventData.TestEnqueue) => void): this; + addListener(event: "test:fail", listener: (data: EventData.TestFail) => void): this; + addListener(event: "test:pass", listener: (data: EventData.TestPass) => void): this; + addListener(event: "test:plan", listener: (data: EventData.TestPlan) => void): this; + addListener(event: "test:start", listener: (data: EventData.TestStart) => void): this; + addListener(event: "test:stderr", listener: (data: EventData.TestStderr) => void): this; + addListener(event: "test:stdout", listener: (data: EventData.TestStdout) => void): this; + addListener(event: "test:summary", listener: (data: EventData.TestSummary) => void): this; + addListener(event: "test:watch:drained", listener: () => void): this; + addListener(event: "test:watch:restarted", listener: () => void): this; + addListener(event: string, listener: (...args: any[]) => void): this; + emit(event: "test:coverage", data: EventData.TestCoverage): boolean; + emit(event: "test:complete", data: EventData.TestComplete): boolean; + emit(event: "test:dequeue", data: EventData.TestDequeue): boolean; + emit(event: "test:diagnostic", data: EventData.TestDiagnostic): boolean; + emit(event: "test:enqueue", data: EventData.TestEnqueue): boolean; + emit(event: "test:fail", data: EventData.TestFail): boolean; + emit(event: "test:pass", data: EventData.TestPass): boolean; + emit(event: "test:plan", data: EventData.TestPlan): boolean; + emit(event: "test:start", data: EventData.TestStart): boolean; + emit(event: "test:stderr", data: EventData.TestStderr): boolean; + emit(event: "test:stdout", data: EventData.TestStdout): boolean; + emit(event: "test:summary", data: EventData.TestSummary): boolean; + emit(event: "test:watch:drained"): boolean; + emit(event: "test:watch:restarted"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "test:coverage", listener: (data: EventData.TestCoverage) => void): this; + on(event: "test:complete", listener: (data: EventData.TestComplete) => void): this; + on(event: "test:dequeue", listener: (data: EventData.TestDequeue) => void): this; + on(event: "test:diagnostic", listener: (data: EventData.TestDiagnostic) => void): this; + on(event: "test:enqueue", listener: (data: EventData.TestEnqueue) => void): this; + on(event: "test:fail", listener: (data: EventData.TestFail) => void): this; + on(event: "test:pass", listener: (data: EventData.TestPass) => void): this; + on(event: "test:plan", listener: (data: EventData.TestPlan) => void): this; + on(event: "test:start", listener: (data: EventData.TestStart) => void): this; + on(event: "test:stderr", listener: (data: EventData.TestStderr) => void): this; + on(event: "test:stdout", listener: (data: EventData.TestStdout) => void): this; + on(event: "test:summary", listener: (data: EventData.TestSummary) => void): this; + on(event: "test:watch:drained", listener: () => void): this; + on(event: "test:watch:restarted", listener: () => void): this; + on(event: string, listener: (...args: any[]) => void): this; + once(event: "test:coverage", listener: (data: EventData.TestCoverage) => void): this; + once(event: "test:complete", listener: (data: EventData.TestComplete) => void): this; + once(event: "test:dequeue", listener: (data: EventData.TestDequeue) => void): this; + once(event: "test:diagnostic", listener: (data: EventData.TestDiagnostic) => void): this; + once(event: "test:enqueue", listener: (data: EventData.TestEnqueue) => void): this; + once(event: "test:fail", listener: (data: EventData.TestFail) => void): this; + once(event: "test:pass", listener: (data: EventData.TestPass) => void): this; + once(event: "test:plan", listener: (data: EventData.TestPlan) => void): this; + once(event: "test:start", listener: (data: EventData.TestStart) => void): this; + once(event: "test:stderr", listener: (data: EventData.TestStderr) => void): this; + once(event: "test:stdout", listener: (data: EventData.TestStdout) => void): this; + once(event: "test:summary", listener: (data: EventData.TestSummary) => void): this; + once(event: "test:watch:drained", listener: () => void): this; + once(event: "test:watch:restarted", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "test:coverage", listener: (data: EventData.TestCoverage) => void): this; + prependListener(event: "test:complete", listener: (data: EventData.TestComplete) => void): this; + prependListener(event: "test:dequeue", listener: (data: EventData.TestDequeue) => void): this; + prependListener(event: "test:diagnostic", listener: (data: EventData.TestDiagnostic) => void): this; + prependListener(event: "test:enqueue", listener: (data: EventData.TestEnqueue) => void): this; + prependListener(event: "test:fail", listener: (data: EventData.TestFail) => void): this; + prependListener(event: "test:pass", listener: (data: EventData.TestPass) => void): this; + prependListener(event: "test:plan", listener: (data: EventData.TestPlan) => void): this; + prependListener(event: "test:start", listener: (data: EventData.TestStart) => void): this; + prependListener(event: "test:stderr", listener: (data: EventData.TestStderr) => void): this; + prependListener(event: "test:stdout", listener: (data: EventData.TestStdout) => void): this; + prependListener(event: "test:summary", listener: (data: EventData.TestSummary) => void): this; + prependListener(event: "test:watch:drained", listener: () => void): this; + prependListener(event: "test:watch:restarted", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "test:coverage", listener: (data: EventData.TestCoverage) => void): this; + prependOnceListener(event: "test:complete", listener: (data: EventData.TestComplete) => void): this; + prependOnceListener(event: "test:dequeue", listener: (data: EventData.TestDequeue) => void): this; + prependOnceListener(event: "test:diagnostic", listener: (data: EventData.TestDiagnostic) => void): this; + prependOnceListener(event: "test:enqueue", listener: (data: EventData.TestEnqueue) => void): this; + prependOnceListener(event: "test:fail", listener: (data: EventData.TestFail) => void): this; + prependOnceListener(event: "test:pass", listener: (data: EventData.TestPass) => void): this; + prependOnceListener(event: "test:plan", listener: (data: EventData.TestPlan) => void): this; + prependOnceListener(event: "test:start", listener: (data: EventData.TestStart) => void): this; + prependOnceListener(event: "test:stderr", listener: (data: EventData.TestStderr) => void): this; + prependOnceListener(event: "test:stdout", listener: (data: EventData.TestStdout) => void): this; + prependOnceListener(event: "test:summary", listener: (data: EventData.TestSummary) => void): this; + prependOnceListener(event: "test:watch:drained", listener: () => void): this; + prependOnceListener(event: "test:watch:restarted", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + } + namespace EventData { + interface Error extends globalThis.Error { + cause: globalThis.Error; + } + interface LocationInfo { + /** + * The column number where the test is defined, or + * `undefined` if the test was run through the REPL. + */ + column?: number; + /** + * The path of the test file, `undefined` if test was run through the REPL. + */ + file?: string; + /** + * The line number where the test is defined, or `undefined` if the test was run through the REPL. + */ + line?: number; + } + interface TestDiagnostic extends LocationInfo { + /** + * The diagnostic message. + */ + message: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The severity level of the diagnostic message. + * Possible values are: + * * `'info'`: Informational messages. + * * `'warn'`: Warnings. + * * `'error'`: Errors. + */ + level: "info" | "warn" | "error"; + } + interface TestCoverage { + /** + * An object containing the coverage report. + */ + summary: { + /** + * An array of coverage reports for individual files. + */ + files: Array<{ + /** + * The absolute path of the file. + */ + path: string; + /** + * The total number of lines. + */ + totalLineCount: number; + /** + * The total number of branches. + */ + totalBranchCount: number; + /** + * The total number of functions. + */ + totalFunctionCount: number; + /** + * The number of covered lines. + */ + coveredLineCount: number; + /** + * The number of covered branches. + */ + coveredBranchCount: number; + /** + * The number of covered functions. + */ + coveredFunctionCount: number; + /** + * The percentage of lines covered. + */ + coveredLinePercent: number; + /** + * The percentage of branches covered. + */ + coveredBranchPercent: number; + /** + * The percentage of functions covered. + */ + coveredFunctionPercent: number; + /** + * An array of functions representing function coverage. + */ + functions: Array<{ + /** + * The name of the function. + */ + name: string; + /** + * The line number where the function is defined. + */ + line: number; + /** + * The number of times the function was called. + */ + count: number; + }>; + /** + * An array of branches representing branch coverage. + */ + branches: Array<{ + /** + * The line number where the branch is defined. + */ + line: number; + /** + * The number of times the branch was taken. + */ + count: number; + }>; + /** + * An array of lines representing line numbers and the number of times they were covered. + */ + lines: Array<{ + /** + * The line number. + */ + line: number; + /** + * The number of times the line was covered. + */ + count: number; + }>; + }>; + /** + * An object containing whether or not the coverage for + * each coverage type. + * @since v22.9.0 + */ + thresholds: { + /** + * The function coverage threshold. + */ + function: number; + /** + * The branch coverage threshold. + */ + branch: number; + /** + * The line coverage threshold. + */ + line: number; + }; + /** + * An object containing a summary of coverage for all files. + */ + totals: { + /** + * The total number of lines. + */ + totalLineCount: number; + /** + * The total number of branches. + */ + totalBranchCount: number; + /** + * The total number of functions. + */ + totalFunctionCount: number; + /** + * The number of covered lines. + */ + coveredLineCount: number; + /** + * The number of covered branches. + */ + coveredBranchCount: number; + /** + * The number of covered functions. + */ + coveredFunctionCount: number; + /** + * The percentage of lines covered. + */ + coveredLinePercent: number; + /** + * The percentage of branches covered. + */ + coveredBranchPercent: number; + /** + * The percentage of functions covered. + */ + coveredFunctionPercent: number; + }; + /** + * The working directory when code coverage began. This + * is useful for displaying relative path names in case + * the tests changed the working directory of the Node.js process. + */ + workingDirectory: string; + }; + /** + * The nesting level of the test. + */ + nesting: number; + } + interface TestComplete extends LocationInfo { + /** + * Additional execution metadata. + */ + details: { + /** + * Whether the test passed or not. + */ + passed: boolean; + /** + * The duration of the test in milliseconds. + */ + duration_ms: number; + /** + * An error wrapping the error thrown by the test if it did not pass. + */ + error?: Error; + /** + * The type of the test, used to denote whether this is a suite. + */ + type?: "suite"; + }; + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The ordinal number of the test. + */ + testNumber: number; + /** + * Present if `context.todo` is called. + */ + todo?: string | boolean; + /** + * Present if `context.skip` is called. + */ + skip?: string | boolean; + } + interface TestDequeue extends LocationInfo { + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The test type. Either `'suite'` or `'test'`. + * @since v22.15.0 + */ + type: "suite" | "test"; + } + interface TestEnqueue extends LocationInfo { + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The test type. Either `'suite'` or `'test'`. + * @since v22.15.0 + */ + type: "suite" | "test"; + } + interface TestFail extends LocationInfo { + /** + * Additional execution metadata. + */ + details: { + /** + * The duration of the test in milliseconds. + */ + duration_ms: number; + /** + * An error wrapping the error thrown by the test. + */ + error: Error; + /** + * The type of the test, used to denote whether this is a suite. + * @since v20.0.0, v19.9.0, v18.17.0 + */ + type?: "suite"; + }; + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The ordinal number of the test. + */ + testNumber: number; + /** + * Present if `context.todo` is called. + */ + todo?: string | boolean; + /** + * Present if `context.skip` is called. + */ + skip?: string | boolean; + } + interface TestPass extends LocationInfo { + /** + * Additional execution metadata. + */ + details: { + /** + * The duration of the test in milliseconds. + */ + duration_ms: number; + /** + * The type of the test, used to denote whether this is a suite. + * @since 20.0.0, 19.9.0, 18.17.0 + */ + type?: "suite"; + }; + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The ordinal number of the test. + */ + testNumber: number; + /** + * Present if `context.todo` is called. + */ + todo?: string | boolean; + /** + * Present if `context.skip` is called. + */ + skip?: string | boolean; + } + interface TestPlan extends LocationInfo { + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The number of subtests that have ran. + */ + count: number; + } + interface TestStart extends LocationInfo { + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + } + interface TestStderr { + /** + * The path of the test file. + */ + file: string; + /** + * The message written to `stderr`. + */ + message: string; + } + interface TestStdout { + /** + * The path of the test file. + */ + file: string; + /** + * The message written to `stdout`. + */ + message: string; + } + interface TestSummary { + /** + * An object containing the counts of various test results. + */ + counts: { + /** + * The total number of cancelled tests. + */ + cancelled: number; + /** + * The total number of passed tests. + */ + passed: number; + /** + * The total number of skipped tests. + */ + skipped: number; + /** + * The total number of suites run. + */ + suites: number; + /** + * The total number of tests run, excluding suites. + */ + tests: number; + /** + * The total number of TODO tests. + */ + todo: number; + /** + * The total number of top level tests and suites. + */ + topLevel: number; + }; + /** + * The duration of the test run in milliseconds. + */ + duration_ms: number; + /** + * The path of the test file that generated the + * summary. If the summary corresponds to multiple files, this value is + * `undefined`. + */ + file: string | undefined; + /** + * Indicates whether or not the test run is considered + * successful or not. If any error condition occurs, such as a failing test or + * unmet coverage threshold, this value will be set to `false`. + */ + success: boolean; + } + } + /** + * An instance of `TestContext` is passed to each test function in order to + * interact with the test runner. However, the `TestContext` constructor is not + * exposed as part of the API. + * @since v18.0.0, v16.17.0 + */ + interface TestContext { + /** + * An object containing assertion methods bound to the test context. + * The top-level functions from the `node:assert` module are exposed here for the purpose of creating test plans. + * + * **Note:** Some of the functions from `node:assert` contain type assertions. If these are called via the + * TestContext `assert` object, then the context parameter in the test's function signature **must be explicitly typed** + * (ie. the parameter must have a type annotation), otherwise an error will be raised by the TypeScript compiler: + * ```ts + * import { test, type TestContext } from 'node:test'; + * + * // The test function's context parameter must have a type annotation. + * test('example', (t: TestContext) => { + * t.assert.deepStrictEqual(actual, expected); + * }); + * + * // Omitting the type annotation will result in a compilation error. + * test('example', t => { + * t.assert.deepStrictEqual(actual, expected); // Error: 't' needs an explicit type annotation. + * }); + * ``` + * @since v22.2.0, v20.15.0 + */ + readonly assert: TestContextAssert; + /** + * This function is used to create a hook running before subtest of the current test. + * @param fn The hook function. The first argument to this function is a `TestContext` object. + * If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. + * @since v20.1.0, v18.17.0 + */ + before(fn?: TestContextHookFn, options?: HookOptions): void; + /** + * This function is used to create a hook running before each subtest of the current test. + * @param fn The hook function. The first argument to this function is a `TestContext` object. + * If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. + * @since v18.8.0 + */ + beforeEach(fn?: TestContextHookFn, options?: HookOptions): void; + /** + * This function is used to create a hook that runs after the current test finishes. + * @param fn The hook function. The first argument to this function is a `TestContext` object. + * If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. + * @since v18.13.0 + */ + after(fn?: TestContextHookFn, options?: HookOptions): void; + /** + * This function is used to create a hook running after each subtest of the current test. + * @param fn The hook function. The first argument to this function is a `TestContext` object. + * If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. + * @since v18.8.0 + */ + afterEach(fn?: TestContextHookFn, options?: HookOptions): void; + /** + * This function is used to write diagnostics to the output. Any diagnostic + * information is included at the end of the test's results. This function does + * not return a value. + * + * ```js + * test('top level test', (t) => { + * t.diagnostic('A diagnostic message'); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param message Message to be reported. + */ + diagnostic(message: string): void; + /** + * The absolute path of the test file that created the current test. If a test file imports + * additional modules that generate tests, the imported tests will return the path of the root test file. + * @since v22.6.0 + */ + readonly filePath: string | undefined; + /** + * The name of the test and each of its ancestors, separated by `>`. + * @since v22.3.0 + */ + readonly fullName: string; + /** + * The name of the test. + * @since v18.8.0, v16.18.0 + */ + readonly name: string; + /** + * This function is used to set the number of assertions and subtests that are expected to run + * within the test. If the number of assertions and subtests that run does not match the + * expected count, the test will fail. + * + * > Note: To make sure assertions are tracked, `t.assert` must be used instead of `assert` directly. + * + * ```js + * test('top level test', (t) => { + * t.plan(2); + * t.assert.ok('some relevant assertion here'); + * t.test('subtest', () => {}); + * }); + * ``` + * + * When working with asynchronous code, the `plan` function can be used to ensure that the + * correct number of assertions are run: + * + * ```js + * test('planning with streams', (t, done) => { + * function* generate() { + * yield 'a'; + * yield 'b'; + * yield 'c'; + * } + * const expected = ['a', 'b', 'c']; + * t.plan(expected.length); + * const stream = Readable.from(generate()); + * stream.on('data', (chunk) => { + * t.assert.strictEqual(chunk, expected.shift()); + * }); + * + * stream.on('end', () => { + * done(); + * }); + * }); + * ``` + * + * When using the `wait` option, you can control how long the test will wait for the expected assertions. + * For example, setting a maximum wait time ensures that the test will wait for asynchronous assertions + * to complete within the specified timeframe: + * + * ```js + * test('plan with wait: 2000 waits for async assertions', (t) => { + * t.plan(1, { wait: 2000 }); // Waits for up to 2 seconds for the assertion to complete. + * + * const asyncActivity = () => { + * setTimeout(() => { + * * t.assert.ok(true, 'Async assertion completed within the wait time'); + * }, 1000); // Completes after 1 second, within the 2-second wait time. + * }; + * + * asyncActivity(); // The test will pass because the assertion is completed in time. + * }); + * ``` + * + * Note: If a `wait` timeout is specified, it begins counting down only after the test function finishes executing. + * @since v22.2.0 + */ + plan(count: number, options?: TestContextPlanOptions): void; + /** + * If `shouldRunOnlyTests` is truthy, the test context will only run tests that + * have the `only` option set. Otherwise, all tests are run. If Node.js was not + * started with the `--test-only` command-line option, this function is a + * no-op. + * + * ```js + * test('top level test', (t) => { + * // The test context can be set to run subtests with the 'only' option. + * t.runOnly(true); + * return Promise.all([ + * t.test('this subtest is now skipped'), + * t.test('this subtest is run', { only: true }), + * ]); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param shouldRunOnlyTests Whether or not to run `only` tests. + */ + runOnly(shouldRunOnlyTests: boolean): void; + /** + * ```js + * test('top level test', async (t) => { + * await fetch('some/uri', { signal: t.signal }); + * }); + * ``` + * @since v18.7.0, v16.17.0 + */ + readonly signal: AbortSignal; + /** + * This function causes the test's output to indicate the test as skipped. If `message` is provided, it is included in the output. Calling `skip()` does + * not terminate execution of the test function. This function does not return a + * value. + * + * ```js + * test('top level test', (t) => { + * // Make sure to return here as well if the test contains additional logic. + * t.skip('this is skipped'); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param message Optional skip message. + */ + skip(message?: string): void; + /** + * This function adds a `TODO` directive to the test's output. If `message` is + * provided, it is included in the output. Calling `todo()` does not terminate + * execution of the test function. This function does not return a value. + * + * ```js + * test('top level test', (t) => { + * // This test is marked as `TODO` + * t.todo('this is a todo'); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param message Optional `TODO` message. + */ + todo(message?: string): void; + /** + * This function is used to create subtests under the current test. This function behaves in + * the same fashion as the top level {@link test} function. + * @since v18.0.0 + * @param name The name of the test, which is displayed when reporting test results. + * Defaults to the `name` property of `fn`, or `''` if `fn` does not have a name. + * @param options Configuration options for the test. + * @param fn The function under test. This first argument to this function is a {@link TestContext} object. + * If the test uses callbacks, the callback function is passed as the second argument. + * @returns A {@link Promise} resolved with `undefined` once the test completes. + */ + test: typeof test; + /** + * This method polls a `condition` function until that function either returns + * successfully or the operation times out. + * @since v22.14.0 + * @param condition An assertion function that is invoked + * periodically until it completes successfully or the defined polling timeout + * elapses. Successful completion is defined as not throwing or rejecting. This + * function does not accept any arguments, and is allowed to return any value. + * @param options An optional configuration object for the polling operation. + * @returns Fulfilled with the value returned by `condition`. + */ + waitFor(condition: () => T, options?: TestContextWaitForOptions): Promise>; + /** + * Each test provides its own MockTracker instance. + */ + readonly mock: MockTracker; + } + interface TestContextAssert extends + Pick< + typeof import("assert"), + | "deepEqual" + | "deepStrictEqual" + | "doesNotMatch" + | "doesNotReject" + | "doesNotThrow" + | "equal" + | "fail" + | "ifError" + | "match" + | "notDeepEqual" + | "notDeepStrictEqual" + | "notEqual" + | "notStrictEqual" + | "ok" + | "partialDeepStrictEqual" + | "rejects" + | "strictEqual" + | "throws" + > + { + /** + * This function serializes `value` and writes it to the file specified by `path`. + * + * ```js + * test('snapshot test with default serialization', (t) => { + * t.assert.fileSnapshot({ value1: 1, value2: 2 }, './snapshots/snapshot.json'); + * }); + * ``` + * + * This function differs from `context.assert.snapshot()` in the following ways: + * + * * The snapshot file path is explicitly provided by the user. + * * Each snapshot file is limited to a single snapshot value. + * * No additional escaping is performed by the test runner. + * + * These differences allow snapshot files to better support features such as syntax + * highlighting. + * @since v22.14.0 + * @param value A value to serialize to a string. If Node.js was started with + * the [`--test-update-snapshots`](https://nodejs.org/docs/latest-v24.x/api/cli.html#--test-update-snapshots) + * flag, the serialized value is written to + * `path`. Otherwise, the serialized value is compared to the contents of the + * existing snapshot file. + * @param path The file where the serialized `value` is written. + * @param options Optional configuration options. + */ + fileSnapshot(value: any, path: string, options?: AssertSnapshotOptions): void; + /** + * This function implements assertions for snapshot testing. + * ```js + * test('snapshot test with default serialization', (t) => { + * t.assert.snapshot({ value1: 1, value2: 2 }); + * }); + * + * test('snapshot test with custom serialization', (t) => { + * t.assert.snapshot({ value3: 3, value4: 4 }, { + * serializers: [(value) => JSON.stringify(value)] + * }); + * }); + * ``` + * @since v22.3.0 + * @param value A value to serialize to a string. If Node.js was started with + * the [`--test-update-snapshots`](https://nodejs.org/docs/latest-v24.x/api/cli.html#--test-update-snapshots) + * flag, the serialized value is written to + * the snapshot file. Otherwise, the serialized value is compared to the + * corresponding value in the existing snapshot file. + */ + snapshot(value: any, options?: AssertSnapshotOptions): void; + /** + * A custom assertion function registered with `assert.register()`. + */ + [name: string]: (...args: any[]) => void; + } + interface AssertSnapshotOptions { + /** + * An array of synchronous functions used to serialize `value` into a string. + * `value` is passed as the only argument to the first serializer function. + * The return value of each serializer is passed as input to the next serializer. + * Once all serializers have run, the resulting value is coerced to a string. + * + * If no serializers are provided, the test runner's default serializers are used. + */ + serializers?: ReadonlyArray<(value: any) => any> | undefined; + } + interface TestContextPlanOptions { + /** + * The wait time for the plan: + * * If `true`, the plan waits indefinitely for all assertions and subtests to run. + * * If `false`, the plan performs an immediate check after the test function completes, + * without waiting for any pending assertions or subtests. + * Any assertions or subtests that complete after this check will not be counted towards the plan. + * * If a number, it specifies the maximum wait time in milliseconds + * before timing out while waiting for expected assertions and subtests to be matched. + * If the timeout is reached, the test will fail. + * @default false + */ + wait?: boolean | number | undefined; + } + interface TestContextWaitForOptions { + /** + * The number of milliseconds to wait after an unsuccessful + * invocation of `condition` before trying again. + * @default 50 + */ + interval?: number | undefined; + /** + * The poll timeout in milliseconds. If `condition` has not + * succeeded by the time this elapses, an error occurs. + * @default 1000 + */ + timeout?: number | undefined; + } + /** + * An instance of `SuiteContext` is passed to each suite function in order to + * interact with the test runner. However, the `SuiteContext` constructor is not + * exposed as part of the API. + * @since v18.7.0, v16.17.0 + */ + interface SuiteContext { + /** + * The absolute path of the test file that created the current suite. If a test file imports + * additional modules that generate suites, the imported suites will return the path of the root test file. + * @since v22.6.0 + */ + readonly filePath: string | undefined; + /** + * The name of the suite. + * @since v18.8.0, v16.18.0 + */ + readonly name: string; + /** + * Can be used to abort test subtasks when the test has been aborted. + * @since v18.7.0, v16.17.0 + */ + readonly signal: AbortSignal; + } + interface TestOptions { + /** + * If a number is provided, then that many tests would run in parallel. + * If truthy, it would run (number of cpu cores - 1) tests in parallel. + * For subtests, it will be `Infinity` tests in parallel. + * If falsy, it would only run one test at a time. + * If unspecified, subtests inherit this value from their parent. + * @default false + */ + concurrency?: number | boolean | undefined; + /** + * If truthy, and the test context is configured to run `only` tests, then this test will be + * run. Otherwise, the test is skipped. + * @default false + */ + only?: boolean | undefined; + /** + * Allows aborting an in-progress test. + * @since v18.8.0 + */ + signal?: AbortSignal | undefined; + /** + * If truthy, the test is skipped. If a string is provided, that string is displayed in the + * test results as the reason for skipping the test. + * @default false + */ + skip?: boolean | string | undefined; + /** + * A number of milliseconds the test will fail after. If unspecified, subtests inherit this + * value from their parent. + * @default Infinity + * @since v18.7.0 + */ + timeout?: number | undefined; + /** + * If truthy, the test marked as `TODO`. If a string is provided, that string is displayed in + * the test results as the reason why the test is `TODO`. + * @default false + */ + todo?: boolean | string | undefined; + /** + * The number of assertions and subtests expected to be run in the test. + * If the number of assertions run in the test does not match the number + * specified in the plan, the test will fail. + * @default undefined + * @since v22.2.0 + */ + plan?: number | undefined; + } + /** + * This function creates a hook that runs before executing a suite. + * + * ```js + * describe('tests', async () => { + * before(() => console.log('about to run some test')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. + */ + function before(fn?: HookFn, options?: HookOptions): void; + /** + * This function creates a hook that runs after executing a suite. + * + * ```js + * describe('tests', async () => { + * after(() => console.log('finished running tests')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. + */ + function after(fn?: HookFn, options?: HookOptions): void; + /** + * This function creates a hook that runs before each test in the current suite. + * + * ```js + * describe('tests', async () => { + * beforeEach(() => console.log('about to run a test')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. + */ + function beforeEach(fn?: HookFn, options?: HookOptions): void; + /** + * This function creates a hook that runs after each test in the current suite. + * The `afterEach()` hook is run even if the test fails. + * + * ```js + * describe('tests', async () => { + * afterEach(() => console.log('finished running a test')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. + */ + function afterEach(fn?: HookFn, options?: HookOptions): void; + /** + * The hook function. The first argument is the context in which the hook is called. + * If the hook uses callbacks, the callback function is passed as the second argument. + */ + type HookFn = (c: TestContext | SuiteContext, done: (result?: any) => void) => any; + /** + * The hook function. The first argument is a `TestContext` object. + * If the hook uses callbacks, the callback function is passed as the second argument. + */ + type TestContextHookFn = (t: TestContext, done: (result?: any) => void) => any; + /** + * Configuration options for hooks. + * @since v18.8.0 + */ + interface HookOptions { + /** + * Allows aborting an in-progress hook. + */ + signal?: AbortSignal | undefined; + /** + * A number of milliseconds the hook will fail after. If unspecified, subtests inherit this + * value from their parent. + * @default Infinity + */ + timeout?: number | undefined; + } + interface MockFunctionOptions { + /** + * The number of times that the mock will use the behavior of `implementation`. + * Once the mock function has been called `times` times, + * it will automatically restore the behavior of `original`. + * This value must be an integer greater than zero. + * @default Infinity + */ + times?: number | undefined; + } + interface MockMethodOptions extends MockFunctionOptions { + /** + * If `true`, `object[methodName]` is treated as a getter. + * This option cannot be used with the `setter` option. + */ + getter?: boolean | undefined; + /** + * If `true`, `object[methodName]` is treated as a setter. + * This option cannot be used with the `getter` option. + */ + setter?: boolean | undefined; + } + type Mock = F & { + mock: MockFunctionContext; + }; + interface MockModuleOptions { + /** + * If false, each call to `require()` or `import()` generates a new mock module. + * If true, subsequent calls will return the same module mock, and the mock module is inserted into the CommonJS cache. + * @default false + */ + cache?: boolean | undefined; + /** + * The value to use as the mocked module's default export. + * + * If this value is not provided, ESM mocks do not include a default export. + * If the mock is a CommonJS or builtin module, this setting is used as the value of `module.exports`. + * If this value is not provided, CJS and builtin mocks use an empty object as the value of `module.exports`. + */ + defaultExport?: any; + /** + * An object whose keys and values are used to create the named exports of the mock module. + * + * If the mock is a CommonJS or builtin module, these values are copied onto `module.exports`. + * Therefore, if a mock is created with both named exports and a non-object default export, + * the mock will throw an exception when used as a CJS or builtin module. + */ + namedExports?: object | undefined; + } + /** + * The `MockTracker` class is used to manage mocking functionality. The test runner + * module provides a top level `mock` export which is a `MockTracker` instance. + * Each test also provides its own `MockTracker` instance via the test context's `mock` property. + * @since v19.1.0, v18.13.0 + */ + interface MockTracker { + /** + * This function is used to create a mock function. + * + * The following example creates a mock function that increments a counter by one + * on each invocation. The `times` option is used to modify the mock behavior such + * that the first two invocations add two to the counter instead of one. + * + * ```js + * test('mocks a counting function', (t) => { + * let cnt = 0; + * + * function addOne() { + * cnt++; + * return cnt; + * } + * + * function addTwo() { + * cnt += 2; + * return cnt; + * } + * + * const fn = t.mock.fn(addOne, addTwo, { times: 2 }); + * + * assert.strictEqual(fn(), 2); + * assert.strictEqual(fn(), 4); + * assert.strictEqual(fn(), 5); + * assert.strictEqual(fn(), 6); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param original An optional function to create a mock on. + * @param implementation An optional function used as the mock implementation for `original`. This is useful for creating mocks that exhibit one behavior for a specified number of calls and + * then restore the behavior of `original`. + * @param options Optional configuration options for the mock function. + * @return The mocked function. The mocked function contains a special `mock` property, which is an instance of {@link MockFunctionContext}, and can be used for inspecting and changing the + * behavior of the mocked function. + */ + fn undefined>( + original?: F, + options?: MockFunctionOptions, + ): Mock; + fn undefined, Implementation extends Function = F>( + original?: F, + implementation?: Implementation, + options?: MockFunctionOptions, + ): Mock; + /** + * This function is used to create a mock on an existing object method. The + * following example demonstrates how a mock is created on an existing object + * method. + * + * ```js + * test('spies on an object method', (t) => { + * const number = { + * value: 5, + * subtract(a) { + * return this.value - a; + * }, + * }; + * + * t.mock.method(number, 'subtract'); + * assert.strictEqual(number.subtract.mock.calls.length, 0); + * assert.strictEqual(number.subtract(3), 2); + * assert.strictEqual(number.subtract.mock.calls.length, 1); + * + * const call = number.subtract.mock.calls[0]; + * + * assert.deepStrictEqual(call.arguments, [3]); + * assert.strictEqual(call.result, 2); + * assert.strictEqual(call.error, undefined); + * assert.strictEqual(call.target, undefined); + * assert.strictEqual(call.this, number); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param object The object whose method is being mocked. + * @param methodName The identifier of the method on `object` to mock. If `object[methodName]` is not a function, an error is thrown. + * @param implementation An optional function used as the mock implementation for `object[methodName]`. + * @param options Optional configuration options for the mock method. + * @return The mocked method. The mocked method contains a special `mock` property, which is an instance of {@link MockFunctionContext}, and can be used for inspecting and changing the + * behavior of the mocked method. + */ + method< + MockedObject extends object, + MethodName extends FunctionPropertyNames, + >( + object: MockedObject, + methodName: MethodName, + options?: MockFunctionOptions, + ): MockedObject[MethodName] extends Function ? Mock + : never; + method< + MockedObject extends object, + MethodName extends FunctionPropertyNames, + Implementation extends Function, + >( + object: MockedObject, + methodName: MethodName, + implementation: Implementation, + options?: MockFunctionOptions, + ): MockedObject[MethodName] extends Function ? Mock + : never; + method( + object: MockedObject, + methodName: keyof MockedObject, + options: MockMethodOptions, + ): Mock; + method( + object: MockedObject, + methodName: keyof MockedObject, + implementation: Function, + options: MockMethodOptions, + ): Mock; + /** + * This function is syntax sugar for `MockTracker.method` with `options.getter` set to `true`. + * @since v19.3.0, v18.13.0 + */ + getter< + MockedObject extends object, + MethodName extends keyof MockedObject, + >( + object: MockedObject, + methodName: MethodName, + options?: MockFunctionOptions, + ): Mock<() => MockedObject[MethodName]>; + getter< + MockedObject extends object, + MethodName extends keyof MockedObject, + Implementation extends Function, + >( + object: MockedObject, + methodName: MethodName, + implementation?: Implementation, + options?: MockFunctionOptions, + ): Mock<(() => MockedObject[MethodName]) | Implementation>; + /** + * This function is syntax sugar for `MockTracker.method` with `options.setter` set to `true`. + * @since v19.3.0, v18.13.0 + */ + setter< + MockedObject extends object, + MethodName extends keyof MockedObject, + >( + object: MockedObject, + methodName: MethodName, + options?: MockFunctionOptions, + ): Mock<(value: MockedObject[MethodName]) => void>; + setter< + MockedObject extends object, + MethodName extends keyof MockedObject, + Implementation extends Function, + >( + object: MockedObject, + methodName: MethodName, + implementation?: Implementation, + options?: MockFunctionOptions, + ): Mock<((value: MockedObject[MethodName]) => void) | Implementation>; + /** + * This function is used to mock the exports of ECMAScript modules, CommonJS modules, JSON modules, and + * Node.js builtin modules. Any references to the original module prior to mocking are not impacted. In + * order to enable module mocking, Node.js must be started with the + * [`--experimental-test-module-mocks`](https://nodejs.org/docs/latest-v24.x/api/cli.html#--experimental-test-module-mocks) + * command-line flag. + * + * The following example demonstrates how a mock is created for a module. + * + * ```js + * test('mocks a builtin module in both module systems', async (t) => { + * // Create a mock of 'node:readline' with a named export named 'fn', which + * // does not exist in the original 'node:readline' module. + * const mock = t.mock.module('node:readline', { + * namedExports: { fn() { return 42; } }, + * }); + * + * let esmImpl = await import('node:readline'); + * let cjsImpl = require('node:readline'); + * + * // cursorTo() is an export of the original 'node:readline' module. + * assert.strictEqual(esmImpl.cursorTo, undefined); + * assert.strictEqual(cjsImpl.cursorTo, undefined); + * assert.strictEqual(esmImpl.fn(), 42); + * assert.strictEqual(cjsImpl.fn(), 42); + * + * mock.restore(); + * + * // The mock is restored, so the original builtin module is returned. + * esmImpl = await import('node:readline'); + * cjsImpl = require('node:readline'); + * + * assert.strictEqual(typeof esmImpl.cursorTo, 'function'); + * assert.strictEqual(typeof cjsImpl.cursorTo, 'function'); + * assert.strictEqual(esmImpl.fn, undefined); + * assert.strictEqual(cjsImpl.fn, undefined); + * }); + * ``` + * @since v22.3.0 + * @experimental + * @param specifier A string identifying the module to mock. + * @param options Optional configuration options for the mock module. + */ + module(specifier: string, options?: MockModuleOptions): MockModuleContext; + /** + * Creates a mock for a property value on an object. This allows you to track and control access to a specific property, + * including how many times it is read (getter) or written (setter), and to restore the original value after mocking. + * + * ```js + * test('mocks a property value', (t) => { + * const obj = { foo: 42 }; + * const prop = t.mock.property(obj, 'foo', 100); + * + * assert.strictEqual(obj.foo, 100); + * assert.strictEqual(prop.mock.accessCount(), 1); + * assert.strictEqual(prop.mock.accesses[0].type, 'get'); + * assert.strictEqual(prop.mock.accesses[0].value, 100); + * + * obj.foo = 200; + * assert.strictEqual(prop.mock.accessCount(), 2); + * assert.strictEqual(prop.mock.accesses[1].type, 'set'); + * assert.strictEqual(prop.mock.accesses[1].value, 200); + * + * prop.mock.restore(); + * assert.strictEqual(obj.foo, 42); + * }); + * ``` + * @since v24.3.0 + * @param object The object whose value is being mocked. + * @param propertyName The identifier of the property on `object` to mock. + * @param value An optional value used as the mock value + * for `object[propertyName]`. **Default:** The original property value. + * @returns A proxy to the mocked object. The mocked object contains a + * special `mock` property, which is an instance of [`MockPropertyContext`][], and + * can be used for inspecting and changing the behavior of the mocked property. + */ + property< + MockedObject extends object, + PropertyName extends keyof MockedObject, + >( + object: MockedObject, + property: PropertyName, + value?: MockedObject[PropertyName], + ): MockedObject & { mock: MockPropertyContext }; + /** + * This function restores the default behavior of all mocks that were previously + * created by this `MockTracker` and disassociates the mocks from the `MockTracker` instance. Once disassociated, the mocks can still be used, but the `MockTracker` instance can no longer be + * used to reset their behavior or + * otherwise interact with them. + * + * After each test completes, this function is called on the test context's `MockTracker`. If the global `MockTracker` is used extensively, calling this + * function manually is recommended. + * @since v19.1.0, v18.13.0 + */ + reset(): void; + /** + * This function restores the default behavior of all mocks that were previously + * created by this `MockTracker`. Unlike `mock.reset()`, `mock.restoreAll()` does + * not disassociate the mocks from the `MockTracker` instance. + * @since v19.1.0, v18.13.0 + */ + restoreAll(): void; + readonly timers: MockTimers; + } + const mock: MockTracker; + interface MockFunctionCall< + F extends Function, + ReturnType = F extends (...args: any) => infer T ? T + : F extends abstract new(...args: any) => infer T ? T + : unknown, + Args = F extends (...args: infer Y) => any ? Y + : F extends abstract new(...args: infer Y) => any ? Y + : unknown[], + > { + /** + * An array of the arguments passed to the mock function. + */ + arguments: Args; + /** + * If the mocked function threw then this property contains the thrown value. + */ + error: unknown | undefined; + /** + * The value returned by the mocked function. + * + * If the mocked function threw, it will be `undefined`. + */ + result: ReturnType | undefined; + /** + * An `Error` object whose stack can be used to determine the callsite of the mocked function invocation. + */ + stack: Error; + /** + * If the mocked function is a constructor, this field contains the class being constructed. + * Otherwise this will be `undefined`. + */ + target: F extends abstract new(...args: any) => any ? F : undefined; + /** + * The mocked function's `this` value. + */ + this: unknown; + } + /** + * The `MockFunctionContext` class is used to inspect or manipulate the behavior of + * mocks created via the `MockTracker` APIs. + * @since v19.1.0, v18.13.0 + */ + interface MockFunctionContext { + /** + * A getter that returns a copy of the internal array used to track calls to the + * mock. Each entry in the array is an object with the following properties. + * @since v19.1.0, v18.13.0 + */ + readonly calls: MockFunctionCall[]; + /** + * This function returns the number of times that this mock has been invoked. This + * function is more efficient than checking `ctx.calls.length` because `ctx.calls` is a getter that creates a copy of the internal call tracking array. + * @since v19.1.0, v18.13.0 + * @return The number of times that this mock has been invoked. + */ + callCount(): number; + /** + * This function is used to change the behavior of an existing mock. + * + * The following example creates a mock function using `t.mock.fn()`, calls the + * mock function, and then changes the mock implementation to a different function. + * + * ```js + * test('changes a mock behavior', (t) => { + * let cnt = 0; + * + * function addOne() { + * cnt++; + * return cnt; + * } + * + * function addTwo() { + * cnt += 2; + * return cnt; + * } + * + * const fn = t.mock.fn(addOne); + * + * assert.strictEqual(fn(), 1); + * fn.mock.mockImplementation(addTwo); + * assert.strictEqual(fn(), 3); + * assert.strictEqual(fn(), 5); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param implementation The function to be used as the mock's new implementation. + */ + mockImplementation(implementation: F): void; + /** + * This function is used to change the behavior of an existing mock for a single + * invocation. Once invocation `onCall` has occurred, the mock will revert to + * whatever behavior it would have used had `mockImplementationOnce()` not been + * called. + * + * The following example creates a mock function using `t.mock.fn()`, calls the + * mock function, changes the mock implementation to a different function for the + * next invocation, and then resumes its previous behavior. + * + * ```js + * test('changes a mock behavior once', (t) => { + * let cnt = 0; + * + * function addOne() { + * cnt++; + * return cnt; + * } + * + * function addTwo() { + * cnt += 2; + * return cnt; + * } + * + * const fn = t.mock.fn(addOne); + * + * assert.strictEqual(fn(), 1); + * fn.mock.mockImplementationOnce(addTwo); + * assert.strictEqual(fn(), 3); + * assert.strictEqual(fn(), 4); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param implementation The function to be used as the mock's implementation for the invocation number specified by `onCall`. + * @param onCall The invocation number that will use `implementation`. If the specified invocation has already occurred then an exception is thrown. + */ + mockImplementationOnce(implementation: F, onCall?: number): void; + /** + * Resets the call history of the mock function. + * @since v19.3.0, v18.13.0 + */ + resetCalls(): void; + /** + * Resets the implementation of the mock function to its original behavior. The + * mock can still be used after calling this function. + * @since v19.1.0, v18.13.0 + */ + restore(): void; + } + /** + * @since v22.3.0 + * @experimental + */ + interface MockModuleContext { + /** + * Resets the implementation of the mock module. + * @since v22.3.0 + */ + restore(): void; + } + /** + * @since v24.3.0 + */ + class MockPropertyContext { + /** + * A getter that returns a copy of the internal array used to track accesses (get/set) to + * the mocked property. Each entry in the array is an object with the following properties: + */ + readonly accesses: Array<{ + type: "get" | "set"; + value: PropertyType; + stack: Error; + }>; + /** + * This function returns the number of times that the property was accessed. + * This function is more efficient than checking `ctx.accesses.length` because + * `ctx.accesses` is a getter that creates a copy of the internal access tracking array. + * @returns The number of times that the property was accessed (read or written). + */ + accessCount(): number; + /** + * This function is used to change the value returned by the mocked property getter. + * @param value The new value to be set as the mocked property value. + */ + mockImplementation(value: PropertyType): void; + /** + * This function is used to change the behavior of an existing mock for a single + * invocation. Once invocation `onAccess` has occurred, the mock will revert to + * whatever behavior it would have used had `mockImplementationOnce()` not been + * called. + * + * The following example creates a mock function using `t.mock.property()`, calls the + * mock property, changes the mock implementation to a different value for the + * next invocation, and then resumes its previous behavior. + * + * ```js + * test('changes a mock behavior once', (t) => { + * const obj = { foo: 1 }; + * + * const prop = t.mock.property(obj, 'foo', 5); + * + * assert.strictEqual(obj.foo, 5); + * prop.mock.mockImplementationOnce(25); + * assert.strictEqual(obj.foo, 25); + * assert.strictEqual(obj.foo, 5); + * }); + * ``` + * @param value The value to be used as the mock's + * implementation for the invocation number specified by `onAccess`. + * @param onAccess The invocation number that will use `value`. If + * the specified invocation has already occurred then an exception is thrown. + * **Default:** The number of the next invocation. + */ + mockImplementationOnce(value: PropertyType, onAccess?: number): void; + /** + * Resets the access history of the mocked property. + */ + resetAccesses(): void; + /** + * Resets the implementation of the mock property to its original behavior. The + * mock can still be used after calling this function. + */ + restore(): void; + } + interface MockTimersOptions { + apis: ReadonlyArray<"setInterval" | "setTimeout" | "setImmediate" | "Date">; + now?: number | Date | undefined; + } + /** + * Mocking timers is a technique commonly used in software testing to simulate and + * control the behavior of timers, such as `setInterval` and `setTimeout`, + * without actually waiting for the specified time intervals. + * + * The MockTimers API also allows for mocking of the `Date` constructor and + * `setImmediate`/`clearImmediate` functions. + * + * The `MockTracker` provides a top-level `timers` export + * which is a `MockTimers` instance. + * @since v20.4.0 + */ + interface MockTimers { + /** + * Enables timer mocking for the specified timers. + * + * **Note:** When you enable mocking for a specific timer, its associated + * clear function will also be implicitly mocked. + * + * **Note:** Mocking `Date` will affect the behavior of the mocked timers + * as they use the same internal clock. + * + * Example usage without setting initial time: + * + * ```js + * import { mock } from 'node:test'; + * mock.timers.enable({ apis: ['setInterval', 'Date'], now: 1234 }); + * ``` + * + * The above example enables mocking for the `Date` constructor, `setInterval` timer and + * implicitly mocks the `clearInterval` function. Only the `Date` constructor from `globalThis`, + * `setInterval` and `clearInterval` functions from `node:timers`, `node:timers/promises`, and `globalThis` will be mocked. + * + * Example usage with initial time set + * + * ```js + * import { mock } from 'node:test'; + * mock.timers.enable({ apis: ['Date'], now: 1000 }); + * ``` + * + * Example usage with initial Date object as time set + * + * ```js + * import { mock } from 'node:test'; + * mock.timers.enable({ apis: ['Date'], now: new Date() }); + * ``` + * + * Alternatively, if you call `mock.timers.enable()` without any parameters: + * + * All timers (`'setInterval'`, `'clearInterval'`, `'Date'`, `'setImmediate'`, `'clearImmediate'`, `'setTimeout'`, and `'clearTimeout'`) + * will be mocked. + * + * The `setInterval`, `clearInterval`, `setTimeout`, and `clearTimeout` functions from `node:timers`, `node:timers/promises`, + * and `globalThis` will be mocked. + * The `Date` constructor from `globalThis` will be mocked. + * + * If there is no initial epoch set, the initial date will be based on 0 in the Unix epoch. This is `January 1st, 1970, 00:00:00 UTC`. You can + * set an initial date by passing a now property to the `.enable()` method. This value will be used as the initial date for the mocked Date + * object. It can either be a positive integer, or another Date object. + * @since v20.4.0 + */ + enable(options?: MockTimersOptions): void; + /** + * You can use the `.setTime()` method to manually move the mocked date to another time. This method only accepts a positive integer. + * Note: This method will execute any mocked timers that are in the past from the new time. + * In the below example we are setting a new time for the mocked date. + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * test('sets the time of a date object', (context) => { + * // Optionally choose what to mock + * context.mock.timers.enable({ apis: ['Date'], now: 100 }); + * assert.strictEqual(Date.now(), 100); + * // Advance in time will also advance the date + * context.mock.timers.setTime(1000); + * context.mock.timers.tick(200); + * assert.strictEqual(Date.now(), 1200); + * }); + * ``` + */ + setTime(time: number): void; + /** + * This function restores the default behavior of all mocks that were previously + * created by this `MockTimers` instance and disassociates the mocks + * from the `MockTracker` instance. + * + * **Note:** After each test completes, this function is called on + * the test context's `MockTracker`. + * + * ```js + * import { mock } from 'node:test'; + * mock.timers.reset(); + * ``` + * @since v20.4.0 + */ + reset(): void; + /** + * Advances time for all mocked timers. + * + * **Note:** This diverges from how `setTimeout` in Node.js behaves and accepts + * only positive numbers. In Node.js, `setTimeout` with negative numbers is + * only supported for web compatibility reasons. + * + * The following example mocks a `setTimeout` function and + * by using `.tick` advances in + * time triggering all pending timers. + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { + * const fn = context.mock.fn(); + * + * context.mock.timers.enable({ apis: ['setTimeout'] }); + * + * setTimeout(fn, 9999); + * + * assert.strictEqual(fn.mock.callCount(), 0); + * + * // Advance in time + * context.mock.timers.tick(9999); + * + * assert.strictEqual(fn.mock.callCount(), 1); + * }); + * ``` + * + * Alternativelly, the `.tick` function can be called many times + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { + * const fn = context.mock.fn(); + * context.mock.timers.enable({ apis: ['setTimeout'] }); + * const nineSecs = 9000; + * setTimeout(fn, nineSecs); + * + * const twoSeconds = 3000; + * context.mock.timers.tick(twoSeconds); + * context.mock.timers.tick(twoSeconds); + * context.mock.timers.tick(twoSeconds); + * + * assert.strictEqual(fn.mock.callCount(), 1); + * }); + * ``` + * + * Advancing time using `.tick` will also advance the time for any `Date` object + * created after the mock was enabled (if `Date` was also set to be mocked). + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { + * const fn = context.mock.fn(); + * + * context.mock.timers.enable({ apis: ['setTimeout', 'Date'] }); + * setTimeout(fn, 9999); + * + * assert.strictEqual(fn.mock.callCount(), 0); + * assert.strictEqual(Date.now(), 0); + * + * // Advance in time + * context.mock.timers.tick(9999); + * assert.strictEqual(fn.mock.callCount(), 1); + * assert.strictEqual(Date.now(), 9999); + * }); + * ``` + * @since v20.4.0 + */ + tick(milliseconds: number): void; + /** + * Triggers all pending mocked timers immediately. If the `Date` object is also + * mocked, it will also advance the `Date` object to the furthest timer's time. + * + * The example below triggers all pending timers immediately, + * causing them to execute without any delay. + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('runAll functions following the given order', (context) => { + * context.mock.timers.enable({ apis: ['setTimeout', 'Date'] }); + * const results = []; + * setTimeout(() => results.push(1), 9999); + * + * // Notice that if both timers have the same timeout, + * // the order of execution is guaranteed + * setTimeout(() => results.push(3), 8888); + * setTimeout(() => results.push(2), 8888); + * + * assert.deepStrictEqual(results, []); + * + * context.mock.timers.runAll(); + * assert.deepStrictEqual(results, [3, 2, 1]); + * // The Date object is also advanced to the furthest timer's time + * assert.strictEqual(Date.now(), 9999); + * }); + * ``` + * + * **Note:** The `runAll()` function is specifically designed for + * triggering timers in the context of timer mocking. + * It does not have any effect on real-time system + * clocks or actual timers outside of the mocking environment. + * @since v20.4.0 + */ + runAll(): void; + /** + * Calls {@link MockTimers.reset()}. + */ + [Symbol.dispose](): void; + } + /** + * An object whose methods are used to configure available assertions on the + * `TestContext` objects in the current process. The methods from `node:assert` + * and snapshot testing functions are available by default. + * + * It is possible to apply the same configuration to all files by placing common + * configuration code in a module + * preloaded with `--require` or `--import`. + * @since v22.14.0 + */ + namespace assert { + /** + * Defines a new assertion function with the provided name and function. If an + * assertion already exists with the same name, it is overwritten. + * @since v22.14.0 + */ + function register(name: string, fn: (this: TestContext, ...args: any[]) => void): void; + } + /** + * @since v22.3.0 + */ + namespace snapshot { + /** + * This function is used to customize the default serialization mechanism used by the test runner. + * + * By default, the test runner performs serialization by calling `JSON.stringify(value, null, 2)` on the provided value. + * `JSON.stringify()` does have limitations regarding circular structures and supported data types. + * If a more robust serialization mechanism is required, this function should be used to specify a list of custom serializers. + * + * Serializers are called in order, with the output of the previous serializer passed as input to the next. + * The final result must be a string value. + * @since v22.3.0 + * @param serializers An array of synchronous functions used as the default serializers for snapshot tests. + */ + function setDefaultSnapshotSerializers(serializers: ReadonlyArray<(value: any) => any>): void; + /** + * This function is used to set a custom resolver for the location of the snapshot file used for snapshot testing. + * By default, the snapshot filename is the same as the entry point filename with `.snapshot` appended. + * @since v22.3.0 + * @param fn A function used to compute the location of the snapshot file. + * The function receives the path of the test file as its only argument. If the + * test is not associated with a file (for example in the REPL), the input is + * undefined. `fn()` must return a string specifying the location of the snapshot file. + */ + function setResolveSnapshotPath(fn: (path: string | undefined) => string): void; + } + } + type FunctionPropertyNames = { + [K in keyof T]: T[K] extends Function ? K : never; + }[keyof T]; + export = test; +} + +/** + * The `node:test/reporters` module exposes the builtin-reporters for `node:test`. + * To access it: + * + * ```js + * import test from 'node:test/reporters'; + * ``` + * + * This module is only available under the `node:` scheme. The following will not + * work: + * + * ```js + * import test from 'node:test/reporters'; + * ``` + * @since v19.9.0 + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/test/reporters.js) + */ +declare module "node:test/reporters" { + import { Transform, TransformOptions } from "node:stream"; + import { EventData } from "node:test"; + + type TestEvent = + | { type: "test:coverage"; data: EventData.TestCoverage } + | { type: "test:complete"; data: EventData.TestComplete } + | { type: "test:dequeue"; data: EventData.TestDequeue } + | { type: "test:diagnostic"; data: EventData.TestDiagnostic } + | { type: "test:enqueue"; data: EventData.TestEnqueue } + | { type: "test:fail"; data: EventData.TestFail } + | { type: "test:pass"; data: EventData.TestPass } + | { type: "test:plan"; data: EventData.TestPlan } + | { type: "test:start"; data: EventData.TestStart } + | { type: "test:stderr"; data: EventData.TestStderr } + | { type: "test:stdout"; data: EventData.TestStdout } + | { type: "test:summary"; data: EventData.TestSummary } + | { type: "test:watch:drained"; data: undefined } + | { type: "test:watch:restarted"; data: undefined }; + type TestEventGenerator = AsyncGenerator; + + interface ReporterConstructorWrapper Transform> { + new(...args: ConstructorParameters): InstanceType; + (...args: ConstructorParameters): InstanceType; + } + + /** + * The `dot` reporter outputs the test results in a compact format, + * where each passing test is represented by a `.`, + * and each failing test is represented by a `X`. + * @since v20.0.0 + */ + function dot(source: TestEventGenerator): AsyncGenerator<"\n" | "." | "X", void>; + /** + * The `tap` reporter outputs the test results in the [TAP](https://testanything.org/) format. + * @since v20.0.0 + */ + function tap(source: TestEventGenerator): AsyncGenerator; + class SpecReporter extends Transform { + constructor(); + } + /** + * The `spec` reporter outputs the test results in a human-readable format. + * @since v20.0.0 + */ + const spec: ReporterConstructorWrapper; + /** + * The `junit` reporter outputs test results in a jUnit XML format. + * @since v21.0.0 + */ + function junit(source: TestEventGenerator): AsyncGenerator; + class LcovReporter extends Transform { + constructor(opts?: Omit); + } + /** + * The `lcov` reporter outputs test coverage when used with the + * [`--experimental-test-coverage`](https://nodejs.org/docs/latest-v24.x/api/cli.html#--experimental-test-coverage) flag. + * @since v22.0.0 + */ + const lcov: ReporterConstructorWrapper; + + export { dot, junit, lcov, spec, tap, TestEvent }; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/timers.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/timers.d.ts.html new file mode 100644 index 0000000..30a91c0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/timers.d.ts.html @@ -0,0 +1,285 @@ +/** + * The `timer` module exposes a global API for scheduling functions to + * be called at some future period of time. Because the timer functions are + * globals, there is no need to import `node:timers` to use the API. + * + * The timer functions within Node.js implement a similar API as the timers API + * provided by Web Browsers but use a different internal implementation that is + * built around the Node.js [Event Loop](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#setimmediate-vs-settimeout). + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/timers.js) + */ +declare module "timers" { + import { Abortable } from "node:events"; + import * as promises from "node:timers/promises"; + export interface TimerOptions extends Abortable { + /** + * Set to `false` to indicate that the scheduled `Timeout` + * should not require the Node.js event loop to remain active. + * @default true + */ + ref?: boolean | undefined; + } + global { + namespace NodeJS { + /** + * This object is created internally and is returned from `setImmediate()`. It + * can be passed to `clearImmediate()` in order to cancel the scheduled + * actions. + * + * By default, when an immediate is scheduled, the Node.js event loop will continue + * running as long as the immediate is active. The `Immediate` object returned by + * `setImmediate()` exports both `immediate.ref()` and `immediate.unref()` + * functions that can be used to control this default behavior. + */ + interface Immediate extends RefCounted, Disposable { + /** + * If true, the `Immediate` object will keep the Node.js event loop active. + * @since v11.0.0 + */ + hasRef(): boolean; + /** + * When called, requests that the Node.js event loop _not_ exit so long as the + * `Immediate` is active. Calling `immediate.ref()` multiple times will have no + * effect. + * + * By default, all `Immediate` objects are "ref'ed", making it normally unnecessary + * to call `immediate.ref()` unless `immediate.unref()` had been called previously. + * @since v9.7.0 + * @returns a reference to `immediate` + */ + ref(): this; + /** + * When called, the active `Immediate` object will not require the Node.js event + * loop to remain active. If there is no other activity keeping the event loop + * running, the process may exit before the `Immediate` object's callback is + * invoked. Calling `immediate.unref()` multiple times will have no effect. + * @since v9.7.0 + * @returns a reference to `immediate` + */ + unref(): this; + /** + * Cancels the immediate. This is similar to calling `clearImmediate()`. + * @since v20.5.0, v18.18.0 + */ + [Symbol.dispose](): void; + _onImmediate(...args: any[]): void; + } + // Legacy interface used in Node.js v9 and prior + // TODO: remove in a future major version bump + /** @deprecated Use `NodeJS.Timeout` instead. */ + interface Timer extends RefCounted { + hasRef(): boolean; + refresh(): this; + [Symbol.toPrimitive](): number; + } + /** + * This object is created internally and is returned from `setTimeout()` and + * `setInterval()`. It can be passed to either `clearTimeout()` or + * `clearInterval()` in order to cancel the scheduled actions. + * + * By default, when a timer is scheduled using either `setTimeout()` or + * `setInterval()`, the Node.js event loop will continue running as long as the + * timer is active. Each of the `Timeout` objects returned by these functions + * export both `timeout.ref()` and `timeout.unref()` functions that can be used to + * control this default behavior. + */ + interface Timeout extends RefCounted, Disposable, Timer { + /** + * Cancels the timeout. + * @since v0.9.1 + * @legacy Use `clearTimeout()` instead. + * @returns a reference to `timeout` + */ + close(): this; + /** + * If true, the `Timeout` object will keep the Node.js event loop active. + * @since v11.0.0 + */ + hasRef(): boolean; + /** + * When called, requests that the Node.js event loop _not_ exit so long as the + * `Timeout` is active. Calling `timeout.ref()` multiple times will have no effect. + * + * By default, all `Timeout` objects are "ref'ed", making it normally unnecessary + * to call `timeout.ref()` unless `timeout.unref()` had been called previously. + * @since v0.9.1 + * @returns a reference to `timeout` + */ + ref(): this; + /** + * Sets the timer's start time to the current time, and reschedules the timer to + * call its callback at the previously specified duration adjusted to the current + * time. This is useful for refreshing a timer without allocating a new + * JavaScript object. + * + * Using this on a timer that has already called its callback will reactivate the + * timer. + * @since v10.2.0 + * @returns a reference to `timeout` + */ + refresh(): this; + /** + * When called, the active `Timeout` object will not require the Node.js event loop + * to remain active. If there is no other activity keeping the event loop running, + * the process may exit before the `Timeout` object's callback is invoked. Calling + * `timeout.unref()` multiple times will have no effect. + * @since v0.9.1 + * @returns a reference to `timeout` + */ + unref(): this; + /** + * Coerce a `Timeout` to a primitive. The primitive can be used to + * clear the `Timeout`. The primitive can only be used in the + * same thread where the timeout was created. Therefore, to use it + * across `worker_threads` it must first be passed to the correct + * thread. This allows enhanced compatibility with browser + * `setTimeout()` and `setInterval()` implementations. + * @since v14.9.0, v12.19.0 + */ + [Symbol.toPrimitive](): number; + /** + * Cancels the timeout. + * @since v20.5.0, v18.18.0 + */ + [Symbol.dispose](): void; + _onTimeout(...args: any[]): void; + } + } + /** + * Schedules the "immediate" execution of the `callback` after I/O events' + * callbacks. + * + * When multiple calls to `setImmediate()` are made, the `callback` functions are + * queued for execution in the order in which they are created. The entire callback + * queue is processed every event loop iteration. If an immediate timer is queued + * from inside an executing callback, that timer will not be triggered until the + * next event loop iteration. + * + * If `callback` is not a function, a `TypeError` will be thrown. + * + * This method has a custom variant for promises that is available using + * `timersPromises.setImmediate()`. + * @since v0.9.1 + * @param callback The function to call at the end of this turn of + * the Node.js [Event Loop](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#setimmediate-vs-settimeout) + * @param args Optional arguments to pass when the `callback` is called. + * @returns for use with `clearImmediate()` + */ + function setImmediate( + callback: (...args: TArgs) => void, + ...args: TArgs + ): NodeJS.Immediate; + // Allow a single void-accepting argument to be optional in arguments lists. + // Allows usage such as `new Promise(resolve => setTimeout(resolve, ms))` (#54258) + // eslint-disable-next-line @typescript-eslint/no-invalid-void-type + function setImmediate(callback: (_: void) => void): NodeJS.Immediate; + namespace setImmediate { + import __promisify__ = promises.setImmediate; + export { __promisify__ }; + } + /** + * Schedules repeated execution of `callback` every `delay` milliseconds. + * + * When `delay` is larger than `2147483647` or less than `1` or `NaN`, the `delay` + * will be set to `1`. Non-integer delays are truncated to an integer. + * + * If `callback` is not a function, a `TypeError` will be thrown. + * + * This method has a custom variant for promises that is available using + * `timersPromises.setInterval()`. + * @since v0.0.1 + * @param callback The function to call when the timer elapses. + * @param delay The number of milliseconds to wait before calling the + * `callback`. **Default:** `1`. + * @param args Optional arguments to pass when the `callback` is called. + * @returns for use with `clearInterval()` + */ + function setInterval( + callback: (...args: TArgs) => void, + delay?: number, + ...args: TArgs + ): NodeJS.Timeout; + // Allow a single void-accepting argument to be optional in arguments lists. + // Allows usage such as `new Promise(resolve => setTimeout(resolve, ms))` (#54258) + // eslint-disable-next-line @typescript-eslint/no-invalid-void-type + function setInterval(callback: (_: void) => void, delay?: number): NodeJS.Timeout; + /** + * Schedules execution of a one-time `callback` after `delay` milliseconds. + * + * The `callback` will likely not be invoked in precisely `delay` milliseconds. + * Node.js makes no guarantees about the exact timing of when callbacks will fire, + * nor of their ordering. The callback will be called as close as possible to the + * time specified. + * + * When `delay` is larger than `2147483647` or less than `1` or `NaN`, the `delay` + * will be set to `1`. Non-integer delays are truncated to an integer. + * + * If `callback` is not a function, a `TypeError` will be thrown. + * + * This method has a custom variant for promises that is available using + * `timersPromises.setTimeout()`. + * @since v0.0.1 + * @param callback The function to call when the timer elapses. + * @param delay The number of milliseconds to wait before calling the + * `callback`. **Default:** `1`. + * @param args Optional arguments to pass when the `callback` is called. + * @returns for use with `clearTimeout()` + */ + function setTimeout( + callback: (...args: TArgs) => void, + delay?: number, + ...args: TArgs + ): NodeJS.Timeout; + // Allow a single void-accepting argument to be optional in arguments lists. + // Allows usage such as `new Promise(resolve => setTimeout(resolve, ms))` (#54258) + // eslint-disable-next-line @typescript-eslint/no-invalid-void-type + function setTimeout(callback: (_: void) => void, delay?: number): NodeJS.Timeout; + namespace setTimeout { + import __promisify__ = promises.setTimeout; + export { __promisify__ }; + } + /** + * Cancels an `Immediate` object created by `setImmediate()`. + * @since v0.9.1 + * @param immediate An `Immediate` object as returned by `setImmediate()`. + */ + function clearImmediate(immediate: NodeJS.Immediate | undefined): void; + /** + * Cancels a `Timeout` object created by `setInterval()`. + * @since v0.0.1 + * @param timeout A `Timeout` object as returned by `setInterval()` + * or the primitive of the `Timeout` object as a string or a number. + */ + function clearInterval(timeout: NodeJS.Timeout | string | number | undefined): void; + /** + * Cancels a `Timeout` object created by `setTimeout()`. + * @since v0.0.1 + * @param timeout A `Timeout` object as returned by `setTimeout()` + * or the primitive of the `Timeout` object as a string or a number. + */ + function clearTimeout(timeout: NodeJS.Timeout | string | number | undefined): void; + /** + * The `queueMicrotask()` method queues a microtask to invoke `callback`. If + * `callback` throws an exception, the `process` object `'uncaughtException'` + * event will be emitted. + * + * The microtask queue is managed by V8 and may be used in a similar manner to + * the `process.nextTick()` queue, which is managed by Node.js. The + * `process.nextTick()` queue is always processed before the microtask queue + * within each turn of the Node.js event loop. + * @since v11.0.0 + * @param callback Function to be queued. + */ + function queueMicrotask(callback: () => void): void; + } + import clearImmediate = globalThis.clearImmediate; + import clearInterval = globalThis.clearInterval; + import clearTimeout = globalThis.clearTimeout; + import setImmediate = globalThis.setImmediate; + import setInterval = globalThis.setInterval; + import setTimeout = globalThis.setTimeout; + export { clearImmediate, clearInterval, clearTimeout, promises, setImmediate, setInterval, setTimeout }; +} +declare module "node:timers" { + export * from "timers"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/tls.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/tls.d.ts.html new file mode 100644 index 0000000..b9c4f24 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/tls.d.ts.html @@ -0,0 +1,1213 @@ +/** + * The `node:tls` module provides an implementation of the Transport Layer Security + * (TLS) and Secure Socket Layer (SSL) protocols that is built on top of OpenSSL. + * The module can be accessed using: + * + * ```js + * import tls from 'node:tls'; + * ``` + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/tls.js) + */ +declare module "tls" { + import { X509Certificate } from "node:crypto"; + import * as net from "node:net"; + import * as stream from "stream"; + const CLIENT_RENEG_LIMIT: number; + const CLIENT_RENEG_WINDOW: number; + interface Certificate { + /** + * Country code. + */ + C: string; + /** + * Street. + */ + ST: string; + /** + * Locality. + */ + L: string; + /** + * Organization. + */ + O: string; + /** + * Organizational unit. + */ + OU: string; + /** + * Common name. + */ + CN: string; + } + interface PeerCertificate { + /** + * `true` if a Certificate Authority (CA), `false` otherwise. + * @since v18.13.0 + */ + ca: boolean; + /** + * The DER encoded X.509 certificate data. + */ + raw: Buffer; + /** + * The certificate subject. + */ + subject: Certificate; + /** + * The certificate issuer, described in the same terms as the `subject`. + */ + issuer: Certificate; + /** + * The date-time the certificate is valid from. + */ + valid_from: string; + /** + * The date-time the certificate is valid to. + */ + valid_to: string; + /** + * The certificate serial number, as a hex string. + */ + serialNumber: string; + /** + * The SHA-1 digest of the DER encoded certificate. + * It is returned as a `:` separated hexadecimal string. + */ + fingerprint: string; + /** + * The SHA-256 digest of the DER encoded certificate. + * It is returned as a `:` separated hexadecimal string. + */ + fingerprint256: string; + /** + * The SHA-512 digest of the DER encoded certificate. + * It is returned as a `:` separated hexadecimal string. + */ + fingerprint512: string; + /** + * The extended key usage, a set of OIDs. + */ + ext_key_usage?: string[]; + /** + * A string containing concatenated names for the subject, + * an alternative to the `subject` names. + */ + subjectaltname?: string; + /** + * An array describing the AuthorityInfoAccess, used with OCSP. + */ + infoAccess?: NodeJS.Dict; + /** + * For RSA keys: The RSA bit size. + * + * For EC keys: The key size in bits. + */ + bits?: number; + /** + * The RSA exponent, as a string in hexadecimal number notation. + */ + exponent?: string; + /** + * The RSA modulus, as a hexadecimal string. + */ + modulus?: string; + /** + * The public key. + */ + pubkey?: Buffer; + /** + * The ASN.1 name of the OID of the elliptic curve. + * Well-known curves are identified by an OID. + * While it is unusual, it is possible that the curve + * is identified by its mathematical properties, + * in which case it will not have an OID. + */ + asn1Curve?: string; + /** + * The NIST name for the elliptic curve, if it has one + * (not all well-known curves have been assigned names by NIST). + */ + nistCurve?: string; + } + interface DetailedPeerCertificate extends PeerCertificate { + /** + * The issuer certificate object. + * For self-signed certificates, this may be a circular reference. + */ + issuerCertificate: DetailedPeerCertificate; + } + interface CipherNameAndProtocol { + /** + * The cipher name. + */ + name: string; + /** + * SSL/TLS protocol version. + */ + version: string; + /** + * IETF name for the cipher suite. + */ + standardName: string; + } + interface EphemeralKeyInfo { + /** + * The supported types are 'DH' and 'ECDH'. + */ + type: string; + /** + * The name property is available only when type is 'ECDH'. + */ + name?: string | undefined; + /** + * The size of parameter of an ephemeral key exchange. + */ + size: number; + } + interface KeyObject { + /** + * Private keys in PEM format. + */ + pem: string | Buffer; + /** + * Optional passphrase. + */ + passphrase?: string | undefined; + } + interface PxfObject { + /** + * PFX or PKCS12 encoded private key and certificate chain. + */ + buf: string | Buffer; + /** + * Optional passphrase. + */ + passphrase?: string | undefined; + } + interface TLSSocketOptions extends SecureContextOptions, CommonConnectionOptions { + /** + * If true the TLS socket will be instantiated in server-mode. + * Defaults to false. + */ + isServer?: boolean | undefined; + /** + * An optional net.Server instance. + */ + server?: net.Server | undefined; + /** + * An optional Buffer instance containing a TLS session. + */ + session?: Buffer | undefined; + /** + * If true, specifies that the OCSP status request extension will be + * added to the client hello and an 'OCSPResponse' event will be + * emitted on the socket before establishing a secure communication + */ + requestOCSP?: boolean | undefined; + } + /** + * Performs transparent encryption of written data and all required TLS + * negotiation. + * + * Instances of `tls.TLSSocket` implement the duplex `Stream` interface. + * + * Methods that return TLS connection metadata (e.g.{@link TLSSocket.getPeerCertificate}) will only return data while the + * connection is open. + * @since v0.11.4 + */ + class TLSSocket extends net.Socket { + /** + * Construct a new tls.TLSSocket object from an existing TCP socket. + */ + constructor(socket: net.Socket | stream.Duplex, options?: TLSSocketOptions); + /** + * This property is `true` if the peer certificate was signed by one of the CAs + * specified when creating the `tls.TLSSocket` instance, otherwise `false`. + * @since v0.11.4 + */ + authorized: boolean; + /** + * Returns the reason why the peer's certificate was not been verified. This + * property is set only when `tlsSocket.authorized === false`. + * @since v0.11.4 + */ + authorizationError: Error; + /** + * Always returns `true`. This may be used to distinguish TLS sockets from regular`net.Socket` instances. + * @since v0.11.4 + */ + encrypted: true; + /** + * String containing the selected ALPN protocol. + * Before a handshake has completed, this value is always null. + * When a handshake is completed but not ALPN protocol was selected, tlsSocket.alpnProtocol equals false. + */ + alpnProtocol: string | false | null; + /** + * Returns an object representing the local certificate. The returned object has + * some properties corresponding to the fields of the certificate. + * + * See {@link TLSSocket.getPeerCertificate} for an example of the certificate + * structure. + * + * If there is no local certificate, an empty object will be returned. If the + * socket has been destroyed, `null` will be returned. + * @since v11.2.0 + */ + getCertificate(): PeerCertificate | object | null; + /** + * Returns an object containing information on the negotiated cipher suite. + * + * For example, a TLSv1.2 protocol with AES256-SHA cipher: + * + * ```json + * { + * "name": "AES256-SHA", + * "standardName": "TLS_RSA_WITH_AES_256_CBC_SHA", + * "version": "SSLv3" + * } + * ``` + * + * See [SSL\_CIPHER\_get\_name](https://www.openssl.org/docs/man1.1.1/man3/SSL_CIPHER_get_name.html) for more information. + * @since v0.11.4 + */ + getCipher(): CipherNameAndProtocol; + /** + * Returns an object representing the type, name, and size of parameter of + * an ephemeral key exchange in `perfect forward secrecy` on a client + * connection. It returns an empty object when the key exchange is not + * ephemeral. As this is only supported on a client socket; `null` is returned + * if called on a server socket. The supported types are `'DH'` and `'ECDH'`. The `name` property is available only when type is `'ECDH'`. + * + * For example: `{ type: 'ECDH', name: 'prime256v1', size: 256 }`. + * @since v5.0.0 + */ + getEphemeralKeyInfo(): EphemeralKeyInfo | object | null; + /** + * As the `Finished` messages are message digests of the complete handshake + * (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can + * be used for external authentication procedures when the authentication + * provided by SSL/TLS is not desired or is not enough. + * + * Corresponds to the `SSL_get_finished` routine in OpenSSL and may be used + * to implement the `tls-unique` channel binding from [RFC 5929](https://tools.ietf.org/html/rfc5929). + * @since v9.9.0 + * @return The latest `Finished` message that has been sent to the socket as part of a SSL/TLS handshake, or `undefined` if no `Finished` message has been sent yet. + */ + getFinished(): Buffer | undefined; + /** + * Returns an object representing the peer's certificate. If the peer does not + * provide a certificate, an empty object will be returned. If the socket has been + * destroyed, `null` will be returned. + * + * If the full certificate chain was requested, each certificate will include an`issuerCertificate` property containing an object representing its issuer's + * certificate. + * @since v0.11.4 + * @param detailed Include the full certificate chain if `true`, otherwise include just the peer's certificate. + * @return A certificate object. + */ + getPeerCertificate(detailed: true): DetailedPeerCertificate; + getPeerCertificate(detailed?: false): PeerCertificate; + getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; + /** + * As the `Finished` messages are message digests of the complete handshake + * (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can + * be used for external authentication procedures when the authentication + * provided by SSL/TLS is not desired or is not enough. + * + * Corresponds to the `SSL_get_peer_finished` routine in OpenSSL and may be used + * to implement the `tls-unique` channel binding from [RFC 5929](https://tools.ietf.org/html/rfc5929). + * @since v9.9.0 + * @return The latest `Finished` message that is expected or has actually been received from the socket as part of a SSL/TLS handshake, or `undefined` if there is no `Finished` message so + * far. + */ + getPeerFinished(): Buffer | undefined; + /** + * Returns a string containing the negotiated SSL/TLS protocol version of the + * current connection. The value `'unknown'` will be returned for connected + * sockets that have not completed the handshaking process. The value `null` will + * be returned for server sockets or disconnected client sockets. + * + * Protocol versions are: + * + * * `'SSLv3'` + * * `'TLSv1'` + * * `'TLSv1.1'` + * * `'TLSv1.2'` + * * `'TLSv1.3'` + * + * See the OpenSSL [`SSL_get_version`](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html) documentation for more information. + * @since v5.7.0 + */ + getProtocol(): string | null; + /** + * Returns the TLS session data or `undefined` if no session was + * negotiated. On the client, the data can be provided to the `session` option of {@link connect} to resume the connection. On the server, it may be useful + * for debugging. + * + * See `Session Resumption` for more information. + * + * Note: `getSession()` works only for TLSv1.2 and below. For TLSv1.3, applications + * must use the `'session'` event (it also works for TLSv1.2 and below). + * @since v0.11.4 + */ + getSession(): Buffer | undefined; + /** + * See [SSL\_get\_shared\_sigalgs](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html) for more information. + * @since v12.11.0 + * @return List of signature algorithms shared between the server and the client in the order of decreasing preference. + */ + getSharedSigalgs(): string[]; + /** + * For a client, returns the TLS session ticket if one is available, or`undefined`. For a server, always returns `undefined`. + * + * It may be useful for debugging. + * + * See `Session Resumption` for more information. + * @since v0.11.4 + */ + getTLSTicket(): Buffer | undefined; + /** + * See `Session Resumption` for more information. + * @since v0.5.6 + * @return `true` if the session was reused, `false` otherwise. + */ + isSessionReused(): boolean; + /** + * The `tlsSocket.renegotiate()` method initiates a TLS renegotiation process. + * Upon completion, the `callback` function will be passed a single argument + * that is either an `Error` (if the request failed) or `null`. + * + * This method can be used to request a peer's certificate after the secure + * connection has been established. + * + * When running as the server, the socket will be destroyed with an error after `handshakeTimeout` timeout. + * + * For TLSv1.3, renegotiation cannot be initiated, it is not supported by the + * protocol. + * @since v0.11.8 + * @param callback If `renegotiate()` returned `true`, callback is attached once to the `'secure'` event. If `renegotiate()` returned `false`, `callback` will be called in the next tick with + * an error, unless the `tlsSocket` has been destroyed, in which case `callback` will not be called at all. + * @return `true` if renegotiation was initiated, `false` otherwise. + */ + renegotiate( + options: { + rejectUnauthorized?: boolean | undefined; + requestCert?: boolean | undefined; + }, + callback: (err: Error | null) => void, + ): undefined | boolean; + /** + * The `tlsSocket.setKeyCert()` method sets the private key and certificate to use for the socket. + * This is mainly useful if you wish to select a server certificate from a TLS server's `ALPNCallback`. + * @since v22.5.0, v20.17.0 + * @param context An object containing at least `key` and `cert` properties from the {@link createSecureContext()} `options`, + * or a TLS context object created with {@link createSecureContext()} itself. + */ + setKeyCert(context: SecureContextOptions | SecureContext): void; + /** + * The `tlsSocket.setMaxSendFragment()` method sets the maximum TLS fragment size. + * Returns `true` if setting the limit succeeded; `false` otherwise. + * + * Smaller fragment sizes decrease the buffering latency on the client: larger + * fragments are buffered by the TLS layer until the entire fragment is received + * and its integrity is verified; large fragments can span multiple roundtrips + * and their processing can be delayed due to packet loss or reordering. However, + * smaller fragments add extra TLS framing bytes and CPU overhead, which may + * decrease overall server throughput. + * @since v0.11.11 + * @param [size=16384] The maximum TLS fragment size. The maximum value is `16384`. + */ + setMaxSendFragment(size: number): boolean; + /** + * Disables TLS renegotiation for this `TLSSocket` instance. Once called, attempts + * to renegotiate will trigger an `'error'` event on the `TLSSocket`. + * @since v8.4.0 + */ + disableRenegotiation(): void; + /** + * When enabled, TLS packet trace information is written to `stderr`. This can be + * used to debug TLS connection problems. + * + * The format of the output is identical to the output of`openssl s_client -trace` or `openssl s_server -trace`. While it is produced by + * OpenSSL's `SSL_trace()` function, the format is undocumented, can change + * without notice, and should not be relied on. + * @since v12.2.0 + */ + enableTrace(): void; + /** + * Returns the peer certificate as an `X509Certificate` object. + * + * If there is no peer certificate, or the socket has been destroyed,`undefined` will be returned. + * @since v15.9.0 + */ + getPeerX509Certificate(): X509Certificate | undefined; + /** + * Returns the local certificate as an `X509Certificate` object. + * + * If there is no local certificate, or the socket has been destroyed,`undefined` will be returned. + * @since v15.9.0 + */ + getX509Certificate(): X509Certificate | undefined; + /** + * Keying material is used for validations to prevent different kind of attacks in + * network protocols, for example in the specifications of IEEE 802.1X. + * + * Example + * + * ```js + * const keyingMaterial = tlsSocket.exportKeyingMaterial( + * 128, + * 'client finished'); + * + * /* + * Example return value of keyingMaterial: + * + * + * ``` + * + * See the OpenSSL [`SSL_export_keying_material`](https://www.openssl.org/docs/man1.1.1/man3/SSL_export_keying_material.html) documentation for more + * information. + * @since v13.10.0, v12.17.0 + * @param length number of bytes to retrieve from keying material + * @param label an application specific label, typically this will be a value from the [IANA Exporter Label + * Registry](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#exporter-labels). + * @param context Optionally provide a context. + * @return requested bytes of the keying material + */ + exportKeyingMaterial(length: number, label: string, context: Buffer): Buffer; + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + addListener(event: "secureConnect", listener: () => void): this; + addListener(event: "session", listener: (session: Buffer) => void): this; + addListener(event: "keylog", listener: (line: Buffer) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "OCSPResponse", response: Buffer): boolean; + emit(event: "secureConnect"): boolean; + emit(event: "session", session: Buffer): boolean; + emit(event: "keylog", line: Buffer): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "OCSPResponse", listener: (response: Buffer) => void): this; + on(event: "secureConnect", listener: () => void): this; + on(event: "session", listener: (session: Buffer) => void): this; + on(event: "keylog", listener: (line: Buffer) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "OCSPResponse", listener: (response: Buffer) => void): this; + once(event: "secureConnect", listener: () => void): this; + once(event: "session", listener: (session: Buffer) => void): this; + once(event: "keylog", listener: (line: Buffer) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependListener(event: "secureConnect", listener: () => void): this; + prependListener(event: "session", listener: (session: Buffer) => void): this; + prependListener(event: "keylog", listener: (line: Buffer) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependOnceListener(event: "secureConnect", listener: () => void): this; + prependOnceListener(event: "session", listener: (session: Buffer) => void): this; + prependOnceListener(event: "keylog", listener: (line: Buffer) => void): this; + } + interface CommonConnectionOptions { + /** + * An optional TLS context object from tls.createSecureContext() + */ + secureContext?: SecureContext | undefined; + /** + * When enabled, TLS packet trace information is written to `stderr`. This can be + * used to debug TLS connection problems. + * @default false + */ + enableTrace?: boolean | undefined; + /** + * If true the server will request a certificate from clients that + * connect and attempt to verify that certificate. Defaults to + * false. + */ + requestCert?: boolean | undefined; + /** + * An array of strings or a Buffer naming possible ALPN protocols. + * (Protocols should be ordered by their priority.) + */ + ALPNProtocols?: string[] | Uint8Array[] | Uint8Array | undefined; + /** + * SNICallback(servername, cb) A function that will be + * called if the client supports SNI TLS extension. Two arguments + * will be passed when called: servername and cb. SNICallback should + * invoke cb(null, ctx), where ctx is a SecureContext instance. + * (tls.createSecureContext(...) can be used to get a proper + * SecureContext.) If SNICallback wasn't provided the default callback + * with high-level API will be used (see below). + */ + SNICallback?: ((servername: string, cb: (err: Error | null, ctx?: SecureContext) => void) => void) | undefined; + /** + * If true the server will reject any connection which is not + * authorized with the list of supplied CAs. This option only has an + * effect if requestCert is true. + * @default true + */ + rejectUnauthorized?: boolean | undefined; + } + interface TlsOptions extends SecureContextOptions, CommonConnectionOptions, net.ServerOpts { + /** + * Abort the connection if the SSL/TLS handshake does not finish in the + * specified number of milliseconds. A 'tlsClientError' is emitted on + * the tls.Server object whenever a handshake times out. Default: + * 120000 (120 seconds). + */ + handshakeTimeout?: number | undefined; + /** + * The number of seconds after which a TLS session created by the + * server will no longer be resumable. See Session Resumption for more + * information. Default: 300. + */ + sessionTimeout?: number | undefined; + /** + * 48-bytes of cryptographically strong pseudo-random data. + */ + ticketKeys?: Buffer | undefined; + /** + * @param socket + * @param identity identity parameter sent from the client. + * @return pre-shared key that must either be + * a buffer or `null` to stop the negotiation process. Returned PSK must be + * compatible with the selected cipher's digest. + * + * When negotiating TLS-PSK (pre-shared keys), this function is called + * with the identity provided by the client. + * If the return value is `null` the negotiation process will stop and an + * "unknown_psk_identity" alert message will be sent to the other party. + * If the server wishes to hide the fact that the PSK identity was not known, + * the callback must provide some random data as `psk` to make the connection + * fail with "decrypt_error" before negotiation is finished. + * PSK ciphers are disabled by default, and using TLS-PSK thus + * requires explicitly specifying a cipher suite with the `ciphers` option. + * More information can be found in the RFC 4279. + */ + pskCallback?(socket: TLSSocket, identity: string): DataView | NodeJS.TypedArray | null; + /** + * hint to send to a client to help + * with selecting the identity during TLS-PSK negotiation. Will be ignored + * in TLS 1.3. Upon failing to set pskIdentityHint `tlsClientError` will be + * emitted with `ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED` code. + */ + pskIdentityHint?: string | undefined; + } + interface PSKCallbackNegotation { + psk: DataView | NodeJS.TypedArray; + identity: string; + } + interface ConnectionOptions extends SecureContextOptions, CommonConnectionOptions { + host?: string | undefined; + port?: number | undefined; + path?: string | undefined; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored. + socket?: stream.Duplex | undefined; // Establish secure connection on a given socket rather than creating a new socket + checkServerIdentity?: typeof checkServerIdentity | undefined; + servername?: string | undefined; // SNI TLS Extension + session?: Buffer | undefined; + minDHSize?: number | undefined; + lookup?: net.LookupFunction | undefined; + timeout?: number | undefined; + /** + * When negotiating TLS-PSK (pre-shared keys), this function is called + * with optional identity `hint` provided by the server or `null` + * in case of TLS 1.3 where `hint` was removed. + * It will be necessary to provide a custom `tls.checkServerIdentity()` + * for the connection as the default one will try to check hostname/IP + * of the server against the certificate but that's not applicable for PSK + * because there won't be a certificate present. + * More information can be found in the RFC 4279. + * + * @param hint message sent from the server to help client + * decide which identity to use during negotiation. + * Always `null` if TLS 1.3 is used. + * @returns Return `null` to stop the negotiation process. `psk` must be + * compatible with the selected cipher's digest. + * `identity` must use UTF-8 encoding. + */ + pskCallback?(hint: string | null): PSKCallbackNegotation | null; + } + /** + * Accepts encrypted connections using TLS or SSL. + * @since v0.3.2 + */ + class Server extends net.Server { + constructor(secureConnectionListener?: (socket: TLSSocket) => void); + constructor(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void); + /** + * The `server.addContext()` method adds a secure context that will be used if + * the client request's SNI name matches the supplied `hostname` (or wildcard). + * + * When there are multiple matching contexts, the most recently added one is + * used. + * @since v0.5.3 + * @param hostname A SNI host name or wildcard (e.g. `'*'`) + * @param context An object containing any of the possible properties from the {@link createSecureContext} `options` arguments (e.g. `key`, `cert`, `ca`, etc), or a TLS context object created + * with {@link createSecureContext} itself. + */ + addContext(hostname: string, context: SecureContextOptions | SecureContext): void; + /** + * Returns the session ticket keys. + * + * See `Session Resumption` for more information. + * @since v3.0.0 + * @return A 48-byte buffer containing the session ticket keys. + */ + getTicketKeys(): Buffer; + /** + * The `server.setSecureContext()` method replaces the secure context of an + * existing server. Existing connections to the server are not interrupted. + * @since v11.0.0 + * @param options An object containing any of the possible properties from the {@link createSecureContext} `options` arguments (e.g. `key`, `cert`, `ca`, etc). + */ + setSecureContext(options: SecureContextOptions): void; + /** + * Sets the session ticket keys. + * + * Changes to the ticket keys are effective only for future server connections. + * Existing or currently pending server connections will use the previous keys. + * + * See `Session Resumption` for more information. + * @since v3.0.0 + * @param keys A 48-byte buffer containing the session ticket keys. + */ + setTicketKeys(keys: Buffer): void; + /** + * events.EventEmitter + * 1. tlsClientError + * 2. newSession + * 3. OCSPRequest + * 4. resumeSession + * 5. secureConnection + * 6. keylog + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + addListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + addListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + addListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + addListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; + emit(event: "newSession", sessionId: Buffer, sessionData: Buffer, callback: () => void): boolean; + emit( + event: "OCSPRequest", + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ): boolean; + emit( + event: "resumeSession", + sessionId: Buffer, + callback: (err: Error | null, sessionData: Buffer | null) => void, + ): boolean; + emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; + emit(event: "keylog", line: Buffer, tlsSocket: TLSSocket): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + on(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void): this; + on( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + on( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + on(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + once( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + once( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + once( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + once(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + prependListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependOnceListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + prependOnceListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependOnceListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + } + type SecureVersion = "TLSv1.3" | "TLSv1.2" | "TLSv1.1" | "TLSv1"; + interface SecureContextOptions { + /** + * If set, this will be called when a client opens a connection using the ALPN extension. + * One argument will be passed to the callback: an object containing `servername` and `protocols` fields, + * respectively containing the server name from the SNI extension (if any) and an array of + * ALPN protocol name strings. The callback must return either one of the strings listed in `protocols`, + * which will be returned to the client as the selected ALPN protocol, or `undefined`, + * to reject the connection with a fatal alert. If a string is returned that does not match one of + * the client's ALPN protocols, an error will be thrown. + * This option cannot be used with the `ALPNProtocols` option, and setting both options will throw an error. + */ + ALPNCallback?: ((arg: { servername: string; protocols: string[] }) => string | undefined) | undefined; + /** + * Treat intermediate (non-self-signed) + * certificates in the trust CA certificate list as trusted. + * @since v22.9.0, v20.18.0 + */ + allowPartialTrustChain?: boolean | undefined; + /** + * Optionally override the trusted CA certificates. Default is to trust + * the well-known CAs curated by Mozilla. Mozilla's CAs are completely + * replaced when CAs are explicitly specified using this option. + */ + ca?: string | Buffer | Array | undefined; + /** + * Cert chains in PEM format. One cert chain should be provided per + * private key. Each cert chain should consist of the PEM formatted + * certificate for a provided private key, followed by the PEM + * formatted intermediate certificates (if any), in order, and not + * including the root CA (the root CA must be pre-known to the peer, + * see ca). When providing multiple cert chains, they do not have to + * be in the same order as their private keys in key. If the + * intermediate certificates are not provided, the peer will not be + * able to validate the certificate, and the handshake will fail. + */ + cert?: string | Buffer | Array | undefined; + /** + * Colon-separated list of supported signature algorithms. The list + * can contain digest algorithms (SHA256, MD5 etc.), public key + * algorithms (RSA-PSS, ECDSA etc.), combination of both (e.g + * 'RSA+SHA384') or TLS v1.3 scheme names (e.g. rsa_pss_pss_sha512). + */ + sigalgs?: string | undefined; + /** + * Cipher suite specification, replacing the default. For more + * information, see modifying the default cipher suite. Permitted + * ciphers can be obtained via tls.getCiphers(). Cipher names must be + * uppercased in order for OpenSSL to accept them. + */ + ciphers?: string | undefined; + /** + * Name of an OpenSSL engine which can provide the client certificate. + * @deprecated + */ + clientCertEngine?: string | undefined; + /** + * PEM formatted CRLs (Certificate Revocation Lists). + */ + crl?: string | Buffer | Array | undefined; + /** + * `'auto'` or custom Diffie-Hellman parameters, required for non-ECDHE perfect forward secrecy. + * If omitted or invalid, the parameters are silently discarded and DHE ciphers will not be available. + * ECDHE-based perfect forward secrecy will still be available. + */ + dhparam?: string | Buffer | undefined; + /** + * A string describing a named curve or a colon separated list of curve + * NIDs or names, for example P-521:P-384:P-256, to use for ECDH key + * agreement. Set to auto to select the curve automatically. Use + * crypto.getCurves() to obtain a list of available curve names. On + * recent releases, openssl ecparam -list_curves will also display the + * name and description of each available elliptic curve. Default: + * tls.DEFAULT_ECDH_CURVE. + */ + ecdhCurve?: string | undefined; + /** + * Attempt to use the server's cipher suite preferences instead of the + * client's. When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be + * set in secureOptions + */ + honorCipherOrder?: boolean | undefined; + /** + * Private keys in PEM format. PEM allows the option of private keys + * being encrypted. Encrypted keys will be decrypted with + * options.passphrase. Multiple keys using different algorithms can be + * provided either as an array of unencrypted key strings or buffers, + * or an array of objects in the form {pem: [, + * passphrase: ]}. The object form can only occur in an array. + * object.passphrase is optional. Encrypted keys will be decrypted with + * object.passphrase if provided, or options.passphrase if it is not. + */ + key?: string | Buffer | Array | undefined; + /** + * Name of an OpenSSL engine to get private key from. Should be used + * together with privateKeyIdentifier. + * @deprecated + */ + privateKeyEngine?: string | undefined; + /** + * Identifier of a private key managed by an OpenSSL engine. Should be + * used together with privateKeyEngine. Should not be set together with + * key, because both options define a private key in different ways. + * @deprecated + */ + privateKeyIdentifier?: string | undefined; + /** + * Optionally set the maximum TLS version to allow. One + * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the + * `secureProtocol` option, use one or the other. + * **Default:** `'TLSv1.3'`, unless changed using CLI options. Using + * `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to + * `'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used. + */ + maxVersion?: SecureVersion | undefined; + /** + * Optionally set the minimum TLS version to allow. One + * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the + * `secureProtocol` option, use one or the other. It is not recommended to use + * less than TLSv1.2, but it may be required for interoperability. + * **Default:** `'TLSv1.2'`, unless changed using CLI options. Using + * `--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to + * `'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to + * 'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used. + */ + minVersion?: SecureVersion | undefined; + /** + * Shared passphrase used for a single private key and/or a PFX. + */ + passphrase?: string | undefined; + /** + * PFX or PKCS12 encoded private key and certificate chain. pfx is an + * alternative to providing key and cert individually. PFX is usually + * encrypted, if it is, passphrase will be used to decrypt it. Multiple + * PFX can be provided either as an array of unencrypted PFX buffers, + * or an array of objects in the form {buf: [, + * passphrase: ]}. The object form can only occur in an array. + * object.passphrase is optional. Encrypted PFX will be decrypted with + * object.passphrase if provided, or options.passphrase if it is not. + */ + pfx?: string | Buffer | Array | undefined; + /** + * Optionally affect the OpenSSL protocol behavior, which is not + * usually necessary. This should be used carefully if at all! Value is + * a numeric bitmask of the SSL_OP_* options from OpenSSL Options + */ + secureOptions?: number | undefined; // Value is a numeric bitmask of the `SSL_OP_*` options + /** + * Legacy mechanism to select the TLS protocol version to use, it does + * not support independent control of the minimum and maximum version, + * and does not support limiting the protocol to TLSv1.3. Use + * minVersion and maxVersion instead. The possible values are listed as + * SSL_METHODS, use the function names as strings. For example, use + * 'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow + * any TLS protocol version up to TLSv1.3. It is not recommended to use + * TLS versions less than 1.2, but it may be required for + * interoperability. Default: none, see minVersion. + */ + secureProtocol?: string | undefined; + /** + * Opaque identifier used by servers to ensure session state is not + * shared between applications. Unused by clients. + */ + sessionIdContext?: string | undefined; + /** + * 48-bytes of cryptographically strong pseudo-random data. + * See Session Resumption for more information. + */ + ticketKeys?: Buffer | undefined; + /** + * The number of seconds after which a TLS session created by the + * server will no longer be resumable. See Session Resumption for more + * information. Default: 300. + */ + sessionTimeout?: number | undefined; + } + interface SecureContext { + context: any; + } + /** + * Verifies the certificate `cert` is issued to `hostname`. + * + * Returns [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object, populating it with `reason`, `host`, and `cert` on + * failure. On success, returns [undefined](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Undefined_type). + * + * This function is intended to be used in combination with the`checkServerIdentity` option that can be passed to {@link connect} and as + * such operates on a `certificate object`. For other purposes, consider using `x509.checkHost()` instead. + * + * This function can be overwritten by providing an alternative function as the `options.checkServerIdentity` option that is passed to `tls.connect()`. The + * overwriting function can call `tls.checkServerIdentity()` of course, to augment + * the checks done with additional verification. + * + * This function is only called if the certificate passed all other checks, such as + * being issued by trusted CA (`options.ca`). + * + * Earlier versions of Node.js incorrectly accepted certificates for a given`hostname` if a matching `uniformResourceIdentifier` subject alternative name + * was present (see [CVE-2021-44531](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44531)). Applications that wish to accept`uniformResourceIdentifier` subject alternative names can use + * a custom `options.checkServerIdentity` function that implements the desired behavior. + * @since v0.8.4 + * @param hostname The host name or IP address to verify the certificate against. + * @param cert A `certificate object` representing the peer's certificate. + */ + function checkServerIdentity(hostname: string, cert: PeerCertificate): Error | undefined; + /** + * Creates a new {@link Server}. The `secureConnectionListener`, if provided, is + * automatically set as a listener for the `'secureConnection'` event. + * + * The `ticketKeys` options is automatically shared between `node:cluster` module + * workers. + * + * The following illustrates a simple echo server: + * + * ```js + * import tls from 'node:tls'; + * import fs from 'node:fs'; + * + * const options = { + * key: fs.readFileSync('server-key.pem'), + * cert: fs.readFileSync('server-cert.pem'), + * + * // This is necessary only if using client certificate authentication. + * requestCert: true, + * + * // This is necessary only if the client uses a self-signed certificate. + * ca: [ fs.readFileSync('client-cert.pem') ], + * }; + * + * const server = tls.createServer(options, (socket) => { + * console.log('server connected', + * socket.authorized ? 'authorized' : 'unauthorized'); + * socket.write('welcome!\n'); + * socket.setEncoding('utf8'); + * socket.pipe(socket); + * }); + * server.listen(8000, () => { + * console.log('server bound'); + * }); + * ``` + * + * The server can be tested by connecting to it using the example client from {@link connect}. + * @since v0.3.2 + */ + function createServer(secureConnectionListener?: (socket: TLSSocket) => void): Server; + function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; + /** + * The `callback` function, if specified, will be added as a listener for the `'secureConnect'` event. + * + * `tls.connect()` returns a {@link TLSSocket} object. + * + * Unlike the `https` API, `tls.connect()` does not enable the + * SNI (Server Name Indication) extension by default, which may cause some + * servers to return an incorrect certificate or reject the connection + * altogether. To enable SNI, set the `servername` option in addition + * to `host`. + * + * The following illustrates a client for the echo server example from {@link createServer}: + * + * ```js + * // Assumes an echo server that is listening on port 8000. + * import tls from 'node:tls'; + * import fs from 'node:fs'; + * + * const options = { + * // Necessary only if the server requires client certificate authentication. + * key: fs.readFileSync('client-key.pem'), + * cert: fs.readFileSync('client-cert.pem'), + * + * // Necessary only if the server uses a self-signed certificate. + * ca: [ fs.readFileSync('server-cert.pem') ], + * + * // Necessary only if the server's cert isn't for "localhost". + * checkServerIdentity: () => { return null; }, + * }; + * + * const socket = tls.connect(8000, options, () => { + * console.log('client connected', + * socket.authorized ? 'authorized' : 'unauthorized'); + * process.stdin.pipe(socket); + * process.stdin.resume(); + * }); + * socket.setEncoding('utf8'); + * socket.on('data', (data) => { + * console.log(data); + * }); + * socket.on('end', () => { + * console.log('server ends connection'); + * }); + * ``` + * @since v0.11.3 + */ + function connect(options: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + function connect( + port: number, + host?: string, + options?: ConnectionOptions, + secureConnectListener?: () => void, + ): TLSSocket; + function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + /** + * `{@link createServer}` sets the default value of the `honorCipherOrder` option + * to `true`, other APIs that create secure contexts leave it unset. + * + * `{@link createServer}` uses a 128 bit truncated SHA1 hash value generated + * from `process.argv` as the default value of the `sessionIdContext` option, other + * APIs that create secure contexts have no default value. + * + * The `tls.createSecureContext()` method creates a `SecureContext` object. It is + * usable as an argument to several `tls` APIs, such as `server.addContext()`, + * but has no public methods. The {@link Server} constructor and the {@link createServer} method do not support the `secureContext` option. + * + * A key is _required_ for ciphers that use certificates. Either `key` or `pfx` can be used to provide it. + * + * If the `ca` option is not given, then Node.js will default to using [Mozilla's publicly trusted list of + * CAs](https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt). + * + * Custom DHE parameters are discouraged in favor of the new `dhparam: 'auto' `option. When set to `'auto'`, well-known DHE parameters of sufficient strength + * will be selected automatically. Otherwise, if necessary, `openssl dhparam` can + * be used to create custom parameters. The key length must be greater than or + * equal to 1024 bits or else an error will be thrown. Although 1024 bits is + * permissible, use 2048 bits or larger for stronger security. + * @since v0.11.13 + */ + function createSecureContext(options?: SecureContextOptions): SecureContext; + /** + * Returns an array containing the CA certificates from various sources, depending on `type`: + * + * * `"default"`: return the CA certificates that will be used by the Node.js TLS clients by default. + * * When `--use-bundled-ca` is enabled (default), or `--use-openssl-ca` is not enabled, + * this would include CA certificates from the bundled Mozilla CA store. + * * When `--use-system-ca` is enabled, this would also include certificates from the system's + * trusted store. + * * When `NODE_EXTRA_CA_CERTS` is used, this would also include certificates loaded from the specified + * file. + * * `"system"`: return the CA certificates that are loaded from the system's trusted store, according + * to rules set by `--use-system-ca`. This can be used to get the certificates from the system + * when `--use-system-ca` is not enabled. + * * `"bundled"`: return the CA certificates from the bundled Mozilla CA store. This would be the same + * as `tls.rootCertificates`. + * * `"extra"`: return the CA certificates loaded from `NODE_EXTRA_CA_CERTS`. It's an empty array if + * `NODE_EXTRA_CA_CERTS` is not set. + * @since v22.15.0 + * @param type The type of CA certificates that will be returned. Valid values + * are `"default"`, `"system"`, `"bundled"` and `"extra"`. + * **Default:** `"default"`. + * @returns An array of PEM-encoded certificates. The array may contain duplicates + * if the same certificate is repeatedly stored in multiple sources. + */ + function getCACertificates(type?: "default" | "system" | "bundled" | "extra"): string[]; + /** + * Returns an array with the names of the supported TLS ciphers. The names are + * lower-case for historical reasons, but must be uppercased to be used in + * the `ciphers` option of `{@link createSecureContext}`. + * + * Not all supported ciphers are enabled by default. See + * [Modifying the default TLS cipher suite](https://nodejs.org/docs/latest-v24.x/api/tls.html#modifying-the-default-tls-cipher-suite). + * + * Cipher names that start with `'tls_'` are for TLSv1.3, all the others are for + * TLSv1.2 and below. + * + * ```js + * console.log(tls.getCiphers()); // ['aes128-gcm-sha256', 'aes128-sha', ...] + * ``` + * @since v0.10.2 + */ + function getCiphers(): string[]; + /** + * The default curve name to use for ECDH key agreement in a tls server. + * The default value is `'auto'`. See `{@link createSecureContext()}` for further + * information. + * @since v0.11.13 + */ + let DEFAULT_ECDH_CURVE: string; + /** + * The default value of the `maxVersion` option of `{@link createSecureContext()}`. + * It can be assigned any of the supported TLS protocol versions, + * `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. **Default:** `'TLSv1.3'`, unless + * changed using CLI options. Using `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using + * `--tls-max-v1.3` sets the default to `'TLSv1.3'`. If multiple of the options + * are provided, the highest maximum is used. + * @since v11.4.0 + */ + let DEFAULT_MAX_VERSION: SecureVersion; + /** + * The default value of the `minVersion` option of `{@link createSecureContext()}`. + * It can be assigned any of the supported TLS protocol versions, + * `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. **Default:** `'TLSv1.2'`, unless + * changed using CLI options. Using `--tls-min-v1.0` sets the default to + * `'TLSv1'`. Using `--tls-min-v1.1` sets the default to `'TLSv1.1'`. Using + * `--tls-min-v1.3` sets the default to `'TLSv1.3'`. If multiple of the options + * are provided, the lowest minimum is used. + * @since v11.4.0 + */ + let DEFAULT_MIN_VERSION: SecureVersion; + /** + * The default value of the `ciphers` option of `{@link createSecureContext()}`. + * It can be assigned any of the supported OpenSSL ciphers. + * Defaults to the content of `crypto.constants.defaultCoreCipherList`, unless + * changed using CLI options using `--tls-default-ciphers`. + * @since v19.8.0 + */ + let DEFAULT_CIPHERS: string; + /** + * An immutable array of strings representing the root certificates (in PEM format) + * from the bundled Mozilla CA store as supplied by the current Node.js version. + * + * The bundled CA store, as supplied by Node.js, is a snapshot of Mozilla CA store + * that is fixed at release time. It is identical on all supported platforms. + * @since v12.3.0 + */ + const rootCertificates: readonly string[]; +} +declare module "node:tls" { + export * from "tls"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/trace_events.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/trace_events.d.ts.html new file mode 100644 index 0000000..56e4620 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/trace_events.d.ts.html @@ -0,0 +1,197 @@ +/** + * The `node:trace_events` module provides a mechanism to centralize tracing information + * generated by V8, Node.js core, and userspace code. + * + * Tracing can be enabled with the `--trace-event-categories` command-line flag + * or by using the `trace_events` module. The `--trace-event-categories` flag + * accepts a list of comma-separated category names. + * + * The available categories are: + * + * * `node`: An empty placeholder. + * * `node.async_hooks`: Enables capture of detailed [`async_hooks`](https://nodejs.org/docs/latest-v24.x/api/async_hooks.html) trace data. + * The [`async_hooks`](https://nodejs.org/docs/latest-v24.x/api/async_hooks.html) events have a unique `asyncId` and a special `triggerId` `triggerAsyncId` property. + * * `node.bootstrap`: Enables capture of Node.js bootstrap milestones. + * * `node.console`: Enables capture of `console.time()` and `console.count()` output. + * * `node.threadpoolwork.sync`: Enables capture of trace data for threadpool synchronous operations, such as `blob`, `zlib`, `crypto` and `node_api`. + * * `node.threadpoolwork.async`: Enables capture of trace data for threadpool asynchronous operations, such as `blob`, `zlib`, `crypto` and `node_api`. + * * `node.dns.native`: Enables capture of trace data for DNS queries. + * * `node.net.native`: Enables capture of trace data for network. + * * `node.environment`: Enables capture of Node.js Environment milestones. + * * `node.fs.sync`: Enables capture of trace data for file system sync methods. + * * `node.fs_dir.sync`: Enables capture of trace data for file system sync directory methods. + * * `node.fs.async`: Enables capture of trace data for file system async methods. + * * `node.fs_dir.async`: Enables capture of trace data for file system async directory methods. + * * `node.perf`: Enables capture of [Performance API](https://nodejs.org/docs/latest-v24.x/api/perf_hooks.html) measurements. + * * `node.perf.usertiming`: Enables capture of only Performance API User Timing + * measures and marks. + * * `node.perf.timerify`: Enables capture of only Performance API timerify + * measurements. + * * `node.promises.rejections`: Enables capture of trace data tracking the number + * of unhandled Promise rejections and handled-after-rejections. + * * `node.vm.script`: Enables capture of trace data for the `node:vm` module's `runInNewContext()`, `runInContext()`, and `runInThisContext()` methods. + * * `v8`: The [V8](https://nodejs.org/docs/latest-v24.x/api/v8.html) events are GC, compiling, and execution related. + * * `node.http`: Enables capture of trace data for http request / response. + * + * By default the `node`, `node.async_hooks`, and `v8` categories are enabled. + * + * ```bash + * node --trace-event-categories v8,node,node.async_hooks server.js + * ``` + * + * Prior versions of Node.js required the use of the `--trace-events-enabled` flag to enable trace events. This requirement has been removed. However, the `--trace-events-enabled` flag _may_ still be + * used and will enable the `node`, `node.async_hooks`, and `v8` trace event categories by default. + * + * ```bash + * node --trace-events-enabled + * + * # is equivalent to + * + * node --trace-event-categories v8,node,node.async_hooks + * ``` + * + * Alternatively, trace events may be enabled using the `node:trace_events` module: + * + * ```js + * import trace_events from 'node:trace_events'; + * const tracing = trace_events.createTracing({ categories: ['node.perf'] }); + * tracing.enable(); // Enable trace event capture for the 'node.perf' category + * + * // do work + * + * tracing.disable(); // Disable trace event capture for the 'node.perf' category + * ``` + * + * Running Node.js with tracing enabled will produce log files that can be opened + * in the [`chrome://tracing`](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) tab of Chrome. + * + * The logging file is by default called `node_trace.${rotation}.log`, where `${rotation}` is an incrementing log-rotation id. The filepath pattern can + * be specified with `--trace-event-file-pattern` that accepts a template + * string that supports `${rotation}` and `${pid}`: + * + * ```bash + * node --trace-event-categories v8 --trace-event-file-pattern '${pid}-${rotation}.log' server.js + * ``` + * + * To guarantee that the log file is properly generated after signal events like `SIGINT`, `SIGTERM`, or `SIGBREAK`, make sure to have the appropriate handlers + * in your code, such as: + * + * ```js + * process.on('SIGINT', function onSigint() { + * console.info('Received SIGINT.'); + * process.exit(130); // Or applicable exit code depending on OS and signal + * }); + * ``` + * + * The tracing system uses the same time source + * as the one used by `process.hrtime()`. + * However the trace-event timestamps are expressed in microseconds, + * unlike `process.hrtime()` which returns nanoseconds. + * + * The features from this module are not available in [`Worker`](https://nodejs.org/docs/latest-v24.x/api/worker_threads.html#class-worker) threads. + * @experimental + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/trace_events.js) + */ +declare module "trace_events" { + /** + * The `Tracing` object is used to enable or disable tracing for sets of + * categories. Instances are created using the + * `trace_events.createTracing()` method. + * + * When created, the `Tracing` object is disabled. Calling the + * `tracing.enable()` method adds the categories to the set of enabled trace + * event categories. Calling `tracing.disable()` will remove the categories + * from the set of enabled trace event categories. + */ + interface Tracing { + /** + * A comma-separated list of the trace event categories covered by this + * `Tracing` object. + * @since v10.0.0 + */ + readonly categories: string; + /** + * Disables this `Tracing` object. + * + * Only trace event categories _not_ covered by other enabled `Tracing` + * objects and _not_ specified by the `--trace-event-categories` flag + * will be disabled. + * + * ```js + * import trace_events from 'node:trace_events'; + * const t1 = trace_events.createTracing({ categories: ['node', 'v8'] }); + * const t2 = trace_events.createTracing({ categories: ['node.perf', 'node'] }); + * t1.enable(); + * t2.enable(); + * + * // Prints 'node,node.perf,v8' + * console.log(trace_events.getEnabledCategories()); + * + * t2.disable(); // Will only disable emission of the 'node.perf' category + * + * // Prints 'node,v8' + * console.log(trace_events.getEnabledCategories()); + * ``` + * @since v10.0.0 + */ + disable(): void; + /** + * Enables this `Tracing` object for the set of categories covered by + * the `Tracing` object. + * @since v10.0.0 + */ + enable(): void; + /** + * `true` only if the `Tracing` object has been enabled. + * @since v10.0.0 + */ + readonly enabled: boolean; + } + interface CreateTracingOptions { + /** + * An array of trace category names. Values included in the array are + * coerced to a string when possible. An error will be thrown if the + * value cannot be coerced. + */ + categories: string[]; + } + /** + * Creates and returns a `Tracing` object for the given set of `categories`. + * + * ```js + * import trace_events from 'node:trace_events'; + * const categories = ['node.perf', 'node.async_hooks']; + * const tracing = trace_events.createTracing({ categories }); + * tracing.enable(); + * // do stuff + * tracing.disable(); + * ``` + * @since v10.0.0 + */ + function createTracing(options: CreateTracingOptions): Tracing; + /** + * Returns a comma-separated list of all currently-enabled trace event + * categories. The current set of enabled trace event categories is determined + * by the _union_ of all currently-enabled `Tracing` objects and any categories + * enabled using the `--trace-event-categories` flag. + * + * Given the file `test.js` below, the command `node --trace-event-categories node.perf test.js` will print `'node.async_hooks,node.perf'` to the console. + * + * ```js + * import trace_events from 'node:trace_events'; + * const t1 = trace_events.createTracing({ categories: ['node.async_hooks'] }); + * const t2 = trace_events.createTracing({ categories: ['node.perf'] }); + * const t3 = trace_events.createTracing({ categories: ['v8'] }); + * + * t1.enable(); + * t2.enable(); + * + * console.log(trace_events.getEnabledCategories()); + * ``` + * @since v10.0.0 + */ + function getEnabledCategories(): string | undefined; +} +declare module "node:trace_events" { + export * from "trace_events"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/tty.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/tty.d.ts.html new file mode 100644 index 0000000..602324a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/tty.d.ts.html @@ -0,0 +1,208 @@ +/** + * The `node:tty` module provides the `tty.ReadStream` and `tty.WriteStream` classes. In most cases, it will not be necessary or possible to use this module + * directly. However, it can be accessed using: + * + * ```js + * import tty from 'node:tty'; + * ``` + * + * When Node.js detects that it is being run with a text terminal ("TTY") + * attached, `process.stdin` will, by default, be initialized as an instance of `tty.ReadStream` and both `process.stdout` and `process.stderr` will, by + * default, be instances of `tty.WriteStream`. The preferred method of determining + * whether Node.js is being run within a TTY context is to check that the value of + * the `process.stdout.isTTY` property is `true`: + * + * ```console + * $ node -p -e "Boolean(process.stdout.isTTY)" + * true + * $ node -p -e "Boolean(process.stdout.isTTY)" | cat + * false + * ``` + * + * In most cases, there should be little to no reason for an application to + * manually create instances of the `tty.ReadStream` and `tty.WriteStream` classes. + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/tty.js) + */ +declare module "tty" { + import * as net from "node:net"; + /** + * The `tty.isatty()` method returns `true` if the given `fd` is associated with + * a TTY and `false` if it is not, including whenever `fd` is not a non-negative + * integer. + * @since v0.5.8 + * @param fd A numeric file descriptor + */ + function isatty(fd: number): boolean; + /** + * Represents the readable side of a TTY. In normal circumstances `process.stdin` will be the only `tty.ReadStream` instance in a Node.js + * process and there should be no reason to create additional instances. + * @since v0.5.8 + */ + class ReadStream extends net.Socket { + constructor(fd: number, options?: net.SocketConstructorOpts); + /** + * A `boolean` that is `true` if the TTY is currently configured to operate as a + * raw device. + * + * This flag is always `false` when a process starts, even if the terminal is + * operating in raw mode. Its value will change with subsequent calls to `setRawMode`. + * @since v0.7.7 + */ + isRaw: boolean; + /** + * Allows configuration of `tty.ReadStream` so that it operates as a raw device. + * + * When in raw mode, input is always available character-by-character, not + * including modifiers. Additionally, all special processing of characters by the + * terminal is disabled, including echoing input + * characters. Ctrl+C will no longer cause a `SIGINT` when + * in this mode. + * @since v0.7.7 + * @param mode If `true`, configures the `tty.ReadStream` to operate as a raw device. If `false`, configures the `tty.ReadStream` to operate in its default mode. The `readStream.isRaw` + * property will be set to the resulting mode. + * @return The read stream instance. + */ + setRawMode(mode: boolean): this; + /** + * A `boolean` that is always `true` for `tty.ReadStream` instances. + * @since v0.5.8 + */ + isTTY: boolean; + } + /** + * -1 - to the left from cursor + * 0 - the entire line + * 1 - to the right from cursor + */ + type Direction = -1 | 0 | 1; + /** + * Represents the writable side of a TTY. In normal circumstances, `process.stdout` and `process.stderr` will be the only`tty.WriteStream` instances created for a Node.js process and there + * should be no reason to create additional instances. + * @since v0.5.8 + */ + class WriteStream extends net.Socket { + constructor(fd: number); + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "resize", listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "resize"): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "resize", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "resize", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "resize", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "resize", listener: () => void): this; + /** + * `writeStream.clearLine()` clears the current line of this `WriteStream` in a + * direction identified by `dir`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + clearLine(dir: Direction, callback?: () => void): boolean; + /** + * `writeStream.clearScreenDown()` clears this `WriteStream` from the current + * cursor down. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + clearScreenDown(callback?: () => void): boolean; + /** + * `writeStream.cursorTo()` moves this `WriteStream`'s cursor to the specified + * position. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + cursorTo(x: number, y?: number, callback?: () => void): boolean; + cursorTo(x: number, callback: () => void): boolean; + /** + * `writeStream.moveCursor()` moves this `WriteStream`'s cursor _relative_ to its + * current position. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + moveCursor(dx: number, dy: number, callback?: () => void): boolean; + /** + * Returns: + * + * * `1` for 2, + * * `4` for 16, + * * `8` for 256, + * * `24` for 16,777,216 colors supported. + * + * Use this to determine what colors the terminal supports. Due to the nature of + * colors in terminals it is possible to either have false positives or false + * negatives. It depends on process information and the environment variables that + * may lie about what terminal is used. + * It is possible to pass in an `env` object to simulate the usage of a specific + * terminal. This can be useful to check how specific environment settings behave. + * + * To enforce a specific color support, use one of the below environment settings. + * + * * 2 colors: `FORCE_COLOR = 0` (Disables colors) + * * 16 colors: `FORCE_COLOR = 1` + * * 256 colors: `FORCE_COLOR = 2` + * * 16,777,216 colors: `FORCE_COLOR = 3` + * + * Disabling color support is also possible by using the `NO_COLOR` and `NODE_DISABLE_COLORS` environment variables. + * @since v9.9.0 + * @param [env=process.env] An object containing the environment variables to check. This enables simulating the usage of a specific terminal. + */ + getColorDepth(env?: object): number; + /** + * Returns `true` if the `writeStream` supports at least as many colors as provided + * in `count`. Minimum support is 2 (black and white). + * + * This has the same false positives and negatives as described in `writeStream.getColorDepth()`. + * + * ```js + * process.stdout.hasColors(); + * // Returns true or false depending on if `stdout` supports at least 16 colors. + * process.stdout.hasColors(256); + * // Returns true or false depending on if `stdout` supports at least 256 colors. + * process.stdout.hasColors({ TMUX: '1' }); + * // Returns true. + * process.stdout.hasColors(2 ** 24, { TMUX: '1' }); + * // Returns false (the environment setting pretends to support 2 ** 8 colors). + * ``` + * @since v11.13.0, v10.16.0 + * @param [count=16] The number of colors that are requested (minimum 2). + * @param [env=process.env] An object containing the environment variables to check. This enables simulating the usage of a specific terminal. + */ + hasColors(count?: number): boolean; + hasColors(env?: object): boolean; + hasColors(count: number, env?: object): boolean; + /** + * `writeStream.getWindowSize()` returns the size of the TTY + * corresponding to this `WriteStream`. The array is of the type `[numColumns, numRows]` where `numColumns` and `numRows` represent the number + * of columns and rows in the corresponding TTY. + * @since v0.7.7 + */ + getWindowSize(): [number, number]; + /** + * A `number` specifying the number of columns the TTY currently has. This property + * is updated whenever the `'resize'` event is emitted. + * @since v0.7.7 + */ + columns: number; + /** + * A `number` specifying the number of rows the TTY currently has. This property + * is updated whenever the `'resize'` event is emitted. + * @since v0.7.7 + */ + rows: number; + /** + * A `boolean` that is always `true`. + * @since v0.5.8 + */ + isTTY: boolean; + } +} +declare module "node:tty" { + export * from "tty"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/url.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/url.d.ts.html new file mode 100644 index 0000000..83e3872 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/url.d.ts.html @@ -0,0 +1,1025 @@ +/** + * The `node:url` module provides utilities for URL resolution and parsing. It can + * be accessed using: + * + * ```js + * import url from 'node:url'; + * ``` + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/url.js) + */ +declare module "url" { + import { Blob as NodeBlob } from "node:buffer"; + import { ClientRequestArgs } from "node:http"; + import { ParsedUrlQuery, ParsedUrlQueryInput } from "node:querystring"; + // Input to `url.format` + interface UrlObject { + auth?: string | null | undefined; + hash?: string | null | undefined; + host?: string | null | undefined; + hostname?: string | null | undefined; + href?: string | null | undefined; + pathname?: string | null | undefined; + protocol?: string | null | undefined; + search?: string | null | undefined; + slashes?: boolean | null | undefined; + port?: string | number | null | undefined; + query?: string | null | ParsedUrlQueryInput | undefined; + } + // Output of `url.parse` + interface Url { + auth: string | null; + hash: string | null; + host: string | null; + hostname: string | null; + href: string; + path: string | null; + pathname: string | null; + protocol: string | null; + search: string | null; + slashes: boolean | null; + port: string | null; + query: string | null | ParsedUrlQuery; + } + interface UrlWithParsedQuery extends Url { + query: ParsedUrlQuery; + } + interface UrlWithStringQuery extends Url { + query: string | null; + } + interface FileUrlToPathOptions { + /** + * `true` if the `path` should be return as a windows filepath, `false` for posix, and `undefined` for the system default. + * @default undefined + * @since v22.1.0 + */ + windows?: boolean | undefined; + } + interface PathToFileUrlOptions { + /** + * `true` if the `path` should be return as a windows filepath, `false` for posix, and `undefined` for the system default. + * @default undefined + * @since v22.1.0 + */ + windows?: boolean | undefined; + } + /** + * The `url.parse()` method takes a URL string, parses it, and returns a URL + * object. + * + * A `TypeError` is thrown if `urlString` is not a string. + * + * A `URIError` is thrown if the `auth` property is present but cannot be decoded. + * + * `url.parse()` uses a lenient, non-standard algorithm for parsing URL + * strings. It is prone to security issues such as [host name spoofing](https://hackerone.com/reports/678487) and incorrect handling of usernames and passwords. Do not use with untrusted + * input. CVEs are not issued for `url.parse()` vulnerabilities. Use the `WHATWG URL` API instead. + * @since v0.1.25 + * @deprecated Use the WHATWG URL API instead. + * @param urlString The URL string to parse. + * @param [parseQueryString=false] If `true`, the `query` property will always be set to an object returned by the {@link querystring} module's `parse()` method. If `false`, the `query` property + * on the returned URL object will be an unparsed, undecoded string. + * @param [slashesDenoteHost=false] If `true`, the first token after the literal string `//` and preceding the next `/` will be interpreted as the `host`. For instance, given `//foo/bar`, the + * result would be `{host: 'foo', pathname: '/bar'}` rather than `{pathname: '//foo/bar'}`. + */ + function parse(urlString: string): UrlWithStringQuery; + function parse( + urlString: string, + parseQueryString: false | undefined, + slashesDenoteHost?: boolean, + ): UrlWithStringQuery; + function parse(urlString: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery; + function parse(urlString: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url; + /** + * The `url.format()` method returns a formatted URL string derived from `urlObject`. + * + * ```js + * import url from 'node:url'; + * url.format({ + * protocol: 'https', + * hostname: 'example.com', + * pathname: '/some/path', + * query: { + * page: 1, + * format: 'json', + * }, + * }); + * + * // => 'https://example.com/some/path?page=1&format=json' + * ``` + * + * If `urlObject` is not an object or a string, `url.format()` will throw a `TypeError`. + * + * The formatting process operates as follows: + * + * * A new empty string `result` is created. + * * If `urlObject.protocol` is a string, it is appended as-is to `result`. + * * Otherwise, if `urlObject.protocol` is not `undefined` and is not a string, an `Error` is thrown. + * * For all string values of `urlObject.protocol` that _do not end_ with an ASCII + * colon (`:`) character, the literal string `:` will be appended to `result`. + * * If either of the following conditions is true, then the literal string `//` will be appended to `result`: + * * `urlObject.slashes` property is true; + * * `urlObject.protocol` begins with `http`, `https`, `ftp`, `gopher`, or `file`; + * * If the value of the `urlObject.auth` property is truthy, and either `urlObject.host` or `urlObject.hostname` are not `undefined`, the value of `urlObject.auth` will be coerced into a string + * and appended to `result` followed by the literal string `@`. + * * If the `urlObject.host` property is `undefined` then: + * * If the `urlObject.hostname` is a string, it is appended to `result`. + * * Otherwise, if `urlObject.hostname` is not `undefined` and is not a string, + * an `Error` is thrown. + * * If the `urlObject.port` property value is truthy, and `urlObject.hostname` is not `undefined`: + * * The literal string `:` is appended to `result`, and + * * The value of `urlObject.port` is coerced to a string and appended to `result`. + * * Otherwise, if the `urlObject.host` property value is truthy, the value of `urlObject.host` is coerced to a string and appended to `result`. + * * If the `urlObject.pathname` property is a string that is not an empty string: + * * If the `urlObject.pathname` _does not start_ with an ASCII forward slash + * (`/`), then the literal string `'/'` is appended to `result`. + * * The value of `urlObject.pathname` is appended to `result`. + * * Otherwise, if `urlObject.pathname` is not `undefined` and is not a string, an `Error` is thrown. + * * If the `urlObject.search` property is `undefined` and if the `urlObject.query`property is an `Object`, the literal string `?` is appended to `result` followed by the output of calling the + * `querystring` module's `stringify()` method passing the value of `urlObject.query`. + * * Otherwise, if `urlObject.search` is a string: + * * If the value of `urlObject.search` _does not start_ with the ASCII question + * mark (`?`) character, the literal string `?` is appended to `result`. + * * The value of `urlObject.search` is appended to `result`. + * * Otherwise, if `urlObject.search` is not `undefined` and is not a string, an `Error` is thrown. + * * If the `urlObject.hash` property is a string: + * * If the value of `urlObject.hash` _does not start_ with the ASCII hash (`#`) + * character, the literal string `#` is appended to `result`. + * * The value of `urlObject.hash` is appended to `result`. + * * Otherwise, if the `urlObject.hash` property is not `undefined` and is not a + * string, an `Error` is thrown. + * * `result` is returned. + * @since v0.1.25 + * @legacy Use the WHATWG URL API instead. + * @param urlObject A URL object (as returned by `url.parse()` or constructed otherwise). If a string, it is converted to an object by passing it to `url.parse()`. + */ + function format(urlObject: URL, options?: URLFormatOptions): string; + /** + * The `url.format()` method returns a formatted URL string derived from `urlObject`. + * + * ```js + * import url from 'node:url'; + * url.format({ + * protocol: 'https', + * hostname: 'example.com', + * pathname: '/some/path', + * query: { + * page: 1, + * format: 'json', + * }, + * }); + * + * // => 'https://example.com/some/path?page=1&format=json' + * ``` + * + * If `urlObject` is not an object or a string, `url.format()` will throw a `TypeError`. + * + * The formatting process operates as follows: + * + * * A new empty string `result` is created. + * * If `urlObject.protocol` is a string, it is appended as-is to `result`. + * * Otherwise, if `urlObject.protocol` is not `undefined` and is not a string, an `Error` is thrown. + * * For all string values of `urlObject.protocol` that _do not end_ with an ASCII + * colon (`:`) character, the literal string `:` will be appended to `result`. + * * If either of the following conditions is true, then the literal string `//` will be appended to `result`: + * * `urlObject.slashes` property is true; + * * `urlObject.protocol` begins with `http`, `https`, `ftp`, `gopher`, or `file`; + * * If the value of the `urlObject.auth` property is truthy, and either `urlObject.host` or `urlObject.hostname` are not `undefined`, the value of `urlObject.auth` will be coerced into a string + * and appended to `result` followed by the literal string `@`. + * * If the `urlObject.host` property is `undefined` then: + * * If the `urlObject.hostname` is a string, it is appended to `result`. + * * Otherwise, if `urlObject.hostname` is not `undefined` and is not a string, + * an `Error` is thrown. + * * If the `urlObject.port` property value is truthy, and `urlObject.hostname` is not `undefined`: + * * The literal string `:` is appended to `result`, and + * * The value of `urlObject.port` is coerced to a string and appended to `result`. + * * Otherwise, if the `urlObject.host` property value is truthy, the value of `urlObject.host` is coerced to a string and appended to `result`. + * * If the `urlObject.pathname` property is a string that is not an empty string: + * * If the `urlObject.pathname` _does not start_ with an ASCII forward slash + * (`/`), then the literal string `'/'` is appended to `result`. + * * The value of `urlObject.pathname` is appended to `result`. + * * Otherwise, if `urlObject.pathname` is not `undefined` and is not a string, an `Error` is thrown. + * * If the `urlObject.search` property is `undefined` and if the `urlObject.query`property is an `Object`, the literal string `?` is appended to `result` followed by the output of calling the + * `querystring` module's `stringify()` method passing the value of `urlObject.query`. + * * Otherwise, if `urlObject.search` is a string: + * * If the value of `urlObject.search` _does not start_ with the ASCII question + * mark (`?`) character, the literal string `?` is appended to `result`. + * * The value of `urlObject.search` is appended to `result`. + * * Otherwise, if `urlObject.search` is not `undefined` and is not a string, an `Error` is thrown. + * * If the `urlObject.hash` property is a string: + * * If the value of `urlObject.hash` _does not start_ with the ASCII hash (`#`) + * character, the literal string `#` is appended to `result`. + * * The value of `urlObject.hash` is appended to `result`. + * * Otherwise, if the `urlObject.hash` property is not `undefined` and is not a + * string, an `Error` is thrown. + * * `result` is returned. + * @since v0.1.25 + * @legacy Use the WHATWG URL API instead. + * @param urlObject A URL object (as returned by `url.parse()` or constructed otherwise). If a string, it is converted to an object by passing it to `url.parse()`. + */ + function format(urlObject: UrlObject | string): string; + /** + * The `url.resolve()` method resolves a target URL relative to a base URL in a + * manner similar to that of a web browser resolving an anchor tag. + * + * ```js + * import url from 'node:url'; + * url.resolve('/one/two/three', 'four'); // '/one/two/four' + * url.resolve('http://example.com/', '/one'); // 'http://example.com/one' + * url.resolve('http://example.com/one', '/two'); // 'http://example.com/two' + * ``` + * + * To achieve the same result using the WHATWG URL API: + * + * ```js + * function resolve(from, to) { + * const resolvedUrl = new URL(to, new URL(from, 'resolve://')); + * if (resolvedUrl.protocol === 'resolve:') { + * // `from` is a relative URL. + * const { pathname, search, hash } = resolvedUrl; + * return pathname + search + hash; + * } + * return resolvedUrl.toString(); + * } + * + * resolve('/one/two/three', 'four'); // '/one/two/four' + * resolve('http://example.com/', '/one'); // 'http://example.com/one' + * resolve('http://example.com/one', '/two'); // 'http://example.com/two' + * ``` + * @since v0.1.25 + * @legacy Use the WHATWG URL API instead. + * @param from The base URL to use if `to` is a relative URL. + * @param to The target URL to resolve. + */ + function resolve(from: string, to: string): string; + /** + * Returns the [Punycode](https://tools.ietf.org/html/rfc5891#section-4.4) ASCII serialization of the `domain`. If `domain` is an + * invalid domain, the empty string is returned. + * + * It performs the inverse operation to {@link domainToUnicode}. + * + * ```js + * import url from 'node:url'; + * + * console.log(url.domainToASCII('español.com')); + * // Prints xn--espaol-zwa.com + * console.log(url.domainToASCII('中文.com')); + * // Prints xn--fiq228c.com + * console.log(url.domainToASCII('xn--iñvalid.com')); + * // Prints an empty string + * ``` + * @since v7.4.0, v6.13.0 + */ + function domainToASCII(domain: string): string; + /** + * Returns the Unicode serialization of the `domain`. If `domain` is an invalid + * domain, the empty string is returned. + * + * It performs the inverse operation to {@link domainToASCII}. + * + * ```js + * import url from 'node:url'; + * + * console.log(url.domainToUnicode('xn--espaol-zwa.com')); + * // Prints español.com + * console.log(url.domainToUnicode('xn--fiq228c.com')); + * // Prints 中文.com + * console.log(url.domainToUnicode('xn--iñvalid.com')); + * // Prints an empty string + * ``` + * @since v7.4.0, v6.13.0 + */ + function domainToUnicode(domain: string): string; + /** + * This function ensures the correct decodings of percent-encoded characters as + * well as ensuring a cross-platform valid absolute path string. + * + * ```js + * import { fileURLToPath } from 'node:url'; + * + * const __filename = fileURLToPath(import.meta.url); + * + * new URL('file:///C:/path/').pathname; // Incorrect: /C:/path/ + * fileURLToPath('file:///C:/path/'); // Correct: C:\path\ (Windows) + * + * new URL('file://nas/foo.txt').pathname; // Incorrect: /foo.txt + * fileURLToPath('file://nas/foo.txt'); // Correct: \\nas\foo.txt (Windows) + * + * new URL('file:///你好.txt').pathname; // Incorrect: /%E4%BD%A0%E5%A5%BD.txt + * fileURLToPath('file:///你好.txt'); // Correct: /你好.txt (POSIX) + * + * new URL('file:///hello world').pathname; // Incorrect: /hello%20world + * fileURLToPath('file:///hello world'); // Correct: /hello world (POSIX) + * ``` + * @since v10.12.0 + * @param url The file URL string or URL object to convert to a path. + * @return The fully-resolved platform-specific Node.js file path. + */ + function fileURLToPath(url: string | URL, options?: FileUrlToPathOptions): string; + /** + * Like `url.fileURLToPath(...)` except that instead of returning a string + * representation of the path, a `Buffer` is returned. This conversion is + * helpful when the input URL contains percent-encoded segments that are + * not valid UTF-8 / Unicode sequences. + * @since v24.3.0 + * @param url The file URL string or URL object to convert to a path. + * @returns The fully-resolved platform-specific Node.js file path + * as a `Buffer`. + */ + function fileURLToPathBuffer(url: string | URL, options?: FileUrlToPathOptions): Buffer; + /** + * This function ensures that `path` is resolved absolutely, and that the URL + * control characters are correctly encoded when converting into a File URL. + * + * ```js + * import { pathToFileURL } from 'node:url'; + * + * new URL('/foo#1', 'file:'); // Incorrect: file:///foo#1 + * pathToFileURL('/foo#1'); // Correct: file:///foo%231 (POSIX) + * + * new URL('/some/path%.c', 'file:'); // Incorrect: file:///some/path%.c + * pathToFileURL('/some/path%.c'); // Correct: file:///some/path%25.c (POSIX) + * ``` + * @since v10.12.0 + * @param path The path to convert to a File URL. + * @return The file URL object. + */ + function pathToFileURL(path: string, options?: PathToFileUrlOptions): URL; + /** + * This utility function converts a URL object into an ordinary options object as + * expected by the `http.request()` and `https.request()` APIs. + * + * ```js + * import { urlToHttpOptions } from 'node:url'; + * const myURL = new URL('https://a:b@測試?abc#foo'); + * + * console.log(urlToHttpOptions(myURL)); + * /* + * { + * protocol: 'https:', + * hostname: 'xn--g6w251d', + * hash: '#foo', + * search: '?abc', + * pathname: '/', + * path: '/?abc', + * href: 'https://a:b@xn--g6w251d/?abc#foo', + * auth: 'a:b' + * } + * + * ``` + * @since v15.7.0, v14.18.0 + * @param url The `WHATWG URL` object to convert to an options object. + * @return Options object + */ + function urlToHttpOptions(url: URL): ClientRequestArgs; + interface URLFormatOptions { + /** + * `true` if the serialized URL string should include the username and password, `false` otherwise. + * @default true + */ + auth?: boolean | undefined; + /** + * `true` if the serialized URL string should include the fragment, `false` otherwise. + * @default true + */ + fragment?: boolean | undefined; + /** + * `true` if the serialized URL string should include the search query, `false` otherwise. + * @default true + */ + search?: boolean | undefined; + /** + * `true` if Unicode characters appearing in the host component of the URL string should be encoded directly as opposed to + * being Punycode encoded. + * @default false + */ + unicode?: boolean | undefined; + } + /** + * Browser-compatible `URL` class, implemented by following the WHATWG URL + * Standard. [Examples of parsed URLs](https://url.spec.whatwg.org/#example-url-parsing) may be found in the Standard itself. + * The `URL` class is also available on the global object. + * + * In accordance with browser conventions, all properties of `URL` objects + * are implemented as getters and setters on the class prototype, rather than as + * data properties on the object itself. Thus, unlike `legacy urlObject`s, + * using the `delete` keyword on any properties of `URL` objects (e.g. `delete myURL.protocol`, `delete myURL.pathname`, etc) has no effect but will still + * return `true`. + * @since v7.0.0, v6.13.0 + */ + class URL { + /** + * Creates a `'blob:nodedata:...'` URL string that represents the given `Blob` object and can be used to retrieve the `Blob` later. + * + * ```js + * import { + * Blob, + * resolveObjectURL, + * } from 'node:buffer'; + * + * const blob = new Blob(['hello']); + * const id = URL.createObjectURL(blob); + * + * // later... + * + * const otherBlob = resolveObjectURL(id); + * console.log(otherBlob.size); + * ``` + * + * The data stored by the registered `Blob` will be retained in memory until `URL.revokeObjectURL()` is called to remove it. + * + * `Blob` objects are registered within the current thread. If using Worker + * Threads, `Blob` objects registered within one Worker will not be available + * to other workers or the main thread. + * @since v16.7.0 + */ + static createObjectURL(blob: NodeBlob): string; + /** + * Removes the stored `Blob` identified by the given ID. Attempting to revoke a + * ID that isn't registered will silently fail. + * @since v16.7.0 + * @param id A `'blob:nodedata:...` URL string returned by a prior call to `URL.createObjectURL()`. + */ + static revokeObjectURL(id: string): void; + /** + * Checks if an `input` relative to the `base` can be parsed to a `URL`. + * + * ```js + * const isValid = URL.canParse('/foo', 'https://example.org/'); // true + * + * const isNotValid = URL.canParse('/foo'); // false + * ``` + * @since v19.9.0 + * @param input The absolute or relative input URL to parse. If `input` is relative, then `base` is required. If `input` is absolute, the `base` is ignored. If `input` is not a string, it is + * `converted to a string` first. + * @param base The base URL to resolve against if the `input` is not absolute. If `base` is not a string, it is `converted to a string` first. + */ + static canParse(input: string, base?: string): boolean; + /** + * Parses a string as a URL. If `base` is provided, it will be used as the base URL for the purpose of resolving non-absolute `input` URLs. + * Returns `null` if `input` is not a valid. + * @param input The absolute or relative input URL to parse. If `input` is relative, then `base` is required. If `input` is absolute, the `base` is ignored. If `input` is not a string, it is + * `converted to a string` first. + * @param base The base URL to resolve against if the `input` is not absolute. If `base` is not a string, it is `converted to a string` first. + * @since v22.1.0 + */ + static parse(input: string, base?: string): URL | null; + constructor(input: string | { toString: () => string }, base?: string | URL); + /** + * Gets and sets the fragment portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org/foo#bar'); + * console.log(myURL.hash); + * // Prints #bar + * + * myURL.hash = 'baz'; + * console.log(myURL.href); + * // Prints https://example.org/foo#baz + * ``` + * + * Invalid URL characters included in the value assigned to the `hash` property + * are `percent-encoded`. The selection of which characters to + * percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + hash: string; + /** + * Gets and sets the host portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org:81/foo'); + * console.log(myURL.host); + * // Prints example.org:81 + * + * myURL.host = 'example.com:82'; + * console.log(myURL.href); + * // Prints https://example.com:82/foo + * ``` + * + * Invalid host values assigned to the `host` property are ignored. + */ + host: string; + /** + * Gets and sets the host name portion of the URL. The key difference between`url.host` and `url.hostname` is that `url.hostname` does _not_ include the + * port. + * + * ```js + * const myURL = new URL('https://example.org:81/foo'); + * console.log(myURL.hostname); + * // Prints example.org + * + * // Setting the hostname does not change the port + * myURL.hostname = 'example.com'; + * console.log(myURL.href); + * // Prints https://example.com:81/foo + * + * // Use myURL.host to change the hostname and port + * myURL.host = 'example.org:82'; + * console.log(myURL.href); + * // Prints https://example.org:82/foo + * ``` + * + * Invalid host name values assigned to the `hostname` property are ignored. + */ + hostname: string; + /** + * Gets and sets the serialized URL. + * + * ```js + * const myURL = new URL('https://example.org/foo'); + * console.log(myURL.href); + * // Prints https://example.org/foo + * + * myURL.href = 'https://example.com/bar'; + * console.log(myURL.href); + * // Prints https://example.com/bar + * ``` + * + * Getting the value of the `href` property is equivalent to calling {@link toString}. + * + * Setting the value of this property to a new value is equivalent to creating a + * new `URL` object using `new URL(value)`. Each of the `URL` object's properties will be modified. + * + * If the value assigned to the `href` property is not a valid URL, a `TypeError` will be thrown. + */ + href: string; + /** + * Gets the read-only serialization of the URL's origin. + * + * ```js + * const myURL = new URL('https://example.org/foo/bar?baz'); + * console.log(myURL.origin); + * // Prints https://example.org + * ``` + * + * ```js + * const idnURL = new URL('https://測試'); + * console.log(idnURL.origin); + * // Prints https://xn--g6w251d + * + * console.log(idnURL.hostname); + * // Prints xn--g6w251d + * ``` + */ + readonly origin: string; + /** + * Gets and sets the password portion of the URL. + * + * ```js + * const myURL = new URL('https://abc:xyz@example.com'); + * console.log(myURL.password); + * // Prints xyz + * + * myURL.password = '123'; + * console.log(myURL.href); + * // Prints https://abc:123@example.com/ + * ``` + * + * Invalid URL characters included in the value assigned to the `password` property + * are `percent-encoded`. The selection of which characters to + * percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + password: string; + /** + * Gets and sets the path portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org/abc/xyz?123'); + * console.log(myURL.pathname); + * // Prints /abc/xyz + * + * myURL.pathname = '/abcdef'; + * console.log(myURL.href); + * // Prints https://example.org/abcdef?123 + * ``` + * + * Invalid URL characters included in the value assigned to the `pathname` property are `percent-encoded`. The selection of which characters + * to percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + pathname: string; + /** + * Gets and sets the port portion of the URL. + * + * The port value may be a number or a string containing a number in the range `0` to `65535` (inclusive). Setting the value to the default port of the `URL` objects given `protocol` will + * result in the `port` value becoming + * the empty string (`''`). + * + * The port value can be an empty string in which case the port depends on + * the protocol/scheme: + * + * + * + * Upon assigning a value to the port, the value will first be converted to a + * string using `.toString()`. + * + * If that string is invalid but it begins with a number, the leading number is + * assigned to `port`. + * If the number lies outside the range denoted above, it is ignored. + * + * ```js + * const myURL = new URL('https://example.org:8888'); + * console.log(myURL.port); + * // Prints 8888 + * + * // Default ports are automatically transformed to the empty string + * // (HTTPS protocol's default port is 443) + * myURL.port = '443'; + * console.log(myURL.port); + * // Prints the empty string + * console.log(myURL.href); + * // Prints https://example.org/ + * + * myURL.port = 1234; + * console.log(myURL.port); + * // Prints 1234 + * console.log(myURL.href); + * // Prints https://example.org:1234/ + * + * // Completely invalid port strings are ignored + * myURL.port = 'abcd'; + * console.log(myURL.port); + * // Prints 1234 + * + * // Leading numbers are treated as a port number + * myURL.port = '5678abcd'; + * console.log(myURL.port); + * // Prints 5678 + * + * // Non-integers are truncated + * myURL.port = 1234.5678; + * console.log(myURL.port); + * // Prints 1234 + * + * // Out-of-range numbers which are not represented in scientific notation + * // will be ignored. + * myURL.port = 1e10; // 10000000000, will be range-checked as described below + * console.log(myURL.port); + * // Prints 1234 + * ``` + * + * Numbers which contain a decimal point, + * such as floating-point numbers or numbers in scientific notation, + * are not an exception to this rule. + * Leading numbers up to the decimal point will be set as the URL's port, + * assuming they are valid: + * + * ```js + * myURL.port = 4.567e21; + * console.log(myURL.port); + * // Prints 4 (because it is the leading number in the string '4.567e21') + * ``` + */ + port: string; + /** + * Gets and sets the protocol portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org'); + * console.log(myURL.protocol); + * // Prints https: + * + * myURL.protocol = 'ftp'; + * console.log(myURL.href); + * // Prints ftp://example.org/ + * ``` + * + * Invalid URL protocol values assigned to the `protocol` property are ignored. + */ + protocol: string; + /** + * Gets and sets the serialized query portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org/abc?123'); + * console.log(myURL.search); + * // Prints ?123 + * + * myURL.search = 'abc=xyz'; + * console.log(myURL.href); + * // Prints https://example.org/abc?abc=xyz + * ``` + * + * Any invalid URL characters appearing in the value assigned the `search` property will be `percent-encoded`. The selection of which + * characters to percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + search: string; + /** + * Gets the `URLSearchParams` object representing the query parameters of the + * URL. This property is read-only but the `URLSearchParams` object it provides + * can be used to mutate the URL instance; to replace the entirety of query + * parameters of the URL, use the {@link search} setter. See `URLSearchParams` documentation for details. + * + * Use care when using `.searchParams` to modify the `URL` because, + * per the WHATWG specification, the `URLSearchParams` object uses + * different rules to determine which characters to percent-encode. For + * instance, the `URL` object will not percent encode the ASCII tilde (`~`) + * character, while `URLSearchParams` will always encode it: + * + * ```js + * const myURL = new URL('https://example.org/abc?foo=~bar'); + * + * console.log(myURL.search); // prints ?foo=~bar + * + * // Modify the URL via searchParams... + * myURL.searchParams.sort(); + * + * console.log(myURL.search); // prints ?foo=%7Ebar + * ``` + */ + readonly searchParams: URLSearchParams; + /** + * Gets and sets the username portion of the URL. + * + * ```js + * const myURL = new URL('https://abc:xyz@example.com'); + * console.log(myURL.username); + * // Prints abc + * + * myURL.username = '123'; + * console.log(myURL.href); + * // Prints https://123:xyz@example.com/ + * ``` + * + * Any invalid URL characters appearing in the value assigned the `username` property will be `percent-encoded`. The selection of which + * characters to percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + username: string; + /** + * The `toString()` method on the `URL` object returns the serialized URL. The + * value returned is equivalent to that of {@link href} and {@link toJSON}. + */ + toString(): string; + /** + * The `toJSON()` method on the `URL` object returns the serialized URL. The + * value returned is equivalent to that of {@link href} and {@link toString}. + * + * This method is automatically called when an `URL` object is serialized + * with [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). + * + * ```js + * const myURLs = [ + * new URL('https://www.example.com'), + * new URL('https://test.example.org'), + * ]; + * console.log(JSON.stringify(myURLs)); + * // Prints ["https://www.example.com/","https://test.example.org/"] + * ``` + */ + toJSON(): string; + } + interface URLPatternComponentResult { + input: string; + groups: Record; + } + interface URLPatternInit { + protocol?: string; + username?: string; + password?: string; + hostname?: string; + port?: string; + pathname?: string; + search?: string; + hash?: string; + baseURL?: string; + } + interface URLPatternOptions { + ignoreCase?: boolean; + } + interface URLPatternResult { + inputs: (string | URLPatternInit)[]; + protocol: URLPatternComponentResult; + username: URLPatternComponentResult; + password: URLPatternComponentResult; + hostname: URLPatternComponentResult; + port: URLPatternComponentResult; + pathname: URLPatternComponentResult; + search: URLPatternComponentResult; + hash: URLPatternComponentResult; + } + /** + * @since v23.8.0 + * @experimental + */ + class URLPattern { + constructor(input: string | URLPatternInit, baseURL: string, options?: URLPatternOptions); + constructor(input?: string | URLPatternInit, options?: URLPatternOptions); + exec(input?: string | URLPatternInit, baseURL?: string): URLPatternResult | null; + readonly hasRegExpGroups: boolean; + readonly hash: string; + readonly hostname: string; + readonly password: string; + readonly pathname: string; + readonly port: string; + readonly protocol: string; + readonly search: string; + test(input?: string | URLPatternInit, baseURL?: string): boolean; + readonly username: string; + } + interface URLSearchParamsIterator extends NodeJS.Iterator { + [Symbol.iterator](): URLSearchParamsIterator; + } + /** + * The `URLSearchParams` API provides read and write access to the query of a `URL`. The `URLSearchParams` class can also be used standalone with one of the + * four following constructors. + * The `URLSearchParams` class is also available on the global object. + * + * The WHATWG `URLSearchParams` interface and the `querystring` module have + * similar purpose, but the purpose of the `querystring` module is more + * general, as it allows the customization of delimiter characters (`&` and `=`). + * On the other hand, this API is designed purely for URL query strings. + * + * ```js + * const myURL = new URL('https://example.org/?abc=123'); + * console.log(myURL.searchParams.get('abc')); + * // Prints 123 + * + * myURL.searchParams.append('abc', 'xyz'); + * console.log(myURL.href); + * // Prints https://example.org/?abc=123&abc=xyz + * + * myURL.searchParams.delete('abc'); + * myURL.searchParams.set('a', 'b'); + * console.log(myURL.href); + * // Prints https://example.org/?a=b + * + * const newSearchParams = new URLSearchParams(myURL.searchParams); + * // The above is equivalent to + * // const newSearchParams = new URLSearchParams(myURL.search); + * + * newSearchParams.append('a', 'c'); + * console.log(myURL.href); + * // Prints https://example.org/?a=b + * console.log(newSearchParams.toString()); + * // Prints a=b&a=c + * + * // newSearchParams.toString() is implicitly called + * myURL.search = newSearchParams; + * console.log(myURL.href); + * // Prints https://example.org/?a=b&a=c + * newSearchParams.delete('a'); + * console.log(myURL.href); + * // Prints https://example.org/?a=b&a=c + * ``` + * @since v7.5.0, v6.13.0 + */ + class URLSearchParams implements Iterable<[string, string]> { + constructor( + init?: + | URLSearchParams + | string + | Record + | Iterable<[string, string]> + | ReadonlyArray<[string, string]>, + ); + /** + * Append a new name-value pair to the query string. + */ + append(name: string, value: string): void; + /** + * If `value` is provided, removes all name-value pairs + * where name is `name` and value is `value`. + * + * If `value` is not provided, removes all name-value pairs whose name is `name`. + */ + delete(name: string, value?: string): void; + /** + * Returns an ES6 `Iterator` over each of the name-value pairs in the query. + * Each item of the iterator is a JavaScript `Array`. The first item of the `Array` is the `name`, the second item of the `Array` is the `value`. + * + * Alias for `urlSearchParams[Symbol.iterator]()`. + */ + entries(): URLSearchParamsIterator<[string, string]>; + /** + * Iterates over each name-value pair in the query and invokes the given function. + * + * ```js + * const myURL = new URL('https://example.org/?a=b&c=d'); + * myURL.searchParams.forEach((value, name, searchParams) => { + * console.log(name, value, myURL.searchParams === searchParams); + * }); + * // Prints: + * // a b true + * // c d true + * ``` + * @param fn Invoked for each name-value pair in the query + * @param thisArg To be used as `this` value for when `fn` is called + */ + forEach( + fn: (this: TThis, value: string, name: string, searchParams: URLSearchParams) => void, + thisArg?: TThis, + ): void; + /** + * Returns the value of the first name-value pair whose name is `name`. If there + * are no such pairs, `null` is returned. + * @return or `null` if there is no name-value pair with the given `name`. + */ + get(name: string): string | null; + /** + * Returns the values of all name-value pairs whose name is `name`. If there are + * no such pairs, an empty array is returned. + */ + getAll(name: string): string[]; + /** + * Checks if the `URLSearchParams` object contains key-value pair(s) based on `name` and an optional `value` argument. + * + * If `value` is provided, returns `true` when name-value pair with + * same `name` and `value` exists. + * + * If `value` is not provided, returns `true` if there is at least one name-value + * pair whose name is `name`. + */ + has(name: string, value?: string): boolean; + /** + * Returns an ES6 `Iterator` over the names of each name-value pair. + * + * ```js + * const params = new URLSearchParams('foo=bar&foo=baz'); + * for (const name of params.keys()) { + * console.log(name); + * } + * // Prints: + * // foo + * // foo + * ``` + */ + keys(): URLSearchParamsIterator; + /** + * Sets the value in the `URLSearchParams` object associated with `name` to `value`. If there are any pre-existing name-value pairs whose names are `name`, + * set the first such pair's value to `value` and remove all others. If not, + * append the name-value pair to the query string. + * + * ```js + * const params = new URLSearchParams(); + * params.append('foo', 'bar'); + * params.append('foo', 'baz'); + * params.append('abc', 'def'); + * console.log(params.toString()); + * // Prints foo=bar&foo=baz&abc=def + * + * params.set('foo', 'def'); + * params.set('xyz', 'opq'); + * console.log(params.toString()); + * // Prints foo=def&abc=def&xyz=opq + * ``` + */ + set(name: string, value: string): void; + /** + * The total number of parameter entries. + * @since v19.8.0 + */ + readonly size: number; + /** + * Sort all existing name-value pairs in-place by their names. Sorting is done + * with a [stable sorting algorithm](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability), so relative order between name-value pairs + * with the same name is preserved. + * + * This method can be used, in particular, to increase cache hits. + * + * ```js + * const params = new URLSearchParams('query[]=abc&type=search&query[]=123'); + * params.sort(); + * console.log(params.toString()); + * // Prints query%5B%5D=abc&query%5B%5D=123&type=search + * ``` + * @since v7.7.0, v6.13.0 + */ + sort(): void; + /** + * Returns the search parameters serialized as a string, with characters + * percent-encoded where necessary. + */ + toString(): string; + /** + * Returns an ES6 `Iterator` over the values of each name-value pair. + */ + values(): URLSearchParamsIterator; + [Symbol.iterator](): URLSearchParamsIterator<[string, string]>; + } + import { + URL as _URL, + URLPattern as _URLPattern, + URLPatternInit as _URLPatternInit, + URLPatternResult as _URLPatternResult, + URLSearchParams as _URLSearchParams, + } from "url"; + global { + interface URL extends _URL {} + var URL: typeof globalThis extends { + onmessage: any; + URL: infer T; + } ? T + : typeof _URL; + interface URLSearchParams extends _URLSearchParams {} + var URLSearchParams: typeof globalThis extends { + onmessage: any; + URLSearchParams: infer T; + } ? T + : typeof _URLSearchParams; + interface URLPatternInit extends _URLPatternInit {} + interface URLPatternResult extends _URLPatternResult {} + interface URLPattern extends _URLPattern {} + var URLPattern: typeof _URLPattern; + } +} +declare module "node:url" { + export * from "url"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/util.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/util.d.ts.html new file mode 100644 index 0000000..142e78b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/util.d.ts.html @@ -0,0 +1,2309 @@ +/** + * The `node:util` module supports the needs of Node.js internal APIs. Many of the + * utilities are useful for application and module developers as well. To access + * it: + * + * ```js + * import util from 'node:util'; + * ``` + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/util.js) + */ +declare module "util" { + import * as types from "node:util/types"; + export interface InspectOptions { + /** + * If `true`, object's non-enumerable symbols and properties are included in the formatted result. + * `WeakMap` and `WeakSet` entries are also included as well as user defined prototype properties (excluding method properties). + * @default false + */ + showHidden?: boolean | undefined; + /** + * Specifies the number of times to recurse while formatting object. + * This is useful for inspecting large objects. + * To recurse up to the maximum call stack size pass `Infinity` or `null`. + * @default 2 + */ + depth?: number | null | undefined; + /** + * If `true`, the output is styled with ANSI color codes. Colors are customizable. + */ + colors?: boolean | undefined; + /** + * If `false`, `[util.inspect.custom](depth, opts, inspect)` functions are not invoked. + * @default true + */ + customInspect?: boolean | undefined; + /** + * If `true`, `Proxy` inspection includes the target and handler objects. + * @default false + */ + showProxy?: boolean | undefined; + /** + * Specifies the maximum number of `Array`, `TypedArray`, `WeakMap`, and `WeakSet` elements + * to include when formatting. Set to `null` or `Infinity` to show all elements. + * Set to `0` or negative to show no elements. + * @default 100 + */ + maxArrayLength?: number | null | undefined; + /** + * Specifies the maximum number of characters to + * include when formatting. Set to `null` or `Infinity` to show all elements. + * Set to `0` or negative to show no characters. + * @default 10000 + */ + maxStringLength?: number | null | undefined; + /** + * The length at which input values are split across multiple lines. + * Set to `Infinity` to format the input as a single line + * (in combination with `compact` set to `true` or any number >= `1`). + * @default 80 + */ + breakLength?: number | undefined; + /** + * Setting this to `false` causes each object key + * to be displayed on a new line. It will also add new lines to text that is + * longer than `breakLength`. If set to a number, the most `n` inner elements + * are united on a single line as long as all properties fit into + * `breakLength`. Short array elements are also grouped together. Note that no + * text will be reduced below 16 characters, no matter the `breakLength` size. + * For more information, see the example below. + * @default true + */ + compact?: boolean | number | undefined; + /** + * If set to `true` or a function, all properties of an object, and `Set` and `Map` + * entries are sorted in the resulting string. + * If set to `true` the default sort is used. + * If set to a function, it is used as a compare function. + */ + sorted?: boolean | ((a: string, b: string) => number) | undefined; + /** + * If set to `true`, getters are going to be + * inspected as well. If set to `'get'` only getters without setter are going + * to be inspected. If set to `'set'` only getters having a corresponding + * setter are going to be inspected. This might cause side effects depending on + * the getter function. + * @default false + */ + getters?: "get" | "set" | boolean | undefined; + /** + * If set to `true`, an underscore is used to separate every three digits in all bigints and numbers. + * @default false + */ + numericSeparator?: boolean | undefined; + } + export type Style = + | "special" + | "number" + | "bigint" + | "boolean" + | "undefined" + | "null" + | "string" + | "symbol" + | "date" + | "regexp" + | "module"; + export type CustomInspectFunction = (depth: number, options: InspectOptionsStylized) => any; // TODO: , inspect: inspect + export interface InspectOptionsStylized extends InspectOptions { + stylize(text: string, styleType: Style): string; + } + export interface CallSiteObject { + /** + * Returns the name of the function associated with this call site. + */ + functionName: string; + /** + * Returns the name of the resource that contains the script for the + * function for this call site. + */ + scriptName: string; + /** + * Returns the unique id of the script, as in Chrome DevTools protocol + * [`Runtime.ScriptId`](https://chromedevtools.github.io/devtools-protocol/1-3/Runtime/#type-ScriptId). + * @since v22.14.0 + */ + scriptId: string; + /** + * Returns the number, 1-based, of the line for the associate function call. + */ + lineNumber: number; + /** + * Returns the 1-based column offset on the line for the associated function call. + */ + columnNumber: number; + } + export type DiffEntry = [operation: -1 | 0 | 1, value: string]; + /** + * `util.diff()` compares two string or array values and returns an array of difference entries. + * It uses the Myers diff algorithm to compute minimal differences, which is the same algorithm + * used internally by assertion error messages. + * + * If the values are equal, an empty array is returned. + * + * ```js + * const { diff } = require('node:util'); + * + * // Comparing strings + * const actualString = '12345678'; + * const expectedString = '12!!5!7!'; + * console.log(diff(actualString, expectedString)); + * // [ + * // [0, '1'], + * // [0, '2'], + * // [1, '3'], + * // [1, '4'], + * // [-1, '!'], + * // [-1, '!'], + * // [0, '5'], + * // [1, '6'], + * // [-1, '!'], + * // [0, '7'], + * // [1, '8'], + * // [-1, '!'], + * // ] + * // Comparing arrays + * const actualArray = ['1', '2', '3']; + * const expectedArray = ['1', '3', '4']; + * console.log(diff(actualArray, expectedArray)); + * // [ + * // [0, '1'], + * // [1, '2'], + * // [0, '3'], + * // [-1, '4'], + * // ] + * // Equal values return empty array + * console.log(diff('same', 'same')); + * // [] + * ``` + * @since v22.15.0 + * @experimental + * @param actual The first value to compare + * @param expected The second value to compare + * @returns An array of difference entries. Each entry is an array with two elements: + * * Index 0: `number` Operation code: `-1` for delete, `0` for no-op/unchanged, `1` for insert + * * Index 1: `string` The value associated with the operation + */ + export function diff(actual: string | readonly string[], expected: string | readonly string[]): DiffEntry[]; + /** + * The `util.format()` method returns a formatted string using the first argument + * as a `printf`-like format string which can contain zero or more format + * specifiers. Each specifier is replaced with the converted value from the + * corresponding argument. Supported specifiers are: + * + * If a specifier does not have a corresponding argument, it is not replaced: + * + * ```js + * util.format('%s:%s', 'foo'); + * // Returns: 'foo:%s' + * ``` + * + * Values that are not part of the format string are formatted using `util.inspect()` if their type is not `string`. + * + * If there are more arguments passed to the `util.format()` method than the + * number of specifiers, the extra arguments are concatenated to the returned + * string, separated by spaces: + * + * ```js + * util.format('%s:%s', 'foo', 'bar', 'baz'); + * // Returns: 'foo:bar baz' + * ``` + * + * If the first argument does not contain a valid format specifier, `util.format()` returns a string that is the concatenation of all arguments separated by spaces: + * + * ```js + * util.format(1, 2, 3); + * // Returns: '1 2 3' + * ``` + * + * If only one argument is passed to `util.format()`, it is returned as it is + * without any formatting: + * + * ```js + * util.format('%% %s'); + * // Returns: '%% %s' + * ``` + * + * `util.format()` is a synchronous method that is intended as a debugging tool. + * Some input values can have a significant performance overhead that can block the + * event loop. Use this function with care and never in a hot code path. + * @since v0.5.3 + * @param format A `printf`-like format string. + */ + export function format(format?: any, ...param: any[]): string; + /** + * This function is identical to {@link format}, except in that it takes + * an `inspectOptions` argument which specifies options that are passed along to {@link inspect}. + * + * ```js + * util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 }); + * // Returns 'See object { foo: 42 }', where `42` is colored as a number + * // when printed to a terminal. + * ``` + * @since v10.0.0 + */ + export function formatWithOptions(inspectOptions: InspectOptions, format?: any, ...param: any[]): string; + interface GetCallSitesOptions { + /** + * Reconstruct the original location in the stacktrace from the source-map. + * Enabled by default with the flag `--enable-source-maps`. + */ + sourceMap?: boolean | undefined; + } + /** + * Returns an array of call site objects containing the stack of + * the caller function. + * + * ```js + * import { getCallSites } from 'node:util'; + * + * function exampleFunction() { + * const callSites = getCallSites(); + * + * console.log('Call Sites:'); + * callSites.forEach((callSite, index) => { + * console.log(`CallSite ${index + 1}:`); + * console.log(`Function Name: ${callSite.functionName}`); + * console.log(`Script Name: ${callSite.scriptName}`); + * console.log(`Line Number: ${callSite.lineNumber}`); + * console.log(`Column Number: ${callSite.column}`); + * }); + * // CallSite 1: + * // Function Name: exampleFunction + * // Script Name: /home/example.js + * // Line Number: 5 + * // Column Number: 26 + * + * // CallSite 2: + * // Function Name: anotherFunction + * // Script Name: /home/example.js + * // Line Number: 22 + * // Column Number: 3 + * + * // ... + * } + * + * // A function to simulate another stack layer + * function anotherFunction() { + * exampleFunction(); + * } + * + * anotherFunction(); + * ``` + * + * It is possible to reconstruct the original locations by setting the option `sourceMap` to `true`. + * If the source map is not available, the original location will be the same as the current location. + * When the `--enable-source-maps` flag is enabled, for example when using `--experimental-transform-types`, + * `sourceMap` will be true by default. + * + * ```ts + * import { getCallSites } from 'node:util'; + * + * interface Foo { + * foo: string; + * } + * + * const callSites = getCallSites({ sourceMap: true }); + * + * // With sourceMap: + * // Function Name: '' + * // Script Name: example.js + * // Line Number: 7 + * // Column Number: 26 + * + * // Without sourceMap: + * // Function Name: '' + * // Script Name: example.js + * // Line Number: 2 + * // Column Number: 26 + * ``` + * @param frameCount Number of frames to capture as call site objects. + * **Default:** `10`. Allowable range is between 1 and 200. + * @return An array of call site objects + * @since v22.9.0 + */ + export function getCallSites(frameCount?: number, options?: GetCallSitesOptions): CallSiteObject[]; + export function getCallSites(options: GetCallSitesOptions): CallSiteObject[]; + /** + * Returns the string name for a numeric error code that comes from a Node.js API. + * The mapping between error codes and error names is platform-dependent. + * See `Common System Errors` for the names of common errors. + * + * ```js + * fs.access('file/that/does/not/exist', (err) => { + * const name = util.getSystemErrorName(err.errno); + * console.error(name); // ENOENT + * }); + * ``` + * @since v9.7.0 + */ + export function getSystemErrorName(err: number): string; + /** + * Returns a Map of all system error codes available from the Node.js API. + * The mapping between error codes and error names is platform-dependent. + * See `Common System Errors` for the names of common errors. + * + * ```js + * fs.access('file/that/does/not/exist', (err) => { + * const errorMap = util.getSystemErrorMap(); + * const name = errorMap.get(err.errno); + * console.error(name); // ENOENT + * }); + * ``` + * @since v16.0.0, v14.17.0 + */ + export function getSystemErrorMap(): Map; + /** + * Returns the string message for a numeric error code that comes from a Node.js + * API. + * The mapping between error codes and string messages is platform-dependent. + * + * ```js + * fs.access('file/that/does/not/exist', (err) => { + * const message = util.getSystemErrorMessage(err.errno); + * console.error(message); // no such file or directory + * }); + * ``` + * @since v22.12.0 + */ + export function getSystemErrorMessage(err: number): string; + /** + * Returns the `string` after replacing any surrogate code points + * (or equivalently, any unpaired surrogate code units) with the + * Unicode "replacement character" U+FFFD. + * @since v16.8.0, v14.18.0 + */ + export function toUSVString(string: string): string; + /** + * Creates and returns an `AbortController` instance whose `AbortSignal` is marked + * as transferable and can be used with `structuredClone()` or `postMessage()`. + * @since v18.11.0 + * @returns A transferable AbortController + */ + export function transferableAbortController(): AbortController; + /** + * Marks the given `AbortSignal` as transferable so that it can be used with`structuredClone()` and `postMessage()`. + * + * ```js + * const signal = transferableAbortSignal(AbortSignal.timeout(100)); + * const channel = new MessageChannel(); + * channel.port2.postMessage(signal, [signal]); + * ``` + * @since v18.11.0 + * @param signal The AbortSignal + * @returns The same AbortSignal + */ + export function transferableAbortSignal(signal: AbortSignal): AbortSignal; + /** + * Listens to abort event on the provided `signal` and returns a promise that resolves when the `signal` is aborted. + * If `resource` is provided, it weakly references the operation's associated object, + * so if `resource` is garbage collected before the `signal` aborts, + * then returned promise shall remain pending. + * This prevents memory leaks in long-running or non-cancelable operations. + * + * ```js + * import { aborted } from 'node:util'; + * + * // Obtain an object with an abortable signal, like a custom resource or operation. + * const dependent = obtainSomethingAbortable(); + * + * // Pass `dependent` as the resource, indicating the promise should only resolve + * // if `dependent` is still in memory when the signal is aborted. + * aborted(dependent.signal, dependent).then(() => { + * // This code runs when `dependent` is aborted. + * console.log('Dependent resource was aborted.'); + * }); + * + * // Simulate an event that triggers the abort. + * dependent.on('event', () => { + * dependent.abort(); // This will cause the `aborted` promise to resolve. + * }); + * ``` + * @since v19.7.0 + * @param resource Any non-null object tied to the abortable operation and held weakly. + * If `resource` is garbage collected before the `signal` aborts, the promise remains pending, + * allowing Node.js to stop tracking it. + * This helps prevent memory leaks in long-running or non-cancelable operations. + */ + export function aborted(signal: AbortSignal, resource: any): Promise; + /** + * The `util.inspect()` method returns a string representation of `object` that is + * intended for debugging. The output of `util.inspect` may change at any time + * and should not be depended upon programmatically. Additional `options` may be + * passed that alter the result. + * `util.inspect()` will use the constructor's name and/or `Symbol.toStringTag` + * property to make an identifiable tag for an inspected value. + * + * ```js + * class Foo { + * get [Symbol.toStringTag]() { + * return 'bar'; + * } + * } + * + * class Bar {} + * + * const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } }); + * + * util.inspect(new Foo()); // 'Foo [bar] {}' + * util.inspect(new Bar()); // 'Bar {}' + * util.inspect(baz); // '[foo] {}' + * ``` + * + * Circular references point to their anchor by using a reference index: + * + * ```js + * import { inspect } from 'node:util'; + * + * const obj = {}; + * obj.a = [obj]; + * obj.b = {}; + * obj.b.inner = obj.b; + * obj.b.obj = obj; + * + * console.log(inspect(obj)); + * // { + * // a: [ [Circular *1] ], + * // b: { inner: [Circular *2], obj: [Circular *1] } + * // } + * ``` + * + * The following example inspects all properties of the `util` object: + * + * ```js + * import util from 'node:util'; + * + * console.log(util.inspect(util, { showHidden: true, depth: null })); + * ``` + * + * The following example highlights the effect of the `compact` option: + * + * ```js + * import { inspect } from 'node:util'; + * + * const o = { + * a: [1, 2, [[ + * 'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit, sed do ' + + * 'eiusmod \ntempor incididunt ut labore et dolore magna aliqua.', + * 'test', + * 'foo']], 4], + * b: new Map([['za', 1], ['zb', 'test']]), + * }; + * console.log(inspect(o, { compact: true, depth: 5, breakLength: 80 })); + * + * // { a: + * // [ 1, + * // 2, + * // [ [ 'Lorem ipsum dolor sit amet,\nconsectetur [...]', // A long line + * // 'test', + * // 'foo' ] ], + * // 4 ], + * // b: Map(2) { 'za' => 1, 'zb' => 'test' } } + * + * // Setting `compact` to false or an integer creates more reader friendly output. + * console.log(inspect(o, { compact: false, depth: 5, breakLength: 80 })); + * + * // { + * // a: [ + * // 1, + * // 2, + * // [ + * // [ + * // 'Lorem ipsum dolor sit amet,\n' + + * // 'consectetur adipiscing elit, sed do eiusmod \n' + + * // 'tempor incididunt ut labore et dolore magna aliqua.', + * // 'test', + * // 'foo' + * // ] + * // ], + * // 4 + * // ], + * // b: Map(2) { + * // 'za' => 1, + * // 'zb' => 'test' + * // } + * // } + * + * // Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a + * // single line. + * ``` + * + * The `showHidden` option allows `WeakMap` and `WeakSet` entries to be + * inspected. If there are more entries than `maxArrayLength`, there is no + * guarantee which entries are displayed. That means retrieving the same + * `WeakSet` entries twice may result in different output. Furthermore, entries + * with no remaining strong references may be garbage collected at any time. + * + * ```js + * import { inspect } from 'node:util'; + * + * const obj = { a: 1 }; + * const obj2 = { b: 2 }; + * const weakSet = new WeakSet([obj, obj2]); + * + * console.log(inspect(weakSet, { showHidden: true })); + * // WeakSet { { a: 1 }, { b: 2 } } + * ``` + * + * The `sorted` option ensures that an object's property insertion order does not + * impact the result of `util.inspect()`. + * + * ```js + * import { inspect } from 'node:util'; + * import assert from 'node:assert'; + * + * const o1 = { + * b: [2, 3, 1], + * a: '`a` comes before `b`', + * c: new Set([2, 3, 1]), + * }; + * console.log(inspect(o1, { sorted: true })); + * // { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set(3) { 1, 2, 3 } } + * console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) })); + * // { c: Set(3) { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' } + * + * const o2 = { + * c: new Set([2, 1, 3]), + * a: '`a` comes before `b`', + * b: [2, 3, 1], + * }; + * assert.strict.equal( + * inspect(o1, { sorted: true }), + * inspect(o2, { sorted: true }), + * ); + * ``` + * + * The `numericSeparator` option adds an underscore every three digits to all + * numbers. + * + * ```js + * import { inspect } from 'node:util'; + * + * const thousand = 1000; + * const million = 1000000; + * const bigNumber = 123456789n; + * const bigDecimal = 1234.12345; + * + * console.log(inspect(thousand, { numericSeparator: true })); + * // 1_000 + * console.log(inspect(million, { numericSeparator: true })); + * // 1_000_000 + * console.log(inspect(bigNumber, { numericSeparator: true })); + * // 123_456_789n + * console.log(inspect(bigDecimal, { numericSeparator: true })); + * // 1_234.123_45 + * ``` + * + * `util.inspect()` is a synchronous method intended for debugging. Its maximum + * output length is approximately 128 MiB. Inputs that result in longer output will + * be truncated. + * @since v0.3.0 + * @param object Any JavaScript primitive or `Object`. + * @return The representation of `object`. + */ + export function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; + export function inspect(object: any, options?: InspectOptions): string; + export namespace inspect { + let colors: NodeJS.Dict<[number, number]>; + let styles: { + [K in Style]: string; + }; + let defaultOptions: InspectOptions; + /** + * Allows changing inspect settings from the repl. + */ + let replDefaults: InspectOptions; + /** + * That can be used to declare custom inspect functions. + */ + const custom: unique symbol; + } + /** + * Alias for [`Array.isArray()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray). + * + * Returns `true` if the given `object` is an `Array`. Otherwise, returns `false`. + * + * ```js + * import util from 'node:util'; + * + * util.isArray([]); + * // Returns: true + * util.isArray(new Array()); + * // Returns: true + * util.isArray({}); + * // Returns: false + * ``` + * @since v0.6.0 + * @deprecated Since v4.0.0 - Use `isArray` instead. + */ + export function isArray(object: unknown): object is unknown[]; + /** + * Usage of `util.inherits()` is discouraged. Please use the ES6 `class` and + * `extends` keywords to get language level inheritance support. Also note + * that the two styles are [semantically incompatible](https://github.com/nodejs/node/issues/4179). + * + * Inherit the prototype methods from one + * [constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor) into another. The + * prototype of `constructor` will be set to a new object created from + * `superConstructor`. + * + * This mainly adds some input validation on top of + * `Object.setPrototypeOf(constructor.prototype, superConstructor.prototype)`. + * As an additional convenience, `superConstructor` will be accessible + * through the `constructor.super_` property. + * + * ```js + * const util = require('node:util'); + * const EventEmitter = require('node:events'); + * + * function MyStream() { + * EventEmitter.call(this); + * } + * + * util.inherits(MyStream, EventEmitter); + * + * MyStream.prototype.write = function(data) { + * this.emit('data', data); + * }; + * + * const stream = new MyStream(); + * + * console.log(stream instanceof EventEmitter); // true + * console.log(MyStream.super_ === EventEmitter); // true + * + * stream.on('data', (data) => { + * console.log(`Received data: "${data}"`); + * }); + * stream.write('It works!'); // Received data: "It works!" + * ``` + * + * ES6 example using `class` and `extends`: + * + * ```js + * import EventEmitter from 'node:events'; + * + * class MyStream extends EventEmitter { + * write(data) { + * this.emit('data', data); + * } + * } + * + * const stream = new MyStream(); + * + * stream.on('data', (data) => { + * console.log(`Received data: "${data}"`); + * }); + * stream.write('With ES6'); + * ``` + * @since v0.3.0 + * @legacy Use ES2015 class syntax and `extends` keyword instead. + */ + export function inherits(constructor: unknown, superConstructor: unknown): void; + export type DebugLoggerFunction = (msg: string, ...param: unknown[]) => void; + export interface DebugLogger extends DebugLoggerFunction { + /** + * The `util.debuglog().enabled` getter is used to create a test that can be used + * in conditionals based on the existence of the `NODE_DEBUG` environment variable. + * If the `section` name appears within the value of that environment variable, + * then the returned value will be `true`. If not, then the returned value will be + * `false`. + * + * ```js + * import { debuglog } from 'node:util'; + * const enabled = debuglog('foo').enabled; + * if (enabled) { + * console.log('hello from foo [%d]', 123); + * } + * ``` + * + * If this program is run with `NODE_DEBUG=foo` in the environment, then it will + * output something like: + * + * ```console + * hello from foo [123] + * ``` + */ + enabled: boolean; + } + /** + * The `util.debuglog()` method is used to create a function that conditionally + * writes debug messages to `stderr` based on the existence of the `NODE_DEBUG` + * environment variable. If the `section` name appears within the value of that + * environment variable, then the returned function operates similar to + * `console.error()`. If not, then the returned function is a no-op. + * + * ```js + * import { debuglog } from 'node:util'; + * const log = debuglog('foo'); + * + * log('hello from foo [%d]', 123); + * ``` + * + * If this program is run with `NODE_DEBUG=foo` in the environment, then + * it will output something like: + * + * ```console + * FOO 3245: hello from foo [123] + * ``` + * + * where `3245` is the process id. If it is not run with that + * environment variable set, then it will not print anything. + * + * The `section` supports wildcard also: + * + * ```js + * import { debuglog } from 'node:util'; + * const log = debuglog('foo'); + * + * log('hi there, it\'s foo-bar [%d]', 2333); + * ``` + * + * if it is run with `NODE_DEBUG=foo*` in the environment, then it will output + * something like: + * + * ```console + * FOO-BAR 3257: hi there, it's foo-bar [2333] + * ``` + * + * Multiple comma-separated `section` names may be specified in the `NODE_DEBUG` + * environment variable: `NODE_DEBUG=fs,net,tls`. + * + * The optional `callback` argument can be used to replace the logging function + * with a different function that doesn't have any initialization or + * unnecessary wrapping. + * + * ```js + * import { debuglog } from 'node:util'; + * let log = debuglog('internals', (debug) => { + * // Replace with a logging function that optimizes out + * // testing if the section is enabled + * log = debug; + * }); + * ``` + * @since v0.11.3 + * @param section A string identifying the portion of the application for which the `debuglog` function is being created. + * @param callback A callback invoked the first time the logging function is called with a function argument that is a more optimized logging function. + * @return The logging function + */ + export function debuglog(section: string, callback?: (fn: DebugLoggerFunction) => void): DebugLogger; + export { debuglog as debug }; + /** + * The `util.deprecate()` method wraps `fn` (which may be a function or class) in + * such a way that it is marked as deprecated. + * + * ```js + * import { deprecate } from 'node:util'; + * + * export const obsoleteFunction = deprecate(() => { + * // Do something here. + * }, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.'); + * ``` + * + * When called, `util.deprecate()` will return a function that will emit a + * `DeprecationWarning` using the `'warning'` event. The warning will + * be emitted and printed to `stderr` the first time the returned function is + * called. After the warning is emitted, the wrapped function is called without + * emitting a warning. + * + * If the same optional `code` is supplied in multiple calls to `util.deprecate()`, + * the warning will be emitted only once for that `code`. + * + * ```js + * import { deprecate } from 'node:util'; + * + * const fn1 = deprecate( + * () => 'a value', + * 'deprecation message', + * 'DEP0001', + * ); + * const fn2 = deprecate( + * () => 'a different value', + * 'other dep message', + * 'DEP0001', + * ); + * fn1(); // Emits a deprecation warning with code DEP0001 + * fn2(); // Does not emit a deprecation warning because it has the same code + * ``` + * + * If either the `--no-deprecation` or `--no-warnings` command-line flags are + * used, or if the `process.noDeprecation` property is set to `true` _prior_ to + * the first deprecation warning, the `util.deprecate()` method does nothing. + * + * If the `--trace-deprecation` or `--trace-warnings` command-line flags are set, + * or the `process.traceDeprecation` property is set to `true`, a warning and a + * stack trace are printed to `stderr` the first time the deprecated function is + * called. + * + * If the `--throw-deprecation` command-line flag is set, or the + * `process.throwDeprecation` property is set to `true`, then an exception will be + * thrown when the deprecated function is called. + * + * The `--throw-deprecation` command-line flag and `process.throwDeprecation` + * property take precedence over `--trace-deprecation` and + * `process.traceDeprecation`. + * @since v0.8.0 + * @param fn The function that is being deprecated. + * @param msg A warning message to display when the deprecated function is invoked. + * @param code A deprecation code. See the `list of deprecated APIs` for a list of codes. + * @return The deprecated function wrapped to emit a warning. + */ + export function deprecate(fn: T, msg: string, code?: string): T; + /** + * Returns `true` if there is deep strict equality between `val1` and `val2`. + * Otherwise, returns `false`. + * + * See `assert.deepStrictEqual()` for more information about deep strict + * equality. + * @since v9.0.0 + */ + export function isDeepStrictEqual(val1: unknown, val2: unknown): boolean; + /** + * Returns `str` with any ANSI escape codes removed. + * + * ```js + * console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m')); + * // Prints "value" + * ``` + * @since v16.11.0 + */ + export function stripVTControlCharacters(str: string): string; + /** + * Takes an `async` function (or a function that returns a `Promise`) and returns a + * function following the error-first callback style, i.e. taking + * an `(err, value) => ...` callback as the last argument. In the callback, the + * first argument will be the rejection reason (or `null` if the `Promise` + * resolved), and the second argument will be the resolved value. + * + * ```js + * import { callbackify } from 'node:util'; + * + * async function fn() { + * return 'hello world'; + * } + * const callbackFunction = callbackify(fn); + * + * callbackFunction((err, ret) => { + * if (err) throw err; + * console.log(ret); + * }); + * ``` + * + * Will print: + * + * ```text + * hello world + * ``` + * + * The callback is executed asynchronously, and will have a limited stack trace. + * If the callback throws, the process will emit an `'uncaughtException'` + * event, and if not handled will exit. + * + * Since `null` has a special meaning as the first argument to a callback, if a + * wrapped function rejects a `Promise` with a falsy value as a reason, the value + * is wrapped in an `Error` with the original value stored in a field named + * `reason`. + * + * ```js + * function fn() { + * return Promise.reject(null); + * } + * const callbackFunction = util.callbackify(fn); + * + * callbackFunction((err, ret) => { + * // When the Promise was rejected with `null` it is wrapped with an Error and + * // the original value is stored in `reason`. + * err && Object.hasOwn(err, 'reason') && err.reason === null; // true + * }); + * ``` + * @since v8.2.0 + * @param fn An `async` function + * @return a callback style function + */ + export function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: () => Promise, + ): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; + export function callbackify( + fn: (arg1: T1) => Promise, + ): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1) => Promise, + ): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2) => Promise, + ): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2) => Promise, + ): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3) => Promise, + ): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3) => Promise, + ): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise, + ): ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + callback: (err: NodeJS.ErrnoException | null, result: TResult) => void, + ) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise, + ): ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + callback: (err: NodeJS.ErrnoException | null, result: TResult) => void, + ) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise, + ): ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + callback: (err: NodeJS.ErrnoException) => void, + ) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise, + ): ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + callback: (err: NodeJS.ErrnoException | null, result: TResult) => void, + ) => void; + export interface CustomPromisifyLegacy extends Function { + __promisify__: TCustom; + } + export interface CustomPromisifySymbol extends Function { + [promisify.custom]: TCustom; + } + export type CustomPromisify = + | CustomPromisifySymbol + | CustomPromisifyLegacy; + /** + * Takes a function following the common error-first callback style, i.e. taking + * an `(err, value) => ...` callback as the last argument, and returns a version + * that returns promises. + * + * ```js + * import { promisify } from 'node:util'; + * import { stat } from 'node:fs'; + * + * const promisifiedStat = promisify(stat); + * promisifiedStat('.').then((stats) => { + * // Do something with `stats` + * }).catch((error) => { + * // Handle the error. + * }); + * ``` + * + * Or, equivalently using `async function`s: + * + * ```js + * import { promisify } from 'node:util'; + * import { stat } from 'node:fs'; + * + * const promisifiedStat = promisify(stat); + * + * async function callStat() { + * const stats = await promisifiedStat('.'); + * console.log(`This directory is owned by ${stats.uid}`); + * } + * + * callStat(); + * ``` + * + * If there is an `original[util.promisify.custom]` property present, `promisify` + * will return its value, see [Custom promisified functions](https://nodejs.org/docs/latest-v24.x/api/util.html#custom-promisified-functions). + * + * `promisify()` assumes that `original` is a function taking a callback as its + * final argument in all cases. If `original` is not a function, `promisify()` + * will throw an error. If `original` is a function but its last argument is not + * an error-first callback, it will still be passed an error-first + * callback as its last argument. + * + * Using `promisify()` on class methods or other methods that use `this` may not + * work as expected unless handled specially: + * + * ```js + * import { promisify } from 'node:util'; + * + * class Foo { + * constructor() { + * this.a = 42; + * } + * + * bar(callback) { + * callback(null, this.a); + * } + * } + * + * const foo = new Foo(); + * + * const naiveBar = promisify(foo.bar); + * // TypeError: Cannot read properties of undefined (reading 'a') + * // naiveBar().then(a => console.log(a)); + * + * naiveBar.call(foo).then((a) => console.log(a)); // '42' + * + * const bindBar = naiveBar.bind(foo); + * bindBar().then((a) => console.log(a)); // '42' + * ``` + * @since v8.0.0 + */ + export function promisify(fn: CustomPromisify): TCustom; + export function promisify( + fn: (callback: (err: any, result: TResult) => void) => void, + ): () => Promise; + export function promisify(fn: (callback: (err?: any) => void) => void): () => Promise; + export function promisify( + fn: (arg1: T1, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1) => Promise; + export function promisify(fn: (arg1: T1, callback: (err?: any) => void) => void): (arg1: T1) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1, arg2: T2) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, callback: (err?: any) => void) => void, + ): (arg1: T1, arg2: T2) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; + export function promisify(fn: Function): Function; + export namespace promisify { + /** + * That can be used to declare custom promisified variants of functions. + */ + const custom: unique symbol; + } + /** + * Stability: 1.1 - Active development + * Given an example `.env` file: + * + * ```js + * import { parseEnv } from 'node:util'; + * + * parseEnv('HELLO=world\nHELLO=oh my\n'); + * // Returns: { HELLO: 'oh my' } + * ``` + * @param content The raw contents of a `.env` file. + * @since v20.12.0 + */ + export function parseEnv(content: string): NodeJS.Dict; + // https://nodejs.org/docs/latest/api/util.html#foreground-colors + type ForegroundColors = + | "black" + | "blackBright" + | "blue" + | "blueBright" + | "cyan" + | "cyanBright" + | "gray" + | "green" + | "greenBright" + | "grey" + | "magenta" + | "magentaBright" + | "red" + | "redBright" + | "white" + | "whiteBright" + | "yellow" + | "yellowBright"; + // https://nodejs.org/docs/latest/api/util.html#background-colors + type BackgroundColors = + | "bgBlack" + | "bgBlackBright" + | "bgBlue" + | "bgBlueBright" + | "bgCyan" + | "bgCyanBright" + | "bgGray" + | "bgGreen" + | "bgGreenBright" + | "bgGrey" + | "bgMagenta" + | "bgMagentaBright" + | "bgRed" + | "bgRedBright" + | "bgWhite" + | "bgWhiteBright" + | "bgYellow" + | "bgYellowBright"; + // https://nodejs.org/docs/latest/api/util.html#modifiers + type Modifiers = + | "blink" + | "bold" + | "dim" + | "doubleunderline" + | "framed" + | "hidden" + | "inverse" + | "italic" + | "none" + | "overlined" + | "reset" + | "strikethrough" + | "underline"; + export interface StyleTextOptions { + /** + * When true, `stream` is checked to see if it can handle colors. + * @default true + */ + validateStream?: boolean | undefined; + /** + * A stream that will be validated if it can be colored. + * @default process.stdout + */ + stream?: NodeJS.WritableStream | undefined; + } + /** + * This function returns a formatted text considering the `format` passed + * for printing in a terminal. It is aware of the terminal's capabilities + * and acts according to the configuration set via `NO_COLOR`, + * `NODE_DISABLE_COLORS` and `FORCE_COLOR` environment variables. + * + * ```js + * import { styleText } from 'node:util'; + * import { stderr } from 'node:process'; + * + * const successMessage = styleText('green', 'Success!'); + * console.log(successMessage); + * + * const errorMessage = styleText( + * 'red', + * 'Error! Error!', + * // Validate if process.stderr has TTY + * { stream: stderr }, + * ); + * console.error(errorMessage); + * ``` + * + * `util.inspect.colors` also provides text formats such as `italic`, and + * `underline` and you can combine both: + * + * ```js + * console.log( + * util.styleText(['underline', 'italic'], 'My italic underlined message'), + * ); + * ``` + * + * When passing an array of formats, the order of the format applied + * is left to right so the following style might overwrite the previous one. + * + * ```js + * console.log( + * util.styleText(['red', 'green'], 'text'), // green + * ); + * ``` + * + * The special format value `none` applies no additional styling to the text. + * + * The full list of formats can be found in [modifiers](https://nodejs.org/docs/latest-v24.x/api/util.html#modifiers). + * @param format A text format or an Array of text formats defined in `util.inspect.colors`. + * @param text The text to to be formatted. + * @since v20.12.0 + */ + export function styleText( + format: + | ForegroundColors + | BackgroundColors + | Modifiers + | Array, + text: string, + options?: StyleTextOptions, + ): string; + /** + * An implementation of the [WHATWG Encoding Standard](https://encoding.spec.whatwg.org/) `TextDecoder` API. + * + * ```js + * const decoder = new TextDecoder(); + * const u8arr = new Uint8Array([72, 101, 108, 108, 111]); + * console.log(decoder.decode(u8arr)); // Hello + * ``` + * @since v8.3.0 + */ + export class TextDecoder { + /** + * The encoding supported by the `TextDecoder` instance. + */ + readonly encoding: string; + /** + * The value will be `true` if decoding errors result in a `TypeError` being + * thrown. + */ + readonly fatal: boolean; + /** + * The value will be `true` if the decoding result will include the byte order + * mark. + */ + readonly ignoreBOM: boolean; + constructor( + encoding?: string, + options?: { + fatal?: boolean | undefined; + ignoreBOM?: boolean | undefined; + }, + ); + /** + * Decodes the `input` and returns a string. If `options.stream` is `true`, any + * incomplete byte sequences occurring at the end of the `input` are buffered + * internally and emitted after the next call to `textDecoder.decode()`. + * + * If `textDecoder.fatal` is `true`, decoding errors that occur will result in a `TypeError` being thrown. + * @param input An `ArrayBuffer`, `DataView`, or `TypedArray` instance containing the encoded data. + */ + decode( + input?: NodeJS.ArrayBufferView | ArrayBuffer | null, + options?: { + stream?: boolean | undefined; + }, + ): string; + } + export interface EncodeIntoResult { + /** + * The read Unicode code units of input. + */ + read: number; + /** + * The written UTF-8 bytes of output. + */ + written: number; + } + export { types }; + + //// TextEncoder/Decoder + /** + * An implementation of the [WHATWG Encoding Standard](https://encoding.spec.whatwg.org/) `TextEncoder` API. All + * instances of `TextEncoder` only support UTF-8 encoding. + * + * ```js + * const encoder = new TextEncoder(); + * const uint8array = encoder.encode('this is some data'); + * ``` + * + * The `TextEncoder` class is also available on the global object. + * @since v8.3.0 + */ + export class TextEncoder { + /** + * The encoding supported by the `TextEncoder` instance. Always set to `'utf-8'`. + */ + readonly encoding: string; + /** + * UTF-8 encodes the `input` string and returns a `Uint8Array` containing the + * encoded bytes. + * @param [input='an empty string'] The text to encode. + */ + encode(input?: string): Uint8Array; + /** + * UTF-8 encodes the `src` string to the `dest` Uint8Array and returns an object + * containing the read Unicode code units and written UTF-8 bytes. + * + * ```js + * const encoder = new TextEncoder(); + * const src = 'this is some data'; + * const dest = new Uint8Array(10); + * const { read, written } = encoder.encodeInto(src, dest); + * ``` + * @param src The text to encode. + * @param dest The array to hold the encode result. + */ + encodeInto(src: string, dest: Uint8Array): EncodeIntoResult; + } + import { TextDecoder as _TextDecoder, TextEncoder as _TextEncoder } from "util"; + global { + /** + * `TextDecoder` class is a global reference for `import { TextDecoder } from 'node:util'` + * https://nodejs.org/api/globals.html#textdecoder + * @since v11.0.0 + */ + var TextDecoder: typeof globalThis extends { + onmessage: any; + TextDecoder: infer TextDecoder; + } ? TextDecoder + : typeof _TextDecoder; + /** + * `TextEncoder` class is a global reference for `import { TextEncoder } from 'node:util'` + * https://nodejs.org/api/globals.html#textencoder + * @since v11.0.0 + */ + var TextEncoder: typeof globalThis extends { + onmessage: any; + TextEncoder: infer TextEncoder; + } ? TextEncoder + : typeof _TextEncoder; + } + + //// parseArgs + /** + * Provides a higher level API for command-line argument parsing than interacting + * with `process.argv` directly. Takes a specification for the expected arguments + * and returns a structured object with the parsed options and positionals. + * + * ```js + * import { parseArgs } from 'node:util'; + * const args = ['-f', '--bar', 'b']; + * const options = { + * foo: { + * type: 'boolean', + * short: 'f', + * }, + * bar: { + * type: 'string', + * }, + * }; + * const { + * values, + * positionals, + * } = parseArgs({ args, options }); + * console.log(values, positionals); + * // Prints: [Object: null prototype] { foo: true, bar: 'b' } [] + * ``` + * @since v18.3.0, v16.17.0 + * @param config Used to provide arguments for parsing and to configure the parser. `config` supports the following properties: + * @return The parsed command line arguments: + */ + export function parseArgs(config?: T): ParsedResults; + + /** + * Type of argument used in {@link parseArgs}. + */ + export type ParseArgsOptionsType = "boolean" | "string"; + + export interface ParseArgsOptionDescriptor { + /** + * Type of argument. + */ + type: ParseArgsOptionsType; + /** + * Whether this option can be provided multiple times. + * If `true`, all values will be collected in an array. + * If `false`, values for the option are last-wins. + * @default false. + */ + multiple?: boolean | undefined; + /** + * A single character alias for the option. + */ + short?: string | undefined; + /** + * The default value to + * be used if (and only if) the option does not appear in the arguments to be + * parsed. It must be of the same type as the `type` property. When `multiple` + * is `true`, it must be an array. + * @since v18.11.0 + */ + default?: string | boolean | string[] | boolean[] | undefined; + } + export interface ParseArgsOptionsConfig { + [longOption: string]: ParseArgsOptionDescriptor; + } + export interface ParseArgsConfig { + /** + * Array of argument strings. + */ + args?: string[] | undefined; + /** + * Used to describe arguments known to the parser. + */ + options?: ParseArgsOptionsConfig | undefined; + /** + * Should an error be thrown when unknown arguments are encountered, + * or when arguments are passed that do not match the `type` configured in `options`. + * @default true + */ + strict?: boolean | undefined; + /** + * Whether this command accepts positional arguments. + */ + allowPositionals?: boolean | undefined; + /** + * If `true`, allows explicitly setting boolean options to `false` by prefixing the option name with `--no-`. + * @default false + * @since v22.4.0 + */ + allowNegative?: boolean | undefined; + /** + * Return the parsed tokens. This is useful for extending the built-in behavior, + * from adding additional checks through to reprocessing the tokens in different ways. + * @default false + */ + tokens?: boolean | undefined; + } + /* + IfDefaultsTrue and IfDefaultsFalse are helpers to handle default values for missing boolean properties. + TypeScript does not have exact types for objects: https://github.com/microsoft/TypeScript/issues/12936 + This means it is impossible to distinguish between "field X is definitely not present" and "field X may or may not be present". + But we expect users to generally provide their config inline or `as const`, which means TS will always know whether a given field is present. + So this helper treats "not definitely present" (i.e., not `extends boolean`) as being "definitely not present", i.e. it should have its default value. + This is technically incorrect but is a much nicer UX for the common case. + The IfDefaultsTrue version is for things which default to true; the IfDefaultsFalse version is for things which default to false. + */ + type IfDefaultsTrue = T extends true ? IfTrue + : T extends false ? IfFalse + : IfTrue; + + // we put the `extends false` condition first here because `undefined` compares like `any` when `strictNullChecks: false` + type IfDefaultsFalse = T extends false ? IfFalse + : T extends true ? IfTrue + : IfFalse; + + type ExtractOptionValue = IfDefaultsTrue< + T["strict"], + O["type"] extends "string" ? string : O["type"] extends "boolean" ? boolean : string | boolean, + string | boolean + >; + + type ApplyOptionalModifiers> = ( + & { -readonly [LongOption in keyof O]?: V[LongOption] } + & { [LongOption in keyof O as O[LongOption]["default"] extends {} ? LongOption : never]: V[LongOption] } + ) extends infer P ? { [K in keyof P]: P[K] } : never; // resolve intersection to object + + type ParsedValues = + & IfDefaultsTrue + & (T["options"] extends ParseArgsOptionsConfig ? ApplyOptionalModifiers< + T["options"], + { + [LongOption in keyof T["options"]]: IfDefaultsFalse< + T["options"][LongOption]["multiple"], + Array>, + ExtractOptionValue + >; + } + > + : {}); + + type ParsedPositionals = IfDefaultsTrue< + T["strict"], + IfDefaultsFalse, + IfDefaultsTrue + >; + + type PreciseTokenForOptions< + K extends string, + O extends ParseArgsOptionDescriptor, + > = O["type"] extends "string" ? { + kind: "option"; + index: number; + name: K; + rawName: string; + value: string; + inlineValue: boolean; + } + : O["type"] extends "boolean" ? { + kind: "option"; + index: number; + name: K; + rawName: string; + value: undefined; + inlineValue: undefined; + } + : OptionToken & { name: K }; + + type TokenForOptions< + T extends ParseArgsConfig, + K extends keyof T["options"] = keyof T["options"], + > = K extends unknown + ? T["options"] extends ParseArgsOptionsConfig ? PreciseTokenForOptions + : OptionToken + : never; + + type ParsedOptionToken = IfDefaultsTrue, OptionToken>; + + type ParsedPositionalToken = IfDefaultsTrue< + T["strict"], + IfDefaultsFalse, + IfDefaultsTrue + >; + + type ParsedTokens = Array< + ParsedOptionToken | ParsedPositionalToken | { kind: "option-terminator"; index: number } + >; + + type PreciseParsedResults = IfDefaultsFalse< + T["tokens"], + { + values: ParsedValues; + positionals: ParsedPositionals; + tokens: ParsedTokens; + }, + { + values: ParsedValues; + positionals: ParsedPositionals; + } + >; + + type OptionToken = + | { kind: "option"; index: number; name: string; rawName: string; value: string; inlineValue: boolean } + | { + kind: "option"; + index: number; + name: string; + rawName: string; + value: undefined; + inlineValue: undefined; + }; + + type Token = + | OptionToken + | { kind: "positional"; index: number; value: string } + | { kind: "option-terminator"; index: number }; + + // If ParseArgsConfig extends T, then the user passed config constructed elsewhere. + // So we can't rely on the `"not definitely present" implies "definitely not present"` assumption mentioned above. + type ParsedResults = ParseArgsConfig extends T ? { + values: { + [longOption: string]: undefined | string | boolean | Array; + }; + positionals: string[]; + tokens?: Token[]; + } + : PreciseParsedResults; + + /** + * An implementation of [the MIMEType class](https://bmeck.github.io/node-proposal-mime-api/). + * + * In accordance with browser conventions, all properties of `MIMEType` objects + * are implemented as getters and setters on the class prototype, rather than as + * data properties on the object itself. + * + * A MIME string is a structured string containing multiple meaningful + * components. When parsed, a `MIMEType` object is returned containing + * properties for each of these components. + * @since v19.1.0, v18.13.0 + */ + export class MIMEType { + /** + * Creates a new MIMEType object by parsing the input. + * + * A `TypeError` will be thrown if the `input` is not a valid MIME. + * Note that an effort will be made to coerce the given values into strings. + * @param input The input MIME to parse. + */ + constructor(input: string | { toString: () => string }); + + /** + * Gets and sets the type portion of the MIME. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const myMIME = new MIMEType('text/javascript'); + * console.log(myMIME.type); + * // Prints: text + * myMIME.type = 'application'; + * console.log(myMIME.type); + * // Prints: application + * console.log(String(myMIME)); + * // Prints: application/javascript + * ``` + */ + type: string; + /** + * Gets and sets the subtype portion of the MIME. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const myMIME = new MIMEType('text/ecmascript'); + * console.log(myMIME.subtype); + * // Prints: ecmascript + * myMIME.subtype = 'javascript'; + * console.log(myMIME.subtype); + * // Prints: javascript + * console.log(String(myMIME)); + * // Prints: text/javascript + * ``` + */ + subtype: string; + /** + * Gets the essence of the MIME. This property is read only. + * Use `mime.type` or `mime.subtype` to alter the MIME. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const myMIME = new MIMEType('text/javascript;key=value'); + * console.log(myMIME.essence); + * // Prints: text/javascript + * myMIME.type = 'application'; + * console.log(myMIME.essence); + * // Prints: application/javascript + * console.log(String(myMIME)); + * // Prints: application/javascript;key=value + * ``` + */ + readonly essence: string; + /** + * Gets the `MIMEParams` object representing the + * parameters of the MIME. This property is read-only. See `MIMEParams` documentation for details. + */ + readonly params: MIMEParams; + /** + * The `toString()` method on the `MIMEType` object returns the serialized MIME. + * + * Because of the need for standard compliance, this method does not allow users + * to customize the serialization process of the MIME. + */ + toString(): string; + } + /** + * The `MIMEParams` API provides read and write access to the parameters of a `MIMEType`. + * @since v19.1.0, v18.13.0 + */ + export class MIMEParams { + /** + * Remove all name-value pairs whose name is `name`. + */ + delete(name: string): void; + /** + * Returns an iterator over each of the name-value pairs in the parameters. + * Each item of the iterator is a JavaScript `Array`. The first item of the array + * is the `name`, the second item of the array is the `value`. + */ + entries(): NodeJS.Iterator<[name: string, value: string]>; + /** + * Returns the value of the first name-value pair whose name is `name`. If there + * are no such pairs, `null` is returned. + * @return or `null` if there is no name-value pair with the given `name`. + */ + get(name: string): string | null; + /** + * Returns `true` if there is at least one name-value pair whose name is `name`. + */ + has(name: string): boolean; + /** + * Returns an iterator over the names of each name-value pair. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const { params } = new MIMEType('text/plain;foo=0;bar=1'); + * for (const name of params.keys()) { + * console.log(name); + * } + * // Prints: + * // foo + * // bar + * ``` + */ + keys(): NodeJS.Iterator; + /** + * Sets the value in the `MIMEParams` object associated with `name` to `value`. If there are any pre-existing name-value pairs whose names are `name`, + * set the first such pair's value to `value`. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const { params } = new MIMEType('text/plain;foo=0;bar=1'); + * params.set('foo', 'def'); + * params.set('baz', 'xyz'); + * console.log(params.toString()); + * // Prints: foo=def;bar=1;baz=xyz + * ``` + */ + set(name: string, value: string): void; + /** + * Returns an iterator over the values of each name-value pair. + */ + values(): NodeJS.Iterator; + /** + * Returns an iterator over each of the name-value pairs in the parameters. + */ + [Symbol.iterator](): NodeJS.Iterator<[name: string, value: string]>; + } +} +declare module "util/types" { + import { KeyObject, webcrypto } from "node:crypto"; + /** + * Returns `true` if the value is a built-in [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) or + * [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instance. + * + * See also `util.types.isArrayBuffer()` and `util.types.isSharedArrayBuffer()`. + * + * ```js + * util.types.isAnyArrayBuffer(new ArrayBuffer()); // Returns true + * util.types.isAnyArrayBuffer(new SharedArrayBuffer()); // Returns true + * ``` + * @since v10.0.0 + */ + function isAnyArrayBuffer(object: unknown): object is ArrayBufferLike; + /** + * Returns `true` if the value is an `arguments` object. + * + * ```js + * function foo() { + * util.types.isArgumentsObject(arguments); // Returns true + * } + * ``` + * @since v10.0.0 + */ + function isArgumentsObject(object: unknown): object is IArguments; + /** + * Returns `true` if the value is a built-in [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) instance. + * This does _not_ include [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instances. Usually, it is + * desirable to test for both; See `util.types.isAnyArrayBuffer()` for that. + * + * ```js + * util.types.isArrayBuffer(new ArrayBuffer()); // Returns true + * util.types.isArrayBuffer(new SharedArrayBuffer()); // Returns false + * ``` + * @since v10.0.0 + */ + function isArrayBuffer(object: unknown): object is ArrayBuffer; + /** + * Returns `true` if the value is an instance of one of the [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) views, such as typed + * array objects or [`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView). Equivalent to + * [`ArrayBuffer.isView()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView). + * + * ```js + * util.types.isArrayBufferView(new Int8Array()); // true + * util.types.isArrayBufferView(Buffer.from('hello world')); // true + * util.types.isArrayBufferView(new DataView(new ArrayBuffer(16))); // true + * util.types.isArrayBufferView(new ArrayBuffer()); // false + * ``` + * @since v10.0.0 + */ + function isArrayBufferView(object: unknown): object is NodeJS.ArrayBufferView; + /** + * Returns `true` if the value is an [async function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function). + * This only reports back what the JavaScript engine is seeing; + * in particular, the return value may not match the original source code if + * a transpilation tool was used. + * + * ```js + * util.types.isAsyncFunction(function foo() {}); // Returns false + * util.types.isAsyncFunction(async function foo() {}); // Returns true + * ``` + * @since v10.0.0 + */ + function isAsyncFunction(object: unknown): boolean; + /** + * Returns `true` if the value is a `BigInt64Array` instance. + * + * ```js + * util.types.isBigInt64Array(new BigInt64Array()); // Returns true + * util.types.isBigInt64Array(new BigUint64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isBigInt64Array(value: unknown): value is BigInt64Array; + /** + * Returns `true` if the value is a BigInt object, e.g. created + * by `Object(BigInt(123))`. + * + * ```js + * util.types.isBigIntObject(Object(BigInt(123))); // Returns true + * util.types.isBigIntObject(BigInt(123)); // Returns false + * util.types.isBigIntObject(123); // Returns false + * ``` + * @since v10.4.0 + */ + function isBigIntObject(object: unknown): object is BigInt; + /** + * Returns `true` if the value is a `BigUint64Array` instance. + * + * ```js + * util.types.isBigUint64Array(new BigInt64Array()); // Returns false + * util.types.isBigUint64Array(new BigUint64Array()); // Returns true + * ``` + * @since v10.0.0 + */ + function isBigUint64Array(value: unknown): value is BigUint64Array; + /** + * Returns `true` if the value is a boolean object, e.g. created + * by `new Boolean()`. + * + * ```js + * util.types.isBooleanObject(false); // Returns false + * util.types.isBooleanObject(true); // Returns false + * util.types.isBooleanObject(new Boolean(false)); // Returns true + * util.types.isBooleanObject(new Boolean(true)); // Returns true + * util.types.isBooleanObject(Boolean(false)); // Returns false + * util.types.isBooleanObject(Boolean(true)); // Returns false + * ``` + * @since v10.0.0 + */ + function isBooleanObject(object: unknown): object is Boolean; + /** + * Returns `true` if the value is any boxed primitive object, e.g. created + * by `new Boolean()`, `new String()` or `Object(Symbol())`. + * + * For example: + * + * ```js + * util.types.isBoxedPrimitive(false); // Returns false + * util.types.isBoxedPrimitive(new Boolean(false)); // Returns true + * util.types.isBoxedPrimitive(Symbol('foo')); // Returns false + * util.types.isBoxedPrimitive(Object(Symbol('foo'))); // Returns true + * util.types.isBoxedPrimitive(Object(BigInt(5))); // Returns true + * ``` + * @since v10.11.0 + */ + function isBoxedPrimitive(object: unknown): object is String | Number | BigInt | Boolean | Symbol; + /** + * Returns `true` if the value is a built-in [`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView) instance. + * + * ```js + * const ab = new ArrayBuffer(20); + * util.types.isDataView(new DataView(ab)); // Returns true + * util.types.isDataView(new Float64Array()); // Returns false + * ``` + * + * See also [`ArrayBuffer.isView()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView). + * @since v10.0.0 + */ + function isDataView(object: unknown): object is DataView; + /** + * Returns `true` if the value is a built-in [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) instance. + * + * ```js + * util.types.isDate(new Date()); // Returns true + * ``` + * @since v10.0.0 + */ + function isDate(object: unknown): object is Date; + /** + * Returns `true` if the value is a native `External` value. + * + * A native `External` value is a special type of object that contains a + * raw C++ pointer (`void*`) for access from native code, and has no other + * properties. Such objects are created either by Node.js internals or native + * addons. In JavaScript, they are + * [frozen](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) objects with a + * `null` prototype. + * + * ```c + * #include + * #include + * napi_value result; + * static napi_value MyNapi(napi_env env, napi_callback_info info) { + * int* raw = (int*) malloc(1024); + * napi_status status = napi_create_external(env, (void*) raw, NULL, NULL, &result); + * if (status != napi_ok) { + * napi_throw_error(env, NULL, "napi_create_external failed"); + * return NULL; + * } + * return result; + * } + * ... + * DECLARE_NAPI_PROPERTY("myNapi", MyNapi) + * ... + * ``` + * + * ```js + * import native from 'napi_addon.node'; + * import { types } from 'node:util'; + * + * const data = native.myNapi(); + * types.isExternal(data); // returns true + * types.isExternal(0); // returns false + * types.isExternal(new String('foo')); // returns false + * ``` + * + * For further information on `napi_create_external`, refer to + * [`napi_create_external()`](https://nodejs.org/docs/latest-v24.x/api/n-api.html#napi_create_external). + * @since v10.0.0 + */ + function isExternal(object: unknown): boolean; + /** + * Returns `true` if the value is a built-in [`Float16Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float16Array) instance. + * + * ```js + * util.types.isFloat16Array(new ArrayBuffer()); // Returns false + * util.types.isFloat16Array(new Float16Array()); // Returns true + * util.types.isFloat16Array(new Float32Array()); // Returns false + * ``` + * @since v24.0.0 + */ + function isFloat16Array(object: unknown): object is Float16Array; + /** + * Returns `true` if the value is a built-in [`Float32Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array) instance. + * + * ```js + * util.types.isFloat32Array(new ArrayBuffer()); // Returns false + * util.types.isFloat32Array(new Float32Array()); // Returns true + * util.types.isFloat32Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isFloat32Array(object: unknown): object is Float32Array; + /** + * Returns `true` if the value is a built-in [`Float64Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array) instance. + * + * ```js + * util.types.isFloat64Array(new ArrayBuffer()); // Returns false + * util.types.isFloat64Array(new Uint8Array()); // Returns false + * util.types.isFloat64Array(new Float64Array()); // Returns true + * ``` + * @since v10.0.0 + */ + function isFloat64Array(object: unknown): object is Float64Array; + /** + * Returns `true` if the value is a generator function. + * This only reports back what the JavaScript engine is seeing; + * in particular, the return value may not match the original source code if + * a transpilation tool was used. + * + * ```js + * util.types.isGeneratorFunction(function foo() {}); // Returns false + * util.types.isGeneratorFunction(function* foo() {}); // Returns true + * ``` + * @since v10.0.0 + */ + function isGeneratorFunction(object: unknown): object is GeneratorFunction; + /** + * Returns `true` if the value is a generator object as returned from a + * built-in generator function. + * This only reports back what the JavaScript engine is seeing; + * in particular, the return value may not match the original source code if + * a transpilation tool was used. + * + * ```js + * function* foo() {} + * const generator = foo(); + * util.types.isGeneratorObject(generator); // Returns true + * ``` + * @since v10.0.0 + */ + function isGeneratorObject(object: unknown): object is Generator; + /** + * Returns `true` if the value is a built-in [`Int8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array) instance. + * + * ```js + * util.types.isInt8Array(new ArrayBuffer()); // Returns false + * util.types.isInt8Array(new Int8Array()); // Returns true + * util.types.isInt8Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isInt8Array(object: unknown): object is Int8Array; + /** + * Returns `true` if the value is a built-in [`Int16Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array) instance. + * + * ```js + * util.types.isInt16Array(new ArrayBuffer()); // Returns false + * util.types.isInt16Array(new Int16Array()); // Returns true + * util.types.isInt16Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isInt16Array(object: unknown): object is Int16Array; + /** + * Returns `true` if the value is a built-in [`Int32Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array) instance. + * + * ```js + * util.types.isInt32Array(new ArrayBuffer()); // Returns false + * util.types.isInt32Array(new Int32Array()); // Returns true + * util.types.isInt32Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isInt32Array(object: unknown): object is Int32Array; + /** + * Returns `true` if the value is a built-in [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) instance. + * + * ```js + * util.types.isMap(new Map()); // Returns true + * ``` + * @since v10.0.0 + */ + function isMap( + object: T | {}, + ): object is T extends ReadonlyMap ? (unknown extends T ? never : ReadonlyMap) + : Map; + /** + * Returns `true` if the value is an iterator returned for a built-in [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) instance. + * + * ```js + * const map = new Map(); + * util.types.isMapIterator(map.keys()); // Returns true + * util.types.isMapIterator(map.values()); // Returns true + * util.types.isMapIterator(map.entries()); // Returns true + * util.types.isMapIterator(map[Symbol.iterator]()); // Returns true + * ``` + * @since v10.0.0 + */ + function isMapIterator(object: unknown): boolean; + /** + * Returns `true` if the value is an instance of a [Module Namespace Object](https://tc39.github.io/ecma262/#sec-module-namespace-exotic-objects). + * + * ```js + * import * as ns from './a.js'; + * + * util.types.isModuleNamespaceObject(ns); // Returns true + * ``` + * @since v10.0.0 + */ + function isModuleNamespaceObject(value: unknown): boolean; + /** + * Returns `true` if the value was returned by the constructor of a + * [built-in `Error` type](https://tc39.es/ecma262/#sec-error-objects). + * + * ```js + * console.log(util.types.isNativeError(new Error())); // true + * console.log(util.types.isNativeError(new TypeError())); // true + * console.log(util.types.isNativeError(new RangeError())); // true + * ``` + * + * Subclasses of the native error types are also native errors: + * + * ```js + * class MyError extends Error {} + * console.log(util.types.isNativeError(new MyError())); // true + * ``` + * + * A value being `instanceof` a native error class is not equivalent to `isNativeError()` + * returning `true` for that value. `isNativeError()` returns `true` for errors + * which come from a different [realm](https://tc39.es/ecma262/#realm) while `instanceof Error` returns `false` + * for these errors: + * + * ```js + * import { createContext, runInContext } from 'node:vm'; + * import { types } from 'node:util'; + * + * const context = createContext({}); + * const myError = runInContext('new Error()', context); + * console.log(types.isNativeError(myError)); // true + * console.log(myError instanceof Error); // false + * ``` + * + * Conversely, `isNativeError()` returns `false` for all objects which were not + * returned by the constructor of a native error. That includes values + * which are `instanceof` native errors: + * + * ```js + * const myError = { __proto__: Error.prototype }; + * console.log(util.types.isNativeError(myError)); // false + * console.log(myError instanceof Error); // true + * ``` + * @since v10.0.0 + * @deprecated The `util.types.isNativeError` API is deprecated. Please use `Error.isError` instead. + */ + function isNativeError(object: unknown): object is Error; + /** + * Returns `true` if the value is a number object, e.g. created + * by `new Number()`. + * + * ```js + * util.types.isNumberObject(0); // Returns false + * util.types.isNumberObject(new Number(0)); // Returns true + * ``` + * @since v10.0.0 + */ + function isNumberObject(object: unknown): object is Number; + /** + * Returns `true` if the value is a built-in [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). + * + * ```js + * util.types.isPromise(Promise.resolve(42)); // Returns true + * ``` + * @since v10.0.0 + */ + function isPromise(object: unknown): object is Promise; + /** + * Returns `true` if the value is a [`Proxy`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) instance. + * + * ```js + * const target = {}; + * const proxy = new Proxy(target, {}); + * util.types.isProxy(target); // Returns false + * util.types.isProxy(proxy); // Returns true + * ``` + * @since v10.0.0 + */ + function isProxy(object: unknown): boolean; + /** + * Returns `true` if the value is a regular expression object. + * + * ```js + * util.types.isRegExp(/abc/); // Returns true + * util.types.isRegExp(new RegExp('abc')); // Returns true + * ``` + * @since v10.0.0 + */ + function isRegExp(object: unknown): object is RegExp; + /** + * Returns `true` if the value is a built-in [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instance. + * + * ```js + * util.types.isSet(new Set()); // Returns true + * ``` + * @since v10.0.0 + */ + function isSet( + object: T | {}, + ): object is T extends ReadonlySet ? (unknown extends T ? never : ReadonlySet) : Set; + /** + * Returns `true` if the value is an iterator returned for a built-in [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instance. + * + * ```js + * const set = new Set(); + * util.types.isSetIterator(set.keys()); // Returns true + * util.types.isSetIterator(set.values()); // Returns true + * util.types.isSetIterator(set.entries()); // Returns true + * util.types.isSetIterator(set[Symbol.iterator]()); // Returns true + * ``` + * @since v10.0.0 + */ + function isSetIterator(object: unknown): boolean; + /** + * Returns `true` if the value is a built-in [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instance. + * This does _not_ include [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) instances. Usually, it is + * desirable to test for both; See `util.types.isAnyArrayBuffer()` for that. + * + * ```js + * util.types.isSharedArrayBuffer(new ArrayBuffer()); // Returns false + * util.types.isSharedArrayBuffer(new SharedArrayBuffer()); // Returns true + * ``` + * @since v10.0.0 + */ + function isSharedArrayBuffer(object: unknown): object is SharedArrayBuffer; + /** + * Returns `true` if the value is a string object, e.g. created + * by `new String()`. + * + * ```js + * util.types.isStringObject('foo'); // Returns false + * util.types.isStringObject(new String('foo')); // Returns true + * ``` + * @since v10.0.0 + */ + function isStringObject(object: unknown): object is String; + /** + * Returns `true` if the value is a symbol object, created + * by calling `Object()` on a `Symbol` primitive. + * + * ```js + * const symbol = Symbol('foo'); + * util.types.isSymbolObject(symbol); // Returns false + * util.types.isSymbolObject(Object(symbol)); // Returns true + * ``` + * @since v10.0.0 + */ + function isSymbolObject(object: unknown): object is Symbol; + /** + * Returns `true` if the value is a built-in [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) instance. + * + * ```js + * util.types.isTypedArray(new ArrayBuffer()); // Returns false + * util.types.isTypedArray(new Uint8Array()); // Returns true + * util.types.isTypedArray(new Float64Array()); // Returns true + * ``` + * + * See also [`ArrayBuffer.isView()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView). + * @since v10.0.0 + */ + function isTypedArray(object: unknown): object is NodeJS.TypedArray; + /** + * Returns `true` if the value is a built-in [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) instance. + * + * ```js + * util.types.isUint8Array(new ArrayBuffer()); // Returns false + * util.types.isUint8Array(new Uint8Array()); // Returns true + * util.types.isUint8Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isUint8Array(object: unknown): object is Uint8Array; + /** + * Returns `true` if the value is a built-in [`Uint8ClampedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray) instance. + * + * ```js + * util.types.isUint8ClampedArray(new ArrayBuffer()); // Returns false + * util.types.isUint8ClampedArray(new Uint8ClampedArray()); // Returns true + * util.types.isUint8ClampedArray(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isUint8ClampedArray(object: unknown): object is Uint8ClampedArray; + /** + * Returns `true` if the value is a built-in [`Uint16Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array) instance. + * + * ```js + * util.types.isUint16Array(new ArrayBuffer()); // Returns false + * util.types.isUint16Array(new Uint16Array()); // Returns true + * util.types.isUint16Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isUint16Array(object: unknown): object is Uint16Array; + /** + * Returns `true` if the value is a built-in [`Uint32Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array) instance. + * + * ```js + * util.types.isUint32Array(new ArrayBuffer()); // Returns false + * util.types.isUint32Array(new Uint32Array()); // Returns true + * util.types.isUint32Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isUint32Array(object: unknown): object is Uint32Array; + /** + * Returns `true` if the value is a built-in [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) instance. + * + * ```js + * util.types.isWeakMap(new WeakMap()); // Returns true + * ``` + * @since v10.0.0 + */ + function isWeakMap(object: unknown): object is WeakMap; + /** + * Returns `true` if the value is a built-in [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) instance. + * + * ```js + * util.types.isWeakSet(new WeakSet()); // Returns true + * ``` + * @since v10.0.0 + */ + function isWeakSet(object: unknown): object is WeakSet; + /** + * Returns `true` if `value` is a `KeyObject`, `false` otherwise. + * @since v16.2.0 + */ + function isKeyObject(object: unknown): object is KeyObject; + /** + * Returns `true` if `value` is a `CryptoKey`, `false` otherwise. + * @since v16.2.0 + */ + function isCryptoKey(object: unknown): object is webcrypto.CryptoKey; +} +declare module "node:util" { + export * from "util"; +} +declare module "node:util/types" { + export * from "util/types"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/v8.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/v8.d.ts.html new file mode 100644 index 0000000..8d9af4e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/v8.d.ts.html @@ -0,0 +1,919 @@ +/** + * The `node:v8` module exposes APIs that are specific to the version of [V8](https://developers.google.com/v8/) built into the Node.js binary. It can be accessed using: + * + * ```js + * import v8 from 'node:v8'; + * ``` + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/v8.js) + */ +declare module "v8" { + import { Readable } from "node:stream"; + interface HeapSpaceInfo { + space_name: string; + space_size: number; + space_used_size: number; + space_available_size: number; + physical_space_size: number; + } + // ** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ + type DoesZapCodeSpaceFlag = 0 | 1; + interface HeapInfo { + total_heap_size: number; + total_heap_size_executable: number; + total_physical_size: number; + total_available_size: number; + used_heap_size: number; + heap_size_limit: number; + malloced_memory: number; + peak_malloced_memory: number; + does_zap_garbage: DoesZapCodeSpaceFlag; + number_of_native_contexts: number; + number_of_detached_contexts: number; + total_global_handles_size: number; + used_global_handles_size: number; + external_memory: number; + } + interface HeapCodeStatistics { + code_and_metadata_size: number; + bytecode_and_metadata_size: number; + external_script_source_size: number; + } + interface HeapSnapshotOptions { + /** + * If true, expose internals in the heap snapshot. + * @default false + */ + exposeInternals?: boolean; + /** + * If true, expose numeric values in artificial fields. + * @default false + */ + exposeNumericValues?: boolean; + } + /** + * Returns an integer representing a version tag derived from the V8 version, + * command-line flags, and detected CPU features. This is useful for determining + * whether a `vm.Script` `cachedData` buffer is compatible with this instance + * of V8. + * + * ```js + * console.log(v8.cachedDataVersionTag()); // 3947234607 + * // The value returned by v8.cachedDataVersionTag() is derived from the V8 + * // version, command-line flags, and detected CPU features. Test that the value + * // does indeed update when flags are toggled. + * v8.setFlagsFromString('--allow_natives_syntax'); + * console.log(v8.cachedDataVersionTag()); // 183726201 + * ``` + * @since v8.0.0 + */ + function cachedDataVersionTag(): number; + /** + * Returns an object with the following properties: + * + * `does_zap_garbage` is a 0/1 boolean, which signifies whether the `--zap_code_space` option is enabled or not. This makes V8 overwrite heap + * garbage with a bit pattern. The RSS footprint (resident set size) gets bigger + * because it continuously touches all heap pages and that makes them less likely + * to get swapped out by the operating system. + * + * `number_of_native_contexts` The value of native\_context is the number of the + * top-level contexts currently active. Increase of this number over time indicates + * a memory leak. + * + * `number_of_detached_contexts` The value of detached\_context is the number + * of contexts that were detached and not yet garbage collected. This number + * being non-zero indicates a potential memory leak. + * + * `total_global_handles_size` The value of total\_global\_handles\_size is the + * total memory size of V8 global handles. + * + * `used_global_handles_size` The value of used\_global\_handles\_size is the + * used memory size of V8 global handles. + * + * `external_memory` The value of external\_memory is the memory size of array + * buffers and external strings. + * + * ```js + * { + * total_heap_size: 7326976, + * total_heap_size_executable: 4194304, + * total_physical_size: 7326976, + * total_available_size: 1152656, + * used_heap_size: 3476208, + * heap_size_limit: 1535115264, + * malloced_memory: 16384, + * peak_malloced_memory: 1127496, + * does_zap_garbage: 0, + * number_of_native_contexts: 1, + * number_of_detached_contexts: 0, + * total_global_handles_size: 8192, + * used_global_handles_size: 3296, + * external_memory: 318824 + * } + * ``` + * @since v1.0.0 + */ + function getHeapStatistics(): HeapInfo; + /** + * It returns an object with a structure similar to the + * [`cppgc::HeapStatistics`](https://v8docs.nodesource.com/node-22.4/d7/d51/heap-statistics_8h_source.html) + * object. See the [V8 documentation](https://v8docs.nodesource.com/node-22.4/df/d2f/structcppgc_1_1_heap_statistics.html) + * for more information about the properties of the object. + * + * ```js + * // Detailed + * ({ + * committed_size_bytes: 131072, + * resident_size_bytes: 131072, + * used_size_bytes: 152, + * space_statistics: [ + * { + * name: 'NormalPageSpace0', + * committed_size_bytes: 0, + * resident_size_bytes: 0, + * used_size_bytes: 0, + * page_stats: [{}], + * free_list_stats: {}, + * }, + * { + * name: 'NormalPageSpace1', + * committed_size_bytes: 131072, + * resident_size_bytes: 131072, + * used_size_bytes: 152, + * page_stats: [{}], + * free_list_stats: {}, + * }, + * { + * name: 'NormalPageSpace2', + * committed_size_bytes: 0, + * resident_size_bytes: 0, + * used_size_bytes: 0, + * page_stats: [{}], + * free_list_stats: {}, + * }, + * { + * name: 'NormalPageSpace3', + * committed_size_bytes: 0, + * resident_size_bytes: 0, + * used_size_bytes: 0, + * page_stats: [{}], + * free_list_stats: {}, + * }, + * { + * name: 'LargePageSpace', + * committed_size_bytes: 0, + * resident_size_bytes: 0, + * used_size_bytes: 0, + * page_stats: [{}], + * free_list_stats: {}, + * }, + * ], + * type_names: [], + * detail_level: 'detailed', + * }); + * ``` + * + * ```js + * // Brief + * ({ + * committed_size_bytes: 131072, + * resident_size_bytes: 131072, + * used_size_bytes: 128864, + * space_statistics: [], + * type_names: [], + * detail_level: 'brief', + * }); + * ``` + * @since v22.15.0 + * @param detailLevel **Default:** `'detailed'`. Specifies the level of detail in the returned statistics. + * Accepted values are: + * * `'brief'`: Brief statistics contain only the top-level + * allocated and used + * memory statistics for the entire heap. + * * `'detailed'`: Detailed statistics also contain a break + * down per space and page, as well as freelist statistics + * and object type histograms. + */ + function getCppHeapStatistics(detailLevel?: "brief" | "detailed"): object; + /** + * Returns statistics about the V8 heap spaces, i.e. the segments which make up + * the V8 heap. Neither the ordering of heap spaces, nor the availability of a + * heap space can be guaranteed as the statistics are provided via the + * V8 [`GetHeapSpaceStatistics`](https://v8docs.nodesource.com/node-13.2/d5/dda/classv8_1_1_isolate.html#ac673576f24fdc7a33378f8f57e1d13a4) function and may change from one V8 version to the + * next. + * + * The value returned is an array of objects containing the following properties: + * + * ```json + * [ + * { + * "space_name": "new_space", + * "space_size": 2063872, + * "space_used_size": 951112, + * "space_available_size": 80824, + * "physical_space_size": 2063872 + * }, + * { + * "space_name": "old_space", + * "space_size": 3090560, + * "space_used_size": 2493792, + * "space_available_size": 0, + * "physical_space_size": 3090560 + * }, + * { + * "space_name": "code_space", + * "space_size": 1260160, + * "space_used_size": 644256, + * "space_available_size": 960, + * "physical_space_size": 1260160 + * }, + * { + * "space_name": "map_space", + * "space_size": 1094160, + * "space_used_size": 201608, + * "space_available_size": 0, + * "physical_space_size": 1094160 + * }, + * { + * "space_name": "large_object_space", + * "space_size": 0, + * "space_used_size": 0, + * "space_available_size": 1490980608, + * "physical_space_size": 0 + * } + * ] + * ``` + * @since v6.0.0 + */ + function getHeapSpaceStatistics(): HeapSpaceInfo[]; + /** + * The `v8.setFlagsFromString()` method can be used to programmatically set + * V8 command-line flags. This method should be used with care. Changing settings + * after the VM has started may result in unpredictable behavior, including + * crashes and data loss; or it may simply do nothing. + * + * The V8 options available for a version of Node.js may be determined by running `node --v8-options`. + * + * Usage: + * + * ```js + * // Print GC events to stdout for one minute. + * import v8 from 'node:v8'; + * v8.setFlagsFromString('--trace_gc'); + * setTimeout(() => { v8.setFlagsFromString('--notrace_gc'); }, 60e3); + * ``` + * @since v1.0.0 + */ + function setFlagsFromString(flags: string): void; + /** + * This is similar to the [`queryObjects()` console API](https://developer.chrome.com/docs/devtools/console/utilities#queryObjects-function) + * provided by the Chromium DevTools console. It can be used to search for objects that have the matching constructor on its prototype chain + * in the heap after a full garbage collection, which can be useful for memory leak regression tests. To avoid surprising results, users should + * avoid using this API on constructors whose implementation they don't control, or on constructors that can be invoked by other parties in the + * application. + * + * To avoid accidental leaks, this API does not return raw references to the objects found. By default, it returns the count of the objects + * found. If `options.format` is `'summary'`, it returns an array containing brief string representations for each object. The visibility provided + * in this API is similar to what the heap snapshot provides, while users can save the cost of serialization and parsing and directly filter the + * target objects during the search. + * + * Only objects created in the current execution context are included in the results. + * + * ```js + * import { queryObjects } from 'node:v8'; + * class A { foo = 'bar'; } + * console.log(queryObjects(A)); // 0 + * const a = new A(); + * console.log(queryObjects(A)); // 1 + * // [ "A { foo: 'bar' }" ] + * console.log(queryObjects(A, { format: 'summary' })); + * + * class B extends A { bar = 'qux'; } + * const b = new B(); + * console.log(queryObjects(B)); // 1 + * // [ "B { foo: 'bar', bar: 'qux' }" ] + * console.log(queryObjects(B, { format: 'summary' })); + * + * // Note that, when there are child classes inheriting from a constructor, + * // the constructor also shows up in the prototype chain of the child + * // classes's prototoype, so the child classes's prototoype would also be + * // included in the result. + * console.log(queryObjects(A)); // 3 + * // [ "B { foo: 'bar', bar: 'qux' }", 'A {}', "A { foo: 'bar' }" ] + * console.log(queryObjects(A, { format: 'summary' })); + * ``` + * @param ctor The constructor that can be used to search on the prototype chain in order to filter target objects in the heap. + * @since v20.13.0 + * @experimental + */ + function queryObjects(ctor: Function): number | string[]; + function queryObjects(ctor: Function, options: { format: "count" }): number; + function queryObjects(ctor: Function, options: { format: "summary" }): string[]; + /** + * Generates a snapshot of the current V8 heap and returns a Readable + * Stream that may be used to read the JSON serialized representation. + * This JSON stream format is intended to be used with tools such as + * Chrome DevTools. The JSON schema is undocumented and specific to the + * V8 engine. Therefore, the schema may change from one version of V8 to the next. + * + * Creating a heap snapshot requires memory about twice the size of the heap at + * the time the snapshot is created. This results in the risk of OOM killers + * terminating the process. + * + * Generating a snapshot is a synchronous operation which blocks the event loop + * for a duration depending on the heap size. + * + * ```js + * // Print heap snapshot to the console + * import v8 from 'node:v8'; + * const stream = v8.getHeapSnapshot(); + * stream.pipe(process.stdout); + * ``` + * @since v11.13.0 + * @return A Readable containing the V8 heap snapshot. + */ + function getHeapSnapshot(options?: HeapSnapshotOptions): Readable; + /** + * Generates a snapshot of the current V8 heap and writes it to a JSON + * file. This file is intended to be used with tools such as Chrome + * DevTools. The JSON schema is undocumented and specific to the V8 + * engine, and may change from one version of V8 to the next. + * + * A heap snapshot is specific to a single V8 isolate. When using `worker threads`, a heap snapshot generated from the main thread will + * not contain any information about the workers, and vice versa. + * + * Creating a heap snapshot requires memory about twice the size of the heap at + * the time the snapshot is created. This results in the risk of OOM killers + * terminating the process. + * + * Generating a snapshot is a synchronous operation which blocks the event loop + * for a duration depending on the heap size. + * + * ```js + * import { writeHeapSnapshot } from 'node:v8'; + * import { + * Worker, + * isMainThread, + * parentPort, + * } from 'node:worker_threads'; + * + * if (isMainThread) { + * const worker = new Worker(__filename); + * + * worker.once('message', (filename) => { + * console.log(`worker heapdump: ${filename}`); + * // Now get a heapdump for the main thread. + * console.log(`main thread heapdump: ${writeHeapSnapshot()}`); + * }); + * + * // Tell the worker to create a heapdump. + * worker.postMessage('heapdump'); + * } else { + * parentPort.once('message', (message) => { + * if (message === 'heapdump') { + * // Generate a heapdump for the worker + * // and return the filename to the parent. + * parentPort.postMessage(writeHeapSnapshot()); + * } + * }); + * } + * ``` + * @since v11.13.0 + * @param filename The file path where the V8 heap snapshot is to be saved. If not specified, a file name with the pattern `'Heap-${yyyymmdd}-${hhmmss}-${pid}-${thread_id}.heapsnapshot'` will be + * generated, where `{pid}` will be the PID of the Node.js process, `{thread_id}` will be `0` when `writeHeapSnapshot()` is called from the main Node.js thread or the id of a + * worker thread. + * @return The filename where the snapshot was saved. + */ + function writeHeapSnapshot(filename?: string, options?: HeapSnapshotOptions): string; + /** + * Get statistics about code and its metadata in the heap, see + * V8 [`GetHeapCodeAndMetadataStatistics`](https://v8docs.nodesource.com/node-13.2/d5/dda/classv8_1_1_isolate.html#a6079122af17612ef54ef3348ce170866) API. Returns an object with the + * following properties: + * + * ```js + * { + * code_and_metadata_size: 212208, + * bytecode_and_metadata_size: 161368, + * external_script_source_size: 1410794, + * cpu_profiler_metadata_size: 0, + * } + * ``` + * @since v12.8.0 + */ + function getHeapCodeStatistics(): HeapCodeStatistics; + /** + * V8 only supports `Latin-1/ISO-8859-1` and `UTF16` as the underlying representation of a string. + * If the `content` uses `Latin-1/ISO-8859-1` as the underlying representation, this function will return true; + * otherwise, it returns false. + * + * If this method returns false, that does not mean that the string contains some characters not in `Latin-1/ISO-8859-1`. + * Sometimes a `Latin-1` string may also be represented as `UTF16`. + * + * ```js + * const { isStringOneByteRepresentation } = require('node:v8'); + * + * const Encoding = { + * latin1: 1, + * utf16le: 2, + * }; + * const buffer = Buffer.alloc(100); + * function writeString(input) { + * if (isStringOneByteRepresentation(input)) { + * buffer.writeUint8(Encoding.latin1); + * buffer.writeUint32LE(input.length, 1); + * buffer.write(input, 5, 'latin1'); + * } else { + * buffer.writeUint8(Encoding.utf16le); + * buffer.writeUint32LE(input.length * 2, 1); + * buffer.write(input, 5, 'utf16le'); + * } + * } + * writeString('hello'); + * writeString('你好'); + * ``` + * @since v23.10.0, v22.15.0 + */ + function isStringOneByteRepresentation(content: string): boolean; + /** + * @since v8.0.0 + */ + class Serializer { + /** + * Writes out a header, which includes the serialization format version. + */ + writeHeader(): void; + /** + * Serializes a JavaScript value and adds the serialized representation to the + * internal buffer. + * + * This throws an error if `value` cannot be serialized. + */ + writeValue(val: any): boolean; + /** + * Returns the stored internal buffer. This serializer should not be used once + * the buffer is released. Calling this method results in undefined behavior + * if a previous write has failed. + */ + releaseBuffer(): Buffer; + /** + * Marks an `ArrayBuffer` as having its contents transferred out of band. + * Pass the corresponding `ArrayBuffer` in the deserializing context to `deserializer.transferArrayBuffer()`. + * @param id A 32-bit unsigned integer. + * @param arrayBuffer An `ArrayBuffer` instance. + */ + transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void; + /** + * Write a raw 32-bit unsigned integer. + * For use inside of a custom `serializer._writeHostObject()`. + */ + writeUint32(value: number): void; + /** + * Write a raw 64-bit unsigned integer, split into high and low 32-bit parts. + * For use inside of a custom `serializer._writeHostObject()`. + */ + writeUint64(hi: number, lo: number): void; + /** + * Write a JS `number` value. + * For use inside of a custom `serializer._writeHostObject()`. + */ + writeDouble(value: number): void; + /** + * Write raw bytes into the serializer's internal buffer. The deserializer + * will require a way to compute the length of the buffer. + * For use inside of a custom `serializer._writeHostObject()`. + */ + writeRawBytes(buffer: NodeJS.TypedArray): void; + } + /** + * A subclass of `Serializer` that serializes `TypedArray`(in particular `Buffer`) and `DataView` objects as host objects, and only + * stores the part of their underlying `ArrayBuffer`s that they are referring to. + * @since v8.0.0 + */ + class DefaultSerializer extends Serializer {} + /** + * @since v8.0.0 + */ + class Deserializer { + constructor(data: NodeJS.TypedArray); + /** + * Reads and validates a header (including the format version). + * May, for example, reject an invalid or unsupported wire format. In that case, + * an `Error` is thrown. + */ + readHeader(): boolean; + /** + * Deserializes a JavaScript value from the buffer and returns it. + */ + readValue(): any; + /** + * Marks an `ArrayBuffer` as having its contents transferred out of band. + * Pass the corresponding `ArrayBuffer` in the serializing context to `serializer.transferArrayBuffer()` (or return the `id` from `serializer._getSharedArrayBufferId()` in the case of + * `SharedArrayBuffer`s). + * @param id A 32-bit unsigned integer. + * @param arrayBuffer An `ArrayBuffer` instance. + */ + transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void; + /** + * Reads the underlying wire format version. Likely mostly to be useful to + * legacy code reading old wire format versions. May not be called before `.readHeader()`. + */ + getWireFormatVersion(): number; + /** + * Read a raw 32-bit unsigned integer and return it. + * For use inside of a custom `deserializer._readHostObject()`. + */ + readUint32(): number; + /** + * Read a raw 64-bit unsigned integer and return it as an array `[hi, lo]` with two 32-bit unsigned integer entries. + * For use inside of a custom `deserializer._readHostObject()`. + */ + readUint64(): [number, number]; + /** + * Read a JS `number` value. + * For use inside of a custom `deserializer._readHostObject()`. + */ + readDouble(): number; + /** + * Read raw bytes from the deserializer's internal buffer. The `length` parameter + * must correspond to the length of the buffer that was passed to `serializer.writeRawBytes()`. + * For use inside of a custom `deserializer._readHostObject()`. + */ + readRawBytes(length: number): Buffer; + } + /** + * A subclass of `Deserializer` corresponding to the format written by `DefaultSerializer`. + * @since v8.0.0 + */ + class DefaultDeserializer extends Deserializer {} + /** + * Uses a `DefaultSerializer` to serialize `value` into a buffer. + * + * `ERR_BUFFER_TOO_LARGE` will be thrown when trying to + * serialize a huge object which requires buffer + * larger than `buffer.constants.MAX_LENGTH`. + * @since v8.0.0 + */ + function serialize(value: any): Buffer; + /** + * Uses a `DefaultDeserializer` with default options to read a JS value + * from a buffer. + * @since v8.0.0 + * @param buffer A buffer returned by {@link serialize}. + */ + function deserialize(buffer: NodeJS.ArrayBufferView): any; + /** + * The `v8.takeCoverage()` method allows the user to write the coverage started by `NODE_V8_COVERAGE` to disk on demand. This method can be invoked multiple + * times during the lifetime of the process. Each time the execution counter will + * be reset and a new coverage report will be written to the directory specified + * by `NODE_V8_COVERAGE`. + * + * When the process is about to exit, one last coverage will still be written to + * disk unless {@link stopCoverage} is invoked before the process exits. + * @since v15.1.0, v14.18.0, v12.22.0 + */ + function takeCoverage(): void; + /** + * The `v8.stopCoverage()` method allows the user to stop the coverage collection + * started by `NODE_V8_COVERAGE`, so that V8 can release the execution count + * records and optimize code. This can be used in conjunction with {@link takeCoverage} if the user wants to collect the coverage on demand. + * @since v15.1.0, v14.18.0, v12.22.0 + */ + function stopCoverage(): void; + /** + * The API is a no-op if `--heapsnapshot-near-heap-limit` is already set from the command line or the API is called more than once. + * `limit` must be a positive integer. See [`--heapsnapshot-near-heap-limit`](https://nodejs.org/docs/latest-v24.x/api/cli.html#--heapsnapshot-near-heap-limitmax_count) for more information. + * @since v18.10.0, v16.18.0 + */ + function setHeapSnapshotNearHeapLimit(limit: number): void; + /** + * This API collects GC data in current thread. + * @since v19.6.0, v18.15.0 + */ + class GCProfiler { + /** + * Start collecting GC data. + * @since v19.6.0, v18.15.0 + */ + start(): void; + /** + * Stop collecting GC data and return an object. The content of object + * is as follows. + * + * ```json + * { + * "version": 1, + * "startTime": 1674059033862, + * "statistics": [ + * { + * "gcType": "Scavenge", + * "beforeGC": { + * "heapStatistics": { + * "totalHeapSize": 5005312, + * "totalHeapSizeExecutable": 524288, + * "totalPhysicalSize": 5226496, + * "totalAvailableSize": 4341325216, + * "totalGlobalHandlesSize": 8192, + * "usedGlobalHandlesSize": 2112, + * "usedHeapSize": 4883840, + * "heapSizeLimit": 4345298944, + * "mallocedMemory": 254128, + * "externalMemory": 225138, + * "peakMallocedMemory": 181760 + * }, + * "heapSpaceStatistics": [ + * { + * "spaceName": "read_only_space", + * "spaceSize": 0, + * "spaceUsedSize": 0, + * "spaceAvailableSize": 0, + * "physicalSpaceSize": 0 + * } + * ] + * }, + * "cost": 1574.14, + * "afterGC": { + * "heapStatistics": { + * "totalHeapSize": 6053888, + * "totalHeapSizeExecutable": 524288, + * "totalPhysicalSize": 5500928, + * "totalAvailableSize": 4341101384, + * "totalGlobalHandlesSize": 8192, + * "usedGlobalHandlesSize": 2112, + * "usedHeapSize": 4059096, + * "heapSizeLimit": 4345298944, + * "mallocedMemory": 254128, + * "externalMemory": 225138, + * "peakMallocedMemory": 181760 + * }, + * "heapSpaceStatistics": [ + * { + * "spaceName": "read_only_space", + * "spaceSize": 0, + * "spaceUsedSize": 0, + * "spaceAvailableSize": 0, + * "physicalSpaceSize": 0 + * } + * ] + * } + * } + * ], + * "endTime": 1674059036865 + * } + * ``` + * + * Here's an example. + * + * ```js + * import { GCProfiler } from 'node:v8'; + * const profiler = new GCProfiler(); + * profiler.start(); + * setTimeout(() => { + * console.log(profiler.stop()); + * }, 1000); + * ``` + * @since v19.6.0, v18.15.0 + */ + stop(): GCProfilerResult; + } + interface GCProfilerResult { + version: number; + startTime: number; + endTime: number; + statistics: Array<{ + gcType: string; + cost: number; + beforeGC: { + heapStatistics: HeapStatistics; + heapSpaceStatistics: HeapSpaceStatistics[]; + }; + afterGC: { + heapStatistics: HeapStatistics; + heapSpaceStatistics: HeapSpaceStatistics[]; + }; + }>; + } + interface HeapStatistics { + totalHeapSize: number; + totalHeapSizeExecutable: number; + totalPhysicalSize: number; + totalAvailableSize: number; + totalGlobalHandlesSize: number; + usedGlobalHandlesSize: number; + usedHeapSize: number; + heapSizeLimit: number; + mallocedMemory: number; + externalMemory: number; + peakMallocedMemory: number; + } + interface HeapSpaceStatistics { + spaceName: string; + spaceSize: number; + spaceUsedSize: number; + spaceAvailableSize: number; + physicalSpaceSize: number; + } + /** + * Called when a promise is constructed. This does not mean that corresponding before/after events will occur, only that the possibility exists. This will + * happen if a promise is created without ever getting a continuation. + * @since v17.1.0, v16.14.0 + * @param promise The promise being created. + * @param parent The promise continued from, if applicable. + */ + interface Init { + (promise: Promise, parent: Promise): void; + } + /** + * Called before a promise continuation executes. This can be in the form of `then()`, `catch()`, or `finally()` handlers or an await resuming. + * + * The before callback will be called 0 to N times. The before callback will typically be called 0 times if no continuation was ever made for the promise. + * The before callback may be called many times in the case where many continuations have been made from the same promise. + * @since v17.1.0, v16.14.0 + */ + interface Before { + (promise: Promise): void; + } + /** + * Called immediately after a promise continuation executes. This may be after a `then()`, `catch()`, or `finally()` handler or before an await after another await. + * @since v17.1.0, v16.14.0 + */ + interface After { + (promise: Promise): void; + } + /** + * Called when the promise receives a resolution or rejection value. This may occur synchronously in the case of {@link Promise.resolve()} or + * {@link Promise.reject()}. + * @since v17.1.0, v16.14.0 + */ + interface Settled { + (promise: Promise): void; + } + /** + * Key events in the lifetime of a promise have been categorized into four areas: creation of a promise, before/after a continuation handler is called or + * around an await, and when the promise resolves or rejects. + * + * Because promises are asynchronous resources whose lifecycle is tracked via the promise hooks mechanism, the `init()`, `before()`, `after()`, and + * `settled()` callbacks must not be async functions as they create more promises which would produce an infinite loop. + * @since v17.1.0, v16.14.0 + */ + interface HookCallbacks { + init?: Init; + before?: Before; + after?: After; + settled?: Settled; + } + interface PromiseHooks { + /** + * The `init` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param init The {@link Init | `init` callback} to call when a promise is created. + * @return Call to stop the hook. + */ + onInit: (init: Init) => Function; + /** + * The `settled` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param settled The {@link Settled | `settled` callback} to call when a promise is created. + * @return Call to stop the hook. + */ + onSettled: (settled: Settled) => Function; + /** + * The `before` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param before The {@link Before | `before` callback} to call before a promise continuation executes. + * @return Call to stop the hook. + */ + onBefore: (before: Before) => Function; + /** + * The `after` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param after The {@link After | `after` callback} to call after a promise continuation executes. + * @return Call to stop the hook. + */ + onAfter: (after: After) => Function; + /** + * Registers functions to be called for different lifetime events of each promise. + * The callbacks `init()`/`before()`/`after()`/`settled()` are called for the respective events during a promise's lifetime. + * All callbacks are optional. For example, if only promise creation needs to be tracked, then only the init callback needs to be passed. + * The hook callbacks must be plain functions. Providing async functions will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param callbacks The {@link HookCallbacks | Hook Callbacks} to register + * @return Used for disabling hooks + */ + createHook: (callbacks: HookCallbacks) => Function; + } + /** + * The `promiseHooks` interface can be used to track promise lifecycle events. + * @since v17.1.0, v16.14.0 + */ + const promiseHooks: PromiseHooks; + type StartupSnapshotCallbackFn = (args: any) => any; + /** + * The `v8.startupSnapshot` interface can be used to add serialization and deserialization hooks for custom startup snapshots. + * + * ```bash + * $ node --snapshot-blob snapshot.blob --build-snapshot entry.js + * # This launches a process with the snapshot + * $ node --snapshot-blob snapshot.blob + * ``` + * + * In the example above, `entry.js` can use methods from the `v8.startupSnapshot` interface to specify how to save information for custom objects + * in the snapshot during serialization and how the information can be used to synchronize these objects during deserialization of the snapshot. + * For example, if the `entry.js` contains the following script: + * + * ```js + * 'use strict'; + * + * import fs from 'node:fs'; + * import zlib from 'node:zlib'; + * import path from 'node:path'; + * import assert from 'node:assert'; + * + * import v8 from 'node:v8'; + * + * class BookShelf { + * storage = new Map(); + * + * // Reading a series of files from directory and store them into storage. + * constructor(directory, books) { + * for (const book of books) { + * this.storage.set(book, fs.readFileSync(path.join(directory, book))); + * } + * } + * + * static compressAll(shelf) { + * for (const [ book, content ] of shelf.storage) { + * shelf.storage.set(book, zlib.gzipSync(content)); + * } + * } + * + * static decompressAll(shelf) { + * for (const [ book, content ] of shelf.storage) { + * shelf.storage.set(book, zlib.gunzipSync(content)); + * } + * } + * } + * + * // __dirname here is where the snapshot script is placed + * // during snapshot building time. + * const shelf = new BookShelf(__dirname, [ + * 'book1.en_US.txt', + * 'book1.es_ES.txt', + * 'book2.zh_CN.txt', + * ]); + * + * assert(v8.startupSnapshot.isBuildingSnapshot()); + * // On snapshot serialization, compress the books to reduce size. + * v8.startupSnapshot.addSerializeCallback(BookShelf.compressAll, shelf); + * // On snapshot deserialization, decompress the books. + * v8.startupSnapshot.addDeserializeCallback(BookShelf.decompressAll, shelf); + * v8.startupSnapshot.setDeserializeMainFunction((shelf) => { + * // process.env and process.argv are refreshed during snapshot + * // deserialization. + * const lang = process.env.BOOK_LANG || 'en_US'; + * const book = process.argv[1]; + * const name = `${book}.${lang}.txt`; + * console.log(shelf.storage.get(name)); + * }, shelf); + * ``` + * + * The resulted binary will get print the data deserialized from the snapshot during start up, using the refreshed `process.env` and `process.argv` of the launched process: + * + * ```bash + * $ BOOK_LANG=es_ES node --snapshot-blob snapshot.blob book1 + * # Prints content of book1.es_ES.txt deserialized from the snapshot. + * ``` + * + * Currently the application deserialized from a user-land snapshot cannot be snapshotted again, so these APIs are only available to applications that are not deserialized from a user-land snapshot. + * + * @since v18.6.0, v16.17.0 + */ + namespace startupSnapshot { + /** + * Add a callback that will be called when the Node.js instance is about to get serialized into a snapshot and exit. + * This can be used to release resources that should not or cannot be serialized or to convert user data into a form more suitable for serialization. + * @since v18.6.0, v16.17.0 + */ + function addSerializeCallback(callback: StartupSnapshotCallbackFn, data?: any): void; + /** + * Add a callback that will be called when the Node.js instance is deserialized from a snapshot. + * The `callback` and the `data` (if provided) will be serialized into the snapshot, they can be used to re-initialize the state of the application or + * to re-acquire resources that the application needs when the application is restarted from the snapshot. + * @since v18.6.0, v16.17.0 + */ + function addDeserializeCallback(callback: StartupSnapshotCallbackFn, data?: any): void; + /** + * This sets the entry point of the Node.js application when it is deserialized from a snapshot. This can be called only once in the snapshot building script. + * If called, the deserialized application no longer needs an additional entry point script to start up and will simply invoke the callback along with the deserialized + * data (if provided), otherwise an entry point script still needs to be provided to the deserialized application. + * @since v18.6.0, v16.17.0 + */ + function setDeserializeMainFunction(callback: StartupSnapshotCallbackFn, data?: any): void; + /** + * Returns true if the Node.js instance is run to build a snapshot. + * @since v18.6.0, v16.17.0 + */ + function isBuildingSnapshot(): boolean; + } +} +declare module "node:v8" { + export * from "v8"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/vm.d.ts.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/vm.d.ts.html new file mode 100644 index 0000000..bba2e0b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/main/share/node/vm.d.ts.html @@ -0,0 +1,1036 @@ +/** + * The `node:vm` module enables compiling and running code within V8 Virtual + * Machine contexts. + * + * **The `node:vm` module is not a security** + * **mechanism. Do not use it to run untrusted code.** + * + * JavaScript code can be compiled and run immediately or + * compiled, saved, and run later. + * + * A common use case is to run the code in a different V8 Context. This means + * invoked code has a different global object than the invoking code. + * + * One can provide the context by `contextifying` an + * object. The invoked code treats any property in the context like a + * global variable. Any changes to global variables caused by the invoked + * code are reflected in the context object. + * + * ```js + * import vm from 'node:vm'; + * + * const x = 1; + * + * const context = { x: 2 }; + * vm.createContext(context); // Contextify the object. + * + * const code = 'x += 40; var y = 17;'; + * // `x` and `y` are global variables in the context. + * // Initially, x has the value 2 because that is the value of context.x. + * vm.runInContext(code, context); + * + * console.log(context.x); // 42 + * console.log(context.y); // 17 + * + * console.log(x); // 1; y is not defined. + * ``` + * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/vm.js) + */ +declare module "vm" { + import { ImportAttributes } from "node:module"; + interface Context extends NodeJS.Dict {} + interface BaseOptions { + /** + * Specifies the filename used in stack traces produced by this script. + * @default '' + */ + filename?: string | undefined; + /** + * Specifies the line number offset that is displayed in stack traces produced by this script. + * @default 0 + */ + lineOffset?: number | undefined; + /** + * Specifies the column number offset that is displayed in stack traces produced by this script. + * @default 0 + */ + columnOffset?: number | undefined; + } + type DynamicModuleLoader = ( + specifier: string, + referrer: T, + importAttributes: ImportAttributes, + phase: "source" | "evaluation", + ) => Module | Promise; + interface ScriptOptions extends BaseOptions { + /** + * Provides an optional data with V8's code cache data for the supplied source. + */ + cachedData?: Buffer | NodeJS.ArrayBufferView | undefined; + /** @deprecated in favor of `script.createCachedData()` */ + produceCachedData?: boolean | undefined; + /** + * Used to specify how the modules should be loaded during the evaluation of this script when `import()` is called. This option is + * part of the experimental modules API. We do not recommend using it in a production environment. For detailed information, see + * [Support of dynamic `import()` in compilation APIs](https://nodejs.org/docs/latest-v24.x/api/vm.html#support-of-dynamic-import-in-compilation-apis). + * @experimental + */ + importModuleDynamically?: + | DynamicModuleLoader + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/App.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/App.vue new file mode 100644 index 0000000..292a945 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/App.vue @@ -0,0 +1,186 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/analytics.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/analytics.ts new file mode 100644 index 0000000..199a79a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/analytics.ts @@ -0,0 +1,10 @@ +/** + * Analytics (Aptabase-compatible API via main process). Tracks app usage, features, and screens. + * Props are sent as JSON; only string, number, and boolean values are supported server-side. + */ + +export type TrackProps = Record + +export function trackEvent(eventName: string, props?: TrackProps) { + window.electron.ipcRenderer.send('aptabase-track-event', { eventName, props }) +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/kvaser.svg b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/kvaser.svg new file mode 100644 index 0000000..b3354dc --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/kvaser.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/lincable.png b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/lincable.png new file mode 100644 index 0000000..b0f1846 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/lincable.png differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo.svg b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo.svg new file mode 100644 index 0000000..badef93 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + PRO + \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo1.svg b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo1.svg new file mode 100644 index 0000000..4ce143b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo256.png b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo256.png new file mode 100644 index 0000000..4000dae Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo256.png differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo2561.png b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo2561.png new file mode 100644 index 0000000..f981147 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo2561.png differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo64.png b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo64.png new file mode 100644 index 0000000..b150d5a Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/assets/logo64.png differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/DBC_spec.md b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/DBC_spec.md new file mode 100644 index 0000000..1a8db39 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/DBC_spec.md @@ -0,0 +1,161 @@ +# Scope + +This document doesn't claim to specifiy the complete [Vector DBC standard](http://vector.com/vi_candb_en.html) + +# Format description + +`<...>`: Required field +`[...]`: Optional field +` | `: Or (eg. ) + +# Supported Keywords + +## VERSION + +Version identifier of the DBC file. +Format: `VERSION ""` + +## NS\_ + +Names used throughout the DBC file. +Format:: + +``` +NS_: + BS_ + CM_ + ... +``` + +## BS\_ + +Bus configuration. +Format:: `BS_: ` +Speed in kBit/s + +## BU\_ + +List of all CAN-Nodes, seperated by whitespaces. + +## BO\_ + +Message definition. +Format: `BO_ : ` +MessageLength in bytes. + +## SG\_ + +Signal definition. +Format: `SG_ [M|m] : |@ (,) [|] "[Unit]" [ReceivingNodes]` +Length in bits. +Signed: + = unsigned; - = signed +Endianness: 1 = little-endian, Intel; 0 = big-endian, Motorola +M: If M than this signals contains a multiplexer identifier. +MultiplexerIdentifier: Signal definition is only used if the value of the multiplexer signal equals to this value. + +## CM\_ + +Description field. +Format: `CM_ [ [CAN-ID] [SignalName]] "";` + +## BA*DEF* + +Attribute definition. +Format: `BA_DEF_ [BU_|BO_|SG_] "" [Config];` + +| DataType | Description | Config format | +| -------- | -------------- | -------------------------- | +| INT | integer | ` ` | +| FLOAT | floating point | ` ` | +| STRING | string | +| ENUM | enumeration | `"",""...` | + +## BA*DEF_DEF* + +Attribute default value +Format: `BA_DEF_DEF_ "" ["]["];` + +## BA\_ + +Attribute +Format: `BA_ "" [BU_|BO_|SG_] [Node|CAN-ID] [SignalName] ;` + +## VAL\_ + +Value definitions for signals. +Format: `VAL_ ;` + +## VAL*TABLE* + +Value table definition for signals. +Format: `VAL_TABLE_ ;` +ValueTableDefinition: List of `IntValue "StringValue"` Pairs, seperated by whitespaces + +## BO*TX_BU*: + +Transmitter for signals. +Format: `BO_TX_BU_ : [BU_ seperated by commas]` + +## SIG*GROUP*: + +Group signals assigned to one can-id. I guess it makes it easier to parse and assign the correct signals like this. +Format: `SIG_GROUP_ : [Signal];` + +# Attributes + +In this sections are standard attributes used by [CANpy](https://github.com/stefanhoelzl/CANpy) defined. The attributes can be overwritten within a DBC file. + +## Message Attributes + +### GenMsgSendType + +Defines the send type of a message. +Supported types: + +- cyclic +- triggered +- cyclicIfActive +- cyclicAndTriggered +- cyclicIfActiveAndTriggered +- none + Definition: `BA_DEF BO_ "GenMsgSendType" ENUM "cyclic","triggered","cyclicIfActive","cyclicAndTriggered","cyclicIfActiveAndTriggered","none"` + Default: none + Definition: `BA_DEF_DEF "GenMsgSendType" "none"` + +### GenMsgCycleTime + +Defines the cycle time of a message in ms. +Definition: `BA_DEF BO_ "GenMsgCycleTime" INT 0 0` +Default: 0 +Definition: `BA_DEF_DEF "GenMsgCycleTime" 0` + +### GenMsgStartDelayTime + +Defines the allowed delay after startup this message must occure the first time in ms. +Definition: `BA_DEF BO_ "GenMsgStartDelayTime" INT 0 0` +Default: 0 (=GenMsgCycleTime) +Definition: `BA_DEF_DEF "GenMsgStartDelayTime" 0` + +### GenMsgDelayTime + +Defines the allowed delay for a message in ms. +Definition: `BA_DEF BO_ "GenMsgDelayTime" INT 0 0` +Default: 0 +Definition: `BA_DEF_DEF "GenMsgDelayTime" 0` + +## Signal Attributes + +### GenSigStartValue + +Defines the value as long as no value is set/received for this signal. +Definition: `BA_DEF SG_ "GenSigStartValue" INT 0 0` +Default: 0 +Definition: `BA_DEF_DEF "GenSigStartValue" 0` + +# Sources + +http://pisnoop.s3.amazonaws.com/snoop_help_dbc.htm +http://www.racelogic.co.uk/_downloads/vbox/Application_Notes/CAN%20Format%20for%20VBOXII%20and%20PRO%20v4.pdf +https://hackage.haskell.org/package/ecu-0.0.8/src/src/j1939_utf8.dbc +http://www.ingenieurbuerobecker.de/downloads/CANtool_Manual.pdf + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/attrTable.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/attrTable.vue new file mode 100644 index 0000000..9ae2e99 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/attrTable.vue @@ -0,0 +1,241 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/calc.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/calc.ts new file mode 100644 index 0000000..2292fe5 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/calc.ts @@ -0,0 +1,508 @@ +import type { CanDB, Message, Signal } from 'src/main/share/can' + +// Convert two's complement to signed value +function fromTwosComplement(value: number, bits: number): number { + if (value & (1 << (bits - 1))) { + return -((~value + 1) & ((1 << bits) - 1)) + } + return value +} + +// Calculate max raw value based on signal length +export function getMaxRawValue(length: number): number { + return Math.pow(2, length) - 1 +} + +// Convert physical value to raw value +function physToRaw(phys: number, row: Signal): number { + let rawValue = Math.round((phys - Number(row.offset)) / Number(row.factor)) + + // Get max value based on length + const maxRaw = getMaxRawValue(row.bit_length) + + if (row.is_signed) { + // For signed values, handle negative numbers with two's complement + if (rawValue < 0) { + rawValue = toTwosComplement(rawValue, row.bit_length) + } else if (rawValue > maxRaw / 2) { + // Limit positive values to max signed value + rawValue = Math.floor(maxRaw / 2) + } + } else { + // For unsigned values, simply clamp between 0 and max + rawValue = Math.min(Math.max(rawValue, 0), maxRaw) + } + + return rawValue +} +// Convert signed value to two's complement +function toTwosComplement(value: number, bits: number): number { + if (value >= 0) return value + const mask = (1 << bits) - 1 + return (~-value + 1) & mask +} + +// Convert raw value to physical value +export function rawToPhys(raw: number, row: Signal): number { + let actualValue = raw + + if (row.is_signed) { + // Only convert from two's complement if it's a signed value + const maxRaw = getMaxRawValue(row.bit_length) + if (raw > maxRaw / 2) { + // If the value is in the negative range of two's complement + actualValue = fromTwosComplement(raw, row.bit_length) + } + } + + return actualValue * Number(row.factor) + Number(row.offset) +} + +export function updateSignalRaw(signal: Signal) { + if (signal.value === undefined) { + return + } + + const vv = signal.values[signal.value] + if (vv) { + // For enum values, directly set the raw value as phys value + signal.physValue = vv + return + } + { + // Handle float value types + if (signal.is_float) { + // Handle both IEEE Float (32-bit) and Double (64-bit) in one block + if (signal.bit_length === 64) { + // IEEE Double (double precision, 64-bit) + const buffer = new ArrayBuffer(8) + const view = new DataView(buffer) + const big = BigInt(signal.value) + // For simplicity assuming the 64-bit value fits in 53 bits of JS number + view.setUint32(0, Number(big & 0xffffffffn), true) // Lower 32 bits + view.setUint32(4, Number(big >> 32n), true) // Upper 32 bits (might be 0 in JS) + const val = view.getFloat64(0, true) + signal.physValue = Number.isInteger(val) ? `${val}.0` : val.toString() + } else { + // IEEE Float (single precision, 32-bit) + const buffer = new ArrayBuffer(4) + const view = new DataView(buffer) + view.setUint32(0, Number(signal.value), true) // true for little-endian + const val = view.getFloat32(0, true) + signal.physValue = Number.isInteger(val) ? `${val}.0` : val.toString() + } + } else { + // Calculate new physical value for regular integer signals + const newPhysValue = rawToPhys(Number(signal.value), signal) + signal.physValue = newPhysValue.toString() + if (signal.min != signal.max) { + if (newPhysValue < Number(signal.min)) { + signal.value = physToRaw(Number(signal.min), signal).toString() + signal.physValue = signal.min + } else if (newPhysValue > Number(signal.max)) { + signal.value = physToRaw(Number(signal.max), signal).toString() + signal.physValue = signal.max + } + } + } + } +} +export function updateSignalPhys(row: Signal, db: CanDB) { + const t1 = Date.now() + if (row.physValue === undefined) return + for (const [key, value] of Object.entries(row.values)) { + if (value === row.physValue) { + row.value = key + return + } + } + + // Handle float value types + if (row.is_float) { + if (row.bit_length === 32) { + const buffer = new ArrayBuffer(4) + const view = new DataView(buffer) + view.setFloat32(0, Number(row.physValue), true) // true for little-endian + row.value = view.getUint32(0, true).toString() + } else { + const buffer = new ArrayBuffer(8) + const view = new DataView(buffer) + view.setFloat64(0, Number(row.physValue), true) // true for little-endian + row.value = view.getUint32(0, true).toString() + } + } else { + // Clamp physical value to min/max if defined + let clampedPhysValue = row.physValue + if (row.min != row.max) { + if (Number(clampedPhysValue) < Number(row.min)) { + clampedPhysValue = row.min + } else if (Number(clampedPhysValue) > Number(row.max)) { + clampedPhysValue = row.max + } + if (clampedPhysValue !== row.physValue) { + row.physValue = clampedPhysValue + } + } + + // Calculate and set raw value + row.value = physToRaw(Number(clampedPhysValue), row).toString() + } + const t2 = Date.now() + console.log('updateSignalPhys', t2 - t1) +} + +/** + * Check if multiplexer value matches signal's mux condition (canmatrix format). + * mux_val_grp: number[][] - array of [min, max] ranges + * mux_value: number - single value match + */ +function isMuxMatch(signal: Signal, muxValue: number): boolean { + if (signal.mux_val_grp && signal.mux_val_grp.length > 0) { + return signal.mux_val_grp.some((range) => muxValue >= range[0] && muxValue <= range[1]) + } + if (signal.mux_value !== undefined && signal.mux_value !== null) { + return signal.mux_value === muxValue + } + return false +} + +/** + * Get signals that are currently active (visible) based on multiplexer values. + * Uses canmatrix-style hierarchical multiplexing. + */ +export function getActiveSignals(message: Message): Signal[] { + const signals = message.signals || [] + const muxValues: Record = {} + + const multiplexers = signals.filter((s) => s.is_multiplexer) + const getMuxerDepth = (s: Signal): number => { + if (!s.muxer_for_signal) return 0 + const parent = signals.find((x) => x.name === s.muxer_for_signal) + return parent ? getMuxerDepth(parent) + 1 : 0 + } + multiplexers + .sort((a, b) => getMuxerDepth(a) - getMuxerDepth(b)) + .forEach((signal) => { + const parentMux = signal.muxer_for_signal + const rawVal = + signal.value !== undefined ? Number(signal.value) : Number(signal.initial_value) + if (!parentMux) { + if (!Number.isNaN(rawVal)) muxValues[signal.name] = rawVal + } else { + const parentVal = muxValues[parentMux] + if (parentVal !== undefined && isMuxMatch(signal, parentVal) && !Number.isNaN(rawVal)) { + muxValues[signal.name] = rawVal + } + } + }) + + return signals.filter((signal) => { + if (signal.is_multiplexer) { + if (!signal.muxer_for_signal) return true + const parentVal = muxValues[signal.muxer_for_signal] + return parentVal !== undefined && isMuxMatch(signal, parentVal) + } + if (!signal.muxer_for_signal) return true + const muxVal = muxValues[signal.muxer_for_signal] + return muxVal !== undefined && isMuxMatch(signal, muxVal) + }) +} + +export function writeMessageData(message: Message, data: Buffer, db: CanDB) { + const signals = message.signals || [] + const muxValues: Record = {} + + // 1. Process multiplexers in dependency order (canmatrix-style hierarchical mux) + const multiplexers = signals.filter((s) => s.is_multiplexer) + const getMuxerDepth = (s: Signal): number => { + if (!s.muxer_for_signal) return 0 + const parent = signals.find((x) => x.name === s.muxer_for_signal) + return parent ? getMuxerDepth(parent) + 1 : 0 + } + multiplexers + .sort((a, b) => getMuxerDepth(a) - getMuxerDepth(b)) + .forEach((signal) => { + const parentMux = signal.muxer_for_signal + if (!parentMux) { + readSignalFromBuffer(signal, data, db) + muxValues[signal.name] = Number(signal.value) + } else { + const parentVal = muxValues[parentMux] + if (parentVal !== undefined && isMuxMatch(signal, parentVal)) { + readSignalFromBuffer(signal, data, db) + muxValues[signal.name] = Number(signal.value) + } + } + }) + + // 2. Process multiplexed and normal signals + signals.forEach((signal) => { + if (signal.is_multiplexer) return + + const muxerName = signal.muxer_for_signal + if (!muxerName) { + readSignalFromBuffer(signal, data, db) + return + } + + const muxVal = muxValues[muxerName] + if (muxVal !== undefined && isMuxMatch(signal, muxVal)) { + readSignalFromBuffer(signal, data, db) + } + }) +} + +// 从缓冲区读取信号值的辅助函数 +function readSignalFromBuffer(signal: Signal, data: Buffer, db: CanDB) { + let rawValue = 0 + + if (!signal.is_big_endian) { + // Intel格式 (Little Endian) + let startByte = Math.floor(signal.start_bit / 8) + let startBitInByte = signal.start_bit % 8 + let remainingBits = signal.bit_length + let valueIndex = 0 + + while (remainingBits > 0 && startByte < data.length) { + const bitsInThisByte = Math.min(8 - startBitInByte, remainingBits) + const mask = (1 << bitsInThisByte) - 1 + const value = (data[startByte] >> startBitInByte) & mask + + rawValue |= value << valueIndex + + remainingBits -= bitsInThisByte + valueIndex += bitsInThisByte + startByte += 1 + startBitInByte = 0 + } + } else { + // Motorola格式 (Big Endian) - 修改后的版本 + let currentBit = signal.start_bit // 从startBit开始,这是LSB的位置 + let remainingBits = signal.bit_length + let valueShift = 0 // 用于组装value的位偏移量 + + while (remainingBits > 0) { + const currentByte = Math.floor(currentBit / 8) + const bitInByte = currentBit % 8 + + if (currentByte < 0 || currentByte >= data.length) break + + // 从buffer中提取当前bit + const bitValue = (data[currentByte] >> bitInByte) & 1 + + // 将bit添加到rawValue中 + rawValue |= bitValue << valueShift + + remainingBits-- + valueShift++ + + // Motorola格式的bit遍历规则(与写入相同) + if (bitInByte === 7) { + // 当前在byte的最高位,跳转到前一个byte的最低位 + currentBit -= 15 // 从bit 39跳转到bit 24 + } else { + // 在byte内向高位移动 + currentBit++ + } + } + } + + // For unsigned signals, JavaScript bitwise ops treat 32-bit values as signed. + // Convert to unsigned so values like 0x80000002 become 2147483650, not -2147483646. + if (!signal.is_float && !signal.is_signed) { + rawValue = rawValue >>> 0 + } + + let physValue = rawValue + + // 检查原始值是否合法 + const maxValue = Math.pow(2, signal.bit_length) - 1 + if (rawValue > maxValue) { + return // 如果值超出信号长度允许的范围,不更新信号 + } + + // 对于枚举值,检查值是否在有效范围内 + // if (signal.values) { + // const validValues = Object.values(signal.values).map((v) => v.value) + // if (!validValues.includes(rawValue)) { + // return // 如果值不在枚举列表中,不更新信号 + // } + // } else if (signal.valueTable) { + // // 如果有值表,检查值是否在值表范围内 + + // const vt = Object.values(db.valueTables).find((vt) => vt.name === signal.valueTable) + // if (vt) { + // const validValues = vt.values.map((v) => v.value) + // if (!validValues.includes(rawValue)) { + // return // 如果值不在值表中,不更新信号 + // } + // } + // } else + + { + // 对于数值类型信号,检查是否在最小值和最大值范围内 + + if (signal.is_float) { + if (signal.bit_length === 32) { + //convert to IEEE Float + physValue = new Float32Array(new Uint32Array([physValue]).buffer)[0] + } else { + //convert to IEEE Double + physValue = new Float64Array(new Uint32Array([physValue]).buffer)[0] + } + } else if (signal.is_signed) { + // 检查最高位是否为1(负数) + const isNegative = (rawValue & (1 << (signal.bit_length - 1))) !== 0 + if (isNegative) { + // 转换为有符号值 + const signBit = 1 << (signal.bit_length - 1) + const valueMask = signBit - 1 + physValue = -((~rawValue & valueMask) + 1) + } + } + // 计算物理值 + physValue = physValue * Number(signal.factor) + Number(signal.offset) + + // if (signal.minimum != signal.maximum) { + // // 检查物理值是否在有效范围内 + // if (signal.minimum !== undefined && physValue < signal.minimum) { + // console.log('physValue', physValue,signal.minimum,signal.attributes,signal.maximum) + // return // 如果物理值小于最小值,不更新信号 + // } + // if (signal.maximum !== undefined && physValue > signal.maximum) { + // console.log('physValue', physValue,signal.minimum,signal.attributes,signal.maximum) + // return // 如果物理值大于最大值,不更新信号 + // } + // } + } + + // 所有检查都通过后,更新信号值 + signal.value = rawValue.toString() + if (signal.is_float) { + signal.physValue = Number.isInteger(physValue) ? `${physValue}.0` : physValue.toString() + } else { + signal.physValue = physValue.toString() + } + + // 更新物理值 + const vv = signal.values[signal.value] + if (vv) { + signal.physValue = vv + } +} + +export function getMessageData(message: Message): Buffer { + const data = Buffer.alloc(message.length) + const signals = message.signals || [] + const muxValues: Record = {} + + // 1. Process multiplexers in dependency order (canmatrix-style hierarchical mux) + const multiplexers = signals.filter((s) => s.is_multiplexer) + const getMuxerDepth = (s: Signal): number => { + if (!s.muxer_for_signal) return 0 + const parent = signals.find((x) => x.name === s.muxer_for_signal) + return parent ? getMuxerDepth(parent) + 1 : 0 + } + multiplexers + .sort((a, b) => getMuxerDepth(a) - getMuxerDepth(b)) + .forEach((signal) => { + if (signal.value === undefined) return + const parentMux = signal.muxer_for_signal + if (!parentMux) { + writeSignalToBuffer(signal, data) + muxValues[signal.name] = Number(signal.value) + } else { + const parentVal = muxValues[parentMux] + if (parentVal !== undefined && isMuxMatch(signal, parentVal)) { + writeSignalToBuffer(signal, data) + muxValues[signal.name] = Number(signal.value) + } + } + }) + + // 2. Process multiplexed and normal signals + signals.forEach((signal) => { + if (signal.is_multiplexer) return + if (signal.value === undefined) return + + const muxerName = signal.muxer_for_signal + if (!muxerName) { + writeSignalToBuffer(signal, data) + return + } + + const muxVal = muxValues[muxerName] + if (muxVal !== undefined && isMuxMatch(signal, muxVal)) { + writeSignalToBuffer(signal, data) + } + }) + + return data +} + +// 将信号写入缓冲区的辅助函数 +function writeSignalToBuffer(signal: Signal, data: Buffer) { + let rawValue = Number(signal.value) + if (rawValue === undefined) return + + const maxValue = Math.pow(2, signal.bit_length) - 1 + rawValue = Math.min(rawValue, maxValue) + + if (!signal.is_big_endian) { + // Intel格式 (Little Endian) + let startByte = Math.floor(signal.start_bit / 8) + let startBitInByte = signal.start_bit % 8 + let remainingBits = signal.bit_length + let valueIndex = 0 + + while (remainingBits > 0) { + if (startByte >= data.length) break + + const bitsInThisByte = Math.min(8 - startBitInByte, remainingBits) + const mask = (1 << bitsInThisByte) - 1 + const value = (rawValue >> valueIndex) & mask + + data[startByte] &= ~(mask << startBitInByte) + data[startByte] |= value << startBitInByte + + remainingBits -= bitsInThisByte + valueIndex += bitsInThisByte + startByte += 1 + startBitInByte = 0 + } + } else { + // Motorola格式 (Big Endian) - 根据实际测试数据修正 + let currentBit = signal.start_bit // 从startBit开始,这是LSB的位置 + let remainingBits = signal.bit_length + let valueShift = 0 // 用于从value中提取bit的偏移量 + + while (remainingBits > 0) { + const currentByte = Math.floor(currentBit / 8) + const bitInByte = currentBit % 8 + + if (currentByte < 0 || currentByte >= data.length) break + + // 从value中提取当前bit + const bitValue = (rawValue >> valueShift) & 1 + + // 清除目标bit并设置新值 + const bitMask = 1 << bitInByte + data[currentByte] &= ~bitMask + if (bitValue) { + data[currentByte] |= bitMask + } + + remainingBits-- + valueShift++ + + // Motorola格式的bit遍历规则 + if (bitInByte === 7) { + // 当前在byte的最高位,跳转到前一个byte的最低位 + currentBit -= 15 // 从bit 39跳转到bit 24 + } else { + // 在byte内向高位移动 + currentBit++ + } + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/export.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/export.vue new file mode 100644 index 0000000..37aadff --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/export.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/index.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/index.vue new file mode 100644 index 0000000..c51c101 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/index.vue @@ -0,0 +1,543 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/overfiew.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/overfiew.vue new file mode 100644 index 0000000..756e86c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/overfiew.vue @@ -0,0 +1,634 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/package.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/package.json new file mode 100644 index 0000000..71258a2 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/package.json @@ -0,0 +1,7 @@ +{ + "type": "module", + "scripts": { + "build": "tsx gen_dts_signature.ts" + } +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/valTable.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/valTable.vue new file mode 100644 index 0000000..2dabed6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/dbc/valTable.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/calc.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/calc.ts new file mode 100644 index 0000000..c709839 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/calc.ts @@ -0,0 +1,235 @@ +import { Frame, LDF, SignalEncodeType } from '../ldfParse' + +export function getPhysicalValue( + rawValue: number, + encodingTypes: SignalEncodeType['encodingTypes'], + db: LDF +): { numVal?: number; strVal?: string; usedEncode?: SignalEncodeType['encodingTypes'][0] } { + // 遍历所有编码类型 + const result: { + numVal?: number + strVal?: string + usedEncode?: SignalEncodeType['encodingTypes'][0] + } = { + numVal: undefined, + strVal: undefined, + usedEncode: undefined + } + for (const encodingType of encodingTypes) { + switch (encodingType.type) { + case 'physicalValue': { + if (encodingType.physicalValue) { + const { minValue, maxValue, scale, offset } = encodingType.physicalValue + if (rawValue >= minValue && rawValue <= maxValue) { + const physValue = Number((scale * rawValue + offset).toFixed(3)) + const tt = encodingType.physicalValue.textInfo + ? `${physValue}${encodingType.physicalValue.textInfo}` + : undefined + result.numVal = physValue + result.strVal = tt + result.usedEncode = encodingType + } + } + break + } + case 'logicalValue': { + if (encodingType.logicalValue && encodingType.logicalValue.signalValue === rawValue) { + result.strVal = encodingType.logicalValue.textInfo || '' + result.usedEncode = encodingType + } + break + } + case 'bcdValue': { + // BCD编码:每4位表示一个十进制数字 + + ;((result.numVal = rawValue + .toString() + .split('') + .map(Number) + .reduce((acc, digit) => (acc << 4) | digit, 0)), + (result.usedEncode = encodingType)) + + break + } + case 'asciiValue': { + // ASCII编码:直接转换为字符串 + result.strVal = rawValue.toString() + result.usedEncode = encodingType + break + } + } + } + // 如果没有找到匹配的编码,返回原始值 + return result +} + +export function getRawValue( + physValue: string, + encodingTypes: SignalEncodeType['encodingTypes'], + db: LDF +): { value?: number; usedEncode?: SignalEncodeType['encodingTypes'][0] } { + // 遍历所有编码类型 + for (const encodingType of encodingTypes) { + switch (encodingType.type) { + case 'physicalValue': { + if (encodingType.physicalValue && !Number.isNaN(Number(physValue))) { + const { minValue, maxValue, scale, offset } = encodingType.physicalValue + // 反向计算:raw = (phys - offset) / scale + const rawValue = (Number(physValue) - offset) / scale + // 检查计算出的raw值是否在有效范围内 + if (rawValue >= minValue && rawValue <= maxValue) { + return { value: Math.round(rawValue), usedEncode: encodingType } + } + } + break + } + case 'logicalValue': { + if (encodingType.logicalValue) { + // 如果是字符串,检查是否匹配文本信息 + if (typeof physValue === 'string' && encodingType.logicalValue.textInfo === physValue) { + return { value: encodingType.logicalValue.signalValue, usedEncode: encodingType } + } + // 如果是数字,检查是否匹配信号值 + if ( + typeof physValue === 'number' && + encodingType.logicalValue.signalValue === physValue + ) { + return { value: encodingType.logicalValue.signalValue, usedEncode: encodingType } + } + } + break + } + case 'bcdValue': { + // BCD编码反向转换:将数字转换为BCD格式 + + return { value: parseInt(Number(physValue).toString(16), 10), usedEncode: encodingType } + + break + } + case 'asciiValue': { + // ASCII编码反向转换:将字符串转换为数字 + if (typeof physValue === 'string') { + return { value: parseInt(physValue, 10), usedEncode: encodingType } + } + break + } + } + } + // 如果没有找到匹配的编码,返回undefined + return {} +} + +export function writeMessageData(frame: Frame, data: Buffer, db: LDF) { + for (const signal of frame.signals) { + // Find signal definition + const signalDef = db.signals[signal.name] + if (!signalDef) continue + + // Calculate signal value from raw data + let value: number | string = 0 + const startBit = signal.offset + const length = signalDef.signalSizeBits + + if (signalDef.singleType === 'ByteArray') { + // Handle byte array type signals + const startByte = Math.floor(startBit / 8) + const byteLength = Math.ceil(length / 8) + const bitOffset = startBit % 8 + + if (bitOffset === 0) { + // 如果是字节对齐的情况 + const tempBuffer = Buffer.alloc(8) + for (let i = 0; i < byteLength && startByte + i < data.length; i++) { + tempBuffer[i] = data[startByte + i] + } + + if (length <= 8) { + value = tempBuffer[0] + } else if (length <= 16) { + value = tempBuffer.readUInt16BE(0) + } else if (length <= 24) { + value = (tempBuffer.readUInt16BE(0) << 8) | tempBuffer[2] + } else if (length <= 32) { + value = tempBuffer.readUInt32BE(0) + } else { + // 超过32位用16进制字符串表示 + value = tempBuffer.subarray(0, byteLength).toString('hex') + signalDef.value = Array.prototype.slice.call(tempBuffer.subarray(0, byteLength), 0) + } + } else { + // 非字节对齐的情况 + let tempBuffer = Buffer.alloc(8) + for (let i = 0; i < byteLength && startByte + i < data.length; i++) { + const currentByte = data[startByte + i] + const nextByte = startByte + i + 1 < data.length ? data[startByte + i + 1] : 0 + + // 组合当前字节和下一个字节的bits + tempBuffer[i] = ((currentByte >> bitOffset) | (nextByte << (8 - bitOffset))) & 0xff + } + //截断 + tempBuffer = tempBuffer.subarray(0, byteLength) + //反转 + tempBuffer = tempBuffer.reverse() + if (length <= 8) { + value = tempBuffer[0] + } else if (length <= 16) { + value = tempBuffer.readUInt16BE(0) + } else if (length <= 24) { + value = (tempBuffer.readUInt16BE(0) << 8) | tempBuffer[2] + } else if (length <= 32) { + value = tempBuffer.readUInt32BE(0) + } else { + // 超过32位用16进制字符串表示 + value = tempBuffer.subarray(0, byteLength).toString('hex') + signalDef.value = Array.prototype.slice.call(tempBuffer.subarray(0, byteLength), 0) + } + } + + // 对于数字类型,需要清除多余的位 + if (typeof value === 'number') { + const mask = (1 << length) - 1 + value &= mask + signalDef.value = value + } + signalDef.physValue = value + } else { + // Handle scalar type signals - process bit by bit + let tempValue = 0 + + for (let i = 0; i < length; i++) { + const targetBit = startBit + i + const byteOffset = Math.floor(targetBit / 8) + const bitOffset = targetBit % 8 + + if (byteOffset < data.length) { + // 获取对应位的值 + if ((data[byteOffset] & (1 << bitOffset)) !== 0) { + tempValue |= 1 << i + } + } + } + signalDef.value = tempValue + signalDef.physValue = tempValue + //check enum + for (const encodeKey of Object.keys(db.signalRep)) { + if (db.signalRep[encodeKey].includes(signalDef.signalName)) { + const encodeInfo = db.signalEncodeTypes[encodeKey] + // 直接使用所有编码类型进行转换 + const { numVal, strVal, usedEncode } = getPhysicalValue( + tempValue, + encodeInfo.encodingTypes, + db + ) + + if (usedEncode) { + signalDef.physValueEnum = strVal + if (numVal !== undefined) { + signalDef.physValue = numVal + } + } + break + } + } + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editEncode.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editEncode.vue new file mode 100644 index 0000000..121b762 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editEncode.vue @@ -0,0 +1,456 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editFrame.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editFrame.vue new file mode 100644 index 0000000..cc28e95 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editFrame.vue @@ -0,0 +1,529 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editNode.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editNode.vue new file mode 100644 index 0000000..350b26f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editNode.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editSchedule.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editSchedule.vue new file mode 100644 index 0000000..cd72bf7 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editSchedule.vue @@ -0,0 +1,1472 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editSignal.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editSignal.vue new file mode 100644 index 0000000..d049275 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/editSignal.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/encode.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/encode.vue new file mode 100644 index 0000000..bdb8955 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/encode.vue @@ -0,0 +1,334 @@ + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/file.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/file.vue new file mode 100644 index 0000000..e3e9948 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/file.vue @@ -0,0 +1,77 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/frame.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/frame.vue new file mode 100644 index 0000000..d29138d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/frame.vue @@ -0,0 +1,552 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/general.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/general.vue new file mode 100644 index 0000000..369dfdf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/general.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/index.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/index.vue new file mode 100644 index 0000000..b642a11 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/index.vue @@ -0,0 +1,406 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/ldf.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/ldf.ldf new file mode 100644 index 0000000..b7f0135 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/ldf.ldf @@ -0,0 +1,207 @@ + +LIN_description_file; +LIN_protocol_version = "{{this.global.LIN_protocol_version}}"; +LIN_language_version = "{{this.global.LIN_language_version}}"; +LIN_speed = {{this.global.LIN_speed}} kbps; +{{#if this.global.Channel_name}}Channel_name = {{this.global.Channel_name}};{{/if}} + + +Nodes { + Master: {{this.node.master.nodeName}}, {{this.node.master.timeBase}} ms, {{this.node.master.jitter}} ms ; + Slaves: {{#each this.node.salveNode as |item index|}}{{item}}{{#unless @last}}, {{/unless}}{{/each}} ; +} + +Signals { +{{#each this.signals}} + {{this.signalName}}: {{this.signalSizeBits}}, {{#eq this.singleType 'Scalar'}}{{this.initValue}}{{else}}{ {{#each this.initValue as |item index|}}{{item}}{{#unless @last}}, {{/unless}}{{/each}} }{{/eq}}, {{this.punishedBy}}, {{#each this.subscribedBy as |item index|}}{{item}}{{#unless @last}}, {{/unless}}{{/each}} ; +{{/each}} +} + +{{#if (objLen this.signalGroups)}} +Signal_groups { +{{#each this.signalGroups}} + {{this.name}}:{{this.size}} { + {{#each this.signals}} + {{this.name}}, {{this.offset}}; + {{/each}} + } +{{/each}} +} +{{/if}} + +Diagnostic_signals { + MasterReqB0: 8, 0 ; + MasterReqB1: 8, 0 ; + MasterReqB2: 8, 0 ; + MasterReqB3: 8, 0 ; + MasterReqB4: 8, 0 ; + MasterReqB5: 8, 0 ; + MasterReqB6: 8, 0 ; + MasterReqB7: 8, 0 ; + SlaveRespB0: 8, 0 ; + SlaveRespB1: 8, 0 ; + SlaveRespB2: 8, 0 ; + SlaveRespB3: 8, 0 ; + SlaveRespB4: 8, 0 ; + SlaveRespB5: 8, 0 ; + SlaveRespB6: 8, 0 ; + SlaveRespB7: 8, 0 ; +} + + + +Frames { +{{#each this.frames}} + {{this.name}}: {{this.id}}, {{this.publishedBy}}, {{this.frameSize}} { + {{#each this.signals}} + {{this.name}}, {{this.offset}} ; + {{/each}} + } +{{/each}} +} + +{{#if (objLen this.sporadicFrames)}} +Sporadic_frames { +{{#each this.sporadicFrames}} + {{this.name}}: {{#each this.frameNames as |item index|}}{{item}}{{#unless @last}}, {{/unless}}{{/each}} ; +{{/each}} +} +{{/if}} + +{{#if (objLen this.eventTriggeredFrames)}} +Event_triggered_frames { +{{#each this.eventTriggeredFrames}} + {{this.name}}: {{this.schTableName}}, {{this.frameId}}, {{#each this.frameNames as |item index|}}{{item}}{{#unless @last}}, {{/unless}}{{/each}} ; +{{/each}} +} +{{/if}} + +Diagnostic_frames { + MasterReq: 0x3c { + MasterReqB0, 0 ; + MasterReqB1, 8 ; + MasterReqB2, 16 ; + MasterReqB3, 24 ; + MasterReqB4, 32 ; + MasterReqB5, 40 ; + MasterReqB6, 48 ; + MasterReqB7, 56 ; + } + SlaveResp: 0x3d { + SlaveRespB0, 0 ; + SlaveRespB1, 8 ; + SlaveRespB2, 16 ; + SlaveRespB3, 24 ; + SlaveRespB4, 32 ; + SlaveRespB5, 40 ; + SlaveRespB6, 48 ; + SlaveRespB7, 56 ; + } +} + +Node_attributes { +{{#each this.nodeAttrs}} + {{@key}}{ + LIN_protocol = "{{this.LIN_protocol}}" ; + configured_NAD = {{this.configured_NAD}} ; +{{#isDefined this.initial_NAD}} + initial_NAD = {{this.initial_NAD}} ; +{{/isDefined}} + product_id = {{this.supplier_id}}, {{this.function_id}}{{#isDefined this.variant}}, {{this.variant}}{{/isDefined}} ; + response_error = {{this.response_error}} ; +{{#isDefined this.fault_state_signals}} +{{#gte this.fault_state_signals.length 1}} + fault_state_signals = {{#each this.fault_state_signals as |item index|}}{{item}}{{#unless @last}}, {{/unless}}{{/each}} ; +{{/gte}} +{{/isDefined}} +{{#isDefined this.P2_min}} + P2_min = {{this.P2_min}} ms ; +{{/isDefined}} +{{#isDefined this.ST_min}} + ST_min = {{this.ST_min}} ms ; +{{/isDefined}} +{{#isDefined this.N_As_timeout}} + N_As_timeout = {{this.N_As_timeout}} ms ; +{{/isDefined}} +{{#isDefined this.N_Cr_timeout}} + N_Cr_timeout = {{this.N_Cr_timeout}} ms ; +{{/isDefined}} +{{#isDefined this.configFrames}} + configurable_frames { +{{#each this.configFrames}} + {{this}} ; +{{/each}} + } +{{/isDefined}} + } +{{/each}} +} + +Schedule_tables { +{{#each this.schTables}} + {{this.name}} { +{{#each this.entries}} +{{#if this.isCommand}} +{{#eq this.name 'AssignFrameId'}} + {{this.name}} { {{this.AssignFrameId.nodeName}}, {{this.AssignFrameId.frameName}} } delay {{this.delay}} ms ; +{{/eq}} +{{#eq this.name 'AssignNAD'}} + {{this.name}} { {{this.AssignNAD.nodeName}} } delay {{this.delay}} ms ; +{{/eq}} +{{#eq this.name 'ConditionalChangeNAD'}} + {{this.name}} { {{this.ConditionalChangeNAD.nad}}, {{this.ConditionalChangeNAD.id}}, {{this.ConditionalChangeNAD.byte}}, {{this.ConditionalChangeNAD.mask}}, {{this.ConditionalChangeNAD.inv}}, {{this.ConditionalChangeNAD.newNad}} } delay {{this.delay}} ms ; +{{/eq}} +{{#eq this.name 'DataDump'}} + {{this.name}} { {{this.DataDump.nodeName}}, {{this.DataDump.D1}}, {{this.DataDump.D2}}, {{this.DataDump.D3}}, {{this.DataDump.D4}}, {{this.DataDump.D5}} } delay {{this.delay}} ms ; +{{/eq}} +{{#eq this.name 'SaveConfiguration'}} + {{this.name}} { {{this.AssignNASaveConfigurationD.nodeName}} } delay {{this.delay}} ms ; +{{/eq}} +{{#eq this.name 'AssignFrameIdRange'}} + {{this.name}} { {{this.AssignFrameIdRange.nodeName}}, {{this.AssignFrameIdRange.frameIndex}} {{#each this.AssignFrameIdRange.framePID}}, {{this}}{{/each}} } delay {{this.delay}} ms ; +{{/eq}} +{{#eq this.name 'FreeFormat'}} + {{this.name}} { {{#each this.FreeFormat.D as |item index|}}{{item}}{{#unless @last}}, {{/unless}}{{/each}} } delay {{this.delay}} ms ; +{{/eq}} +{{#eq this.name 'DiagnosticMasterReq'}} + MasterReq delay {{this.delay}} ms ; +{{/eq}} +{{#eq this.name 'DiagnosticSlaveResp'}} + SlaveResp delay {{this.delay}} ms ; +{{/eq}} +{{else}} + {{this.name}} delay {{this.delay}} ms ; +{{/if}} +{{/each}} + } +{{/each}} +} + + +Signal_encoding_types { +{{#each this.signalEncodeTypes}} + {{this.name}} { +{{#each this.encodingTypes}} +{{#eq this.type 'physicalValue'}} + physical_value, {{this.physicalValue.minValue}}, {{this.physicalValue.maxValue}}, {{this.physicalValue.scale}}, {{this.physicalValue.offset}}{{#isTruthy this.physicalValue.textInfo}}, "{{this.physicalValue.textInfo}}"{{/isTruthy}} ; +{{/eq}} +{{#eq this.type 'logicalValue'}} + logical_value, {{this.logicalValue.signalValue}}{{#isTruthy this.logicalValue.textInfo}}, "{{this.logicalValue.textInfo}}"{{/isTruthy}} ; +{{/eq}} +{{#eq this.type 'asciiValue'}} + ascii_value ; +{{/eq}} +{{#eq this.type 'bcdValue'}} + bcd_value ; +{{/eq}} +{{/each}} + } +{{/each}} +} + +Signal_representation { +{{#each this.signalRep}} + {{@key}}: {{#each this as |item index|}}{{item}}{{#unless @last}}, {{/unless}}{{/each}} ; +{{/each}} +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/node.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/node.vue new file mode 100644 index 0000000..e36f0af --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/node.vue @@ -0,0 +1,624 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/sch.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/sch.vue new file mode 100644 index 0000000..231f34a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/sch.vue @@ -0,0 +1,462 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/signal.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/signal.vue new file mode 100644 index 0000000..0a975e0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/signal.vue @@ -0,0 +1,586 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/syncNodeProtocol.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/syncNodeProtocol.ts new file mode 100644 index 0000000..67ae394 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldf/syncNodeProtocol.ts @@ -0,0 +1,61 @@ +import { LDF } from '../ldfParse' + +export type NodeProtocolSyncDecision = 'none' | 'auto' | 'confirm' + +function nodeAttrEntries(ldf: LDF) { + return Object.entries(ldf.nodeAttrs || {}) +} + +/** + * Returns node names whose Protocol differs from the given LIN version. + */ +export function getNodesNeedingProtocolSync(ldf: LDF, version: string): string[] { + return nodeAttrEntries(ldf) + .filter(([, attr]) => attr && attr.LIN_protocol !== version) + .map(([name]) => name) +} + +/** + * True when at least one node Protocol is set and differs from `expectedVersion`. + * Used to detect nodes that were customized away from the previous global version. + */ +export function hasCustomNodeProtocols(ldf: LDF, expectedVersion?: string): boolean { + return nodeAttrEntries(ldf).some( + ([, attr]) => Boolean(attr?.LIN_protocol) && attr.LIN_protocol !== expectedVersion + ) +} + +/** + * Decide how a global LIN protocol version change should affect node Protocol values. + * + * - `none`: every node already matches the new version (or there are no nodes) + * - `auto`: all nodes still follow the previous global version (or are empty) — sync silently + * - `confirm`: at least one node was customized to a different version — ask before overwriting + */ +export function getNodeProtocolSyncDecision( + ldf: LDF, + newVersion: string, + previousGlobalVersion?: string +): NodeProtocolSyncDecision { + if (!newVersion) { + return 'none' + } + if (getNodesNeedingProtocolSync(ldf, newVersion).length === 0) { + return 'none' + } + if (hasCustomNodeProtocols(ldf, previousGlobalVersion)) { + return 'confirm' + } + return 'auto' +} + +/** + * Set every node's Protocol to `version`. + */ +export function syncAllNodeProtocols(ldf: LDF, version: string): void { + for (const [, attr] of nodeAttrEntries(ldf)) { + if (attr) { + attr.LIN_protocol = version + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldfParse.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldfParse.ts new file mode 100644 index 0000000..d7f90ef --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ldfParse.ts @@ -0,0 +1,1840 @@ +import { CstChildrenDictionary, CstNode, CstParser, IToken, Lexer, createToken } from 'chevrotain' +import i18next from 'i18next' +import { LinSignal } from 'nodeCan/lin' + +export interface GlobalDef { + LIN_protocol_version: string + LIN_language_version: string + LIN_speed: number + schTimeout?: number + Channel_name?: string /* If signal name is "signal1" and Channel_name = "net1" in the LDF, then generated signal name will be "signal1_net1".*/ +} + +export function getConfigFrames(ldfObj: LDF, nodeName: string): string[] { + const list: string[] = [] + for (const sig of Object.keys(ldfObj.signals)) { + if (ldfObj.signals[sig].punishedBy == nodeName) { + list.push(sig) + } else if (ldfObj.signals[sig].subscribedBy.indexOf(nodeName) != -1) { + list.push(sig) + } + } + const frames: string[] = [] + for (const frame of Object.keys(ldfObj.frames)) { + const sigs = ldfObj.frames[frame].signals + for (const s of list) { + sigs.forEach((sig) => { + if (sig.name == s) { + frames.push(frame) + } + }) + } + } + + const lastFrames = [...new Set(frames)] + for (const e of Object.keys(ldfObj.eventTriggeredFrames)) { + for (const f of ldfObj.eventTriggeredFrames[e].frameNames) { + lastFrames.forEach((frame) => { + if (frame == f) { + lastFrames.push(e) + } + }) + } + } + return [...new Set(lastFrames)] +} + +export interface SlaveNode { + nodeName: string +} + +export interface MasterNode { + nodeName: string + timeBase: number + jitter: number +} + +export interface NodeAttrDef { + LIN_protocol: string + configured_NAD: number + initial_NAD?: number + supplier_id: number + function_id: number + variant?: number + response_error?: string + fault_state_signals?: string[] + P2_min?: number + ST_min?: number + N_As_timeout?: number + N_Cr_timeout?: number + configFrames?: string[] +} + +export interface CompositeNode { + compositeNode: string + logicalNodes: string[] +} + +export interface NodeDef { + master: MasterNode + salveNode: string[] +} + +export interface SignalGroupDef { + name: string + offset: number +} + +export interface SignalGroupSDef { + name: string + size: number + signals: SignalGroupDef[] +} + +export interface Frame { + name: string + id: number + publishedBy: string + frameSize: number + signals: { name: string; offset: number }[] +} + +export interface SporadicFrames { + name: string + frameNames: string[] +} + +export interface EventTriggeredFrame { + name: string + schTableName: string + frameId: number + frameNames: string[] +} + +export enum Command { + MasterReq, + SlaveResp, + AssignNAD, + ConditionalChangeNAD, + DataDump, + SaveConfiguration, + AssignFrameIdRange, + FreeFormat, + AssignFrameId +} + +export interface SchTable { + name: string + entries: { + name: string + delay: number + isCommand: boolean + AssignNAD?: { + nodeName: string + } + ConditionalChangeNAD?: { + nad: number + id: number + byte: number + mask: number + inv: number + newNad: number + } + DataDump?: { + nodeName: string + D1: number + D2: number + D3: number + D4: number + D5: number + } + SaveConfiguration?: { + nodeName: string + } + AssignFrameIdRange?: { + nodeName: string + frameIndex: number + framePID?: number[] + } + FreeFormat?: { + D: number[] + } + AssignFrameId?: { + nodeName: string + frameName: string + } + }[] +} + +export interface SignalEncodeType { + name: string + encodingTypes: { + type: 'logicalValue' | 'physicalValue' | 'bcdValue' | 'asciiValue' + logicalValue?: { + signalValue: number + textInfo?: string + } + physicalValue?: { + minValue: number + maxValue: number + scale: number + offset: number + textInfo?: string + } + }[] +} + +export interface LDF { + id: string + name: string + global: GlobalDef + node: NodeDef + nodeAttrs: Record + composite?: Record + signals: Record + signalGroups: SignalGroupSDef[] + frames: Record + sporadicFrames: Record + eventTriggeredFrames: Record + schTables: SchTable[] + signalEncodeTypes: Record + signalRep: Record +} +export type { LinSignal as SignalDef } +const WhiteSpace = createToken({ + name: 'WhiteSpace', + pattern: /\s+/, + group: Lexer.SKIPPED +}) + +// 添加注释token处理 +const BlockComment = createToken({ + name: 'BlockComment', + pattern: /\/\*[\s\S]*?\*\//, + group: Lexer.SKIPPED +}) + +const LineComment = createToken({ + name: 'LineComment', + pattern: /\/\/[^\n]*/, + group: Lexer.SKIPPED +}) + +const Header = createToken({ name: 'Header', pattern: /LIN_description_file\s*/ }) +const Version = createToken({ name: 'Version', pattern: /LIN_protocol_version\s+/ }) +const LVersion = createToken({ name: 'LVersion', pattern: /LIN_language_version\s+/ }) +const Speed = createToken({ name: 'Speed', pattern: /LIN_speed\s+/ }) +const CharString = createToken({ name: 'CharString', pattern: /"([^"]*)"/ }) +const Equal = createToken({ name: 'Equal', pattern: /=/ }) +const EOF = createToken({ name: 'EOF', pattern: /\s*;/ }) +const KBPS = createToken({ name: 'KBPS', pattern: /\s+kbps/ }) +const Interger = createToken({ + name: 'Interger', + pattern: /(-?\s*\d+\.\d+|-?0x[a-fA-F0-9]+|-?\d+)/ +}) + +// const Interger = createToken({ name: "Interger", pattern: /\b(-?\d+|0x[a-fA-F0-9]+)\b/ }) +const Channel_name = createToken({ name: 'Channel_name', pattern: /[C|c]hannel_name\s+/ }) +const Identifier = createToken({ name: 'Identifier', pattern: /[a-zA-Z_][a-zA-Z_0-9]*/ }) +const Nodes = createToken({ name: 'Nodes', pattern: /[N|n]odes\s*/ }) +const Node_attributes = createToken({ name: 'Node_attributes', pattern: /[N|n]ode_attributes\s*/ }) +const LCurly = createToken({ name: 'LCurly', pattern: /{/ }) +const RCurly = createToken({ name: 'RCurly', pattern: /}/ }) +const Comma = createToken({ name: 'Comma', pattern: /,\s*/ }) +const Colon = createToken({ name: 'Colon', pattern: /:/ }) +const Master = createToken({ name: 'Master', pattern: /[M|m]aster\s*:\s*/ }) +const Slave = createToken({ name: 'Slave', pattern: /[S|s]laves\s*:\s*/ }) +const MS = createToken({ name: 'MS', pattern: /\s+ms/ }) +const DELAY = createToken({ name: 'DELAY', pattern: /\s*delay\s+/ }) +const product_id = createToken({ name: 'product_id', pattern: /product_id\s+/ }) +const response_error = createToken({ name: 'response_error', pattern: /response_error\s+/ }) +const fault_state_signals = createToken({ + name: 'fault_state_signals', + pattern: /fault_state_signals\s+/ +}) +const P2_min = createToken({ name: 'P2_min', pattern: /P2_min\s+/ }) +const ST_min = createToken({ name: 'ST_min', pattern: /ST_min\s+/ }) +const N_As_timeout = createToken({ name: 'N_As_timeout', pattern: /N_As_timeout\s+/ }) +const N_Cr_timeout = createToken({ name: 'N_Cr_timeout', pattern: /N_Cr_timeout\s+/ }) +const configurable_frames = createToken({ + name: 'configurable_frames', + pattern: /configurable_frames\s*/ +}) +const LIN_protocol = createToken({ name: 'LIN_protocol', pattern: /LIN_protocol\s+/ }) +const configured_NAD = createToken({ name: 'configured_NAD', pattern: /configured_NAD\s+/ }) +const initial_NAD = createToken({ name: 'initial_NAD', pattern: /initial_NAD\s+/ }) +const composite = createToken({ name: 'composite', pattern: /[C|c]omposite\s+/ }) +const configuration = createToken({ name: 'configuration', pattern: /[C|c]onfiguration\s+/ }) +const Signals = createToken({ name: 'Signals', pattern: /Signals\s*/ }) +const Diagnostic_signals = createToken({ + name: 'Diagnostic_signals', + pattern: /Diagnostic_signals\s+/ +}) +const DiagReq = createToken({ name: 'DiagReq', pattern: /(Master|Slave)(Req|Resp)B[0-7]\s*:\s*/ }) +const Frames = createToken({ name: 'Frames', pattern: /Frames\s*/ }) +const Signal_groups = createToken({ name: 'Signal_groups', pattern: /Signal_groups\s+/ }) +const Sporadic_frames = createToken({ name: 'Sporadic_frames', pattern: /Sporadic_frames\s+/ }) +const Event_triggered_frames = createToken({ + name: 'Event_triggered_frames', + pattern: /Event_triggered_frames\s+/ +}) +const Diagnostic_frames = createToken({ + name: 'Diagnostic_frames', + pattern: /Diagnostic_frames\s+/ +}) +const DiagReqFrame = createToken({ + name: 'DiagReqFrame', + pattern: + /((MasterReq\s*:\s*(0x3c|60|0x3C|0X3C|0X3c)\s*)|(SlaveResp\s*:\s*(0x3d|61|0x3D|0X3D|0X3d)\s*))/ +}) +const SubDiagReq = createToken({ + name: 'SubDiagReq', + pattern: /(Master|Slave)(Req|Resp)B[0-7]\s*,\s*/ +}) +const Schedule_tables = createToken({ name: 'Schedule_tables', pattern: /Schedule_tables\s+/ }) +const MasterReqSlaveResp = createToken({ + name: 'MasterReqSlaveResp', + pattern: /(MasterReq|SlaveResp)\s+/ +}) +const AssignNAD = createToken({ name: 'AssignNAD', pattern: /AssignNAD\s+/ }) +const ConditionalChangeNAD = createToken({ + name: 'ConditionalChangeNAD', + pattern: /ConditionalChangeNAD\s+/ +}) +const DataDump = createToken({ name: 'DataDump', pattern: /DataDump\s+/ }) +const SaveConfiguration = createToken({ + name: 'SaveConfiguration', + pattern: /SaveConfiguration\s+/ +}) +const AssignFrameIdRange = createToken({ + name: 'AssignFrameIdRange', + pattern: /AssignFrameIdRange\s+/ +}) +const FreeFormat = createToken({ name: 'FreeFormat', pattern: /FreeFormat\s+/ }) +const AssignFrameId = createToken({ name: 'AssignFrameId', pattern: /AssignFrameId\s+/ }) +const Signal_encoding_types = createToken({ + name: 'Signal_encoding_types', + pattern: /Signal_encoding_types\s+/ +}) +const logical_value = createToken({ name: 'logical_value', pattern: /logical_value,\s*/ }) +const physical_value = createToken({ name: 'physical_value', pattern: /physical_value,\s*/ }) +const bcd_value = createToken({ name: 'bcd_value', pattern: /bcd_value\s+/ }) +const ascii_value = createToken({ name: 'ascii_value', pattern: /ascii_value\s+/ }) +const Signal_representation = createToken({ + name: 'Signal_representation', + pattern: /Signal_representation\s+/ +}) + +const allTokens = [ + // 注释token必须放在最前面,以确保它们有更高的优先级 + BlockComment, + LineComment, + Header, + Version, + LVersion, + Speed, + CharString, + Equal, + EOF, + KBPS, + Interger, + Channel_name, + Node_attributes, + composite, + configuration, + Signals, + Diagnostic_signals, + DiagReq, + Frames, + Signal_groups, + Sporadic_frames, + Event_triggered_frames, + Diagnostic_frames, + DiagReqFrame, + SubDiagReq, + Schedule_tables, + DELAY, + MasterReqSlaveResp, + AssignNAD, + ConditionalChangeNAD, + Signal_encoding_types, + logical_value, + physical_value, + bcd_value, + ascii_value, + Signal_representation, + DataDump, + SaveConfiguration, + AssignFrameIdRange, + FreeFormat, + AssignFrameId, + configured_NAD, + initial_NAD, + LIN_protocol, + product_id, + response_error, + fault_state_signals, + P2_min, + ST_min, + N_As_timeout, + N_Cr_timeout, + configurable_frames, + Nodes, + LCurly, + RCurly, + Comma, + Colon, + Master, + Slave, + MS, + Identifier, + WhiteSpace +] + +class LdfParser extends CstParser { + constructor() { + super(allTokens) + this.performSelfAnalysis() + } + /* LIN_description_file; */ + private header = this.RULE('HeaderClause', () => { + this.CONSUME(Header) + this.CONSUME(EOF) + }) + /* LIN_protocol_version = "2.2"; */ + private version = this.RULE('VersionClause', () => { + this.CONSUME(Version) + this.CONSUME(Equal) + this.CONSUME(CharString) + this.CONSUME(EOF) + }) + + /* LIN_language_version = "2.2"; */ + + private llversion = this.RULE('LVersionClause', () => { + this.CONSUME(LVersion) + this.CONSUME(Equal) + this.CONSUME(CharString) + this.CONSUME(EOF) + }) + /* LIN_speed = 19.2 kbps; */ + private speed = this.RULE('SpeedClause', () => { + this.CONSUME(Speed) + this.CONSUME(Equal) + this.CONSUME(Interger) + this.CONSUME(KBPS) + this.CONSUME(EOF) + }) + + private channel = this.RULE('ChannelClause', () => { + this.CONSUME(Channel_name) + this.CONSUME(Equal) + this.CONSUME(CharString) + this.CONSUME(EOF) + }) + + private nodes = this.RULE('NodesClause', () => { + this.CONSUME(Nodes) + this.CONSUME(LCurly) + this.CONSUME(Master) + this.CONSUME(Identifier) + this.CONSUME(Comma) + this.CONSUME(Interger) + this.CONSUME(MS) + this.CONSUME1(Comma) + this.CONSUME1(Interger) + this.CONSUME1(MS) + this.CONSUME(EOF) + this.CONSUME(Slave) + + this.AT_LEAST_ONE_SEP({ + SEP: Comma, + DEF: () => { + this.CONSUME1(Identifier) + } + }) + this.CONSUME1(EOF) + this.CONSUME(RCurly) + }) + private frameDefinition = this.RULE('frameDefinition', () => { + this.CONSUME(Identifier) + this.OPTION(() => { + this.CONSUME(Equal) + this.CONSUME(Interger) + }) + this.CONSUME(EOF) + }) + + private configurable_frames = this.RULE('configurable_framesClause', () => { + this.CONSUME(configurable_frames) + this.CONSUME(LCurly) + this.MANY(() => { + this.SUBRULE(this.frameDefinition) + }) + this.CONSUME(RCurly) + }) + + private product_id = this.RULE('product_idClause', () => { + this.CONSUME(product_id) + this.CONSUME(Equal) + this.CONSUME(Interger) + this.CONSUME(Comma) + this.CONSUME1(Interger) + this.OPTION(() => { + this.CONSUME1(Comma) + this.CONSUME2(Interger) + }) + + this.CONSUME2(EOF) + }) + + private response_error = this.RULE('response_errorClause', () => { + this.CONSUME(response_error) + this.CONSUME(Equal) + this.CONSUME(Identifier) + this.CONSUME(EOF) + }) + + private fault_state_signals = this.RULE('fault_state_signalsClause', () => { + this.CONSUME(fault_state_signals) + this.CONSUME(Equal) + this.AT_LEAST_ONE_SEP({ + SEP: Comma, + DEF: () => { + this.CONSUME(Identifier) + } + }) + this.CONSUME(EOF) + }) + + private P2_min = this.RULE('P2_minClause', () => { + this.CONSUME(P2_min) + this.CONSUME(Equal) + this.CONSUME(Interger) + this.CONSUME(MS) + this.CONSUME(EOF) + }) + + private ST_min = this.RULE('ST_minClause', () => { + this.CONSUME(ST_min) + this.CONSUME(Equal) + this.CONSUME(Interger) + this.CONSUME(MS) + this.CONSUME(EOF) + }) + + private N_As_timeout = this.RULE('N_As_timeoutClause', () => { + this.CONSUME(N_As_timeout) + this.CONSUME(Equal) + this.CONSUME(Interger) + this.CONSUME(MS) + this.CONSUME(EOF) + }) + + private N_Cr_timeout = this.RULE('N_Cr_timeoutClause', () => { + this.CONSUME(N_Cr_timeout) + this.CONSUME(Equal) + this.CONSUME(Interger) + this.CONSUME(MS) + this.CONSUME(EOF) + }) + + private LIN_protocol = this.RULE('LIN_protocolClause', () => { + this.CONSUME(LIN_protocol) + this.CONSUME(Equal) + this.OR([{ ALT: () => this.CONSUME(CharString) }, { ALT: () => this.CONSUME(Interger) }]) + this.CONSUME(EOF) + }) + + private configured_NAD = this.RULE('configured_NADClause', () => { + this.CONSUME(configured_NAD) + this.CONSUME(Equal) + this.CONSUME(Interger) + this.CONSUME(EOF) + }) + + private initial_NAD = this.RULE('initial_NADClause', () => { + this.CONSUME(initial_NAD) + this.CONSUME(Equal) + this.CONSUME(Interger) + this.CONSUME(EOF) + }) + + private composite_node = this.RULE('composite_nodeClause', () => { + this.CONSUME1(Identifier) + this.CONSUME1(LCurly) + // this.MANY2({ + + // DEF: () => { + // this.CONSUME3(Comma) + // this.CONSUME4(Identifier) + // } + // }) + this.AT_LEAST_ONE_SEP({ + SEP: Comma, + DEF: () => { + this.CONSUME2(Identifier) + } + }) + this.CONSUME2(EOF) + this.CONSUME1(RCurly) + }) + private configuration_name = this.RULE('configuration_nameClause', () => { + this.CONSUME(configuration) + this.CONSUME(Identifier) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.composite_node) + } + }) + this.CONSUME1(RCurly) + }) + /* + Composite { + Configuration ww { + wq { ws ; } + } + Configuration ww1 { + wq1 { ws1 ; } + wq2 { ws2 ; } + } +} + */ + private composite = this.RULE('compositeClause', () => { + this.CONSUME(composite) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.configuration_name) + } + }) + this.CONSUME(RCurly) + }) + + private node_attributes = this.RULE('Node_attributesClause', () => { + this.CONSUME(Node_attributes) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.CONSUME(Identifier) + this.CONSUME1(LCurly) + this.MANY1({ + DEF: () => { + this.OR([ + { ALT: () => this.SUBRULE(this.configured_NAD) }, + { ALT: () => this.SUBRULE(this.initial_NAD) }, + { ALT: () => this.SUBRULE(this.LIN_protocol) }, + { ALT: () => this.SUBRULE(this.product_id) }, + { ALT: () => this.SUBRULE(this.response_error) }, + { ALT: () => this.SUBRULE(this.fault_state_signals) }, + { ALT: () => this.SUBRULE(this.P2_min) }, + { ALT: () => this.SUBRULE(this.ST_min) }, + { ALT: () => this.SUBRULE(this.N_As_timeout) }, + { ALT: () => this.SUBRULE(this.N_Cr_timeout) }, + { ALT: () => this.SUBRULE(this.configurable_frames) } + ]) + } + }) + this.CONSUME1(RCurly) + } + }) + this.CONSUME(RCurly) + }) + + private initvalueArray = this.RULE('initvalueArrayClause', () => { + this.CONSUME2(LCurly) + this.AT_LEAST_ONE_SEP({ + SEP: Comma, + DEF: () => { + this.CONSUME3(Interger) + } + }) + this.CONSUME2(RCurly) + }) + + private signal = this.RULE('signalClause', () => { + this.CONSUME1(Identifier) + this.CONSUME1(Colon) + this.CONSUME1(Interger) //signal size + this.CONSUME1(Comma) + //init value + this.OR([ + { ALT: () => this.CONSUME2(Interger) }, + { + ALT: () => { + this.SUBRULE(this.initvalueArray) + } + } + ]) + this.CONSUME3(Comma) + //publisher + this.CONSUME2(Identifier) + //subscriber + this.MANY1({ + DEF: () => { + this.CONSUME4(Comma) + this.CONSUME3(Identifier) + } + }) + this.CONSUME1(EOF) + }) + + private Signals = this.RULE('SignalsClause', () => { + this.CONSUME(Signals) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.signal) + } + }) + this.CONSUME(RCurly) + }) + + private Diagnostic_signals = this.RULE('Diagnostic_signalsClause', () => { + this.CONSUME(Diagnostic_signals) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.CONSUME(DiagReq) + this.CONSUME(Interger) //signal size + this.CONSUME(Comma) + this.CONSUME1(Interger) + this.CONSUME(EOF) + } + }) + + this.CONSUME(RCurly) + }) + + /* + Signal_groups { + sg1:3 { + ss1 , 0; + ss2 , 1; + } + sg2:2 { + ss3 , 0; + ss4 , 1; + } +} +*/ + private Signal_group = this.RULE('Signal_groupClause', () => { + this.CONSUME2(Identifier) + this.CONSUME2(Comma) + this.CONSUME2(Interger) //group offset + this.CONSUME2(EOF) + }) + + private MSignal_group = this.RULE('MSignal_groupClause', () => { + this.CONSUME(Identifier) + this.CONSUME(Colon) + this.CONSUME(Interger) //group size + this.CONSUME1(LCurly) + this.MANY1({ + DEF: () => { + this.SUBRULE(this.Signal_group) + } + }) + this.CONSUME1(RCurly) + }) + + private Signal_groups = this.RULE('Signal_groupsClause', () => { + this.CONSUME(Signal_groups) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.MSignal_group) + } + }) + this.CONSUME(RCurly) + }) + + private subframeSignal = this.RULE('subframeSignalClause', () => { + this.CONSUME2(Identifier) //signal_name + this.CONSUME2(Comma) + this.CONSUME2(Interger) //signal_offset + this.CONSUME2(EOF) + }) + + private subframe = this.RULE('subframeClause', () => { + this.CONSUME(Identifier) //frame name + this.CONSUME(Colon) + this.CONSUME(Interger) //frame id + this.CONSUME(Comma) + this.CONSUME1(Identifier) //published_by + this.CONSUME1(Comma) + this.CONSUME1(Interger) //frame_size + this.CONSUME1(LCurly) + this.MANY1({ + DEF: () => { + this.SUBRULE(this.subframeSignal) + } + }) + this.CONSUME1(RCurly) + }) + + private frames = this.RULE('framesClause', () => { + this.CONSUME(Frames) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.subframe) + } + }) + this.CONSUME(RCurly) + }) + + private Sporadic_frame = this.RULE('Sporadic_frameClause', () => { + this.CONSUME(Identifier) //sporadic_frame_name + this.CONSUME(Colon) + this.AT_LEAST_ONE_SEP({ + SEP: Comma, + DEF: () => { + this.CONSUME2(Identifier) + } + }) + this.CONSUME(EOF) + }) + + private Sporadic_frames = this.RULE('Sporadic_framesClause', () => { + this.CONSUME(Sporadic_frames) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.Sporadic_frame) + } + }) + this.CONSUME(RCurly) + }) + + private Event_triggered_frame = this.RULE('Event_triggered_frameClause', () => { + this.CONSUME(Identifier) //event_triggered_frame_name + this.CONSUME(Colon) + this.CONSUME1(Identifier) //schedule_name + this.CONSUME1(Comma) + this.CONSUME1(Interger) // + this.MANY1({ + DEF: () => { + this.CONSUME2(Comma) + this.CONSUME2(Identifier) //frame_name + } + }) + this.CONSUME(EOF) + }) + + private Event_triggered_frames = this.RULE('Event_triggered_framesClause', () => { + this.CONSUME(Event_triggered_frames) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.Event_triggered_frame) + } + }) + this.CONSUME(RCurly) + }) + + private Diagnostic_frames = this.RULE('Diagnostic_framesClause', () => { + this.CONSUME(Diagnostic_frames) + this.CONSUME(LCurly) + this.CONSUME(DiagReqFrame) + this.CONSUME1(LCurly) + this.MANY1({ + DEF: () => { + this.CONSUME2(SubDiagReq) //frame_name + this.CONSUME2(Interger) + this.CONSUME2(EOF) + } + }) + this.CONSUME1(RCurly) + this.CONSUME1(DiagReqFrame) + this.CONSUME2(LCurly) + this.MANY2({ + DEF: () => { + this.CONSUME3(SubDiagReq) //frame_name + this.CONSUME3(Interger) + this.CONSUME3(EOF) + } + }) + this.CONSUME2(RCurly) + this.CONSUME(RCurly) + }) + + private ConditionalChangeNAD = this.RULE('ConditionalChangeNADClause', () => { + this.CONSUME(ConditionalChangeNAD) + this.CONSUME(LCurly) + + this.CONSUME1(Identifier) + this.CONSUME1(Comma) + + this.CONSUME2(Interger) + this.CONSUME2(Comma) + + this.CONSUME3(Interger) + this.CONSUME3(Comma) + this.CONSUME4(Interger) + this.CONSUME4(Comma) + this.CONSUME5(Interger) + this.CONSUME5(Comma) + + this.CONSUME6(Interger) + this.CONSUME6(RCurly) + }) + + private AssignNAD = this.RULE('AssignNADClause', () => { + this.CONSUME(AssignNAD) + this.CONSUME(LCurly) + this.CONSUME1(Identifier) + this.CONSUME(RCurly) + }) + + private AssignFrameId = this.RULE('AssignFrameIdClause', () => { + this.CONSUME(AssignFrameId) + this.CONSUME(LCurly) + this.CONSUME(Identifier) + this.CONSUME(Comma) + this.CONSUME1(Identifier) + this.CONSUME(RCurly) + }) + + private DataDump = this.RULE('DataDumpClause', () => { + this.CONSUME(DataDump) + this.CONSUME(LCurly) + + this.CONSUME1(Identifier) + this.CONSUME1(Comma) + + this.CONSUME2(Interger) + this.CONSUME2(Comma) + + this.CONSUME3(Interger) + this.CONSUME3(Comma) + this.CONSUME4(Interger) + this.CONSUME4(Comma) + this.CONSUME5(Interger) + this.CONSUME5(Comma) + + this.CONSUME6(Interger) + this.CONSUME6(RCurly) + }) + + private SaveConfiguration = this.RULE('SaveConfigurationClause', () => { + this.CONSUME(SaveConfiguration) + this.CONSUME(LCurly) + this.CONSUME(Identifier) + this.CONSUME(RCurly) + }) + + private AssignFrameIdRange = this.RULE('AssignFrameIdRangeClause', () => { + this.CONSUME(AssignFrameIdRange) + this.CONSUME(LCurly) + this.CONSUME(Identifier) + this.CONSUME(Comma) + this.CONSUME1(Interger) + this.OPTION(() => { + this.CONSUME2(Comma) + this.CONSUME2(Interger) + this.CONSUME3(Comma) + this.CONSUME3(Interger) + this.CONSUME4(Comma) + this.CONSUME4(Interger) + this.CONSUME5(Comma) + this.CONSUME5(Interger) + }) + this.CONSUME(RCurly) + }) + + private MasterSlaveReq = this.RULE('MasterSlaveReqClause', () => { + this.CONSUME(MasterReqSlaveResp) + }) + + private FreeFormat = this.RULE('FreeFormatClause', () => { + this.CONSUME(FreeFormat) + this.CONSUME(LCurly) + + this.CONSUME1(Interger) + this.CONSUME1(Comma) + + this.CONSUME2(Interger) + this.CONSUME2(Comma) + + this.CONSUME3(Interger) + this.CONSUME3(Comma) + this.CONSUME4(Interger) + this.CONSUME4(Comma) + this.CONSUME5(Interger) + this.CONSUME5(Comma) + + this.CONSUME6(Interger) + this.CONSUME6(RCurly) + + this.CONSUME7(Interger) + this.CONSUME7(RCurly) + + this.CONSUME8(Interger) + this.CONSUME8(RCurly) + }) + + private command = this.RULE('commandClause', () => { + this.OR([ + { + ALT: () => { + this.SUBRULE(this.ConditionalChangeNAD) + } + }, + { + ALT: () => { + this.SUBRULE(this.DataDump) + } + }, + { + ALT: () => { + this.SUBRULE(this.AssignFrameIdRange) + } + }, + { + ALT: () => { + this.SUBRULE(this.FreeFormat) + } + }, + { + ALT: () => { + this.SUBRULE(this.AssignNAD) + } + }, + { + ALT: () => { + this.SUBRULE(this.AssignFrameId) + } + }, + { + ALT: () => { + this.SUBRULE(this.SaveConfiguration) + } + }, + { + ALT: () => { + this.SUBRULE(this.MasterSlaveReq) + } + }, + { + ALT: () => { + this.CONSUME(Identifier) + } + } + ]) + }) + + private subSchItem = this.RULE('subSchItemClause', () => { + this.SUBRULE(this.command) //command + this.CONSUME2(DELAY) + this.CONSUME2(Interger) //frame_time + this.CONSUME2(MS) + this.CONSUME2(EOF) + }) + + private schItem = this.RULE('schItemClause', () => { + this.CONSUME(Identifier) //schedule_name + this.CONSUME1(LCurly) + this.MANY1({ + DEF: () => { + this.SUBRULE(this.subSchItem) + } + }) + this.CONSUME1(RCurly) + }) + + private Schedule_tables = this.RULE('Schedule_tablesClause', () => { + this.CONSUME(Schedule_tables) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.schItem) + } + }) + this.CONSUME(RCurly) + }) + + private logical_value = this.RULE('logical_valueClause', () => { + this.CONSUME(logical_value) + this.CONSUME(Interger) + this.OPTION(() => { + this.CONSUME1(Comma) + this.CONSUME1(CharString) + }) + this.CONSUME(EOF) + }) + + private physical_range = this.RULE('physical_rangeClause', () => { + this.CONSUME(physical_value) + this.CONSUME(Interger) + this.CONSUME1(Comma) + this.CONSUME1(Interger) + this.CONSUME2(Comma) + this.CONSUME2(Interger) + this.CONSUME3(Comma) + this.CONSUME3(Interger) + this.OPTION(() => { + this.CONSUME5(Comma) + this.CONSUME5(CharString) + }) + this.CONSUME(EOF) + }) + + private bcd_value = this.RULE('bcd_valueClause', () => { + this.CONSUME(bcd_value) + this.CONSUME(EOF) + }) + + private ascii_value = this.RULE('ascii_valueClause', () => { + this.CONSUME(ascii_value) + this.CONSUME(EOF) + }) + + private SignalValue = this.RULE('SignalValueClause', () => { + this.OR([ + { + ALT: () => { + this.SUBRULE(this.logical_value) + } + }, + { + ALT: () => { + this.SUBRULE(this.physical_range) + } + }, + { + ALT: () => { + this.SUBRULE(this.bcd_value) + } + }, + { + ALT: () => { + this.SUBRULE(this.ascii_value) + } + } + ]) + }) + + private MSignalValue = this.RULE('MSignalValueClause', () => { + this.CONSUME(Identifier) //signal_encoding_type_name + this.CONSUME1(LCurly) + this.MANY1({ + DEF: () => { + this.SUBRULE(this.SignalValue) + } + }) + this.CONSUME1(RCurly) + }) + + private Signal_encoding_types = this.RULE('Signal_encoding_typesClause', () => { + this.CONSUME(Signal_encoding_types) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.MSignalValue) + } + }) + this.CONSUME(RCurly) + }) + + private SubSignal_representation = this.RULE('SubSignal_representationClause', () => { + this.CONSUME(Identifier) //signal_representation_name + this.CONSUME(Colon) + this.CONSUME1(Identifier) //signal_encoding_type_name + this.MANY1({ + DEF: () => { + this.CONSUME1(Comma) + this.CONSUME2(Identifier) //signal_encoding_type_name + } + }) + this.CONSUME(EOF) + }) + + private Signal_representation = this.RULE('Signal_representationClause', () => { + this.CONSUME(Signal_representation) + this.CONSUME(LCurly) + this.MANY({ + DEF: () => { + this.SUBRULE(this.SubSignal_representation) + } + }) + this.CONSUME(RCurly) + }) + + public ldfParse = this.RULE('ldfClause', () => { + this.SUBRULE(this.header) + this.SUBRULE(this.version) + this.SUBRULE(this.llversion) + this.SUBRULE(this.speed) + this.OPTION(() => { + this.SUBRULE(this.channel) + }) + this.MANY({ + DEF: () => { + this.OR([ + { ALT: () => this.SUBRULE(this.nodes) }, + { ALT: () => this.SUBRULE(this.node_attributes) }, + { ALT: () => this.SUBRULE(this.composite) }, + { ALT: () => this.SUBRULE(this.Signals) }, + { ALT: () => this.SUBRULE(this.Diagnostic_signals) }, + { ALT: () => this.SUBRULE(this.frames) }, + { ALT: () => this.SUBRULE(this.Signal_groups) }, + { ALT: () => this.SUBRULE(this.Sporadic_frames) }, + { ALT: () => this.SUBRULE(this.Event_triggered_frames) }, + { ALT: () => this.SUBRULE(this.Diagnostic_frames) }, + { ALT: () => this.SUBRULE(this.Schedule_tables) }, + { ALT: () => this.SUBRULE(this.Signal_encoding_types) }, + { ALT: () => this.SUBRULE(this.Signal_representation) } + ]) + } + }) + }) +} + +const parser = new LdfParser() +const LdfLexer = new Lexer(allTokens) +const visitor = parser.getBaseCstVisitorConstructorWithDefaults() + +class LdfVistor extends visitor { + constructor() { + super() + this.validateVisitor() + this.ldf = { + eventTriggeredFrames: {}, + sporadicFrames: {}, + signalRep: {}, + signalEncodeTypes: {}, + nodeAttrs: {} + } as LDF + } + ldf!: LDF + + // The Ctx argument is the current CSTNode's children. + HeaderClause(ctx: CstChildrenDictionary) { + this.ldf.global = { + LIN_protocol_version: '', + LIN_language_version: '', + LIN_speed: 0 + } + } + VersionClause(ctx: CstChildrenDictionary) { + // Each Terminal or Non-Terminal in a grammar rule are collected into + // an array with the same name(key) in the ctx object. + this.ldf.global.LIN_protocol_version = (ctx.CharString[0] as IToken).image.replace(/"+/g, '') + } + LVersionClause(ctx: CstChildrenDictionary) { + // Each Terminal or Non-Terminal in a grammar rule are collected into + this.ldf.global.LIN_language_version = (ctx.CharString[0] as IToken).image.replace(/"+/g, '') + } + + SpeedClause(ctx: CstChildrenDictionary) { + this.ldf.global.LIN_speed = Number((ctx.Interger[0] as IToken).image) + } + + ChannelClause(ctx: CstChildrenDictionary) { + this.ldf.global.Channel_name = (ctx.CharString[0] as IToken).image.replace(/"+/g, '') + } + + NodesClause(ctx: CstChildrenDictionary) { + // Each Terminal or Non-Terminal in a grammar rule are collected into + // an array with the same name(key) in the ctx object. + this.ldf.node = { + master: { + nodeName: (ctx.Identifier[0] as IToken).image, + timeBase: Number((ctx.Interger[0] as IToken).image), + jitter: Number((ctx.Interger[1] as IToken).image) + }, + salveNode: [...ctx.Identifier.slice(1).map((identToken) => (identToken as IToken).image)] + } + // console.log(this.ldf) + } + + Node_attributesClause(ctx: CstChildrenDictionary) { + for (const [index, i] of ctx.Identifier.entries()) { + const t = i as IToken + + const configFramesVal: string[] = [] + if (ctx.configurable_framesClause) { + // console.log(ctx.configurable_framesClause[index].children.frameDefinition) + const configFrames = (ctx.configurable_framesClause[index] as any)?.children + ?.frameDefinition + + if (configFrames) { + for (const f of configFrames) { + const name = f.children.Identifier[0].image + if (f.children.Interger) { + const number = Number(f.children.Interger[0].image) + configFramesVal[number] = name + } else { + configFramesVal.push(name) + } + } + //check empty in configFramesVal + for (let i = 0; i < configFramesVal.length; i++) { + if (configFramesVal[i] == undefined) { + throw new Error( + i18next.t('database.ldfParse.errors.configurableFramesMustBeContinuous', { + nodeName: t.image + }) + ) + } + } + } + } + + this.ldf.nodeAttrs[t.image] = { + LIN_protocol: + ctx.LIN_protocolClause && ctx.LIN_protocolClause[index] + ? this.visit(ctx.LIN_protocolClause[index] as CstNode) + : '', + configured_NAD: + ctx.configured_NADClause && ctx.configured_NADClause[index] + ? Number( + ((ctx.configured_NADClause[index] as CstNode).children.Interger[0] as IToken).image + ) + : 0, + initial_NAD: + ctx.initial_NADClause && ctx.initial_NADClause[index] + ? Number( + ((ctx.initial_NADClause[index] as CstNode).children.Interger[0] as IToken).image + ) + : undefined, + supplier_id: + ctx.product_idClause && ctx.product_idClause[index] + ? Number( + ((ctx.product_idClause[index] as CstNode).children.Interger[0] as IToken).image + ) + : 0, + function_id: + ctx.product_idClause && ctx.product_idClause[index] + ? Number( + ((ctx.product_idClause[index] as CstNode).children.Interger[1] as IToken).image + ) + : 0, + variant: + ctx.product_idClause && + ctx.product_idClause[index] && + (ctx.product_idClause[index] as CstNode).children.Interger[2] + ? Number( + ((ctx.product_idClause[index] as CstNode).children.Interger[2] as IToken).image + ) + : undefined, + response_error: + ctx.response_errorClause && ctx.response_errorClause[index] + ? ((ctx.response_errorClause[index] as CstNode).children.Identifier[0] as IToken).image + : undefined, + fault_state_signals: [ + ...(ctx.fault_state_signalsClause && ctx.fault_state_signalsClause[index] + ? ( + (ctx.fault_state_signalsClause[index] as CstNode).children.Identifier as IToken[] + ).map((i) => i.image) + : []) + ], + P2_min: + ctx.P2_minClause && ctx.P2_minClause[index] + ? Number(((ctx.P2_minClause[index] as CstNode).children.Interger[0] as IToken).image) + : undefined, + ST_min: + ctx.ST_minClause && ctx.ST_minClause[index] + ? Number(((ctx.ST_minClause[index] as CstNode).children.Interger[0] as IToken).image) + : undefined, + N_As_timeout: + ctx.N_As_timeoutClause && ctx.N_As_timeoutClause[index] + ? Number( + ((ctx.N_As_timeoutClause[index] as CstNode).children.Interger[0] as IToken).image + ) + : undefined, + N_Cr_timeout: + ctx.N_Cr_timeoutClause && ctx.N_Cr_timeoutClause[index] + ? Number( + ((ctx.N_Cr_timeoutClause[index] as CstNode).children.Interger[0] as IToken).image + ) + : undefined, + + //TODO: + configFrames: configFramesVal + } + } + // console.log(this.ldf.nodeAttrs) + } + + compositeClause(ctx: CstChildrenDictionary) { + //TODO: + // console.log(ctx) + this.ldf.composite = {} + for (const [index, i] of ctx.configuration_nameClause.entries()) { + const c = (i as CstNode).children + + const nodes: CompositeNode[] = [] + for (const n of c.composite_nodeClause) { + const t: any = {} + const c1 = (n as CstNode).children + t.compositeNode = (c1.Identifier[0] as IToken).image + t.logicalNodes = [ + ...c1.Identifier.slice(1).map((identToken) => (identToken as IToken).image) + ] + nodes.push(t) + } + this.ldf.composite[(c.Identifier[0] as IToken).image] = nodes + } + } + + SignalsClause(ctx: CstChildrenDictionary) { + this.ldf.signals = {} + for (const s of ctx.signalClause) { + const cs = (s as CstNode).children + this.ldf.signals[(cs.Identifier[0] as IToken).image] = { + signalName: (cs.Identifier[0] as IToken).image, + signalSizeBits: Number((cs.Interger[0] as IToken).image), + initValue: + cs.initvalueArrayClause && cs.initvalueArrayClause[0] + ? (cs.initvalueArrayClause[0] as CstNode).children.Interger.map((x) => { + return Number((x as IToken).image) + }) + : Number((cs.Interger[1] as IToken).image), + punishedBy: (cs.Identifier[1] as IToken).image, + subscribedBy: [...cs.Identifier.slice(2).map((identToken) => (identToken as IToken).image)], + singleType: cs.initvalueArrayClause && cs.initvalueArrayClause[0] ? 'ByteArray' : 'Scalar' + } + } + } + + Diagnostic_signalsClause(ctx: CstChildrenDictionary) { + if (ctx.DiagReq.length != 16) { + throw new Error(i18next.t('database.ldfParse.errors.diagReqLengthMustBe')) + } + } + + Signal_groupsClause(ctx: CstChildrenDictionary) { + // Each Terminal or Non-Terminal in a grammar rule are collected into + // an array with the same name(key) in the ctx object. + this.ldf.signalGroups = [] + + for (const m of ctx.MSignal_groupClause) { + const rm = (m as CstNode).children + this.ldf.signalGroups.push({ + name: (rm.Identifier[0] as IToken).image, + size: Number((rm.Interger[0] as IToken).image), + signals: [ + ...rm.Signal_groupClause.map((identToken) => { + const srm = (identToken as CstNode).children + return { + name: (srm.Identifier[0] as IToken).image, + offset: Number((srm.Interger[0] as IToken).image) + } + }) + ] + }) + } + } + + framesClause(ctx: CstChildrenDictionary) { + this.ldf.frames = {} + for (const m of ctx.subframeClause) { + const rm = (m as CstNode).children + this.ldf.frames[(rm.Identifier[0] as IToken).image] = { + name: (rm.Identifier[0] as IToken).image, + id: Number((rm.Interger[0] as IToken).image), + publishedBy: (rm.Identifier[1] as IToken).image, + frameSize: Number((rm.Interger[1] as IToken).image), + signals: rm.subframeSignalClause + ? rm.subframeSignalClause.map((identToken) => { + const srm = (identToken as CstNode).children + return { + name: (srm.Identifier[0] as IToken).image, + offset: Number((srm.Interger[0] as IToken).image) + } + }) + : [] + } + } + } + + Sporadic_framesClause(ctx: CstChildrenDictionary) { + this.ldf.sporadicFrames = {} + for (const m of ctx.Sporadic_frameClause) { + const rm = (m as CstNode).children + + this.ldf.sporadicFrames[(rm.Identifier[0] as IToken).image] = { + name: (rm.Identifier[0] as IToken).image, + frameNames: [...rm.Identifier.slice(1).map((identToken) => (identToken as IToken).image)] + } + } + } + + Event_triggered_framesClause(ctx: CstChildrenDictionary) { + this.ldf.eventTriggeredFrames = {} + for (const m of ctx.Event_triggered_frameClause) { + const rm = (m as CstNode).children + + this.ldf.eventTriggeredFrames[(rm.Identifier[0] as IToken).image] = { + name: (rm.Identifier[0] as IToken).image, + schTableName: (rm.Identifier[1] as IToken).image, + frameId: Number((rm.Interger[0] as IToken).image), + frameNames: [...rm.Identifier.slice(2).map((identToken) => (identToken as IToken).image)] + } + } + } + + Diagnostic_framesClause(ctx: CstChildrenDictionary) { + if (ctx.DiagReqFrame.length != 2) { + throw new Error(i18next.t('database.ldfParse.errors.diagReqFrameLengthMustBe')) + } + if (ctx.SubDiagReq.length != 16) { + throw new Error(i18next.t('database.ldfParse.errors.subDiagReqLengthMustBe')) + } + } + + Schedule_tablesClause(ctx: CstChildrenDictionary) { + this.ldf.schTables = [] + + if (ctx.schItemClause) { + for (const m of ctx.schItemClause) { + const qrm = (m as CstNode).children + const w: any = { + name: (qrm.Identifier[0] as IToken).image, + entries: [] + } + for (const schItem of qrm.subSchItemClause) { + const schItemChildren = (schItem as CstNode).children + const command = (schItemChildren.commandClause[0] as CstNode).children + const isCommand = command.Identifier ? false : true + let name = '' + const args: any = {} + + if (isCommand) { + if (command.AssignNADClause) { + const rrm = (command.AssignNADClause[0] as CstNode).children + args.AssignNAD = { + AssignNAD: (rrm.Identifier[0] as IToken).image + } + name = 'AssignNAD' + } else if (command.ConditionalChangeNADClause) { + const rrm = (command.ConditionalChangeNADClause[0] as CstNode).children + args.ConditionalChangeNAD = { + nad: Number((rrm.Interger[0] as IToken).image), + id: Number((rrm.Interger[1] as IToken).image), + byte: Number((rrm.Interger[2] as IToken).image), + mask: Number((rrm.Interger[3] as IToken).image), + inv: Number((rrm.Interger[4] as IToken).image), + newNad: Number((rrm.Interger[5] as IToken).image) + } + name = 'ConditionalChangeNAD' + } else if (command.DataDumpClause) { + const rrm = (command.DataDumpClause[0] as CstNode).children + args.DataDump = { + nodeName: (rrm.Identifier[0] as IToken).image, + D1: Number((rrm.Interger[0] as IToken).image), + D2: Number((rrm.Interger[1] as IToken).image), + D3: Number((rrm.Interger[2] as IToken).image), + D4: Number((rrm.Interger[3] as IToken).image), + D5: Number((rrm.Interger[4] as IToken).image) + } + name = 'DataDump' + } else if (command.SaveConfigurationClause) { + const rrm = (command.SaveConfigurationClause[0] as CstNode).children + args.SaveConfiguration = { + nodeName: (rrm.Identifier[0] as IToken).image + } + name = 'SaveConfiguration' + } else if (command.AssignFrameIdRangeClause) { + const rrm = (command.AssignFrameIdRangeClause[0] as CstNode).children + args.AssignFrameIdRange = { + nodeName: (rrm.Identifier[0] as IToken).image, + frameIndex: Number((rrm.Interger[0] as IToken).image) + } + if (rrm.Interger.length > 1) { + args.AssignFrameIdRange.framePID = [ + ...rrm.Interger.slice(1).map((item) => Number((item as IToken).image)) + ] + } + name = 'AssignFrameIdRange' + } else if (command.FreeFormatClause) { + const rrm = (command.FreeFormatClause[0] as CstNode).children + args.FreeFormat = { + D: [...rrm.Interger.map((item) => Number((item as IToken).image))] + } + name = 'FreeFormat' + } else if (command.AssignFrameIdClause) { + const rrm = (command.AssignFrameIdClause[0] as CstNode).children + args.AssignFrameId = { + nodeName: (rrm.Identifier[0] as IToken).image, + frameName: (rrm.Identifier[1] as IToken).image + } + name = 'AssignFrameId' + } else if (command.MasterSlaveReqClause) { + const rrm = (command.MasterSlaveReqClause[0] as CstNode).children + name = (rrm.MasterReqSlaveResp[0] as IToken).image + if (name.startsWith('MasterReq')) { + name = 'DiagnosticMasterReq' + } else { + name = 'DiagnosticSlaveResp' + } + } else { + throw new Error(i18next.t('database.ldfParse.errors.unknownCommand')) + } + } else { + name = (command.Identifier[0] as IToken).image + } + + w.entries.push({ + name: name, + delay: Number((schItemChildren.Interger[0] as IToken).image), + isCommand: isCommand, + ...args + }) + } + this.ldf.schTables.push(w) + } + } + } + + Signal_encoding_typesClause(ctx: CstChildrenDictionary) { + if (ctx.MSignalValueClause) { + for (const m of ctx.MSignalValueClause) { + const rm = (m as CstNode).children + const name = (rm.Identifier[0] as IToken).image + const item: any = { + name: name, + encodingTypes: [] + } + + for (const s of rm.SignalValueClause) { + const args: any = {} + let type = '' + const rs = (s as CstNode).children + if (rs.logical_valueClause) { + const rrm = (rs.logical_valueClause[0] as CstNode).children + type = 'logicalValue' + args.logicalValue = { + signalValue: Number((rrm.Interger[0] as IToken).image), + textInfo: rrm.CharString + ? (rrm.CharString[0] as IToken).image.replace(/"+/g, '') + : undefined + } + } else if (rs.physical_rangeClause) { + type = 'physicalValue' + const rrm = (rs.physical_rangeClause[0] as CstNode).children + args.physicalValue = { + minValue: Number((rrm.Interger[0] as IToken).image), + maxValue: Number((rrm.Interger[1] as IToken).image), + scale: Number((rrm.Interger[2] as IToken).image), + offset: Number((rrm.Interger[3] as IToken).image), + textInfo: rrm.CharString + ? (rrm.CharString[0] as IToken).image.replace(/"+/g, '') + : undefined + } + } else if (rs.bcd_valueClause) { + type = 'bcdValue' + } else if (rs.ascii_valueClause) { + type = 'asciiValue' + } + item.encodingTypes.push({ + type: type, + ...args + }) + } + this.ldf.signalEncodeTypes[item.name] = item + } + } + } + + Signal_representationClause(ctx: CstChildrenDictionary) { + this.ldf.signalRep = {} + if (ctx.SubSignal_representationClause) { + for (const m of ctx.SubSignal_representationClause) { + const rm = (m as CstNode).children + const name = (rm.Identifier[0] as IToken).image + this.ldf.signalRep[name] = [...rm.Identifier.slice(1).map((item) => (item as IToken).image)] + } + } + } + + LIN_protocolClause(ctx: CstChildrenDictionary) { + // 获取值(可能是 CharString 或 Interger) + const value = ctx.CharString + ? (ctx.CharString[0] as IToken).image.replace(/"+/g, '') + : (ctx.Interger[0] as IToken).image + return value.trim() + } +} + +export function getFrameSize(ldfObj: LDF, frameName: string): number { + if (frameName in ldfObj.frames) { + const frame = ldfObj.frames[frameName] + if (frame.signals.length == 0) { + return 0 + } + return frame.frameSize + } + + if (frameName in ldfObj.eventTriggeredFrames) { + const frames = ldfObj.eventTriggeredFrames[frameName].frameNames + let maxbit = 0 + for (const fn of frames) { + const bits = getFrameSize(ldfObj, fn) + if (bits > maxbit) { + maxbit = bits + } + } + + return maxbit + } + + if (frameName in ldfObj.sporadicFrames) { + const frames = ldfObj.sporadicFrames[frameName].frameNames + let maxbit = 0 + for (const fn of frames) { + const bits = getFrameSize(ldfObj, fn) + if (bits > maxbit) { + maxbit = bits + } + } + + return maxbit + } + return 0 + // if(frameName in ldfObj.value.) +} + +// 添加一个函数来创建行号映射 +function createLineMapping(originalText: string, processedText: string): number[] { + const originalLines = originalText.split('\n') + const processedLines = processedText.split('\n') + const mapping: number[] = [] + let originalLineNum = 0 + + for (let processedLineNum = 0; processedLineNum < processedLines.length; processedLineNum++) { + while (originalLineNum < originalLines.length) { + const originalLine = originalLines[originalLineNum].trim() + const processedLine = processedLines[processedLineNum].trim() + + if ( + originalLine === processedLine || + originalLine.replace(/\/\*[\s\S]*?\*\/|([^:]|^)\/\/.*$/, '').trim() === processedLine + ) { + mapping[processedLineNum] = originalLineNum + originalLineNum++ + break + } + originalLineNum++ + } + } + return mapping +} + +function formatLexerError( + error: any, + text: string, + originalText: string, + lineMapping: number[] +): string { + const lines = text.split('\n') + const originalLines = originalText.split('\n') + const lineNumber = error.line - 1 + const originalLineNumber = lineMapping[lineNumber] + + // Get context from original text + const contextStart = Math.max(0, originalLineNumber - 3) + const contextEnd = Math.min(originalLines.length, originalLineNumber + 4) + const contextLines = originalLines.slice(contextStart, contextEnd) + + const context = contextLines + .map((line, idx) => { + const currentLineNumber = contextStart + idx + 1 + const linePrefix = currentLineNumber === originalLineNumber + 1 ? '>' : ' ' + return `${linePrefix} ${currentLineNumber.toString().padStart(4)}: ${line}` + }) + .join('\n') + + const pointer = ` ${' '.repeat(error.column)}^` + const message = `${i18next.t('database.ldfParse.errors.lexerError', { line: originalLineNumber + 1, column: error.column })}: +${i18next.t('database.ldfParse.errors.context')}: +${context} +${pointer} +${i18next.t('database.ldfParse.errors.unexpectedCharacter', { char: error.message.split("'")[1] })} +` + return message +} + +function formatParserError( + error: any, + text: string, + originalText: string, + lineMapping: number[] +): string { + const lines = text.split('\n') + const originalLines = originalText.split('\n') + let lineNumber = error.token.startLine - 1 + if (isNaN(lineNumber)) { + // 如果行号是NaN,尝试从token的位置计算行号 + const textUpToToken = text.slice(0, error.token.startOffset) + lineNumber = (textUpToToken.match(/\n/g) || []).length + } + + const originalLineNumber = lineMapping[lineNumber] || lineNumber + + // 获取错误上下文 + const contextStart = Math.max(0, originalLineNumber - 3) + const contextEnd = Math.min(originalLines.length, originalLineNumber + 4) + const contextLines = originalLines.slice(contextStart, contextEnd) + + const context = contextLines + .map((line, idx) => { + const currentLineNumber = contextStart + idx + 1 + const linePrefix = currentLineNumber === originalLineNumber + 1 ? '>' : ' ' + return `${linePrefix} ${currentLineNumber.toString().padStart(4)}: ${line}` + }) + .join('\n') + + const pointer = ` ${' '.repeat(error.token.startColumn || 0)}^` + const message = `${i18next.t('database.ldfParse.errors.parserError', { line: originalLineNumber + 1, column: error.token.startColumn || 0 })}: +${i18next.t('database.ldfParse.errors.context')}: +${context} +${pointer} +${error.message} +${i18next.t('database.ldfParse.errors.expectedOneOf', { tokens: (error.expectedTokens || []).join(', ') })}` + + return message +} + +export default function parseInput(text: string) { + const originalText = text + + const lineMapping = createLineMapping(originalText, text) + + const lexingResult = LdfLexer.tokenize(text) + if (lexingResult.errors.length > 0) { + const formattedErrors = lexingResult.errors.map((err) => + formatLexerError(err, text, originalText, lineMapping) + ) + throw new Error( + `${i18next.t('database.ldfParse.errors.lexingErrors')}:\n${formattedErrors.join('\n\n')}` + ) + } + + parser.input = lexingResult.tokens + const vv = new LdfVistor() + + try { + const cst = parser.ldfParse() + if (parser.errors.length > 0) { + const formattedErrors = parser.errors.map((err) => + formatParserError(err, text, originalText, lineMapping) + ) + throw new Error( + `${i18next.t('database.ldfParse.errors.parsingErrors')}:\n${formattedErrors.join('\n\n')}` + ) + } + vv.visit(cst) + return vv.ldf + } catch (err) { + console.error(err) + if (err instanceof Error) { + throw err + } + // Handle unexpected errors + throw new Error(`${i18next.t('database.ldfParse.errors.unexpectedError')}: ${err}`) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/gen_orti_signature.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/gen_orti_signature.ts new file mode 100644 index 0000000..cd8c5ad --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/gen_orti_signature.ts @@ -0,0 +1,11 @@ +import { writeFileSync } from 'fs' +import { resolve, dirname } from 'path' +import { generateCstDts } from '@chevrotain/cst-dts-gen' +import { ORTIParser } from './parser' +import { fileURLToPath } from 'url' + +const __dirname = dirname(fileURLToPath(import.meta.url)) +const productions = new ORTIParser().getGAstProductions() +const dtsString = generateCstDts(productions) +const dtsPath = resolve(__dirname, 'orti_cst.d.ts') +writeFileSync(dtsPath, dtsString) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/index.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/index.vue new file mode 100644 index 0000000..2a65e12 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/index.vue @@ -0,0 +1,1487 @@ + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/lexer.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/lexer.ts new file mode 100644 index 0000000..a86a17e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/lexer.ts @@ -0,0 +1,143 @@ +import { createToken, Lexer, IToken } from 'chevrotain' + +// ============== Token Definitions ============== + +// Whitespace and Comments +export const WhiteSpace = createToken({ + name: 'WhiteSpace', + pattern: /\s+/, + group: Lexer.SKIPPED +}) + +export const SingleLineComment = createToken({ + name: 'SingleLineComment', + pattern: /\/\/.*/, + group: Lexer.SKIPPED +}) + +export const MultiLineComment = createToken({ + name: 'MultiLineComment', + pattern: /\/\*[\s\S]*?\*\//, + group: Lexer.SKIPPED +}) + +export const CStyleComment = createToken({ + name: 'CStyleComment', + pattern: /\/\*.*?\*\//, + group: Lexer.SKIPPED +}) + +// C Preprocessor directives +export const PreprocessorDirective = createToken({ + name: 'PreprocessorDirective', + pattern: /#.*/, + group: Lexer.SKIPPED +}) + +// Keywords +export const VERSION = createToken({ name: 'VERSION', pattern: /VERSION/ }) +export const KOIL = createToken({ name: 'KOIL', pattern: /KOIL/ }) +export const OSSEMANTICS = createToken({ name: 'OSSEMANTICS', pattern: /OSSEMANTICS/ }) +export const IMPLEMENTATION = createToken({ name: 'IMPLEMENTATION', pattern: /IMPLEMENTATION/ }) +export const CTYPE = createToken({ name: 'CTYPE', pattern: /CTYPE/ }) +export const ENUM = createToken({ name: 'ENUM', pattern: /ENUM/ }) +export const TOTRACE = createToken({ name: 'TOTRACE', pattern: /TOTRACE/ }) +export const STRING = createToken({ name: 'STRING', pattern: /STRING/ }) +export const SIZE = createToken({ name: 'SIZE', pattern: /SIZE/ }) + +// Punctuation +export const LeftBrace = createToken({ name: 'LeftBrace', pattern: /{/ }) +export const RightBrace = createToken({ name: 'RightBrace', pattern: /}/ }) +export const LeftBracket = createToken({ name: 'LeftBracket', pattern: /\[/ }) +export const RightBracket = createToken({ name: 'RightBracket', pattern: /]/ }) +export const LeftParen = createToken({ name: 'LeftParen', pattern: /\(/ }) +export const RightParen = createToken({ name: 'RightParen', pattern: /\)/ }) +export const Semicolon = createToken({ name: 'Semicolon', pattern: /;/ }) +export const Comma = createToken({ name: 'Comma', pattern: /,/ }) +export const Colon = createToken({ name: 'Colon', pattern: /:/ }) +export const Equals = createToken({ name: 'Equals', pattern: /=/ }) +export const Ampersand = createToken({ name: 'Ampersand', pattern: /&/ }) + +// Literals +export const StringLiteral = createToken({ + name: 'StringLiteral', + pattern: /"(?:[^"\\]|\\.)*"/ +}) + +// Quoted hex numbers (like "0x00") +export const QuotedHexNumber = createToken({ + name: 'QuotedHexNumber', + pattern: /"0[xX][0-9a-fA-F]+"/ +}) + +export const HexNumber = createToken({ + name: 'HexNumber', + pattern: /0[xX][0-9a-fA-F]+/ +}) + +export const DecimalNumber = createToken({ + name: 'DecimalNumber', + pattern: /\d+(?:\.\d+)?/ +}) + +// Identifiers (must come after keywords) +export const Identifier = createToken({ + name: 'Identifier', + pattern: /[a-zA-Z_][a-zA-Z0-9_]*/ +}) + +// Array notation +export const ArrayNotation = createToken({ + name: 'ArrayNotation', + pattern: /\[\]/ +}) + +// All tokens in order of precedence +export const allTokens = [ + ArrayNotation, + // Whitespace and comments (skipped) + WhiteSpace, + SingleLineComment, + MultiLineComment, + CStyleComment, + PreprocessorDirective, + + // Keywords (must come before Identifier) + VERSION, + KOIL, + OSSEMANTICS, + IMPLEMENTATION, + CTYPE, + ENUM, + TOTRACE, + STRING, + SIZE, + + // Punctuation + LeftBrace, + RightBrace, + LeftBracket, + RightBracket, + LeftParen, + RightParen, + Semicolon, + Comma, + Colon, + Equals, + Ampersand, + + // Literals (QuotedHexNumber must come before StringLiteral) + QuotedHexNumber, + StringLiteral, + HexNumber, + DecimalNumber, + + // Identifiers (must come after keywords) + Identifier +] + +// Create the lexer +export const ORTILexer = new Lexer(allTokens) + +// Export token types for parser use +export type { IToken } diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/orti_cst.d.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/orti_cst.d.ts new file mode 100644 index 0000000..1a4042e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/orti_cst.d.ts @@ -0,0 +1,269 @@ +import type { CstNode, ICstVisitor, IToken } from 'chevrotain' + +export interface OrtiFileCstNode extends CstNode { + name: 'ortiFile' + children: OrtiFileCstChildren +} + +export type OrtiFileCstChildren = { + versionSection?: VersionSectionCstNode[] + implementationSection?: ImplementationSectionCstNode[] + informationSection?: InformationSectionCstNode[] +} + +export interface VersionSectionCstNode extends CstNode { + name: 'versionSection' + children: VersionSectionCstChildren +} + +export type VersionSectionCstChildren = { + VERSION: IToken[] + LeftBrace: IToken[] + versionProperty?: VersionPropertyCstNode[] + RightBrace: IToken[] + Semicolon: IToken[] +} + +export interface VersionPropertyCstNode extends CstNode { + name: 'versionProperty' + children: VersionPropertyCstChildren +} + +export type VersionPropertyCstChildren = { + KOIL?: IToken[] + Equals?: IToken[] + stringValue?: StringValueCstNode[] + Semicolon?: IToken[] + OSSEMANTICS?: IToken[] + semanticsType?: StringValueCstNode[] + Comma?: IToken[] + semanticsVersion?: StringValueCstNode[] +} + +export interface ImplementationSectionCstNode extends CstNode { + name: 'implementationSection' + children: ImplementationSectionCstChildren +} + +export type ImplementationSectionCstChildren = { + IMPLEMENTATION: IToken[] + implementationName: IToken[] + LeftBrace: IToken[] + implementationBlock?: ImplementationBlockCstNode[] + RightBrace: IToken[] + Semicolon: IToken[] +} + +export interface ImplementationBlockCstNode extends CstNode { + name: 'implementationBlock' + children: ImplementationBlockCstChildren +} + +export type ImplementationBlockCstChildren = { + genericBlock: GenericBlockCstNode[] +} + +export interface GenericBlockCstNode extends CstNode { + name: 'genericBlock' + children: GenericBlockCstChildren +} + +export type GenericBlockCstChildren = { + blockType: IToken[] + LeftBrace: IToken[] + typeDefinition?: TypeDefinitionCstNode[] + RightBrace: IToken[] + Comma: IToken[] + description: StringValueCstNode[] + Semicolon: IToken[] +} + +export interface TypeDefinitionCstNode extends CstNode { + name: 'typeDefinition' + children: TypeDefinitionCstChildren +} + +export type TypeDefinitionCstChildren = { + ctypeDefinition?: CtypeDefinitionCstNode[] + enumDefinition?: EnumDefinitionCstNode[] + stringDefinition?: StringDefinitionCstNode[] +} + +export interface CtypeDefinitionCstNode extends CstNode { + name: 'ctypeDefinition' + children: CtypeDefinitionCstChildren +} + +export type CtypeDefinitionCstChildren = { + CTYPE: IToken[] + dataType?: StringValueCstNode[] + variableName?: IToken[] + ArrayNotation?: IToken[] + Comma?: IToken[] + description?: StringValueCstNode[] + Semicolon: IToken[] +} + +export interface EnumDefinitionCstNode extends CstNode { + name: 'enumDefinition' + children: EnumDefinitionCstChildren +} + +export type EnumDefinitionCstChildren = { + TOTRACE?: IToken[] + ENUM: IToken[] + enumType?: StringValueCstNode[] + LeftBracket: IToken[] + enumValueList: EnumValueListCstNode[] + RightBracket: IToken[] + variableName?: IToken[] + ArrayNotation?: IToken[] + Comma: IToken[] + description: StringValueCstNode[] + Semicolon: IToken[] +} + +export interface StringDefinitionCstNode extends CstNode { + name: 'stringDefinition' + children: StringDefinitionCstChildren +} + +export type StringDefinitionCstChildren = { + STRING: IToken[] + variableName: IToken[] + Comma: IToken[] + description: StringValueCstNode[] + Semicolon: IToken[] +} + +export interface EnumValueListCstNode extends CstNode { + name: 'enumValueList' + children: EnumValueListCstChildren +} + +export type EnumValueListCstChildren = { + enumValue: EnumValueCstNode[] + Comma?: IToken[] +} + +export interface EnumValueCstNode extends CstNode { + name: 'enumValue' + children: EnumValueCstChildren +} + +export type EnumValueCstChildren = { + enumKey: StringValueCstNode[] + Equals?: IToken[] + enumValue?: ValueCstNode[] + Colon?: IToken[] + enumIdentifier?: IToken[] + enumReference?: ValueCstNode[] +} + +export interface InformationSectionCstNode extends CstNode { + name: 'informationSection' + children: InformationSectionCstChildren +} + +export type InformationSectionCstChildren = { + genericInstance: GenericInstanceCstNode[] +} + +export interface GenericInstanceCstNode extends CstNode { + name: 'genericInstance' + children: GenericInstanceCstChildren +} + +export type GenericInstanceCstChildren = { + instanceType: IToken[] + instanceName: IToken[] + LeftBrace: IToken[] + propertyAssignment?: PropertyAssignmentCstNode[] + RightBrace: IToken[] + Semicolon: IToken[] +} + +export interface PropertyAssignmentCstNode extends CstNode { + name: 'propertyAssignment' + children: PropertyAssignmentCstChildren +} + +export type PropertyAssignmentCstChildren = { + propertyName?: IToken[] + LeftBracket?: IToken[] + arrayIndex?: NumberValueCstNode[] + RightBracket?: IToken[] + Equals: IToken[] + propertyValue: ValueCstNode[] + Semicolon: IToken[] +} + +export interface ValueCstNode extends CstNode { + name: 'value' + children: ValueCstChildren +} + +export type ValueCstChildren = { + stringValue?: StringValueCstNode[] + numberValue?: NumberValueCstNode[] + referenceValue?: ReferenceValueCstNode[] +} + +export interface StringValueCstNode extends CstNode { + name: 'stringValue' + children: StringValueCstChildren +} + +export type StringValueCstChildren = { + StringLiteral: IToken[] +} + +export interface NumberValueCstNode extends CstNode { + name: 'numberValue' + children: NumberValueCstChildren +} + +export type NumberValueCstChildren = { + QuotedHexNumber?: IToken[] + HexNumber?: IToken[] + DecimalNumber?: IToken[] +} + +export interface ReferenceValueCstNode extends CstNode { + name: 'referenceValue' + children: ReferenceValueCstChildren +} + +export type ReferenceValueCstChildren = { + Ampersand?: IToken[] + Identifier: IToken[] + LeftBracket?: IToken[] + numberValue?: NumberValueCstNode[] + RightBracket?: IToken[] + LeftParen?: IToken[] + value?: ValueCstNode[] + Comma?: IToken[] + RightParen?: IToken[] +} + +export interface ICstNodeVisitor extends ICstVisitor { + ortiFile(children: OrtiFileCstChildren, param?: IN): OUT + versionSection(children: VersionSectionCstChildren, param?: IN): OUT + versionProperty(children: VersionPropertyCstChildren, param?: IN): OUT + implementationSection(children: ImplementationSectionCstChildren, param?: IN): OUT + implementationBlock(children: ImplementationBlockCstChildren, param?: IN): OUT + genericBlock(children: GenericBlockCstChildren, param?: IN): OUT + typeDefinition(children: TypeDefinitionCstChildren, param?: IN): OUT + ctypeDefinition(children: CtypeDefinitionCstChildren, param?: IN): OUT + enumDefinition(children: EnumDefinitionCstChildren, param?: IN): OUT + stringDefinition(children: StringDefinitionCstChildren, param?: IN): OUT + enumValueList(children: EnumValueListCstChildren, param?: IN): OUT + enumValue(children: EnumValueCstChildren, param?: IN): OUT + informationSection(children: InformationSectionCstChildren, param?: IN): OUT + genericInstance(children: GenericInstanceCstChildren, param?: IN): OUT + propertyAssignment(children: PropertyAssignmentCstChildren, param?: IN): OUT + value(children: ValueCstChildren, param?: IN): OUT + stringValue(children: StringValueCstChildren, param?: IN): OUT + numberValue(children: NumberValueCstChildren, param?: IN): OUT + referenceValue(children: ReferenceValueCstChildren, param?: IN): OUT +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/package.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/package.json new file mode 100644 index 0000000..e4b67c8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/package.json @@ -0,0 +1,7 @@ +{ + "type": "module", + "scripts": { + "build": "tsx gen_orti_signature.ts" + } +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/parser.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/parser.ts new file mode 100644 index 0000000..ab681dc --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/parser.ts @@ -0,0 +1,325 @@ +import { CstParser, IToken, TokenType } from 'chevrotain' +import { + allTokens, + VERSION, + KOIL, + OSSEMANTICS, + IMPLEMENTATION, + CTYPE, + ENUM, + TOTRACE, + STRING, + SIZE, + LeftBrace, + RightBrace, + LeftBracket, + RightBracket, + LeftParen, + RightParen, + Semicolon, + Comma, + Colon, + Equals, + Ampersand, + StringLiteral, + QuotedHexNumber, + HexNumber, + DecimalNumber, + Identifier, + ArrayNotation +} from './lexer' + +export class ORTIParser extends CstParser { + constructor() { + super(allTokens, { + recoveryEnabled: true, + nodeLocationTracking: 'full' + }) + this.performSelfAnalysis() + } + + // ============== Main Rules ============== + + public ortiFile = this.RULE('ortiFile', () => { + this.MANY(() => { + this.OR([ + { ALT: () => this.SUBRULE(this.versionSection) }, + { ALT: () => this.SUBRULE(this.implementationSection) }, + { ALT: () => this.SUBRULE(this.informationSection) } + ]) + }) + }) + + // ============== Version Section ============== + + private versionSection = this.RULE('versionSection', () => { + this.CONSUME(VERSION) + this.CONSUME(LeftBrace) + this.MANY(() => { + this.SUBRULE(this.versionProperty) + }) + this.CONSUME(RightBrace) + this.CONSUME(Semicolon) + }) + + private versionProperty = this.RULE('versionProperty', () => { + this.OR([ + { + ALT: () => { + this.CONSUME(KOIL) + this.CONSUME(Equals) + this.SUBRULE(this.stringValue) + this.CONSUME(Semicolon) + } + }, + { + ALT: () => { + this.CONSUME(OSSEMANTICS) + this.CONSUME1(Equals) + this.SUBRULE1(this.stringValue, { LABEL: 'semanticsType' }) + this.CONSUME(Comma) + this.SUBRULE2(this.stringValue, { LABEL: 'semanticsVersion' }) + this.CONSUME1(Semicolon) + } + } + ]) + }) + + // ============== Implementation Section ============== + + private implementationSection = this.RULE('implementationSection', () => { + this.CONSUME(IMPLEMENTATION) + this.CONSUME(Identifier, { LABEL: 'implementationName' }) + this.CONSUME(LeftBrace) + this.MANY(() => { + this.SUBRULE(this.implementationBlock) + }) + this.CONSUME(RightBrace) + this.CONSUME(Semicolon) + }) + + private implementationBlock = this.RULE('implementationBlock', () => { + this.SUBRULE(this.genericBlock) + }) + + // Generic block pattern: IDENTIFIER { ... } , "description" ; + // This handles the unified format for all block types using generic identifiers + // The blockType can be any identifier (OS, TASK, STACK, ALARM, RESOURCE, vs_ISR, vs_CONFIG, etc.) + private genericBlock = this.RULE('genericBlock', () => { + this.CONSUME(Identifier, { LABEL: 'blockType' }) + this.CONSUME(LeftBrace) + this.MANY(() => { + this.SUBRULE(this.typeDefinition) + }) + this.CONSUME(RightBrace) + this.CONSUME(Comma) + this.SUBRULE(this.stringValue, { LABEL: 'description' }) + this.CONSUME(Semicolon) + }) + + // ============== Type Definitions ============== + + private typeDefinition = this.RULE('typeDefinition', () => { + this.OR([ + { ALT: () => this.SUBRULE(this.ctypeDefinition) }, + { ALT: () => this.SUBRULE(this.enumDefinition) }, + { ALT: () => this.SUBRULE(this.stringDefinition) } + ]) + }) + + private ctypeDefinition = this.RULE('ctypeDefinition', () => { + this.CONSUME(CTYPE) + this.OPTION(() => { + this.SUBRULE(this.stringValue, { LABEL: 'dataType' }) + }) + this.OR([ + { + ALT: () => { + this.CONSUME(Identifier, { LABEL: 'variableName' }) + } + }, + { + ALT: () => { + this.CONSUME(SIZE, { LABEL: 'variableName' }) + } + } + ]) + this.OPTION2(() => { + this.CONSUME(ArrayNotation) + }) + this.OPTION3(() => { + this.CONSUME(Comma) + this.SUBRULE2(this.stringValue, { LABEL: 'description' }) + }) + this.CONSUME(Semicolon) + }) + + private enumDefinition = this.RULE('enumDefinition', () => { + this.OPTION(() => { + this.CONSUME(TOTRACE) + }) + this.CONSUME(ENUM) + this.OPTION2(() => { + this.SUBRULE(this.stringValue, { LABEL: 'enumType' }) + }) + this.CONSUME(LeftBracket) + this.SUBRULE(this.enumValueList) + + this.CONSUME(RightBracket) + this.OR([ + { + ALT: () => { + this.CONSUME(Identifier, { LABEL: 'variableName' }) + } + }, + { + ALT: () => { + this.CONSUME(SIZE, { LABEL: 'variableName' }) + } + } + ]) + this.OPTION3(() => { + this.CONSUME(ArrayNotation) + }) + this.CONSUME1(Comma) + this.SUBRULE2(this.stringValue, { LABEL: 'description' }) + this.CONSUME(Semicolon) + }) + + private stringDefinition = this.RULE('stringDefinition', () => { + this.CONSUME(STRING) + this.CONSUME(Identifier, { LABEL: 'variableName' }) + this.CONSUME(Comma) + this.SUBRULE(this.stringValue, { LABEL: 'description' }) + this.CONSUME(Semicolon) + }) + + private enumValueList = this.RULE('enumValueList', () => { + this.SUBRULE(this.enumValue) + this.MANY(() => { + this.CONSUME(Comma) + this.SUBRULE2(this.enumValue) + }) + // Handle optional trailing comma after the last enum value + this.OPTION(() => { + this.CONSUME1(Comma) + }) + }) + + private enumValue = this.RULE('enumValue', () => { + this.SUBRULE(this.stringValue, { LABEL: 'enumKey' }) + this.OR([ + { + ALT: () => { + this.CONSUME(Equals) + this.SUBRULE(this.value, { LABEL: 'enumValue' }) + } + }, + { + ALT: () => { + this.CONSUME(Colon) + this.CONSUME(Identifier, { LABEL: 'enumIdentifier' }) + this.CONSUME1(Equals) + this.SUBRULE1(this.value, { LABEL: 'enumReference' }) + } + } + ]) + }) + + // ============== Information Section ============== + + private informationSection = this.RULE('informationSection', () => { + this.SUBRULE(this.genericInstance) + }) + + // Generic instance pattern: IDENTIFIER instanceName { ... } ; + // This handles the unified format for all instance types using generic identifiers + // The instanceType can be any identifier (OS, TASK, STACK, ALARM, RESOURCE, vs_ISR, vs_CONFIG, etc.) + private genericInstance = this.RULE('genericInstance', () => { + this.CONSUME(Identifier, { LABEL: 'instanceType' }) + this.CONSUME1(Identifier, { LABEL: 'instanceName' }) + this.CONSUME(LeftBrace) + this.MANY(() => { + this.SUBRULE(this.propertyAssignment) + }) + this.CONSUME(RightBrace) + this.CONSUME(Semicolon) + }) + + private propertyAssignment = this.RULE('propertyAssignment', () => { + this.OR([ + { + ALT: () => { + this.CONSUME(Identifier, { LABEL: 'propertyName' }) + } + }, + { + ALT: () => { + this.CONSUME(SIZE, { LABEL: 'propertyName' }) + } + } + ]) + this.OPTION(() => { + this.CONSUME(LeftBracket) + this.SUBRULE(this.numberValue, { LABEL: 'arrayIndex' }) + this.CONSUME(RightBracket) + }) + this.CONSUME(Equals) + this.SUBRULE(this.value, { LABEL: 'propertyValue' }) + this.CONSUME(Semicolon) + }) + + // ============== Value Rules ============== + + private value = this.RULE('value', () => { + this.OR([ + { ALT: () => this.SUBRULE(this.stringValue) }, + { ALT: () => this.SUBRULE(this.numberValue) }, + { ALT: () => this.SUBRULE(this.referenceValue) } + ]) + }) + + private stringValue = this.RULE('stringValue', () => { + this.CONSUME(StringLiteral) + }) + + private numberValue = this.RULE('numberValue', () => { + this.OR([ + { ALT: () => this.CONSUME(QuotedHexNumber) }, + { ALT: () => this.CONSUME(HexNumber) }, + { ALT: () => this.CONSUME(DecimalNumber) } + ]) + }) + + private referenceValue = this.RULE('referenceValue', () => { + this.OPTION(() => { + this.CONSUME(Ampersand) + }) + this.CONSUME(Identifier) + this.MANY(() => { + this.OR([ + { + ALT: () => { + this.CONSUME(LeftBracket) + this.SUBRULE(this.numberValue) + this.CONSUME(RightBracket) + } + }, + { + ALT: () => { + this.CONSUME(LeftParen) + this.SUBRULE(this.value) + this.MANY2(() => { + this.CONSUME(Comma) + this.SUBRULE2(this.value) + }) + this.CONSUME(RightParen) + } + } + ]) + }) + }) +} + +// Create singleton parser instance +export const ortiParser = new ORTIParser() diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/visitor.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/visitor.ts new file mode 100644 index 0000000..18b2832 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/orti/visitor.ts @@ -0,0 +1,624 @@ +import { CstNode, ICstVisitor, IToken } from 'chevrotain' +import { ortiParser } from './parser' +import { + ORTIFile, + ORTIVersion, + ORTIImplementation, + ORTIosInstance, + ORTITaskInstance, + ORTIStackInstance, + ORTIAlarmInstance, + ORTIResourceInstance, + ORTIIsrInstance, + ORTIConfigInstance, + ORTIEnum, + CType, + ORTITaskType, + ORTIScheduleType +} from '../ortiParse' +import { + ICstNodeVisitor, + OrtiFileCstChildren, + VersionSectionCstChildren, + VersionPropertyCstChildren, + ImplementationSectionCstChildren, + ImplementationBlockCstChildren, + GenericBlockCstChildren, + TypeDefinitionCstChildren, + CtypeDefinitionCstChildren, + EnumDefinitionCstChildren, + StringDefinitionCstChildren, + EnumValueListCstChildren, + EnumValueCstChildren, + InformationSectionCstChildren, + GenericInstanceCstChildren, + PropertyAssignmentCstChildren, + ValueCstChildren, + StringValueCstChildren, + NumberValueCstChildren, + ReferenceValueCstChildren +} from './orti_cst' + +// Generate the visitor interface based on parser rules +const BaseCstVisitor = ortiParser.getBaseCstVisitorConstructor() + +export class ORTIVisitor extends BaseCstVisitor implements ICstNodeVisitor { + constructor() { + super() + this.validateVisitor() + } + + // ============== Main Entry Point ============== + + ortiFile(children: OrtiFileCstChildren): ORTIFile { + const result: ORTIFile = { + id: '', + name: '', + cpuFreq: 100, + version: { koil: '', osSemantics: { type: '', version: '' } }, + implementation: {} as ORTIImplementation, + osInstance: {} as ORTIosInstance, + tasks: [], + stacks: [], + resources: [], + alarms: [], + isrs: [], + configs: [], + coreConfigs: [], + resourceConfigs: [], + serviceConfigs: [], + hostConfigs: [] + } + + // Process version sections + if (children.versionSection) { + children.versionSection.forEach((versionNode) => { + const version = this.visit(versionNode) + if (version) { + result.version = { ...result.version, ...version } + } + }) + } + + // Process implementation sections + if (children.implementationSection) { + children.implementationSection.forEach((implNode) => { + const implementation = this.visit(implNode) + if (implementation) { + result.implementation = implementation + } + }) + } + + // Process information sections (instances) + if (children.informationSection) { + children.informationSection.forEach((infoNode) => { + const info = this.visit(infoNode) + if (info) { + switch (info.type) { + case 'os': + result.osInstance = info.data + break + case 'task': + result.tasks.push(info.data) + break + case 'stack': + result.stacks.push(info.data) + break + case 'alarm': + result.alarms.push(info.data) + break + case 'resource': + result.resources.push(info.data) + break + case 'isr': + result.isrs.push(info.data) + break + case 'config': + result.configs.push(info.data) + break + } + } + }) + } + + return result + } + + // ============== Version Section ============== + + versionSection(children: VersionSectionCstChildren): Partial { + const result: Partial = {} + if (children.versionProperty) { + children.versionProperty.forEach((propNode) => { + const prop = this.visit(propNode) + if (prop) { + Object.assign(result, prop) + } + }) + } + + return result + } + + versionProperty(children: VersionPropertyCstChildren): Partial { + if (children.KOIL) { + return { + koil: this.extractStringValue(children.stringValue![0]) + } + } + + if (children.OSSEMANTICS) { + return { + osSemantics: { + type: this.extractStringValue(children.semanticsType![0]), + version: this.extractStringValue(children.semanticsVersion![0]) + } + } + } + + return {} + } + + // ============== Implementation Section ============== + + implementationSection(children: ImplementationSectionCstChildren): ORTIImplementation { + const name = children.implementationName[0].image + + const implementation: ORTIImplementation = { + name, + os: {} as any, + task: {} as any, + stack: {} as any, + alarm: {} as any, + resource: {} as any, + isr: {} as any, + config: {} as any + } + + if (children.implementationBlock) { + children.implementationBlock.forEach((blockNode) => { + const block = this.visit(blockNode) + if (block) { + switch (block.type) { + case 'os': + implementation.os = block.data + break + case 'task': + implementation.task = block.data + break + case 'stack': + implementation.stack = block.data + break + case 'alarm': + implementation.alarm = block.data + break + case 'resource': + implementation.resource = block.data + break + case 'isr': + implementation.isr = block.data + break + case 'config': + implementation.config = block.data + break + } + } + }) + } + + return implementation + } + + implementationBlock( + children: ImplementationBlockCstChildren + ): { type: string; data: any } | null { + if (children.genericBlock) { + return this.visit(children.genericBlock[0]) + } + return null + } + + genericBlock(children: GenericBlockCstChildren): { type: string; data: any } { + const blockType = children.blockType[0].image.toLowerCase() + const data = this.processTypeDefinitionBlock(children) + + return { + type: blockType === 'vs_isr' ? 'isr' : blockType === 'vs_config' ? 'config' : blockType, + data + } + } + + // ============== Type Definitions ============== + + private processTypeDefinitionBlock(children: any): any { + const result: any = {} + + if (children.typeDefinition) { + children.typeDefinition.forEach((typeDefNode: any) => { + const typeDef = this.visit(typeDefNode) + if (typeDef) { + result[typeDef.name] = typeDef.definition + } + }) + } + + return result + } + + typeDefinition(children: TypeDefinitionCstChildren): { name: string; definition: any } | null { + if (children.ctypeDefinition) { + return this.visit(children.ctypeDefinition[0]) + } + if (children.enumDefinition) { + return this.visit(children.enumDefinition[0]) + } + if (children.stringDefinition) { + return this.visit(children.stringDefinition[0]) + } + return null + } + + ctypeDefinition(children: CtypeDefinitionCstChildren): { name: string; definition: CType } { + const name = children.variableName?.[0]?.image || '' + const type = children.dataType ? this.extractStringValue(children.dataType[0]) : '' + const description = children.description ? this.extractStringValue(children.description[0]) : '' + const isArray = !!children.ArrayNotation + + return { + name, + definition: { + type, + variableName: name, + description, + isArray + } + } + } + + enumDefinition(children: EnumDefinitionCstChildren): { name: string; definition: ORTIEnum } { + const name = children.variableName?.[0]?.image || '' + const enumType = children.enumType ? this.extractStringValue(children.enumType[0]) : undefined + const description = this.extractStringValue(children.description[0]) + const isArray = !!children.ArrayNotation + const totrace = !!children.TOTRACE + + const values: { [key: string]: string | number } = {} + if (children.enumValueList) { + const enumValues = this.visit(children.enumValueList[0]) + if (enumValues) { + Object.assign(values, enumValues) + } + } + + return { + name, + definition: { + name: enumType || name, + type: enumType, + values, + variableName: name, + description, + isArray, + totrace + } + } + } + + stringDefinition(children: StringDefinitionCstChildren): { name: string; definition: CType } { + const name = children.variableName[0].image + const description = this.extractStringValue(children.description[0]) + + return { + name, + definition: { + type: 'string', + variableName: name, + description + } + } + } + + enumValueList(children: EnumValueListCstChildren): { [key: string]: string | number } { + const result: { [key: string]: string | number } = {} + + if (children.enumValue) { + children.enumValue.forEach((enumValueNode) => { + const enumValue = this.visit(enumValueNode) + if (enumValue) { + result[enumValue.key] = enumValue.value + } + }) + } + + return result + } + + enumValue(children: EnumValueCstChildren): { key: string; value: string | number } | null { + const key = this.extractStringValue(children.enumKey[0]) + + if (children.enumValue) { + const value = this.visit(children.enumValue[0]) + return { key, value } + } + + if (children.enumReference) { + const reference = this.visit(children.enumReference[0]) + return { key, value: reference } + } + + return null + } + + // ============== Information Section ============== + + informationSection(children: InformationSectionCstChildren): { type: string; data: any } | null { + if (children.genericInstance) { + return this.visit(children.genericInstance[0]) + } + return null + } + + genericInstance(children: GenericInstanceCstChildren): { type: string; data: any } { + const instanceType = children.instanceType[0].image.toLowerCase() + const name = children.instanceName[0].image + const properties = this.extractProperties(children) + + let data: any + switch (instanceType) { + case 'os': + data = this.createOsInstance(name, properties) + break + case 'task': + data = this.createTaskInstance(name, properties) + break + case 'stack': + data = this.createStackInstance(name, properties) + break + case 'alarm': + data = this.createAlarmInstance(name, properties) + break + case 'resource': + data = this.createResourceInstance(name, properties) + break + case 'vs_isr': + data = this.createIsrInstance(name, properties) + return { type: 'isr', data } + case 'vs_config': + data = this.createConfigInstance(name, properties) + return { type: 'config', data } + default: + data = { name, properties } + } + + return { type: instanceType, data } + } + + // ============== Property Assignment ============== + + propertyAssignment(children: PropertyAssignmentCstChildren): { name: string; value: any } { + const propertyName = children.propertyName?.[0]?.image || '' + const arrayIndex = children.arrayIndex ? this.extractNumberValue(children.arrayIndex[0]) : null + const propertyValue = this.visit(children.propertyValue[0]) + + const fullName = arrayIndex !== null ? `${propertyName}[${arrayIndex}]` : propertyName + + return { + name: fullName, + value: propertyValue + } + } + + // ============== Value Extraction ============== + + value(children: ValueCstChildren): any { + if (children.stringValue) { + return this.visit(children.stringValue[0]) + } + if (children.numberValue) { + return this.visit(children.numberValue[0]) + } + if (children.referenceValue) { + return this.visit(children.referenceValue[0]) + } + return null + } + + stringValue(children: StringValueCstChildren): string { + return this.extractStringValue(children) + } + + numberValue(children: NumberValueCstChildren): number { + return this.extractNumberValue(children) + } + + referenceValue(children: ReferenceValueCstChildren): string { + let result = '' + + if (children.Ampersand) { + result += '&' + } + + if (children.Identifier) { + result += children.Identifier[0].image + } + + // Handle array access and function calls + // This is a simplified implementation - you may need to expand this + // based on the complexity of reference expressions in your ORTI files + + return result + } + + // ============== Instance Creation Helpers ============== + + private createOsInstance(name: string, properties: { [key: string]: any }): ORTIosInstance { + // Extract core number + const coreNum = properties.vs_CORE_NUM ? parseInt(properties.vs_CORE_NUM) : 0 + + // Extract core configurations + const coreConfigs: any[] = [] + for (let i = 0; i < coreNum; i++) { + const config = { + coreIndex: i, + coreId: properties[`vs_CORE_ID[${i}]`] || '', + runningTask: properties[`RUNNINGTASK[${i}]`] || '', + runningTaskPriority: properties[`RUNNINGTASKPRIORITY[${i}]`] || '', + runningIsr2: properties[`RUNNINGISR2[${i}]`] || '', + serviceTrace: properties[`vs_SERVICETRACE[${i}]`] || '', + lastError: properties[`LASTERROR[${i}]`] || '', + currentAppMode: properties[`CURRENTAPPMODE[${i}]`] || '' + } + coreConfigs.push(config) + } + + return { + name, + coreNum, + coreConfigs + } + } + + private createTaskInstance(name: string, properties: { [key: string]: any }): ORTITaskInstance { + return { + name, + priority: properties.PRIORITY || '', + state: properties.STATE || '', + stack: properties.STACK || '', + remainingActivations: properties.REMAININGACTIVATIONS || '', + homePriority: properties.vs_Home_Priority || '', + taskType: this.parseTaskType(properties.vs_Task_Type), + schedule: this.parseScheduleType(properties.vs_Schedule), + maxActivations: properties.vs_max_Activations || '' + } + } + + private createStackInstance(name: string, properties: { [key: string]: any }): ORTIStackInstance { + return { + name, + size: properties.SIZE || '', + stackDirection: properties.STACKDIRECTION || '', + baseAddress: properties.BASEADDRESS || '', + fillPattern: properties.FILLPATTERN || '' + } + } + + private createAlarmInstance(name: string, properties: { [key: string]: any }): ORTIAlarmInstance { + return { + name, + alarmTime: properties.ALARMTIME || '', + cycleTime: properties.CYCLETIME || '', + state: properties.STATE || '', + action: properties.ACTION || '', + counter: properties.COUNTER || '' + } + } + + private createResourceInstance( + name: string, + properties: { [key: string]: any } + ): ORTIResourceInstance { + return { + name, + state: properties.STATE || '', + locker: properties.LOCKER || '', + priority: properties.PRIORITY || '' + } + } + + private createIsrInstance(name: string, properties: { [key: string]: any }): ORTIIsrInstance { + return { + name, + priority: properties.vs_Priority || '', + type: properties.vs_Type || '', + state: properties.vs_State || '' + } + } + + private createConfigInstance( + name: string, + properties: { [key: string]: any } + ): ORTIConfigInstance { + return { + name, + scalabilityClass: properties.vs_ScalabilityClass || '', + statusLevel: properties.vs_StatusLevel || '' + } + } + + // ============== Helper Methods ============== + + private extractProperties(children: any): { [key: string]: any } { + const properties: { [key: string]: any } = {} + + if (children.propertyAssignment) { + children.propertyAssignment.forEach((propNode: any) => { + const prop = this.visit(propNode) + if (prop) { + properties[prop.name] = prop.value + } + }) + } + + return properties + } + + private extractStringValue(children: any): string { + if (children.StringLiteral) { + const str = children.StringLiteral[0].image + return str.slice(1, -1) + } else if (children.children) { + return this.extractStringValue(children.children) + } + return '' + } + + private extractNumberValue(children: any): number { + if (!children) return 0 + + if (children.HexNumber) { + return parseInt(children.HexNumber[0].image, 16) + } + + if (children.DecimalNumber) { + return parseFloat(children.DecimalNumber[0].image) + } + + if (children.QuotedHexNumber) { + // Remove quotes and parse hex: "0x1234" -> 0x1234 + const hexStr = children.QuotedHexNumber[0].image.slice(1, -1) + return parseInt(hexStr, 16) + } + + // Handle nested children structure like extractStringValue + if (children.children) { + return this.extractNumberValue(children.children) + } + + return 0 + } + + private parseTaskType(value: string): ORTITaskType { + switch (value?.toUpperCase()) { + case 'BASIC': + return ORTITaskType.BASIC + case 'EXTENDED': + return ORTITaskType.EXTENDED + default: + return ORTITaskType.BASIC + } + } + + private parseScheduleType(value: string): ORTIScheduleType { + switch (value?.toUpperCase()) { + case 'FULL': + return ORTIScheduleType.FULL + case 'NON': + return ORTIScheduleType.NON + default: + return ORTIScheduleType.FULL + } + } +} + +export const ortiVisitor = new ORTIVisitor() diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ortiParse.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ortiParse.ts new file mode 100644 index 0000000..d36329b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/database/ortiParse.ts @@ -0,0 +1,1151 @@ +// OSEK ORTI (OSEK Run Time Interface) TypeScript Interfaces and Parser +// 基于实际 ORTI 文件格式重新设计,使用 Chevrotain 解析器 + +import { ORTILexer } from './orti/lexer' +import { ortiParser } from './orti/parser' +import { ortiVisitor } from './orti/visitor' +import i18next from 'i18next' + +/** + * 版本信息 + */ +export interface ORTIVersion { + koil: string // KOIL 版本,如 "2.2" + osSemantics: { + type: string // 如 "ORTI" + version: string // 如 "2.2" + } +} + +/** + * CTYPE 数据类型定义 + */ +export interface CType { + type: string // 如 "int", "unsigned short", "unsigned char *" + variableName: string // 变量名 + description: string // 描述信息 + isArray?: boolean // 是否为数组 +} + +/** + * 枚举类型定义 + */ +export interface ORTIEnum { + name: string // 枚举类型名,如 "Os_CoreIdType" + type?: string // 基础类型,如 "unsigned char" + values: { [key: string]: string | number } // 枚举值映射 + variableName?: string // 关联的变量名 + description: string // 描述信息 + isArray?: boolean // 是否为数组 + totrace?: boolean // 是否为 TOTRACE 类型 +} + +/** + * 任务状态枚举 + */ +export enum ORTITaskState { + WAITING = 0, + READY = 1, + SUSPENDED = 2, + RUNNING = 3, + START = 4 +} + +/** + * 任务类型枚举 + */ +export enum ORTITaskType { + BASIC = 'BASIC', + EXTENDED = 'EXTENDED' +} + +/** + * 调度类型枚举 + */ +export enum ORTIScheduleType { + FULL = 'FULL', + NON = 'NON' +} + +/** + * OS 实现定义 + */ +export interface ORTIImplementation { + name: string // 实现名称,如 "ISoft_ORTI" + + // OS 部分定义 + os: { + coreNum: CType + coreId: ORTIEnum + RUNNINGTASK: ORTIEnum + RUNNINGTASKPRIORITY: CType + RUNNINGISR2: ORTIEnum + serviceTrace: ORTIEnum + lastError: ORTIEnum + currentAppMode: ORTIEnum + } + + // TASK 部分定义 + task: { + priority: CType + state: ORTIEnum + stack: ORTIEnum + remainingActivations: CType + homePriority: CType + taskType: CType + schedule: CType + maxActivations: CType + } + + // STACK 部分定义 + stack: { + size: CType + baseAddress: CType + stackDirection: CType + fillPattern: CType + } + + // ALARM 部分定义 + alarm: { + alarmTime: CType + cycleTime: CType + state: ORTIEnum + action: CType + counter: CType + } + + // RESOURCE 部分定义 + resource: { + state: ORTIEnum + locker: ORTIEnum + priority: CType + } + + // ISR 部分定义 (vs_ISR) + isr: { + priority: CType + type: CType + state: ORTIEnum + } + + // CONFIG 部分定义 (vs_CONFIG) + config: { + scalabilityClass: CType + statusLevel: CType + } +} + +/** + * 任务实例 + */ +export interface ORTITaskInstance { + name: string + priority: string // 变量引用,如 "Os_TCBCore0[0].taskRunPrio" + state: string // 变量引用,如 "Os_TCBCore0[0].taskState" + stack: string // 栈引用,如 "&taskStack_iSoft_Auto_OsTask_10ms_BSW" + remainingActivations: string // 变量引用 + + // 静态属性 + homePriority: string // 如 "2" + taskType: ORTITaskType + schedule: ORTIScheduleType + maxActivations: string // 如 "1" +} + +/** + * 栈实例 + */ +export interface ORTIStackInstance { + name: string + size: string // 如 "1024" + stackDirection: string // 如 "DOWN" + baseAddress: string // 如 "&Os_iSoft_Auto_OsTask_10ms_BSW_Stack" + fillPattern: string // 如 "0xCCCCCCCC" +} + +/** + * 资源实例 + */ +export interface ORTIResourceInstance { + name: string + state: string // 变量引用 + locker: string // 变量引用 + priority: string // 如 "3" +} + +/** + * 报警器实例 + */ +export interface ORTIAlarmInstance { + name: string + alarmTime: string // 变量引用 + cycleTime: string // 变量引用 + state: string // 变量引用 + action: string // 如 "ActivateTask(iSoft_Auto_OsTask_100ms)" + counter: string // 如 "SystemTimer_Core_0" +} + +/** + * ISR 实例 + */ +export interface ORTIIsrInstance { + name: string + priority: string // 如 "199" + type: string // 如 "CATEGORY_2" + state: string // 变量引用 +} + +/** + * 配置实例 + */ +export interface ORTIConfigInstance { + name: string + scalabilityClass: string // 如 "SC1" + statusLevel: string // 如 "STANDARD" +} + +/** + * OS 实例(Information Section) + */ +export interface ORTIosInstance { + name: string // 如 "ISoft_TC397" + coreNum: number // 核心数量 + + // 多核系统的数组映射 + coreConfigs: Array<{ + coreIndex: number + coreId: string // 变量引用 + runningTask: string // 变量引用 + runningTaskPriority: string // 变量引用 + runningIsr2: string // 变量引用 + serviceTrace: string // 变量引用 + lastError: string // 变量引用 + currentAppMode: string // 变量引用 + }> +} + +/** + * 解析错误信息 + */ +export interface ORTIParseError { + message: string + line?: number + column?: number + token?: string + context?: string +} + +/** + * 解析结果 + */ +export interface ORTIParseResult { + success: boolean + data?: ORTIFile + errors: ORTIParseError[] + warnings: string[] +} + +/** + * 完整的 ORTI 文件结构 + */ +export interface ORTIFile { + id: string + name: string + // connector + connector?: { + type: string + device: string + options: Record + } + recordFile?: { + enable: boolean + name: string + } + cpuFreq: number + coreConfigs: { + coreId: number + isIdle?: boolean + id: number + type: number + name: string + color: string + activeInterval?: number + }[] + resourceConfigs: { + coreId: number + id: number + name: string + }[] + serviceConfigs: { + id: number + name: string + }[] + hostConfigs: { + id: number + name: string + }[] + // 版本段 + version: ORTIVersion + + // 声明段 (Declaration Section) + implementation: ORTIImplementation + + // 信息段 (Information Section) + osInstance: ORTIosInstance + + // 对象实例 + tasks: ORTITaskInstance[] + stacks: ORTIStackInstance[] + resources: ORTIResourceInstance[] + alarms: ORTIAlarmInstance[] + isrs: ORTIIsrInstance[] + configs: ORTIConfigInstance[] +} + +/** + * 解析 ORTI 文件内容 + * @param input ORTI 文件内容字符串 + * @returns 解析结果 + */ +export function parseORTI(input: string): ORTIParseResult { + const result: ORTIParseResult = { + success: false, + errors: [], + warnings: [] + } + + try { + // 词法分析 + const lexingResult = ORTILexer.tokenize(input) + + if (lexingResult.errors.length > 0) { + result.errors.push( + ...lexingResult.errors.map((error) => ({ + message: error.message, + line: error.line, + column: error.column, + context: i18next.t('database.ortiParse.errors.lexicalAnalysis') + })) + ) + } + + // 语法分析 + + ortiParser.input = lexingResult.tokens + const cst = ortiParser.ortiFile() + + if (ortiParser.errors.length > 0) { + result.errors.push( + ...ortiParser.errors.map((error) => ({ + message: error.message, + line: error.token?.startLine, + column: error.token?.startColumn, + token: error.token?.image, + context: i18next.t('database.ortiParse.errors.syntaxAnalysis') + })) + ) + } + + // 如果有严重错误,停止处理 + if (result.errors.length > 0) { + return result + } + + // 语义分析和 AST 构建 + const ortiFile = ortiVisitor.visit(cst) as ORTIFile + + result.success = true + result.data = ortiFile + + //parse coreConfigs + if (ortiFile.tasks) { + for (const task of ortiFile.tasks) { + const randomColor = `rgb(${Math.floor(Math.random() * 255)},${Math.floor(Math.random() * 255)},${Math.floor(Math.random() * 255)})` + //like IS_TCBCore0[10].taskState, Os_TCBCore_0[10], xxxxcore_0[10]zzz, or core0[5] + const string = task.state.toLowerCase().trim() + // Extract coreid: match "core_123" or "core123" format + const coreIdRegex = /core_?(\d+)/ + // Extract taskid: match number inside brackets [123] + const taskIdRegex = /\[(\d+)\]/ + + const coreMatch = string.match(coreIdRegex) + const taskMatch = string.match(taskIdRegex) + + const coreId = coreMatch ? parseInt(coreMatch[1]) : 0 + const taskId = taskMatch ? parseInt(taskMatch[1]) : 0 + + ortiFile.coreConfigs.push({ + id: taskId, + name: task.name, + coreId: coreId, + type: 0, + color: randomColor + }) + } + } + if (ortiFile.isrs) { + for (const isr of ortiFile.isrs) { + const string = isr.state.toLowerCase().trim() + const coreIdRegex = /core_?(\d+)/ + const taskIdRegex = /\[(\d+)\]/ + const coreMatch = string.match(coreIdRegex) + const taskIdMatch = string.match(taskIdRegex) + + const coreId = coreMatch ? parseInt(coreMatch[1]) : 0 + const taskId = taskIdMatch ? parseInt(taskIdMatch[1]) : 0 + + const randomColor = `rgb(${Math.floor(Math.random() * 255)},${Math.floor(Math.random() * 255)},${Math.floor(Math.random() * 255)})` + ortiFile.coreConfigs.push({ + id: taskId, + name: isr.name, + coreId: coreId, + type: 1, + color: randomColor + }) + } + } + //parse resourceConfigs + if (ortiFile.resources) { + for (const resource of ortiFile.resources) { + const string = resource.state.toLowerCase().trim() + const coreIdRegex = /core_?(\d+)/ + const taskIdRegex = /\[(\d+)\]/ + const coreMatch = string.match(coreIdRegex) + const taskIdMatch = string.match(taskIdRegex) + + const coreId = coreMatch ? parseInt(coreMatch[1]) : 0 + const taskId = taskIdMatch ? parseInt(taskIdMatch[1]) : 0 + + ortiFile.resourceConfigs.push({ + id: taskId, + name: resource.name, + coreId: coreId + }) + } + } + + //parse serviceConfigs + const defaultServiceConfigs = [ + { + id: 0, + name: 'GetApplicationID Start' + }, + { + id: 1, + name: 'GetApplicationID Return' + }, + { + id: 2, + name: 'GetISRID Start' + }, + { + id: 3, + name: 'GetISRID Return' + }, + { + id: 4, + name: 'CallTrustedFunction Start' + }, + { + id: 5, + name: 'CallTrustedFunction Return' + }, + { + id: 6, + name: 'CheckISRMemoryAccess Start' + }, + { + id: 7, + name: 'CheckISRMemoryAccess Return' + }, + { + id: 8, + name: 'CheckTaskMemoryAccess Start' + }, + { + id: 9, + name: 'CheckTaskMemoryAccess Return' + }, + { + id: 10, + name: 'CheckObjectAccess Start' + }, + { + id: 11, + name: 'CheckObjectAccess Return' + }, + { + id: 12, + name: 'CheckObjectOwnership Start' + }, + { + id: 13, + name: 'CheckObjectOwnership Return' + }, + { + id: 14, + name: 'StartScheduleTableRel Start' + }, + { + id: 15, + name: 'StartScheduleTableRel Return' + }, + { + id: 16, + name: 'StartScheduleTableAbs Start' + }, + { + id: 17, + name: 'StartScheduleTableAbs Return' + }, + { + id: 18, + name: 'StopScheduleTable Start' + }, + { + id: 19, + name: 'StopScheduleTable Return' + }, + { + id: 20, + name: 'NextScheduleTable Start' + }, + { + id: 21, + name: 'NextScheduleTable Return' + }, + { + id: 22, + name: 'StartScheduleTableSynchron Start' + }, + { + id: 23, + name: 'StartScheduleTableSynchron Return' + }, + { + id: 24, + name: 'SyncScheduleTable Start' + }, + { + id: 25, + name: 'SyncScheduleTable Return' + }, + { + id: 26, + name: 'SetScheduleTableAsync Start' + }, + { + id: 27, + name: 'SetScheduleTableAsync Return' + }, + { + id: 28, + name: 'GetScheduleTableStatus Start' + }, + { + id: 29, + name: 'GetScheduleTableStatus Return' + }, + { + id: 30, + name: 'IncrementCounter Start' + }, + { + id: 31, + name: 'IncrementCounter Return' + }, + { + id: 32, + name: 'GetCounterValue Start' + }, + { + id: 33, + name: 'GetCounterValue Return' + }, + { + id: 34, + name: 'GetElapsedValue Start' + }, + { + id: 35, + name: 'GetElapsedValue Return' + }, + { + id: 36, + name: 'TerminateApplication Start' + }, + { + id: 37, + name: 'TerminateApplication Return' + }, + { + id: 38, + name: 'AllowAccess Start' + }, + { + id: 39, + name: 'AllowAccess Return' + }, + { + id: 40, + name: 'GetApplicationState Start' + }, + { + id: 41, + name: 'GetApplicationState Return' + }, + { + id: 42, + name: 'GetNumberOfActivatedCores Start' + }, + { + id: 43, + name: 'GetNumberOfActivatedCores Return' + }, + { + id: 44, + name: 'GetCoreID Start' + }, + { + id: 45, + name: 'GetCoreID Return' + }, + { + id: 46, + name: 'StartCore Start' + }, + { + id: 47, + name: 'StartCore Return' + }, + { + id: 48, + name: 'StartNonAutosarCore Start' + }, + { + id: 49, + name: 'StartNonAutosarCore Return' + }, + { + id: 50, + name: 'GetSpinlock Start' + }, + { + id: 51, + name: 'GetSpinlock Return' + }, + { + id: 52, + name: 'ReleaseSpinlock Start' + }, + { + id: 53, + name: 'ReleaseSpinlock Return' + }, + { + id: 54, + name: 'TryToGetSpinlock Start' + }, + { + id: 55, + name: 'TryToGetSpinlock Return' + }, + { + id: 56, + name: 'ShutdownAllCores Start' + }, + { + id: 57, + name: 'ShutdownAllCores Return' + }, + { + id: 58, + name: 'ControlIdle Start' + }, + { + id: 59, + name: 'ControlIdle Return' + }, + { + id: 60, + name: 'IocSend Start' + }, + { + id: 61, + name: 'IocSend Return' + }, + { + id: 62, + name: 'IocWrite Start' + }, + { + id: 63, + name: 'IocWrite Return' + }, + { + id: 64, + name: 'IocSendGroup Start' + }, + { + id: 65, + name: 'IocSendGroup Return' + }, + { + id: 66, + name: 'IocWriteGroup Start' + }, + { + id: 67, + name: 'IocWriteGroup Return' + }, + { + id: 68, + name: 'IocReceive Start' + }, + { + id: 69, + name: 'IocReceive Return' + }, + { + id: 70, + name: 'IocRead Start' + }, + { + id: 71, + name: 'IocRead Return' + }, + { + id: 72, + name: 'IocReceiveGroup Start' + }, + { + id: 73, + name: 'IocReceiveGroup Return' + }, + { + id: 74, + name: 'IocReadGroup Start' + }, + { + id: 75, + name: 'IocReadGroup Return' + }, + { + id: 76, + name: 'IocEmptyQueue Start' + }, + { + id: 77, + name: 'IocEmptyQueue Return' + }, + { + id: 78, + name: 'GetCurrentApplicationID Start' + }, + { + id: 79, + name: 'GetCurrentApplicationID Return' + }, + { + id: 80, + name: 'ReadPeripheral8 Start' + }, + { + id: 81, + name: 'ReadPeripheral8 Return' + }, + { + id: 82, + name: 'ReadPeripheral16 Start' + }, + { + id: 83, + name: 'ReadPeripheral16 Return' + }, + { + id: 84, + name: 'ReadPeripheral32 Start' + }, + { + id: 85, + name: 'ReadPeripheral32 Return' + }, + { + id: 86, + name: 'WritePeripheral8 Start' + }, + { + id: 87, + name: 'WritePeripheral8 Return' + }, + { + id: 88, + name: 'WritePeripheral16 Start' + }, + { + id: 89, + name: 'WritePeripheral16 Return' + }, + { + id: 90, + name: 'WritePeripheral32 Start' + }, + { + id: 91, + name: 'WritePeripheral32 Return' + }, + { + id: 92, + name: 'ModifyPeripheral8 Start' + }, + { + id: 93, + name: 'ModifyPeripheral8 Return' + }, + { + id: 94, + name: 'ModifyPeripheral32 Start' + }, + { + id: 95, + name: 'ModifyPeripheral32 Return' + }, + { + id: 96, + name: 'DisableInterruptSource Start' + }, + { + id: 97, + name: 'DisableInterruptSource Return' + }, + { + id: 98, + name: 'EnableInterruptSource Start' + }, + { + id: 99, + name: 'EnableInterruptSource Return' + }, + { + id: 100, + name: 'ClearPendingInterrupt Start' + }, + { + id: 101, + name: 'ClearPendingInterrupt Return' + }, + { + id: 102, + name: 'ActivateTaskAsyn Start' + }, + { + id: 103, + name: 'ActivateTaskAsyn Return' + }, + { + id: 104, + name: 'SetEventAsyn Start' + }, + { + id: 105, + name: 'SetEventAsyn Return' + }, + { + id: 106, + name: 'ModifyPeripheral16 Start' + }, + { + id: 107, + name: 'ModifyPeripheral16 Return' + }, + { + id: 108, + name: 'WaitAllEvents Start' + }, + { + id: 109, + name: 'WaitAllEvents Return' + }, + { + id: 110, + name: 'IocCallBackNotify Start' + }, + { + id: 111, + name: 'IocCallBackNotify Return' + }, + { + id: 112, + name: 'ActivateTask Start' + }, + { + id: 113, + name: 'ActivateTask Return' + }, + { + id: 114, + name: 'TerminateTask Start' + }, + { + id: 115, + name: 'TerminateTask Return' + }, + { + id: 116, + name: 'ChainTask Start' + }, + { + id: 117, + name: 'ChainTask Return' + }, + { + id: 118, + name: 'Schedule Start' + }, + { + id: 119, + name: 'Schedule Return' + }, + { + id: 120, + name: 'GetTaskID Start' + }, + { + id: 121, + name: 'GetTaskID Return' + }, + { + id: 122, + name: 'GetTaskState Start' + }, + { + id: 123, + name: 'GetTaskState Return' + }, + { + id: 124, + name: 'EnableAllInterrupts Start' + }, + { + id: 125, + name: 'EnableAllInterrupts Return' + }, + { + id: 126, + name: 'DisableAllInterrupts Start' + }, + { + id: 127, + name: 'DisableAllInterrupts Return' + }, + { + id: 128, + name: 'ResumeAllInterrupts Start' + }, + { + id: 129, + name: 'ResumeAllInterrupts Return' + }, + { + id: 130, + name: 'SuspendAllInterrupts Start' + }, + { + id: 131, + name: 'SuspendAllInterrupts Return' + }, + { + id: 132, + name: 'ResumeOSInterrupts Start' + }, + { + id: 133, + name: 'ResumeOSInterrupts Return' + }, + { + id: 134, + name: 'SuspendOSInterrupts Start' + }, + { + id: 135, + name: 'SuspendOSInterrupts Return' + }, + { + id: 136, + name: 'GetResource Start' + }, + { + id: 137, + name: 'GetResource Return' + }, + { + id: 138, + name: 'ReleaseResource Start' + }, + { + id: 139, + name: 'ReleaseResource Return' + }, + { + id: 140, + name: 'SetEvent Start' + }, + { + id: 141, + name: 'SetEvent Return' + }, + { + id: 142, + name: 'ClearEvent Start' + }, + { + id: 143, + name: 'ClearEvent Return' + }, + { + id: 144, + name: 'GetEvent Start' + }, + { + id: 145, + name: 'GetEvent Return' + }, + { + id: 146, + name: 'WaitEvent Start' + }, + { + id: 147, + name: 'WaitEvent Return' + }, + { + id: 148, + name: 'GetAlarmBase Start' + }, + { + id: 149, + name: 'GetAlarmBase Return' + }, + { + id: 150, + name: 'GetAlarm Start' + }, + { + id: 151, + name: 'GetAlarm Return' + }, + { + id: 152, + name: 'SetRelAlarm Start' + }, + { + id: 153, + name: 'SetRelAlarm Return' + }, + { + id: 154, + name: 'SetAbsAlarm Start' + }, + { + id: 155, + name: 'SetAbsAlarm Return' + }, + { + id: 156, + name: 'CancelAlarm Start' + }, + { + id: 157, + name: 'CancelAlarm Return' + }, + { + id: 158, + name: 'GetActiveApplicationMode Start' + }, + { + id: 159, + name: 'GetActiveApplicationMode Return' + }, + { + id: 160, + name: 'StartOS Start' + }, + { + id: 161, + name: 'StartOS Return' + }, + { + id: 162, + name: 'ShutdownOS Start' + }, + { + id: 163, + name: 'ShutdownOS Return' + } + ] + ortiFile.serviceConfigs = defaultServiceConfigs + //parse hookconfigs + const defaultHookConfigs = [ + { + id: 0, + name: 'ErrorHook Start' + }, + { + id: 1, + name: 'ErrorHook Return' + }, + { + id: 2, + name: 'PostTaskHook Start' + }, + { + id: 3, + name: 'PostTaskHook Return' + }, + { + id: 4, + name: 'PreTaskHook Start' + }, + { + id: 5, + name: 'PreTaskHook Return' + }, + { + id: 6, + name: 'ProtectionHook Start' + }, + { + id: 7, + name: 'ProtectionHook Return' + }, + { + id: 8, + name: 'StartupHook Start' + }, + { + id: 9, + name: 'StartupHook Return' + }, + { + id: 10, + name: 'ShutdownHook Start' + }, + { + id: 11, + name: 'ShutdownHook Return' + } + ] + ortiFile.hostConfigs = defaultHookConfigs + + return result + } catch (error) { + result.errors.push({ + message: + error instanceof Error + ? error.message + : i18next.t('database.ortiParse.errors.unknownParsingError'), + context: i18next.t('database.ortiParse.errors.parserException') + }) + return result + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/env.d.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/env.d.ts new file mode 100644 index 0000000..aafef95 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/env.d.ts @@ -0,0 +1,8 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/array.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/array.js new file mode 100644 index 0000000..57e3204 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/array.js @@ -0,0 +1,891 @@ +import Handlebars from 'handlebars' +import { isOptions, get, resultFn, isUndefined, valueFn } from './utils' +import { sortBy } from 'lodash' +import { isString } from 'lodash' +import { isNumber } from 'lodash' +import { isObject } from 'lodash' +const helpers = {} + +/** + * Returns all of the items in an array after the specified index. + * Opposite of [before](#before). + * + * ```handlebars + * + * {{after array 1}} + * + * ``` + * @param {Array} `array` Collection + * @param {Number} `n` Starting index (number of items to exclude) + * @return {Array} Array exluding `n` items. + * @api public + */ + +helpers.after = function (array, n) { + if (isUndefined(array)) return '' + return array.slice(n) +} + +/** + * Cast the given `value` to an array. + * + * ```handlebars + * {{arrayify "foo"}} + * + * ``` + * @param {any} `value` + * @return {Array} + * @api public + */ + +helpers.arrayify = function (value) { + return value ? (Array.isArray(value) ? value : [value]) : [] +} + +/** + * Return all of the items in the collection before the specified + * count. Opposite of [after](#after). + * + * ```handlebars + * + * {{before array 2}} + * + * ``` + * @param {Array} `array` + * @param {Number} `n` + * @return {Array} Array excluding items after the given number. + * @api public + */ + +helpers.before = function (array, n) { + if (isUndefined(array)) return '' + return array.slice(0, -n) +} + +/** + * ```handlebars + * + * {{#eachIndex array}} + * {{item}} is {{index}} + * {{/eachIndex}} + * ``` + * @param {Array} `array` + * @param {Object} `options` + * @return {String} + * @block + * @api public + */ + +helpers.eachIndex = function (array, options) { + let result = '' + for (let i = 0; i < array.length; i++) { + result += options.fn({ item: array[i], index: i }) + } + return result +} + +/** + * Block helper that filters the given array and renders the block for values that + * evaluate to `true`, otherwise the inverse block is returned. + * + * ```handlebars + * + * {{#filter array "foo"}}AAA{{else}}BBB{{/filter}} + * + * ``` + * @param {Array} `array` + * @param {any} `value` + * @param {Object} `options` + * @return {String} + * @block + * @api public + */ + +helpers.filter = function (array, value, options) { + let content = '' + let results = [] + + // filter on a specific property + const prop = options.hash && (options.hash.property || options.hash.prop) + if (prop) { + results = array.filter(function (val) { + return value === get(val, prop) + }) + } else { + // filter on a string value + results = array.filter(function (v) { + return value === v + }) + } + + if (results && results.length > 0) { + if (options.fn) { + for (let i = 0; i < results.length; i++) { + content += options.fn(results[i]) + } + return content + } else { + return results + } + } + if (isUndefined(options.inverse)) { + return [] + } else { + return options.inverse(this) + } +} + +/** + * Returns the first item, or first `n` items of an array. + * + * ```handlebars + * {{first "['a', 'b', 'c', 'd', 'e']" 2}} + * + * ``` + * @param {Array} `array` + * @param {Number} `n` Number of items to return, starting at `0`. + * @return {Array} + * @api public + */ + +helpers.first = function (array, n) { + if (isUndefined(array)) return '' + if (!isNumber(n)) { + return array[0] + } + return array.slice(0, n) +} + +/** + * Iterates over each item in an array and exposes the current item + * in the array as context to the inner block. In addition to + * the current array item, the helper exposes the following variables + * to the inner block: + * + * - `index` + * - `total` + * - `isFirst` + * - `isLast` + * + * Also, `@index` is exposed as a private variable, and additional + * private variables may be defined as hash arguments. + * + * ```handlebars + * + * + * {{#forEach accounts}} + * + * {{ name }} + * {{#unless isLast}}, {{/unless}} + * {{/forEach}} + * ``` + * @source + * @param {Array} `array` + * @return {String} + * @block + * @api public + */ + +helpers.forEach = function (array, options) { + const data = Handlebars.createFrame(options.data) + const len = array.length + let buffer = '' + let i = -1 + + while (++i < len) { + const item = array[i] + data.index = i + item.index = i + 1 + item.total = len + item.isFirst = i === 0 + item.isLast = i === len - 1 + buffer += options.fn(item, { data: data }) + } + return buffer +} + +/** + * Block helper that renders the block if an array has the + * given `value`. Optionally specify an inverse block to render + * when the array does not have the given value. + * + * ```handlebars + * + * {{#inArray array "d"}} + * foo + * {{else}} + * bar + * {{/inArray}} + * + * ``` + * @param {Array} `array` + * @param {any} `value` + * @param {Object} `options` + * @return {String} + * @block + * @api public + */ + +function indexOf(array, value) { + for (let i = 0, len = array.length; i < len; i++) { + if (JSON.stringify(array[i]) == JSON.stringify(value)) { + return i + } + } + return -1 +} + +helpers.inArray = function (array, value, options) { + return valueFn(indexOf(array, value) > -1, this, options) +} + +helpers.indexOf = function (array, value) { + return indexOf(array, value) +} + +helpers.concatSub = function (array, name) { + let result = [] + for (const val of array) { + if (Array.isArray(val[name])) { + result = result.concat(val[name]) + } else { + if (isObject(val[name])) { + result = result.concat(Object.values(val[name])) + } else { + result = result.concat([val[name]]) + } + } + } + return result +} + +helpers.concat = function () { + let result = '' + const len = arguments.length - 1 + for (let i = 0; i < len; i++) { + result += arguments[i] + } + return result +} + +helpers.push = function (array, val) { + array.push(val) + return array +} + +helpers.push2 = function (array, val) { + array.push(val) +} + +/** + * Returns true if `value` is an es5 array. + * + * ```handlebars + * {{isArray "abc"}} + * + * + * + * {{isArray array}} + * + * ``` + * @param {any} `value` The value to test. + * @return {Boolean} + * @api public + */ + +helpers.isArray = function (value) { + return Array.isArray(value) +} + +/** + * Returns the item from `array` at index `idx`. + * + * ```handlebars + * + * {{itemAt array 1}} + * + * ``` + * @param {Array} `array` + * @param {Number} `idx` + * @return {any} `value` + * @block + * @api public + */ + +helpers.itemAt = function (array, idx) { + array = resultFn(array) + if (Array.isArray(array)) { + idx = isNumber(idx) ? +idx : 0 + if (idx < 0) { + return array[array.length + idx] + } + if (idx < array.length) { + return array[idx] + } + } +} + +/** + * Join all elements of array into a string, optionally using a + * given separator. + * + * ```handlebars + * + * {{join array}} + * + * + * {{join array '-'}} + * + * ``` + * @param {Array} `array` + * @param {String} `separator` The separator to use. Defaults to `, `. + * @return {String} + * @api public + */ + +helpers.join = function (array, separator) { + if (typeof array === 'string') return array + if (!Array.isArray(array)) return '' + separator = isString(separator) ? separator : ', ' + return array.join(separator) +} + +/** + * Returns true if the the length of the given `value` is equal + * to the given `length`. Can be used as a block or inline helper. + * + * @param {Array|String} `value` + * @param {Number} `length` + * @param {Object} `options` + * @return {String} + * @block + * @api public + */ + +helpers.equalsLength = function (value, length, options) { + if (isOptions(length)) { + options = length + length = 0 + } + + let len = 0 + if (typeof value === 'string' || Array.isArray(value)) { + len = value.length + } + + return valueFn(len === length, this, options) +} + +/** + * Returns the last item, or last `n` items of an array or string. + * Opposite of [first](#first). + * + * ```handlebars + * + * + * {{last value}} + * + * + * {{last value 2}} + * + * + * {{last value 3}} + * + * ``` + * @param {Array|String} `value` Array or string. + * @param {Number} `n` Number of items to return from the end of the array. + * @return {Array} + * @api public + */ + +helpers.last = function (value, n) { + if (!Array.isArray(value) && typeof value !== 'string') { + return '' + } + if (!isNumber(n)) { + return value[value.length - 1] + } + return value.slice(-Math.abs(n)) +} + +/** + * Returns the length of the given string or array. + * + * ```handlebars + * {{length '["a", "b", "c"]'}} + * + * + * + * {{length myArray}} + * + * + * + * {{length myObject}} + * + * ``` + * @param {Array|Object|String} `value` + * @return {Number} The length of the value. + * @api public + */ + +helpers.length = function (value) { + if (isObject(value) && !isOptions(value)) { + value = Object.keys(value) + } + if (typeof value === 'string' || Array.isArray(value)) { + return value.length + } + return 0 +} + +/** + * Alias for [equalsLength](#equalsLength) + * + * @api public + */ + +helpers.lengthEqual = helpers.equalsLength + +/** + * Returns a new array, created by calling `function` on each + * element of the given `array`. For example, + * + * ```handlebars + * + * {{map array double}} + * + * ``` + * + * @param {Array} `array` + * @param {Function} `fn` + * @return {String} + * @api public + */ + +helpers.map = function (array, iter) { + if (!Array.isArray(array)) return '' + const len = array.length + const res = new Array(len) + let i = -1 + + if (typeof iter !== 'function') { + return array + } + + while (++i < len) { + res[i] = iter(array[i], i, array) + } + return res +} + +/** + * Map over the given object or array or objects and create an array of values + * from the given `prop`. Dot-notation may be used (as a string) to get + * nested properties. + * + * ```handlebars + * // {{pluck items "data.title"}} + * + * ``` + * @param {Array|Object} `collection` + * @param {Function} `prop` + * @return {String} + * @api public + */ + +helpers.pluck = function (arr, prop) { + if (isUndefined(arr)) return '' + const res = [] + for (let i = 0; i < arr.length; i++) { + const val = get(arr[i], prop) + if (typeof val !== 'undefined') { + res.push(val) + } + } + return res +} + +/** + * Reverse the elements in an array, or the characters in a string. + * + * ```handlebars + * + * {{reverse value}} + * + * + * {{reverse value}} + * + * ``` + * @param {Array|String} `value` + * @return {Array|String} Returns the reversed string or array. + * @api public + */ + +helpers.reverse = function (val) { + if (Array.isArray(val)) { + val.reverse() + return val + } + if (val && typeof val === 'string') { + return val.split('').reverse().join('') + } +} + +/** + * Block helper that returns the block if the callback returns true + * for some value in the given array. + * + * ```handlebars + * + * {{#some array isString}} + * Render me if the array has a string. + * {{else}} + * Render me if it doesn't. + * {{/some}} + * + * ``` + * @param {Array} `array` + * @param {Function} `iter` Iteratee + * @param {Options} Handlebars provided options object + * @return {String} + * @block + * @api public + */ + +helpers.some = function (array, iter, options) { + if (Array.isArray(array)) { + for (let i = 0; i < array.length; i++) { + if (iter(array[i], i, array)) { + return options.fn(this) + } + } + } + return options.inverse(this) +} + +/** + * Sort the given `array`. If an array of objects is passed, + * you may optionally pass a `key` to sort on as the second + * argument. You may alternatively pass a sorting function as + * the second argument. + * + * ```handlebars + * + * {{sort array}} + * + * ``` + * + * @param {Array} `array` the array to sort. + * @param {String|Function} `key` The object key to sort by, or sorting function. + * @api public + */ + +helpers.sort = function (array, options) { + if (!Array.isArray(array)) return '' + if (get(options, 'hash.reverse')) { + return array.sort().reverse() + } + return array.sort() +} + +/** + * Sort an `array`. If an array of objects is passed, + * you may optionally pass a `key` to sort on as the second + * argument. You may alternatively pass a sorting function as + * the second argument. + * + * ```handlebars + * + * {{sortBy array "a"}} + * + * ``` + * + * @param {Array} `array` the array to sort. + * @param {String|Function} `props` One or more properties to sort by, or sorting functions to use. + * @api public + */ + +helpers.sortBy = function (array, prop, options) { + if (!Array.isArray(array)) return '' + const args = [].slice.call(arguments) + // remove handlebars options + args.pop() + + if (!isString(prop) && typeof prop !== 'function' && !Array.isArray(prop)) { + return array.sort() + } + const ret = sortBy(array, prop) + return ret +} + +/** + * Use the items in the array _after_ the specified index + * as context inside a block. Opposite of [withBefore](#withBefore). + * + * ```handlebars + * + * {{#withAfter array 3}} + * {{this}} + * {{/withAfter}} + * + * ``` + * @param {Array} `array` + * @param {Number} `idx` + * @param {Object} `options` + * @return {Array} + * @block + * @api public + */ + +helpers.withAfter = function (array, idx, options) { + if (!Array.isArray(array)) return '' + array = array.slice(idx) + let result = '' + + for (let i = 0; i < array.length; i++) { + result += options.fn(array[i]) + } + return result +} + +/** + * Use the items in the array _before_ the specified index + * as context inside a block. Opposite of [withAfter](#withAfter). + * + * ```handlebars + * + * {{#withBefore array 3}} + * {{this}} + * {{/withBefore}} + * + * ``` + * @param {Array} `array` + * @param {Number} `idx` + * @param {Object} `options` + * @return {Array} + * @block + * @api public + */ + +helpers.withBefore = function (array, idx, options) { + if (!Array.isArray(array)) return '' + array = array.slice(0, -idx) + let result = '' + + for (let i = 0; i < array.length; i++) { + result += options.fn(array[i]) + } + return result +} + +/** + * Use the first item in a collection inside a handlebars + * block expression. Opposite of [withLast](#withLast). + * + * ```handlebars + * + * {{#withFirst array}} + * {{this}} + * {{/withFirst}} + * + * ``` + * @param {Array} `array` + * @param {Number} `idx` + * @param {Object} `options` + * @return {String} + * @block + * @api public + */ + +helpers.withFirst = function (array, idx, options) { + if (isUndefined(array)) return '' + array = resultFn(array) + + if (!isUndefined(idx)) { + idx = parseFloat(resultFn(idx)) + } + + if (isUndefined(idx)) { + options = idx + return options.fn(array[0]) + } + + array = array.slice(0, idx) + let result = '' + for (let i = 0; i < array.length; i++) { + result += options.fn(array[i]) + } + return result +} + +/** + * Block helper that groups array elements by given group `size`. + * + * ```handlebars + * + * {{#withGroup array 4}} + * {{#each this}} + * {{.}} + * {{each}} + *
+ * {{/withGroup}} + * + * + * + * ``` + * @param {Array} `array` The array to iterate over + * @param {Number} `size` The desired length of each array "group" + * @param {Object} `options` Handlebars options + * @return {String} + * @block + * @api public + */ + +helpers.withGroup = function (array, size, options) { + let result = '' + if (Array.isArray(array) && array.length > 0) { + let subcontext = [] + for (let i = 0; i < array.length; i++) { + if (i > 0 && i % size === 0) { + result += options.fn(subcontext) + subcontext = [] + } + subcontext.push(array[i]) + } + result += options.fn(subcontext) + } + return result +} + +/** + * Use the last item or `n` items in an array as context inside a block. + * Opposite of [withFirst](#withFirst). + * + * ```handlebars + * + * {{#withLast array}} + * {{this}} + * {{/withLast}} + * + * ``` + * @param {Array} `array` + * @param {Number} `idx` The starting index. + * @param {Object} `options` + * @return {String} + * @block + * @api public + */ + +helpers.withLast = function (array, idx, options) { + if (isUndefined(array)) return '' + array = resultFn(array) + + if (!isUndefined(idx)) { + idx = parseFloat(resultFn(idx)) + } + + if (isUndefined(idx)) { + options = idx + return options.fn(array[array.length - 1]) + } + + array = array.slice(-idx) + let len = array.length, + i = -1 + let result = '' + while (++i < len) { + result += options.fn(array[i]) + } + return result +} + +/** + * Block helper that sorts a collection and exposes the sorted + * collection as context inside the block. + * + * ```handlebars + * + * {{#withSort array}}{{this}}{{/withSort}} + * + * ``` + * @param {Array} `array` + * @param {String} `prop` + * @param {Object} `options` Specify `reverse="true"` to reverse the array. + * @return {String} + * @block + * @api public + */ + +helpers.withSort = function (array, prop, options) { + if (isUndefined(array)) return '' + let result = '' + + if (isUndefined(prop)) { + options = prop + + array = array.sort() + if (get(options, 'hash.reverse')) { + array = array.reverse() + } + + for (let i = 0, len = array.length; i < len; i++) { + result += options.fn(array[i]) + } + return result + } + + array.sort(function (a, b) { + a = get(a, prop) + b = get(b, prop) + return a > b ? 1 : a < b ? -1 : 0 + }) + + if (get(options, 'hash.reverse')) { + array = array.reverse() + } + + let alen = array.length, + j = -1 + while (++j < alen) { + result += options.fn(array[j]) + } + return result +} + +/** + * Block helper that return an array with all duplicate + * values removed. Best used along with a [each](#each) helper. + * + * ```handlebars + * + * {{#each (unique array)}}{{.}}{{/each}} + * + * ``` + * @param {Array} `array` + * @param {Object} `options` + * @return {Array} + * @api public + */ + +helpers.unique = function (array, options) { + if (isUndefined(array)) return '' + + return array.filter(function (item, index, arr) { + return arr.indexOf(item) === index + }) +} + +helpers.splice = function (array, start, deleteCount, ...items) { + const r = items.slice(0, -1) + array.splice(start, deleteCount, ...r) +} + +for (const key of Object.keys(helpers)) { + Handlebars.registerHelper(key, helpers[key]) +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/comparison.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/comparison.js new file mode 100644 index 0000000..6de76d7 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/comparison.js @@ -0,0 +1,616 @@ +/* eslint-disable prefer-rest-params */ +/* eslint-disable no-var */ +import Handlebars from 'handlebars' +import { containsFn, valueFn, isOptions } from './utils' +import { isString } from 'lodash' +import { isNumber } from 'lodash' +import { isObject } from 'lodash' +import { has } from 'lodash' +import falsey from './falsey' +const helpers = {} + +function isEven(n) { + return n % 2 == 0 +} +/** + * Helper that renders the block if **both** of the given values + * are truthy. If an inverse block is specified it will be rendered + * when falsy. Works as a block helper, inline helper or + * subexpression. + * + * ```handlebars + * + * {{#and great magnificent}}A{{else}}B{{/and}} + * + * ``` + * @param {any} `a` + * @param {any} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} + * @block + * @api public + */ + +helpers.and = function () { + var len = arguments.length - 1 + var options = arguments[len] + var val = true + + for (var i = 0; i < len; i++) { + if (!arguments[i]) { + val = false + break + } + } + + return valueFn(val, this, options) +} + +/** + * Render a block when a comparison of the first and third + * arguments returns true. The second argument is + * the [arithemetic operator][operators] to use. You may also + * optionally specify an inverse block to render when falsy. + * + * @param `a` + * @param `operator` The operator to use. Operators must be enclosed in quotes: `">"`, `"="`, `"<="`, and so on. + * @param `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or if specified the inverse block is rendered if falsey. + * @block + * @api public + */ + +helpers.compare = function (a, operator, b, options) { + /*eslint eqeqeq: 0*/ + + if (arguments.length < 4) { + throw new Error('handlebars Helper {{compare}} expects 4 arguments') + } + + var result + switch (operator) { + case '==': + result = a == b + break + case '===': + result = a === b + break + case '!=': + result = a != b + break + case '!==': + result = a !== b + break + case '<': + result = a < b + break + case '>': + result = a > b + break + case '<=': + result = a <= b + break + case '>=': + result = a >= b + break + case 'typeof': + result = typeof a === b + break + default: { + throw new Error('helper {{compare}}: invalid operator: `' + operator + '`') + } + } + + return valueFn(result, this, options) +} + +/** + * Block helper that renders the block if `collection` has the + * given `value`, using strict equality (`===`) for comparison, + * otherwise the inverse block is rendered (if specified). If a + * `startIndex` is specified and is negative, it is used as the + * offset from the end of the collection. + * + * ```handlebars + * + * {{#contains array "d"}} + * This will not be rendered. + * {{else}} + * This will be rendered. + * {{/contains}} + * ``` + * @param {Array|Object|String} `collection` The collection to iterate over. + * @param {any} `value` The value to check for. + * @param {Number} `[startIndex=0]` Optionally define the starting index. + * @param {Object} `options` Handlebars provided options object. + * @block + * @api public + */ + +helpers.contains = function (collection, value, startIndex, options) { + if (typeof startIndex === 'object') { + options = startIndex + startIndex = undefined + } + var val = containsFn(collection, value, startIndex) + return valueFn(val, this, options) +} + +/** + * Returns the first value that is not undefined, otherwise the "default" value is returned. + * + * @param {any} `value` + * @param {any} `defaultValue` + * @return {String} + * @alias .or + * @api public + */ + +helpers.default = function () { + for (var i = 0; i < arguments.length - 1; i++) { + if (arguments[i] != null) return arguments[i] + } + return '' +} + +/** + * Block helper that renders a block if `a` is **equal to** `b`. + * If an inverse block is specified it will be rendered when falsy. + * You may optionally use the `compare=""` hash argument for the + * second value. + * + * @param {String} `a` + * @param {String} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @alias is + * @block + * @api public + */ + +helpers.eq = function (a, b, options) { + if (arguments.length === 2) { + options = b + b = options.hash.compare + } + return valueFn(a === b, this, options) +} + +/** + * Block helper that renders a block if `a` is **greater than** `b`. + * + * If an inverse block is specified it will be rendered when falsy. + * You may optionally use the `compare=""` hash argument for the + * second value. + * + * @param {String} `a` + * @param {String} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.gt = function (a, b, options) { + if (arguments.length === 2) { + options = b + b = options.hash.compare + } + return valueFn(a > b, this, options) +} + +/** + * Block helper that renders a block if `a` is **greater than or + * equal to** `b`. + * + * If an inverse block is specified it will be rendered when falsy. + * You may optionally use the `compare=""` hash argument for the + * second value. + * + * @param {String} `a` + * @param {String} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.gte = function (a, b, options) { + if (arguments.length === 2) { + options = b + b = options.hash.compare + } + return valueFn(a >= b, this, options) +} + +/** + * Block helper that renders a block if `value` has `pattern`. + * If an inverse block is specified it will be rendered when falsy. + * + * @param {any} `val` The value to check. + * @param {any} `pattern` The pattern to check for. + * @param {Object} `options` Handlebars provided options object + * @return {String} + * @block + * @api public + */ + +helpers.has = function (value, pattern, options) { + if (isOptions(value)) { + options = value + pattern = null + value = null + } + + if (isOptions(pattern)) { + options = pattern + pattern = null + } + + if (value === null) { + return valueFn(false, this, options) + } + + if (arguments.length === 2) { + return valueFn(has(this, value), this, options) + } + + if ((Array.isArray(value) || isString(value)) && isString(pattern)) { + if (value.indexOf(pattern) > -1) { + return options.fn(true, this, options) + } + } + if (isObject(value) && isString(pattern) && pattern in value) { + return options.fn(true, this, options) + } + return options.inverse(false, this, options) +} + +/** + * Returns true if the given `value` is falsey. Uses the [falsey][] + * library for comparisons. Please see that library for more information + * or to report bugs with this helper. + * + * @param {any} `val` + * @param {Options} `options` + * @return {Boolean} + * @api public + */ + +helpers.isFalsey = function (val, options) { + return valueFn(falsey(val), this, options) +} + +/** + * Returns true if the given `value` is truthy. Uses the [falsey][] + * library for comparisons. Please see that library for more information + * or to report bugs with this helper. + * + * @param {any} `val` + * @param {Options} `options` + * @return {Boolean} + * @api public + */ + +helpers.isTruthy = function (val, options) { + return valueFn(!falsey(val), this, options) +} + +/** + * Return true if the given value is an even number. + * + * ```handlebars + * {{#ifEven value}} + * render A + * {{else}} + * render B + * {{/ifEven}} + * ``` + * @param {Number} `number` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.ifEven = function (num, options) { + return valueFn(isEven(num), this, options) +} + +/** + * Conditionally renders a block if the remainder is zero when + * `a` operand is divided by `b`. If an inverse block is specified + * it will be rendered when the remainder is **not zero**. + * + * @param {Number} + * @param {Number} + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.ifNth = function (a, b, options) { + var isNth = isNumber(a) && isNumber(b) && b % a === 0 + return valueFn(isNth, this, options) +} + +/** + * Block helper that renders a block if `value` is **an odd number**. + * If an inverse block is specified it will be rendered when falsy. + * + * ```handlebars + * {{#ifOdd value}} + * render A + * {{else}} + * render B + * {{/ifOdd}} + * ``` + * @param {Object} `value` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.ifOdd = function (val, options) { + return valueFn(!isEven(val), this, options) +} + +/** + * Block helper that renders a block if `a` is **equal to** `b`. + * If an inverse block is specified it will be rendered when falsy. + * Similar to [eq](#eq) but does not do strict equality. + * + * @param {any} `a` + * @param {any} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} + * @block + * @api public + */ + +helpers.is = function (a, b, options) { + if (arguments.length === 2) { + options = b + b = options.hash.compare + } + return valueFn(a == b, this, options) +} + +/** + * Block helper that renders a block if `a` is **not equal to** `b`. + * If an inverse block is specified it will be rendered when falsy. + * Similar to [unlessEq](#unlesseq) but does not use strict equality for + * comparisons. + * + * @param {String} `a` + * @param {String} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} + * @block + * @api public + */ + +helpers.isnt = function (a, b, options) { + if (arguments.length === 2) { + options = b + b = options.hash.compare + } + return valueFn(a != b, this, options) +} + +/** + * Block helper that renders a block if `a` is **less than** `b`. + * + * If an inverse block is specified it will be rendered when falsy. + * You may optionally use the `compare=""` hash argument for the + * second value. + * + * @param {Object} `context` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.lt = function (a, b, options) { + if (arguments.length === 2) { + options = b + b = options.hash.compare + } + return valueFn(a < b, this, options) +} + +/** + * Block helper that renders a block if `a` is **less than or + * equal to** `b`. + * + * If an inverse block is specified it will be rendered when falsy. + * You may optionally use the `compare=""` hash argument for the + * second value. + * + * @param {Sring} `a` + * @param {Sring} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.lte = function (a, b, options) { + if (arguments.length === 2) { + options = b + b = options.hash.compare + } + return valueFn(a <= b, this, options) +} + +/** + * Block helper that renders a block if **neither of** the given values + * are truthy. If an inverse block is specified it will be rendered + * when falsy. + * + * @param {any} `a` + * @param {any} `b` + * @param `options` Handlebars options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.neither = function (a, b, options) { + return valueFn(!a && !b, this, options) +} + +/** + * Returns true if `val` is falsey. Works as a block or inline helper. + * + * @param {String} `val` + * @param {Object} `options` Handlebars provided options object + * @return {String} + * @block + * @api public + */ + +helpers.not = function (val, options) { + return valueFn(!val, this, options) +} + +/** + * Block helper that renders a block if **any of** the given values + * is truthy. If an inverse block is specified it will be rendered + * when falsy. + * + * ```handlebars + * {{#or a b c}} + * If any value is true this will be rendered. + * {{/or}} + * ``` + * + * @param {...any} `arguments` Variable number of arguments + * @param {Object} `options` Handlebars options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.or = function (/* any, any, ..., options */) { + var len = arguments.length - 1 + var options = arguments[len] + var val = false + + for (var i = 0; i < len; i++) { + if (arguments[i]) { + val = true + break + } + } + return valueFn(val, this, options) +} + +/** + * Block helper that always renders the inverse block **unless `a` is + * is equal to `b`**. + * + * @param {String} `a` + * @param {String} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} Inverse block by default, or block if falsey. + * @block + * @api public + */ + +helpers.unlessEq = function (a, b, options) { + if (isOptions(b)) { + options = b + b = options.hash.compare + } + return valueFn(a !== b, this, options) +} + +/** + * Block helper that always renders the inverse block **unless `a` is + * is greater than `b`**. + * + * @param {Object} `a` The default value + * @param {Object} `b` The value to compare + * @param {Object} `options` Handlebars provided options object + * @return {String} Inverse block by default, or block if falsey. + * @block + * @api public + */ + +helpers.unlessGt = function (a, b, options) { + if (isOptions(b)) { + options = b + b = options.hash.compare + } + return valueFn(a <= b, this, options) +} + +/** + * Block helper that always renders the inverse block **unless `a` is + * is less than `b`**. + * + * @param {Object} `a` The default value + * @param {Object} `b` The value to compare + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.unlessLt = function (a, b, options) { + if (isOptions(b)) { + options = b + b = options.hash.compare + } + return valueFn(a >= b, this, options) +} + +/** + * Block helper that always renders the inverse block **unless `a` is + * is greater than or equal to `b`**. + * + * @param {any} `a` + * @param {any} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.unlessGteq = function (a, b, options) { + if (isOptions(b)) { + options = b + b = options.hash.compare + } + return valueFn(a < b, this, options) +} + +/** + * Block helper that always renders the inverse block **unless `a` is + * is less than or equal to `b`**. + * + * @param {any} `a` + * @param {any} `b` + * @param {Object} `options` Handlebars provided options object + * @return {String} Block, or inverse block if specified and falsey. + * @block + * @api public + */ + +helpers.unlessLteq = function (a, b, options) { + if (isOptions(b)) { + options = b + b = options.hash.compare + } + return valueFn(a > b, this, options) +} + +for (const key of Object.keys(helpers)) { + Handlebars.registerHelper(key, helpers[key]) +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/falsey.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/falsey.js new file mode 100644 index 0000000..0708f70 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/falsey.js @@ -0,0 +1,47 @@ +/*! + * falsey + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict' + +function falsey(val, keywords) { + if (!val) return true + let words = keywords || falsey.keywords + if (!Array.isArray(words)) words = [words] + const lower = typeof val === 'string' ? val.toLowerCase() : null + for (const word of words) { + if (word === val) { + return true + } + if (word === lower) { + return true + } + } + return false +} + +falsey.keywords = [ + '0', + 'false', + 'nada', + 'nil', + 'nay', + 'nah', + 'negative', + 'no', + 'none', + 'nope', + 'nul', + 'null', + 'nix', + 'nyet', + 'uh-uh', + 'veto', + 'zero' +] + +export default falsey + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/math.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/math.js new file mode 100644 index 0000000..6bc8ca5 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/math.js @@ -0,0 +1,372 @@ +import Handlebars from 'handlebars' +import { isNumber } from 'lodash' +const helpers = {} + +/** + * Return the magnitude of `a`. + * + * @param {Number} `a` + * @return {Number} + * @api public + */ + +helpers.abs = function (num) { + if (!isNumber(num)) { + throw new TypeError('expected a number') + } + return Math.abs(num) +} + +/** + * Return the sum of `a` plus `b`. + * + * @param {Number} `a` + * @param {Number} `b` + * @return {Number} + * @api public + */ + +helpers.add = function (a, b) { + if (isNumber(a) && isNumber(b)) { + return Number(a) + Number(b) + } + if (typeof a === 'string' && typeof b === 'string') { + return a + b + } + return '' +} + +/** + * Returns the average of all numbers in the given array. + * + * ```handlebars + * {{avg "[1, 2, 3, 4, 5]"}} + * + * ``` + * + * @param {Array} `array` Array of numbers to add up. + * @return {Number} + * @api public + */ + +helpers.avg = function () { + const args = [].concat.apply([], arguments) + // remove handlebars options object + args.pop() + return helpers.sum(args) / args.length +} + +/** + * Get the `Math.ceil()` of the given value. + * + * @param {Number} `value` + * @return {Number} + * @api public + */ + +helpers.ceil = function (num) { + if (!isNumber(num)) { + throw new TypeError('expected a number') + } + return Math.ceil(num) +} + +/** + * Divide `a` by `b` + * + * @param {Number} `a` numerator + * @param {Number} `b` denominator + * @api public + */ + +helpers.divide = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return Number(a) / Number(b) +} + +/** + * Get the `Math.floor()` of the given value. + * + * @param {Number} `value` + * @return {Number} + * @api public + */ + +helpers.floor = function (num) { + if (!isNumber(num)) { + throw new TypeError('expected a number') + } + return Math.floor(num) +} + +/** + * Return the difference of `a` minus `b`. + * + * @param {Number} `a` + * @param {Number} `b` + * @alias subtract + * @api public + */ + +helpers.minus = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return Number(a) - Number(b) +} + +/** + * Get the remainder of a division operation. + * + * @param {Number} `a` + * @param {Number} `b` + * @return {Number} + * @api public + */ + +helpers.modulo = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return Number(a) % Number(b) +} + +/** + * Return the product of `a` times `b`. + * + * @param {Number} `a` factor + * @param {Number} `b` multiplier + * @return {Number} + * @alias times + * @api public + */ + +helpers.multiply = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return Number(a) * Number(b) +} + +/** + * Add `a` by `b`. + * + * @param {Number} `a` factor + * @param {Number} `b` multiplier + * @api public + */ + +helpers.plus = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return Number(a) + Number(b) +} + +/** + * Generate a random number between two values + * + * @param {Number} `min` + * @param {Number} `max` + * @return {String} + * @api public + */ + +/** + * Get the remainder when `a` is divided by `b`. + * + * @param {Number} `a` a + * @param {Number} `b` b + * @api public + */ + +helpers.remainder = function (a, b) { + return a % b +} + +/** + * Round the given number. + * + * @param {Number} `number` + * @return {Number} + * @api public + */ + +helpers.round = function (num) { + if (!isNumber(num)) { + throw new TypeError('expected a number') + } + return Math.round(num) +} + +/** + * Return the product of `a` minus `b`. + * + * @param {Number} `a` + * @param {Number} `b` + * @return {Number} + * @alias minus + * @api public + */ + +helpers.subtract = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return Number(a) - Number(b) +} + +/** + * Returns the sum of all numbers in the given array. + * + * ```handlebars + * {{sum "[1, 2, 3, 4, 5]"}} + * + * ``` + * @param {Array} `array` Array of numbers to add up. + * @return {Number} + * @api public + */ + +helpers.sum = function () { + const args = [].concat.apply([], arguments) + let len = args.length + let sum = 0 + + while (len--) { + if (isNumber(args[len])) { + sum += Number(args[len]) + } + } + return sum +} + +/** + * Multiply number `a` by number `b`. + * + * @param {Number} `a` factor + * @param {Number} `b` multiplier + * @return {Number} + * @alias multiply + * @api public + */ + +helpers.pow = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return Math.pow(Number(a), Number(b)) +} + +helpers.log = function (base, number) { + if (!isNumber(base)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(number)) { + throw new TypeError('expected the second argument to be a number') + } + return Math.log(number) / Math.log(base) +} +/** + * Generate a random number between two values + * + * @param {Number} `min` + * @param {Number} `max` + * @return {String} + * @api public + */ + +helpers.random = function (min, max) { + if (!isNumber(min)) { + throw new TypeError('expected minimum to be a number') + } + if (!isNumber(max)) { + throw new TypeError('expected maximum to be a number') + } + return Math.random() * (max - min) + min +} + +helpers.bitOr = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return a | b +} + +helpers.bitAnd = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return a & b +} + +helpers.bitXor = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return a ^ b +} + +helpers.bitNot = function (a) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + return ~a +} + +helpers.bitShiftLeft = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return a << b +} + +helpers.bitShiftRight = function (a, b) { + if (!isNumber(a)) { + throw new TypeError('expected the first argument to be a number') + } + if (!isNumber(b)) { + throw new TypeError('expected the second argument to be a number') + } + return a >> b +} + +for (const key of Object.keys(helpers)) { + Handlebars.registerHelper(key, helpers[key]) +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/number.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/number.js new file mode 100644 index 0000000..371aaca --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/number.js @@ -0,0 +1,46 @@ +import Handlebars from 'handlebars' +const helpers = {} +import { isNumber } from 'lodash' + +helpers.bytes = function (number, precision, options) { + if (number == null) return '0 B' + + if (!isNumber(number)) { + number = number.length + if (!number) return '0 B' + } + + if (!isNumber(precision)) { + precision = 2 + } + + const abbr = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + precision = Math.pow(10, precision) + number = Number(number) + + let len = abbr.length - 1 + while (len-- >= 0) { + const size = Math.pow(10, len * 3) + if (size <= number + 1) { + number = Math.round((number * precision) / size) / precision + number += ' ' + abbr[len] + break + } + } + + return number +} + +helpers.nToString = function (number, radix) { + if (number == null) return 0 + return Number(number).toString(radix) +} + +helpers.Number = function (number) { + return Number(number) +} + +for (const key of Object.keys(helpers)) { + Handlebars.registerHelper(key, helpers[key]) +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/object.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/object.js new file mode 100644 index 0000000..51c8007 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/object.js @@ -0,0 +1,57 @@ +import Handlebars from 'handlebars' +import { get } from './utils' +import { set } from 'lodash' +const helpers = {} + +helpers.get = function (prop, context, options) { + const val = get( prop,context) + if (options && options.fn) { + return val ? options.fn(val) : options.inverse(context) + } + return val +} + +helpers.set = function (context, path, value) { + set(context, path, value) + return context +} + +helpers.set2 = function (context, path, value) { + set(context, path, value) +} + +helpers.objLen = function (prop) { + if (typeof prop === 'object') { + const val = Object.keys(prop).length + return val + } else { + return 0 + } +} + +helpers.objKeys = function (prop) { + if (typeof prop === 'object') { + const val = Object.keys(prop) + return val + } else { + return [] + } +} + +helpers.objValues = function (prop) { + if (typeof prop === 'object') { + const val = Object.values(prop) + return val + } else { + return [] + } +} + +helpers.hasOwnProperty = function (obj, key) { + return obj.hasOwnProperty(key) +} + +for (const key of Object.keys(helpers)) { + Handlebars.registerHelper(key, helpers[key]) +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/string.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/string.js new file mode 100644 index 0000000..e57de58 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/string.js @@ -0,0 +1,791 @@ +import Handlebars from 'handlebars' +import { optionsFn } from './utils' +import { isString } from 'lodash' +import { isNumber } from 'lodash' +import { isObject } from 'lodash' +const helpers = {} + +/** + * Append the specified `suffix` to the given string. + * + * ```handlebars + * + * {{append item.stem ".html"}} + * + * ``` + * @param {String} `str` + * @param {String} `suffix` + * @return {String} + * @api public + */ + +helpers.append = function (str, suffix) { + if (typeof str === 'string' && typeof suffix === 'string') { + return str + suffix + } + return str +} + +function chop(str) { + if (!isString(str)) return '' + const re = /^[-_.\W\s]+|[-_.\W\s]+$/g + return str.trim().replace(re, '') +} +function changecase(str, fn) { + if (!isString(str)) return '' + if (str.length === 1) { + return str.toLowerCase() + } + + str = chop(str).toLowerCase() + + const re = /[-_.\W\s]+(\w|$)/g + return str.replace(re, function (_, ch) { + return fn(ch) + }) +} +/** + * camelCase the characters in the given `string`. + * + * ```handlebars + * {{camelcase "foo bar baz"}}; + * + * ``` + * @param {String} `string` The string to camelcase. + * @return {String} + * @api public + */ + +helpers.camelcase = function (str) { + if (!isString(str)) return '' + return changecase(str, function (ch) { + return ch.toUpperCase() + }) +} + +/** + * Capitalize the first word in a sentence. + * + * ```handlebars + * {{capitalize "foo bar baz"}} + * + * ``` + * @param {String} `str` + * @return {String} + * @api public + */ + +helpers.capitalize = function (str) { + if (!isString(str)) return '' + return str.charAt(0).toUpperCase() + str.slice(1) +} + +/** + * Capitalize all words in a string. + * + * ```handlebars + * {{capitalizeAll "foo bar baz"}} + * + * ``` + * @param {String} `str` + * @return {String} + * @api public + */ + +helpers.capitalizeAll = function (str) { + if (!isString(str)) return '' + if (isString(str)) { + return str.replace(/\w\S*/g, function (word) { + return helpers.capitalize(word) + }) + } +} + +/** + * Center a string using non-breaking spaces + * + * @param {String} `str` + * @param {String} `spaces` + * @return {String} + * @api public + */ + +helpers.center = function (str, spaces) { + if (!isString(str)) return '' + let space = '' + let i = 0 + while (i < spaces) { + space += ' ' + i++ + } + return space + str + space +} + +/** + * Like trim, but removes both extraneous whitespace **and + * non-word characters** from the beginning and end of a string. + * + * ```handlebars + * {{chop "_ABC_"}} + * + * + * {{chop "-ABC-"}} + * + * + * {{chop " ABC "}} + * + * ``` + * @param {String} `string` The string to chop. + * @return {String} + * @api public + */ + +helpers.chop = function (str) { + if (!isString(str)) return '' + return chop(str) +} + +/** + * dash-case the characters in `string`. Replaces non-word + * characters and periods with hyphens. + * + * ```handlebars + * {{dashcase "a-b-c d_e"}} + * + * ``` + * @param {String} `string` + * @return {String} + * @api public + */ + +helpers.dashcase = function (str) { + if (!isString(str)) return '' + return changecase(str, function (ch) { + return '-' + ch + }) +} + +/** + * dot.case the characters in `string`. + * + * ```handlebars + * {{dotcase "a-b-c d_e"}} + * + * ``` + * @param {String} `string` + * @return {String} + * @api public + */ + +helpers.dotcase = function (str) { + if (!isString(str)) return '' + return changecase(str, function (ch) { + return '.' + ch + }) +} + +/** + * Lowercase all of the characters in the given string. Alias for [lowercase](#lowercase). + * + * ```handlebars + * {{downcase "aBcDeF"}} + * + * ``` + * @param {String} `string` + * @return {String} + * @alias lowercase + * @api public + */ + +helpers.downcase = function () { + return helpers.lowercase.apply(this, arguments) +} + +/** + * Truncates a string to the specified `length`, and appends + * it with an elipsis, `…`. + * + * ```handlebars + * {{ellipsis (sanitize "foo bar baz"), 7}} + * + * {{ellipsis "foo bar baz", 7}} + * + * ``` + * @param {String} `str` + * @param {Number} `length` The desired length of the returned string. + * @return {String} The truncated string. + * @api public + */ + +helpers.ellipsis = function (str, limit) { + if (isString(str)) { + if (str.length <= limit) { + return str + } + return helpers.truncate(str, limit) + '…' + } +} + +/** + * Replace spaces in a string with hyphens. + * + * ```handlebars + * {{hyphenate "foo bar baz qux"}} + * + * ``` + * @param {String} `str` + * @return {String} + * @api public + */ + +helpers.hyphenate = function (str) { + if (!isString(str)) return '' + return str.split(' ').join('-') +} + +/** + * Return true if `value` is a string. + * + * ```handlebars + * {{isString "foo"}} + * + * ``` + * @param {String} `value` + * @return {Boolean} + * @api public + */ + +helpers.isString = function (value) { + return typeof value === 'string' +} + +/** + * Lowercase all characters in the given string. + * + * ```handlebars + * {{lowercase "Foo BAR baZ"}} + * + * ``` + * @param {String} `str` + * @return {String} + * @api public + */ + +helpers.lowercase = function (str) { + if (isObject(str) && str.fn) { + return str.fn(this).toLowerCase() + } + if (!isString(str)) return '' + return str.toLowerCase() +} + +/** + * Return the number of occurrences of `substring` within the + * given `string`. + * + * ```handlebars + * {{occurrences "foo bar foo bar baz" "foo"}} + * + * ``` + * @param {String} `str` + * @param {String} `substring` + * @return {Number} Number of occurrences + * @api public + */ + +helpers.occurrences = function (str, substring) { + if (!isString(str)) return '' + const len = substring.length + let pos = 0 + let n = 0 + + while ((pos = str.indexOf(substring, pos)) > -1) { + n++ + pos += len + } + return n +} + +/** + * PascalCase the characters in `string`. + * + * ```handlebars + * {{pascalcase "foo bar baz"}} + * + * ``` + * @param {String} `string` + * @return {String} + * @api public + */ + +helpers.pascalcase = function (str) { + if (!isString(str)) return '' + str = changecase(str, function (ch) { + return ch.toUpperCase() + }) + return str.charAt(0).toUpperCase() + str.slice(1) +} + +/** + * path/case the characters in `string`. + * + * ```handlebars + * {{pathcase "a-b-c d_e"}} + * + * ``` + * @param {String} `string` + * @return {String} + * @api public + */ + +helpers.pathcase = function (str) { + if (!isString(str)) return '' + return changecase(str, function (ch) { + return '/' + ch + }) +} + +/** + * Replace spaces in the given string with pluses. + * + * ```handlebars + * {{plusify "foo bar baz"}} + * + * ``` + * @param {String} `str` The input string + * @return {String} Input string with spaces replaced by plus signs + * @source Stephen Way + * @api public + */ + +helpers.plusify = function (str, ch) { + if (!isString(str)) return '' + if (!isString(ch)) ch = ' ' + return str.split(ch).join('+') +} + +/** + * Prepends the given `string` with the specified `prefix`. + * + * ```handlebars + * + * {{prepend val "foo-"}} + * + * ``` + * @param {String} `str` + * @param {String} `prefix` + * @return {String} + * @api public + */ + +helpers.prepend = function (str, prefix) { + return typeof str === 'string' && typeof prefix === 'string' ? prefix + str : str +} + +/** + * Render a block without processing mustache templates inside the block. + * + * ```handlebars + * {{{{#raw}}}} + * {{foo}} + * {{{{/raw}}}} + * + * ``` + * + * @param {Object} `options` + * @return {String} + * @block + * @api public + */ + +helpers.raw = function (options) { + let str = options.fn() + const opts = optionsFn(this, options) + if (opts.escape !== false) { + let idx = 0 + while ((idx = str.indexOf('{{', idx)) !== -1) { + if (str[idx - 1] !== '\\') { + str = str.slice(0, idx) + '\\' + str.slice(idx) + } + idx += 3 + } + } + return str +} + +/** + * Remove all occurrences of `substring` from the given `str`. + * + * ```handlebars + * {{remove "a b a b a b" "a "}} + * + * ``` + * @param {String} `str` + * @param {String} `substring` + * @return {String} + * @api public + */ + +helpers.remove = function (str, ch) { + if (!isString(str)) return '' + if (!isString(ch)) return str + return str.split(ch).join('') +} + +/** + * Remove the first occurrence of `substring` from the given `str`. + * + * ```handlebars + * {{remove "a b a b a b" "a"}} + * + * ``` + * @param {String} `str` + * @param {String} `substring` + * @return {String} + * @api public + */ + +helpers.removeFirst = function (str, ch) { + if (!isString(str)) return '' + if (!isString(ch)) return str + return str.replace(ch, '') +} + +/** + * Replace all occurrences of substring `a` with substring `b`. + * + * ```handlebars + * {{replace "a b a b a b" "a" "z"}} + * + * ``` + * @param {String} `str` + * @param {String} `a` + * @param {String} `b` + * @return {String} + * @api public + */ + +helpers.replace = function (str, a, b) { + if (!isString(str)) return '' + if (!isString(a)) return str + if (!isString(b)) b = '' + return str.split(a).join(b) +} + +/** + * Replace the first occurrence of substring `a` with substring `b`. + * + * ```handlebars + * {{replace "a b a b a b" "a" "z"}} + * + * ``` + * @param {String} `str` + * @param {String} `a` + * @param {String} `b` + * @return {String} + * @api public + */ + +helpers.replaceFirst = function (str, a, b) { + if (!isString(str)) return '' + if (!isString(a)) return str + if (!isString(b)) b = '' + return str.replace(a, b) +} + +// /** +// * Reverse a string. +// * +// * ```handlebars +// * {{reverse "abcde"}} +// * +// * ``` +// * @param {String} `str` +// * @return {String} +// * @api public +// */ + +// helpers.reverse = function (str) { +// if (!isString(str)) return ''; +// return str.split('').reverse().join(''); +// }; + +/** + * Sentence case the given string + * + * ```handlebars + * {{sentence "hello world. goodbye world."}} + * + * ``` + * @param {String} `str` + * @return {String} + * @api public + */ + +helpers.sentence = function (str) { + if (!isString(str)) return '' + // eslint-disable-next-line no-useless-escape + return str.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g, function (txt) { + return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase() + }) +} + +/** + * snake_case the characters in the given `string`. + * + * ```handlebars + * {{snakecase "a-b-c d_e"}} + * + * ``` + * @param {String} `string` + * @return {String} + * @api public + */ + +helpers.snakecase = function (str) { + if (!isString(str)) return '' + return changecase(str, function (ch) { + return '_' + ch + }) +} + +/** + * Split `string` by the given `character`. + * + * ```handlebars + * {{split "a,b,c" ","}} + * + * ``` + * @param {String} `string` The string to split. + * @return {String} `character` Default is an empty string. + * @api public + */ + +helpers.split = function (str, ch) { + if (!isString(str)) return '' + if (!isString(ch)) ch = ',' + return str.split(ch) +} + +/** + * Tests whether a string begins with the given prefix. + * + * ```handlebars + * {{#startsWith "Goodbye" "Hello, world!"}} + * Whoops + * {{else}} + * Bro, do you even hello world? + * {{/startsWith}} + * ``` + * @contributor Dan Fox + * @param {String} `prefix` + * @param {String} `testString` + * @param {String} `options` + * @return {String} + * @block + * @api public + */ + +helpers.startsWith = function (prefix, str, options) { + const args = [].slice.call(arguments) + options = args.pop() + if (isString(str) && str.indexOf(prefix) === 0) { + return options.fn(this) + } + if (typeof options.inverse === 'function') { + return options.inverse(this) + } + return '' +} + +/** + * Title case the given string. + * + * ```handlebars + * {{titleize "this is title case"}} + * + * ``` + * @param {String} `str` + * @return {String} + * @api public + */ + +helpers.titleize = function (str) { + if (!isString(str)) return '' + const title = str.replace(/[- _]+/g, ' ') + const words = title.split(' ') + let len = words.length + const res = [] + let i = 0 + while (len--) { + const word = words[i++] + res.push(helpers.capitalize(word)) + } + return res.join(' ') +} + +/** + * Removes extraneous whitespace from the beginning and end + * of a string. + * + * ```handlebars + * {{trim " ABC "}} + * + * ``` + * @param {String} `string` The string to trim. + * @return {String} + * @api public + */ + +helpers.trim = function (str) { + return typeof str === 'string' ? str.trim() : '' +} + +/** + * Removes extraneous whitespace from the beginning of a string. + * + * ```handlebars + * {{trim " ABC "}} + * + * ``` + * @param {String} `string` The string to trim. + * @return {String} + * @api public + */ + +helpers.trimLeft = function (str) { + if (isString(str)) { + return str.replace(/^\s+/, '') + } +} + +/** + * Removes extraneous whitespace from the end of a string. + * + * ```handlebars + * {{trimRight " ABC "}} + * + * ``` + * @param {String} `string` The string to trim. + * @return {String} + * @api public + */ + +helpers.trimRight = function (str) { + if (isString(str)) { + return str.replace(/\s+$/, '') + } +} + +/** + * Truncate a string to the specified `length`. Also see [ellipsis](#ellipsis). + * + * ```handlebars + * truncate("foo bar baz", 7); + * + * truncate(sanitize("foo bar baz", 7)); + * + * ``` + * @param {String} `str` + * @param {Number} `limit` The desired length of the returned string. + * @param {String} `suffix` Optionally supply a string to use as a suffix to + * denote when the string has been truncated. Otherwise an ellipsis (`…`) will be used. + * @return {String} The truncated string. + * @api public + */ + +helpers.truncate = function (str, limit, suffix) { + if (isString(str)) { + if (typeof suffix !== 'string') { + suffix = '' + } + if (str.length > limit) { + return str.slice(0, limit - suffix.length) + suffix + } + return str + } +} + +/** + * Truncate a string to have the specified number of words. + * Also see [truncate](#truncate). + * + * ```handlebars + * truncateWords("foo bar baz", 1); + * + * truncateWords("foo bar baz", 2); + * + * truncateWords("foo bar baz", 3); + * + * ``` + * @param {String} `str` + * @param {Number} `limit` The desired length of the returned string. + * @param {String} `suffix` Optionally supply a string to use as a suffix to + * denote when the string has been truncated. + * @return {String} The truncated string. + * @api public + */ + +helpers.truncateWords = function (str, count, suffix) { + if (isString(str) && isNumber(count)) { + if (typeof suffix !== 'string') { + suffix = '…' + } + + const num = Number(count) + let arr = str.split(/[ \t]/) + if (num > arr.length) { + arr = arr.slice(0, num) + } + + const val = arr.join(' ').trim() + return val + suffix + } +} + +/** + * Uppercase all of the characters in the given string. Alias for [uppercase](#uppercase). + * + * ```handlebars + * {{upcase "aBcDeF"}} + * + * ``` + * @param {String} `string` + * @return {String} + * @alias uppercase + * @api public + */ + +helpers.upcase = function () { + return helpers.uppercase.apply(this, arguments) +} + +/** + * Uppercase all of the characters in the given string. If used as a + * block helper it will uppercase the entire block. This helper + * does not support inverse blocks. + * + * ```handlebars + * {{uppercase "aBcDeF"}} + * + * ``` + * @related capitalize capitalizeAll + * @param {String} `str` The string to uppercase + * @param {Object} `options` Handlebars options object + * @return {String} + * @block + * @api public + */ + +helpers.uppercase = function (str) { + if (isObject(str) && str.fn) { + return str.fn(this).toUpperCase() + } + if (!isString(str)) return '' + return str.toUpperCase() +} + +for (const key of Object.keys(helpers)) { + Handlebars.registerHelper(key, helpers[key]) +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/utils.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/utils.js new file mode 100644 index 0000000..176dff8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/helper/utils.js @@ -0,0 +1,66 @@ +import { isObject, isNumber, get as _get } from 'lodash' + +export function isOptions(val) { + return isObject(val) && isObject(val.hash) +} + +export function get(val, prop) { + return _get(val, prop) +} + +export function resultFn(val) { + if (typeof val === 'function') { + return val.apply(this, [].slice.call(arguments, 1)) + } + return val +} + +export function isUndefined(val) { + return val == null || (isOptions(val) && val.hash != null) +} +export function isBlock(options) { + return ( + isOptions(options) && typeof options.fn === 'function' && typeof options.inverse === 'function' + ) +} +export function valueFn(val, context, options) { + if (isOptions(val)) { + return valueFn(null, val, options) + } + if (isOptions(context)) { + return valueFn(val, {}, context) + } + if (isBlock(options)) { + // eslint-disable-next-line no-extra-boolean-cast + return !!val ? options.fn(context) : options.inverse(context) + } + return val +} + +export function optionsFn(thisArg, locals, options) { + if (isOptions(thisArg)) { + return optionsFn({}, locals, thisArg) + } + if (isOptions(locals)) { + return optionsFn(thisArg, options, locals) + } + options = options || {} + if (!isOptions(options)) { + locals = Object.assign({}, locals, options) + } + let opts = Object.assign({}, locals, options.hash) + if (isObject(thisArg)) { + opts = Object.assign({}, thisArg.options, opts) + } + if (opts[options.name]) { + opts = Object.assign({}, opts[options.name], opts) + } + return opts +} +export function containsFn(val, obj, start) { + if (val == null || obj == null || !isNumber(val.length)) { + return false + } + return val.indexOf(obj, start) !== -1 +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/index.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/index.js new file mode 100644 index 0000000..bb8bfaa --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/helper/index.js @@ -0,0 +1,84 @@ +import Handlebars from 'handlebars' +import './helper/math' +import './helper/array' +import './helper/string' +import './helper/comparison' +import './helper/object' +import './helper/number' +import { isOptions, resultFn, isUndefined, valueFn } from './helper/utils' +import { get, set, sortBy, unset } from 'lodash' +import log from 'electron-log' +// import { isUndefined } from 'lodash' + +Handlebars.registerHelper('logFile', function (msg) { + log.log(msg) +}) + + +Handlebars.registerHelper('isUndefined', function (val, options) { + return valueFn(isUndefined(val), this, options) +}) + +Handlebars.registerHelper('isDefined', function (val, options) { + return valueFn(!isUndefined(val), this, options) +}) + +Handlebars.registerHelper('setVar', function (varName, varValue, options) { + if (!options.data.root) { + options.data.root = {} + } + try { + const v = JSON.parse(JSON.stringify(varValue)) + set(options.data.root, varName, v) + } catch (e) { + set(options.data.root, varName, varValue) + } +}) + +Handlebars.registerHelper('jsonParse', function (varName) { + return JSON.parse(varName) +}) + +Handlebars.registerHelper('jsonStringify', function (varName) { + return JSON.stringify(varName) +}) + +Handlebars.registerHelper('createArray', function (...args) { + return new Array(...args.slice(0, -1)) +}) + +Handlebars.registerHelper('createObject', function (name, url) { + return {} +}) + +Handlebars.registerHelper('error', function (val) { + throw new Error(`Generate Code Error:${val}`) +}) + + +Handlebars.registerHelper('times', function (n, block) { + // eslint-disable-next-line no-var + var accum = '' + // eslint-disable-next-line no-var + for (var i = 0; i < n; ++i) { + block.data.index = i + block.data.first = i === 0 + block.data.last = i === n - 1 + accum += block.fn(this) + } + return accum +}) + +Handlebars.registerHelper('range', function (start, end, block) { + // eslint-disable-next-line no-var + var accum = '' + // eslint-disable-next-line no-var + for (var i = start; i <= end; ++i) { + block.data.index = i + block.data.first = i === start + block.data.last = i === end + accum += block.fn(this) + } + return accum +}) + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/i18n.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/i18n.ts new file mode 100644 index 0000000..e05516c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/i18n.ts @@ -0,0 +1,85 @@ +import i18next from 'i18next' +import I18NextVue from 'i18next-vue' +import type { App } from 'vue' + +// 翻译资源缓存 +const resources: Record }> = {} + +// 加载指定语言的翻译 +async function loadLanguage(lang: string): Promise> { + try { + const allTranslations = await window.electron.ipcRenderer.invoke('get-all-translations', lang) + return allTranslations + } catch (error) { + console.error(`Failed to load translations for ${lang}:`, error) + return {} + } +} + +// 初始化 i18next - 只加载当前语言 +export const initRendererI18n = async (lng: string = 'en') => { + // check lng exists in supported languages + const supportedLanguages = await getSupportedLanguages() + if (!supportedLanguages.some((l) => l.code === lng)) { + lng = 'en' + } + + // 只加载当前语言的翻译 + const translations = await loadLanguage(lng) + + // 构建正确的 resources 结构: { lng: { translation: {...} } } + resources[lng] = { translation: translations } + + await i18next.init({ + lng, + fallbackLng: 'en', + resources, + ns: ['translation'], + defaultNS: 'translation', + debug: false, + interpolation: { + escapeValue: false + } + }) + return i18next +} + +// 切换语言(按需加载新语言) +export const reloadRendererTranslations = async (lng: string) => { + // 检查该语言是否已加载 + if (!resources[lng]) { + // 加载新语言的翻译 + const translations = await loadLanguage(lng) + resources[lng] = { translation: translations } + + // 添加到 i18next + i18next.addResourceBundle(lng, 'translation', translations, true, true) + } + + // 切换到新语言 + await i18next.changeLanguage(lng) + + // 保存语言偏好到 store (conf) + try { + await window.electron.ipcRenderer.invoke('set-language', lng) + } catch (error) { + console.error('Failed to save language preference:', error) + } +} + +// 获取支持的语言列表 +export const getSupportedLanguages = async () => { + try { + return await window.electron.ipcRenderer.invoke('get-supported-languages') + } catch (error) { + console.error('Failed to get supported languages:', error) + return [{ code: 'en', name: 'English', nativeName: 'English' }] + } +} + +// Vue 插件 +export const i18nPlugin = { + install: (app: App) => { + app.use(I18NextVue, { i18next }) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/main.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/main.ts new file mode 100644 index 0000000..0f03ceb --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/main.ts @@ -0,0 +1,199 @@ +import { createApp, markRaw } from 'vue' +import App from './App.vue' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' +import 'element-plus/theme-chalk/dark/css-vars.css' +import 'animate.css' +import router from './router' +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import { createPinia } from 'pinia' +import { VxeLoading, VxeTooltip } from 'vxe-pc-ui' +import { VxeUI } from 'vxe-table' + +import 'vxe-table/lib/style.css' +import 'vxe-pc-ui/lib/style.css' +import enUS from 'vxe-pc-ui/lib/language/en-US' +import VxeUIPluginRenderElement from '@vxe-ui/plugin-render-element' +import { Router } from 'vue-router' +import './helper' +import jQuery from 'jquery' +window.jQuery = jQuery +await import('jquery-ui/dist/jquery-ui.js') +import 'jquery-ui/dist/themes/base/jquery-ui.css' +import mitt from 'mitt' +import '@vxe-ui/plugin-render-element/dist/style.css' +import formCreate from '@form-create/element-ui' // 引入 FormCreate +import DataParseWorker from './worker/dataParse.ts?worker' +import fcDesigner from './views/uds/panel/panel-designer/index.js' +import log from 'electron-log' +import { useDataStore } from './stores/data' + +import { Layout } from './views/uds/layout' +import { useProjectStore } from './stores/project' +import { useRuntimeStore } from './stores/runtime' +import { assign, cloneDeep } from 'lodash' +import wujieVue from 'wujie-vue3' +import { initRendererI18n, i18nPlugin } from './i18n' + +const logChannel = new BroadcastChannel('ipc-log') +const formatReason = (reason: unknown) => { + if (reason instanceof Error) { + return reason.stack ?? `${reason.name}: ${reason.message}` + } + if (typeof reason === 'object') { + try { + return JSON.stringify(reason) + } catch (err) { + return `Unserializable reason: ${String(err)}` + } + } + return String(reason) +} + +// Global exception monitoring +window.addEventListener('error', (event) => { + if (event.message?.includes('ResizeObserver loop')) return + log.error('[GlobalError]', event.message, { + source: event.filename, + line: event.lineno, + column: event.colno, + stack: event.error?.stack + }) +}) + +window.addEventListener('unhandledrejection', (event) => { + log.error('[UnhandledRejection]', formatReason(event.reason)) +}) + +const dataChannel = new BroadcastChannel('ipc-data') +const projectChannel = new BroadcastChannel('ipc-project') +const runtimeChannel = new BroadcastChannel('ipc-runtime') +window.logBus = mitt() + +window.serviceDetail = window.electron?.ipcRenderer.sendSync('ipc-service-detail') + +VxeUI.use(VxeUIPluginRenderElement) +VxeUI.setI18n('en-US', enUS) +VxeUI.setLanguage('en-US') + +const pinia = createPinia() + +declare module 'pinia' { + export interface PiniaCustomProperties { + router: Router + } +} +pinia.use(({ store }) => { + store.router = markRaw(router) +}) + +const app = createApp(App) + +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) +} +app.use(pinia) +app.use(ElementPlus) +app.use(router) +app.use(VxeTooltip) +app.use(VxeLoading) +app.use(formCreate) +app.use(fcDesigner) +app.use(wujieVue) + +// 初始化 i18n +const savedLang = window.electron?.ipcRenderer.sendSync('electron-store-get', 'language') || 'en' +initRendererI18n(savedLang) +app.use(i18nPlugin) + +const dataStore = useDataStore() +const projectStore = useProjectStore() +const runtimeStore = useRuntimeStore() + +// 直接解析URL参数并赋值给window.params +const urlParams = new URLSearchParams(window.location.search) +window.params = {} +urlParams.forEach((value, key) => { + window.params[key] = value +}) +const id = window.params.id || 'main' + +//单向的 +if (window.params.id) { + router.push(`/${window.params.path}`) + logChannel.onmessage = (event) => { + //main tab + for (const key of Object.keys(event.data)) { + window.logBus.emit(key, { key, values: event.data[key] }) + } + } + dataChannel.onmessage = (event) => { + dataStore.$patch((state) => { + assign(state, event.data) + }) + } + dataChannel.postMessage(undefined) + projectChannel.onmessage = (event) => { + projectStore.$patch((state) => { + assign(state, event.data) + }) + } + projectChannel.postMessage(undefined) + runtimeChannel.onmessage = (event) => { + runtimeStore.$patch((state) => { + assign(state, event.data) + }) + } + runtimeChannel.postMessage(undefined) +} else { + const dataParseWorker = new DataParseWorker() + window.api?.getPort(id) + + window.dataParseWorker = dataParseWorker + dataParseWorker.onmessage = (event) => { + logChannel.postMessage(event.data) + //main tab + for (const key of Object.keys(event.data)) { + window.logBus.emit(key, { key, values: event.data[key] }) + } + } + window.onmessage = (event) => { + // event.source === window means the message is coming from the preload + // script, as opposed to from an + + ` + } +} + +// Add mermaid configuration before onMounted +const mermaidConfig = { + startOnLoad: false, + theme: 'default', + securityLevel: 'loose' +} + +// Add mermaid renderer +const mermaidRenderer = { + name: 'mermaid', + level: 'block', + start(src) { + return src.match(/```mermaid/)?.index + }, + tokenizer(src) { + const rule = /^```mermaid\n([\s\S]*?)\n```/ + const match = rule.exec(src) + if (match) { + return { + type: 'mermaid', + raw: match[0], + text: match[1].trim() + } + } + return undefined + }, + renderer(token) { + return `
${token.text}
` + } +} + +onMounted(() => { + window.electron.ipcRenderer + .invoke('ipc-examples') + .then((data: example[]) => { + templates.value = data + }) + .catch((err) => { + ElMessage.error(i18next.t('homeNew.loadTemplatesError')) + }) + marked = new Marked() + marked.use({ extensions: [videoRenderer, mermaidRenderer] }) + /** base url */ + marked.use(addLocalBaseUrl()) + + //bind href click event + document.getElementById('mainReadme')?.addEventListener('click', (e) => { + //if e is tag + if ((e.target as HTMLElement).tagName == 'A') { + e.preventDefault() + //get href + const href = (e.target as HTMLElement).getAttribute('href') + window.electron.ipcRenderer.send('ipc-open-link', href) + } + }) + + // Initialize mermaid + mermaid.initialize(mermaidConfig as any) +}) + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/plugin.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/plugin.vue new file mode 100644 index 0000000..b4e501c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/plugin.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/policy.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/policy.vue new file mode 100644 index 0000000..df95ca3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/policy.vue @@ -0,0 +1,54 @@ + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/readme.css b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/readme.css new file mode 100644 index 0000000..3e9c4b9 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/readme.css @@ -0,0 +1,187 @@ +#readme h1 { + counter-reset: h2; + font-size: 2em; + line-height: 1.2; + margin-top: 5px; + margin-bottom: 15px; +} + +#readme h2 { + counter-reset: h3; + font-size: 1.75em; + margin-top: 5px; + margin-bottom: 10px; +} + +#readme h3 { + counter-reset: h4; + font-size: 1.5em; +} + +#readme h4 { + counter-reset: h5; +} + +#readme h5 { + counter-reset: h6; +} + +#readme h2:before { + counter-increment: h2; +} + +#readme h3:before { + counter-increment: h3; +} + +#readme h4:before { + counter-increment: h4; +} + +#readme .heading-highlight { + background-color: var(--el-fill-color-light); +} + +#readme blockquote { + border-left: 4px solid var(--el-color-info); + padding: 0 15px; + color: var(--el-text-color-secondary); + margin-left: 0px; + margin-right: 0px; +} + +#readme li { + margin-top: 5px; + margin-bottom: 5px; +} + +#readme table { + padding: 0; + word-break: initial; +} +#readme table tr { + border: 1px solid var(--el-border-color); + margin: 0; + padding: 0; +} +#readme table tr:nth-child(2n) { + background-color: var(--el-color-info-light-7); +} +#readme table thead { + background-color: var(--el-color-primary-light-9); +} +#readme table th { + font-weight: bold; + border: 0.5px solid #dfe2e5; + border-bottom: 0; + margin: 0; + padding: 6px 13px; +} +#readme table td { + border: 0.5px solid #dfe2e5; + margin: 0; + padding: 6px 13px; +} + +#readme pre { + background-color: var(--el-color-info-light-9); + border-radius: 3px; + padding: 10px; + font-size: 0.95em; + white-space: pre; /* 保留换行符,不添加额外间隔 */ + overflow-x: auto; /* 添加水平滚动条以适应长行 */ +} + +#readme code { + font-size: 0.95em; + font-family: + -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', + 'Helvetica Neue', sans-serif; + border-radius: 3px; + background-color: var(--el-color-info-light-9); + padding: 2px 4px; +} + +#readme pre code { + font-size: 1em; + font-family: + -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', + 'Helvetica Neue', sans-serif; + background-color: var(--el-color-info-light-9); +} + +#readme table th:first-child, +table td:first-child { + margin-top: 0; +} + +#readme table th:last-child, +table td:last-child { + margin-bottom: 0; +} + +#readme table { + margin: 0.8em 0; + border-spacing: 0px; + width: 100%; +} + +#readme { + flex: 1; + counter-reset: h1; + margin-left: 15px; + color: var(--el-text-color); +} + +#readme::-webkit-scrollbar { + display: none; +} + +#readme-toc { + padding-left: 5px; + padding-top: 10px; + /* height: calc(100%-10px); */ /* hight is calc by ExampleProject.vue */ + right: 0px; + width: 250px; + box-shadow: -15px 5px 10px rgba(0, 0, 0, 0.01); +} + +#readme-toc li::marker { + color: transparent; +} + +#readme-toc li { + color: var(--el-text-color-secondary); + font-size: smaller; + list-style-type: none; + margin-left: 5px; + margin-top: 5px; + white-space: nowrap; /* 防止文字换行 */ + overflow: hidden; /* 隐藏溢出的部分 */ + text-overflow: ellipsis; /* 显示省略号 */ +} + +#readme-toc ul { + margin-top: 5px; + margin-bottom: 5px; + padding-left: 20px; +} + +#readme-toc li.level1 { + color: var(--el-text-color-regular); + font-size: medium; + font-weight: bold; +} + +/* Use this to fix the katex dialog bug */ +div.el-overlay.dialog-father > .el-overlay-dialog { + overflow: hidden; +} + +#readme img { + max-width: 600px; /* Limit the maximum width of the image */ + max-height: 400px; /* Limit the maximum height of the image */ + display: block; /* Ensure the image is treated as a block element */ + margin: 0 auto; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/update.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/update.vue new file mode 100644 index 0000000..3a236bb --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/update.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/user.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/user.vue new file mode 100644 index 0000000..1cfab75 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/home/user.vue @@ -0,0 +1,391 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/dataHandler.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/dataHandler.ts new file mode 100644 index 0000000..7a77782 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/dataHandler.ts @@ -0,0 +1,789 @@ +/* + Offline data provider worker + - Parses CSV lines into OsEvent + - Builds TimelineChart rows/states per core/type/id + - Responds to messages: loadCsv, getRowIds, getData +*/ + +import { OsEvent, TaskType, TaskStatus, IsrStatus, parseInfo, RunableStatus } from 'nodeCan/osEvent' +import { TimelineChart } from './timeline/time-graph-model' + +let isRuntime = false +function toNumberSafe(v: any): number { + if (v === undefined || v === null || v === '') return 0 + const n = Number(v) + return Number.isFinite(n) ? n : 0 +} + +function trimQuotes(s: string): string { + if (s == null) return '' + return s.replace(/^\s*"/, '').replace(/"\s*$/, '').trim() +} + +function convertTsToUs(rawTs: number, cpuFreq: number): number { + return Math.floor(rawTs / cpuFreq) +} + +function makeRowId(coreId: number, id: number, type: number): number { + return Number(coreId) * 1000000 + Number(id) * 1000 + Number(type) +} + +class OfflineDataProvider { + events: OsEvent[] = [] + rowids: number[] = [] + private absoluteStartNumber: number = 0 + private absoluteStart: bigint = BigInt(0) + private totalLength: bigint = BigInt(0) + perActor: Map = new Map() + private actorNames: Map = new Map() + currentTaskByCore: Map = new Map() + private coreConfigs: Array<{ + id: number + name: string + buttons: Array<{ name: string; color: string; id: string; numberId: number }> + }> = [] + private triggerConfig: { + enabled: boolean + type: TaskType | null + coreId: number | null + id: number | null + status: number | null + } = { + enabled: false, + type: null, + coreId: null, + id: null, + status: null + } + + constructor() {} + + /** + * 更新每个core当前正在运行的任务 + */ + private updateCurrentTask(e: OsEvent) { + if (e.type === TaskType.TASK) { + if (e.status === TaskStatus.START) { + // 任务开始,记录到当前core + this.currentTaskByCore.set(e.coreId, { type: e.type, id: e.id }) + } else if (e.status === TaskStatus.TERMINATE) { + // 任务结束,清除当前core的任务(如果匹配) + const current = this.currentTaskByCore.get(e.coreId) + if (current && current.type === e.type && current.id === e.id) { + this.currentTaskByCore.set(e.coreId, null) + } + } + } + } + + public buildIndexes() { + this.perActor.clear() + this.actorNames.clear() + this.currentTaskByCore.clear() + this.buildRowIds() + if (this.events.length === 0) { + this.absoluteStart = BigInt(0) + this.totalLength = BigInt(0) + return + } + let minTs = this.events[0].ts + let maxTs = this.events[0].ts + for (const e of this.events) { + // 更新每个core当前运行的任务 + this.updateCurrentTask(e) + const rid = makeRowId(e.coreId, e.id, e.type) + if (e.type === TaskType.TASK || e.type == TaskType.ISR) { + if (e.ts < minTs) minTs = e.ts + if (e.ts > maxTs) maxTs = e.ts + + if (!this.perActor.has(rid)) this.perActor.set(rid, []) + this.perActor.get(rid)!.push(e) + if (!this.actorNames.has(rid)) { + this.actorNames.set(rid, `${TaskType[e.type]}_${e.id}`) + } + } else if (e.type === TaskType.RUNABLE) { + const currentTask = this.currentTaskByCore.get(e.coreId) + if (currentTask) { + const lrid = makeRowId(e.coreId, currentTask.id, currentTask.type) + const lastEvent = this.perActor.get(lrid)!.at(-1)! + if (!lastEvent.children) { + lastEvent.children = {} + } + if (!lastEvent.children[rid]) { + lastEvent.children[rid] = [] + } + lastEvent.children[rid].push(e) + } + } + } + + this.absoluteStart = BigInt(minTs) + this.totalLength = BigInt(maxTs) - this.absoluteStart + } + + public appendEvents(newEvents: OsEvent[], cpuFreq: number) { + if (newEvents.length === 0) return + + // In runtime mode, set absoluteStart to the first event's timestamp if it's the first batch + if (isRuntime && this.events.length === 0 && newEvents.length > 0) { + const firstTs = Math.floor(newEvents[0].ts / cpuFreq) + this.absoluteStartNumber = firstTs + } + + //handle ts + for (const e of newEvents) { + e.ts = Math.floor(e.ts / cpuFreq) + // If runtime mode, subtract absoluteStart as offset + if (isRuntime) { + e.ts = e.ts - this.absoluteStartNumber + } + + // 更新每个core当前运行的任务 + this.updateCurrentTask(e) + this.events.push(e) + + // 检查新事件是否有触发,找到后立即发送消息 + if (this.triggerConfig.enabled) { + if (this.checkTrigger(e)) { + // 计算绝对时间 + + // 立即发送触发时间消息 + respond({ + type: 'triggerTime', + payload: { triggerTime: e.ts } + }) + } + } + + const rid = makeRowId(e.coreId, e.id, e.type) + if (e.type === TaskType.TASK || e.type === TaskType.ISR) { + if (!this.perActor.has(rid)) { + this.perActor.set(rid, []) + this.actorNames.set(rid, `${TaskType[e.type]}_${e.id}`) + } + this.perActor.get(rid)!.push(e) + } else if (e.type === TaskType.RUNABLE) { + const currentTask = this.currentTaskByCore.get(e.coreId) + if (currentTask) { + const lrid = makeRowId(e.coreId, currentTask.id, currentTask.type) + const lastEvent = this.perActor.get(lrid)!.at(-1)! + if (!lastEvent.children) { + lastEvent.children = {} + } + if (!lastEvent.children[rid]) { + lastEvent.children[rid] = [] + } + lastEvent.children[rid].push(e) + } + } + } + + // Limit to 100,000 events, remove oldest from front if exceeded + const MAX_EVENTS = 100000 + if (this.events.length > MAX_EVENTS) { + const removeCount = this.events.length - MAX_EVENTS + const removedEvents = this.events.splice(0, removeCount) + + // Remove deleted events from perActor maps + // Since timestamps are always increasing, removed events are at the front of each array + const removedEventSet = new Set(removedEvents) + for (const [rid, evts] of this.perActor.entries()) { + // Find the first event that is not in removedEventSet + let startIdx = evts.length // Default to length if all events are removed + for (let i = 0; i < evts.length; i++) { + if (!removedEventSet.has(evts[i])) { + startIdx = i + break + } + } + // If all events are removed, delete the entry + if (startIdx >= evts.length) { + this.perActor.delete(rid) + } else { + // Keep all events from startIdx onwards + this.perActor.set(rid, evts.slice(startIdx)) + } + } + } else { + // Update totalLength: last event has the max timestamp since timestamps are always increasing + const maxTs = newEvents[newEvents.length - 1].ts + this.totalLength = BigInt(maxTs) - this.absoluteStart + } + } + + setCoreConfigs( + coreConfigs: Array<{ + id: number + name: string + buttons: Array<{ name: string; color: string; id: string; numberId: number }> + }> + ) { + this.coreConfigs = coreConfigs + } + + buildRowIds() { + // If coreConfigs is provided, use it to determine the order + + const orderedRowIds: number[] = [] + // Collect rowIds in the order of coreConfigs + for (const core of this.coreConfigs) { + for (const button of core.buttons) { + orderedRowIds.push(button.numberId) + } + } + this.rowids = orderedRowIds + } + + getTotalLength(): bigint { + return this.totalLength + } + + getAbsoluteStart(): bigint { + return this.absoluteStart + } + + /** + * Binary search to find the first event index where ts >= targetTs + * Since ts is always increasing, we can use binary search + */ + private binarySearchFirst(evts: OsEvent[], targetTs: number): number { + let left = 0 + let right = evts.length - 1 + let result = evts.length + + while (left <= right) { + const mid = Math.floor((left + right) / 2) + if (evts[mid].ts >= targetTs) { + result = mid + right = mid - 1 + } else { + left = mid + 1 + } + } + + return result + } + + /** + * Binary search to find the last event index where ts <= targetTs + * Since ts is always increasing, we can use binary search + */ + private binarySearchLast(evts: OsEvent[], targetTs: number): number { + let left = 0 + let right = evts.length - 1 + let result = -1 + + while (left <= right) { + const mid = Math.floor((left + right) / 2) + if (evts[mid].ts <= targetTs) { + result = mid + left = mid + 1 + } else { + right = mid - 1 + } + } + + return result + } + + setTriggerConfig(config: { + enabled: boolean + type: TaskType | null + coreId: number | null + id: number | null + status: number | null + }) { + this.triggerConfig = config + } + + checkTrigger(event: OsEvent): boolean { + if (!this.triggerConfig.enabled) return false + if ( + this.triggerConfig.type === null || + this.triggerConfig.coreId === null || + this.triggerConfig.id === null || + this.triggerConfig.status === null + ) { + return false + } + return ( + event.type === this.triggerConfig.type && + event.coreId === this.triggerConfig.coreId && + event.id === this.triggerConfig.id && + event.status === this.triggerConfig.status + ) + } + + getData(opts: { range?: TimelineChart.TimeGraphRange; resolution?: number }): { + rows: TimelineChart.TimeGraphRowModel[] + range: TimelineChart.TimeGraphRange + resolution: number + } { + const range = + opts.range || ({ start: BigInt(0), end: this.totalLength } as TimelineChart.TimeGraphRange) + const resolution = opts.resolution ?? Math.max(1, Number(this.totalLength) / 1000) + + // Convert range to absolute timestamps for binary search + // In runtime mode, absoluteStart is the offset from absoluteStartNumber, + // and events.ts are also offsets, so this calculation is correct + const rangeStartTs = Number(this.absoluteStart + range.start) + const rangeEndTs = Number(this.absoluteStart + range.end) + + const rows: TimelineChart.TimeGraphRowModel[] = [] + for (const rowId of this.rowids) { + const evts = this.perActor.get(rowId) + if (!evts || evts.length === 0) { + // Create empty row for rowId that has no events, similar to reference implementation + const name = this.actorNames.get(rowId) || `${rowId}` + rows.push({ + id: rowId, + name, + range: { + start: BigInt(0), + end: BigInt(0) + }, + data: { type: 'OFFLINE', hasStates: false }, + states: [], + annotations: [], + prevPossibleState: BigInt(0), + nextPossibleState: this.totalLength + }) + continue + } + const firstTs = evts[0].ts + const lastTs = evts[evts.length - 1].ts + const name = this.actorNames.get(rowId) || `${rowId}` + + // Use binary search to find the range of events to process + const startIdx = this.binarySearchFirst(evts, rangeStartTs) + const endIdx = this.binarySearchLast(evts, rangeEndTs) + + // If no events in range, skip this row + if (startIdx >= evts.length || endIdx < 0 || startIdx > endIdx) { + rows.push({ + id: rowId, + name, + range: { + start: BigInt(0), + end: BigInt(lastTs - firstTs) + }, + data: { type: 'OFFLINE', hasStates: false }, + states: [], + annotations: [], + prevPossibleState: BigInt(0), + nextPossibleState: BigInt(lastTs) - this.absoluteStart + }) + continue + } + + const states: TimelineChart.TimeGraphState[] = [] + let prevPossibleState = BigInt(0) + let nextPossibleState = BigInt(lastTs) - this.absoluteStart + + // Only iterate through events in the range (need to check one before startIdx for states that span the range) + const processStartIdx = Math.max(0, startIdx - 1) + const processEndIdx = Math.min(evts.length - 1, endIdx + 1) + + for (let i = processStartIdx; i < processEndIdx; i++) { + const cur = evts[i] + const next = evts[i + 1] + + // For TASK: only create state when status is START and next event exists + if (cur.type === TaskType.TASK) { + if (cur.status == TaskStatus.TERMINATE || !next) { + continue + } + } + // For ISR: only create state when status is START and next event is STOP + else if (cur.type === TaskType.ISR) { + if (cur.status !== IsrStatus.START || !next || next.status !== IsrStatus.STOP) continue + } + // For other types, skip (or keep original logic if needed) + else { + continue + } + + // Calculate state start/end relative to absoluteStart + // In runtime mode, both cur.ts and this.absoluteStart are offsets from absoluteStartNumber, + // so the subtraction gives the correct relative position + const start = BigInt(cur.ts) - this.absoluteStart + const end = BigInt(next.ts) - this.absoluteStart + + // Filter by visible range and simple coarse resolution + if (!(end > range.start && start < range.end)) continue + if (Number(end - start) * (1 / resolution) <= 1) continue + + const durationUs = Number(end - start) + let durationLabel: string | undefined = undefined + + if (cur.type === TaskType.TASK && cur.status != TaskStatus.START) { + durationLabel = undefined + } else { + durationLabel = + durationUs >= 1000 ? `${(durationUs / 1000).toFixed(1)}ms` : `${durationUs}us` + } + + states.push({ + id: `${cur.coreId}_${cur.id}_${cur.type}_${cur.ts}`, + label: durationLabel, + range: { start, end }, + data: { cur, next, style: {} } + } as unknown as TimelineChart.TimeGraphState) + + if (cur.children) { + for (const children of Object.values(cur.children)) { + for (let i = 0; i < children.length; i++) { + const curChild = children[i] + const nextChild = children[i + 1] + if (!nextChild) { + continue + } + const start = BigInt(curChild.ts) - this.absoluteStart + const end = BigInt(nextChild.ts) - this.absoluteStart + states.push({ + id: `${curChild.coreId}_${curChild.id}_${curChild.type}_${curChild.ts}`, + range: { start, end }, + data: { cur: curChild, next: nextChild, style: {} } + } as unknown as TimelineChart.TimeGraphState) + } + } + } + + if (i === 0) prevPossibleState = start + if (i === evts.length - 1) nextPossibleState = end + } + + rows.push({ + id: rowId, + name, + range: { + start: BigInt(0), + end: BigInt(lastTs - firstTs) + }, + data: { type: 'OFFLINE', hasStates: states.length > 0 }, + states, + annotations: [], + prevPossibleState, + nextPossibleState + }) + } + + return { rows, range, resolution } + } +} + +const provider = new OfflineDataProvider() + +type InMsg = + | { + type: 'loadCsv' + payload: { + file: File + database: string + cpuFreq: number + coreConfigs: Array<{ + id: number + name: string + buttons: Array<{ name: string; color: string; id: string; numberId: number }> + }> + } + } + | { + type: 'getRowIds' + payload: { + coreConfigs: Array<{ + id: number + name: string + buttons: Array<{ name: string; color: string; id: string; numberId: number }> + }> + } + } + | { + type: 'getData' + payload: { range?: TimelineChart.TimeGraphRange; resolution?: number } + } + | { + type: 'findState' + payload: { + direction: 'left' | 'right' + rowId: number + cursor?: bigint + } + } + | { + type: 'updateEvents' + payload: { + cpuFreq: number + events: OsEvent[] + } + } + | { + type: 'setTriggerConfig' + payload: { + enabled: boolean + type: TaskType | null + coreId: number | null + id: number | null + status: number | null + } + } + +type OutMsg = + | { + type: 'loaded' + payload: { + rowIds: number[] + start: bigint + totalLength: bigint + events: { + message: { + ts: number + data: OsEvent + } + }[] + } + } + | { type: 'rowIds'; payload: { rowIds: number[] } } + | { + type: 'data' + payload: { + rows: TimelineChart.TimeGraphRowModel[] + range: TimelineChart.TimeGraphRange + resolution: number + } + } + | { type: 'error'; payload: { message: string } } + | { + type: 'triggerTime' + payload: { triggerTime: number } + } + | { + type: 'foundState' + payload: { id?: string; start?: bigint; event?: OsEvent } + } + | { + type: 'updated' + payload: { + start: bigint + totalLength: bigint + } + } + +function respond(msg: OutMsg) { + // @ts-ignore – worker global + postMessage(msg) +} + +async function parseCsvStream( + stream: ReadableStream, + cpuFreq: number +): Promise { + const decoder = new TextDecoder() + const reader = stream.getReader() + const { value, done } = await reader.read() + if (done || !value) return [] + let buffer = decoder.decode(value, { stream: true }) + + const events: OsEvent[] = [] + + const flushLines = (chunk: string, final = false) => { + const parts = chunk.split(/\r?\n/) + const lines = final ? parts : parts.slice(0, -1) + buffer = final ? '' : parts[parts.length - 1] + for (const line of lines) { + // headerless: parse all lines as data + if (!line.trim()) continue + const cols = line.split(',') + if (cols.length < 4) continue + const ts = toNumberSafe(trimQuotes(cols[0])) + const type = toNumberSafe(trimQuotes(cols[1])) as TaskType + const id = toNumberSafe(trimQuotes(cols[2])) + const status = toNumberSafe(trimQuotes(cols[3])) + const coreId = toNumberSafe(trimQuotes(cols[4])) + const evt: OsEvent = { + type, + id, + status, + coreId, + ts: convertTsToUs(ts, cpuFreq), + comment: '' + } + events.push(evt) + } + } + + flushLines(buffer) + let readerDone = false + while (!readerDone) { + const res = await reader.read() + readerDone = !!res.done + if (readerDone) break + buffer += decoder.decode(res.value, { stream: true }) + flushLines(buffer) + } + if (buffer.length) flushLines(buffer, true) + return events +} + +// @ts-ignore – worker global +self.onmessage = async (e: MessageEvent) => { + try { + const msg = e.data + if (msg.type === 'loadCsv') { + isRuntime = false + const { file, cpuFreq, coreConfigs, database } = msg.payload + let events: OsEvent[] = [] + if (file && typeof file.stream === 'function') { + events = await parseCsvStream(file.stream(), cpuFreq) + + // build into provider + provider.events = events + + // Set coreConfigs to ensure rowIds order matches graph buttons + if (coreConfigs) { + provider.setCoreConfigs(coreConfigs) + } + provider.buildIndexes() + } else { + throw new Error('loadCsv requires text, file, or filePath') + } + + respond({ + type: 'loaded', + payload: { + rowIds: provider.rowids, + totalLength: provider.getTotalLength(), + start: provider.getAbsoluteStart(), + events: events.map((event, index) => ({ + message: { + ts: event.ts, + data: { + ...event, + ts: event.ts * cpuFreq, + database: database, + index: index + } + } + })) + } + }) + return + } + if (msg.type === 'getRowIds') { + //reset + isRuntime = true + + provider.events = [] + provider.setCoreConfigs(msg.payload.coreConfigs) + provider.buildIndexes() + respond({ type: 'rowIds', payload: { rowIds: provider.rowids } }) + return + } + if (msg.type === 'getData') { + const { rows, range, resolution } = provider.getData(msg.payload) + respond({ type: 'data', payload: { rows, range, resolution } }) + return + } + if (msg.type === 'findState') { + const { direction, rowId, cursor } = msg.payload + const evts = provider.perActor.get(rowId) as OsEvent[] | undefined + if (!evts || evts.length === 0) { + respond({ type: 'foundState', payload: {} }) + return + } + const absoluteStart = provider.getAbsoluteStart() + // Build START markers only (TASK START, ISR START) + const starts: { id: string; start: bigint; event: OsEvent }[] = [] + for (let i = 0; i < evts.length; i++) { + const cur = evts[i] + if (cur.type === TaskType.TASK) { + if (cur.status !== TaskStatus.START) continue + } else if (cur.type === TaskType.ISR) { + if (cur.status !== IsrStatus.START) continue + } else { + continue + } + const start = BigInt(cur.ts) - absoluteStart + const id = `${cur.coreId}_${cur.id}_${cur.type}_${cur.ts}` + starts.push({ id, start, event: cur }) + } + if (starts.length === 0) { + respond({ type: 'foundState', payload: {} }) + return + } + const curPos = + cursor !== undefined + ? cursor + : direction === 'left' + ? starts[starts.length - 1].start + : starts[0].start + let found: { id: string; start: bigint; event: OsEvent } | undefined + if (direction === 'left') { + for (let i = starts.length - 1; i >= 0; i--) { + const s = starts[i] + if (s.start < curPos) { + found = s + break + } + } + // if none strictly less, fall back to first start + if (!found) found = starts[0] + } else { + for (let i = 0; i < starts.length; i++) { + const s = starts[i] + if (s.start > curPos) { + found = s + break + } + } + // if none greater, fall back to last start + if (!found) found = starts[starts.length - 1] + } + if (found) { + // Find next event after found event + let nextEvent: OsEvent | undefined + const foundIndex = evts.findIndex( + (e) => + e.ts === found.event.ts && + e.coreId === found.event.coreId && + e.id === found.event.id && + e.type === found.event.type + ) + if (foundIndex >= 0 && foundIndex < evts.length - 1) { + nextEvent = evts[foundIndex + 1] + } + respond({ + type: 'foundState', + payload: { + id: found.id, + start: found.start, + event: found.event, + nextEvent: nextEvent + } as any + }) + } else { + respond({ type: 'foundState', payload: {} }) + } + return + } + if (msg.type === 'updateEvents') { + const { events, cpuFreq } = msg.payload + provider.appendEvents(events, cpuFreq) + // respond({ + // type: 'updated', + // payload: { + // totalLength: provider.getTotalLength(), + // start: provider.getAbsoluteStart() + // } + // }) + return + } + if (msg.type === 'setTriggerConfig') { + provider.setTriggerConfig(msg.payload) + return + } + } catch (err: any) { + console.error('onmessage error', err) + respond({ type: 'error', payload: { message: err?.message || String(err) } }) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/graph.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/graph.vue new file mode 100644 index 0000000..a84d8bd --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/graph.vue @@ -0,0 +1,1841 @@ + + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/table.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/table.vue new file mode 100644 index 0000000..a893b6d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/table.vue @@ -0,0 +1,926 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/bigint-utils.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/bigint-utils.ts new file mode 100644 index 0000000..277bd6b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/bigint-utils.ts @@ -0,0 +1,39 @@ +export class BIMath { + static readonly round = (val: bigint | number): bigint => { + return typeof val === 'bigint' ? val : BigInt(Math.round(val)) + } + + static readonly clamp = (val: bigint | number, min: bigint, max: bigint): bigint => { + val = BIMath.round(val) + if (val < min) { + return min + } else if (val > max) { + return max + } + return val + } + + static readonly min = (val1: bigint | number, val2: bigint | number): bigint => { + val1 = BIMath.round(val1) + val2 = BIMath.round(val2) + return val1 <= val2 ? val1 : val2 + } + + static readonly max = (val1: bigint | number, val2: bigint | number): bigint => { + val1 = BIMath.round(val1) + val2 = BIMath.round(val2) + return val1 >= val2 ? val1 : val2 + } + + static readonly abs = (val: bigint | number): bigint => { + val = BIMath.round(val) + return val >= 0 ? val : -val + } + + static readonly multiply = (a: bigint | number, b: bigint | number): bigint => { + a = Number(a) + b = Number(b) + let c = a * b + return BIMath.round(c) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/color.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/color.ts new file mode 100644 index 0000000..68df4ce --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/color.ts @@ -0,0 +1,24 @@ +function colorStringToNumber(color: string): number { + if (!color) return 0x000000 + const trimmed = color.trim() + const rgb = trimmed.match(/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i) + if (rgb) { + const r = parseInt(rgb[1], 10) + const g = parseInt(rgb[2], 10) + const b = parseInt(rgb[3], 10) + return (r << 16) + (g << 8) + b + } + const hex = trimmed.startsWith('#') ? trimmed.slice(1) : trimmed + if (/^[0-9a-fA-F]{6}$/.test(hex)) { + return parseInt(hex, 16) + } + // Fallback black if unparsable + return 0x000000 +} +function getCssVar(varName: string): string { + return getComputedStyle(document.documentElement).getPropertyValue(varName).trim() +} +export function getColorFromCssVar(cssVar: string, fallback: string): number { + const value = getCssVar(cssVar) || fallback + return colorStringToNumber(value) +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-annotation.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-annotation.ts new file mode 100644 index 0000000..f74ca57 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-annotation.ts @@ -0,0 +1,239 @@ +import * as PIXI from 'pixi.js-legacy' +import { TimelineChart } from '../time-graph-model' +import { + TimeGraphComponent, + TimeGraphElementPosition, + TimeGraphComponentOptions +} from './time-graph-component' +import { TimeGraphRow } from './time-graph-row' + +export interface TimeGraphAnnotationComponentOptions extends TimeGraphComponentOptions { + position: TimeGraphElementPosition +} + +export interface TimeGraphAnnotationStyle extends TimeGraphComponentOptions { + symbol?: string + size?: number + color?: number + opacity?: number + verticalAlign?: string +} + +/* + * This is only implementing a subset of the tick elements so far + */ +export class TimeGraphAnnotationComponent extends TimeGraphComponent { + // TODO: make a map of the display objects + // e.g. cross-14-black-middle etc... + // and then use this._displayObject.addChild(cross-14-black-middle) in the draw. + // if performance is an issue + + protected _size: number + + constructor( + id: string, + model: TimelineChart.TimeGraphAnnotation, + protected _options: TimeGraphAnnotationComponentOptions, + protected _style: TimeGraphAnnotationStyle = { + color: 0, + size: 7, + symbol: 'cross', + verticalAlign: 'middle' + }, + protected _row: TimeGraphRow, + protected scaleFactor: number, + displayObject?: PIXI.Graphics + ) { + super(id, displayObject, model) + this._size = _style.size || 7 + // called to ensure consistency. Only the X component is used from options. + this.update(_options) + } + + update(opts?: TimeGraphAnnotationComponentOptions): void { + if (opts) { + this._options.position.x = opts.position.x + this.updateYPosition() + } + super.update() + } + + get row(): TimeGraphRow { + return this._row + } + + private updateYPosition() { + const align = this._style.verticalAlign + const size = this._style.size + if (!!size) { + const offset = + align == 'top' ? size : align == 'bottom' ? this._row.height - size : this._row.height / 2 + this._options.position.y = this._row.position.y + offset + } + } + + render(): void { + const { symbol } = this._style as TimeGraphAnnotationStyle + const size = this._size + const x = this._options.position.x * this.scaleFactor + const y = this._options.position.y + + if (symbol === undefined || symbol == 'none') { + return + } + if (symbol == 'circle') { + this.drawCircle(x, y, size) + } else if (symbol == 'cross') { + this.drawCross(x, y, size) + } else if (symbol == 'plus') { + this.drawPlus(x, y, size) + } else if (symbol == 'diamond') { + this.drawDiamond(x, y, size) + } else if (symbol == 'triangle') { + this.drawTriangle(x, y, size) + } else if (symbol == 'inverted-triangle') { + this.drawInvertedTriangle(x, y, size) + } else { + this.drawPlus(x, y, size) + } + this._displayObject.scale.x = 1 / this.scaleFactor + } + + /** + * Scale only annotations labels that actually have object displayed. + * + * @param scaleFactor + */ + scaleAnnotation(scaleFactor: number) { + this.scaleFactor = scaleFactor + if (this._displayObject && this._displayObject.scale) { + this.render() + } + } + + private drawCircle(x: number, y: number, radius: number): void { + this._displayObject.clear() + this._displayObject.beginFill(this._style.color, this.getPIXIOpacity(this._style.opacity)) + this._displayObject.lineStyle(0) + this._displayObject.drawCircle(x, y, radius) + this._displayObject.endFill() + //this._displayObject.cacheAsBitmap = true; + } + + // thickness = 20 + private drawCross(x: number, y: number, size: number): void { + this._displayObject.clear() + this._displayObject.beginFill(this._style.color, this.getPIXIOpacity(this._style.opacity)) + this._displayObject.lineStyle(0) + // Root of two thickness + const thickness = 0.14 * size + + this._displayObject.drawPolygon([ + x - size, + y - size + thickness, + x - thickness, + y, + x - size, + y + size - thickness, + x - size + thickness, + y + size, + x, + y + thickness, + x + size - thickness, + y + size, + x + size, + y + size - thickness, + x + thickness, + y, + x + size, + y - size + thickness, + x + size - thickness, + y - size, + x, + y - thickness, + x - size + thickness, + y - size, + x - size, + y - size + thickness + ]) + this._displayObject.endFill() + //this._displayObject.cacheAsBitmap = true; + } + + // thickness = 20% + private drawPlus(x: number, y: number, size: number): void { + this._displayObject.clear() + this._displayObject.beginFill(this._style.color, this.getPIXIOpacity(this._style.opacity)) + this._displayObject.lineStyle(0) + // half thickness + const thickness = 0.1 * size + this._displayObject.drawPolygon([ + x - thickness, + y - size, + x - thickness, + y - thickness, + x - size, + y - thickness, + x - size, + y + thickness, + x - thickness, + y + thickness, + x - thickness, + y + size, + x + thickness, + y + size, + x + thickness, + y + thickness, + x + size, + y + thickness, + x + size, + y - thickness, + x + thickness, + y - thickness, + x + thickness, + y - size, + x - thickness, + y - size + ]) + this._displayObject.endFill() + //this._displayObject.cacheAsBitmap = true; + } + + private drawDiamond(x: number, y: number, size: number): void { + this._displayObject.clear() + this._displayObject.beginFill(this._style.color, this.getPIXIOpacity(this._style.opacity)) + this._displayObject.lineStyle(0) + this._displayObject.drawPolygon([ + x - size, + y, + x, + y - size, + x + size, + y, + x, + y + size, + x - size, + y + ]) + this._displayObject.endFill() + //this._displayObject.cacheAsBitmap = true; + } + + private drawTriangle(x: number, y: number, size: number): void { + this._displayObject.clear() + this._displayObject.beginFill(this._style.color, this.getPIXIOpacity(this._style.opacity)) + this._displayObject.lineStyle(0) + this._displayObject.drawPolygon([x - size, y + size, x, y - size, x + size, y + size]) + this._displayObject.endFill() + //this._displayObject.cacheAsBitmap = true; + } + + private drawInvertedTriangle(x: number, y: number, size: number): void { + this._displayObject.clear() + this._displayObject.beginFill(this._style.color, this.getPIXIOpacity(this._style.opacity)) + this._displayObject.lineStyle(0) + this._displayObject.drawPolygon([x + size, y - size, x, y + size, x - size, y - size]) + this._displayObject.endFill() + //this._displayObject.cacheAsBitmap = true; + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-arrow.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-arrow.ts new file mode 100644 index 0000000..a0c27b1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-arrow.ts @@ -0,0 +1,61 @@ +import * as PIXI from 'pixi.js-legacy' + +import { TimelineChart } from '../time-graph-model' +import { + TimeGraphComponent, + TimeGraphElementPosition, + TimeGraphComponentOptions +} from './time-graph-component' + +export interface TimeGraphArrowCoordinates extends TimeGraphComponentOptions { + start: TimeGraphElementPosition + end: TimeGraphElementPosition +} + +export class TimeGraphArrowComponent extends TimeGraphComponent { + protected head: PIXI.Graphics + + constructor( + id: string, + model: TimelineChart.TimeGraphArrow, + protected _options: TimeGraphArrowCoordinates + ) { + super(id, undefined, model) + + this.head = new PIXI.Graphics() + this._displayObject.addChild(this.head) + } + + render(): void { + const { start, end } = this._options as TimeGraphArrowCoordinates + this._displayObject.lineStyle(1, 0x000000) + this._displayObject.moveTo(start.x, start.y) + this._displayObject.lineTo(end.x, end.y) + + // const edge = Math.sqrt((8*8)+(2*2)); + // const cos_a = Math.cos(Math.atan2(end.y - start.y, end.x - start.x) + Math.atan2(2, 8)); + // const cos_b = Math.cos(Math.atan2(end.y - start.y, end.x - start.x) - Math.atan2(2, 8)); + // const xa = edge * cos_a; + // const ya = Math.sqrt((edge*edge) - (xa*xa)); + // const xb = edge * cos_b; + // const yb = Math.sqrt((edge*edge) - (xb*xb)); + + // this._displayObject.beginFill(0x000000); + // this._displayObject.drawPolygon([ + // end.x, end.y, + // end.x - xa, end.y - ya, + // end.x - xb, end.y + yb, + // end.x, end.y + // ]); + // this._displayObject.endFill(); + + this.head.clear() + this.head.beginFill(0x000000) + this.head.drawPolygon([end.x, end.y, end.x - 7, end.y - 3, end.x - 7, end.y + 3, end.x, end.y]) + this.head.endFill() + this.head.position.x = end.x + this.head.position.y = end.y + this.head.pivot = new PIXI.Point(end.x, end.y) + this.head.rotation = Math.atan2(end.y - start.y, end.x - start.x) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-axis-cursor.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-axis-cursor.ts new file mode 100644 index 0000000..6c48137 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-axis-cursor.ts @@ -0,0 +1,26 @@ +import { + TimeGraphComponent, + TimeGraphElementPosition, + TimeGraphComponentOptions +} from './time-graph-component' + +export interface TimeGraphAxisCursorOptions extends TimeGraphComponentOptions { + position: TimeGraphElementPosition + color: number +} + +export class TimeGraphAxisCursor extends TimeGraphComponent { + constructor(protected _options: TimeGraphAxisCursorOptions) { + super('cursor') + } + + render(): void { + const { position, color } = this._options + this._displayObject.beginFill(color) + this._displayObject.moveTo(position.x, position.y) + this._displayObject.lineTo(position.x - 5, position.y - 5) + this._displayObject.lineTo(position.x + 5, position.y - 5) + this._displayObject.lineTo(position.x, position.y) + this._displayObject.endFill() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-axis-scale.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-axis-scale.ts new file mode 100644 index 0000000..2ac0bf3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-axis-scale.ts @@ -0,0 +1,209 @@ +import * as PIXI from 'pixi.js-legacy' + +import { + TimeGraphComponent, + TimeGraphInteractionHandler, + TimeGraphStyledRect, + TimeGraphComponentOptions +} from './time-graph-component' +import { TimeGraphUnitController } from '../time-graph-unit-controller' +import { TimeGraphStateController } from '../time-graph-state-controller' +import * as _ from 'lodash' +import { TimelineChart } from '../time-graph-model' + +export interface TimeGraphAxisStyle extends TimeGraphStyledRect { + lineColor?: number + verticalAlign?: string +} +import { BIMath } from '../bigint-utils' + +export class TimeGraphAxisScale extends TimeGraphComponent { + protected mouseStartY!: number + protected mouseStartX!: number + protected oldViewRange!: TimelineChart.TimeGraphRange + protected mouseIsDown: boolean = false + protected labels: PIXI.Text[] + + constructor( + id: string, + protected _options: TimeGraphAxisStyle, + protected unitController: TimeGraphUnitController, + protected stateController: TimeGraphStateController + ) { + super(id) + this.addEvents() + this.labels = [] + } + + protected addEvents() { + const mouseMove = _.throttle((event) => { + if (this.mouseIsDown) { + this.zoomAroundLeftViewBorder(event.data.global.x) + } + }, 40) + this.addEvent( + 'mousedown', + (event) => { + this.mouseStartY = event.data.global.y + this.mouseStartX = event.data.global.x + this.oldViewRange = this.unitController.viewRange + this.mouseIsDown = true + }, + this._displayObject + ) + this.addEvent('mousemove', mouseMove, this._displayObject) + const moveEnd: TimeGraphInteractionHandler = (event) => { + this.mouseIsDown = false + } + this.addEvent('mouseup', moveEnd, this._displayObject) + this.addEvent('mouseupoutside', moveEnd, this._displayObject) + } + + protected getStepLength(labelWidth: number): number { + const canvasDisplayWidth = this.stateController.canvasDisplayWidth + const minCanvasStepWidth = Math.max(labelWidth, 80) + const viewRangeLength = this.unitController.viewRangeLength + const maxSteps = canvasDisplayWidth / minCanvasStepWidth + const realStepLength = Number(viewRangeLength) / maxSteps + const log = Math.log10(realStepLength) + let logRounded = Math.round(log) + const normalizedStepLength = Math.pow(10, logRounded) + const residual = realStepLength / normalizedStepLength + const steps = this.unitController.scaleSteps || [1, 2, 5, 10] + const normStepLength = steps.find((s) => s > residual) + const stepLength = Math.max(normalizedStepLength * (normStepLength || 1), 1) + return stepLength + } + + protected renderVerticalLines( + drawLabels: boolean, + lineColor: number, + lineStyle: (label: string | undefined) => { lineHeight: number }, + viewport?: boolean + ) { + if (this.unitController.viewRangeLength > 0 && this.stateController.canvasDisplayWidth > 0) { + let labelWidth = 0 + if (this.unitController.numberTranslator) { + const label = this.unitController.numberTranslator(this.unitController.viewRange.end) + if (label) { + const style = new PIXI.TextStyle({ fontSize: 10 }) + const textMetrics = PIXI.TextMetrics.measureText(label, style) + labelWidth = textMetrics.width + } + } + const stepLength = BigInt(this.getStepLength(labelWidth)) + const canvasDisplayWidth = this.stateController.canvasDisplayWidth + const zoomFactor = this.stateController.zoomFactor + const rangeStart = viewport + ? this.stateController.worldRange.start + this.unitController.offset + : this.unitController.viewRange.start + this.unitController.offset + const rangeEnd = viewport + ? this.stateController.worldRange.end + this.unitController.offset + : this.unitController.viewRange.end + this.unitController.offset + const startTime = (rangeStart / stepLength) * stepLength + for (let time = startTime; time <= rangeEnd; time += stepLength) { + const xpos = Number(time - rangeStart) * zoomFactor + const worldRatio = + this.stateController.worldRangeLength / this.unitController.viewRangeLength + const xposEnd = canvasDisplayWidth * Number(worldRatio) + const viewportCondition = xpos >= 0 && xpos < xposEnd + const notViewportCondition = xpos >= 0 && xpos < canvasDisplayWidth + const shouldContinue = + (viewport && viewportCondition) || (!viewport && notViewportCondition) + if (shouldContinue) { + const labelCenter = { + x: xpos, + y: this._options.position.y + } + let label + if (drawLabels && this.unitController.numberTranslator) { + label = this.unitController.numberTranslator(time - this.unitController.offset) + if (label) { + const text = new PIXI.Text(label, { + fontSize: 10, + fill: lineColor + }) + + const textPosition = this.getTextPosition(labelCenter, text, lineStyle) + text.x = textPosition.x + text.y = textPosition.y + this.labels.push(text) + this._displayObject.addChild(text) + } + } + + const verticalLinePosition = { + x: xpos, + y: this.getVerticalLineYPosition(lineStyle(label).lineHeight) + } + + this.vline({ + position: verticalLinePosition, + height: lineStyle(label).lineHeight, + color: lineColor + }) + } + } + } + } + + update(opts?: TimeGraphComponentOptions) { + this.labels.forEach((label) => label.destroy()) + this.labels = [] + super.update(opts) + } + + render() { + this.renderVerticalLines(true, this._options.lineColor || 0x000000, (l) => ({ + lineHeight: l === '' || l === undefined ? 5 : 10 + })) + } + + zoomAroundLeftViewBorder(mouseX: number) { + if (mouseX <= 0) { + return + } + const start = this.oldViewRange.start + const end = BIMath.min( + this.oldViewRange.start + + BIMath.round( + Number(this.oldViewRange.end - this.oldViewRange.start) * (this.mouseStartX / mouseX) + ), + this.unitController.absoluteRange + ) + if (BIMath.abs(end - start) > 1) { + this.unitController.viewRange = { + start, + end + } + } + } + + private getVerticalLineYPosition(lineHeight: number) { + if (this._options.verticalAlign === 'bottom') { + return this._options.height - lineHeight + } + + // By default the tick will be at the top + return 0 + } + + private getTextPosition( + labelCenter: { x: number; y: number }, + textElement: PIXI.Text, + lineStyle: (label: string | undefined) => { lineHeight: number } + ): { x: number; y: number } { + const xPosition = labelCenter.x - textElement.width / 2 + let yPosition = labelCenter.y + lineStyle(textElement.text).lineHeight + + // If the vertical line is at the bottom, we add some space between the line and the textElement + if (this._options.verticalAlign === 'bottom') { + yPosition = yPosition - 3 + } + + return { + x: xPosition, + y: yPosition + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-component.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-component.ts new file mode 100644 index 0000000..5edf1fd --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-component.ts @@ -0,0 +1,198 @@ +import * as PIXI from 'pixi.js-legacy' +import { RenderEvents } from '../time-graph-render-controller' + +export type TimeGraphInteractionType = + | 'mouseover' + | 'mouseout' + | 'mousemove' + | 'mousedown' + | 'mouseup' + | 'mouseupoutside' + | 'rightdown' + | 'click' +export type TimeGraphInteractionHandler = (event: PIXI.InteractionEvent) => void + +export type TimeGraphComponentOptions = {} + +export interface TimeGraphElementStyle { + color?: number + opacity?: number + borderWidth?: number + borderColor?: number + borderRadius?: number + displayWidth?: number +} +export interface TimeGraphElementPosition { + x: number + y: number +} +export interface TimeGraphHorizontalElement { + position: TimeGraphElementPosition + width: number +} +export interface TimeGraphVerticalElement { + position: TimeGraphElementPosition + height: number +} +export interface TimeGraphLineStyle extends TimeGraphElementStyle { + thickness?: number +} +export type TimeGraphRect = TimeGraphHorizontalElement & TimeGraphVerticalElement +export type TimeGraphStyledRect = TimeGraphRect & TimeGraphElementStyle +export type TimeGraphHorizontalLine = TimeGraphHorizontalElement & TimeGraphLineStyle +export type TimeGraphVerticalLine = TimeGraphVerticalElement & TimeGraphLineStyle + +export interface TimeGraphParentComponent { + addChild(child: TimeGraphComponent): void +} + +export abstract class TimeGraphComponent { + protected _displayObject: PIXI.Graphics + protected _model!: T + protected _options!: TimeGraphComponentOptions + + protected graphicsData!: PIXI.GraphicsData + + constructor( + protected _id: string, + displayObject?: PIXI.Graphics, + model?: T + ) { + this._displayObject = displayObject || new PIXI.Graphics() + if (model) { + this._model = model + } + } + + get id(): string { + return this._id + } + + get displayObject(): PIXI.Graphics { + return this._displayObject + } + + get model(): T { + return this._model + } + + clear() { + this._displayObject.clear() + } + + destroy() { + this._displayObject.destroy({ children: true }) + } + + update(opts?: TimeGraphComponentOptions) { + if (opts) { + this._options = opts + } + this.clear() + this.render() + this.startPixiRender() + } + + protected startPixiRender() { + RenderEvents.startRender() + } + + abstract render(): void + + protected rect(opts: TimeGraphStyledRect) { + const { position, width, height, color, opacity, borderColor, borderWidth } = opts + this.displayObject.lineStyle(borderWidth || 0, borderColor || 0x000000) + this.displayObject.beginFill(color || 0x000000, this.getPIXIOpacity(opacity)) + this.displayObject.drawRect(position.x, position.y, width, height) + this.displayObject.endFill() + this.startPixiRender() + } + + protected rectTruncated(opts: TimeGraphStyledRect) { + const { position, width, height, color, opacity, borderColor, borderWidth } = opts + this.displayObject.lineStyle(borderWidth || 0, borderColor || 0x000000) + this.displayObject.beginFill(color || 0x000000, this.getPIXIOpacity(opacity)) + if (width > 20) { + const xpos = position.x + 0.5 + const ypos = position.y + 0.5 + const edge = 2 + + this.displayObject.drawPolygon([ + xpos + edge, + ypos, + xpos + width, + ypos, + xpos + width, + ypos + height, + xpos, + ypos + height, + xpos, + ypos + edge, + xpos + edge, + ypos + ]) + } else { + this.displayObject.drawRect(position.x + 0.5, position.y + 0.5, width, height) + } + this.displayObject.endFill() + this.startPixiRender() + } + + protected roundedRect(opts: TimeGraphStyledRect) { + const { position, width, height, color, opacity, borderColor, borderWidth, borderRadius } = opts + this.displayObject.lineStyle(borderWidth || 0, borderColor || 0x000000) + this.displayObject.beginFill(color || 0x000000, this.getPIXIOpacity(opacity)) + + this.displayObject.drawRoundedRect( + position.x + 0.5, + position.y + 0.5, + width, + height, + borderRadius || 0 + ) + + this.displayObject.endFill() + this.startPixiRender() + } + + protected hline(opts: TimeGraphHorizontalLine) { + const { position, width, thickness, color, opacity } = opts + this.displayObject.lineStyle(thickness || 1, color || 0x000000, this.getPIXIOpacity(opacity)) + this.displayObject.moveTo(position.x, position.y + 0.5) + this.displayObject.lineTo(position.x + width, position.y + 0.5) + this.startPixiRender() + } + + protected vline(opts: TimeGraphVerticalLine) { + const { position, height, thickness, color, opacity } = opts + this.displayObject.lineStyle(thickness || 1, color || 0x000000, this.getPIXIOpacity(opacity)) + this.displayObject.moveTo(position.x + 0.5, position.y) + this.displayObject.lineTo(position.x + 0.5, position.y + height) + this.startPixiRender() + } + + /** + * Get the PIXIjs friendly opacity. This is a workaround to PIXIjs 5 setting opacity to 0 meaning interractions are not recognized. + * + * @param opacity a number meaning the desired opacity. If it is undefined, assume it is 100% opacity + */ + protected getPIXIOpacity(opacity: number | undefined): number | undefined { + return opacity !== undefined ? (opacity == 0 ? 0.001 : opacity) : 1 + } + + addEvent( + event: TimeGraphInteractionType, + handler: TimeGraphInteractionHandler, + displayObject: PIXI.DisplayObject + ) { + displayObject.interactive = true + displayObject.on( + event, + ((e: PIXI.InteractionEvent) => { + if (handler) { + handler(e) + } + }).bind(this) + ) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-cursor.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-cursor.ts new file mode 100644 index 0000000..8bbcaf9 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-cursor.ts @@ -0,0 +1,24 @@ +import { TimeGraphComponent, TimeGraphElementPosition } from './time-graph-component' + +export interface TimeGraphCursorOptions { + height: number + position: TimeGraphElementPosition + color: number + thickness?: number +} + +export class TimeGraphCursor extends TimeGraphComponent { + constructor(opts: TimeGraphCursorOptions) { + super('cursor') + this._options = opts + } + render(): void { + const { color, height, position, thickness } = this._options as TimeGraphCursorOptions + this.vline({ + thickness, + color, + height, + position + }) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-grid.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-grid.ts new file mode 100644 index 0000000..cbffe14 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-grid.ts @@ -0,0 +1,35 @@ +import { TimeGraphAxisScale, TimeGraphAxisStyle } from './time-graph-axis-scale' +import { TimeGraphUnitController } from '../time-graph-unit-controller' +import { TimeGraphStateController } from '../time-graph-state-controller' +import { TimeGraphAxisLayerOptions } from '../layer/time-graph-axis' + +export interface TimeGraphGridStyle extends TimeGraphAxisStyle { + lineColor?: number +} + +export class TimeGraphGrid extends TimeGraphAxisScale { + constructor( + id: string, + protected _options: TimeGraphGridStyle, + protected rowHeight: number, + protected unitController: TimeGraphUnitController, + protected stateController: TimeGraphStateController + ) { + super(id, _options, unitController, stateController) + } + + protected addEvents() {} + + update(opts?: TimeGraphAxisLayerOptions): void { + if (opts && opts.lineColor) { + this._options.lineColor = opts.lineColor + } + super.update(this._options) + } + + render(): void { + this.renderVerticalLines(false, this._options.lineColor || 0xdddddd, () => ({ + lineHeight: this.stateController.canvasDisplayHeight + })) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-rectangle.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-rectangle.ts new file mode 100644 index 0000000..2f82809 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-rectangle.ts @@ -0,0 +1,26 @@ +import { TimeGraphComponent, TimeGraphStyledRect } from './time-graph-component' + +export class TimeGraphRectangle extends TimeGraphComponent { + protected _options: TimeGraphStyledRect + + constructor(protected opts: TimeGraphStyledRect) { + super('rect') + this._options = opts + } + + update(opts?: TimeGraphStyledRect): void { + if (opts) { + this._options.width = opts.width + this._options.height = opts.height + this._options.position = opts.position + if (opts.color) { + this._options.color = opts.color + } + } + super.update() + } + + render(): void { + this.rect(this._options) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-row.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-row.ts new file mode 100644 index 0000000..5ba638b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-row.ts @@ -0,0 +1,156 @@ +import { + TimeGraphComponent, + TimeGraphElementPosition, + TimeGraphParentComponent, + TimeGraphStyledRect +} from './time-graph-component' +import { TimelineChart } from '../time-graph-model' +import { TimeGraphStateComponent } from './time-graph-state' +import { TimeGraphAnnotationComponent } from './time-graph-annotation' + +export interface TimeGraphRowStyle { + backgroundColor?: number + backgroundOpacity?: number + lineThickness?: number + lineColor?: number + lineOpacity?: number +} + +export class TimeGraphRow + extends TimeGraphComponent + implements TimeGraphParentComponent +{ + protected _providedModel: + | { + range: TimelineChart.TimeGraphRange + resolution: number + filterExpressionsMap?: { [key: number]: string[] } + } + | undefined + protected _rowStateComponents: Map = new Map() + protected _rowAnnotationComponents: Map = new Map() + + constructor( + id: string, + protected _options: TimeGraphStyledRect, + protected _rowIndex: number, + model?: TimelineChart.TimeGraphRowModel, + protected _style: TimeGraphRowStyle = { + lineOpacity: 0.5, + lineThickness: 1, + backgroundOpacity: 0 + } + ) { + super(id, undefined, model) + } + + get rowIndex(): number { + return this._rowIndex + } + + render() { + this.rect({ + color: this._style.backgroundColor, + opacity: this._style.backgroundOpacity, + height: this._options.height, + width: this._options.width, + position: this._options.position + }) + this.hline({ + color: this._style.lineColor || 0xeeeeee, + opacity: this._style.lineOpacity || 0.5, + thickness: this._style.lineThickness || 1, + width: this._options.width, + position: { + x: this._options.position.x, + y: this._options.position.y + this._options.height / 2 + } + }) + } + + get position(): TimeGraphElementPosition { + return this._options.position + } + + get height(): number { + return this._options.height + } + + addChild(child: TimeGraphComponent): void { + this._displayObject.addChild(child.displayObject) + child.update() + } + + removeChild(child: TimeGraphComponent): void { + this._displayObject.removeChild(child.displayObject) + child.destroy() + } + + addState(stateComponent: TimeGraphStateComponent) { + this._rowStateComponents.set(stateComponent.id, stateComponent) + this.addChild(stateComponent) + } + + removeState(stateComponent: TimeGraphStateComponent) { + this._rowStateComponents.delete(stateComponent.id) + this.removeChild(stateComponent) + } + + getStateById(id: string) { + return this._rowStateComponents.get(id) + } + + addAnnotation(annotationComponent: TimeGraphAnnotationComponent) { + this._rowAnnotationComponents.set(annotationComponent.id, annotationComponent) + this.addChild(annotationComponent) + } + + removeAnnotation(annotationComponent: TimeGraphAnnotationComponent) { + this._rowAnnotationComponents.delete(annotationComponent.id) + this.removeChild(annotationComponent) + } + + getAnnotationById(id: string) { + return this._rowAnnotationComponents.get(id) + } + + get style() { + return this._style + } + + set style(style: TimeGraphRowStyle) { + if (style.backgroundColor !== undefined) { + this._options.color = style.backgroundColor + this._style.backgroundColor = style.backgroundColor + } + if (style.backgroundOpacity !== undefined) { + this._style.backgroundOpacity = style.backgroundOpacity + } + if (style.lineColor) { + this._style.lineColor = style.lineColor + } + if (style.lineOpacity) { + this._style.lineOpacity = style.lineOpacity + } + if (style.lineThickness) { + this._style.lineThickness = style.lineThickness + } + this.update() + } + + get providedModel() { + return this._providedModel + } + + set providedModel( + providedModel: + | { + range: TimelineChart.TimeGraphRange + resolution: number + filterExpressionsMap?: { [key: number]: string[] } + } + | undefined + ) { + this._providedModel = providedModel + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-state.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-state.ts new file mode 100644 index 0000000..54c1569 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/components/time-graph-state.ts @@ -0,0 +1,223 @@ +import { + TimeGraphComponent, + TimeGraphStyledRect, + TimeGraphElementPosition +} from './time-graph-component' +import { TimeGraphRow } from './time-graph-row' +import { TimelineChart } from '../time-graph-model' +import { FontController } from '../time-graph-font-controller' +import * as PIXI from 'pixi.js-legacy' + +export interface TimeGraphStateStyle { + color?: number + opacity?: number + height?: number + borderWidth?: number + borderColor?: number + scale?: number +} + +/** + * Using BitMapText.getLocalBounds() to measure the full label width is expensive, because + * we need to create a BitMapText object to use it. This means that we need to create a BitMapText + * for every state, even if we don't use it. When we remove the states, these objects need to + * be removed as well. In the case where we have a lot states, this cause multiple garbage collection + * and hogs the performance of the timeline chart. + * + * An alternative to measure the width of the label is to use PIXI.TextMetrics.measureText(). + * However, this method applies only for Text objects, and not BitMapText; therefore there is a + * slight difference between the values returned by the two methods. PIXI.TextMetrics returns a + * slightly smaller value. Currently, PIXI does not support measureText() for BitMapText. + * + * Through some trials, it looks like the ratio between the text width returned by the two methods is + * consistent. Hence, we can use PIXI.TextMetrics.measureText() to get a good estimation of the text width, + * then multiply with the SCALING_FACTOR to determine the actual width of the label when rendered + * with BitMapText. + * + * SCALING_FACTOR = BitMapText.getLocalBounds() / PIXI.TextMetrics.measureText() + */ +const SCALING_FACTOR = 1.04 + +export class TimeGraphStateComponent extends TimeGraphComponent { + static fontController: FontController = new FontController() + + protected _options: TimeGraphStyledRect + private textLabelObject: PIXI.BitmapText | undefined + + constructor( + id: string, + model: TimelineChart.TimeGraphState, + xStart: number, + xEnd: number, + protected _row: TimeGraphRow, + protected _style: TimeGraphStateStyle = { color: 0xfffa66, height: 14 }, + protected displayWidth: number, + protected scaleFactor: number, + displayObject?: PIXI.Graphics + ) { + super(id, displayObject, model) + const height = _row.height === 0 ? 0 : Math.min(_style.height || 14, _row.height - 1) + const position = { + x: xStart, + y: this._row.position.y + (this.row.height - height) / 2 + } + // min width of a state should never be less than 1 (for visibility) + const width = Math.max(1, xEnd - xStart) + this._options = { + color: _style.color, + opacity: _style.opacity, + height, + position, + width, + displayWidth, + borderRadius: 2, + borderWidth: _style.borderWidth || 0, + borderColor: _style.borderColor || 0x000000 + } + } + + /** + * Conveniently generate the labels of states and apply proper scaling when zooming + */ + renderLabel() { + if (!this.model.label) { + return + } + const { fontName, fontStyle } = + TimeGraphStateComponent.fontController.getFont( + this._options.color ? this._options.color : 0, + this._options.height - 8 + ) || TimeGraphStateComponent.fontController.getDefaultFont() + const position = { + x: + this._options.position.x + this._options.width < 0 + ? this._options.position.x + : Math.max(0, this._options.position.x), + y: this._options.position.y + } + const displayWidth = this._options.displayWidth ? this._options.displayWidth : 0 + const labelText = this.model.label + const textPadding = 1 + if (displayWidth < 3) { + this.removeLabel() + return + } + + if (fontStyle) { + const metrics = PIXI.TextMetrics.measureText(this.model.label, fontStyle) + // Round the text width up just to be sure that it will fit in the state + const textWidth = Math.ceil((metrics.width * SCALING_FACTOR) / this.scaleFactor) + // Use a fixed text height based on the font size for vertical centering + const textHeight = Number(fontStyle.fontSize) - 4 + + let textObjX = position.x + textPadding + const textObjY = position.y + Math.max(0, (this._options.height - textHeight) / 2) + let displayLabel = '' + + if (displayWidth > textWidth) { + textObjX = position.x + (displayWidth - textWidth) / 2 + displayLabel = labelText + } else { + const textScaler = displayWidth / textWidth + const index = Math.min(Math.floor(textScaler * labelText.length), labelText.length - 1) + const partialLabel = labelText.substr(0, Math.max(index - 1, 0)) + if (partialLabel.length > 0) { + displayLabel = partialLabel.concat('…') + } + } + + if (displayLabel === '') { + this.removeLabel() + return + } + + if (!this.textLabelObject) { + this.textLabelObject = new PIXI.BitmapText(displayLabel, { fontName: fontName }) + this.displayObject.addChild(this.textLabelObject) + } else { + this.textLabelObject.text = displayLabel + } + + this.textLabelObject.alpha = this._options.opacity ?? 1 + this.textLabelObject.x = textObjX + this.textLabelObject.y = textObjY + this.textLabelObject.scale.x = 1 / this.scaleFactor + } + } + + /** + * Scale only state labels that actually have text displayed. + * + * @param scaleFactor + */ + scaleLabel(scaleFactor: number) { + this.scaleFactor = scaleFactor + if (this.textLabelObject && this.textLabelObject.scale) { + this.renderLabel() + } + } + + private removeLabel() { + if (this.textLabelObject) { + this.textLabelObject.destroy() + this.textLabelObject = undefined + } + } + + get height(): number { + return this._options.height + } + + get width(): number { + return this._options.width + } + + get position(): TimeGraphElementPosition { + return this._options.position + } + + get row(): TimeGraphRow { + return this._row + } + + get style() { + return this._style + } + + set style(style: TimeGraphStateStyle) { + if (style.color !== undefined) { + this._options.color = style.color + } + if (style.opacity !== undefined) { + this._options.opacity = style.opacity + } + if (style.height !== undefined) { + this._options.height = style.height + } + if (style.borderColor !== undefined) { + this._options.borderColor = style.borderColor + } + if (style.borderWidth !== undefined) { + this._options.borderWidth = style.borderWidth + } + this.update() + } + + update(opts?: TimeGraphStyledRect) { + if (opts) { + this._options.position = opts.position + this._options.width = opts.width + this._options.displayWidth = opts.displayWidth + } + super.update() + } + + render() { + this.rect(this._options) + this.renderLabel() + } + + clear() { + super.clear() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-axis-cursors.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-axis-cursors.ts new file mode 100644 index 0000000..972ab7a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-axis-cursors.ts @@ -0,0 +1,84 @@ +import { TimeGraphAxisCursor } from '../components/time-graph-axis-cursor' +import { TimelineChart } from '../time-graph-model' +import { TimeGraphLayer } from './time-graph-layer' + +export class TimeGraphAxisCursors extends TimeGraphLayer { + protected firstCursor?: TimeGraphAxisCursor + protected secondCursor?: TimeGraphAxisCursor + protected color: number = 0x0000ff + private _updateHandler!: { + (): void + (viewRange: TimelineChart.TimeGraphRange): void + (selectionRange: TimelineChart.TimeGraphRange): void + (viewRange: TimelineChart.TimeGraphRange): void + (selectionRange: TimelineChart.TimeGraphRange): void + } + + constructor(id: string, style?: { color?: number }) { + super(id) + + if (style && style.color) { + this.color = style.color + } + } + + afterAddToContainer() { + this._updateHandler = (): void => this.update() + this.unitController.onViewRangeChanged(this._updateHandler) + this.unitController.onSelectionRangeChange(this._updateHandler) + this.update() + } + + update(): void { + if (this.unitController.selectionRange) { + const firstCursorPosition = this.getPixel( + this.unitController.selectionRange.start - this.unitController.viewRange.start + ) + const secondCursorPosition = this.getPixel( + this.unitController.selectionRange.end - this.unitController.viewRange.start + ) + const firstOpts = { + color: this.color, + position: { + x: firstCursorPosition, + y: this.stateController.canvasDisplayHeight + } + } + if (!this.firstCursor) { + this.firstCursor = new TimeGraphAxisCursor(firstOpts) + this.addChild(this.firstCursor) + } else { + this.firstCursor.update(firstOpts) + } + if (secondCursorPosition !== firstCursorPosition) { + const secondOpts = { + color: this.color, + position: { + x: secondCursorPosition, + y: this.stateController.canvasDisplayHeight + } + } + if (!this.secondCursor) { + this.secondCursor = new TimeGraphAxisCursor(secondOpts) + this.addChild(this.secondCursor) + } else { + this.secondCursor.update(secondOpts) + } + } else if (this.secondCursor) { + this.secondCursor.clear() + } + } else { + this.removeChildren() + delete this.firstCursor + delete this.secondCursor + } + } + + destroy(): void { + if (this.unitController) { + this.unitController.removeViewRangeChangedHandler(this._updateHandler) + this.unitController.removeSelectionRangeChangedHandler(this._updateHandler) + } + super.destroy() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-axis.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-axis.ts new file mode 100644 index 0000000..ba98780 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-axis.ts @@ -0,0 +1,149 @@ +import { TimeGraphAxisScale, TimeGraphAxisStyle } from '../components/time-graph-axis-scale' +import { TimeGraphLayer, TimeGraphLayerOptions } from './time-graph-layer' +import * as _ from 'lodash' +import { TimelineChart } from '../time-graph-model' +import { BIMath } from '../bigint-utils' + +export interface TimeGraphAxisLayerOptions extends TimeGraphLayerOptions { + lineColor?: number +} + +export class TimeGraphAxis extends TimeGraphLayer { + protected scaleComponent!: TimeGraphAxisScale + protected controlKeyDown!: boolean + private _updateHandler!: { + (): void + (selectionRange: TimelineChart.TimeGraphRange): void + (viewRange: TimelineChart.TimeGraphRange): void + (viewRange: TimelineChart.TimeGraphRange): void + (selectionRange: TimelineChart.TimeGraphRange): void + } + private _mouseWheelHandler!: _.DebouncedFunc<(ev: WheelEvent) => boolean> + private _keyUpHandler!: { (event: KeyboardEvent): void; (this: Document, ev: KeyboardEvent): any } + private _keyDownHandler!: { + (event: KeyboardEvent): void + (this: Document, ev: KeyboardEvent): any + } + + constructor( + id: string, + protected style?: { color?: number; lineColor?: number; verticalAlign?: string } + ) { + super(id) + } + + protected getOptions(): TimeGraphAxisStyle { + let color + let lineColor + let verticalAlign: string | undefined = 'top' // Default position is top, same as CSS verticalAlign is 'baseline' + + if (this.style) { + color = this.style.color + lineColor = this.style.lineColor + verticalAlign = this.style.verticalAlign + } + + return { + height: this.stateController.canvasDisplayHeight, + width: this.stateController.canvasDisplayWidth, + position: { + x: 0, + y: 0 + }, + color, + lineColor, + verticalAlign + } + } + + protected afterAddToContainer() { + this.controlKeyDown = false + this._keyDownHandler = (event: KeyboardEvent) => { + this.controlKeyDown = event.ctrlKey + } + document.addEventListener('keydown', this._keyDownHandler) + this._keyUpHandler = (event: KeyboardEvent) => { + this.controlKeyDown = event.ctrlKey + } + document.addEventListener('keyup', this._keyUpHandler) + this._mouseWheelHandler = _.throttle((ev: WheelEvent) => { + if (this.controlKeyDown) { + // ZOOM AROUND MOUSE POINTER + const zoomPosition = BIMath.round(ev.offsetX / this.stateController.zoomFactor) + const zoomIn = ev.deltaY < 0 + const newViewRangeLength = BIMath.clamp( + Number(this.unitController.viewRangeLength) * (zoomIn ? 0.8 : 1.25), + BigInt(1), + this.unitController.absoluteRange + ) + const center = this.unitController.viewRange.start + zoomPosition + const start = BIMath.clamp( + Number(center) - + (Number(zoomPosition) * Number(newViewRangeLength)) / + Number(this.unitController.viewRangeLength), + BigInt(0), + this.unitController.absoluteRange - newViewRangeLength + ) + const end = start + newViewRangeLength + this.unitController.viewRange = { + start, + end + } + } else { + // PANNING + const shiftStep = ev.deltaY + const oldViewRange = this.unitController.viewRange + let start = oldViewRange.start + BIMath.round(shiftStep / this.stateController.zoomFactor) + if (start < 0) { + start = BigInt(0) + } + let end = start + this.unitController.viewRangeLength + if (end > this.unitController.absoluteRange) { + start = this.unitController.absoluteRange - this.unitController.viewRangeLength + end = this.unitController.absoluteRange + } + this.unitController.viewRange = { start, end } + } + ev.preventDefault() + return false + }) + this.onCanvasEvent('mousewheel', this._mouseWheelHandler as any) + this.onCanvasEvent('wheel', this._mouseWheelHandler as any) + this.scaleComponent = new TimeGraphAxisScale( + this.id + '_scale', + this.getOptions(), + this.unitController, + this.stateController + ) + this.addChild(this.scaleComponent) + + this._updateHandler = (): void => this.update() + this.unitController.onSelectionRangeChange(this._updateHandler) + this.unitController.onViewRangeChanged(this._updateHandler) + } + + update(opts?: TimeGraphAxisLayerOptions) { + if (opts && this.style) { + this.style.lineColor = opts.lineColor + } + this.scaleComponent.update(this.getOptions()) + } + + destroy(): void { + if (this.unitController) { + this.unitController.removeViewRangeChangedHandler(this._updateHandler) + this.unitController.removeSelectionRangeChangedHandler(this._updateHandler) + } + if (this._mouseWheelHandler) { + this.removeOnCanvasEvent('mousewheel', this._mouseWheelHandler as any) + this.removeOnCanvasEvent('wheel', this._mouseWheelHandler as any) + } + if (this._keyDownHandler) { + document.removeEventListener('keydown', this._keyDownHandler) + } + if (this._keyUpHandler) { + document.removeEventListener('keyup', this._keyUpHandler) + } + super.destroy() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-arrows.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-arrows.ts new file mode 100644 index 0000000..b77d4e6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-arrows.ts @@ -0,0 +1,104 @@ +import { TimeGraphArrowComponent, TimeGraphArrowCoordinates } from '../components/time-graph-arrow' +import { TimeGraphElementPosition } from '../components/time-graph-component' +import { TimelineChart } from '../time-graph-model' +import { TimeGraphRowController } from '../time-graph-row-controller' +import { TimeGraphChartLayer } from './time-graph-chart-layer' + +export class TimeGraphChartArrows extends TimeGraphChartLayer { + protected arrows!: Map + protected rowIds: number[] = [] + private _updateHandler!: { + (): void + (worldRange: TimelineChart.TimeGraphRange): void + (worldRange: TimelineChart.TimeGraphRange): void + } + + constructor( + id: string, + protected rowController: TimeGraphRowController + ) { + super(id, rowController) + this.isScalable = false + } + + protected afterAddToContainer() { + this._updateHandler = (): void => this.update() + this.stateController.onWorldRender(this._updateHandler) + this.stateController.onScaleFactorChange(this._updateHandler) + + this.rowController.onVerticalOffsetChangedHandler((verticalOffset) => { + this.layer.position.y = -verticalOffset + }) + } + + protected getCoordinates( + arrow: TimelineChart.TimeGraphArrow + ): TimeGraphArrowCoordinates | undefined { + const sourceIndex = this.rowIds.indexOf(arrow.sourceId) + const destinationIndex = this.rowIds.indexOf(arrow.destinationId) + if (sourceIndex === -1 || destinationIndex === -1) { + return undefined + } + const start: TimeGraphElementPosition = { + x: this.getWorldPixel(arrow.range.start), + y: sourceIndex * this.rowController.rowHeight + this.rowController.rowHeight / 2 + } + const end: TimeGraphElementPosition = { + x: this.getWorldPixel(arrow.range.end), + y: destinationIndex * this.rowController.rowHeight + this.rowController.rowHeight / 2 + } + return { start, end } + } + + protected addArrow(arrow: TimelineChart.TimeGraphArrow) { + const coords = this.getCoordinates(arrow) + if (!coords) { + return + } + const arrowComponent = new TimeGraphArrowComponent('arrow', arrow, coords) + this.arrows.set(arrow, arrowComponent) + this.addChild(arrowComponent) + } + + addArrows(arrows: TimelineChart.TimeGraphArrow[], rowIds: number[]): void { + this.rowIds = rowIds + if (!this.stateController) { + throw 'Add this TimeGraphChartArrows to a container before adding arrows.' + } + if (this.arrows) { + this.removeChildren() + } + this.arrows = new Map() + arrows.forEach((arrow) => { + this.addArrow(arrow) + }) + } + + update(): void { + if (this.arrows) { + for (const arrow of this.arrows.keys()) { + this.updateArrow(arrow) + } + } + } + + protected updateArrow(arrow: TimelineChart.TimeGraphArrow) { + const arrowComponent = this.arrows.get(arrow) + if (arrowComponent) { + const coords = this.getCoordinates(arrow) + if (!coords) { + this.removeChild(arrowComponent) + this.arrows.delete(arrow) + } else { + arrowComponent.update(coords) + } + } + } + + destroy(): void { + if (this.unitController) { + this.stateController.removeWorldRenderHandler(this._updateHandler) + } + super.destroy() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-cursors.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-cursors.ts new file mode 100644 index 0000000..2b5de45 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-cursors.ts @@ -0,0 +1,364 @@ +import * as PIXI from 'pixi.js-legacy' + +import { TimeGraphCursor } from '../components/time-graph-cursor' +import { TimelineChart } from '../time-graph-model' +import { TimeGraphChartLayer } from './time-graph-chart-layer' +import { TimeGraphRowController } from '../time-graph-row-controller' +import { TimeGraphChart } from './time-graph-chart' +import { BIMath } from '../bigint-utils' + +export class TimeGraphChartCursors extends TimeGraphChartLayer { + protected mouseSelecting: boolean = false + protected mouseButtons: number = 0 + protected shiftKeyDown!: boolean + protected firstCursor?: TimeGraphCursor + protected secondCursor?: TimeGraphCursor + protected color: number = 0x0000ff + + private _stageMouseDownHandler!: Function + private _stageMouseMoveHandler!: Function + private _stageMouseUpHandler!: Function + + private _updateHandler!: { + (): void + (viewRange: TimelineChart.TimeGraphRange): void + (selectionRange: TimelineChart.TimeGraphRange): void + (viewRange: TimelineChart.TimeGraphRange): void + (selectionRange: TimelineChart.TimeGraphRange): void + } + private _mouseDownHandler!: (event: MouseEvent) => void + private _cursorKeyDownHandler!: (event: KeyboardEvent) => void + private _cursorKeyUpHandler!: (event: KeyboardEvent) => void + protected _keyboardShortcutKeyDownHandler!: (event: KeyboardEvent) => void + + constructor( + id: string, + protected chartLayer: TimeGraphChart, + protected rowController: TimeGraphRowController, + style?: { color?: number } + ) { + super(id, rowController) + this.isScalable = false + if (style && style.color) { + this.color = style.color + } + } + + protected afterAddToContainer() { + this.mouseSelecting = false + this.shiftKeyDown = false + this.stage.interactive = true + + this._updateHandler = (): void => this.update() + + this._cursorKeyDownHandler = (event: KeyboardEvent) => { + if (event.key === 'Shift' && this.mouseButtons === 0 && !event.ctrlKey && !event.altKey) { + this.stage.cursor = 'crosshair' + } else if ( + this.stage.cursor === 'crosshair' && + !this.mouseSelecting && + (event.key === 'Control' || event.key === 'Alt') + ) { + this.stage.cursor = 'default' + } + this.shiftKeyDown = event.shiftKey + } + + this._cursorKeyUpHandler = (event: KeyboardEvent) => { + this.shiftKeyDown = event.shiftKey + if (this.stage.cursor === 'crosshair' && !this.mouseSelecting && event.key === 'Shift') { + this.stage.cursor = 'default' + } + } + + this._keyboardShortcutKeyDownHandler = (event: KeyboardEvent) => { + switch (event.key) { + case 'ArrowLeft': + this.navigateOrSelectLeft() + break + case 'ArrowRight': + this.navigateOrSelectRight() + break + default: + break + } + } + + this.onCanvasEvent('keydown', this._cursorKeyDownHandler as any) + this.onCanvasEvent('keydown', this._keyboardShortcutKeyDownHandler as any) + this.onCanvasEvent('keyup', this._cursorKeyUpHandler as any) + + this._stageMouseDownHandler = (event: PIXI.InteractionEvent) => { + this.mouseButtons = event.data.buttons + // if only left button is pressed with or without Shift key + if ( + event.data.button !== 0 || + event.data.buttons !== 1 || + event.data.originalEvent.ctrlKey || + event.data.originalEvent.altKey + ) { + return + } + + const extendSelection = event.data.originalEvent.shiftKey && this.stage.cursor === 'crosshair' + this.mouseSelecting = true + this.stage.cursor = 'crosshair' + const mouseX = event.data.global.x + const end = + this.unitController.viewRange.start + BIMath.round(mouseX / this.stateController.zoomFactor) + this.chartLayer.selectState(undefined) + if (extendSelection) { + const start = this.unitController.selectionRange + ? this.unitController.selectionRange.start + : BigInt(0) + this.unitController.selectionRange = { + start, + end + } + } else { + this.unitController.selectionRange = { + start: end, + end: end + } + } + } + this.stage.on('mousedown', this._stageMouseDownHandler) + this._stageMouseMoveHandler = (event: PIXI.InteractionEvent) => { + this.mouseButtons = event.data.buttons + if (this.mouseSelecting && this.unitController.selectionRange) { + if ((this.mouseButtons & 1) === 0) { + // handle missed button mouseup event + this.mouseSelecting = false + const orig = event.data.originalEvent + if (!orig.shiftKey || orig.ctrlKey || orig.altKey) { + this.stage.cursor = 'default' + } + return + } + const mouseX = event.data.global.x + const start = this.unitController.selectionRange.start + const end = BIMath.clamp( + this.unitController.viewRange.start + + BIMath.round(mouseX / this.stateController.zoomFactor), + BigInt(0), + this.unitController.absoluteRange + ) + this.unitController.selectionRange = { + start, + end + } + } + } + this.stage.on('mousemove', this._stageMouseMoveHandler) + + this._stageMouseUpHandler = (event: PIXI.InteractionEvent) => { + this.mouseButtons = event.data.buttons + if (this.mouseSelecting && event.data.button === 0) { + this.mouseSelecting = false + const orig = event.data.originalEvent + if (!orig.shiftKey || orig.ctrlKey || orig.altKey) { + this.stage.cursor = 'default' + } + } + } + this.stage.on('mouseup', this._stageMouseUpHandler) + this.stage.on('mouseupoutside', this._stageMouseUpHandler) + // right mouse button is not detected on stage + this._mouseDownHandler = (e: MouseEvent) => { + this.mouseButtons = e.buttons + // if right button is pressed + if (e.button === 2) { + // this is the only way to detect mouseup outside of right button + const mouseUpListener = (e: MouseEvent) => { + this.mouseButtons = e.buttons + if (e.button === 2) { + document.removeEventListener('mouseup', mouseUpListener) + } + } + document.addEventListener('mouseup', mouseUpListener) + } + } + this.onCanvasEvent('mousedown', this._mouseDownHandler as any) + this.stateController.onWorldRender(this._updateHandler) + this.unitController.onSelectionRangeChange(this._updateHandler) + this.stateController.onScaleFactorChange(this._updateHandler) + this.update() + } + + public maybeCenterCursor() { + if (this.unitController.selectionRange) { + const cursorPosition = this.unitController.selectionRange.end + if ( + cursorPosition < this.unitController.viewRange.start || + cursorPosition > this.unitController.viewRange.end + ) { + this.centerCursor() + } + } + } + + protected navigateOrSelectLeft() { + const row = this.rowController.selectedRow + if (row && this.unitController.selectionRange) { + const cursorPosition = this.unitController.selectionRange.end + const prevState = row.states + .slice() + .reverse() + .find( + (stateModel: TimelineChart.TimeGraphState) => + cursorPosition > stateModel.range.end || + (cursorPosition > stateModel.range.start && cursorPosition <= stateModel.range.end) + ) + + if (prevState) { + const newPos = + cursorPosition > prevState.range.end ? prevState.range.end : prevState.range.start + this.unitController.selectionRange = { + start: this.shiftKeyDown ? this.unitController.selectionRange.start : newPos, + end: newPos + } + this.chartLayer.selectState(prevState) + } else { + this.unitController.selectionRange = { + start: this.shiftKeyDown + ? this.unitController.selectionRange.start + : row.prevPossibleState, + end: row.prevPossibleState + } + this.chartLayer.setNavigationFlag(true) + } + this.maybeCenterCursor() + } + } + + protected navigateOrSelectRight() { + const row = this.rowController.selectedRow + if (row && this.unitController.selectionRange) { + const cursorPosition = this.unitController.selectionRange.end + const nextState = row.states.find( + (stateModel: TimelineChart.TimeGraphState) => + cursorPosition < stateModel.range.start || + (cursorPosition >= stateModel.range.start && cursorPosition < stateModel.range.end) + ) + + if (nextState) { + const newPos = + cursorPosition < nextState.range.start ? nextState.range.start : nextState.range.end + this.unitController.selectionRange = { + start: this.shiftKeyDown ? this.unitController.selectionRange.start : newPos, + end: newPos + } + this.chartLayer.selectState(nextState) + } else { + this.unitController.selectionRange = { + start: this.shiftKeyDown + ? this.unitController.selectionRange.start + : row.nextPossibleState, + end: row.nextPossibleState + } + this.chartLayer.setNavigationFlag(true) + } + this.maybeCenterCursor() + } + } + + centerCursor() { + if (this.unitController.selectionRange) { + const cursorPosition = this.unitController.selectionRange.end + const halfViewRangeLength = this.unitController.viewRangeLength / BigInt(2) + let start = cursorPosition - halfViewRangeLength + let end = cursorPosition + halfViewRangeLength + + if (start < 0) { + end -= start + start = BigInt(0) + } else if (end > this.unitController.absoluteRange) { + start -= end - this.unitController.absoluteRange + end = this.unitController.absoluteRange + } + + this.unitController.viewRange = { + start, + end + } + } + } + + removeCursors() { + this.unitController.selectionRange = undefined + } + + update() { + if (this.unitController.selectionRange) { + /** + * When user selects a range on the timeline chart, the selection position must correspond to the cursor of the user, + * and not the timeline chart itself since scaling might be applied. + */ + const firstCursorPosition = this.getWorldPixel(this.unitController.selectionRange.start) + const secondCursorPosition = this.getWorldPixel(this.unitController.selectionRange.end) + const firstCursorOptions = { + color: this.color, + height: this.stateController.canvasDisplayHeight, + position: { + x: firstCursorPosition, + y: 0 + } + } + if (!this.firstCursor) { + this.firstCursor = new TimeGraphCursor(firstCursorOptions) + this.addChild(this.firstCursor) + } else { + this.firstCursor.update(firstCursorOptions) + } + if (secondCursorPosition !== firstCursorPosition) { + const secondCursorOptions = { + color: this.color, + height: this.stateController.canvasDisplayHeight, + position: { + x: secondCursorPosition, + y: 0 + } + } + if (!this.secondCursor) { + this.secondCursor = new TimeGraphCursor(secondCursorOptions) + this.addChild(this.secondCursor) + } else { + this.secondCursor.update(secondCursorOptions) + } + } else if (!!this.secondCursor) { + this.removeChild(this.secondCursor) + delete this.secondCursor + } + } else { + this.removeChildren() + delete this.firstCursor + delete this.secondCursor + } + } + + destroy(): void { + if (this.unitController) { + this.stateController.removeWorldRenderHandler(this._updateHandler) + this.unitController.removeSelectionRangeChangedHandler(this._updateHandler) + } + if (this._mouseDownHandler) { + this.removeOnCanvasEvent('mousedown', this._mouseDownHandler as any) + } + if (this._cursorKeyDownHandler) { + this.removeOnCanvasEvent('keydown', this._cursorKeyDownHandler as any) + } + if (this._keyboardShortcutKeyDownHandler) { + this.removeOnCanvasEvent('keydown', this._keyboardShortcutKeyDownHandler as any) + } + if (this._cursorKeyUpHandler) { + this.removeOnCanvasEvent('mousedown', this._cursorKeyUpHandler as any) + } + if (this.stage) { + this.stage.off('mousedown', this._stageMouseDownHandler) + this.stage.off('mousemove', this._stageMouseMoveHandler) + this.stage.off('mouseup', this._stageMouseUpHandler) + this.stage.off('mouseupoutside', this._stageMouseUpHandler) + } + super.destroy() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-grid.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-grid.ts new file mode 100644 index 0000000..7a46833 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-grid.ts @@ -0,0 +1,54 @@ +import { TimeGraphGrid } from '../components/time-graph-grid' +import { TimelineChart } from '../time-graph-model' +import { TimeGraphAxisLayerOptions } from './time-graph-axis' +import { TimeGraphLayer } from './time-graph-layer' + +export class TimeGraphChartGrid extends TimeGraphLayer { + protected gridComponent!: TimeGraphGrid + private _updateHandler!: { + (): void + (viewRange: TimelineChart.TimeGraphRange): void + (viewRange: TimelineChart.TimeGraphRange): void + (selectionRange: TimelineChart.TimeGraphRange): void + } + + constructor( + id: string, + protected rowHeight: number, + protected lineColor?: number + ) { + super(id) + } + + protected afterAddToContainer() { + this.gridComponent = new TimeGraphGrid( + '', + { + height: this.stateController.canvasDisplayHeight, + position: { x: 0, y: 0 }, + width: this.stateController.canvasDisplayWidth, + lineColor: this.lineColor + }, + this.rowHeight, + this.unitController, + this.stateController + ) + this.addChild(this.gridComponent) + this._updateHandler = (): void => this.update() + this.stateController.onWorldRender(this._updateHandler) + this.unitController.onViewRangeChanged(this._updateHandler) + } + + update(opts?: TimeGraphAxisLayerOptions) { + this.gridComponent.update(opts) + } + + destroy(): void { + if (this.unitController) { + this.stateController.removeWorldRenderHandler(this._updateHandler) + this.unitController.removeSelectionRangeChangedHandler(this._updateHandler) + this.unitController.removeViewRangeChangedHandler(this._updateHandler) + } + super.destroy() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-layer.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-layer.ts new file mode 100644 index 0000000..4a90478 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-layer.ts @@ -0,0 +1,11 @@ +import { TimeGraphRowController } from '../time-graph-row-controller' +import { TimeGraphViewportLayer } from './time-graph-viewport-layer' + +export abstract class TimeGraphChartLayer extends TimeGraphViewportLayer { + constructor( + id: string, + protected rowController: TimeGraphRowController + ) { + super(id) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-selection-range.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-selection-range.ts new file mode 100644 index 0000000..6536324 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart-selection-range.ts @@ -0,0 +1,98 @@ +import { TimeGraphRectangle } from '../components/time-graph-rectangle' +import { TimelineChart } from '../time-graph-model' +import { TimeGraphViewportLayer } from './time-graph-viewport-layer' + +export class TimeGraphChartSelectionRange extends TimeGraphViewportLayer { + protected selectionRange?: TimeGraphRectangle + protected color: number = 0x0000ff + private _updateHandler!: { + (): void + (selectionRange: TimelineChart.TimeGraphRange): void + (selectionRange: TimelineChart.TimeGraphRange): void + } + + constructor(id: string, style?: { color?: number }) { + super(id) + this.isScalable = false + if (style && style.color) { + this.color = style.color + } + } + + protected updateScaleAndPosition() { + if (this.unitController.selectionRange && this.selectionRange) { + const firstCursorPosition = this.getWorldPixel(this.unitController.selectionRange.start) + const width = this.getPixel( + this.unitController.selectionRange.end - this.unitController.selectionRange.start + ) + this.selectionRange.update({ + position: { + x: firstCursorPosition, + y: 0 + }, + height: this.stateController.canvasDisplayHeight, + width + }) + } + } + + protected afterAddToContainer() { + this._updateHandler = (): void => this.update() + this.stateController.onWorldRender(this._updateHandler) + this.unitController.onSelectionRangeChange(this._updateHandler) + this.stateController.onScaleFactorChange(this._updateHandler) + this.update() + } + + protected removeSelectionRange() { + this.removeChildren() + delete this.selectionRange + } + + update() { + if (this.unitController.selectionRange) { + /** + * When user selects a range on the timeline chart, the selection position must correspond to the cursor of the user, + * and not the timeline chart itself since scaling might be applied. + */ + const firstCursorPosition = this.getWorldPixel(this.unitController.selectionRange.start) + const secondCursorPosition = this.getWorldPixel(this.unitController.selectionRange.end) + if (secondCursorPosition !== firstCursorPosition) { + if (!this.selectionRange) { + this.selectionRange = new TimeGraphRectangle({ + color: this.color, + opacity: 0.2, + position: { + x: firstCursorPosition, + y: 0 + }, + height: this.stateController.canvasDisplayHeight, + width: secondCursorPosition - firstCursorPosition + }) + this.addChild(this.selectionRange) + } else { + this.selectionRange.update({ + position: { + x: firstCursorPosition, + y: 0 + }, + height: this.stateController.canvasDisplayHeight, + width: secondCursorPosition - firstCursorPosition + }) + } + } else { + this.removeSelectionRange() + } + } else { + this.removeSelectionRange() + } + } + + destroy(): void { + if (this.unitController) { + this.stateController.removeWorldRenderHandler(this._updateHandler) + this.unitController.removeSelectionRangeChangedHandler(this._updateHandler) + } + super.destroy() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart.ts new file mode 100644 index 0000000..ad5f02d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-chart.ts @@ -0,0 +1,1354 @@ +import * as PIXI from 'pixi.js-legacy' +import { + TimeGraphAnnotationComponent, + TimeGraphAnnotationStyle +} from '../components/time-graph-annotation' +import { TimeGraphComponent } from '../components/time-graph-component' +import { TimeGraphRectangle } from '../components/time-graph-rectangle' +import { TimeGraphRow, TimeGraphRowStyle } from '../components/time-graph-row' +import { TimeGraphStateComponent, TimeGraphStateStyle } from '../components/time-graph-state' +import { TimelineChart } from '../time-graph-model' +import { TimeGraphRowController } from '../time-graph-row-controller' +import { TimeGraphChartLayer } from './time-graph-chart-layer' +import { BIMath } from '../bigint-utils' +import { debounce, cloneDeep, DebouncedFunc, isEqual } from 'lodash' + +export interface TimeGraphMouseInteractions { + click?: (el: TimeGraphComponent, ev: PIXI.InteractionEvent, clickCount: number) => void + mouseover?: (el: TimeGraphComponent, ev: PIXI.InteractionEvent) => void + mouseout?: (el: TimeGraphComponent, ev: PIXI.InteractionEvent) => void + mousedown?: (el: TimeGraphComponent, ev: PIXI.InteractionEvent) => void + mouseup?: (el: TimeGraphComponent, ev: PIXI.InteractionEvent) => void +} + +export interface TimeGraphChartProviders { + rowProvider: () => { rowIds: number[] } + dataProvider: ( + range: TimelineChart.TimeGraphRange, + resolution: number, + fetchArrows: boolean, + rowIds?: number[], + additionalProperties?: { [key: string]: any } + ) => + | Promise<{ + rows: TimelineChart.TimeGraphRowModel[] + range: TimelineChart.TimeGraphRange + resolution: number + }> + | { + rows: TimelineChart.TimeGraphRowModel[] + range: TimelineChart.TimeGraphRange + resolution: number + } + | undefined + stateStyleProvider?: (el: TimelineChart.TimeGraphState) => TimeGraphStateStyle | undefined + rowAnnotationStyleProvider?: ( + el: TimelineChart.TimeGraphAnnotation + ) => TimeGraphAnnotationStyle | undefined + rowStyleProvider?: (row?: TimelineChart.TimeGraphRowModel) => TimeGraphRowStyle | undefined +} + +export const keyBoardNavs: Record> = { + zoomin: ['w', 'i'], + zoomout: ['s', 'k'], + panleft: ['a', 'j'], + panright: ['d', 'l'] +} + +export type TimeGraphRowStyleHook = ( + row: TimelineChart.TimeGraphRowModel +) => TimeGraphRowStyle | undefined + +const VISIBLE_ROW_BUFFER = 3 // number of buffer rows above and below visible range +const FINE_RESOLUTION_FACTOR = 1 // fine resolution factor or default to disable coarse update +const EXCLUDED = 4 // EXCLUDED filter expression property key + +const debounceTime = 100 +export class TimeGraphChart extends TimeGraphChartLayer { + protected rowIds: number[] = [] // complete ordered list of rowIds + protected rowComponents: Map = new Map() // map of rowId to row component + protected mouseInteractions: TimeGraphMouseInteractions = {} + protected selectedStateModel: TimelineChart.TimeGraphState | undefined + protected selectedStateChangedHandler: (( + el: TimelineChart.TimeGraphState | undefined + ) => void)[] = [] + protected ongoingRequest: + | { + worldRange: TimelineChart.TimeGraphRange + resolution: number + rowIds: number[] + additionalParams: { + [key: string]: any + } + fullSearch?: boolean + } + | undefined + + protected isNavigating: boolean + + protected mousePanning: boolean = false + protected mouseZooming: boolean = false + protected mouseButtons: number = 0 + protected mouseDownButton: number = 0 + protected mouseStartX: number = 0 + protected mouseEndX: number = 0 + protected mousePanningStart: bigint = BigInt(0) + protected mouseZoomingStart: bigint = BigInt(0) + protected zoomingSelection?: TimeGraphRectangle + + private _stageMouseDownHandler: Function = () => {} + private _stageMouseMoveHandler: Function = () => {} + private _stageMouseUpHandler: Function = () => {} + + private _viewRangeChangedHandler: () => void = () => {} + private _zoomRangeChangedHandler: (zoomFactor: number) => void = () => {} + private _scaleFactorChangedHandler: (scaleFactor: number) => void = () => {} + private _mouseMoveHandler: EventListener = () => {} + private _mouseDownHandler: EventListener = () => {} + private _keyDownHandler: EventListener = () => {} + private _keyUpHandler: EventListener = () => {} + private _mouseWheelHandler: EventListener = () => {} + private _contextMenuHandler: EventListener = () => {} + private _filterExpressionsMap: { [key: number]: string[] } | undefined = undefined + private _allRowIds: number[] = [] // full ordered list of row ids including excluded rows + private _excludedRows: Map = new Map() // known excluded rows after filtering + + private _debouncedMaybeFetchNewData = debounce(() => this.maybeFetchNewData(false), debounceTime) + private _debouncedMaybeFetchNewDataFine = debounce( + () => this.maybeFetchNewData(false, true), + debounceTime + ) + private _debouncedMaybeFetchNewDataFineFullSearch = debounce( + () => this.maybeFetchNewData(false, true, true), + debounceTime + ) + + private _fetchingRows = false + private _pendingFetch: + | { update: boolean | undefined; fine: boolean | undefined; fullSearch: boolean | undefined } + | undefined = undefined + + // Keep track of the most recently clicked point. + // If clicked again during _multiClickTime duration (milliseconds) record multi-click + private _recentlyClickedGlobal: PIXI.Point | null = null + private _multiClickTime: number = 500 + private _mouseClicks = 0 + private _multiClickTimer: DebouncedFunc<() => void> = debounce(() => {}, 0) + + constructor( + id: string, + protected providers: TimeGraphChartProviders, + protected rowController: TimeGraphRowController, + private _coarseResolutionFactor = FINE_RESOLUTION_FACTOR + ) { + super(id, rowController) + this.isNavigating = false + } + + adjustZoom(zoomPosition: number | undefined, hasZoomedIn: boolean) { + if (this.unitController.viewRangeLength <= 0) { + return + } + if (zoomPosition === undefined) { + const start = this.getWorldPixel( + this.unitController.selectionRange ? this.unitController.selectionRange.start : BigInt(0) + ) + const end = this.getWorldPixel( + this.unitController.selectionRange + ? this.unitController.selectionRange.end + : this.stateController.worldRangeLength + ) + zoomPosition = (start + end) / 2 + } + const zoomTime = zoomPosition / this.stateController.zoomFactor + const zoomMagnitude = hasZoomedIn ? 0.8 : 1.25 + const newViewRangeLength = BIMath.clamp( + Number(this.unitController.viewRangeLength) * zoomMagnitude, + BigInt(2), + this.unitController.absoluteRange + ) + const center = this.unitController.viewRange.start + BIMath.round(zoomTime) + const start = BIMath.clamp( + Number(center) - + (zoomTime * Number(newViewRangeLength)) / Number(this.unitController.viewRangeLength), + BigInt(0), + this.unitController.absoluteRange - newViewRangeLength + ) + const end = start + newViewRangeLength + if (start !== end) { + this.unitController.viewRange = { + start, + end + } + } + } + + protected afterAddToContainer() { + this.stage.cursor = 'default' + let mousePositionX = 1 + const horizontalDelta = 3 + let triggerKeyEvent = false + + const moveHorizontally = (magnitude: number) => { + if (magnitude === 0) { + return + } + // move by at least one nanosecond + const absOffset = BIMath.max(1, Math.abs(magnitude / this.stateController.zoomFactor)) + const timeOffset = magnitude > 0 ? absOffset : -absOffset + const start = BIMath.clamp( + this.unitController.viewRange.start + timeOffset, + BigInt(0), + this.unitController.absoluteRange - this.unitController.viewRangeLength + ) + const end = start + this.unitController.viewRangeLength + this.unitController.viewRange = { + start, + end + } + } + + const panHorizontally = (magnitude: number) => { + const timeOffset = BIMath.round(magnitude / this.stateController.zoomFactor) + const start = BIMath.clamp( + this.mousePanningStart - timeOffset, + BigInt(0), + this.unitController.absoluteRange - this.unitController.viewRangeLength + ) + const end = start + this.unitController.viewRangeLength + this.unitController.viewRange = { + start, + end + } + } + + const moveVertically = (magnitude: number) => { + const totalHeight = + this.rowController.totalHeight - this.rowController.rowHeight * this._excludedRows.size + if (totalHeight <= this.stateController.canvasDisplayHeight) { + return + } + let verticalOffset = Math.max(0, this.rowController.verticalOffset + magnitude) + if (totalHeight - verticalOffset <= this.stateController.canvasDisplayHeight) { + verticalOffset = totalHeight - this.stateController.canvasDisplayHeight + } + this.rowController.verticalOffset = verticalOffset + } + + this._mouseMoveHandler = (event: Event) => { + const ev = event as MouseEvent + mousePositionX = ev.offsetX + } + + this._keyDownHandler = (event: Event) => { + const keyEvent = event as KeyboardEvent + const keyPressed = keyEvent.key + if (triggerKeyEvent) { + if ( + keyPressed === 'Control' && + this.mouseButtons === 0 && + !keyEvent.shiftKey && + !keyEvent.altKey + ) { + this.stage.cursor = 'grabbing' + } else if ( + this.stage.cursor === 'grabbing' && + !this.mousePanning && + (keyPressed === 'Shift' || keyPressed === 'Alt') + ) { + this.stage.cursor = 'default' + } + if (keyBoardNavs['zoomin'].indexOf(keyPressed) >= 0) { + this.adjustZoom(mousePositionX, true) + } else if (keyBoardNavs['zoomout'].indexOf(keyPressed) >= 0) { + this.adjustZoom(mousePositionX, false) + } else if (keyBoardNavs['panleft'].indexOf(keyPressed) >= 0) { + moveHorizontally(-horizontalDelta) + } else if (keyBoardNavs['panright'].indexOf(keyPressed) >= 0) { + moveHorizontally(horizontalDelta) + } else if (keyPressed === 'ArrowUp') { + this.navigateUp() + } else if (keyPressed === 'ArrowDown') { + this.navigateDown() + } + keyEvent.preventDefault() + } + if (keyPressed === 'Escape' && this.mouseZooming) { + this.mouseZooming = false + this.stage.cursor = 'default' + this.updateZoomingSelection() + } + } + this._keyUpHandler = (event: Event) => { + const keyEvent = event as KeyboardEvent + const keyPressed = keyEvent.key + if (triggerKeyEvent) { + if (this.stage.cursor === 'grabbing' && !this.mousePanning && keyPressed === 'Control') { + this.stage.cursor = 'default' + } + } + } + + this.stage.addListener('mouseover', (event: MouseEvent) => { + triggerKeyEvent = true + }) + + this.stage.addListener('mouseout', (event: MouseEvent) => { + triggerKeyEvent = false + if (this.stage.cursor === 'grabbing' && !this.mousePanning) { + this.stage.cursor = 'default' + } + }) + + this._stageMouseDownHandler = (event: PIXI.InteractionEvent) => { + this.mouseButtons = event.data.buttons + // if only middle button or only Ctrl+left button is pressed + if ( + (event.data.button !== 1 || event.data.buttons !== 4) && + (event.data.button !== 0 || + event.data.buttons !== 1 || + !event.data.originalEvent.ctrlKey || + event.data.originalEvent.shiftKey || + event.data.originalEvent.altKey || + this.stage.cursor !== 'grabbing') + ) { + return + } + this.mousePanning = true + this.mouseDownButton = event.data.button + this.mouseStartX = event.data.global.x + this.mousePanningStart = this.unitController.viewRange.start + this.stage.cursor = 'grabbing' + } + this.stage.on('mousedown', this._stageMouseDownHandler) + + this._stageMouseMoveHandler = (event: PIXI.InteractionEvent) => { + this.mouseButtons = event.data.buttons + if (this.mousePanning) { + if ( + (this.mouseDownButton == 1 && (this.mouseButtons & 4) === 0) || + (this.mouseDownButton == 0 && (this.mouseButtons & 1) === 0) + ) { + // handle missed button mouseup event + this.mousePanning = false + const orig = event.data.originalEvent + if (!orig.ctrlKey || orig.shiftKey || orig.altKey) { + this.stage.cursor = 'default' + } + return + } + const horizontalDelta = event.data.global.x - this.mouseStartX + panHorizontally(horizontalDelta) + } + if (this.mouseZooming) { + this.mouseEndX = event.data.global.x + this.updateZoomingSelection() + } + } + this.stage.on('mousemove', this._stageMouseMoveHandler) + + this._stageMouseUpHandler = (event: PIXI.InteractionEvent) => { + this.mouseButtons = event.data.buttons + if (event.data.button === this.mouseDownButton && this.mousePanning) { + this.mousePanning = false + const orig = event.data.originalEvent + if (!orig.ctrlKey || orig.shiftKey || orig.altKey) { + this.stage.cursor = 'default' + } + } + } + this.stage.on('mouseup', this._stageMouseUpHandler) + this.stage.on('mouseupoutside', this._stageMouseUpHandler) + + this._mouseWheelHandler = (event: Event) => { + const ev = event as WheelEvent + if (ev.ctrlKey) { + const hasZoomedIn = ev.deltaY < 0 + this.adjustZoom((ev as any).offsetX ?? 0, hasZoomedIn) + } else if (ev.shiftKey) { + moveHorizontally(ev.deltaY) + } else { + if (Math.abs(ev.deltaY) > Math.abs(ev.deltaX)) { + moveVertically(ev.deltaY) + } else { + moveHorizontally(ev.deltaX) + } + } + ev.preventDefault() + } + this._contextMenuHandler = (event: Event) => { + event.preventDefault() + } + + this._mouseDownHandler = (event: Event) => { + const e = event as MouseEvent + this.mouseButtons = e.buttons + // if only right button is pressed + if (e.button === 2 && e.buttons === 2 && this.stage.cursor === 'default') { + this.mouseZooming = true + this.mouseDownButton = e.button + this.mouseStartX = e.offsetX + this.mouseEndX = e.offsetX + this.mouseZoomingStart = + this.unitController.viewRange.start + + BIMath.round(this.mouseStartX / this.stateController.zoomFactor) + this.stage.cursor = 'col-resize' + // this is the only way to detect mouseup outside of right button + document.addEventListener('mouseup', mouseUpListener) + this.updateZoomingSelection() + } + } + const mouseUpListener = (event: MouseEvent) => { + const e = event as MouseEvent + this.mouseButtons = e.buttons + if (e.button === this.mouseDownButton && this.mouseZooming) { + this.mouseZooming = false + const start = this.mouseZoomingStart + const end = + this.unitController.viewRange.start + + BIMath.round(this.mouseEndX / this.stateController.zoomFactor) + if (BIMath.abs(end - start) > 1 && this.unitController.viewRangeLength > 1) { + let newViewStart = BIMath.clamp(start, this.unitController.viewRange.start, end) + let newViewEnd = BIMath.clamp(end, start, this.unitController.viewRange.end) + this.unitController.viewRange = { + start: newViewStart, + end: newViewEnd + } + } + this.stage.cursor = 'default' + document.removeEventListener('mouseup', mouseUpListener) + this.updateZoomingSelection() + } + } + this.onCanvasEvent('mousemove', this._mouseMoveHandler) + this.onCanvasEvent('keydown', this._keyDownHandler) + this.onCanvasEvent('keyup', this._keyUpHandler) + this.onCanvasEvent('mousedown', this._mouseDownHandler) + this.onCanvasEvent('mousewheel', this._mouseWheelHandler) + this.onCanvasEvent('wheel', this._mouseWheelHandler) + this.onCanvasEvent('contextmenu', this._contextMenuHandler) + + this.rowController.onVerticalOffsetChangedHandler((verticalOffset) => { + this.layer.position.y = -verticalOffset + this._debouncedMaybeFetchNewData() + }) + + this._viewRangeChangedHandler = () => { + this.updateZoomingSelection() + this.ensureRowLinesFitViewWidth() + } + this.unitController.onViewRangeChanged(this._viewRangeChangedHandler) + this.unitController.onViewRangeChanged(this._debouncedMaybeFetchNewData) + + this._scaleFactorChangedHandler = () => { + this.scaleComponents() + } + + this.stateController.onScaleFactorChange(this._scaleFactorChangedHandler) + + /** + * We need to explicitly re-render every zoom change because of edge case: + * WorldRange = Absolute Range && ViewRange < WorldRange + * When we are at above state, and reset view to home, nothing happens. + * We already rendered the world and don't rerender (WorldRange doesn't change) + * this.maybeFetchNewData is called and we don't fetch or trigger viewport.handleOnWorldRange. + * This is because don't re-render the world since it's we already have the entire trace rendered. + * We don't currently have any logic for scaling the world down. + * UpdatingScaleAndPosition also scales everything down nicely when zooming out :) + * Side effect - stage.width is always reset to renderer.width when this is called. + */ + this._zoomRangeChangedHandler = (zoomFactor) => { + this.ensureRowLinesFitViewWidth() + this.stateController.handleOnWorldRender() + } + this.stateController.onZoomChanged(this._zoomRangeChangedHandler) + + if (this.unitController.viewRangeLength && this.stateController.canvasDisplayWidth) { + this.maybeFetchNewData() + } + } + + updateChart(filterExpressionsMap?: { [key: number]: string[] }) { + if (!isEqual(filterExpressionsMap?.[EXCLUDED], this._filterExpressionsMap?.[EXCLUDED])) { + this._excludedRows.clear() + } + this._filterExpressionsMap = filterExpressionsMap + if (this.unitController && this.stateController) { + this.maybeFetchNewData(true) + } + } + + update() { + this.ensureRowLinesFitViewWidth() + this._debouncedMaybeFetchNewData() + } + + updateZoomingSelection() { + if (!this.mouseZooming && this.zoomingSelection) { + this.removeChild(this.zoomingSelection) + delete this.zoomingSelection + } else if (this.mouseZooming) { + // The zooming selection should not be scaled. It should use the actual mouse coordinates. + const x = this.getWorldPixel(this.mouseZoomingStart) / this.stateController.scaleFactor + const options = { + color: 0xbbbbbb, + opacity: 0.2, + position: { + x, + y: 0 + }, + height: Math.max(this.stateController.canvasDisplayHeight, this.rowController.totalHeight), + width: (this.mouseEndX - this.mouseStartX) / this.stateController.scaleFactor + } + + if (!this.zoomingSelection) { + // Add the rectangle if we don't have one + this.zoomingSelection = new TimeGraphRectangle(options) + this.addChild(this.zoomingSelection) + } else { + // Update the rectangle if we do + this.zoomingSelection.update(options) + } + } + } + + protected removeChildren(): void { + this.rowComponents.clear() + super.removeChildren() + } + + destroy() { + this.stateController.removeOnZoomChanged(this._zoomRangeChangedHandler) + this.stateController.removeOnScaleFactorChanged(this._scaleFactorChangedHandler) + this.unitController.removeViewRangeChangedHandler(this._debouncedMaybeFetchNewData) + this.unitController.removeViewRangeChangedHandler(this._viewRangeChangedHandler) + if (this._viewRangeChangedHandler) { + this.unitController.removeViewRangeChangedHandler(this._viewRangeChangedHandler) + } + if (this._mouseMoveHandler) { + this.removeOnCanvasEvent('mousemove', this._mouseMoveHandler) + } + if (this._mouseDownHandler) { + this.removeOnCanvasEvent('mousedown', this._mouseDownHandler) + } + if (this._keyDownHandler) { + this.removeOnCanvasEvent('keydown', this._keyDownHandler) + } + if (this._keyUpHandler) { + this.removeOnCanvasEvent('keyup', this._keyUpHandler) + } + if (this._mouseWheelHandler) { + this.removeOnCanvasEvent('mousewheel', this._mouseWheelHandler) + this.removeOnCanvasEvent('wheel', this._mouseWheelHandler) + } + if (this._contextMenuHandler) { + this.removeOnCanvasEvent('contextmenu', this._contextMenuHandler) + } + if (this.stage) { + this.stage.off('mousedown', this._stageMouseDownHandler) + this.stage.off('mousemove', this._stageMouseMoveHandler) + this.stage.off('mouseup', this._stageMouseUpHandler) + this.stage.off('mouseupoutside', this._stageMouseUpHandler) + } + this.rowComponents.clear() + super.destroy() + } + + protected async maybeFetchNewData(update?: boolean, fine?: boolean, fullSearch?: boolean) { + if (this._fetchingRows) { + this._pendingFetch = { + update: this._pendingFetch?.update || update, + fine: this._pendingFetch?.fine || fine, + fullSearch: this._pendingFetch?.fullSearch || fullSearch + } + return + } + if (!fine && this._filterExpressionsMap?.[EXCLUDED]) { + // skip the coarse update when EXCLUDED filter is applied + fine = true + } + this._allRowIds = this.providers.rowProvider().rowIds + this.rowIds = this._allRowIds.filter((rowId) => !this._excludedRows.has(rowId)) + const visibleRowIds = this.getVisibleRowIds(VISIBLE_ROW_BUFFER) + // update position of existing rows and remove deleted rows + const movedRows: TimeGraphRow[] = [] + this.rowComponents.forEach((rowComponent, rowId) => { + const index = this.rowIds.indexOf(rowId) + if (index == -1) { + this.rowComponents.delete(rowId) + this.removeChild(rowComponent) + } else { + const y = this.rowController.rowHeight * index + if (!visibleRowIds.includes(rowId)) { + this.rowComponents.delete(rowId) + this.removeChild(rowComponent) + } else if (rowComponent.position.y !== y) { + movedRows.push(rowComponent) + } + rowComponent.position.y = y + } + }) + // update selected row + if (this.rowController.selectedRow) { + this.rowController.selectedRowIndex = this.rowIds.indexOf(this.rowController.selectedRow.id) + if (this.rowController.selectedRowIndex === -1) { + this.rowController.selectedRow = undefined + } + } + // create placeholder rows + this.rowIds.forEach((rowId) => { + if (!this.rowComponents.get(rowId)) { + this.addRow(rowId) + } + }) + const { viewRange } = this.unitController + const worldRange = this.stateController.computeWorldRangeFromViewRange() + const resolutionFactor = fine ? FINE_RESOLUTION_FACTOR : this._coarseResolutionFactor + const resolution = + (resolutionFactor * Number(this.unitController.viewRangeLength)) / + this.stateController.canvasDisplayWidth + // Compute the visible rowIds to fetch. Fetch all visible rows if update flag is set, + // otherwise fetch visible rows with no component, no model or obsolete model. + const rowIds = visibleRowIds.filter((rowId) => { + const rowComponent = this.rowComponents.get(rowId) + return ( + update || + !rowComponent || + !rowComponent.providedModel || + viewRange.start < rowComponent.providedModel.range.start || // This logic can be updated for pre-rendering before we reach the end. + viewRange.end > rowComponent.providedModel.range.end || // This logic can be updated for pre-rendering before we reach the end. + !isEqual(worldRange, rowComponent.providedModel.range) || + resolution < rowComponent.providedModel.resolution || + !isEqual(rowComponent.providedModel.filterExpressionsMap, this._filterExpressionsMap) + ) + }) + // rebuild rows that have changed position but that won't be fetched + movedRows.forEach((rowComponent) => { + if ( + rowComponent.model && + !rowIds.includes(rowComponent.model.id) && + rowComponent.providedModel + ) { + const rowData = { + rows: [rowComponent.model], + range: rowComponent.providedModel?.range, + resolution: rowComponent.providedModel?.resolution + } + this.addOrUpdateRows(rowData) + } + }) + if (fullSearch && this._filterExpressionsMap?.[EXCLUDED]) { + this._excludedRows.forEach((range, rowId) => { + // add excluded rows to request to determine if they should reappear + if (!isEqual(worldRange, range)) { + rowIds.push(rowId) + } + }) + // reorder rows + rowIds.sort((a, b) => this._allRowIds.indexOf(a) - this._allRowIds.indexOf(b)) + } + if (rowIds.length > 0) { + const additionalParams: { [key: string]: any } = {} + if (this._filterExpressionsMap) { + additionalParams['filter_query_parameters'] = { + filter_expressions_map: this._filterExpressionsMap, + strategy: fullSearch ? 'DEEP' : 'SAMPLED' + } + } + + if (fullSearch) { + for (let i = 0; i < rowIds.length; i++) { + let interrupted = false + try { + const request = { + worldRange, + resolution, + rowIds: [rowIds[i]], + additionalParams, + fullSearch + } + this._fetchingRows = true + await this.fetchRows(request, i === rowIds.length - 1, fine) + } catch (error) { + return + } finally { + this._fetchingRows = false + if (this._pendingFetch !== undefined) { + const pendingFetch = this._pendingFetch + this._pendingFetch = undefined + this.maybeFetchNewData( + pendingFetch.update, + pendingFetch.fine, + pendingFetch.fullSearch + ) + interrupted = true + } + } + if (interrupted) { + return + } + } + // When row-by-row fetch is completed (not interrupted by new request), update model with filter + for (let i = 0; i < rowIds.length; i++) { + const rowComponent = this.rowComponents.get(rowIds[i]) + if (rowComponent && rowComponent.providedModel) { + rowComponent.providedModel.filterExpressionsMap = this._filterExpressionsMap + } + } + if (this._filterExpressionsMap?.[EXCLUDED]) { + // restart full search to check if newly visible rows need to be filled after filtering + this._debouncedMaybeFetchNewDataFineFullSearch() + } + } else { + try { + const request = { worldRange, resolution, rowIds, additionalParams, fullSearch } + this._fetchingRows = true + await this.fetchRows(request, !fullSearch, fine) + } catch (error) { + return + } finally { + this._fetchingRows = false + if (this._pendingFetch !== undefined) { + const pendingUpdate = this._pendingFetch + this._pendingFetch = undefined + this.maybeFetchNewData( + pendingUpdate.update, + pendingUpdate.fine, + pendingUpdate.fullSearch + ) + } + } + } + } else { + if (movedRows.length > 0) { + // no rows to update but may need to fetch arrows + const request = { worldRange, resolution, rowIds: [], additionalParams: {}, fullSearch } + await this.fetchRows(request, true, fine) + } + if (!fine && this._coarseResolutionFactor !== FINE_RESOLUTION_FACTOR) { + // no row to update for coarse resolution, try fine resolution + this.maybeFetchNewData(update, true) + } + } + } + + private async fetchRows( + request: { + worldRange: TimelineChart.TimeGraphRange + resolution: number + rowIds: number[] + additionalParams: { + [key: string]: any + } + fullSearch?: boolean + }, + fetchArrows: boolean, + fine?: boolean + ) { + if (isEqual(request, this.ongoingRequest)) { + // request ignored because equal to ongoing request + return + } + this._debouncedMaybeFetchNewDataFine.cancel() + this._debouncedMaybeFetchNewDataFineFullSearch.cancel() + try { + this.ongoingRequest = request + const rowData = await this.providers.dataProvider( + request.worldRange, + request.resolution, + fetchArrows, + request.rowIds, + request.additionalParams + ) + if (!isEqual(request, this.ongoingRequest)) { + // response discarded because not equal to ongoing request + return Promise.reject(new Error('Ongoing request updated')) + } + if (rowData) { + if (!request.fullSearch) { + this.stateController.worldRange = request.worldRange + this.stateController.worldZoomFactor = this.stateController.zoomFactor + this.stateController.resetScale() + } else if (!isEqual(request.worldRange, this.stateController.worldRange)) { + // response discarded because world range updated + return Promise.reject(new Error('Request for outdated world range')) + } + this.updateExcludedRows(request.rowIds, request.worldRange, rowData.rows) + this.addOrUpdateRows(rowData) + if (this.isNavigating) { + this.selectStateInNavigation() + } + if (this.mouseZooming) { + if (this.zoomingSelection) { + this.removeChild(this.zoomingSelection) + } + + delete this.zoomingSelection + this.updateZoomingSelection() + } + } + } finally { + if (isEqual(request, this.ongoingRequest)) { + this.ongoingRequest = undefined + } + this.isNavigating = false + if (!fine && this._coarseResolutionFactor !== FINE_RESOLUTION_FACTOR) { + this._debouncedMaybeFetchNewDataFine() + } + if ( + this._filterExpressionsMap && + !request.fullSearch && + (fine || this._coarseResolutionFactor === FINE_RESOLUTION_FACTOR) + ) { + // fine resolution done for sampled search, time for deep search in fine res + this._debouncedMaybeFetchNewDataFineFullSearch() + } + } + // After we build the new world from new data, execute render handlers. + // Only execute after first, coarse render. Don't need to repeat after second, fine render. + this.stateController.handleOnWorldRender() + } + + protected handleSelectedStateChange() { + this.selectedStateChangedHandler.forEach((handler) => handler(this.selectedStateModel)) + } + + protected updateExcludedRows( + requestedRowIds: number[], + worldRange: TimelineChart.TimeGraphRange, + rows: TimelineChart.TimeGraphRowModel[] + ) { + let update = false + requestedRowIds.forEach((rowId) => { + if (!rows.find((row) => row.id === rowId)) { + // an excluded row is removed + update = true + this._excludedRows.set(rowId, worldRange) + const rowComponent = this.rowComponents.get(rowId) + if (rowComponent) { + this.rowComponents.delete(rowId) + this.removeChild(rowComponent) + } + } else if (this._excludedRows.delete(rowId)) { + // a previously excluded row reappears + update = true + } + }) + if (update) { + // reposition all rows + this.rowIds = this._allRowIds.filter((rowId) => !this._excludedRows.has(rowId)) + this.rowComponents.forEach((rowComponent, rowId) => { + const index = this.rowIds.indexOf(rowId) + if (index != -1) { + rowComponent.position.y = this.rowController.rowHeight * index + } + }) + } + } + + protected addOrUpdateRows(rowData: { + rows: TimelineChart.TimeGraphRowModel[] + range: TimelineChart.TimeGraphRange + resolution: number + }) { + if (!this.stateController) { + throw 'Add this TimeGraphChart to a container before adding rows.' + } + const providedModel = { range: rowData.range, resolution: rowData.resolution } + rowData.rows.forEach((row) => { + const rowComponent = this.rowComponents.get(row.id) + if (rowComponent) { + this.removeChild(rowComponent) + } + this.addRow(row.id, row, providedModel) + }) + } + + protected addRow( + rowId: number, + row?: TimelineChart.TimeGraphRowModel, + providedModel?: { + range: TimelineChart.TimeGraphRange + resolution: number + filterExpressionsMap?: { [key: number]: string[] } + } + ) { + const id = 'row_' + rowId + const rowIndex = this.rowIds.indexOf(rowId) + const rowStyle = this.providers.rowStyleProvider + ? this.providers.rowStyleProvider(row) + : undefined + const rowComponent = new TimeGraphRow( + id, + { + position: { + x: 0, + y: this.rowController.rowHeight * rowIndex + }, + width: this.rowWidth, + height: this.rowController.rowHeight + }, + rowIndex, + row, + rowStyle + ) + rowComponent.displayObject.interactive = true + rowComponent.displayObject.on( + 'click', + ((e: PIXI.InteractionEvent) => { + this.selectRow(row) + }).bind(this) + ) + this.addChild(rowComponent) + this.rowComponents.set(rowId, rowComponent) + if (this.rowController.selectedRowIndex == rowIndex) { + this.selectRow(row) + } + if (row && providedModel) { + this.updateRow(rowComponent, row, providedModel) + } + } + + protected updateRow( + rowComponent: TimeGraphRow, + row: TimelineChart.TimeGraphRowModel, + providedModel: { + range: TimelineChart.TimeGraphRange + resolution: number + filterExpressionsMap?: { [key: number]: string[] } + } + ) { + let lastX: number | undefined + let lastTime: bigint | undefined + let lastBlank = false + row.states.forEach((stateModel: TimelineChart.TimeGraphState) => { + const x = this.getWorldPixel(stateModel.range.start) + if (stateModel.data?.style) { + const el = this.createNewState(stateModel, rowComponent) + if (el) { + this.addElementInteractions(el) + rowComponent.addState(el) + } + } + if (row.gapStyle) { + this.updateGap(stateModel, rowComponent, row.gapStyle, x, lastX, lastTime, lastBlank) + } + lastX = Math.max(x + 1, this.getWorldPixel(stateModel.range.end)) + lastTime = stateModel.range.end + lastBlank = stateModel.data?.style === undefined + }) + if ( + this.rowController.selectedRow && + this.unitController.selectionRange && + this.rowController.selectedRow.id === row.id + ) { + const state = row.states.find((state) => { + return ( + this.unitController.selectionRange && + state.range.start <= this.unitController.selectionRange.start && + state.range.end > this.unitController.selectionRange.start + ) + }) + this.selectState(state) + } + row.annotations.forEach((annotation: TimelineChart.TimeGraphAnnotation) => { + const el = this.createNewAnnotation(annotation, rowComponent) + if (el) { + this.addElementInteractions(el) + rowComponent.addAnnotation(el) + } + }) + rowComponent.providedModel = providedModel + } + + protected updateGap( + state: TimelineChart.TimeGraphState, + rowComponent: TimeGraphRow, + gapStyle: any, + x: number, + lastX?: number, + lastTime?: bigint, + lastBlank?: boolean + ) { + /* add gap if there is visible space between states or if there is a time gap between two blank states */ + const isFilteredOut = state.data?.tags >= EXCLUDED + if ( + lastX && + lastTime && + (x > lastX || (lastBlank && !state.data?.style && state.range.start > lastTime)) && + !isFilteredOut + ) { + const stateModel = { + id: rowComponent.id + '-gap', + range: { + start: lastTime, + end: state.range.start + }, + data: { + style: gapStyle + } + } + const gap = this.createNewState(stateModel, rowComponent) + if (gap) { + rowComponent.addChild(gap) + this.addElementInteractions(gap) + } + } + } + + protected createNewAnnotation( + annotation: TimelineChart.TimeGraphAnnotation, + rowComponent: TimeGraphRow + ) { + const start = this.getWorldPixel(annotation.range.start) + const elementStyle = this.providers.rowAnnotationStyleProvider + ? this.providers.rowAnnotationStyleProvider(annotation) + : undefined + const el = new TimeGraphAnnotationComponent( + annotation.id, + annotation, + { position: { x: start, y: rowComponent.position.y + rowComponent.height * 0.5 } }, + elementStyle, + rowComponent, + this.stateController.scaleFactor + ) + return el + } + + protected createNewState( + stateModel: TimelineChart.TimeGraphState, + rowComponent: TimeGraphRow + ): TimeGraphStateComponent | undefined { + const xStart = this.getWorldPixel(stateModel.range.start, true) + const xEnd = this.getWorldPixel(stateModel.range.end, true) + const displayWidth = xEnd - xStart + const elementStyle = this.providers.stateStyleProvider + ? this.providers.stateStyleProvider(stateModel) + : undefined + const el = new TimeGraphStateComponent( + stateModel.id, + stateModel, + xStart, + xEnd, + rowComponent, + elementStyle, + displayWidth, + this.stateController.scaleFactor + ) + return el + } + + protected addElementInteractions(el: TimeGraphComponent) { + el.displayObject.interactive = true + + this._multiClickTimer = debounce(() => { + this._mouseClicks = 0 + this._recentlyClickedGlobal = null + }, this._multiClickTime) + + el.displayObject.on( + 'click', + ((e: PIXI.InteractionEvent) => { + if (el instanceof TimeGraphStateComponent && !this.mousePanning && !this.mouseZooming) { + this.selectState(el.model) + } + + // Mouse clicks count keeps increasing without limit as long as we keep clicking on the same coordinate. + if (this._recentlyClickedGlobal && this._recentlyClickedGlobal.equals(e.data.global)) { + this._mouseClicks++ + } else { + // Only clear the timer and reset the click count if the global position is NOT + // the same one as click 1. + this._multiClickTimer.cancel() + this._mouseClicks = 1 + + // Store the global position on first click + this._recentlyClickedGlobal = cloneDeep(e.data.global) + } + + // We can use a debouncer to reset the count when no click occurs for a certain period. + this._multiClickTimer() + + // Click callback includes count parameter to record subsequent clicks on the same point + if (this.mouseInteractions && this.mouseInteractions.click) { + this.mouseInteractions.click(el, e, this._mouseClicks) + } + }).bind(this) + ) + el.displayObject.on( + 'mouseover', + ((e: PIXI.InteractionEvent) => { + if (this.mouseInteractions && this.mouseInteractions.mouseover) { + this.mouseInteractions.mouseover(el, e) + } + }).bind(this) + ) + el.displayObject.on( + 'mouseout', + ((e: PIXI.InteractionEvent) => { + if (this.mouseInteractions && this.mouseInteractions.mouseout) { + this.mouseInteractions.mouseout(el, e) + } + }).bind(this) + ) + el.displayObject.on( + 'mousedown', + ((e: PIXI.InteractionEvent) => { + if (this.mouseInteractions && this.mouseInteractions.mousedown) { + this.mouseInteractions.mousedown(el, e) + } + }).bind(this) + ) + el.displayObject.on( + 'mouseup', + ((e: PIXI.InteractionEvent) => { + if (this.mouseInteractions && this.mouseInteractions.mouseup) { + this.mouseInteractions.mouseup(el, e) + } + }).bind(this) + ) + } + + protected updateStateStyle(model: TimelineChart.TimeGraphState) { + const style = this.providers.stateStyleProvider && this.providers.stateStyleProvider(model) + const component = this.getStateById(model.id) + component && style && (component.style = style) + } + + protected updateRowStyle(model: TimelineChart.TimeGraphRowModel) { + const style = this.providers.rowStyleProvider && this.providers.rowStyleProvider(model) + const component = this.rowComponents.get(model.id) + component && style && (component.style = style) + } + + registerMouseInteractions(interactions: TimeGraphMouseInteractions) { + this.mouseInteractions = interactions + } + + onSelectedStateChanged(handler: (el: TimelineChart.TimeGraphState | undefined) => void) { + this.selectedStateChangedHandler.push(handler) + } + + getRowModel(index: number): TimelineChart.TimeGraphRowModel | undefined { + if (index >= this.rowIds.length) { + return undefined + } + return this.rowComponents.get(this.rowIds[index])?.model + } + + getStateById(id: string): TimeGraphStateComponent | undefined { + let state: TimeGraphStateComponent | undefined + for (const rowComponent of this.rowComponents.values()) { + state = rowComponent.getStateById(id) + if (state) { + break + } + } + return state + } + + selectRow(row: TimelineChart.TimeGraphRowModel | undefined) { + if (this.rowController.selectedRow) { + delete this.rowController.selectedRow.selected + this.updateRowStyle(this.rowController.selectedRow) + } + this.rowController.selectedRow = row + if (row) { + this.rowController.selectedRowIndex = this.rowIds.indexOf(row.id) + row.selected = true + this.updateRowStyle(row) + } + } + + getSelectedState(): TimelineChart.TimeGraphState | undefined { + return this.selectedStateModel + } + + selectState(model: TimelineChart.TimeGraphState | undefined) { + if (this.selectedStateModel === model) { + return + } + if (this.selectedStateModel) { + delete this.selectedStateModel.selected + this.updateStateStyle(this.selectedStateModel) + } + if (model) { + const state = this.getStateById(model.id) + if (state) { + const row = state.row + if (row) { + state.model.selected = true + this.updateStateStyle(state.model) + this.selectRow(row.model) + } + } + } + this.selectedStateModel = model + this.handleSelectedStateChange() + } + + setNavigationFlag(flag: boolean) { + this.isNavigating = flag + } + + selectAndReveal(rowIndex: number) { + if (rowIndex >= 0 && rowIndex < this.rowIds.length) { + this.rowController.selectedRowIndex = rowIndex + this.navigate(rowIndex, true) + } + } + + protected selectStateInNavigation() { + const row = this.rowController.selectedRow + if (row && this.unitController.selectionRange) { + const cursorPosition = this.unitController.selectionRange.end + const state = row.states.find( + (stateModel: TimelineChart.TimeGraphState) => + stateModel.range.start === cursorPosition || stateModel.range.end === cursorPosition + ) + this.selectState(state) + } + this.setNavigationFlag(false) + } + + protected navigateDown() { + if (this.rowIds.length > 0) { + this.rowController.selectedRowIndex = Math.min( + this.rowController.selectedRowIndex + 1, + this.rowIds.length - 1 + ) + this.navigate(this.rowController.selectedRowIndex) + } + } + + protected navigateUp() { + if (this.rowIds.length > 0) { + this.rowController.selectedRowIndex = Math.max(this.rowController.selectedRowIndex - 1, 0) + this.navigate(this.rowController.selectedRowIndex) + } + } + + protected navigate(rowIndex: number, center?: boolean) { + this.ensureVisible(rowIndex, center) + const selectedRowId = this.rowIds[rowIndex] + const selectedRowComponent = this.rowComponents.get(selectedRowId) + if (!selectedRowComponent) { + this.selectRow(undefined) + this.selectState(undefined) + return + } + const selectedRow = selectedRowComponent.model + this.selectRow(selectedRow) + const state = selectedRow?.states.find((state) => { + return ( + this.unitController.selectionRange && + state.range.start <= this.unitController.selectionRange.start && + state.range.end > this.unitController.selectionRange.start + ) + }) + this.selectState(state) + } + + private getVisibleRowIds(buffer: number): number[] { + const visibleRowIds: number[] = [] + const rowHeight = this.rowController.rowHeight + // return all rows that intersect the visible height range with a number of buffer rows + const minY = this.rowController.verticalOffset - buffer * rowHeight + const maxY = + this.rowController.verticalOffset + + this.stateController.canvasDisplayHeight + + buffer * rowHeight + this.rowIds.forEach((rowId, index) => { + const y = rowHeight * index + if (y + rowHeight >= minY && y <= maxY) { + visibleRowIds.push(rowId) + } + }) + return visibleRowIds + } + + protected ensureVisible(rowIndex: number, center?: boolean) { + if (rowIndex === -1) { + return + } + if (rowIndex * this.rowController.rowHeight < this.rowController.verticalOffset) { + center + ? this.centerRow(rowIndex) + : (this.rowController.verticalOffset = rowIndex * this.rowController.rowHeight) + } else if ( + (rowIndex + 1) * this.rowController.rowHeight > + this.rowController.verticalOffset + this.stateController.canvasDisplayHeight + ) { + center + ? this.centerRow(rowIndex) + : (this.rowController.verticalOffset = + (rowIndex + 1) * this.rowController.rowHeight - + this.stateController.canvasDisplayHeight) + } + } + + protected centerRow(rowIndex: number) { + if (rowIndex === -1) { + return + } + + const { rowHeight } = this.rowController + const { canvasDisplayHeight } = this.stateController + + const numberOfVisibleRows = Math.floor(canvasDisplayHeight / rowHeight) + const halfVizRows = Math.floor(numberOfVisibleRows / 2) + const numberOfRows = this.rowComponents.size + + if (rowIndex < halfVizRows) { + // Index too low to center. + this.rowController.verticalOffset = 0 + } else if (rowIndex > numberOfRows - halfVizRows - 1) { + // Index too high to center. + this.rowController.verticalOffset = (numberOfRows - numberOfVisibleRows) * rowHeight + } else { + // Can be centered. + const numberOfHiddenRows = rowIndex - halfVizRows + this.rowController.verticalOffset = numberOfHiddenRows * rowHeight + } + } + + /** + * Ensures that we always see the row lines. + * This is a hacky solution that triggers every view range change. + */ + protected ensureRowLinesFitViewWidth = () => { + const newRowWidth = this.stateController.canvasDisplayWidth / this.stateController.scaleFactor + this.rowComponents.forEach((rowComponent) => { + rowComponent.update({ + height: this.rowController.rowHeight, + position: { + x: -this.stateController.positionOffset.x, + y: rowComponent.position.y + }, + width: newRowWidth + }) + }) + } + + protected scaleComponents() { + this.rowComponents.forEach((rowComponent) => { + const row = rowComponent.model + row?.states.forEach((state: TimelineChart.TimeGraphState) => { + const el = rowComponent.getStateById(state.id) + if (el) { + el.scaleLabel(this.stateController.scaleFactor) + } + }) + row?.annotations.forEach((annotation: TimelineChart.TimeGraphAnnotation) => { + const el = rowComponent.getAnnotationById(annotation.id) + if (el) { + el.scaleAnnotation(this.stateController.scaleFactor) + } + }) + }) + } + + get rowWidth(): number { + return Number(this.stateController.worldRangeLength) * this.stateController.zoomFactor + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-layer.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-layer.ts new file mode 100644 index 0000000..386dbda --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-layer.ts @@ -0,0 +1,96 @@ +import * as PIXI from 'pixi.js-legacy' + +import { TimeGraphComponent, TimeGraphParentComponent } from '../components/time-graph-component' +import { TimeGraphUnitController } from '../time-graph-unit-controller' +import { TimeGraphStateController } from '../time-graph-state-controller' + +export type TimeGraphLayerOptions = {} + +export abstract class TimeGraphLayer { + private canvas!: HTMLCanvasElement + protected stateController!: TimeGraphStateController + protected unitController!: TimeGraphUnitController + protected children: TimeGraphComponent[] + protected stage!: PIXI.Container + protected layer: PIXI.Container + private childContainer: PIXI.Container | undefined + + constructor(protected id: string) { + this.children = [] + this.layer = new PIXI.Container() + } + + protected addChild(child: TimeGraphComponent, parent?: TimeGraphParentComponent) { + if (!this.canvas) { + throw 'Layers must be added to a container before components can be added.' + } + child.update() + if (parent) { + parent.addChild(child) + } else { + if (!this.childContainer) { + this.childContainer = new PIXI.Container() + this.layer.addChild(this.childContainer) + } + this.childContainer.addChild(child.displayObject) + this.children.push(child) + } + } + + /** + This method is called by the container this layer is added to. + */ + initializeLayer( + canvas: HTMLCanvasElement, + stage: PIXI.Container, + stateController: TimeGraphStateController, + unitController: TimeGraphUnitController + ) { + this.canvas = canvas + this.stateController = stateController + this.unitController = unitController + this.stage = stage + stage.addChild(this.layer) + this.afterAddToContainer() + } + + protected onCanvasEvent(type: string, handler: (event: Event) => void) { + this.canvas.addEventListener(type, handler) + } + + protected removeOnCanvasEvent(type: string, handler: (event: Event) => void) { + this.canvas.removeEventListener(type, handler) + } + + protected removeChildren() { + this.childContainer?.destroy({ children: true }) + this.childContainer = undefined + this.children = [] + } + + protected removeChild(child: TimeGraphComponent) { + this.childContainer?.removeChild(child.displayObject) + child.destroy() + const idx = this.children.findIndex((c) => c === child) + idx && this.children.splice(idx, 1) + } + + protected getPixel(time: bigint) { + const div = 0x100000000 + const hi = Number(time / BigInt(div)) + const lo = Number(time % BigInt(div)) + return Math.floor( + hi * this.stateController.zoomFactor * div + lo * this.stateController.zoomFactor + ) + } + + protected afterAddToContainer() {} + + destroy() { + this.layer.destroy({ children: true }) + this.childContainer = undefined + this.children = [] + } + + abstract update(opts?: TimeGraphLayerOptions): void +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-markers-chart-cursors.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-markers-chart-cursors.ts new file mode 100644 index 0000000..aa040fe --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-markers-chart-cursors.ts @@ -0,0 +1,62 @@ +import { TimelineChart } from '../time-graph-model' +import { TimeGraphChartCursors } from './time-graph-chart-cursors' + +export class TimeGraphMarkersChartCursors extends TimeGraphChartCursors { + protected afterAddToContainer() { + super.afterAddToContainer() + this.removeOnCanvasEvent('keydown', this._keyboardShortcutKeyDownHandler as any) + this._keyboardShortcutKeyDownHandler = (event: KeyboardEvent) => { + switch (event.key) { + case ',': + this.selectClosestStateAndMakeSelectionRange('prev') + break + case '.': + this.selectClosestStateAndMakeSelectionRange('next') + break + default: + return + } + } + this.onCanvasEvent('keydown', this._keyboardShortcutKeyDownHandler as any) + } + + protected selectClosestStateAndMakeSelectionRange = (direction: 'next' | 'prev') => { + const next = direction === 'next' + const selectedRow = this.rowController.selectedRow + + if (this.unitController.selectionRange && selectedRow) { + const { start, end } = this.unitController.selectionRange + let point1 = next ? end : start + let closestState: TimelineChart.TimeGraphState | undefined + let closestDiff = Number.POSITIVE_INFINITY + let isValid = false + + selectedRow?.states.forEach((marker, key) => { + const { start, end } = marker.range + + if ( + start === this.unitController.selectionRange?.start && + end === this.unitController.selectionRange?.end + ) { + return + } + + let point2 = next ? start : end + let innerIsValid = next ? point1 <= point2 : point1 >= point2 + let diff = Math.abs(Number(point1 - point2)) + + if (diff < closestDiff && innerIsValid) { + closestDiff = diff + closestState = marker + isValid = innerIsValid + } + }) + + if (isValid && closestState) { + this.unitController.selectionRange = closestState.range + this.maybeCenterCursor() + this.update() + } + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-navigator.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-navigator.ts new file mode 100644 index 0000000..9e7b230 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-navigator.ts @@ -0,0 +1,264 @@ +import { TimeGraphUnitController } from '../time-graph-unit-controller' +import { + TimeGraphComponent, + TimeGraphStyledRect, + TimeGraphInteractionHandler +} from '../components/time-graph-component' +import { TimeGraphStateController } from '../time-graph-state-controller' +import { TimeGraphRectangle } from '../components/time-graph-rectangle' +import { TimeGraphLayer } from './time-graph-layer' +import { TimelineChart } from '../time-graph-model' +import { BIMath } from '../bigint-utils' +import { getColorFromCssVar } from '../color' + +export class TimeGraphNavigator extends TimeGraphLayer { + protected navigatorHandle!: TimeGraphNavigatorHandle + protected navigatorBackground!: TimeGraphNavigatorBackground + protected selectionRange?: TimeGraphRectangle + private _updateHandler!: { + (): void + (viewRange: TimelineChart.TimeGraphRange): void + (selectionRange: TimelineChart.TimeGraphRange): void + (viewRange: TimelineChart.TimeGraphRange): void + (selectionRange: TimelineChart.TimeGraphRange): void + } + private _contextMenuHandler!: { (e: MouseEvent): void; (event: Event): void } + + afterAddToContainer() { + this._updateHandler = (): void => this.update() + this.unitController.onAbsoluteRangeChanged(this._updateHandler) + this.unitController.onViewRangeChanged(this._updateHandler) + this.navigatorBackground = new TimeGraphNavigatorBackground( + this.unitController, + this.stateController + ) + this.addChild(this.navigatorBackground) + this.navigatorHandle = new TimeGraphNavigatorHandle(this.unitController, this.stateController) + this.addChild(this.navigatorHandle) + this.unitController.onSelectionRangeChange(this._updateHandler) + this._contextMenuHandler = (e: MouseEvent | Event): void => { + e.preventDefault() + } + this.onCanvasEvent('contextmenu', this._contextMenuHandler) + this.update() + } + + update() { + this.navigatorHandle.clear() + this.navigatorHandle.render() + + if (this.unitController.selectionRange) { + const selectionOpts: TimeGraphStyledRect = { + color: getColorFromCssVar('--el-color-primary', '#303133'), + height: this.stateController.canvasDisplayHeight, + opacity: 0.5, + position: { + x: + Number(this.unitController.selectionRange.start) * + this.stateController.absoluteResolution, + y: 0 + }, + width: + Number( + this.unitController.selectionRange.end - this.unitController.selectionRange.start + ) * this.stateController.absoluteResolution + } + if (!this.selectionRange) { + this.selectionRange = new TimeGraphRectangle(selectionOpts) + this.addChild(this.selectionRange) + } else { + this.selectionRange.update(selectionOpts) + } + } else { + if (this.selectionRange) { + this.selectionRange.clear() + } + } + } + + destroy(): void { + if (this.unitController) { + this.unitController.removeAbsoluteRangeChangedHandler(this._updateHandler) + this.unitController.removeViewRangeChangedHandler(this._updateHandler) + this.unitController.removeSelectionRangeChangedHandler(this._updateHandler) + } + if (this._contextMenuHandler) { + this.removeOnCanvasEvent('contextmenu', this._contextMenuHandler) + } + super.destroy() + } +} + +export class TimeGraphNavigatorHandle extends TimeGraphComponent { + protected mouseIsDown!: boolean + protected mouseStartX!: number + protected oldViewStart!: bigint + private _moveEndHandler: () => void + + constructor( + protected unitController: TimeGraphUnitController, + protected stateController: TimeGraphStateController + ) { + super('navigator_handle') + const moveStart: TimeGraphInteractionHandler = (event) => { + this.mouseStartX = event.data.global.x + this.oldViewStart = this.unitController.viewRange.start + this.mouseIsDown = true + this.stateController.snapped = false + document.addEventListener('snap-x-end', this._moveEndHandler) + } + this._moveEndHandler = () => { + this.mouseIsDown = false + document.removeEventListener('snap-x-end', this._moveEndHandler) + } + this.addEvent( + 'mouseover', + (event) => { + if (this.stateController.snapped) { + moveStart(event) + } + }, + this._displayObject + ) + this.addEvent('mousedown', moveStart, this._displayObject) + this.addEvent( + 'mousemove', + (event) => { + if (this.mouseIsDown) { + const delta = event.data.global.x - this.mouseStartX + const start = BIMath.clamp( + Number(this.oldViewStart) + delta / this.stateController.absoluteResolution, + BigInt(0), + this.unitController.absoluteRange - this.unitController.viewRangeLength + ) + const end = start + this.unitController.viewRangeLength + this.unitController.viewRange = { + start, + end + } + } + }, + this._displayObject + ) + this.addEvent('mouseup', this._moveEndHandler, this._displayObject) + this.addEvent('mouseupoutside', this._moveEndHandler, this._displayObject) + } + + render(): void { + const MIN_NAVIGATOR_WIDTH = 20 + const xPos = + Number(this.unitController.viewRange.start) * this.stateController.absoluteResolution + const effectiveAbsoluteRange = + Number(this.unitController.absoluteRange) * this.stateController.absoluteResolution + // Avoid the navigator rendered outside of the range at high zoom levels when its width is capped to MIN_NAVIGATOR_WIDTH + const position = { x: Math.min(effectiveAbsoluteRange - MIN_NAVIGATOR_WIDTH, xPos), y: 0 } + const width = Math.max( + MIN_NAVIGATOR_WIDTH, + Number(this.unitController.viewRangeLength) * this.stateController.absoluteResolution + ) + this.rect({ + height: 20, + position, + width, + color: getColorFromCssVar('--el-color-info-light-5', '#303133') + }) + } +} + +export class TimeGraphNavigatorBackground extends TimeGraphComponent { + protected snapEvent: CustomEvent + protected snapEventString: string + + constructor( + protected unitController: TimeGraphUnitController, + protected stateController: TimeGraphStateController + ) { + super('navigator_background') + this.addEvent( + 'mousedown', + (event) => { + // Get x position of click (in pixels). + let x = event.data.getLocalPosition(this._displayObject).x + // Convert x to units of BigInt Time. + let center = BIMath.round( + (x / this.stateController.canvasDisplayWidth) * Number(this.unitController.absoluteRange) + ) + // We have the center of the new scrollbar position, but need the start of new position. + // Start = middle - (scrollbarWidth / 2) + let halfViewWidth = this.unitController.viewRangeLength / BigInt(2) + let start = center - halfViewWidth + // Get the maximum and minimum values that start can be. + // Min = 0 (Handle is farthest left) + // Max = [The Last Number] - [Length of handle] (Handle is farthest right) + let max = this.unitController.absoluteRange - this.unitController.viewRangeLength + let min = BigInt(0) + // Clamp + start = BIMath.clamp(start, min, max) + this.unitController.viewRange = { + start, + end: start + this.unitController.viewRangeLength + } + // Set snapped state + this.toggleSnappedState(true) + }, + this._displayObject + ) + // Custom event lets handler know 'mouseup' triggers. + this.snapEvent = new CustomEvent((this.snapEventString = 'snap-x-end')) + const endSnap = () => { + this.toggleSnappedState(false) + document.dispatchEvent(this.snapEvent) + } + this.addEvent('mouseup', endSnap, this._displayObject) + this.addEvent('mouseupoutside', endSnap, this._displayObject) + this.addEvent( + 'rightdown', + (event) => { + // Get x position of click (in pixels). + let x = event.data.getLocalPosition(this._displayObject).x + // Convert x to units of BigInt time. + let clickPoint = BIMath.round( + (x / this.stateController.canvasDisplayWidth) * Number(this.unitController.absoluteRange) + ) + // Are we clicking to the left or the right of the current scrollbar position? + const { start, end } = this.unitController.viewRange + let newStart = BigInt(0) + if (clickPoint < start) { + // If left, move left one page. + newStart = start - this.unitController.viewRangeLength + } else if (clickPoint > end) { + // If right, move right one page. + newStart = start + this.unitController.viewRangeLength + } + // Clamp our new value + let startMin = BigInt(0) + let startMax = this.unitController.absoluteRange - this.unitController.viewRangeLength + newStart = BIMath.clamp(newStart, startMin, startMax) + // Set new value + this.unitController.viewRange = { + start: newStart, + end: newStart + this.unitController.viewRangeLength + } + }, + this._displayObject + ) + + this.update() + } + + protected toggleSnappedState = (bool: boolean) => { + this.stateController.snapped = bool + } + + render(): void { + this.rect({ + height: 20, + position: { + x: 0, + y: 0 + }, + width: this.stateController.canvasDisplayWidth, + opacity: 0 + }) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-range-events-layer.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-range-events-layer.ts new file mode 100644 index 0000000..c5d15fd --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-range-events-layer.ts @@ -0,0 +1,91 @@ +import { TimeGraphRectangle } from '../components/time-graph-rectangle' +import { TimelineChart } from '../time-graph-model' +import { TimeGraphChartProviders } from './time-graph-chart' +import { TimeGraphViewportLayer } from './time-graph-viewport-layer' + +export class TimeGraphRangeEventsLayer extends TimeGraphViewportLayer { + protected rangeEvents!: Map + protected providers: TimeGraphChartProviders + + private _worldRangeUpdateHandler!: { + (): void + (worldRange: TimelineChart.TimeGraphRange): void + (worldRange: TimelineChart.TimeGraphRange): void + } + + constructor(id: string, providers: TimeGraphChartProviders) { + super(id) + this.providers = providers + } + + protected afterAddToContainer() { + this._worldRangeUpdateHandler = (): void => this.update() + this.stateController.onWorldRender(this._worldRangeUpdateHandler) + } + + protected addRangeEvent(rangeEvent: TimelineChart.TimeGraphAnnotation) { + const start = this.getWorldPixel(rangeEvent.range.start) + const end = this.getWorldPixel(rangeEvent.range.end) + const width = end - start + const elementStyle = this.providers.rowAnnotationStyleProvider + ? this.providers.rowAnnotationStyleProvider(rangeEvent) + : undefined + const rangeEventComponent = new TimeGraphRectangle({ + color: elementStyle ? elementStyle.color : 0x000000, + opacity: elementStyle ? elementStyle.opacity : 1.0, + position: { + x: start, + y: 0 + }, + height: this.stateController.canvasDisplayHeight, + width + }) + this.rangeEvents.set(rangeEvent, rangeEventComponent) + this.addChild(rangeEventComponent) + } + + addRangeEvents(rangeEvents: TimelineChart.TimeGraphAnnotation[]): void { + if (!this.stateController) { + throw 'Add the TimeGraphRangeEventsLayer to a container before adding range events.' + } + if (this.rangeEvents) { + this.removeChildren() + } + this.rangeEvents = new Map() + rangeEvents.forEach((range) => { + this.addRangeEvent(range) + }) + } + + update(): void { + if (this.rangeEvents) { + for (const range of this.rangeEvents.keys()) { + this.updateRangeEvent(range) + } + } + } + + protected updateRangeEvent(rangeEvent: TimelineChart.TimeGraphAnnotation) { + const rangeEventComponent = this.rangeEvents.get(rangeEvent) + const start = this.getWorldPixel(rangeEvent.range.start) + const end = this.getWorldPixel(rangeEvent.range.end) + const width = end - start + if (rangeEventComponent) { + rangeEventComponent.update({ + position: { + x: start, + y: 0 + }, + height: this.stateController.canvasDisplayHeight, + width + }) + } + } + + destroy(): void { + if (this.unitController) { + this.stateController.removeWorldRenderHandler(this._worldRangeUpdateHandler) + } + super.destroy() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-vertical-scrollbar.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-vertical-scrollbar.ts new file mode 100644 index 0000000..8e5339a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-vertical-scrollbar.ts @@ -0,0 +1,262 @@ +import { + TimeGraphComponent, + TimeGraphInteractionHandler, + TimeGraphElementPosition +} from '../components/time-graph-component' +import { TimeGraphStateController } from '../time-graph-state-controller' +import { TimeGraphRectangle } from '../components/time-graph-rectangle' +import { TimeGraphChartLayer } from './time-graph-chart-layer' +import { TimeGraphRowController } from '../time-graph-row-controller' +import { getColorFromCssVar } from '../color' + +export class TimeGraphVerticalScrollbar extends TimeGraphChartLayer { + protected navigatorHandle!: TimeGraphVerticalScrollbarHandle + protected navigatorBackground!: TimeGraphVerticalScrollbarBackground + protected selectionRange?: TimeGraphRectangle + private _contextMenuHandler!: { (e: MouseEvent): void; (event: Event): void } + private _verticalOffsetChangedHandler!: () => void + private _totalHeightChangedHandler!: () => void + + protected factor!: number + + constructor( + id: string, + protected rowController: TimeGraphRowController + ) { + super(id, rowController) + } + + protected afterAddToContainer() { + this.updateFactor() + this.navigatorHandle = new TimeGraphVerticalScrollbarHandle( + this.rowController, + this.stateController, + this.factor + ) + this.navigatorBackground = new TimeGraphVerticalScrollbarBackground( + this.rowController, + this.stateController, + this.factor + ) + this.addChild(this.navigatorBackground) + this.addChild(this.navigatorHandle) + this._contextMenuHandler = (e: MouseEvent | Event): void => { + e.preventDefault() + } + this.onCanvasEvent('contextmenu', this._contextMenuHandler) + this._verticalOffsetChangedHandler = () => { + this.update() + } + this._totalHeightChangedHandler = () => { + this.updateFactor() + this.navigatorHandle.updateFactor(this.factor) + this.navigatorBackground.updateFactor(this.factor) + this.update() + } + this.rowController.onVerticalOffsetChangedHandler(this._verticalOffsetChangedHandler) + this.rowController.onTotalHeightChangedHandler(this._totalHeightChangedHandler) + } + + protected updateFactor() { + if (this.rowController.totalHeight) { + this.factor = this.stateController.canvasDisplayHeight / this.rowController.totalHeight + } else { + this.factor = 0 + } + } + + update(updateFactor: boolean = false) { + //fix height change issue + if (updateFactor) { + this.updateFactor() + this.navigatorHandle.updateFactor(this.factor) + this.navigatorBackground.updateFactor(this.factor) + if ( + this.rowController.totalHeight - this.rowController.verticalOffset <= + this.stateController.canvasDisplayHeight + ) { + this.rowController.verticalOffset = Math.max( + 0, + this.rowController.totalHeight - this.stateController.canvasDisplayHeight + ) + } + } + this.navigatorHandle.clear() + this.navigatorHandle.render() + this.navigatorBackground.clear() + this.navigatorBackground.render() + } + + destroy() { + if (this.rowController) { + this.rowController.removeTotalHeightChangedHandler(this._totalHeightChangedHandler) + this.rowController.removeVerticalOffsetChangedHandler(this._verticalOffsetChangedHandler) + } + if (this._contextMenuHandler) { + this.removeOnCanvasEvent('contextmenu', this._contextMenuHandler) + } + super.destroy() + } +} + +export class TimeGraphVerticalScrollbarHandle extends TimeGraphComponent { + protected mouseIsDown!: boolean + protected mouseStartY!: number + protected oldVerticalOffset!: number + + protected height!: number + protected position!: TimeGraphElementPosition + private _moveEndHandler + + constructor( + protected rowController: TimeGraphRowController, + protected stateController: TimeGraphStateController, + protected factor: number + ) { + super('vscroll_handle') + const moveStart: TimeGraphInteractionHandler = (event) => { + this.mouseStartY = event.data.global.y + this.oldVerticalOffset = this.rowController.verticalOffset + this.mouseIsDown = true + this.stateController.snapped = false + document.addEventListener('snap-y-end', this._moveEndHandler) + } + this._moveEndHandler = () => { + this.mouseIsDown = false + document.removeEventListener('snap-y-end', this._moveEndHandler) + } + this.addEvent( + 'mouseover', + (event) => { + if (this.stateController.snapped) { + moveStart(event) + } + }, + this._displayObject + ) + this.addEvent('mousedown', moveStart, this._displayObject) + this.addEvent( + 'mousemove', + (event) => { + if (this.mouseIsDown) { + const delta = (event.data.global.y - this.mouseStartY) / this.factor + const verticalOffset = this.oldVerticalOffset + delta + this.rowController.verticalOffset = Math.max( + 0, + Math.min( + this.rowController.totalHeight - this.stateController.canvasDisplayHeight, + verticalOffset + ) + ) + } + }, + this._displayObject + ) + this.addEvent('mouseup', this._moveEndHandler, this._displayObject) + this.addEvent('mouseupoutside', this._moveEndHandler, this._displayObject) + } + + updateFactor(factor: number) { + this.factor = factor + } + + render(): void { + this.position = { x: 0, y: this.rowController.verticalOffset * this.factor } + this.height = this.stateController.canvasDisplayHeight * this.factor + this.rect({ + height: this.height, + position: this.position, + width: 10, + color: getColorFromCssVar('--el-color-info-light-5', '#303133') + }) + } +} + +export class TimeGraphVerticalScrollbarBackground extends TimeGraphComponent { + protected snapEvent: CustomEvent + protected snapEventString: string + + constructor( + protected rowController: TimeGraphRowController, + protected stateController: TimeGraphStateController, + protected factor: number + ) { + super('vscroll_background') + this.addEvent( + 'mousedown', + (event) => { + // Get y position of click (in pixels). + let y = event.data.getLocalPosition(this._displayObject).y + // Convert to units used by rowController. + let center = (y / this.stateController.canvasDisplayHeight) * this.rowController.totalHeight + // We have the center of the new scrollbar position, but need the starting pixel. + // start = middle - (scrollbarHeight / 2) + let scrollBarHeight = this.rowController.totalHeight * this.factor + let newOffset = center - scrollBarHeight / 2 + // Clamp our new verticalOffset value + let vOffsetMin = 0 + let vOffsetMax = this.rowController.totalHeight - this.stateController.canvasDisplayHeight + newOffset = Math.max(vOffsetMin, Math.min(vOffsetMax, newOffset)) + this.rowController.verticalOffset = newOffset + // Set snapped state + this.toggleSnappedState(true) + }, + this._displayObject + ) + // Emit custom event to let vertical handler know when 'mousedown' is released. + this.snapEvent = new CustomEvent((this.snapEventString = 'snap-y-end')) + const endSnap = () => { + this.toggleSnappedState(false) + document.dispatchEvent(this.snapEvent) + } + this.addEvent('mouseup', endSnap, this._displayObject) + this.addEvent('mouseupoutside', endSnap, this._displayObject) + this.addEvent( + 'rightdown', + (event) => { + // Get y position of click (in raw pixels). + let y = event.data.getLocalPosition(this._displayObject).y + // Convert y to correct units used by rowController. + let clickPoint = + (y / this.stateController.canvasDisplayHeight) * this.rowController.totalHeight + // Are we clicking above or below the current scrollbar position? + const { verticalOffset, totalHeight } = this.rowController + const scrollBarHeight = totalHeight * this.factor + let newOffset = verticalOffset + const start = verticalOffset + const end = verticalOffset + scrollBarHeight + if (clickPoint < start) { + // If above, move up one page. + newOffset = newOffset - scrollBarHeight + } else if (clickPoint > end) { + // If below, move down one page. + newOffset = newOffset + scrollBarHeight + } + // Clamp our new values + const vOffsetMin = 0 + const vOffsetMax = totalHeight - scrollBarHeight + newOffset = Math.max(vOffsetMin, Math.min(vOffsetMax, newOffset)) + // Assign new value + this.rowController.verticalOffset = newOffset + }, + this._displayObject + ) + } + + updateFactor(factor: number) { + this.factor = factor + } + + protected toggleSnappedState = (bool: boolean) => { + this.stateController.snapped = bool + } + + render(): void { + this.rect({ + height: this.stateController.canvasDisplayHeight, + position: { x: 0, y: 0 }, + width: 10, + opacity: 0 + }) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-viewport-layer.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-viewport-layer.ts new file mode 100644 index 0000000..90014bd --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/layer/time-graph-viewport-layer.ts @@ -0,0 +1,64 @@ +import { TimeGraphLayer } from './time-graph-layer' +import { BIMath } from '../bigint-utils' +import { TimeGraphStateController } from '../time-graph-state-controller' +import { TimeGraphUnitController } from '../time-graph-unit-controller' + +export abstract class TimeGraphViewportLayer extends TimeGraphLayer { + // By default, scale this layer + protected isScalable: boolean = true + + constructor(id: string) { + super(id) + } + + /** + * Conveniently finds the pixel relative to the worldRangeStart. Also clamps + * so components don't render past the world range. + * + * @param {bigint} time the time to get the world pixel for + * @param {boolean} clamp if you want to clamp. Default = false. + * @return pixel relative to world range + */ + protected getWorldPixel = (time: bigint, clamp?: boolean): number => { + if (!this.stateController) { + throw 'No state controller to calculate world pixel.' + } + const { start, end } = this.stateController.worldRange + + time = clamp ? BIMath.clamp(time, start, end) : time + let diff = time - start + + const div = 0x100000000 + const hi = Number(diff / BigInt(div)) + const lo = Number(diff % BigInt(div)) + const zoomFactor = this.isScalable + ? this.stateController.worldZoomFactor + : this.stateController.zoomFactor + return Math.floor(hi * zoomFactor * div + lo * zoomFactor) + } + + initializeLayer( + canvas: HTMLCanvasElement, + stage: PIXI.Container, + stateController: TimeGraphStateController, + unitController: TimeGraphUnitController + ) { + super.initializeLayer(canvas, stage, stateController, unitController) + this.stateController.onPositionChanged(this.shiftStage) + this.stateController.onScaleFactorChange(this.scaleStage) + } + + protected shiftStage = () => { + if (this.layer.position === undefined || this.layer.position === null) { + return + } + this.layer.position.x = this.stateController.positionOffset.x + } + + protected scaleStage = () => { + if (!this.isScalable || this.layer.scale === undefined || this.layer.scale === null) { + return + } + this.layer.scale.x = this.stateController.scaleFactor + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-container.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-container.ts new file mode 100644 index 0000000..6024a43 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-container.ts @@ -0,0 +1,147 @@ +import * as PIXI from 'pixi.js-legacy' +import { TimeGraphUnitController } from './time-graph-unit-controller' +import { TimeGraphStateController } from './time-graph-state-controller' +import { TimeGraphLayer, TimeGraphLayerOptions } from './layer/time-graph-layer' +import { TimeGraphRectangle } from './components/time-graph-rectangle' + +export interface TimeGraphContainerOptions { + id: string + width: number + height: number + backgroundColor?: number + lineColor?: number + transparent?: boolean + classNames?: string + forceCanvasRenderer?: boolean +} + +export class TimeGraphContainer { + protected stage: PIXI.Container + protected renderer: PIXI.AbstractRenderer + protected application: PIXI.Application + + protected _canvas: HTMLCanvasElement + + protected stateController: TimeGraphStateController + + protected layers: TimeGraphLayer[] + + protected background: TimeGraphRectangle + + constructor( + protected config: TimeGraphContainerOptions, + protected unitController: TimeGraphUnitController, + protected extCanvas?: HTMLCanvasElement + ) { + let canvas: HTMLCanvasElement + if (!extCanvas) { + canvas = document.createElement('canvas') + } else { + canvas = extCanvas + } + + const supported = PIXI.utils.isWebGLSupported() + const noWebgl2 = !supported || config.forceCanvasRenderer || !canvas.getContext('webgl2') + canvas.style.width = config.width + 'px' + canvas.style.height = config.height + 'px' + canvas.width = config.width + canvas.height = config.height + canvas.id = config.id + canvas.className = `time-graph-canvas ${this.config.classNames || ''}` + const ratio = window.devicePixelRatio + this.application = new PIXI.Application({ + width: canvas.width, + height: canvas.height, + view: canvas, + backgroundColor: config.backgroundColor, + // transparent: config.transparent, + sharedTicker: true, + antialias: true, + resolution: ratio, + autoDensity: true, + forceCanvas: noWebgl2 + }) + + this.stage = this.application.stage + this.renderer = this.application.renderer + this._canvas = this.application.view + + this.stateController = new TimeGraphStateController(canvas, unitController) + this.unitController.onViewRangeChanged(this.calculatePositionOffset) + this.stateController.onWorldRender(this.calculatePositionOffset) + + this.layers = [] + + this.background = new TimeGraphRectangle({ + opacity: 1, + position: { + x: 0, + y: 0 + }, + height: this.canvas.height, + width: this.canvas.width, + color: config.backgroundColor + }) + this.background.render() + this.stage.addChild(this.background.displayObject) + } + + get canvas(): HTMLCanvasElement { + return this._canvas + } + + // if canvas size has changed displayWidth need to be updated for zoomfactor + updateCanvas(newWidth: number, newHeight: number, newColor?: number, lineColor?: number) { + this.config.width = newWidth + this.config.height = newHeight + if (newColor) { + this.config.backgroundColor = newColor + } + + const opts: TimeGraphLayerOptions = { lineColor } + + this.application.renderer.resize(newWidth, newHeight) + this.stateController.updateDisplayWidth() + this.stateController.updateDisplayHeight() + + this.background.update({ + position: { + x: 0, + y: 0 + }, + height: newHeight, + width: newWidth, + color: newColor + }) + + this.layers.forEach((l) => l.update(opts)) + } + addLayers(layers: TimeGraphLayer[]) { + layers.forEach((layer) => this.addLayer(layer)) + } + + protected addLayer(layer: TimeGraphLayer) { + this.layers.push(layer) + layer.initializeLayer(this._canvas, this.stage, this.stateController, this.unitController) + } + + destroy() { + this.layers.forEach((l) => l.destroy()) + this.unitController.removeViewRangeChangedHandler(this.calculatePositionOffset) + this.stateController.removeHandlers() + this.application.destroy(true) + } + + protected calculatePositionOffset = () => { + // Currently only using horizontal offset, or "x" + const { unitController, stateController } = this + const viewRange = unitController.viewRange + const worldRange = stateController.worldRange + let timeOffset = Number(viewRange.start - worldRange.start) + let x = -1 * (timeOffset * stateController.zoomFactor) + this.stateController.positionOffset = { + x, + y: 0 + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-font-controller.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-font-controller.ts new file mode 100644 index 0000000..0c446aa --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-font-controller.ts @@ -0,0 +1,121 @@ +import * as PIXI from 'pixi.js-legacy' + +const DEFAULT_FONT_SIZE = 8 +const DEFAULT_FONT_NAME = 'LabelFont8White' +const DEFAULT_FONT_STYLE = { + fontFamily: 'monospace', + fontSize: 8, + fill: 'white', + fontWeight: 'bold' +} + +export class FontController { + private fontFamily: string + private fontStyleMap: Map> + private fontNameMap: Map> + private fontColorMap: Map + + constructor(fontFamily: string = 'monospace') { + this.fontFamily = fontFamily + this.fontStyleMap = new Map>() + this.fontNameMap = new Map>() + this.fontColorMap = new Map() + + this.updateFontNameMapAndFontStyleMap(DEFAULT_FONT_SIZE) + } + + getDefaultFont(): { fontName: string; fontStyle: PIXI.TextStyle } { + return { + fontName: DEFAULT_FONT_NAME, + fontStyle: new PIXI.TextStyle(DEFAULT_FONT_STYLE) + } + } + + createFont(fontColor: string, fontSize: number): { fontName: string; fontStyle: PIXI.TextStyle } { + const fontName = 'LabelFont' + fontSize.toString() + fontColor + const fontStyle = { + fontFamily: this.fontFamily, + fontSize: fontSize, + fill: fontColor === 'White' ? 'white' : 'black', + fontWeight: 'bold' + } + PIXI.BitmapFont.from(fontName, fontStyle, { chars: this.getCharacterSet() }) + + return { + fontName: fontName, + fontStyle: new PIXI.TextStyle(fontStyle) + } + } + + updateFontNameMapAndFontStyleMap(size: number) { + let color2FontMap = new Map() + let style2FontMap = new Map() + + const blackFont = this.createFont('Black', size) + color2FontMap.set('black', blackFont.fontName) + style2FontMap.set('black', blackFont.fontStyle) + + const whiteFont = this.createFont('White', size) + color2FontMap.set('white', whiteFont.fontName) + style2FontMap.set('white', blackFont.fontStyle) + + this.fontNameMap.set(size, color2FontMap) + this.fontStyleMap.set(size, style2FontMap) + } + + getFont( + color: number, + size: number + ): { fontName: string; fontStyle: PIXI.TextStyle | undefined } { + let fontColor = this.fontColorMap.get(color) + if (!fontColor) { + let colorInHex = color.toString(16) + const numZeros = 6 - colorInHex.length + for (let i = 0; i < numZeros; ++i) { + colorInHex = '0' + colorInHex + } + const result = /([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(colorInHex) + const r = parseInt(result ? result[1] : 'ff', 16) / 255 + const g = parseInt(result ? result[2] : 'ff', 16) / 255 + const b = parseInt(result ? result[3] : 'ff', 16) / 255 + + if ( + 0.2126 * Math.pow(r, 2.2) + 0.7152 * Math.pow(g, 2.2) + 0.0722 * Math.pow(b, 2.2) <= + Math.pow(0.5, 2.2) + ) { + fontColor = 'white' + } else { + fontColor = 'black' + } + this.fontColorMap.set(color, fontColor) + } + + let fontName: string | undefined + let fontStyle: PIXI.TextStyle | undefined + if (size) { + const MIN_FONT_SIZE = 6 + size = Math.max(size, MIN_FONT_SIZE) + if (!this.fontNameMap.has(size)) { + this.updateFontNameMapAndFontStyleMap(size) + } + const size2FontMap = this.fontNameMap.get(size) + fontName = size2FontMap ? size2FontMap.get(fontColor) : undefined + + const size2StyleMap = this.fontStyleMap.get(size) + fontStyle = size2StyleMap ? size2StyleMap.get(fontColor) : undefined + } + return { + fontName: fontName ? fontName : '', + fontStyle: fontStyle + } + } + + private getCharacterSet(): string[][] { + let letters: string[][] = [] + letters.push(PIXI.BitmapFont.ASCII[0]) + letters.push(['★', '★']) + letters.push(['…', '…']) + + return letters + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-model.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-model.ts new file mode 100644 index 0000000..f85796f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-model.ts @@ -0,0 +1,60 @@ +/* eslint-disable @typescript-eslint/no-namespace */ +export namespace TimelineChart { + export interface TimeGraphRange { + start: bigint + end: bigint + } + + export interface TimeGraphModel { + id: string + totalLength: bigint + rows: TimeGraphRowModel[] + rangeEvents: TimeGraphAnnotation[] + arrows: TimeGraphArrow[] + readonly data?: { [key: string]: any } + } + + export interface TimeGraphRowModel { + id: number + name: string + range: TimeGraphRange + states: TimeGraphState[] + annotations: TimeGraphAnnotation[] + selected?: boolean + readonly data?: { [key: string]: any } + prevPossibleState: bigint + nextPossibleState: bigint + /** + * When the gap style is set, gap states will be drawn using this style + * in between the model's states when the gap between these states is visible. + * These gap states represent the unknown state between known states. + * Known blank states (with no style) must then be included in the model. + */ + gapStyle?: any + } + + export interface TimeGraphState { + readonly id: string + readonly range: TimeGraphRange + readonly label?: string + selected?: boolean + readonly data?: { [key: string]: any } + } + + export interface TimeGraphArrow { + sourceId: number + destinationId: number + range: TimeGraphRange + data?: { [key: string]: any } + // Q: Can I select an arrow? + } + + export interface TimeGraphAnnotation { + readonly id: string + readonly category: string + readonly range: TimeGraphRange + readonly label: string + selected?: boolean + readonly data?: { [key: string]: any } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-render-controller.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-render-controller.ts new file mode 100644 index 0000000..8128e71 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-render-controller.ts @@ -0,0 +1,67 @@ +import { throttle, debounce } from 'lodash' +import * as PIXI from 'pixi.js-legacy' + +const START_RENDER_STRING = 'startPixiRender' +const STOP_RENDER_STRING = 'stopPixiRender' + +const throttledStart = throttle( + () => { + window.dispatchEvent(new Event(START_RENDER_STRING)) + }, + 450, + { leading: true } +) + +const debouncedStop = debounce(() => { + window.dispatchEvent(new Event(STOP_RENDER_STRING)) +}, 1000) + +interface RenderEvents { + startRender: () => void + stopRender: () => void +} + +export const RenderEvents: RenderEvents = { + /** + * Fires an event that will start the PIXI.Ticker. + * This will start rendering. + * Event handler located in time-graph-render-controller.ts + */ + startRender: () => { + throttledStart() + }, + /** + * Fires an event that will stop the PIXI.Ticker. + * This will stop rendering. + * Event handler located in time-graph-render-controller.ts + */ + stopRender: () => { + debouncedStop() + } +} +export class TimeGraphRenderController { + constructor() { + this.initializeRenderEvents() + } + + private initializeRenderEvents = () => { + const { startRender, stopRender } = this + + window.addEventListener(START_RENDER_STRING, startRender) + window.addEventListener(STOP_RENDER_STRING, stopRender) + + window.addEventListener('beforeunload', () => { + window.removeEventListener(START_RENDER_STRING, startRender) + window.removeEventListener(STOP_RENDER_STRING, stopRender) + }) + } + + public startRender = () => { + PIXI.Ticker.shared.start() + debouncedStop() + } + + public stopRender = () => { + PIXI.Ticker.shared.stop() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-row-controller.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-row-controller.ts new file mode 100644 index 0000000..fd6e391 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-row-controller.ts @@ -0,0 +1,108 @@ +import { TimelineChart } from './time-graph-model' +import { RenderEvents } from './time-graph-render-controller' + +export class TimeGraphRowController { + private _selectedRow: TimelineChart.TimeGraphRowModel | undefined = undefined + private _selectedRowIndex: number = -1 + private _verticalOffset: number + protected selectedRowChangedHandlers: ((row: TimelineChart.TimeGraphRowModel) => void)[] = [] + protected verticalOffsetChangedHandlers: ((verticalOffset: number) => void)[] = [] + protected totalHeightChangedHandlers: ((totalHeight: number) => void)[] = [] + + constructor( + public rowHeight: number, + private _totalHeight: number + ) { + this._verticalOffset = 0 + } + + protected handleVerticalOffsetChanged() { + this.verticalOffsetChangedHandlers.forEach((h) => h(this._verticalOffset)) + this.startRender() + } + + protected handleSelectedRowChanged() { + const selectedRow = this._selectedRow + if (selectedRow) { + this.selectedRowChangedHandlers.forEach((h) => h(selectedRow)) + } + } + + protected handleTotalHeightChanged() { + this.totalHeightChangedHandlers.forEach((h) => h(this._totalHeight)) + this.startRender() + } + + protected startRender() { + RenderEvents.startRender() + } + + onSelectedRowChangedHandler(handler: (row: TimelineChart.TimeGraphRowModel) => void) { + this.selectedRowChangedHandlers.push(handler) + } + + removeSelectedRowChangedHandler(handler: (row: TimelineChart.TimeGraphRowModel) => void) { + const index = this.selectedRowChangedHandlers.indexOf(handler) + if (index > -1) { + this.selectedRowChangedHandlers.splice(index, 1) + } + } + + onVerticalOffsetChangedHandler(handler: (verticalOffset: number) => void) { + this.verticalOffsetChangedHandlers.push(handler) + } + + removeVerticalOffsetChangedHandler(handler: (verticalOffset: number) => void) { + const index = this.verticalOffsetChangedHandlers.indexOf(handler) + if (index > -1) { + this.verticalOffsetChangedHandlers.splice(index, 1) + } + } + + onTotalHeightChangedHandler(handler: (totalHeight: number) => void) { + this.totalHeightChangedHandlers.push(handler) + } + + removeTotalHeightChangedHandler(handler: (totalHeight: number) => void) { + const index = this.totalHeightChangedHandlers.indexOf(handler) + if (index > -1) { + this.totalHeightChangedHandlers.splice(index, 1) + } + } + + get totalHeight(): number { + return this._totalHeight + } + + set totalHeight(height: number) { + this._totalHeight = height + this.handleTotalHeightChanged() + } + + get verticalOffset(): number { + return this._verticalOffset + } + + set verticalOffset(value: number) { + this._verticalOffset = value + this.handleVerticalOffsetChanged() + } + + get selectedRow(): TimelineChart.TimeGraphRowModel | undefined { + return this._selectedRow + } + + set selectedRow(value: TimelineChart.TimeGraphRowModel | undefined) { + this._selectedRow = value + this.handleSelectedRowChanged() + } + + get selectedRowIndex(): number { + return this._selectedRowIndex + } + + set selectedRowIndex(index: number) { + this._selectedRowIndex = index + this.handleSelectedRowChanged() + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-state-controller.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-state-controller.ts new file mode 100644 index 0000000..e795d23 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-state-controller.ts @@ -0,0 +1,237 @@ +import { TimelineChart } from './time-graph-model' +import { TimeGraphUnitController } from './time-graph-unit-controller' +import { BIMath } from './bigint-utils' + +export class TimeGraphStateController { + oldPositionOffset: { + x: number + y: number + } + + snapped: boolean + + protected ratio: number + + private _unscaledCanvasWidth: number + protected _canvasDisplayWidth: number + protected _canvasDisplayHeight: number + + private _scaleFactor: number + + protected _zoomFactor!: number + protected _initialZoomFactor: number + protected _positionOffset: { + x: number + y: number + } + + protected _worldRange: TimelineChart.TimeGraphRange = { start: BigInt(0), end: BigInt(0) } + protected _worldZoomFactor = 1 + + private _worldRenderedHandlers: ((worldRange: TimelineChart.TimeGraphRange) => void)[] = [] + protected zoomChangedHandlers: ((zoomFactor: number) => void)[] = [] + protected canvasWidthChangedHandlers: ((baseWidth: number) => void)[] = [] + protected positionChangedHandlers: (() => void)[] = [] + protected scaleFactorChangedHandlers: ((newScaleFactor: number) => void)[] = [] + + constructor( + protected canvas: HTMLCanvasElement, + protected unitController: TimeGraphUnitController + ) { + this.ratio = window.devicePixelRatio + this._canvasDisplayWidth = this.canvas.width / this.ratio + this._canvasDisplayHeight = this.canvas.height / this.ratio + this._initialZoomFactor = this.zoomFactor + this._positionOffset = { x: 0, y: 0 } + this.oldPositionOffset = { x: 0, y: 0 } + this.snapped = false + + this._unscaledCanvasWidth = this._canvasDisplayWidth + this._scaleFactor = 1 + this.worldRange = this.computeWorldRangeFromViewRange() + this.unitController.onViewRangeChanged(this.updateZoomFactor) + this.unitController.onViewRangeChanged(this.updateScaleFactor) + } + + protected handleZoomChange(zoomFactor: number) { + this.zoomChangedHandlers.forEach((handler) => handler(zoomFactor)) + } + protected handlePositionChange() { + this.positionChangedHandlers.forEach((handler) => handler()) + } + protected handleScaleFactorChange() { + this.scaleFactorChangedHandlers.forEach((handler) => handler(this._scaleFactor)) + } + + onZoomChanged(handler: (zoomFactor: number) => void) { + this.zoomChangedHandlers.push(handler) + } + onPositionChanged(handler: () => void) { + this.positionChangedHandlers.push(handler) + } + onScaleFactorChange(handler: (newWidth: number) => void) { + this.scaleFactorChangedHandlers.push(handler) + } + + removeOnZoomChanged(handler: (zoomFactor: number) => void) { + const index = this.zoomChangedHandlers.indexOf(handler) + if (index > -1) { + this.zoomChangedHandlers.splice(index, 1) + } + } + + removeOnScaleFactorChanged(handler: (zoomFactor: number) => void) { + const index = this.scaleFactorChangedHandlers.indexOf(handler) + if (index > -1) { + this.scaleFactorChangedHandlers.splice(index, 1) + } + } + + /** + It is not the width of the canvas display buffer but of the canvas element in browser. Can be different depending on the display pixel ratio. + */ + get canvasDisplayWidth() { + return this._canvasDisplayWidth + } + + updateDisplayWidth() { + this._canvasDisplayWidth = this.canvas.width / this.ratio + + // Adjust the scale factor if the display canvas width changes + this.scaleFactor = this._canvasDisplayWidth / this._unscaledCanvasWidth + } + + /** + It is not the heigth of the canvas display buffer but of the canvas element in browser. Can be different depending on the display pixel ratio. + */ + get canvasDisplayHeight() { + return this._canvasDisplayHeight + } + + updateDisplayHeight() { + this._canvasDisplayHeight = this.canvas.height / this.ratio + } + + get initialZoomFactor(): number { + return this._initialZoomFactor + } + + updateZoomFactor = () => { + let newZoom = this.canvasDisplayWidth / Number(this.unitController.viewRangeLength) + if (this._zoomFactor !== newZoom) { + this.handleZoomChange((this._zoomFactor = newZoom)) + } + } + + // Adjust the scale factor if the view range changes + updateScaleFactor = ( + oldViewRange: TimelineChart.TimeGraphRange, + newViewRange: TimelineChart.TimeGraphRange + ) => { + const oldViewRangeLength = oldViewRange.end - oldViewRange.start + const newViewRangeLength = newViewRange.end - newViewRange.start + + const newScaleFactor = + (Number(oldViewRangeLength) / Number(newViewRangeLength)) * this._scaleFactor + this.scaleFactor = newScaleFactor + } + + resetScale() { + this._unscaledCanvasWidth = this._canvasDisplayWidth + this.scaleFactor = 1 + } + + get scaleFactor(): number { + return this._scaleFactor + } + + set scaleFactor(newScaleFactor: number) { + this._scaleFactor = newScaleFactor + this.handleScaleFactorChange() + } + + get zoomFactor(): number { + this.updateZoomFactor() + return this._zoomFactor + } + + get absoluteResolution(): number { + return this.canvasDisplayWidth / Number(this.unitController.absoluteRange) + } + + get positionOffset(): { + x: number + y: number + } { + return this._positionOffset + } + set positionOffset(value: { x: number; y: number }) { + this._positionOffset = value + this.handlePositionChange() + } + + computeWorldRangeFromViewRange() { + const deltaV = this.unitController.viewRange.end - this.unitController.viewRange.start + let start = + this.unitController.viewRange.start - + BIMath.multiply(deltaV, this.unitController.worldRenderFactor) + let end = + this.unitController.viewRange.end + + BIMath.multiply(deltaV, this.unitController.worldRenderFactor) + if (start < 0) { + start = BigInt(0) + } + if (end > this.unitController.absoluteRange) { + end = this.unitController.absoluteRange + } + return { start, end } + } + + get worldRange(): TimelineChart.TimeGraphRange { + return this._worldRange + } + + set worldRange(newRange: TimelineChart.TimeGraphRange) { + if (newRange.end > newRange.start) { + this._worldRange = { start: newRange.start, end: newRange.end } + } + if (newRange.start < 0) { + this._worldRange.start = BigInt(0) + } + if (this._worldRange.end > this.unitController.absoluteRange) { + this._worldRange.end = this.unitController.absoluteRange + } + } + + get worldZoomFactor(): number { + return this._worldZoomFactor + } + + set worldZoomFactor(worldZoomFactor: number) { + this._worldZoomFactor = worldZoomFactor + } + + get worldRangeLength(): bigint { + return this._worldRange.end - this._worldRange.start + } + + onWorldRender = (handler: (worldRange: TimelineChart.TimeGraphRange) => void) => { + this._worldRenderedHandlers.push(handler) + } + + handleOnWorldRender = () => { + this._worldRenderedHandlers.forEach((handler) => handler(this.worldRange)) + } + + removeWorldRenderHandler = (handler: (worldRange: TimelineChart.TimeGraphRange) => void) => { + const index = this._worldRenderedHandlers.indexOf(handler) + if (index > -1) { + this._worldRenderedHandlers.splice(index, 1) + } + } + + removeHandlers() { + this.unitController.removeViewRangeChangedHandler(this.updateZoomFactor) + this.unitController.removeViewRangeChangedHandler(this.updateScaleFactor) + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-unit-controller.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-unit-controller.ts new file mode 100644 index 0000000..038a915 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/ostrace/timeline/time-graph-unit-controller.ts @@ -0,0 +1,164 @@ +import { TimelineChart } from './time-graph-model' +import { TimeGraphRenderController } from './time-graph-render-controller' + +export class TimeGraphUnitController { + protected absoluteRangeChangedHandlers: ((absoluteRange: bigint) => void)[] + protected _absoluteRange: bigint + + protected viewRangeChangedHandlers: (( + oldRange: TimelineChart.TimeGraphRange, + newRange: TimelineChart.TimeGraphRange + ) => void)[] + protected _viewRange: TimelineChart.TimeGraphRange + + /** + * This determines the world size. + * worldRenderFactor = 1 renders one extra viewRange to the left and right, + * so there are three viewRanges rendered. + */ + private _worldRenderFactor = 1 + + protected selectionRangeChangedHandlers: ((newRange?: TimelineChart.TimeGraphRange) => void)[] + protected _selectionRange?: TimelineChart.TimeGraphRange + + protected _offset: bigint = BigInt(0) + + protected _renderer: TimeGraphRenderController + /** + * Create a string from the given number, which is shown in TimeAxis. + * Or return undefined to not show any text for that number. + */ + numberTranslator?: (theNumber: bigint) => string | undefined + scaleSteps?: number[] + + constructor(absoluteRange: bigint, viewRange?: TimelineChart.TimeGraphRange) { + this._absoluteRange = absoluteRange + this._viewRange = viewRange || { start: BigInt(0), end: absoluteRange } + + this.absoluteRangeChangedHandlers = [] + this.viewRangeChangedHandlers = [] + this.selectionRangeChangedHandlers = [] + + this._renderer = new TimeGraphRenderController() + } + + protected handleAbsoluteRangeChange() { + this.absoluteRangeChangedHandlers.forEach((handler) => handler(this._absoluteRange)) + } + + protected handleViewRangeChange(oldRange: TimelineChart.TimeGraphRange) { + this.viewRangeChangedHandlers.forEach((handler) => handler(oldRange, this._viewRange)) + } + + protected handleSelectionRangeChange() { + this.selectionRangeChangedHandlers.forEach((handler) => handler(this._selectionRange)) + } + + onAbsoluteRangeChanged(handler: (absoluteRange: bigint) => void) { + this.absoluteRangeChangedHandlers.push(handler) + } + + onViewRangeChanged( + handler: ( + oldRange: TimelineChart.TimeGraphRange, + viewRange: TimelineChart.TimeGraphRange + ) => void + ) { + this.viewRangeChangedHandlers.push(handler) + } + + removeAbsoluteRangeChangedHandler(handler: (absoluteRange: bigint) => void) { + const index = this.absoluteRangeChangedHandlers.indexOf(handler) + if (index > -1) { + this.absoluteRangeChangedHandlers.splice(index, 1) + } + } + + removeViewRangeChangedHandler( + handler: ( + oldRange: TimelineChart.TimeGraphRange, + viewRange: TimelineChart.TimeGraphRange + ) => void + ) { + const index = this.viewRangeChangedHandlers.indexOf(handler) + if (index > -1) { + this.viewRangeChangedHandlers.splice(index, 1) + } + } + + onSelectionRangeChange(handler: (selectionRange?: TimelineChart.TimeGraphRange) => void) { + this.selectionRangeChangedHandlers.push(handler) + } + + removeSelectionRangeChangedHandler( + handler: (selectionRange?: TimelineChart.TimeGraphRange) => void + ) { + const index = this.selectionRangeChangedHandlers.indexOf(handler) + if (index > -1) { + this.selectionRangeChangedHandlers.splice(index, 1) + } + } + + get absoluteRange(): bigint { + return this._absoluteRange + } + + set absoluteRange(absoluteRange: bigint) { + if (this._absoluteRange !== absoluteRange) { + this._absoluteRange = absoluteRange + this.handleAbsoluteRangeChange() + } + } + + get viewRange(): TimelineChart.TimeGraphRange { + return this._viewRange + } + + set viewRange(newRange: TimelineChart.TimeGraphRange) { + // Making a deep copy + const oldRange = { + start: this._viewRange.start, + end: this._viewRange.end + } + + if (newRange.end > newRange.start) { + this._viewRange = { start: newRange.start, end: newRange.end } + } + if (newRange.start < 0) { + this._viewRange.start = BigInt(0) + } + if (this._viewRange.end > this.absoluteRange) { + this._viewRange.end = this.absoluteRange + } + this.handleViewRangeChange(oldRange) + } + + get selectionRange(): TimelineChart.TimeGraphRange | undefined { + return this._selectionRange + } + + set selectionRange(value: TimelineChart.TimeGraphRange | undefined) { + this._selectionRange = value + this.handleSelectionRangeChange() + } + + get viewRangeLength(): bigint { + return this._viewRange.end - this._viewRange.start + } + + get offset(): bigint { + return this._offset + } + + set offset(offset: bigint) { + this._offset = offset + } + + get worldRenderFactor(): number { + return this._worldRenderFactor + } + + set worldRenderFactor(n: number) { + this._worldRenderFactor = n + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/addVar.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/addVar.vue new file mode 100644 index 0000000..03fd619 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/addVar.vue @@ -0,0 +1,442 @@ + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/editSignal.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/editSignal.vue new file mode 100644 index 0000000..0a63e37 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/editSignal.vue @@ -0,0 +1,339 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/package.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/package.vue new file mode 100644 index 0000000..3cdcfda --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/package.vue @@ -0,0 +1,503 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/signal.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/signal.vue new file mode 100644 index 0000000..5bc7be3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/components/signal.vue @@ -0,0 +1,589 @@ + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/graph/data.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/graph/data.vue new file mode 100644 index 0000000..57e7eec --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/graph/data.vue @@ -0,0 +1,609 @@ + + + + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/graph/gauge.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/graph/gauge.vue new file mode 100644 index 0000000..ae9dac2 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/graph/gauge.vue @@ -0,0 +1,907 @@ + + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/graph/graph.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/graph/graph.vue new file mode 100644 index 0000000..9ed75c3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/graph/graph.vue @@ -0,0 +1,1389 @@ + + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/BitTimingCalculator.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/BitTimingCalculator.vue new file mode 100644 index 0000000..c54523c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/BitTimingCalculator.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/canNode.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/canNode.vue new file mode 100644 index 0000000..0063c8b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/canNode.vue @@ -0,0 +1,1496 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/ethNode.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/ethNode.vue new file mode 100644 index 0000000..a53d730 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/ethNode.vue @@ -0,0 +1,246 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/index.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/index.vue new file mode 100644 index 0000000..dfd0ef1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/index.vue @@ -0,0 +1,793 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/linNode.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/linNode.vue new file mode 100644 index 0000000..3af6ebb --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/linNode.vue @@ -0,0 +1,454 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/pwmNode.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/pwmNode.vue new file mode 100644 index 0000000..9cb099c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/pwmNode.vue @@ -0,0 +1,338 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/serialNode.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/serialNode.vue new file mode 100644 index 0000000..f434238 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/hardware/serialNode.vue @@ -0,0 +1,321 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/cani.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/cani.vue new file mode 100644 index 0000000..05670f8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/cani.vue @@ -0,0 +1,1355 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/canisignale.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/canisignale.vue new file mode 100644 index 0000000..df18daf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/canisignale.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/linPanel.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/linPanel.vue new file mode 100644 index 0000000..b918a99 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/linPanel.vue @@ -0,0 +1,513 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/lini.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/lini.vue new file mode 100644 index 0000000..e651134 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/lini.vue @@ -0,0 +1,622 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/pwmi.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/pwmi.vue new file mode 100644 index 0000000..e0914cc --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/ia/pwmi.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/layout.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/layout.ts new file mode 100644 index 0000000..03bf427 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/layout.ts @@ -0,0 +1,1056 @@ +import { IconifyIcon } from '@iconify/vue' +import hardwareOutline from '@iconify/icons-material-symbols/hardware-outline' +import networkNode from '@iconify/icons-material-symbols/network-node' +import textFields from '@iconify/icons-material-symbols/text-fields' +import PhAddressBook from '@iconify/icons-ph/address-book' +import database from '@iconify/icons-material-symbols/database' +import { Component, Ref, defineAsyncComponent, nextTick, ref } from 'vue' +import { isEqual, cloneDeep } from 'lodash' +import { ElMessageBox } from 'element-plus' +import EventEmitter from 'events' +import deviceIcon from '@iconify/icons-material-symbols/important-devices-outline' +import logIcon from '@iconify/icons-material-symbols/text-ad-outline-rounded' +import scriptIcon from '@iconify/icons-material-symbols/code-blocks-outline' +import { useProjectStore, State as ProjectState } from '@r/stores/project' +import stepIcon from '@iconify/icons-material-symbols/step-rounded' +import msgIcon from '@iconify/icons-material-symbols/terminal' +import interIcon from '@iconify/icons-material-symbols/interactive-space-outline' +import panelIcon from '@iconify/icons-material-symbols/pan-tool' +import log from 'electron-log' +import graphIcon from '@iconify/icons-ep/histogram' +import testIcon from '@iconify/icons-grommet-icons/test' +import lineIcon from '@iconify/icons-mdi/chart-line' +import gaugeIcon from '@iconify/icons-mdi/gauge' +import packageIcon from '@iconify/icons-mdi/package-variant' +import varIcon from '@iconify/icons-mdi/application-variable-outline' +import dataIcon from '@iconify/icons-mdi/data-usage' +import panelIcon1 from '@iconify/icons-mdi/solar-panel' +import soaIcon from '@iconify/icons-material-symbols/linked-services' +import osTraceIcon from '@iconify/icons-ph/crosshair-fill' +import pluginIcon from '@iconify/icons-mdi/puzzle' +import { usePluginStore } from '@r/stores/plugin' +import i18next from 'i18next' + +type WinsType = ProjectState['project']['wins'] +type WinValueType = WinsType[keyof WinsType] +export interface LayoutItem { + i: string + x: number + y: number + w: number + h: number + key: string + icon?: IconifyIcon + params?: Record + component: Component + minW?: number + minH?: number + label: string + labelKey?: string + allowExt?: boolean + layoutType?: 'bottom' | 'top' | 'left' | 'right' +} +export const layoutMap: Record = { + variable: { + i: 'Variable', + x: 0, + y: 0, + w: 600, + h: 400, + label: 'Variable', + labelKey: 'uds.windows.variable', + key: 'variable', + component: defineAsyncComponent(() => import('./variable.vue')), + icon: varIcon + }, + + datas: { + i: 'Datas', + x: 0, + y: 0, + w: 600, + h: 400, + label: 'Datas', + labelKey: 'uds.windows.datas', + key: 'datas', + component: defineAsyncComponent(() => import('./graph/data.vue')), + icon: dataIcon + }, + panel: { + i: 'Panel', + x: 0, + y: 0, + w: 800, + h: 550, + minW: 800, + label: 'Panel', + labelKey: 'uds.windows.panel', + minH: 550, + key: 'panel', + component: defineAsyncComponent(() => import('./panel/panelEditor.vue')), + icon: panelIcon1 + }, + panelPreview: { + i: 'PanelPreview', + x: 0, + y: 0, + w: 800, + h: 550, + minW: 600, + label: 'PanelPreview', + labelKey: 'uds.windows.panelPreview', + minH: 400, + allowExt: true, + key: 'panelPreview', + component: defineAsyncComponent(() => import('./panel/panelView.vue')), + icon: panelIcon1 + }, + package: { + i: 'Package', + x: 0, + y: 0, + w: 600, + h: 400, + label: 'Package', + labelKey: 'uds.windows.package', + key: 'package', + component: defineAsyncComponent(() => import('./components/package.vue')), + icon: packageIcon + }, + test: { + i: 'Test', + x: 0, + y: 0, + w: 600, + h: 400, + label: 'Test', + labelKey: 'uds.windows.test', + key: 'test', + component: defineAsyncComponent(() => import('./test.vue')), + icon: testIcon + }, + graph: { + i: 'Graph', + x: 0, + y: 0, + w: 600, + h: 400, + label: 'Line', + labelKey: 'uds.windows.graph', + key: 'graph', + component: defineAsyncComponent(() => import('./graph/graph.vue')), + icon: lineIcon + }, + gauge: { + i: 'Gauge', + x: 0, + y: 0, + w: 600, + h: 400, + label: 'Gauge', + labelKey: 'uds.windows.gauge', + key: 'gauge', + component: defineAsyncComponent(() => import('./graph/gauge.vue')), + icon: gaugeIcon + }, + + network: { + i: 'Network', + x: 0, + y: 0, + w: 600, + h: 400, + label: 'Network', + labelKey: 'uds.windows.network', + key: 'network', + component: defineAsyncComponent(() => import('./network/index.vue')), + icon: networkNode + }, + hardware: { + i: 'Hardware', + x: 0, + y: 0, + w: 600, + h: 400, + label: 'Devices', + labelKey: 'uds.windows.hardware', + key: 'hardware', + component: defineAsyncComponent(() => import('./hardware/index.vue')), + icon: deviceIcon + }, + tester: { + i: 'Tester', + x: 0, + y: 0, + w: 600, + h: 400, + label: 'UDS Tester', + labelKey: 'uds.windows.tester', + key: 'tester', + component: defineAsyncComponent(() => import('./tester/index.vue')), + icon: textFields + }, + // can: { + // i: 'CanConfig', + // x: 0, + // y: 0, + // w: 600, + // h: 400, + // key: 'can', + // component: defineAsyncComponent(() => import('./components/config/node/canNode.vue')) + // }, + message: { + i: 'Message', + x: 0, + y: 0, + w: 600, + h: 300, + layoutType: 'bottom', + label: 'Message', + labelKey: 'uds.windows.message', + key: 'message', + component: defineAsyncComponent(() => import('./message.vue')), + icon: msgIcon + }, + testerService: { + i: 'TesterService', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'Service', + labelKey: 'uds.windows.testerService', + key: 'testerService', + component: defineAsyncComponent(() => import('./tester/service.vue')), + icon: database + }, + testerSequence: { + i: 'TesterSequence', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'Sequence', + labelKey: 'uds.windows.testerSequence', + key: 'testerSequence', + component: defineAsyncComponent(() => import('./tester/sequence.vue')), + icon: stepIcon + }, + trace: { + i: 'Trace', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'Trace', + labelKey: 'uds.windows.trace', + key: 'trace', + allowExt: true, + component: defineAsyncComponent(() => import('./trace.vue')), + icon: logIcon + }, + cani: { + i: 'IA', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'IA', + labelKey: 'uds.windows.cani', + key: 'IA', + allowExt: true, + component: defineAsyncComponent(() => import('./ia/cani.vue')), + icon: interIcon + }, + pwmi: { + i: 'IA', + x: 0, + y: 0, + minW: 700, + minH: 350, + w: 700, + h: 350, + label: 'IA', + labelKey: 'uds.windows.pwmi', + key: 'IA', + component: defineAsyncComponent(() => import('./ia/pwmi.vue')), + icon: interIcon + }, + lini: { + i: 'IA', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'IA', + labelKey: 'uds.windows.lini', + key: 'IA', + component: defineAsyncComponent(() => import('./ia/lini.vue')), + icon: interIcon + }, + linPanel: { + i: 'Panel', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'Panel', + labelKey: 'uds.windows.linPanel', + key: 'Panel', + component: defineAsyncComponent(() => import('./ia/linPanel.vue')), + icon: panelIcon + }, + ldf: { + i: 'LDF', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'LDF', + labelKey: 'uds.windows.ldf', + key: 'LDF', + component: defineAsyncComponent(() => import('../../database/ldf/index.vue')), + icon: database + }, + dbc: { + i: 'DBC', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'DBC', + labelKey: 'uds.windows.dbc', + key: 'DBC', + component: defineAsyncComponent(() => import('../../database/dbc/index.vue')), + icon: database + }, + orti: { + i: 'ORTI', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'ORTI', + labelKey: 'uds.windows.orti', + key: 'ORTI', + component: defineAsyncComponent(() => import('../../database/orti/index.vue')), + icon: database + }, + soa: { + i: 'SOA', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'SOA', + labelKey: 'uds.windows.soa', + key: 'SOA', + component: defineAsyncComponent(() => import('./someip/soa.vue')), + icon: soaIcon + }, + someipi: { + i: 'IA', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'IA', + labelKey: 'uds.windows.someipi', + key: 'IA', + component: defineAsyncComponent(() => import('./someip/si.vue')), + icon: interIcon + }, + osTrace: { + i: 'OSTrace', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'OS Statistics', + labelKey: 'uds.windows.osTrace', + key: 'OSTrace', + component: defineAsyncComponent(() => import('../ostrace/table.vue')), + icon: osTraceIcon + }, + osTime: { + i: 'OS TimeLine', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'OSTime', + labelKey: 'uds.windows.osTime', + key: 'OSTime', + component: defineAsyncComponent(() => import('../ostrace/graph.vue')), + icon: osTraceIcon + }, + plugin: { + i: 'Plugin', + x: 0, + y: 0, + w: 700, + h: 400, + label: 'Plugin', + labelKey: 'uds.windows.plugin', + key: 'Plugin', + component: defineAsyncComponent(() => import('../../plugin/plugin.vue')), + icon: pluginIcon + } + // script: { + // i: 'Script', + // x: 0, + // y: 0, + // w: 700, + // h: 400, + // label: 'Script', + // key: 'script', + // component: defineAsyncComponent(() => import('./components/editor.vue')), + // icon: scriptIcon + // } +} + +export class Layout { + parentElement: HTMLElement | null = null + grid = 20 + zIndex = 1 + width = 0 + height = 0 + maxWinId = ref() + validLayout: Record = {} + winRef: Record = {} + modify = ref>({}) + private winEl: Record = {} + event = new EventEmitter() + activeWin = ref('') + left1 = ref(false) + left2 = ref(false) + left = ref(false) + right = ref(false) + right1 = ref(false) + right2 = ref(false) + leftThret = 80 + data: ProjectState + static externWinNum = 0 + constructor(grid?: number) { + this.validLayout = layoutMap + if (grid) { + this.grid = grid + } + this.data = useProjectStore() + window.electron.ipcRenderer.on('ipc-close-window', (event, key) => { + const item = this.data.project.wins[key] + const layoutType = this.getLayoutType(key) + if (item) { + item.isExternal = false + Layout.externWinNum-- + nextTick(() => { + this.layoutInit(key, `#win${key} .uds-draggable`, `#win${key}`, true, layoutType) + }) + } + }) + } + setWinSize(h: number, w: number) { + this.width = w + this.height = h + + for (const l of Object.keys(this.data.project.wins)) { + if (this.winEl[l]) { + nextTick(() => { + const offset = this.winEl[l].offset() + const topGap = offset.top - this.data.project.wins[l].pos.y + if (this.data.project.wins[l].layoutType != 'bottom') { + this.winEl[l].draggable('option', 'containment', [ + 200 - this.data.project.wins[l].pos.w, + topGap, + this.width - 100, + topGap + this.height - 50 + ]) + } + }) + } + } + } + async restoreWin() { + if (Object.values(this.data.project.wins).length == 0) { + this.data.project.wins['message'] = { + pos: { + x: 383, + y: 219, + w: 1280, + h: 200 + }, + options: { + params: {} + }, + title: 'message', + label: 'Message', + id: 'message', + layoutType: 'bottom' + } + } + for (const l of Object.values(this.data.project.wins)) { + if (l.options.params && l.options.params.isPlugin) { + //check plugin exist and enable + const pluginStore = usePluginStore() + const plugin = pluginStore.getPlugin(l.options.params.pluginId) + if (!plugin) { + this.removeWin(l.id) + continue + } + if (pluginStore.pluginsDisabled[plugin.manifest.id]) { + this.removeWin(l.id) + continue + } + // + } + await this.addWin(l.title, l.id, { name: l.options.name, params: l.options.params }, false) + } + for (const l of Object.values(this.data.project.wins)) { + if (l.isMax) { + this.maxWinId.value = l.id + } + } + this.winSizeCheck(this.height, this.width) + } + setupParentElement(parentSelector: string) { + this.parentElement = document.querySelector(parentSelector) + } + registerLayout(title: string, layout: LayoutItem) { + this.validLayout[title] = layout + } + clickWin(id: string) { + const e = document.getElementById(`win${id}`) + if (e) { + const event = new MouseEvent('mousedown') + e.dispatchEvent(event) + } + } + + on(event: string, cb: (activeLayout: WinValueType) => void) { + this.event.on(event, cb) + } + off(event: string, cb: (activeLayout: WinValueType) => void) { + this.event.off(event, cb) + } + offAll(event: string) { + this.event.removeAllListeners(event) + } + getLayoutType(id: string) { + return this.validLayout[this.data.project.wins[id].title]?.layoutType + } + layoutInit( + id: string, + dragSelect: string, + resizeSelect: string, + enable: boolean, + layoutType?: 'bottom' | 'top' | 'left' | 'right' + ) { + const target = document.querySelector(resizeSelect) as HTMLElement + target.style.position = 'absolute' + target.style.zIndex = `${this.zIndex++}` + //store id into element data + target.dataset.id = id + if (this.winEl[id] == undefined) { + this.winEl[id] = window.jQuery(target) + + target.addEventListener('mousedown', () => { + this.activeWin.value = id + target.style.zIndex = `${this.zIndex++}` + }) + } + const data = this.data.project.wins[id] + const drag = document.querySelector(dragSelect) as HTMLElement + if (target && this.parentElement && data) { + let v = 'e, s, se' + + if (layoutType == 'bottom') { + v = 'n' + } + this.winEl[id].resizable({ + containment: layoutType == 'bottom' ? false : this.parentElement, + handles: v, + // grid: [this.grid, this.grid], + animate: false, + disabled: !enable, + aspectRatio: false, + minWidth: this.validLayout[data.title].minW || 200, + minHeight: this.validLayout[data.title].minH || 100, + resize: (e, ui) => { + data.pos.w = ui.size.width + data.pos.h = ui.size.height + if (layoutType == 'bottom') { + //remove element height and top style + this.winEl[id].css('height', '') + this.winEl[id].css('top', '') + } + } + }) + if (drag) { + //get this.winEl[id] offset form client + const offset = this.winEl[id].offset() + const topGap = offset.top - data.pos.y + + this.winEl[id].draggable({ + snapTolerance: 10, + handle: drag, + cancel: '.uds-no-drag', + scroll: false, + disabled: !enable, + + cursor: 'move', + containment: [200 - data.pos.w, topGap, this.width - 100, topGap + this.height - 50], + snap: '.uds-window', + snapMode: 'outer', + // drag: (e, ui) => { + // if (data.isMax) { + // e.preventDefault() + // } + // }, + stop: (e, ui) => { + data.pos.x = ui.position.left + data.pos.y = ui.position.top + } + }) + + // interact(drag).draggable({ + // // enable inertial throwing + // inertia: true, + // enabled: enable, + // ignoreFrom: '.uds-no-drag', + // // keep the element within the area of it's parent + // modifiers: [ + // interact.modifiers.restrictRect({ + // restriction: this.parentElement, + // endOnly: false, + // elementRect: { top: 0, left: 0.7, bottom: 1, right: 0.1 } + // }), + // interact.modifiers.snap({ + // targets: [ + // // 定义吸附点 + // interact.snappers.grid({ x: this.grid, y: this.grid }) + // ], + // range: Infinity // 吸附范围 + // }) + // ], + // // // enable autoScroll + // // autoScroll: true, + + // listeners: { + // // call this function on every dragmove event + // move: (event) => { + // if (data.isMax) { + // return + // } + + // if ((event.pageX < this.leftThret) || ((this.left1.value || this.left2.value || this.left.value) && event.pageX <= this.leftThret + 20)) { + // if (event.pageY < this.height / 3) { + // this.left.value = false + // this.left1.value = true + // this.left2.value = false + // this.right.value = false + // this.right1.value = false + // this.right2.value = false + // } else if (event.pageY > this.height / 3 * 2) { + // this.left.value = false + // this.left1.value = false + // this.left2.value = true + // this.right.value = false + // this.right1.value = false + // this.right2.value = false + // } else { + // this.left.value = true + // this.left1.value = false + // this.left2.value = false + // this.right.value = false + // this.right1.value = false + // this.right2.value = false + // } + // } else if ((this.left1.value || this.left2.value || this.left.value) && event.pageX > this.leftThret + 20) { + // this.left.value = false + // this.left1.value = false + // this.left2.value = false + // this.right.value = false + // this.right1.value = false + // this.right2.value = false + // } + + // if ((event.pageX > (this.width - this.leftThret)) || ((this.right.value || this.right1.value || this.right2.value) && event.pageX >= (this.width - this.leftThret - 20))) { + // if (event.pageY < this.height / 3) { + // this.left.value = false + // this.left1.value = false + // this.left2.value = false + // this.right.value = false + // this.right1.value = true + // this.right2.value = false + // } else if (event.pageY > this.height / 3 * 2) { + // this.left.value = false + // this.left1.value = false + // this.left2.value = false + // this.right.value = false + // this.right1.value = false + // this.right2.value = true + // } else { + // this.left.value = false + // this.left1.value = false + // this.left2.value = false + // this.right.value = true + // this.right1.value = false + // this.right2.value = false + // } + // } else if ((this.right.value || this.right1.value || this.right2.value) && event.pageX < (this.width - this.leftThret - 20)) { + // this.left.value = false + // this.left1.value = false + // this.left2.value = false + // this.right.value = false + // this.right1.value = false + // this.right2.value = false + // } + + // // keep the dragged position in the data-x/data-y attributes + // let x = data.pos.x + event.dx + + // let y = data.pos.y + event.dy + // const xL = Math.floor(x / this.grid) * this.grid + // const xH = Math.ceil(x / this.grid) * this.grid + + // const yL = Math.floor(y / this.grid) * this.grid + // const yH = Math.ceil(y / this.grid) * this.grid + // if (x - xL < xH - x) { + // x = xL + // } else { + // x = xH + // } + // if (y - yL < yH - y) { + // y = yL + // } else { + // y = yH + // } + // data.pos.x = x + // data.pos.y = y + + // }, + + // // call this function on every dragend event + // end: () => { + // if (this.left1.value) { + // data.pos.x = 0 + // data.pos.y = 0 + // data.pos.w = this.width / 2 + // data.pos.h = this.height / 2 + // } + // else if (this.left2.value) { + // data.pos.x = 0 + // data.pos.y = this.height / 2 + // data.pos.w = this.width / 2 + // data.pos.h = this.height / 2 + // } + // else if (this.left.value) { + // data.pos.x = 0 + // data.pos.y = 0 + // data.pos.w = this.width / 2 + // data.pos.h = this.height + // } + // else if (this.right1.value) { + // data.pos.x = this.width / 2 + // data.pos.y = 0 + // data.pos.w = this.width / 2 + // data.pos.h = this.height / 2 + // } + // else if (this.right2.value) { + // data.pos.x = this.width / 2 + // data.pos.y = this.height / 2 + // data.pos.w = this.width / 2 + // data.pos.h = this.height / 2 + // } + // else if (this.right.value) { + // data.pos.x = this.width / 2 + // data.pos.y = 0 + // data.pos.w = this.width / 2 + // data.pos.h = this.height + // } + // this.left1.value = false + // this.left2.value = false + // this.left.value = false + // this.right1.value = false + // this.right2.value = false + // this.right.value = false + // this.data.project.wins[id].pos + // } + // } + // }) + } + } + } + maxWin(key: string) { + const item = this.data.project.wins[key] + if (item == undefined) { + return + } + const layoutType = this.validLayout[item.title].layoutType + if (item.isMax) { + item.isMax = false + this.maxWinId.value = undefined + item.pos = cloneDeep(item.backupPos ?? item.pos) + this.layoutInit(key, `#win${key} .uds-draggable`, `#win${key}`, true, layoutType) + // 在恢复窗口大小后,重新设置containment + nextTick(() => { + if (this.winEl[key] && layoutType != 'bottom') { + const offset = this.winEl[key].offset() + const topGap = offset.top - item.pos.y + this.winEl[key].draggable('option', 'containment', [ + 200 - item.pos.w, + topGap, + this.width - 100, + topGap + this.height - 50 + ]) + } + }) + this.event.emit(`max:${key}`, item, false) + } else { + this.maxWinId.value = key + for (const layoutItem of Object.values(this.data.project.wins)) { + layoutItem.hide = true + } + item.backupPos = cloneDeep(item.pos) + item.pos = { x: 0, y: -28, w: this.width, h: this.height + 30 } + item.hide = false + item.isMax = true + this.layoutInit(key, `#win${key} .uds-draggable`, `#win${key}`, false, layoutType) + this.event.emit(`max:${key}`, item, false) + } + } + changeWinName(id: string, name: string) { + const item = this.data.project.wins[id] + if (item) { + item.options.name = name + } + } + winSizeCheck(maxH: number, maxW: number) { + for (const item of Object.values(this.data.project.wins)) { + if (item.isMax) { + item.pos.w = maxW + item.pos.h = maxH + 28 + if (item.backupPos) { + if (item.backupPos.x > maxW - 50) { + item.backupPos.x = maxW - 50 + } + if (item.backupPos.y > maxH - 50) { + item.backupPos.y = maxH - 50 + } + } + } else { + if (item.pos.x > maxW - 50) { + item.pos.x = maxW - 50 + } + if (item.pos.y > maxH - 50) { + item.pos.y = maxH - 50 + } + if (item.pos.y < 0 && !item.isMax) { + item.pos.y = 0 + } + } + } + } + async addWin( + title: string, + id: string, + options?: { + name?: string + params?: Record + }, + switchHide = true + ) { + if (this.validLayout[title] == undefined) { + log.error('layoutMap not found key:', title) + return + } + if (this.maxWinId.value && this.maxWinId.value != id) { + this.maxWin(this.maxWinId.value) + } + const layoutType = this.validLayout[title].layoutType + const item = this.data.project.wins[id] + if (item) { + if (item.isExternal) { + this.externalWin(id) + return + } + /* the same win is already exist*/ + + /* update sp*/ + if (options?.name != undefined) { + if (item.options.name != options.name) { + item.options.name = options.name + // this.data.projectDirty = true + } + } + if (options?.params) { + if (!isEqual(item.options.params, options.params)) { + item.options.params = options.params + // this.data.projectDirty = true + } + } + if (item.hide && switchHide) { + item.hide = false + } + if (item.pos.y < 0 && !item.isMax) { + item.pos.y = 0 + } + + this.data.project.wins[id].layoutType = layoutType + await nextTick() + this.layoutInit(id, `#win${id} .uds-draggable`, `#win${id}`, true, layoutType) + this.clickWin(id) + this.event.emit('show', this.data.project.wins[id]) + } else { + const t1 = this.validLayout[title] + + let x = 0, + y = 0 + + x = this.width / 2 - t1.w / 2 + y = this.height / 2 - t1.h / 2 + if (this.activeWin.value && this.data.project.wins[this.activeWin.value]) { + const activePos = this.data.project.wins[this.activeWin.value].pos + + if ( + activePos && + activePos.x > 100 && + activePos.y > 100 && + activePos.x < this.width - 100 && + activePos.y < this.height - 100 + ) { + x = activePos.x + 20 + y = activePos.y + 20 + } + } + + if (x < 0) { + x = this.width / 2 + } + if (y < 0) { + y = this.height / 2 + } + this.data.project.wins[id] = { + pos: this.data.project.wins[id]?.pos ?? { x: x, y: y, w: t1.w, h: t1.h }, + title: title, + label: t1.label, + id: id, + options: { + params: this.data.project.wins[id]?.options.params, + name: options?.name + }, + layoutType: layoutType + } + if (options?.params) { + this.data.project.wins[id].options.params = options.params + } + + await nextTick() + this.layoutInit(id, `#win${id} .uds-draggable`, `#win${id}`, true, layoutType) + this.event.emit('add', this.data.project.wins[id]) + // this.data.projectDirty = true + this.clickWin(id) + } + this.activeWin.value = id + } + setWinModified(key: string, modified: boolean) { + this.modify.value[key] = modified + } + removeWin(key: string, force?: boolean) { + const item = this.data.project.wins[key] + if (item) { + const done = () => { + this.modify.value[key] = false + this.event.emit('close', item) + delete this.winRef[key] + delete this.winEl[key] + delete this.data.project.wins[key] + // this.data.projectDirty = true + if (key == this.maxWinId.value) { + this.maxWinId.value = undefined + } + } + + if (this.modify.value[key] && !force) { + const message = item.options.name + ? i18next.t('uds.windowCloseConfirm.messageWithName', { name: item.options.name }) + : i18next.t('uds.windowCloseConfirm.messageWithoutName') + ElMessageBox.confirm(message, i18next.t('uds.windowCloseConfirm.title'), { + confirmButtonText: i18next.t('uds.windowCloseConfirm.ok'), + cancelButtonText: i18next.t('uds.windowCloseConfirm.cancel'), + type: 'warning', + buttonSize: 'small', + appendTo: `#win${key}` + }) + .then(() => { + done() + }) + .catch(() => { + null + }) + return + } else { + done() + } + } + } + showWin(id: string) { + if (this.maxWinId.value) { + this.maxWin(this.maxWinId.value) + } + this.activeWin.value = id + const q = this.data.project.wins[id] + if (q) { + this.clickWin(id) + q.hide = false + if (this.winEl[id]) { + nextTick(() => { + const offset = this.winEl[id].offset() + const topGap = offset.top - this.data.project.wins[id].pos.y + + if (this.data.project.wins[id].layoutType != 'bottom') { + this.winEl[id].draggable('option', 'containment', [ + 200 - this.data.project.wins[id].pos.w, + topGap, + this.width - 100, + topGap + this.height - 50 + ]) + } + }) + } + this.event.emit('show', q) + } + } + minWin(key: string) { + const item = this.data.project.wins[key] + if (item == undefined) { + return + } + if (this.maxWinId.value == key) { + this.maxWin(this.maxWinId.value) + } + //fix style with Jquery + // this.winEl[key].style.zIndex = '-1' + this.winEl[key].css('z-index', '-1') + item.hide = true + this.event.emit('min', item) + } + externalWin(key: string) { + const item = this.data.project.wins[key] + if (item) { + Layout.externWinNum++ + item.isExternal = true + delete this.winEl[key] + const layout = this.validLayout[item.title] + const baseLabel = layout?.labelKey ? i18next.t(layout.labelKey) : item.label + window.electron.ipcRenderer.send('ipc-open-window', { + ...item.options.params, + id: key, + path: item.title, + w: item.pos.w, + h: item.pos.h, + name: baseLabel + (item.options.name ? `-${item.options.name}` : '') + }) + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/message.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/message.vue new file mode 100644 index 0000000..3b5d66f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/message.vue @@ -0,0 +1,497 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/index.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/index.vue new file mode 100644 index 0000000..af95b2d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/index.vue @@ -0,0 +1,1656 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/logConfig.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/logConfig.vue new file mode 100644 index 0000000..f108a86 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/logConfig.vue @@ -0,0 +1,546 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/nodeConfig.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/nodeConfig.vue new file mode 100644 index 0000000..f6dce48 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/nodeConfig.vue @@ -0,0 +1,544 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/replayConfig.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/replayConfig.vue new file mode 100644 index 0000000..22e5f49 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/replayConfig.vue @@ -0,0 +1,505 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/udsView.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/udsView.ts new file mode 100644 index 0000000..6790098 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/network/udsView.ts @@ -0,0 +1,1125 @@ +// stores/counter.js +import * as joint from '@joint/core' +import { EventEmitter } from 'events' +import { CanBaseInfo } from 'nodeCan/can' +import { TesterInfo } from 'nodeCan/tester' +import { v4 } from 'uuid' +import { ElMessageBox } from 'element-plus' +import { UdsDevice } from 'nodeCan/uds' +import { Layout } from '../layout' +import { useDataStore } from '@r/stores/data' +import nodeConfig from './nodeConfig.vue' +import { h } from 'vue' +import { useProjectStore } from '@r/stores/project' +import { cloneDeep, get } from 'lodash' +import { Inter, LogItem, NodeItem, ReplayItem } from 'src/preload/data' +import { nextTick } from 'vue' +import testConfig from '@iconify/icons-grommet-icons/test' +import { useDark } from '@vueuse/core' +import logConfig from './logConfig.vue' +import replayConfig from './replayConfig.vue' +import i18next from 'i18next' +import { useGlobalStart } from '@r/stores/runtime' + +// Global map to store all ceil instances for cross-component access +export const ceilInstanceMap = new Map() + +// Get ceil instance by ID +export function getCeilInstance(id: string): udsCeil | undefined { + return ceilInstanceMap.get(id) +} + +// Get ceil instance by ID with type casting +export function getCeilInstanceAs(id: string): T | undefined { + return ceilInstanceMap.get(id) as T | undefined +} + +export interface udsBase { + name: string + type: string + id: string +} + +class Region extends joint.dia.Element { + defaults() { + return joint.util.defaultsDeep( + { + type: 'link.region', + attrs: { + body: { + width: 'calc(w)', + height: 'calc(h)', + strokeWidth: 2, + stroke: '#000000', + fill: '#FFFFFF' + }, + progressBackground: { + x: 10, + y: 'calc(h - 18)', + width: 'calc(w - 20)', + height: 8, + fill: '#E0E0E0', + stroke: '#BDBDBD', + strokeWidth: 1, + rx: 4, + ry: 4, + opacity: 0 + }, + progressBar: { + x: 10, + y: 'calc(h - 18)', + width: 0, + height: 8, + fill: '#FF9800', + rx: 4, + ry: 4, + opacity: 0 + }, + labelTop: { + x: 'calc(1*w)', + y: '10', + fontSize: 10, + fill: '#333333', + 'font-weight': 700 + }, + label: { + textVerticalAnchor: 'middle', + textAnchor: 'middle', + refX: '50%', + refY: 'calc(50%+100)', + fontSize: 10, + fill: '#333333', + textWrap: { + width: 120, // 相对于元素宽度的偏移 + height: 22, // 设置为与字体大小相同的固定高度 + ellipsis: true // 如果文本太长,以省略号结尾 + } + }, + labelBottom: { + textVerticalAnchor: 'middle', + textAnchor: 'middle', + refX: '50%', + refY: '75%', + fontSize: 10, + fill: '#333333', + textWrap: { + width: 120, // 修改为所需的宽度,例如 0 表示不限制宽度 + height: 22, // 设置为与字体大小相同的固定高度 + ellipsis: true // 如果文本太长,以省略号结尾 + } + }, + title: { + x: 'calc(0.5*w)', + y: '9', + textVerticalAnchor: 'middle', + textAnchor: 'middle', + fontSize: 12, + fill: '#333333' + }, + line: { + x1: 0, + y1: 16, + x2: 'calc(w)', + y2: 16, + stroke: '#000000', + strokeWidth: 1 + } + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + /*@ts-ignore*/ + }, + super.defaults + ) + } + markup = [ + { + tagName: 'rect', + selector: 'body' + }, + { + tagName: 'rect', + selector: 'progressBackground' + }, + { + tagName: 'rect', + selector: 'progressBar' + }, + { + tagName: 'text', + selector: 'labelTop' + }, + { + tagName: 'text', + selector: 'label' + }, + { + tagName: 'text', + selector: 'labelBottom' + }, + + { + tagName: 'text', + selector: 'title' + }, + { + tagName: 'line', + selector: 'line' + }, + { + tagName: 'circle', + selector: 'cornerCircle' + }, + { + tagName: 'text', + selector: 'cornerText' + }, + { + tagName: 'text', + selector: 'cornerText1' + }, + { + tagName: 'path', + selector: 'testIcon' + }, + { + tagName: 'path', + selector: 'documentIcon' + } + ] +} +export const colorMap: Record = { + device: { + fill: 'rgb(51.2, 126.4, 204)', + color: '#FFFFFF' + }, + soa: { + fill: 'rgb(51.2, 126.4, 102)', + color: '#FFFFFF' + }, + interactive: { + fill: 'rgb(121.3, 187.1, 255)', + color: '#FFFFFF' + }, + node: { + fill: 'rgb(184, 129.6, 48)', + color: '#FFFFFF' + }, + log: { + fill: 'rgb(202, 176, 9)', + color: '#FFFFFF' + }, + replay: { + fill: 'rgb(76, 175, 80)', + color: '#FFFFFF' + } +} + +export class udsCeil { + graph: joint.dia.Graph + rect: joint.shapes.standard.Rectangle + events: EventEmitter = new EventEmitter() + + data: udsBase + title?: string + enable = true + + constructor( + paper: joint.dia.Paper, + graph: joint.dia.Graph, + e: udsBase, + private x: number, + private y: number, + button: { + edit: boolean + panel: boolean + remove: boolean + lockY?: boolean + lockX?: boolean + } + ) { + this.graph = graph + + const width = 150 + const height = 100 + this.data = e + + this.rect = new Region({ + position: { x: x, y: y }, + size: { width: width, height: height }, + attrs: { + body: { + fill: colorMap[e.type].fill + }, + label: { + text: e.name, + fontSize: 12, + fill: colorMap[e.type].color + }, + labelBottom: { + text: '', + fontSize: 10, + fill: colorMap[e.type].color + } + }, + id: e.id, + meta: this + }) + + this.graph.addCell(this.rect) + // this.addDocumentIcon() + ;(this.rect as any).on('change:position', (cell: any, newPos) => { + if (newPos.x == this.x && newPos.y == this.y) { + return + } + + if (newPos.x > -100) { + newPos.x = -100 + } + if (newPos.y < -100) { + newPos.y = -100 + } + if (button.lockY && !button.lockX) { + this.x = newPos.x + cell.set('position', { + x: newPos.x, + y: this.y + }) + + if (this.data.type === 'replay') { + replayXOffset = newPos.x - 200 + } else { + nodeXOffset = newPos.x - 200 + } + } else if (button.lockX && !button.lockY) { + this.y = newPos.y + cell.set('position', { + x: this.x, + y: newPos.y + }) + + deviceYOffset = newPos.y + 200 + } else if (button.lockX && button.lockY) { + cell.set('position', { + x: this.x, + y: this.y + }) + } + }) + + this.rect.attr('title', { + text: e.type.toLocaleUpperCase(), + fill: colorMap[e.type].color + }) + //make name label lower + this.rect.attr('label/refY', '56%') + + const view = this.rect.findView(paper) + if (view) { + const boundaryTool = new joint.elementTools.Boundary() + const toolsList = [boundaryTool] + let offset = -8 + + if (button.edit) { + const editButtonClass = (joint.elementTools.Button as any).extend({ + name: 'edit-button', + options: { + markup: [ + { + tagName: 'circle', + selector: 'button', + attributes: { + r: 7, + fill: 'var(--el-color-warning)', + cursor: 'pointer' + } + }, + { + tagName: 'path', + selector: 'icon', + attributes: { + d: [ + 'M7 7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-1', + 'M20.385 6.585a2.1 2.1 0 0 0-2.97-2.97L9 12v3h3zM16 5l3 3' + ], + fill: 'none', + stroke: '#FFFFFF', + 'stroke-width': 2, + 'pointer-events': 'none', + transform: ['translate(-5.5,-5.5)', 'scale(0.45)'] + } + } + ], + x: '0%', + y: '100%', + offset: { + x: 8, + y: offset + }, + rotate: true, + action: () => { + this.events.emit('edit', this) + } + } + }) + const edit = new editButtonClass() + toolsList.push(edit) + offset -= 17 + } + + if (button.panel) { + const editButtonClass = (joint.elementTools.Button as any).extend({ + name: 'edit-button', + options: { + markup: [ + { + tagName: 'circle', + selector: 'button', + attributes: { + r: 7, + fill: 'var(--el-color-primary)', + cursor: 'pointer' + } + }, + { + tagName: 'path', + selector: 'icon', + attributes: { + d: [ + 'M10.05 23q-.75 0-1.4-.337T7.575 21.7L1.2 12.375l.6-.575q.475-.475 1.125-.55t1.175.3L7 13.575V4q0-.425.288-.712T8 3t.713.288T9 4v8h2V2q0-.425.288-.712T12 1t.713.288T13 2v10h2V3q0-.425.288-.712T16 2t.713.288T17 3v9h2V5q0-.425.288-.712T20 4t.713.288T21 5v14q0 1.65-1.175 2.825T17 23z' + ], + fill: 'none', + stroke: '#FFFFFF', + 'stroke-width': 2, + 'pointer-events': 'none', + transform: ['translate(-5.5,-5.5)', 'scale(0.45)'] + } + } + ], + x: '0%', + y: '100%', + offset: { + x: 8, + y: offset + }, + rotate: true, + action: () => { + this.events.emit('panel', this) + } + } + }) + const edit = new editButtonClass() + toolsList.push(edit) + offset -= 17 + } + + if (button.remove) { + const removeTools = new joint.elementTools.Remove({ + x: '0%', + y: '100%', + offset: { + x: 8, + y: offset + }, + action: () => { + this.events.emit('remove', this) + } + }) + toolsList.push(removeTools) + offset -= 17 + } + + const toolsView = new joint.dia.ToolsView({ + tools: toolsList + }) + view.addTools(toolsView) + view.hideTools() + } + + // Register this instance in the global map + ceilInstanceMap.set(e.id, this) + } + + addDocumentIcon() { + // Add document SVG icon to the bottom-right corner + this.rect.attr('documentIcon', { + d: 'M18 16h3.65q.425 0 .713.288t.287.712t-.287.713t-.713.287H20.4l2.25 2.25q.275.275.275.688t-.275.712q-.3.3-.712.3t-.713-.3L19 19.425v1.225q0 .425-.288.713T18 21.65t-.712-.287T17 20.65V17q0-.425.288-.712T18 16M13 4v4q0 .425.288.713T14 9h4zM6 2h7.175q.4 0 .763.15t.637.425l4.85 4.85q.275.275.425.638t.15.762V13q0 .425-.288.713T19 14h-3q-.425 0-.712.288T15 15v6q0 .425-.288.713T14 22H6q-.825 0-1.412-.587T4 20V4q0-.825.588-1.412T6 2', + fill: 'currentColor', + transform: 'translate(132, 82) scale(0.5)', + 'pointer-events': 'none', + opacity: 0.7 + }) + } + + getId() { + return this.data.id + } + on( + event: 'edit' | 'add' | 'remove' | 'panel' | 'play' | 'dblclick' | 'contextmenu', + cb: (ceil: udsCeil) => void + ) { + this.events.on(event, cb) + } + changeName(name: string) { + this.data.name = name + this.rect.attr('label/text', name) + } + changeNameBottom(name: string) { + this.rect.attr('labelBottom/text', name) + } + setEnable(enable: boolean) { + this.enable = enable + if (enable) { + this.rect.attr('body/opacity', 1) + } else { + this.rect.attr('body/opacity', 0.2) + } + } + destroy() { + // Remove from global map + ceilInstanceMap.delete(this.data.id) + this.rect.remove() + this.events.removeAllListeners() + } +} + +export class udsHardware extends udsCeil { + vendor = '' + constructor( + paper: joint.dia.Paper, + graph: joint.dia.Graph, + id: string, + device: UdsDevice, + x = 100, + y = 100 + ) { + let name = i18next.t('uds.network.udsView.defaultDeviceName') + let type = 'device' + if (device.type == 'can' && device.canDevice) { + name = device.canDevice.name + } else if (device.type == 'eth' && device.ethDevice) { + name = device.ethDevice.name + } else if (device.type == 'lin' && device.linDevice) { + name = device.linDevice.name + } else if (device.type == 'someip' && device.someipDevice) { + name = device.someipDevice.name + type = 'soa' + } else if (device.type == 'pwm' && device.pwmDevice) { + name = device.pwmDevice.name + } else if (device.type == 'serial' && device.serialDevice) { + name = device.serialDevice.name + } + + super( + paper, + graph, + { + name: name, + type: type, + id: id + }, + x, + y, + { + panel: false, + edit: true, + remove: false, + lockX: true, + lockY: false + } + ) + } +} +export class IG extends udsCeil { + vendor = '' + constructor( + paper: joint.dia.Paper, + graph: joint.dia.Graph, + id: string, + ig: Inter, + x: number, + y: number + ) { + super( + paper, + graph, + { + name: ig.name, + type: 'interactive', + id: id + }, + x, + y, + { + panel: false, + edit: true, + remove: true, + lockX: false, + lockY: true + } + ) + } +} + +export class Log extends udsCeil { + constructor( + paper: joint.dia.Paper, + graph: joint.dia.Graph, + id: string, + data: LogItem, + x: number, + y: number + ) { + super( + paper, + graph, + { + name: data.name, + type: 'log', + id: id + }, + x, + y, + { + panel: false, + edit: true, + remove: true, + lockX: true, + lockY: false + } + ) + this.addDocumentIcon() + } +} + +export class Replay extends udsCeil { + private isPlaying = false + private paper: joint.dia.Paper + private progressPercent = 0 + + constructor( + paper: joint.dia.Paper, + graph: joint.dia.Graph, + id: string, + data: ReplayItem, + x: number, + y: number + ) { + super( + paper, + graph, + { + name: data.name, + type: 'replay', + id: id + }, + x, + y, + { + panel: false, + edit: true, + remove: true, + lockX: false, + lockY: true + } + ) + this.paper = paper + // Enable progress bar only for replay + this.rect.attr('progressBackground/opacity', 1) + this.rect.attr('progressBar/opacity', 1) + this.addPlayButton() + // Initialize progress bar to 0 + this.setProgress(0) + } + + addPlayButton() { + // Add play button circle in top-left corner (always visible) + this.rect.attr('cornerCircle', { + r: 10, + cx: 12, + cy: 28, + fill: '#4CAF50', + stroke: '#FFFFFF', + 'stroke-width': 2, + cursor: 'pointer', + event: 'element:playButton:pointerdown' + }) + + // Add play icon (triangle) - positioned inside the circle + this.rect.attr('testIcon', { + d: 'M8 5v14l11-7z', + fill: '#FFFFFF', + transform: 'translate(4, 20) scale(0.65)', + 'pointer-events': 'none' + }) + + // Add click handler via paper events + this.paper.on('element:playButton:pointerdown', (elementView: joint.dia.ElementView) => { + if (elementView.model.id === this.rect.id) { + this.events.emit('play', this) + } + }) + } + + setPlaying(playing: boolean) { + this.isPlaying = playing + if (playing) { + this.rect.attr('body/stroke', '#00C853') + this.rect.attr('body/strokeWidth', 3) + // Update to stop icon (square) and red color + this.rect.attr('cornerCircle/fill', '#F44336') + this.rect.attr('testIcon/d', 'M6 6h12v12H6z') + } else { + this.rect.attr('body/stroke', '#000000') + this.rect.attr('body/strokeWidth', 2) + // Update to play icon (triangle) and green color + this.rect.attr('cornerCircle/fill', '#4CAF50') + this.rect.attr('testIcon/d', 'M8 5v14l11-7z') + } + } + + getIsPlaying() { + return this.isPlaying + } + + setProgress(percent: number) { + // Clamp percent between 0 and 100 + const clamped = Math.max(0, Math.min(100, percent)) + this.progressPercent = clamped + + // Calculate the actual width of the progress bar based on the rect size + const size = this.rect.get('size') as { width: number; height: number } + const totalWidth = size.width - 20 // match x:10 and width: w-20 + const barWidth = (totalWidth * clamped) / 100 + + this.rect.attr('progressBar/width', barWidth) + } +} + +export class Node extends udsCeil { + vendor = '' + constructor( + paper: joint.dia.Paper, + graph: joint.dia.Graph, + id: string, + private ig: NodeItem, + x: number, + y: number + ) { + super( + paper, + graph, + { + name: ig.name, + type: 'node', + id: id + }, + x, + y, + { + panel: ig.isTest ? false : true, + edit: true, + remove: ig.isTest ? false : true, + lockX: false, + lockY: true + } + ) + const t = this.getNodeBottomName() + this.changeNameBottom(t) + + // Add test icon if isTest is true + if (this.ig.isTest) { + this.addTestIcon() + } + } + + addTestIcon() { + // Extract path data from SVG string + const svgContent = testConfig.body + const pathMatch = svgContent.match(/d="([^"]*)"/) + const pathData = pathMatch ? pathMatch[1] : 'M0,0' + + // Add SVG test icon to the bottom-right corner + this.rect.attr('testIcon', { + d: pathData, + fill: '#00C853', + stroke: '#FFFFFF', + 'stroke-width': 1, + transform: 'translate(125, 75) scale(0.8)', + 'pointer-events': 'none' + }) + } + getNodeBottomName() { + this.rect.attr('labelBottom/text', '') + if (this.ig.workNode) { + const txt = `${this.ig.workNode}` + return txt + } + + return '' + } +} + +export interface udsVEcu { + name: string + type: string + joined: string[] +} + +export interface udsLoger { + name: string + toConsole: boolean + toFile: boolean + filePath?: string + joined: string[] +} +let deviceYOffset = 0 +let nodeXOffset = -200 +let replayXOffset = -200 +export class UDSView { + graph: joint.dia.Graph + paper?: joint.dia.Paper + ceilMap: Map = new Map() + selectedElement?: string // Currently selected element for copy/paste + private isDark = useDark() + + constructor( + graph: joint.dia.Graph, + private layout: Layout + ) { + this.graph = graph + const t: any = this.graph + } + setPaper(paper: joint.dia.Paper) { + this.paper = paper + } + clear() { + deviceYOffset = 0 + nodeXOffset = -200 + replayXOffset = -200 + this.graph.clear() + this.ceilMap.clear() + } + graphInit(obj: any) { + if (obj) { + this.graph.fromJSON(obj) + } else { + this.graph.clear() + } + } + changeName(key: string, name: string) { + const item = this.ceilMap.get(key) + if (item) { + item.changeName(name) + } + } + saveGraph() { + return this.graph.toJSON() + } + removeElement(id: string) { + const item = this.ceilMap.get(id) + if (item) { + this.graph.removeCells([item.rect]) + } + } + + addDevice(id: string, data: UdsDevice) { + const e = this.ceilMap.get(id) + if (!e) { + const element = new udsHardware(this.paper!, this.graph, id, data, 0, deviceYOffset) + deviceYOffset += 200 + this.ceilMap.set(id, element) + element.on('edit', (ceil) => { + if (data.type == 'someip') { + this.layout.addWin('soa', 'soa', { + params: { + deviceId: ceil.getId() + } + }) + } else { + this.layout.addWin('hardware', 'hardware', { + params: { + deviceId: ceil.getId() + } + }) + } + }) + return element + } else { + return e + } + } + addIg(id: string, data: Inter) { + /* check name exist*/ + const e = this.ceilMap.get(id) + if (e) { + return e + } + const element = new IG(this.paper!, this.graph, id, data, nodeXOffset, -200) + nodeXOffset -= 250 + element.on('remove', (ceil) => { + const dataBase = useDataStore() + + ceil.events.removeAllListeners() + this.graph.removeCells([ceil.rect]) + console.log('remove', ceil.getId()) + this.layout.removeWin(`${ceil.getId()}_ia`) + delete dataBase.ia[ceil.getId()] + }) + element.on('edit', (ceil) => { + const dataBase = useDataStore() + const id = ceil.getId() + const item = dataBase.ia[id] + if (item.type == 'can') { + this.layout.addWin('cani', `${id}_ia`, { + name: item.name, + params: { + 'edit-index': id + } + }) + } else if (item.type == 'lin') { + this.layout.addWin('lini', `${id}_ia`, { + name: item.name, + params: { + 'edit-index': id + } + }) + } else if (item.type == 'pwm') { + this.layout.addWin('pwmi', `${id}_ia`, { + name: item.name, + params: { + 'edit-index': id + } + }) + } else if (item.type == 'someip') { + this.layout.addWin('someipi', `${id}_ia`, { + name: item.name, + params: { + 'edit-index': id + } + }) + } + }) + this.ceilMap.set(id, element) + + return element + } + addNode(id: string, data: NodeItem) { + /* check name exist*/ + const e = this.ceilMap.get(id) + if (e) { + return e + } + const element = new Node(this.paper!, this.graph, id, data, nodeXOffset, -200) + nodeXOffset -= 250 + element.on('remove', (ceil) => { + const dataBase = useDataStore() + const project = useProjectStore() + window.electron.ipcRenderer.invoke( + 'ipc-delete-node', + project.projectInfo.path, + project.projectInfo.name, + cloneDeep(dataBase.nodes[ceil.getId()]) + ) + delete dataBase.nodes[ceil.getId()] + ceil.events.removeAllListeners() + this.graph.removeCells([ceil.rect]) + this.layout.removeWin(ceil.getId()) + }) + element.on('edit', (ceil) => { + const dataBase = useDataStore() + const id = ceil.getId() + const item = dataBase.nodes[id] + + ElMessageBox({ + buttonSize: 'small', + showConfirmButton: false, + title: i18next.t('uds.network.udsView.dialogs.editNode', { name: item.name }), + showClose: false, + customStyle: { + width: '600px', + maxWidth: 'none' + }, + message: () => + h(nodeConfig, { + editIndex: id + }) + }).catch(null) + }) + element.on('panel', (ceil) => { + const dataBase = useDataStore() + const item = dataBase.nodes[id] + const workNode = item.workNode + if (workNode) { + const dbName = workNode.split(':')[0] + + for (const ld of Object.values(dataBase.database.lin)) { + if (ld.name == dbName) { + this.layout.addWin('linPanel', id, { + name: item.name, + params: { + editIndex: id + } + }) + return + } + } + } else { + ElMessageBox.alert(i18next.t('uds.network.udsView.dialogs.selectWorkNode')) + } + }) + this.ceilMap.set(id, element) + + return element + } + addLog(id: string, data: LogItem) { + const e = this.ceilMap.get(id) + if (!e) { + let logsNumbers = 0 + for (const key of this.ceilMap.keys()) { + if (this.ceilMap.get(key) instanceof Log) { + logsNumbers++ + } + } + + const element = new Log(this.paper!, this.graph, id, data, 200, 150 + logsNumbers * 150) + + this.ceilMap.set(id, element) + element.on('remove', (ceil) => { + const dataBase = useDataStore() + delete dataBase.logs[ceil.getId()] + ceil.events.removeAllListeners() + this.graph.removeCells([ceil.rect]) + this.layout.removeWin(ceil.getId()) + }) + element.on('edit', (ceil) => { + const dataBase = useDataStore() + const id = ceil.getId() + const item = dataBase.logs[id] + ElMessageBox({ + buttonSize: 'small', + showConfirmButton: false, + title: i18next.t('uds.network.udsView.dialogs.editLog', { name: item.name }), + showClose: false, + customStyle: { + width: '600px', + maxWidth: 'none' + }, + message: () => + h(logConfig, { + editIndex: id + }) + }).catch(null) + }) + return element + } else { + return e + } + } + addReplay(id: string, data: ReplayItem) { + const e = this.ceilMap.get(id) + if (!e) { + const element = new Replay(this.paper!, this.graph, id, data, replayXOffset, -200) + replayXOffset -= 250 + + this.ceilMap.set(id, element) + element.on('remove', (ceil) => { + const dataBase = useDataStore() + const replayElement = ceil as Replay + delete dataBase.replays[ceil.getId()] + replayElement.destroy() + this.graph.removeCells([ceil.rect]) + this.layout.removeWin(ceil.getId()) + }) + element.on('edit', (ceil) => { + const dataBase = useDataStore() + const id = ceil.getId() + const item = dataBase.replays[id] + ElMessageBox({ + buttonSize: 'small', + showConfirmButton: false, + title: i18next.t('uds.network.udsView.dialogs.editReplay', { name: item.name }), + showClose: false, + customStyle: { + width: '600px', + maxWidth: 'none' + }, + message: () => + h(replayConfig, { + editIndex: id + }) + }).catch(null) + }) + element.on('play', (ceil) => { + const dataBase = useDataStore() + const globalStart = useGlobalStart() + const replayElement = ceil as Replay + const id = ceil.getId() + const item = dataBase.replays[id] + + if (replayElement.getIsPlaying()) { + // Stop replay + window.electron.ipcRenderer.invoke('ipc-replay-stop', id) + replayElement.setPlaying(false) + } else { + // Start replay + if (globalStart.value) { + window.electron.ipcRenderer.invoke('ipc-replay-start', id).then(() => { + replayElement.setPlaying(true) + }) + } + } + }) + return element + } else { + return e + } + } + addLink(from: string, to: string) { + if (this.getLink(from, to)) { + return + } + const link = new joint.shapes.standard.Link() + link.source({ + id: from, + anchor: { + name: 'bottom' + } + }) + link.target({ + id: to, + anchor: { + name: 'left' + } + }) + link.router('rightAngle') + // Add styling for better visibility based on theme + const linkColor = this.isDark.value ? '#FFFFFF' : '#000000' + link.attr({ + line: { + stroke: linkColor, + strokeWidth: 2, + targetMarker: { + type: 'path', + d: 'M 10 -5 0 0 10 5 Z', + fill: linkColor + } + } + }) + this.graph.addCell(link) + } + getLink(from: string, to: string) { + const links = this.graph.getLinks() + for (const link of links) { + if (link.source().id == from && link.target().id == to) { + return link + } + } + return undefined + } + removeLink(from: string, to: string) { + const link = this.getLink(from, to) + if (link) { + this.graph.removeCells([link]) + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/BButton.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/BButton.vue new file mode 100644 index 0000000..54dbb61 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/BButton.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/BLed.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/BLed.vue new file mode 100644 index 0000000..0782ca5 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/BLed.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/ChooseFile.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/ChooseFile.vue new file mode 100644 index 0000000..3d65342 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/ChooseFile.vue @@ -0,0 +1,61 @@ + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/DragBox.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/DragBox.vue new file mode 100644 index 0000000..e49504b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/DragBox.vue @@ -0,0 +1,74 @@ + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/DragTool.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/DragTool.vue new file mode 100644 index 0000000..c238af0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/DragTool.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/EventConfig.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/EventConfig.vue new file mode 100644 index 0000000..2fd91c9 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/EventConfig.vue @@ -0,0 +1,582 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FcDesigner.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FcDesigner.vue new file mode 100644 index 0000000..4e1de95 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FcDesigner.vue @@ -0,0 +1,2490 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FetchConfig.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FetchConfig.vue new file mode 100644 index 0000000..ad67de6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FetchConfig.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FieldInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FieldInput.vue new file mode 100644 index 0000000..1fcc1be --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FieldInput.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FnConfig.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FnConfig.vue new file mode 100644 index 0000000..54b3a67 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FnConfig.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FnEditor.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FnEditor.vue new file mode 100644 index 0000000..726bc2d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FnEditor.vue @@ -0,0 +1,271 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FnInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FnInput.vue new file mode 100644 index 0000000..7f231bc --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/FnInput.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/HtmlEditor.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/HtmlEditor.vue new file mode 100644 index 0000000..3b330e9 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/HtmlEditor.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/JsonPreview.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/JsonPreview.vue new file mode 100644 index 0000000..23de4a6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/JsonPreview.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/LocalImage.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/LocalImage.vue new file mode 100644 index 0000000..507375d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/LocalImage.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/PProgress.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/PProgress.vue new file mode 100644 index 0000000..e4367fc --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/PProgress.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/PropsInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/PropsInput.vue new file mode 100644 index 0000000..00e8a6b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/PropsInput.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Required.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Required.vue new file mode 100644 index 0000000..6bc6fd7 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Required.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Row.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Row.vue new file mode 100644 index 0000000..7a29e4a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Row.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Signal.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Signal.vue new file mode 100644 index 0000000..bd682cc --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Signal.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Struct.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Struct.vue new file mode 100644 index 0000000..9ff8e33 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Struct.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/StructEditor.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/StructEditor.vue new file mode 100644 index 0000000..096b722 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/StructEditor.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TText.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TText.vue new file mode 100644 index 0000000..0828054 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TText.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TableOptions.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TableOptions.vue new file mode 100644 index 0000000..06e725a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TableOptions.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TreeOptions.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TreeOptions.vue new file mode 100644 index 0000000..cdc7b5d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TreeOptions.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TypeSelect.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TypeSelect.vue new file mode 100644 index 0000000..8008bf4 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/TypeSelect.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Validate.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Validate.vue new file mode 100644 index 0000000..ccdd4aa --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Validate.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/ValueInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/ValueInput.vue new file mode 100644 index 0000000..d29399a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/ValueInput.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Variable.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Variable.vue new file mode 100644 index 0000000..9e9b2a0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Variable.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Warning.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Warning.vue new file mode 100644 index 0000000..1d21d9c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/Warning.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/grid/Grid.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/grid/Grid.vue new file mode 100644 index 0000000..0a46c36 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/grid/Grid.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/grid/GridView.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/grid/GridView.vue new file mode 100644 index 0000000..86ab826 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/grid/GridView.vue @@ -0,0 +1,338 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/language/LanguageConfig.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/language/LanguageConfig.vue new file mode 100644 index 0000000..f784c34 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/language/LanguageConfig.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/language/LanguageInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/language/LanguageInput.vue new file mode 100644 index 0000000..6519388 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/language/LanguageInput.vue @@ -0,0 +1,199 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/BorderInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/BorderInput.vue new file mode 100644 index 0000000..170ddb9 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/BorderInput.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/BoxSizeInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/BoxSizeInput.vue new file mode 100644 index 0000000..4635d16 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/BoxSizeInput.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/BoxSpaceInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/BoxSpaceInput.vue new file mode 100644 index 0000000..09205e6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/BoxSpaceInput.vue @@ -0,0 +1,327 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ColorInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ColorInput.vue new file mode 100644 index 0000000..3b74c0b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ColorInput.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ConfigItem.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ConfigItem.vue new file mode 100644 index 0000000..5c043b4 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ConfigItem.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/FontInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/FontInput.vue new file mode 100644 index 0000000..8971447 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/FontInput.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/RadiusInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/RadiusInput.vue new file mode 100644 index 0000000..41cbb2d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/RadiusInput.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ShadowContent.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ShadowContent.vue new file mode 100644 index 0000000..1c5e20a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ShadowContent.vue @@ -0,0 +1,326 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ShadowInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ShadowInput.vue new file mode 100644 index 0000000..2bfe9c6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/ShadowInput.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/SizeInput.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/SizeInput.vue new file mode 100644 index 0000000..049ce77 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/SizeInput.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/StyleConfig.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/StyleConfig.vue new file mode 100644 index 0000000..7a7c393 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/style/StyleConfig.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/table/Table.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/table/Table.vue new file mode 100644 index 0000000..abc5876 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/table/Table.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/table/TableView.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/table/TableView.vue new file mode 100644 index 0000000..d1d4542 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/table/TableView.vue @@ -0,0 +1,705 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/tableForm/TableForm.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/tableForm/TableForm.vue new file mode 100644 index 0000000..9748786 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/tableForm/TableForm.vue @@ -0,0 +1,415 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/tableForm/TableFormColumnView.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/tableForm/TableFormColumnView.vue new file mode 100644 index 0000000..54b5e70 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/tableForm/TableFormColumnView.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/tableForm/TableFormView.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/tableForm/TableFormView.vue new file mode 100644 index 0000000..9783663 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/components/tableForm/TableFormView.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/field.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/field.js new file mode 100644 index 0000000..527ae81 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/field.js @@ -0,0 +1,45 @@ +export default function field({t}) { + return [ + { + type: 'FieldInput', + field: 'field', + value: '', + title: t('form.field'), + warning: t('warning.field'), + }, { + type: 'LanguageInput', + field: 'title', + value: '', + title: t('form.title'), + }, { + type: 'LanguageInput', + field: 'info', + value: '', + title: t('form.info'), + }, { + type: 'SizeInput', + field: 'formCreateWrap>labelWidth', + value: '', + title: t('form.labelWidth'), + }, + { + type: 'Struct', + field: '_control', + name: 'control', + value: [], + title: t('form.control'), + warning: t('form.controlDocument', {doc: '' + t('form.document') + ''}), + props: { + defaultValue: [], + validate(val) { + if (!Array.isArray(val)) return false; + if (!val.length) return true; + return !val.some(({rule}) => { + return !Array.isArray(rule); + }); + } + } + }, + ]; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/form.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/form.js new file mode 100644 index 0000000..8cd6a13 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/form.js @@ -0,0 +1,46 @@ +import {localeOptions} from '../../utils'; + +export default function form({t}) { + return [ + { + type: 'input', + field: '>formName', + value: '', + title: t('form.formName'), + }, { + type: 'radio', + field: 'labelPosition', + value: 'left', + title: t('form.labelPosition'), + options: localeOptions(t, [ + {value: 'left', label: 'left'}, + {value: 'right', label: 'right'}, + {value: 'top', label: 'top'}, + ]) + }, { + type: 'radio', + field: 'size', + value: 'small', + title: t('form.size'), + options: localeOptions(t, [ + {value: 'large', label: 'large'}, + {value: 'default', label: 'default'}, + {value: 'small', label: 'small'}, + ]) + }, { + type: 'input', + field: 'labelSuffix', + value: '', + title: t('form.labelSuffix'), + style: { + width: '150px' + } + }, { + type: 'SizeInput', + field: 'labelWidth', + value: '125px', + title: t('form.labelWidth'), + }, + ]; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/style.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/style.js new file mode 100644 index 0000000..01eb475 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/style.js @@ -0,0 +1,27 @@ +export default function field({t}) { + return [ + // { + // type: 'input', + // title: 'ID', + // field: 'id', + // wrap: { + // labelWidth: '45px' + // } + // }, + // { + // type: 'input', + // title: 'Class', + // field: 'class', + // wrap: { + // labelWidth: '45px' + // } + // }, + { + type: 'StyleConfig', + field: 'style', + title: '', + value: {}, + } + ]; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/validate.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/validate.js new file mode 100644 index 0000000..f8c1eab --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/base/validate.js @@ -0,0 +1,15 @@ +export default function validate({t}) { + return [ + { + type: 'Required', + field: '$required', + title: t('validate.required') + }, + { + type: 'validate', + field: 'validate', + title: t('validate.rule'), + value: [] + }, + ]; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/index.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/index.js new file mode 100644 index 0000000..8d2a3f2 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/index.js @@ -0,0 +1,82 @@ +import radio from './rule/radio'; +import checkbox from './rule/checkbox'; +import input from './rule/input'; +import textarea from './rule/textarea'; +import password from './rule/password'; +import number from './rule/number'; +import select from './rule/select'; +import _switch from './rule/switch'; +import slider from './rule/slider'; +import time from './rule/time'; +import timeRange from './rule/timeRange'; +import date from './rule/date'; +import dateRange from './rule/dateRange'; +import rate from './rule/rate'; +import color from './rule/color'; +import row from './rule/row'; +import col from './rule/col'; +import tabPane from './rule/tabPane'; +import divider from './rule/divider'; +import cascader from './rule/cascader'; +import upload from './rule/upload'; +import transfer from './rule/transfer'; +import tree from './rule/tree'; +import alert from './rule/alert'; +import text from './rule/text'; +import space from './rule/space'; +import tabs from './rule/tabs'; +import button from './rule/button'; +import editor from './rule/editor'; +import group from './rule/group'; +import subForm from './rule/subForm'; +import card from './rule/card'; +import collapse from './rule/collapse'; +import collapseItem from './rule/collapseItem'; +import treeSelect from './rule/treeSelect'; +import tag from './rule/tag'; +import html from './rule/html'; +import table from './rule/table'; +import tableForm from './rule/tableForm'; +import tableFormColumn from './rule/tableFormColumn'; +import image from './rule/image'; +import gird from './rule/grid' +import progress from './rule/progress' +import message from './rule/message' +import led from './rule/led' + +const ruleList = [ + input,select,number,radio,_switch,led, + // subForm, + alert, button, text, html, divider, tag, image, + gird,tabs,tabPane,progress,slider,message + // row, table, tabs, space, card, collapse, + // col, tabPane, collapseItem, + +]; +/* + + input, textarea, password, number, radio, checkbox, select, _switch, rate, time, timeRange, slider, date, dateRange, color, cascader, upload, transfer, tree, treeSelect, + group, subForm, tableForm, tableFormColumn, + alert, button, text, html, divider, tag, image, + row, table, tabs, space, card, collapse, + col, tabPane, collapseItem, + +*/ +export default ruleList; + +export function defaultDrag(rule) { + return { + icon: rule.field ? 'icon-input' : 'icon-cell', + label: rule.field || rule.type, + name: '_', + mask: true, + handleBtn: ['delete'], + rule() { + return rule; + }, + props() { + return []; + } + } +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/menu.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/menu.js new file mode 100644 index 0000000..6408711 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/menu.js @@ -0,0 +1,25 @@ +export default function createMenu() { + return [ + { + name: 'main', + title: '基础组件', + list: [] + }, + // { + // name: 'subform', + // title: '子表单组件', + // list: [] + // }, + { + name: 'aide', + title: '辅助组件', + list: [] + }, + { + name: 'layout', + title: '布局组件', + list: [] + }, + ]; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/alert.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/alert.js new file mode 100644 index 0000000..1672869 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/alert.js @@ -0,0 +1,46 @@ +import {localeProps} from '../../utils'; + +const label = '提示'; +const name = 'elAlert'; + +export default { + menu: 'aide', + icon: 'icon-alert', + label, + name, + event: ['close'], + rule({t}) { + return { + type: name, + props: { + title: t('com.elAlert.name'), + description: t('com.elAlert.description'), + type: 'success', + effect: 'dark', + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'input', field: 'title'}, { + type: 'select', + field: 'type', + options: [{label: 'success', value: 'success'}, {label: 'warning', value: 'warning'}, { + label: 'info', + value: 'info' + }, {label: 'error', value: 'error'}] + }, {type: 'input', field: 'description'}, { + type: 'switch', + field: 'closable', + value: true + }, {type: 'switch', field: 'center', value: true}, { + type: 'input', + field: 'closeText' + }, {type: 'switch', field: 'showIcon'}, { + type: 'select', + field: 'effect', + options: [{label: 'light', value: 'light'}, {label: 'dark', value: 'dark'}] + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/button.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/button.js new file mode 100644 index 0000000..0f26676 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/button.js @@ -0,0 +1,68 @@ +import { localeOptions, localeProps } from '../../utils'; + +const label = '按钮'; +const name = 'BButton'; + +export default { + menu: 'aide', + icon: 'icon-button', + label, + name, + input: true, + event: ['change'], + rule({ t }) { + return { + type: name, + props: { + releaseValue: 0, + pressValue: 1, + }, + children: [t('com.BButton.name')], + }; + }, + props(_, { t }) { + return localeProps(t, name + '.props', [{ + type: 'input', + field: 'formCreateChild', + }, { + type: 'select', + field: 'size', + options: localeOptions(t, [{ label: 'large', value: 'large' }, { label: 'default', value: 'default' }, { + label: 'small', + value: 'small' + }]) + }, { + type: 'ValueInput', + field: 'pressValue', + title: 'Pressed Value' + }, + { + type: 'ValueInput', + field: 'releaseValue', + title: 'Released Value' + }, + { + type:'switch', + field:'toggleMode', + title:'Toogle Mode', + }, + { + type: 'select', + field: 'type', + options: [{ label: 'primary', value: 'primary' }, { + label: 'success', + value: 'success' + }, { label: 'warning', value: 'warning' }, { label: 'danger', value: 'danger' }, { + label: 'info', + value: 'info' + }] + }, { type: 'switch', field: 'plain' }, { + type: 'switch', + field: 'round' + }, { type: 'switch', field: 'circle' }, { + type: 'switch', + field: 'loading' + }, { type: 'switch', field: 'disabled' }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/card.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/card.js new file mode 100644 index 0000000..620754e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/card.js @@ -0,0 +1,41 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '卡片'; +const name = 'elCard'; + +export default { + menu: 'layout', + icon: 'icon-card', + label, + name, + drag: true, + inside: false, + mask: false, + rule({t}) { + return { + type: name, + props: { + header: t('com.elCard.props.header') + }, + style: { + width: '100%' + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'input', + field: 'header', + }, { + type: 'select', + field: 'shadow', + value: 'always', + options: localeOptions(t, [{label: 'always', value: 'always'}, {label: 'never', value: 'never'}, { + label: 'hover', + value: 'hover' + }]) + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/cascader.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/cascader.js new file mode 100644 index 0000000..eeb4de6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/cascader.js @@ -0,0 +1,122 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps, makeTreeOptions, makeTreeOptionsRule} from '../../utils/index'; + +const label = '级联选择器'; +const name = 'cascader'; + +export default { + menu: 'main', + icon: 'icon-cascader', + label, + name, + input: true, + event: ['change', 'expandChange', 'blur', 'focus', 'visibleChange', 'removeTag'], + validate: ['string', 'number', 'array'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.cascader.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: { + options: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 3) + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeTreeOptionsRule(t, 'props.options'), + ...[ + + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'clearable' + }, + { + type: 'input', + field: 'placeholder' + }, + { + type: 'Object', + field: 'props', + props: { + rule: localeProps(t, name + '.propsOpt', [{ + type: 'switch', + field: 'multiple' + }, { + type: 'select', + field: 'expandTrigger', + options: localeOptions(t, [{label: 'click', value: 'click'}, { + label: 'hover', + value: 'hover' + }]) + }, { + type: 'switch', + field: 'checkStrictly' + }, { + type: 'switch', + field: 'emitPath', + value: true + }, { + type: 'input', + field: 'value', + value: 'value' + }, { + type: 'input', + field: 'label', + value: 'label' + }, { + type: 'input', + field: 'children', + value: 'children' + }, { + type: 'input', + field: 'disabled', + value: 'disabled' + }, {type: 'input', field: 'leaf'}]) + } + }, + { + type: 'switch', + field: 'showAllLevels', + value: true + }, + { + type: 'switch', + field: 'collapseTags' + }, + { + type: 'switch', + field: 'collapseTagsTooltip' + }, + { + type: 'input', + field: 'separator' + }, + { + type: 'switch', + field: 'filterable' + }, + { + type: 'select', + field: 'tagType', + options: [ + {label: 'success', value: 'success'}, + {label: 'info', value: 'info'}, + {label: 'warning', value: 'warning'}, + {label: 'danger', value: 'danger'}, + ] + }, + ] + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/checkbox.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/checkbox.js new file mode 100644 index 0000000..5533633 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/checkbox.js @@ -0,0 +1,69 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeOptionsRule, makeTreeOptions} from '../../utils/index'; + +const label = '多选框'; +const name = 'checkbox'; + +export default { + menu: 'main', + icon: 'icon-checkbox', + label, + name, + input: true, + event: ['change'], + validate: ['array'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.checkbox.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: {}, + options: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 1) + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeOptionsRule(t, 'options'), + ...[ + { + type: 'switch', + field: 'disabled' + }, + {type: 'switch', field: 'input'}, + { + type: 'switch', + field: 'type', + props: {activeValue: 'button', inactiveValue: 'default'} + }, + { + field: 'min', + type: 'inputNumber', + props: { + min: 0 + } + }, + { + field: 'max', + type: 'inputNumber', + props: { + min: 0 + } + }, + { + type: 'ColorInput', + field: 'textColor' + }, + { + type: 'ColorInput', + field: 'fill' + } + ] + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/col.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/col.js new file mode 100644 index 0000000..306599c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/col.js @@ -0,0 +1,87 @@ +import {localeProps} from '../../utils'; + +const name = 'col'; + +const devices = { + xs: '<768px', + sm: '≥768px', + md: '≥992px', + lg: '≥1200px', + xl: '≥1920px', +}; + +export default { + name, + label: '格子', + drag: true, + dragBtn: false, + inside: true, + mask: false, + rule() { + return { + type: name, + props: {span: 12}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'slider', field: 'span', value: 12, props: {min: 0, max: 24}}, + {type: 'slider', field: 'offset', props: {min: 0, max: 24}}, + {type: 'slider', field: 'push', props: {min: 0, max: 24}}, + {type: 'slider', field: 'pull', props: {min: 0, max: 24}}, + { + type: 'ConfigItem', + props: { + label: t('props.reactive') + }, + children: [ + { + type: 'elTabs', + style: { + width: '100%' + }, + slot: 'append', + children: Object.keys(devices).map(k => { + return { + type: 'elTabPane', + props: { + label: devices[k] + }, + style: 'padding:0 10px;', + children: [ + { + type: 'slider', + field: k + '>span', + title: t('com.col.props.span'), + value: 12, + props: {min: 0, max: 24}, + }, + { + type: 'slider', + field: k + '>offset', + title: t('com.col.props.offset'), + props: {min: 0, max: 24}, + }, + { + type: 'slider', + field: k + '>push', + title: t('com.col.props.push'), + props: {min: 0, max: 24}, + }, + { + type: 'slider', + field: k + '>pull', + title: t('com.col.props.pull'), + props: {min: 0, max: 24}, + } + ] + }; + }) + } + ] + }, + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/collapse.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/collapse.js new file mode 100644 index 0000000..6af8cd5 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/collapse.js @@ -0,0 +1,31 @@ +import {localeProps} from '../../utils'; + +const label = '折叠面板'; +const name = 'elCollapse'; + +export default { + menu: 'layout', + icon: 'icon-collapse', + label, + name, + mask: false, + children: 'elCollapseItem', + event: ['change'], + rule() { + return { + type: name, + props: {}, + style: { + width: '100%', + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'accordion' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/collapseItem.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/collapseItem.js new file mode 100644 index 0000000..2b51f9b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/collapseItem.js @@ -0,0 +1,37 @@ +import {localeProps} from '../../utils'; + +const label = '面板'; +const name = 'elCollapseItem'; + +export default { + icon: 'icon-cell', + label, + name, + drag: true, + dragBtn: false, + inside: true, + mask: false, + rule({t}) { + return { + type: name, + props: { + title: t('com.elCollapseItem.name') + }, + style: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'input', + field: 'title', + }, { + type: 'input', + field: 'name', + }, { + type: 'switch', + field: 'disabled' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/color.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/color.js new file mode 100644 index 0000000..d3b9ec6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/color.js @@ -0,0 +1,54 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '颜色选择器'; +const name = 'colorPicker'; + +export default { + menu: 'main', + icon: 'icon-color', + label, + name, + input: true, + event: ['change', 'activeChange', 'focus', 'blur'], + validate: ['string'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.colorPicker.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'showAlpha' + }, + { + type: 'select', + field: 'colorFormat', + options: [{label: 'hsl', value: 'hsl'}, {label: 'hsv', value: 'hsv'}, { + label: 'hex', + value: 'hex' + }, {label: 'rgb', value: 'rgb'}] + }, + { + type: 'tableOptions', + field: 'predefine', + props: { + column: [{label: t('props.value'), key: 'value'}], + valueType: 'string' + } + }, + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/date.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/date.js new file mode 100644 index 0000000..7cc274d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/date.js @@ -0,0 +1,71 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '日期'; +const name = 'datePicker'; + +export default { + menu: 'main', + icon: 'icon-date', + label, + name, + input: true, + event: ['change', 'blur', 'focus', 'calendarChange', 'panelChange', 'visibleChange'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.datePicker.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'switch', field: 'readonly'}, { + type: 'switch', + field: 'disabled' + }, { + type: 'select', + field: 'type', + options: localeOptions(t, [{label: 'year', value: 'year'}, {label: 'month', value: 'month'}, { + label: 'date', + value: 'date' + }, {label: 'dates', value: 'dates'}, {label: 'week', value: 'week'}, { + label: 'datetime', + value: 'datetime' + }, {label: 'datetimerange', value: 'datetimerange'}, { + label: 'daterange', + value: 'daterange' + }, {label: 'monthrange', value: 'monthrange'}]) + }, { + type: 'switch', + field: 'clearable', + value: true + }, { + type: 'Struct', + field: 'pickerOptions', + props: {defaultValue: {}} + }, {type: 'switch', field: 'editable', value: true}, { + type: 'input', + field: 'placeholder' + }, { + type: 'input', + field: 'startPlaceholder' + }, {type: 'input', field: 'endPlaceholder'}, { + type: 'input', + field: 'format' + }, { + type: 'select', + field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }, {type: 'input', field: 'rangeSeparator'}, { + type: 'switch', + field: 'unlinkPanels' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/dateRange.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/dateRange.js new file mode 100644 index 0000000..b7397ac --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/dateRange.js @@ -0,0 +1,65 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '日期区间'; +const name = 'dateRange'; + +export default { + menu: 'main', + icon: 'icon-date-range', + label, + name, + input: true, + event: ['change', 'blur', 'focus', 'calendarChange', 'panelChange', 'visibleChange'], + rule({t}) { + return { + type: 'datePicker', + field: uniqueId(), + title: t('com.dateRange.name'), + info: '', + $required: false, + props: { + type: 'datetimerange', + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'datePicker.props', [{type: 'switch', field: 'readonly'}, { + type: 'switch', + field: 'disabled' + }, { + type: 'select', + field: 'type', + options: localeOptions(t, [ + {label: 'datetimerange', value: 'datetimerange'}, + {label: 'daterange', value: 'daterange'}, + {label: 'monthrange', value: 'monthrange'} + ]) + }, { + type: 'switch', + field: 'clearable', + value: true + }, { + type: 'Struct', + field: 'pickerOptions', + props: {defaultValue: {}} + }, {type: 'switch', field: 'editable', value: true}, { + type: 'input', + field: 'startPlaceholder' + }, {type: 'input', field: 'endPlaceholder'}, { + type: 'input', + field: 'format' + }, { + type: 'select', + field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }, {type: 'input', field: 'rangeSeparator'}, { + type: 'switch', + field: 'unlinkPanels' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/divider.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/divider.js new file mode 100644 index 0000000..424e9f1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/divider.js @@ -0,0 +1,32 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '分割线'; +const name = 'elDivider'; + +export default { + menu: 'aide', + icon: 'icon-divider', + label, + name, + rule({t}) { + return { + type: name, + props: {}, + children: [t('com.elDivider.name')], + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'input', + field: 'formCreateChild', + }, { + type: 'select', + field: 'contentPosition', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'right', value: 'right'}, { + label: 'center', + value: 'center' + }]) + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/editor.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/editor.js new file mode 100644 index 0000000..7b426bc --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/editor.js @@ -0,0 +1,32 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '富文本框'; +const name = 'fcEditor'; + +export default { + menu: 'main', + icon: 'icon-editor', + label, + name, + input: true, + event: ['change'], + validate: ['string'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.fcEditor.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/grid.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/grid.js new file mode 100644 index 0000000..8caa78b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/grid.js @@ -0,0 +1,38 @@ +import { localeProps } from '../../utils'; + +const label = 'Grid'; +const name = 'grid'; + +export default { + menu: 'layout', + icon: 'icon-table', + label, + name, + inside: false, + mask: false, + rule() { + return { + type: name, + props: { + rule: { + + layout: [], + row: 24, + rowHeight: 80, + margin: 10, + }, + + }, + children: [] + }; + }, + props(_, { t }) { + return localeProps(t, name + '.props', [ + { title: 'Row Number', type: 'number', field: 'rule>row', value: 24 }, + { title: 'Item Margin', type: 'number', field: 'rule>margin', value: 10 }, + { title: 'Row Height', type: 'number', field: 'rule>rowHeight', value: 80 }, + + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/group.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/group.js new file mode 100644 index 0000000..1a42055 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/group.js @@ -0,0 +1,54 @@ +import {localeProps} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '子表单'; +const name = 'group'; + +export default { + menu: 'subform', + icon: 'icon-subform', + label, + name, + inside: false, + drag: true, + dragBtn: true, + mask: false, + input: true, + event: ['change'], + subForm: 'array', + loadRule(rule) { + rule.children = rule.props.rule || []; + rule.type = 'FcRow'; + delete rule.props.rule; + }, + parseRule(rule) { + rule.props.rule = rule.children; + rule.type = 'group'; + delete rule.children; + delete rule.props.mode; + }, + rule({t}) { + return { + type: 'fcRow', + field: uniqueId(), + title: t('com.group.name'), + info: '', + $required: false, + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }, {type: 'switch', field: 'syncDisabled', value: true}, + {type: 'switch', field: 'button', value: true}, + {type: 'switch', field: 'sortBtn', value: true}, + {type: 'inputNumber', field: 'expand'}, + {type: 'inputNumber', field: 'min'}, + {type: 'inputNumber', field: 'max'}, + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/html.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/html.js new file mode 100644 index 0000000..a3b4dac --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/html.js @@ -0,0 +1,53 @@ +import {localeProps} from '../../utils'; + +const label = 'HTML'; +const name = 'html'; + +export default { + menu: 'aide', + icon: 'icon-html', + label, + name, + rule() { + return { + type: name, + title: '', + native: true, + attrs: { + innerHTML: '' + }, + style: { + display: 'block', + width: '100%', + }, + children: ['
\n' + + ' html html html html html html html html html\n' + + '
'], + }; + }, + watch: { + formCreateNative({value, rule}) { + if (value) { + rule.title = ''; + } + } + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', field: 'formCreateNative', props: { + activeValue: false, + inactiveValue: true, + }, + control: [{value: false, rule: ['formCreateTitle']}] + }, { + type: 'input', + field: 'formCreateTitle', + }, { + type: 'HtmlEditor', + field: 'formCreateChild', + } + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/image.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/image.js new file mode 100644 index 0000000..893ef8d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/image.js @@ -0,0 +1,32 @@ +import {localeProps} from '../../utils'; + +const label = '图片'; +const name = 'LocalImage'; + +export default { + menu: 'aide', + icon: 'icon-image', + label, + name, + rule() { + return { + type: name, + title: '', + style: { + width: '100px', + height: '100px', + }, + props: { + src: 'https://ecubus.oss-cn-chengdu.aliyuncs.com/img/logo256.png', + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'ChooseFile', + field: 'src', + } + ]); + } +}; diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/input.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/input.js new file mode 100644 index 0000000..57a2bb6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/input.js @@ -0,0 +1,63 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '输入框'; +const name = 'input'; + +export default { + menu: 'main', + icon: 'icon-input', + label, + name, + input: true, + event: ['blur', 'focus', 'change', 'input', 'clear'], + validate: ['string', 'url', 'email'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.input.name'), + info: '', + $required: false, + props: {} + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'readonly' + }, + { + type: 'select', + field: 'type', + options: localeOptions(t, [ + {label: 'text', value: 'text'}, + {label: 'number', value: 'number'}, + {label: 'time', value: 'time'}, + {label: 'date', value: 'date'}, + {label: 'month', value: 'month'}, + {label: 'datetime-local', value: 'datetime-local'}, + ]) + }, + { + type: 'inputNumber', + field: 'maxlength', + props: {min: 0} + }, + { + type: 'input', + field: 'placeholder' + }, + { + type: 'switch', + field: 'clearable' + }, + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/led.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/led.js new file mode 100644 index 0000000..e8db729 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/led.js @@ -0,0 +1,62 @@ +import { localeOptions, localeProps } from '../../utils'; +import ledIcon from '@iconify/icons-mdi/led-variant-outline' +import uniqueId from '@form-create/utils/lib/unique'; + +const label = 'Led'; +const name = 'Led'; + +export default { + menu: 'aide', + icon: ledIcon, + label, + name, + + event: ['change'], + rule({ t }) { + return { + field: uniqueId(), + type: name, + props: { + size: 50, + onColor: '#00ff00', + offColor: '#666666', + customSvg: '' + } + }; + }, + props(_, { t }) { + return localeProps(t, name + '.props', [ + { + type: 'input-number', + field: 'size', + title: 'Size', + props: { + min: 10, + + } + }, + { + type: 'color-picker', + field: 'onColor', + title: 'On Color', + value: '#00ff00' + }, + { + type: 'color-picker', + field: 'offColor', + title: 'Off Color', + value: '#666666' + }, + { + type: 'input', + field: 'customSvg', + title: 'Custom SVG', + props: { + type: 'textarea', + rows: 8, + placeholder: 'Paste ... source (empty = default icon)' + } + } + ]); + } +}; diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/message.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/message.js new file mode 100644 index 0000000..d911ee4 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/message.js @@ -0,0 +1,52 @@ +import {localeOptions, localeProps} from '../../utils'; +import msgIcon from '@iconify/icons-material-symbols/terminal' +const label = 'Message'; +const name = 'Message'; + +export default { + menu: 'aide', + icon: msgIcon, + label, + name, + rule({t}) { + return { + type: name, + title: '', + native: true, + props:{ + height:100, + + fields:['time','source','message'] + }, + style: { + width: '100%', + + }, + + }; + }, + + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'inputNumber', + field: 'height', + title:'Height' + }, + + + { + type: 'select', + field: 'fields', + props:{ + multiple:true, + }, + title:'Fields', + options: [{label: 'time', value: 'time'}, { + label: 'source', + value: 'source' + }, {label: 'message', value: 'message'}] + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/number.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/number.js new file mode 100644 index 0000000..c475358 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/number.js @@ -0,0 +1,50 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '计数器'; +const name = 'inputNumber'; + +export default { + menu: 'main', + icon: 'icon-number', + label, + name, + input: true, + event: ['blur', 'focus', 'change'], + validate: ['number', 'integer', 'float'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.inputNumber.name'), + info: '', + $required: false, + props: {} + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'switch', field: 'disabled'}, { + type: 'inputNumber', + field: 'min' + }, { + type: 'inputNumber', + field: 'max', + }, { + type: 'inputNumber', + title: 'precision', + field: 'precision', + }, {type: 'inputNumber', field: 'step', props: {min: 0}}, { + type: 'switch', + field: 'stepStrictly' + }, { + type: 'switch', + field: 'controls', + value: true + }, { + type: 'select', + field: 'controlsPosition', + options: localeOptions(t, [{label: 'default', value: ''}, {label: 'right', value: 'right'}]) + }, {type: 'input', field: 'placeholder'}]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/password.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/password.js new file mode 100644 index 0000000..efb83bf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/password.js @@ -0,0 +1,53 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '密码输入框'; +const name = 'password'; + +export default { + menu: 'main', + icon: 'icon-password', + label, + name, + input: true, + event: ['blur', 'focus', 'change', 'input', 'clear'], + validate: ['string'], + rule({t}) { + return { + type: 'input', + field: uniqueId(), + title: t('com.password.name'), + info: '', + $required: false, + props: { + type: 'password' + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'readonly' + }, + { + type: 'inputNumber', + field: 'maxlength', + props: {min: 0} + }, + { + type: 'input', + field: 'placeholder' + }, + { + type: 'switch', + field: 'clearable' + }, + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/progress.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/progress.js new file mode 100644 index 0000000..94ace20 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/progress.js @@ -0,0 +1,69 @@ +import { localeOptions, localeProps } from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = 'Progress'; +const name = 'xProgress'; + +export default { + menu: 'aide', + icon: 'icon-time-range', + label, + name, + rule({ t }) { + return { + type: name, + field: uniqueId(), + style: { + width: '100%', + + }, + props: { + + strokeWidth: 20, + textInside: true, + status: '', + showText: true, + color: '#409EFF', + } + + }; + }, + props(_, { t }) { + return localeProps(t, name + '.props', [ + + { + type: 'number', + field: 'strokeWidth', + title: 'Stroke Width' + }, + { + type: 'select', + field: 'type', + title: 'Type', + options: localeOptions(t, [ + { label: 'line', value: 'line' }, + { label: 'circle', value: 'circle' }, + { label: 'dashboard', value: 'dashboard' } + ]) + }, + + { + type: 'switch', + field: 'textInside', + title: 'Text Inside' + }, + { + type: 'switch', + field: 'showText', + title: 'Show Text' + }, + { + type: 'ColorPicker', + field: 'color', + title: 'Color' + }, + + + ]); + } +}; diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/radio.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/radio.js new file mode 100644 index 0000000..6c6596d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/radio.js @@ -0,0 +1,44 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeOptionsRule, makeTreeOptions} from '../../utils/index'; + +const label = '单选框'; +const name = 'radio'; + +export default { + menu: 'main', + icon: 'icon-radio', + label, + name, + input: true, + event: ['change'], + validate: ['string', 'number'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.radio.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: {}, + options: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 1) + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeOptionsRule(t, 'options'), + {type: 'switch', field: 'disabled'}, + {type: 'switch', field: 'input'}, + { + type: 'switch', + field: 'type', + props: {activeValue: 'button', inactiveValue: 'default'} + }, {type: 'ColorInput', field: 'textColor'}, { + type: 'ColorInput', + field: 'fill' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/rate.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/rate.js new file mode 100644 index 0000000..29e3bcb --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/rate.js @@ -0,0 +1,45 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '评分'; +const name = 'rate'; + +export default { + menu: 'main', + icon: 'icon-rate', + label, + name, + input: true, + event: ['change'], + validate: ['number'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.rate.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'inputNumber', field: 'max', props: {min: 0}}, { + type: 'switch', + field: 'disabled' + }, {type: 'switch', field: 'allowHalf'}, { + type: 'ColorInput', + field: 'voidColor' + }, {type: 'ColorInput', field: 'disabledVoidColor'}, { + type: 'input', + field: 'voidIconClass' + }, {type: 'input', field: 'disabledVoidIconClass'}, { + type: 'switch', + field: 'showScore' + }, {type: 'ColorInput', field: 'textColor'}, { + type: 'input', + field: 'scoreTemplate' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/row.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/row.js new file mode 100644 index 0000000..a891a91 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/row.js @@ -0,0 +1,47 @@ +import {localeProps} from '../../utils'; + +const label = '栅格布局'; +const name = 'fcRow'; + +export default { + menu: 'layout', + icon: 'icon-row', + label, + name, + mask: false, + children: 'col', + childrenLen: 2, + rule() { + return { + type: name, + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'inputNumber', + field: 'gutter', + props: {min: 0} + }, { + type: 'switch', + field: 'type', + props: {activeValue: 'flex', inactiveValue: 'default'} + }, { + type: 'select', + field: 'justify', + options: [{label: 'start', value: 'start'}, {label: 'end', value: 'end'}, { + label: 'center', + value: 'center' + }, {label: 'space-around', value: 'space-around'}, {label: 'space-between', value: 'space-between'}] + }, { + type: 'select', + field: 'align', + options: [{label: 'top', value: 'top'}, {label: 'middle', value: 'middle'}, { + label: 'bottom', + value: 'bottom' + }] + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/select.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/select.js new file mode 100644 index 0000000..b772b5b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/select.js @@ -0,0 +1,71 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {getInjectArg, localeProps, makeOptionsRule, makeTreeOptions} from '../../utils/index'; + +const label = '选择器'; +const name = 'select'; + +export default { + menu: 'main', + icon: 'icon-select', + label, + name, + input: true, + event: ['change', 'visibleChange', 'removeTag', 'clear', 'blur', 'focus'], + validate: ['string', 'number', 'array'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.select.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: {}, + options: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 1) + }; + }, + watch: { + multiple({rule}) { + rule.key = uniqueId(); + } + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeOptionsRule(t, 'options'), + {type: 'switch', field: 'multiple'}, { + type: 'switch', + field: 'disabled' + }, {type: 'switch', field: 'clearable'}, { + type: 'switch', + field: 'collapseTags' + }, { + type: 'inputNumber', + field: 'multipleLimit', + props: {min: 0} + }, {type: 'input', field: 'placeholder'}, { + type: 'switch', + field: 'filterable' + }, { + type: 'switch', + field: 'remote', + }, { + type: 'FnInput', + field: 'remoteMethod', + props: { + body: true, + fnx: true, + name: 'remoteMethod', + args: [getInjectArg(t)], + }, + }, {type: 'switch', field: 'allowCreate'}, { + type: 'input', + field: 'noMatchText' + }, {type: 'input', field: 'noDataText'}, { + type: 'switch', + field: 'reserveKeyword' + }, {type: 'switch', field: 'defaultFirstOption'}]) + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/slider.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/slider.js new file mode 100644 index 0000000..d78bdee --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/slider.js @@ -0,0 +1,54 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '滑块'; +const name = 'slider'; + +export default { + menu: 'main', + icon: 'icon-slider', + label, + name, + input: true, + event: ['change', 'input'], + validate: ['number', 'array'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.slider.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'switch', field: 'disabled'}, { + type: 'switch', + field: 'range' + }, { + type: 'inputNumber', + field: 'min', + props: {min: 0} + }, { + type: 'inputNumber', + field: 'max', + props: {min: 0}, + }, { + type: 'inputNumber', + field: 'step', + props: {min: 0}, + }, {type: 'switch', field: 'showInput'}, { + type: 'switch', + field: 'showInputControls', + value: true + }, {type: 'switch', field: 'showStops'}, { + type: 'switch', + field: 'vertical' + }, { + type: 'input', + field: 'height' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/space.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/space.js new file mode 100644 index 0000000..6ca46b8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/space.js @@ -0,0 +1,45 @@ +import {localeProps} from '../../utils'; + +const label = '间距'; +const name = 'space'; + +export default { + menu: 'layout', + icon: 'icon-space', + label, + name, + rule() { + return { + type: 'div', + wrap: { + show: false + }, + native: true, + style: { + width: '100%', + height: '20px', + }, + children: [] + }; + }, + props(_, {t}) { + return [ + { + type: 'object', + field: 'formCreateStyle', + native: true, + props: { + rule: localeProps(t, name + '.props', [ + { + type: 'input', + field: 'height', + title: 'height', + }, + ]) + } + } + + ]; + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/subForm.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/subForm.js new file mode 100644 index 0000000..218e9bc --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/subForm.js @@ -0,0 +1,48 @@ +import {localeProps} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '分组'; +const name = 'subForm'; + +export default { + menu: 'subform', + icon: 'icon-group', + label, + name, + inside: false, + drag: true, + dragBtn: true, + mask: false, + input: true, + subForm: 'object', + event: ['change'], + loadRule(rule) { + rule.children = rule.props.rule || []; + rule.type = 'FcRow'; + delete rule.props.rule; + }, + parseRule(rule) { + rule.props.rule = rule.children; + rule.type = 'subForm'; + delete rule.children; + }, + rule({t}) { + return { + type: 'fcRow', + field: uniqueId(), + title: t('com.subForm.name'), + info: '', + $required: false, + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }, {type: 'switch', field: 'syncDisabled', value: true}, + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/switch.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/switch.js new file mode 100644 index 0000000..54176ba --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/switch.js @@ -0,0 +1,47 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '开关'; +const name = 'switch'; + +export default { + menu: 'main', + icon: 'icon-switch', + label, + name, + input: true, + event: ['change'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.switch.name'), + info: '', + $required: false, + props: { + activeValue: true, + inactiveValue: false, + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }, { + type: 'inputNumber', + field: 'width', + props: {min: 0}, + }, {type: 'input', field: 'activeText'}, { + type: 'input', + field: 'inactiveText' + }, {type: 'ValueInput', field: 'activeValue'}, { + type: 'ValueInput', + field: 'inactiveValue' + }, {type: 'ColorInput', field: 'activeColor'}, { + type: 'ColorInput', + field: 'inactiveColor' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tabPane.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tabPane.js new file mode 100644 index 0000000..cd7081f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tabPane.js @@ -0,0 +1,30 @@ +import {localeProps} from '../../utils'; + +const label = '选项卡'; +const name = 'elTabPane'; + +export default { + label, + name, + inside: true, + drag: true, + dragBtn: false, + mask: false, + rule({t}) { + return { + type: name, + props: {label: t('com.elTabPane.name')}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'input', field: 'label'}, { + type: 'switch', + field: 'disabled' + }, {type: 'input', field: 'name'}, { + type: 'switch', + field: 'lazy' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/table.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/table.js new file mode 100644 index 0000000..4f20efb --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/table.js @@ -0,0 +1,36 @@ +import {localeProps} from '../../utils'; + +const label = '表格布局'; +const name = 'fcTable'; + +export default { + menu: 'layout', + icon: 'icon-table', + label, + name, + inside: false, + mask: false, + rule() { + return { + type: name, + props: { + rule: { + row: 3, + col: 4, + style: {}, + class: {}, + layout: [] + } + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'switch', field: 'border', value: true}, + {type: 'ColorInput', field: 'borderColor'}, + {type: 'input', field: 'borderWidth'}, + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tableForm.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tableForm.js new file mode 100644 index 0000000..b7c0b32 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tableForm.js @@ -0,0 +1,80 @@ +import unique from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '表格表单'; +const name = 'tableForm'; + +export default { + menu: 'subform', + icon: 'icon-table-form', + label, + name, + mask: false, + input: true, + subForm: 'array', + event: ['change', 'add', 'delete'], + languageKey: ['add', 'operation', 'dataEmpty'], + children: 'tableFormColumn', + loadRule(rule) { + if (!rule.props) rule.props = {}; + const columns = rule.props.columns || []; + rule.children = columns.map(column => { + return { + type: 'tableFormColumn', + _fc_drag_tag: 'tableFormColumn', + props: { + label: column.label, + required: column.required || false, + width: column.style.width || '', + color: column.style.color || '', + }, + children: column.rule || [] + } + }); + delete rule.props.columns; + }, + parseRule(rule) { + const children = rule.children || []; + rule.props.columns = children.map(column => { + return { + label: column.props.label, + required: column.props.required, + style: { + width: column.props.width, + color: column.props.color, + }, + rule: column.children || [] + }; + }) + rule.children = []; + }, + rule({t}) { + return { + type: name, + field: unique(), + title: t('com.tableForm.name'), + info: '', + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'filterEmptyColumn', + value: true, + }, + { + type: 'inputNumber', + field: 'max', + props: {min: 0} + }, + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tableFormColumn.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tableFormColumn.js new file mode 100644 index 0000000..48ed2f6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tableFormColumn.js @@ -0,0 +1,44 @@ +import {localeProps} from '../../utils'; + +const name = 'tableFormColumn'; + +export default { + icon: 'icon-cell', + name, + aide: true, + drag: true, + dragBtn: false, + mask: false, + style: false, + rule({t}) { + return { + type: name, + props: { + label: t('com.tableFormColumn.label'), + width: 'auto' + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'label', + }, + { + type: 'switch', + field: 'required', + }, + { + type: 'input', + field: 'width', + }, + { + type: 'ColorInput', + field: 'color', + } + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tabs.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tabs.js new file mode 100644 index 0000000..70216e1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tabs.js @@ -0,0 +1,39 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '标签页'; +const name = 'elTabs'; + +export default { + menu: 'layout', + icon: 'icon-tab', + label, + name, + mask: false, + event: ['tabClick', 'tabChange', 'tabRemove', 'tabAdd', 'edit'], + children: 'elTabPane', + rule() { + return { + type: name, + style: {width: '100%'}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'select', + field: 'type', + options: [{ + label: 'card', + value: 'card' + }, {label: 'border-card', value: 'border-card'}] + }, {type: 'switch', field: 'closable'}, { + type: 'select', + field: 'tabPosition', + options: localeOptions(t, [{label: 'top', value: 'top'}, {label: 'right', value: 'right'}, { + label: 'left', + value: 'left' + }]) + }, {type: 'switch', field: 'stretch'}]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tag.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tag.js new file mode 100644 index 0000000..634751e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tag.js @@ -0,0 +1,80 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '标签'; +const name = 'elTag'; + +export default { + menu: 'aide', + icon: 'icon-tag', + label, + name, + mask: true, + event: ['click', 'close'], + rule({t}) { + return { + type: name, + title: '', + native: true, + children: [t('com.elTag.name')] + }; + }, + watch: { + formCreateNative({value, rule}) { + if (value) { + rule.title = ''; + } + } + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', field: 'formCreateNative', props: { + activeValue: false, + inactiveValue: true, + }, + control: [{value: false, rule: ['formCreateTitle']}] + }, + { + type: 'input', + field: 'formCreateTitle', + }, { + type: 'input', + field: 'formCreateChild' + }, { + type: 'select', + field: 'type', + options: [{label: 'primary', value: 'primary'}, { + label: 'success', + value: 'success' + }, {label: 'warning', value: 'warning'}, {label: 'danger', value: 'danger'}, { + label: 'info', + value: 'info' + }] + }, { + type: 'select', + field: 'size', + options: localeOptions(t, [{label: 'large', value: 'large'}, { + label: 'default', + value: 'default' + }, {label: 'small', value: 'small'}]) + }, { + type: 'select', + field: 'effect', + options: [{label: 'dark', value: 'dark'}, { + label: 'light', + value: 'light' + }, {label: 'plain', value: 'plain'}] + }, { + type: 'switch', field: 'closable' + }, { + type: 'switch', field: 'disableTransitions' + }, { + type: 'switch', field: 'hit' + }, { + type: 'switch', field: 'round' + }, { + type: 'ColorInput', field: 'color' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/text.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/text.js new file mode 100644 index 0000000..a19e781 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/text.js @@ -0,0 +1,39 @@ +import {localeProps} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '文字'; +const name = 'text'; + +export default { + menu: 'aide', + icon: 'icon-span', + label, + name, + rule({t}) { + return { + type: 'TText', + title: '', + field:uniqueId(), + style: { + whiteSpace: 'pre-line', + width: '100%', + }, + + }; + }, + + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + title:'Content', + type: 'input', + field: 'initValue', + value:'Text', + props: { + type: 'textarea' + } + } + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/textarea.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/textarea.js new file mode 100644 index 0000000..dc495b9 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/textarea.js @@ -0,0 +1,64 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '多行输入框'; +const name = 'textarea'; + +export default { + menu: 'main', + icon: 'icon-textarea', + label, + name, + input: true, + event: ['blur', 'focus', 'change', 'input'], + validate: ['string'], + rule({t}) { + return { + type: 'input', + field: uniqueId(), + title: t('com.textarea.name'), + info: '', + $required: false, + props: { + type: 'textarea' + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'readonly' + }, + { + type: 'inputNumber', + field: 'maxlength', + props: {min: 0} + }, + { + type: 'switch', + field: 'showWordLimit' + }, + { + type: 'input', + field: 'placeholder' + }, + { + type: 'inputNumber', + field: 'rows', + props: { + min: 0 + } + }, + { + type: 'switch', + field: 'autosize' + }, + ]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/time.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/time.js new file mode 100644 index 0000000..f19efa3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/time.js @@ -0,0 +1,63 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '时间'; +const name = 'timePicker'; + +export default { + menu: 'main', + icon: 'icon-time', + label, + name, + input: true, + event: ['change', 'blur', 'focus', 'visibleChange'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.timePicker.name'), + info: '', + $required: false, + props: {}, + }; + }, + watch: { + isRange({rule}) { + rule.key = uniqueId(); + } + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'switch', field: 'readonly'}, { + type: 'switch', + field: 'disabled' + }, { + type: 'switch', + field: 'isRange' + }, { + type: 'switch', + field: 'clearable', + value: true + }, { + type: 'Struct', + field: 'pickerOptions', + props: {defaultValue: {}} + }, {type: 'switch', field: 'editable', value: true}, { + type: 'input', + field: 'placeholder' + }, { + type: 'input', + field: 'startPlaceholder' + }, {type: 'input', field: 'endPlaceholder'}, { + type: 'switch', + field: 'arrowControl' + }, { + type: 'select', + field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/timeRange.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/timeRange.js new file mode 100644 index 0000000..a8a03c1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/timeRange.js @@ -0,0 +1,54 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '时间区间'; +const name = 'timeRange'; + +export default { + menu: 'main', + icon: 'icon-time-range', + label, + name, + input: true, + event: ['change', 'blur', 'focus', 'visibleChange'], + rule({t}) { + return { + type: 'timePicker', + field: uniqueId(), + title: t('com.timeRange.name'), + info: '', + $required: false, + props: { + isRange: true, + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'timePicker.props', [{type: 'switch', field: 'readonly'}, { + type: 'switch', + field: 'disabled' + }, { + type: 'switch', + field: 'clearable', + value: true + }, { + type: 'Struct', + field: 'pickerOptions', + props: {defaultValue: {}} + }, {type: 'switch', field: 'editable', value: true}, { + type: 'input', + field: 'startPlaceholder' + }, {type: 'input', field: 'endPlaceholder'}, { + type: 'switch', + field: 'arrowControl' + }, { + type: 'select', + field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/transfer.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/transfer.js new file mode 100644 index 0000000..66d0681 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/transfer.js @@ -0,0 +1,60 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeTreeOptions, makeTreeOptionsRule} from '../../utils'; + +const label = '穿梭框'; +const name = 'elTransfer'; + +export default { + menu: 'main', + icon: 'icon-transfer', + label, + name, + input: true, + event: ['change', 'leftCheckChange', 'rightCheckChange'], + validate: ['string', 'number', 'array'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.elTransfer.name'), + info: '', + $required: false, + props: { + data: makeTreeOptions(t('props.option'), {label: 'label', value: 'key'}, 1) + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeTreeOptionsRule(t, 'props.data', 'label', 'key'), + {type: 'switch', field: 'filterable'}, { + type: 'input', + field: 'filterPlaceholder' + }, { + type: 'select', + field: 'targetOrder', + warning: t('com.elTransfer.props.targetOrderInfo'), + options: [{label: 'original', value: 'original'}, { + label: 'push', + value: 'push' + }, {label: 'unshift', value: 'unshift'}] + }, { + type: 'TableOptions', + field: 'titles', + props: { + column: [{label: t('props.value'), key: 'value'}], + valueType: 'string', + max: 2, + } + }, { + type: 'TableOptions', + field: 'buttonTexts', + props: { + column: [{label: t('props.value'), key: 'value'}], + valueType: 'string', + max: 2, + } + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tree.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tree.js new file mode 100644 index 0000000..b83fa83 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/tree.js @@ -0,0 +1,71 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeTreeOptions, makeTreeOptionsRule} from '../../utils/index'; + +const label = '树形控件'; +const name = 'tree'; + +export default { + menu: 'main', + icon: 'icon-tree', + label, + name, + input: true, + event: ['nodeClick', 'nodeContextmenu', 'checkChange', 'check', 'currentChange', 'nodeExpand', 'nodeCollapse', 'nodeDragStart', 'nodeDragEnter', 'nodeDragLeave', 'nodeDragOver', 'nodeDragEnd', 'nodeDrop'], + validate: ['string', 'number', 'array'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.tree.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: { + props: { + label: 'label', + }, + showCheckbox: true, + nodeKey: 'id', + data: makeTreeOptions(t('props.option'), {label: 'label', value: 'id'}, 3), + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeTreeOptionsRule(t, 'props.data', 'label', 'id'), + {type: 'input', field: 'emptyText'}, { + type: 'TableOptions', + field: 'props', + props: { + column: [{label: t('props.key'), key: 'label'}, {label: t('props.value'), key: 'value'}], + valueType: 'object' + } + }, { + type: 'switch', + field: 'renderAfterExpand', + value: true + }, { + type: 'switch', + field: 'defaultExpandAll', + }, { + type: 'switch', + field: 'expandOnClickNode', + value: true + }, { + type: 'switch', + field: 'checkOnClickNode' + }, {type: 'switch', field: 'autoExpandParent', value: true}, { + type: 'switch', + field: 'checkStrictly' + }, {type: 'switch', field: 'accordion'}, { + type: 'inputNumber', + field: 'indent' + }, { + type: 'input', + field: 'nodeKey' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/treeSelect.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/treeSelect.js new file mode 100644 index 0000000..0fdf6a3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/treeSelect.js @@ -0,0 +1,78 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeTreeOptions, makeTreeOptionsRule} from '../../utils/index'; + +const label = '树形选择'; +const name = 'elTreeSelect'; + +export default { + menu: 'main', + icon: 'icon-tree-select', + label, + name, + input: true, + event: ['change', 'visibleChange', 'removeTag', 'clear', 'blur', 'focus'], + validate: ['string', 'number', 'array'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.elTreeSelect.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: { + nodeKey: 'value', + showCheckbox: true, + data: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 3), + }, + }; + }, + watch: { + multiple({rule}) { + rule.key = uniqueId(); + } + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeTreeOptionsRule(t, 'props.data', 'label', 'value'), + {type: 'switch', field: 'multiple'}, { + type: 'switch', + field: 'disabled' + }, {type: 'switch', field: 'clearable'}, { + type: 'switch', + field: 'collapseTags' + }, { + type: 'inputNumber', + field: 'multipleLimit', + props: {min: 0} + }, {type: 'input', field: 'placeholder'}, + { + type: 'TableOptions', + field: 'props', + props: { + column: [{label: t('props.key'), key: 'label'}, {label: t('props.value'), key: 'value'}], + valueType: 'object' + } + }, { + type: 'switch', + field: 'renderAfterExpand', + value: true + }, { + type: 'switch', + field: 'defaultExpandAll', + }, { + type: 'switch', + field: 'expandOnClickNode', + value: true + }, { + type: 'switch', + field: 'checkOnClickNode' + }, { + type: 'input', + field: 'nodeKey' + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/upload.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/upload.js new file mode 100644 index 0000000..05b39ec --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/config/rule/upload.js @@ -0,0 +1,99 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {getInjectArg, localeOptions, localeProps} from '../../utils'; + +const label = '上传'; +const name = 'upload'; + +export default { + menu: 'main', + icon: 'icon-upload', + label, + name, + input: true, + event: ['change', 'remove', 'preview', 'error', 'progress', 'exceed'], + languageKey: ['clickToUpload'], + validate: ['array'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.upload.name'), + info: '', + $required: false, + props: { + action: '/', + onSuccess: new Function('res', 'file', 'file.url = res.data.url;') + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }, { + type: 'select', + field: 'listType', + options: localeOptions(t, [{label: 'text', value: 'text'}, { + label: 'picture', + value: 'picture' + }, { + label: 'picture-card', + value: 'picture-card' + }]), + }, {type: 'switch', field: 'multiple'}, { + type: 'input', + field: 'action' + }, { + type: 'FnInput', + field: 'beforeUpload', + props: { + args: ['file'], + name: 'beforeUpload', + } + }, { + type: 'FnInput', + field: 'beforeRemove', + props: { + body: true, + button: true, + fnx: true, + args: [getInjectArg(t)], + name: 'beforeRemove', + } + }, { + type: 'FnInput', + field: 'onSuccess', + warning: t('com.upload.info'), + props: { + args: ['res', 'file'], + name: 'onSuccess', + } + }, { + type: 'TableOptions', + field: 'headers', + props: { + column: [{label: t('props.key'), key: 'label'}, {label: t('props.value'), key: 'value'}], + valueType: 'object' + } + }, { + type: 'TableOptions', + field: 'data', + props: { + column: [{label: t('props.key'), key: 'label'}, {label: t('props.value'), key: 'value'}], + valueType: 'object' + } + }, {type: 'input', field: 'name'}, { + type: 'switch', + field: 'withCredentials' + }, {type: 'input', field: 'accept'}, { + type: 'switch', + field: 'autoUpload', + value: true + }, { + type: 'inputNumber', + field: 'limit', + props: {min: 0}, + }]); + } +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/index.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/index.js new file mode 100644 index 0000000..91c800e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/index.js @@ -0,0 +1,156 @@ +import FcDesigner from './components/FcDesigner.vue'; +import DragTool from './components/DragTool.vue'; +import Struct from './components/Struct.vue'; +import Signal from './components/Signal.vue'; +import ChooseFile from './components/ChooseFile.vue'; +import Variable from './components/Variable.vue'; +import Row from './components/Row.vue'; +import HtmlEditor from './components/HtmlEditor.vue'; +import FnEditor from './components/FnEditor.vue'; +import FnInput from './components/FnInput.vue'; +import FetchConfig from './components/FetchConfig.vue'; +import ConfigItem from './components/style/ConfigItem.vue'; +import FieldInput from './components/FieldInput.vue'; +import EventConfig from './components/EventConfig.vue'; +import FnConfig from './components/FnConfig.vue'; +import TableView from './components/table/TableView.vue'; +import Table from './components/table/Table.vue'; +import Validate from './components/Validate.vue'; +import DragBox from './components/DragBox.vue'; +import Required from './components/Required.vue'; +import TableOptions from './components/TableOptions.vue'; +import TreeOptions from './components/TreeOptions.vue'; +import TableFormView from './components/tableForm/TableFormView.vue'; +import TableForm from './components/tableForm/TableForm.vue'; +import TableFormColumnView from './components/tableForm/TableFormColumnView.vue'; +import SizeInput from './components/style/SizeInput.vue'; +import ColorInput from './components/style/ColorInput.vue'; +import StyleConfig from './components/style/StyleConfig.vue'; +import LanguageInput from './components/language/LanguageInput.vue'; +import ValueInput from './components/ValueInput.vue'; +import LocalImage from './components/LocalImage.vue'; +import formCreate, {designerForm} from './utils/form'; +// import FcEditor from '@form-create/component-wangeditor'; +import draggable from 'vuedraggable/src/vuedraggable'; +import Grid from './components/grid/Grid.vue'; +import GridView from './components/grid/GridView.vue'; +import BButton from './components/BButton.vue'; +import TText from './components/TText.vue'; +import Message from '../../message.vue' +import Led from './components/BLed.vue' +import { + compareVersion, + copyTextToClipboard, + getInjectArg, + localeOptions, + localeProps, + makeOptionsRule, + makeRequiredRule, + makeTreeOptions, + makeTreeOptionsRule, + toJSON +} from './utils/index'; +import globalUseLocale, {t} from './utils/locale'; +import './style/index.css'; +import './style/icon.css'; +import './utils/highlight/style.css'; + +import PProgress from './components/PProgress.vue' + +const addComponent = (id, component, previewComponent) => { + designerForm.component(id, previewComponent || component); + formCreate.component(id, component); +} +addComponent('xProgress',PProgress) +addComponent('TText',TText) +addComponent('Message',Message) +addComponent('Led',Led) +designerForm.component('draggable', draggable); +designerForm.component('DragTool', DragTool); +designerForm.component('DragBox', DragBox); +designerForm.component('Validate', Validate); +designerForm.component('Struct', Struct); +designerForm.component('Signal', Signal); +designerForm.component('Variable', Variable); +designerForm.component('ChooseFile', ChooseFile); +designerForm.component('HtmlEditor', HtmlEditor); +designerForm.component('FetchConfig', FetchConfig); +designerForm.component('FnEditor', FnEditor); +designerForm.component('FnInput', FnInput); +designerForm.component('Required', Required); +designerForm.component('TableOptions', TableOptions); +designerForm.component('TreeOptions', TreeOptions); +designerForm.component('TableFormColumn', TableFormColumnView); +designerForm.component('EventConfig', EventConfig); +designerForm.component('ColorInput', ColorInput); +designerForm.component('SizeInput', SizeInput); +designerForm.component('StyleConfig', StyleConfig); +designerForm.component('LanguageInput', LanguageInput); +designerForm.component('ConfigItem', ConfigItem); +designerForm.component('FieldInput', FieldInput); +designerForm.component('FnConfig', FnConfig); +designerForm.component('FcRow', Row); +designerForm.component('ValueInput', ValueInput); +designerForm.component('LocalImage', LocalImage); +// addComponent('FcEditor', FcEditor); +// addComponent('TableForm', TableForm, TableFormView); +// addComponent('FcTable', Table, TableView); +addComponent('Grid',Grid,GridView) +addComponent('BButton',BButton) + +formCreate.component('LocalImage',LocalImage) +const install = function (Vue) { + Vue.component('FcDesigner', FcDesigner); +}; + +FcDesigner.install = install; +FcDesigner.makeOptionsRule = makeOptionsRule; +FcDesigner.copyTextToClipboard = copyTextToClipboard; +FcDesigner.getInjectArg = getInjectArg; +FcDesigner.localeOptions = localeOptions; +FcDesigner.localeProps = localeProps; +FcDesigner.makeRequiredRule = makeRequiredRule; +FcDesigner.makeTreeOptions = makeTreeOptions; +FcDesigner.makeTreeOptionsRule = makeTreeOptionsRule; +FcDesigner.toJSON = toJSON; +FcDesigner.formCreate = formCreate; +FcDesigner.designerForm = designerForm; +FcDesigner.component = addComponent; +FcDesigner.useLocale = globalUseLocale; +FcDesigner.t = t; + +FcDesigner.utils = { + copyTextToClipboard, + getInjectArg, + localeOptions, + localeProps, + makeOptionsRule, + makeRequiredRule, + makeTreeOptions, + makeTreeOptionsRule, + toJSON +} + +const minVersion = '3.2.18'; + +if (compareVersion(minVersion, formCreate.version) === 1) { + console.warn('Please use FormCreate version ' + minVersion + ' or greater, see https://github.com/xaboy/form-create.'); +} + +export default FcDesigner; + +export { + formCreate, + designerForm, + install, + copyTextToClipboard, + getInjectArg, + localeOptions, + localeProps, + makeOptionsRule, + makeRequiredRule, + makeTreeOptions, + makeTreeOptionsRule, + toJSON +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/locale/en.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/locale/en.js new file mode 100644 index 0000000..fd3a7c1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/locale/en.js @@ -0,0 +1,883 @@ + + +const En = { + name: 'en', + form: { + field: 'Field', + title: 'Title', + info: 'Info', + control: 'Control', + labelPosition: 'Label position', + labelStyle: 'Label style', + labelSuffix: 'Label suffix', + size: 'Panel size', + event: 'Panel event', + labelWidth: 'Label width', + hideRequiredAsterisk: 'Hide the red asterisk next to the label of a required field', + showMessage: 'Display verification error message', + inlineMessage: 'Display validation information inline', + submitBtn: 'Whether to display the form submit button', + resetBtn: 'Whether to display the form reset button', + appendChild: 'Insert child', + formMode: 'Panel mode', + formName: 'Panel name', + componentMode: 'Component', + htmlMode: 'HTML', + document: 'Document', + controlDocument: 'Need more detailed configuration methods? Please view {doc}', + onSubmit: 'Triggered when panel is submitted', + onReset: 'Triggered after panel is reset', + onCreated: 'Triggered after the panel component is initialized', + onMounted: 'Triggered after the panel component is mounted', + onReload: 'Triggered after the panel rendering rule is reloaded', + onChange: 'Triggered when the component value changes', + beforeFetch: 'Triggered before remote data request is sent', + }, + warning: { + name: 'Unique identifier for the component, used to access and modify its configuration rules.', + field: 'Field name for binding data to the component. Must start with a letter for proper recognition.', + fetch: 'Loads remote data through requests, updating the component based on the returned result.', + fetchQuery: 'Defines GET parameters for requests, passed via the URL.', + fetchData: 'Defines POST parameters for requests, passed in the request body.', + fetchDataType: 'Selects the data type for the request body to ensure correct format.', + fetchParse: 'Processes the response data after the request and converts it into the required structure.', + language: 'Manages multilingual data, allowing easy language switching for content display.', + }, + computed: { + fieldUsed: '[{label}] Is used in the calculation formula, please modify the corresponding formula first', + fieldExist: '[{label}] Field already exists', + fieldEmpty: 'Field is required', + fieldChar: 'Field must begin with a letter', + }, + validate: { + type: 'Type', + typePlaceholder: 'Please select', + trigger: 'Trigger', + mode: 'Verification method', + modes: { + required: 'required', + pattern: 'pattern', + validator: 'validator', + min: 'min', + max: 'max', + len: 'length', + }, + types: { + string: 'String', + boolean: 'Boolean', + array: 'Multiple', + number: 'Number', + integer: 'Integer', + float: 'Float', + object: 'Collection', + date: 'Date', + url: 'Url', + email: 'Email', + }, + message: 'Error', + auto: 'Automatic', + autoRequired: 'Please enter {title}', + autoMode: 'Please enter the correct {title}', + requiredPlaceholder: 'Please enter', + required: 'Is it required', + rule: 'Validation', + }, + tableOptions: { + handle: 'Operation', + add: 'Add', + empty1: 'Click the lower right corner', + empty2: 'Button to add a column', + rmCol: 'Delete current column', + rmRow: 'Delete current row', + splitRow: 'Split into rows', + splitCol: 'Split into columns', + mergeBottom: 'Merge downward', + mergeRight: 'Merge right', + addTop: 'Add top column', + addBottom: 'Add the following', + addLeft: 'Add left column', + addRight: 'Add right column', + keyValue: 'key-value', + }, + struct: { + title: 'Edit', + only: '[{label}] Only one allowed to be added', + errorMsg: 'The input content is syntactically incorrect', + configured: 'Configured', + }, + signal:{ + title: 'Attach Signal', + }, + variable:{ + title: 'Attach Variable', + }, + event: { + title: 'Edit', + create: 'Create', + list: 'List', + placeholder: 'Please enter the name of the event', + saveMsg: 'Please save the event currently being edited', + type: 'Type', + info: 'Info', + label: 'Field', + inject: { + api: 'API of current form', + rule: 'Generate rules for the current form', + self: 'Component generation rule', + option: 'Panel configuration', + args: 'Original parameters of event', + } + }, + eventInfo: { + blur: 'Triggered when focus is lost', + focus: 'Triggered when focus is obtained', + change: 'Triggered when the binding value changes', + input: 'Trigger when value changes', + clear: 'Triggered when the clear button is clicked', + close: 'Triggered when the component is closed', + click: 'Fires when the component is clicked', + add: 'Trigger when added', + delete: 'Triggered when deleted', + visibleChange: 'Triggered when the drop-down box appears/hides', + calendarChange: 'Triggered when the selected date in the calendar changes', + panelChange: 'Fires when the date panel changes', + open: 'Triggered when opening', + opened: 'Triggered when opening animation ends', + closed: 'Triggered when closing animation ends', + openAutoFocus: 'Triggered when entering focus on content', + closeAutoFocus: 'Triggered when entering focus from content', + submit: 'Triggered when submitting table', + confirm: 'Triggered when clicking confirm', + validateFail: 'Triggered when table verification fails', + hook_load: 'Triggered after component rules are loaded', + hook_mounted: 'Triggered after component is mounted', + hook_deleted: 'Triggered after component rules are removed', + hook_watch: 'Triggered after component rules change', + hook_value: 'Triggered after component value changes', + hook_hidden: 'Triggered after component display status changes', + }, + fetch: { + title: 'Set data', + create: 'Create data', + config: 'Request', + action: 'Action', + actionRequired: 'Please enter the correct link', + placeholder: 'Please enter the name of the data source', + method: 'Method', + data: 'Attached', + dataType: 'DataType', + headers: 'Headers', + query: 'Query', + parse: 'Processing', + response: 'Data returned by the interface', + onError: 'onError', + remote: 'Remote', + static: 'Static', + optionsType: { + fetch: 'Fetch', + struct: 'Static', + } + }, + style: { + width: 'Width', + height: 'Height', + color: 'Color', + backgroundColor: 'Background color', + margin: 'Margin', + padding: 'Padding', + borderRadius: 'Border radius', + border: 'Border', + solid: 'Solid', + dashed: 'Dashed', + dotted: 'Dotted', + double: 'Double', + opacity: 'Opacity', + scale: 'Scale', + minWidth: 'Min Width', + minHeight: 'Min Height', + maxWidth: 'Max Width', + maxHeight: 'Max Height', + overflow: { + name: 'Overflow', + visible: 'Visible', + hidden: 'Hidden', + scroll: 'Scroll', + auto: 'Auto scroll after overflow', + }, + shadow: { + name: 'Shadow', + x: 'x-axis offset', + y: 'y-axis offset', + vague: 'blurred radius', + extend: 'diffusion radius', + inset: 'inward', + external: 'outward', + mode: 'Mode', + classic: 'Classic', + flat: 'Flat', + solid: 'Stereoscopic', + }, + font: { + name: 'Font', + size: 'Size', + align: 'Align', + height: 'line-height', + spacing: 'letter-spacing', + preview: 'Preview', + }, + decoration: { + name: 'Decoration', + underline: 'underline', + 'line-through': 'line-through', + overline: 'overline', + }, + weight: { + name: 'font-weight', + 300: 'Fine', + 400: 'Default', + 500: 'Medium', + 700: 'Bold', + } + }, + designer: { + component: 'Component', + id: 'Unique id', + name: 'Serial number', + type: 'Type', + form: 'Panel', + json: 'Rule', + style: 'Style', + rule: 'Basis', + advanced: 'Advanced', + props: 'Props', + customProps: 'Custom props', + validate: 'Validate', + event: 'Event', + clearWarn: 'It cannot be restored after clearing it. Are you sure you want to clear it? ', + childEmpty: 'Click the \\e789 button in the lower right corner to add a column', + dragEmpty: 'Drag the components from the list on the left here', + unload: 'Are you sure you want to leave the current page?', + comList: 'Component', + }, + language: { + name: 'Language', + add: 'Add', + batchRemove: 'Batch Deletion', + select: 'Select language', + }, + menu: { + main: 'Basic', + aide: 'Auxiliary', + layout: 'Layout', + component: 'Component', + subform: 'Subform', + tree: 'Structure' + }, + props: { + disabled: 'disabled', + time: 'time', + size: 'Size', + email: 'email', + number: 'number', + globalData: 'Global data', + mobile: 'Mobile', + pc: 'Pc', + reactive: 'Reactive', + title: 'Title', + content: 'Content', + collection: 'Collection', + group: 'Group', + custom: 'Custom', + change: 'Change', + blur: 'Blur', + preview: 'Preview', + clear: 'Clear', + cancel: 'Cancel', + close: 'Close', + ok: 'Ok', + save: 'Save', + refresh: 'Refresh', + submit: 'Submit', + reset: 'Reset', + copy: 'Copy', + delete: 'Delete', + hide: 'Hidden', + show: 'Show', + position: 'Position', + render: 'Render', + large: 'large', + default: 'default', + small: 'small', + always: 'always', + never: 'never', + hover: 'hover', + click: 'click', + button: 'button', + year: 'year', + month: 'month', + date: 'date', + dates: 'dates', + week: 'week', + datetime: 'datetime', + 'datetime-local': 'datetime', + datetimerange: 'datetimerange', + daterange: 'daterange', + monthrange: 'monthrange', + left: 'left', + right: 'right', + top: 'top', + text: 'text', + picture: 'picture', + 'picture-card': 'picture-card', + center: 'center', + vertical: 'vertical', + horizontal: 'horizontal', + manage: 'Manage', + key: 'key', + name: 'Name', + value: 'value', + inputData: 'Default value', + append: 'Append', + options: 'Options', + option: 'Option', + callback: 'Callback', + _self: 'Current Window', + _blank: 'New Window', + _parent: 'Parent Window', + _top: 'Top Window', + }, + com: { + cascader: { + name: 'Cascader', + event: { + expandChange: 'Triggered when the expanded node changes', + removeTag: 'In multi-select mode, triggered when Tag is removed' + }, + props: { + props: 'Options', + placeholder: 'Placeholder', + disabled: 'Disabled', + clearable: 'Whether clearing options are supported', + showAllLevels: 'Whether the full path of the selected value is displayed in the input box', + collapseTags: 'Whether to collapse Tags in multi-select mode', + collapseTagsTooltip: 'Whether to display all selected tags when the mouse hovers over the text of a collapsed tag', + separator: 'Separator', + filterable: 'Whether this option can be searched', + tagType: 'Type', + }, + propsOpt: { + multiple: 'Whether there are multiple selections', + expandTrigger: 'How to expand the secondary menu', + checkStrictly: 'Whether it is strictly observed that parent and child nodes are not related to each other', + emitPath: 'When the selected node changes, whether to return an array consisting of the values of the menus at each level where the node is located', + value: 'The value of the specified option is an attribute value of the option object', + label: 'Specify the option label as a certain attribute value of the option object', + children: 'The child option of the specified option is a certain attribute value of the option object', + disabled: 'The specified option is disabled as a certain attribute value of the option object', + leaf: 'The flag bit of the leaf node of the specified option is an attribute value of the option object', + } + }, + checkbox: { + name: 'Checkbox', + props: { + input: 'Whether to fill in', + type: 'Type', + disabled: 'Disabled', + min: 'Minimum number that can be checked', + max: 'The maximum number that can be checked', + textColor: 'Font color when the button is active', + fill: 'Border and background color when the button is active' + } + }, + col: { + name: 'Col', + props: { + span: 'Number of columns occupied by grid', + offset: 'Number of spaces on the left side of the grid', + push: 'Move the grid to the right by the number of cells', + pull: 'Move the grid to the left by the number of cells' + } + }, + colorPicker: { + name: 'ColorPicker', + event: { + activeChange: 'Triggered when the color currently displayed in the panel changes' + }, + props: { + disabled: 'Disabled', + showAlpha: 'Whether transparency selection is supported', + colorFormat: 'Color format', + predefine: 'Predefined color', + } + }, + datePicker: { + name: 'Date', + props: { + pickerOptions: 'Options specific to the current time and date picker', + readonly: 'Readonly', + disabled: 'Disabled', + type: 'Type', + editable: 'Text box can be input', + clearable: 'Whether to display the clear button', + placeholder: 'Placeholder content for non-range selection', + startPlaceholder: 'Placeholder content for the start date when selecting the range', + endPlaceholder: 'Placeholder content for the end date when selecting a range', + format: 'Format displayed in the input box', + align: 'Alignment', + rangeSeparator: 'Separator when selecting range', + unlinkPanels: 'Unlink the two date panels in the range selector', + } + }, + dateRange: { + name: 'DateRange', + }, + timeRange: { + name: 'TimeRange', + }, + elAlert: { + name: 'Alert', + description: 'Description', + props: { + title: 'Title', + type: 'Type', + description: 'Supporting text', + closable: 'Whether it can be closed', + center: 'Whether the text is centered', + closeText: 'Close button custom text', + showIcon: 'Whether to display the icon', + effect: 'Select a provided theme' + } + }, + BButton: { + name: 'Button', + props: { + formCreateChild: 'Content', + size: 'Size', + type: 'Type', + plain: 'Whether the button is plain', + round: 'Whether the button has rounded corners', + circle: 'Whether the button is round', + loading: 'Whether it is loading status', + disabled: 'Disabled', + } + }, + elCard: { + name: 'Card', + props: { + header: 'Title', + shadow: 'Shadow display timing', + } + }, + elCollapse: { + name: 'Collapse', + event: { + change: 'Switch the currently active panel, its type is string in accordion mode and array in other modes', + }, + props: { + accordion: 'Whether it is in accordion mode' + } + }, + elCollapseItem: { + name: 'CollapseItem', + props: { + title: 'Panel title', + name: 'Identifier', + disabled: 'Disabled', + } + }, + elDivider: { + name: 'Divider', + props: { + formCreateChild: 'Set Content', + contentPosition: 'Set content position' + } + }, + elTabPane: { + name: 'TabPane', + props: { + label: 'Title', + disabled: 'Disabled', + name: 'Identifier of the tab', + lazy: 'Whether the label is delayed in rendering' + } + }, + elTabs: { + name: 'Tabs', + event: { + tabClick: 'Triggered when tab is selected', + tabChange: 'Triggered when activeName changes', + tabRemove: 'Triggered when the tab remove button is clicked', + tabAdd: 'Triggered when a new tab button is clicked', + edit: 'Triggered after clicking the add or remove button of the tab', + }, + props: { + type: 'Type', + closable: 'Whether the label can be closed', + tabPosition: 'Tab position', + stretch: 'Whether the width of the label is self-stretching' + } + }, + elTag: { + name: 'Tag', + props: { + formCreateNative: 'Whether to display title', + formCreateTitle: 'Title', + formCreateChild: 'Content', + type: 'Type', + size: 'Label size', + effect: 'Label theme', + closable: 'Whether it can be closed', + disableTransitions: 'Whether to disable gradient animation', + hit: 'Whether there is a border stroke', + round: 'Whether it is round', + color: 'Background color' + } + }, + elTransfer: { + name: 'Transfer', + event: { + leftCheckChange: 'Triggered when the left list element is selected/unselected by the user', + rightCheckChange: 'Triggered when the right list element is selected/unselected by the user' + }, + props: { + filterable: 'Is it searchable', + filterPlaceholder: 'Search box placeholder', + targetOrder: 'Sort strategy of list elements on the right', + targetOrderInfo: 'If it is original, keep the same order as the data; if it is push, the newly added elements will be ranked last; if it is unshift, the newly added elements will be ranked first', + titles: 'Title', + buttonTexts: 'Set button content', + props: 'Field alias of data source' + } + }, + elTreeSelect: { + name: 'TreeSelect', + event: { + removeTag: 'Triggered when tag is removed in multi-select mode' + }, + props: { + multiple: 'Whether there are multiple selections', + disabled: 'Disabled', + clearable: 'Whether the option can be cleared', + collapseTags: 'Whether to display the selected value as text during multi-selection', + multipleLimit: 'The maximum number of items that the user can select during multiple selection, if it is 0, there is no limit', + placeholder: 'Placeholder', + props: 'Options', + renderAfterExpand: 'Whether to render its child nodes after expanding a tree node for the first time', + defaultExpandAll: 'Whether to expand all nodes by default', + expandOnClickNode: 'Whether to expand or shrink nodes when clicking on them', + checkOnClickNode: 'Whether to select the node when clicking the node', + nodeKey: 'Each tree node is used as an attribute for unique identification, and the entire tree should be unique' + } + }, + elImage: { + name: 'Image', + props: { + src: 'Image path' + } + }, + LocalImage: { + name: 'Image', + onImageError: 'Image loading failed', + props: { + src: 'Image path' + } + }, + fcEditor: { + name: 'Editor', + props: { + disabled: 'Disabled' + } + }, + fcRow: { + name: 'Row', + props: { + gutter: 'Grid interval', + type: 'Flex layout mode', + justify: 'Horizontal arrangement under flex layout', + align: 'Vertical arrangement under flex layout' + } + }, + fcTable: { + name: 'Table', + props: { + border: 'Whether to display border', + borderColor: 'Border color', + borderWidth: 'Border width' + } + }, + fcTableGrid: { + name: 'Grid', + }, + group: { + name: 'Subform', + props: { + disabled: 'Disabled', + syncDisabled: 'Whether to force synchronization of the disabled state with the subform', + expand: 'Set the default expansion items', + button: 'Whether to display the operation button', + sortBtn: 'Whether to display the sort button', + min: 'Set the minimum number of items to add', + max: 'Set the maximum number of items to add', + } + }, + html: { + name: 'HTML', + props: { + formCreateNative: 'Whether to display title', + formCreateTitle: 'Title', + formCreateChild: 'Content', + } + }, + input: { + name: 'Input', + event: { + change: 'Triggered when the value changes, when the component loses focus or the user presses Enter', + }, + props: { + type: 'Type', + maxlength: 'Maximum input length', + minlength: 'Minimum input length', + placeholder: 'Placeholder', + clearable: 'Whether to display the clear button', + disabled: 'Disabled', + readonly: 'Readonly', + } + }, + inputNumber: { + name: 'InputNumber', + props: { + precision: 'Precision of input value', + min: 'Set the minimum value allowed for the counter', + max: 'Set the maximum allowed value of the counter', + step: 'Step', + stepStrictly: 'Whether only multiples of step can be entered', + disabled: 'Disabled', + controls: 'Whether to use control buttons', + controlsPosition: 'Control button position', + placeholder: 'Placeholder' + } + }, + password: { + name: 'Password', + event: { + change: 'Triggered when the value changes, when the component loses focus or the user presses Enter', + }, + props: { + disabled: 'Disabled', + readonly: 'Readonly', + maxlength: 'Maximum input length', + minlength: 'Minimum input length', + placeholder: 'Placeholder', + clearable: 'Whether to display the clear button' + } + }, + radio: { + name: 'Radio', + props: { + input: 'Whether to fill in', + disabled: 'Disabled', + type: 'Type', + textColor: 'Text color when button form is activated', + fill: 'Fill color and border color when the button form is activated' + } + }, + rate: { + name: 'Rate', + props: { + max: 'Maximum score', + disabled: 'Disabled', + allowHalf: 'Whether to allow half selection', + voidColor: 'Color of the icon when not selected', + disabledVoidColor: 'The color of the icon when it is not selected when read-only', + voidIconClass: 'Class name of the icon when not selected', + disabledVoidIconClass: 'The class name of the icon when it is not selected when read-only', + showScore: 'Whether to display the current score', + textColor: 'Color of auxiliary text', + scoreTemplate: 'Score display template' + } + }, + select: { + name: 'Select', + event: { + removeTag: 'Triggered when tag is removed in multi-select mode' + }, + props: { + multiple: 'Whether there are multiple selections', + disabled: 'Disabled', + clearable: 'Whether the option can be cleared', + collapseTags: 'Whether to display the selected value as text during multi-selection', + multipleLimit: 'The maximum number of items that the user can select when multiple-selecting, if it is 0, there is no limit', + placeholder: 'Placeholder', + filterable: 'Is it searchable', + allowCreate: 'Whether users are allowed to create new entries', + noMatchText: 'Text displayed when no search conditions match', + noDataText: 'Text displayed when option is empty', + reserveKeyword: 'When multiple selections are searchable, whether to retain the current search keyword after selecting an option', + defaultFirstOption: 'Press Enter in the input box and select the first matching item', + remote: 'Whether the options are loaded remotely from the server', + remoteMethod: 'Custom remote search methods', + } + }, + slider: { + name: 'Slider', + props: { + min: 'Minimum value', + max: 'Maximum value', + disabled: 'Disabled', + step: 'Step', + showInput: 'Whether to display the input box, it is only valid during non-range selection', + showInputControls: 'Whether to display the control buttons of the input box when the input box is displayed', + showStops: 'Whether to display discontinuities', + range: 'Whether it is a range selection', + vertical: 'Whether portrait mode', + height: 'Slider height, required in portrait mode' + } + }, + space: { + name: 'Space', + props: { + height: 'Height', + } + }, + subForm: { + name: 'Group', + props: { + disabled: 'Disabled', + syncDisabled: 'Whether to force synchronization of the disabled state with the subform' + } + }, + switch: { + name: 'Switch', + props: { + disabled: 'Disabled', + width: 'Width (px)', + activeText: 'Text description when opening', + inactiveText: 'Text description when closing', + activeValue: 'Value when opening', + inactiveValue: 'Value when closed', + activeColor: 'Background color when opening', + inactiveColor: 'Background color when closed' + } + }, + tableForm: { + name: 'TableForm', + props: { + disabled: 'Disabled', + filterEmptyColumn: 'Whether to filter empty rows', + max: 'Maximum number of rows to add, if 0, there is no limit', + } + }, + tableFormColumn: { + name: 'TableFormColumn', + label: 'TableFormColumn', + props: { + label: 'Title', + width: 'Width', + color: 'Color', + required: 'Whether to display required asterisks', + } + }, + text: { + name: 'Text', + props: { + formCreateNative: 'Whether to display title', + formCreateTitle: 'Title', + formCreateChild: 'Content' + } + }, + textarea: { + name: 'Textarea', + event: { + change: 'Triggered when the value changes, when the component loses focus or the user presses Enter', + }, + props: { + disabled: 'Disabled', + readonly: 'Readonly', + maxlength: 'Maximum input length', + minlength: 'Minimum input length', + showWordLimit: 'Whether to display word count statistics', + placeholder: 'Placeholder', + rows: 'Number of input box rows', + autosize: 'Whether the height is adaptive' + } + }, + timePicker: { + name: 'Time', + props: { + pickerOptions: 'Options specific to the current time and date picker', + readonly: 'Readonly', + disabled: 'Disabled', + editable: 'Text box can be input', + clearable: 'Whether to display the clear button', + placeholder: 'Placeholder content for non-range selection', + startPlaceholder: 'Placeholder content for the start date when selecting the range', + endPlaceholder: 'Placeholder content for the start date when selecting the range', + isRange: 'Whether to select a time range', + arrowControl: 'Whether to use arrows for time selection', + align: 'Align' + } + }, + tree: { + name: 'Tree', + event: { + nodeClick: 'Triggered when the node is clicked', + nodeContextmenu: 'This event will be triggered when a node is right-clicked', + checkChange: 'Triggered when the check box is clicked', + check: 'Triggered after clicking the node checkbox', + currentChange: 'Event triggered when the currently selected node changes', + nodeExpand: 'Event triggered when a node is expanded', + nodeCollapse: 'Event triggered when a node is closed', + nodeDragStart: 'Event triggered when a node starts dragging', + nodeDragEnter: 'Event triggered when dragging into other nodes', + nodeDragLeave: 'Event triggered when dragging leaves a node', + nodeDragOver: 'Event triggered when dragging a node', + nodeDragEnd: 'Event triggered when drag ends', + nodeDrop: 'Event triggered when drag and drop is successfully completed' + }, + props: { + emptyText: 'Text displayed when the content is empty', + props: 'Options', + renderAfterExpand: 'Whether to render its child nodes after expanding a tree node for the first time', + defaultExpandAll: 'Whether to expand all nodes by default', + expandOnClickNode: 'Whether to expand or contract the node when clicking the node, if it is false, the node will only be expanded or contracted when the arrow icon is clicked. ', + checkOnClickNode: 'Whether to select the node when clicking the node', + autoExpandParent: 'Whether to automatically expand the parent node when expanding the child node', + checkStrictly: 'When the check box is displayed, whether the parent and child are strictly not related to each other should be strictly followed', + accordion: 'Whether to open only one sibling tree node for expansion at a time', + indent: 'Horizontal indent (px) between adjacent level nodes', + nodeKey: 'Each tree node is used as an attribute for unique identification, and the entire tree should be unique' + } + }, + upload: { + name: 'Upload', + info: 'After a successful upload, assign the returned URL to file.url or the result to file.value for use in subsequent form submissions.', + event: { + remove: 'Triggered when a file is removed from the file list', + preview: 'Triggered when clicking an uploaded file in the file list', + error: 'Triggered when file upload fails', + progress: 'Triggered when file is uploaded', + exceed: 'Triggered when the limit is exceeded' + }, + props: { + listType: 'Upload type', + multiple: 'Whether multiple selection of files is supported', + action: 'Upload address (required)', + beforeUpload: 'Triggered before uploading a file', + onSuccess: 'Triggered when the upload is successful', + beforeRemove: 'Triggered before deleting a file', + headers: 'Set upload request headers', + data: 'Extra parameters attached when uploading', + name: 'Uploaded file field name', + withCredentials: 'Support sending cookie credential information', + accept: 'Accept uploaded file types', + autoUpload: 'Whether to upload the file immediately after selecting it', + disabled: 'Disabled', + limit: 'Maximum number of uploads allowed' + } + } + }, +}; + +export default En; + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/locale/zh-cn.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/locale/zh-cn.js new file mode 100644 index 0000000..8c1a429 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/locale/zh-cn.js @@ -0,0 +1,869 @@ +const ZhCn = { + name: 'zh-cn', + form: { + field: '字段 ID', + title: '字段名称', + info: '提示信息', + control: '联动数据', + labelPosition: '标签的位置', + labelStyle: '标签的样式', + labelSuffix: '标签的后缀', + size: '表单的尺寸', + event: '表单事件', + labelWidth: '标签的宽度', + hideRequiredAsterisk: '隐藏必填字段的标签旁边的红色星号', + showMessage: '显示校验错误信息', + inlineMessage: '以行内形式展示校验信息', + submitBtn: '是否显示表单提交按钮', + resetBtn: '是否显示表单重置按钮', + appendChild: '添加子级', + formMode: '表单模式', + formName: '表单名称', + componentMode: '生成组件', + htmlMode: '生成HTML', + document: '帮助文档', + controlDocument: '需要更详细的配置方法?请查看{doc}', + onSubmit: '表单提交时触发', + onReset: '表单重置后触发', + onCreated: '表单组件初始化完毕后触发', + onMounted: '表单组件渲染完毕后触发', + onReload: '表单渲染规则重载后触发', + onChange: '表单组件的值发生变化时触发', + beforeFetch: '远程数据请求发送前触发', + }, + warning: { + name: '组件的唯一标识,用于获取和修改该组件的配置规则。通过该标识可以精确定位组件,实现对组件属性和行为的控制。', + field: '组件对应的字段名用于与组件的数据进行绑定。字段名需以字母开头,以确保能够正确识别。', + fetch: '远程数据通过远程请求加载组件的配置项。配置请求参数后,组件会自动发起请求,获取远程数据并根据返回的结果更新组件。', + fetchQuery: '定义请求的 GET 参数,通过 URL 传递数据。', + fetchData: '定义请求的 POST 参数,通过请求体传递数据。', + fetchDataType: '选择请求体的数据类型,确保数据格式正确。', + fetchParse: '请求返回后,可以通过处理函数对返回的结果进行处理,将结果转换为组件所需的数据和结构。', + language: '管理页面的多语言数据,在组件中配置不同语言的文本,支持一键切换语言体系,便于在多语言环境下使用和展示内容。', + }, + computed: { + fieldUsed: '【{label}】在计算公式中被使用,请先修改对应公式', + fieldExist: '【{label}】字段已存在', + fieldEmpty: '字段名称不能为空', + fieldChar: '字段名称必须以字母开头', + }, + validate: { + type: '字段类型', + typePlaceholder: '请选择', + trigger: '触发方式', + mode: '验证方式', + modes: { + required: '必填', + pattern: '正则表达式', + validator: '自定义验证', + min: '最小值', + max: '最大值', + len: '长度', + }, + types: { + string: '文本', + boolean: '布尔', + array: '多选', + number: '数字', + integer: '整数', + float: '小数', + object: '合集', + date: '日期', + url: 'URL链接', + email: '邮箱地址', + }, + message: '错误信息', + auto: '自动获取', + autoRequired: '请输入{title}', + autoMode: '请输入正确的{title}', + requiredPlaceholder: '请输入提示语', + required: '是否必填', + rule: '验证规则', + }, + tableOptions: { + handle: '操作', + add: '添加', + empty1: '点击右下角', + empty2: '按钮添加一列', + rmCol: '删除当前列', + rmRow: '删除当前行', + splitRow: '拆分成行', + splitCol: '拆分成列', + mergeBottom: '向下合并', + mergeRight: '向右合并', + addTop: '添加上列', + addBottom: '添加下列', + addLeft: '添加左列', + addRight: '添加右列', + keyValue: '键值对', + }, + struct: { + title: '编辑数据', + only: '【{label}】只允许添加一个', + errorMsg: '输入的内容语法错误', + configured: '已配置', + }, + event: { + title: '设置事件', + create: '创建事件', + list: '事件列表', + placeholder: '请输入事件的名称', + saveMsg: '请先保存当前正在编辑的事件', + type: '类型', + info: '说明', + label: '字段', + inject: { + api: '当前表单的api', + rule: '当前表单的生成规则', + self: '组件的生成规则', + option: '表单的配置', + args: '事件的原始参数', + } + }, + eventInfo: { + blur: '失去焦点时触发', + focus: '获得焦点时触发', + change: '当绑定值变化时触发', + input: '在值改变时触发', + clear: '在点击清空按钮时触发', + close: '关闭组件时触发', + click: '点击组件时触发', + add: '增加时触发', + delete: '删除时触发', + visibleChange: '下拉框出现/隐藏时触发', + calendarChange: '在日历所选日期更改时触发', + panelChange: '当日期面板改变时触发', + open: '打开的回调', + opened: '打开动画结束时的回调', + closed: '关闭动画结束时的回调', + openAutoFocus: '输入焦点聚焦在内容时的回调', + closeAutoFocus: '输入焦点从内容失焦时的回调', + submit: '表单提交时触发', + confirm: '点击确认按钮时触发', + validateFail: '表单验证失败时触发', + hook_load: '组件规则加载后触发', + hook_mounted: '组件挂载后触发', + hook_deleted: '组件规则被移除后触发', + hook_watch: '组件规则发生变化后触发', + hook_value: '组件的值发生变化后触发', + hook_hidden: '组件显示状态发生变化后触发', + }, + fetch: { + title: '设置数据源', + create: '创建数据源', + config: '请求配置', + action: '请求链接', + actionRequired: '请输入正确的链接', + placeholder: '请输入数据源的名称', + method: '请求方式', + data: '附带数据', + dataType: '数据类型', + headers: '请求头部', + query: '请求参数', + parse: '数据处理', + response: '接口返回的数据', + onError: '错误处理', + remote: '远程数据', + static: '静态数据', + optionsType: { + fetch: '远程数据', + struct: '静态数据', + } + }, + style: { + width: '宽度', + height: '高度', + color: '颜色', + backgroundColor: '背景色', + margin: '外边距', + padding: '内边距', + borderRadius: '圆角', + border: '边框', + solid: '实线', + dashed: '虚线', + dotted: '点状虚线', + double: '双实线', + opacity: '透明度', + scale: '缩放', + minWidth: '最小宽', + minHeight: '最小高', + maxWidth: '最大宽', + maxHeight: '最大高', + overflow: { + name: '溢出', + visible: '可见', + hidden: '隐藏', + scroll: '滚动', + auto: '溢出后自动滚动', + }, + shadow: { + name: '阴影', + x: 'x轴偏移量', + y: 'y轴偏移量', + vague: '模糊半径', + extend: '扩散半径', + inset: '向内', + external: '向外', + mode: '模式', + classic: '经典', + flat: '扁平', + solid: '立体', + }, + font: { + name: '字体', + size: '大小', + align: '对齐方式', + height: '行高', + spacing: '字间距', + preview: '样式预览', + }, + decoration: { + name: '修饰', + underline: '下划线', + 'line-through': '删除线', + overline: '上划线', + }, + weight: { + name: '粗细', + 300: '细体', + 400: '常规体', + 500: '中黑体', + 700: '中粗体', + } + }, + designer: { + component: '组件配置', + id: '唯一值', + name: '编号', + type: '组件类型', + form: '表单配置', + json: '渲染规则', + style: '组件样式配置', + rule: '基础配置', + advanced: '高级配置', + props: '属性配置', + customProps: '自定义属性配置', + validate: '验证配置', + event: '事件配置', + clearWarn: '清空后将不能恢复,确定要清空吗?', + childEmpty: '点击右下角 \\e789 按钮添加一列', + dragEmpty: '拖拽左侧列表中的组件到此处', + unload: '确定离开当前页面吗?', + comList: '组件列表', + }, + language: { + name: '国际化配置', + add: '新增词条', + batchRemove: '批量删除', + select: '选择多语言', + }, + menu: { + main: '基础组件', + aide: '辅助组件', + layout: '布局组件', + component: '组件', + subform: '子表单组件', + tree: '大纲' + }, + props: { + disabled: '禁用', + time: '时间', + size: '尺寸', + email: '邮箱', + number: '数字', + globalData: '全局数据', + mobile: '移动端', + reactive: '响应式', + pc: '电脑端', + title: '标题', + content: '内容', + collection: '合集', + group: '分组', + custom: '自定义', + change: '改变', + blur: '失去焦点', + preview: '预览', + clear: '清空', + cancel: '取消', + close: '关闭', + ok: '确定', + save: '保存', + refresh: '刷新', + submit: '提交', + reset: '重置', + copy: '复制', + delete: '删除', + hide: '隐藏', + show: '显示', + position: '位置', + render: '渲染', + large: '大', + default: '默认', + small: '小', + always: '常显', + never: '不显示', + hover: '悬浮', + click: '点击', + button: '按钮', + year: '年份', + month: '月份', + date: '日期', + dates: '日期多选', + week: '一周', + datetime: '日期时间', + 'datetime-local': '日期时间', + datetimerange: '日期时间区间', + daterange: '日期区间', + monthrange: '月份区间', + left: '左对齐', + right: '右对齐', + top: '顶部', + text: '文字', + picture: '图片', + 'picture-card': '卡片', + center: '居中', + vertical: '竖向', + horizontal: '横向', + manage: '管理', + key: '键名', + name: '名称', + value: '值', + inputData: '默认值', + append: '插入', + options: '选项数据', + option: '选项', + callback: '回调', + _self: '当前窗口', + _blank: '新的窗口', + _parent: '父级窗口', + _top: '顶级窗口', + }, + com: { + cascader: { + name: '级联选择器', + event: { + expandChange: '当展开节点发生变化时触发', + removeTag: '在多选模式下,移除Tag时触发' + }, + props: { + props: '配置选项', + placeholder: '输入框占位文本', + disabled: '是否禁用', + clearable: '是否支持清空选项', + showAllLevels: '输入框中是否显示选中值的完整路径', + collapseTags: '多选模式下是否折叠Tag', + collapseTagsTooltip: '当鼠标悬停于折叠标签的文本时,是否显示所有选中的标签', + separator: '选项分隔符', + filterable: '该选项是否可以被搜索', + tagType: '标签类型', + }, + propsOpt: { + multiple: '是否多选', + expandTrigger: '次级菜单的展开方式', + checkStrictly: '是否严格的遵守父子节点不互相关联', + emitPath: '在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组', + value: '指定选项的值为选项对象的某个属性值', + label: '指定选项标签为选项对象的某个属性值', + children: '指定选项的子选项为选项对象的某个属性值', + disabled: '指定选项的禁用为选项对象的某个属性值', + leaf: '指定选项的叶子节点的标志位为选项对象的某个属性值', + } + }, + checkbox: { + name: '多选框', + props: { + input: '是否可以填写', + type: '按钮类型', + disabled: '是否禁用', + min: '可被勾选的最小数量', + max: '可被勾选的最大数量', + textColor: '当按钮为活跃状态时的字体颜色', + fill: '当按钮为活跃状态时的边框和背景颜色' + } + }, + col: { + name: '布局格子', + props: { + span: '栅格占据的列数', + offset: '栅格左侧的间隔格数', + push: '栅格向右移动格数', + pull: '栅格向左移动格数' + } + }, + colorPicker: { + name: '颜色选择器', + event: { + activeChange: '面板中当前显示的颜色发生改变时触发' + }, + props: { + disabled: '是否禁用', + showAlpha: '是否支持透明度选择', + colorFormat: '颜色的格式', + predefine: '预定义颜色', + } + }, + datePicker: { + name: '日期', + props: { + pickerOptions: '当前时间日期选择器特有的选项', + readonly: '完全只读', + disabled: '禁用', + type: '显示类型', + editable: '文本框可输入', + clearable: '是否显示清除按钮', + placeholder: '非范围选择时的占位内容', + startPlaceholder: '范围选择时开始日期的占位内容', + endPlaceholder: '范围选择时结束日期的占位内容', + format: '显示在输入框中的格式', + align: '对齐方式', + rangeSeparator: '选择范围时的分隔符', + unlinkPanels: '在范围选择器里取消两个日期面板之间的联动', + } + }, + dateRange: { + name: '日期区间', + }, + timeRange: { + name: '时间区间', + }, + elAlert: { + name: '提示', + description: '说明文字', + props: { + title: '标题', + type: '主题', + description: '辅助性文字', + closable: '是否可关闭', + center: '文字是否居中', + closeText: '关闭按钮自定义文本', + showIcon: '是否显示图标', + effect: '选择提供的主题' + } + }, + elButton: { + name: '按钮', + props: { + formCreateChild: '内容', + size: '尺寸', + type: '类型', + plain: '是否朴素按钮', + round: '是否圆角按钮', + circle: '是否圆形按钮', + loading: '是否加载中状态', + disabled: '是否禁用状态', + } + }, + elCard: { + name: '卡片', + props: { + header: '标题', + shadow: '阴影显示时机', + } + }, + elCollapse: { + name: '折叠面板', + event: { + change: '切换当前活动面板,在手风琴模式下其类型是string,在其他模式下是array', + }, + props: { + accordion: '是否手风琴模式' + } + }, + elCollapseItem: { + name: '面板', + props: { + title: '面板标题', + name: '唯一标志符', + disabled: '是否禁用', + } + }, + elDivider: { + name: '分割线', + props: { + formCreateChild: '设置分割线文案', + contentPosition: '设置分割线文案的位置' + } + }, + elTabPane: { + name: '选项卡', + props: { + label: '选项卡标题', + disabled: '是否禁用', + name: '选项卡的标识符', + lazy: '标签是否延迟渲染' + } + }, + elTabs: { + name: '标签页', + event: { + tabClick: 'tab 被选中时触发', + tabChange: 'activeName 改变时触发', + tabRemove: '点击 tab 移除按钮时触发', + tabAdd: '点击 tab 新增按钮时触发', + edit: '点击 tab 的新增或移除按钮后触发', + }, + props: { + type: '风格类型', + closable: '标签是否可关闭', + tabPosition: '选项卡所在位置', + stretch: '标签的宽度是否自撑开' + } + }, + elTag: { + name: '标签', + props: { + formCreateNative: '是否显示标题', + formCreateTitle: '标题', + formCreateChild: '标签内容', + type: '标签的类型', + size: '标签的尺寸', + effect: '标签的主题', + closable: '是否可关闭', + disableTransitions: '是否禁用渐变动画', + hit: '是否有边框描边', + round: '是否为圆形', + color: '背景色' + } + }, + elTransfer: { + name: '穿梭框', + event: { + leftCheckChange: '左侧列表元素被用户选中 / 取消选中时触发', + rightCheckChange: '右侧列表元素被用户选中 / 取消选中时触发' + }, + props: { + filterable: '是否可搜索', + filterPlaceholder: '搜索框占位符', + targetOrder: '右侧列表元素的排序策略', + targetOrderInfo: '若为 original,则保持与数据相同的顺序;若为 push,则新加入的元素排在最后;若为 unshift,则新加入的元素排在最前', + titles: '自定义列表标题', + buttonTexts: '自定义按钮文案', + props: '数据源的字段别名' + } + }, + elTreeSelect: { + name: '树形选择', + event: { + removeTag: '多选模式下移除tag时触发' + }, + props: { + multiple: '是否多选', + disabled: '是否禁用', + clearable: '是否可以清空选项', + collapseTags: '多选时是否将选中值按文字的形式展示', + multipleLimit: '多选时用户最多可以选择的项目数,为 0 则不限制', + placeholder: '占位符', + props: '配置选项', + renderAfterExpand: '是否在第一次展开某个树节点后才渲染其子节点', + defaultExpandAll: '是否默认展开所有节点', + expandOnClickNode: '是否在点击节点的时候展开或者收缩节点', + checkOnClickNode: '是否在点击节点的时候选中节点', + nodeKey: '每个树节点用来作为唯一标识的属性,整棵树应该是唯一的' + } + }, + elImage: { + name: '图片', + props: { + src: '图片链接' + } + }, + fcEditor: { + name: '富文本框', + props: { + disabled: '是否禁用' + } + }, + fcRow: { + name: '栅格布局', + props: { + gutter: '栅格间隔', + type: 'flex布局模式', + justify: 'flex布局下的水平排列方式', + align: 'flex布局下的垂直排列方式' + } + }, + fcTable: { + name: '表格布局', + props: { + border: '是否显示边框', + borderColor: '边框颜色', + borderWidth: '边框宽度' + } + }, + fcTableGrid: { + name: '格子', + }, + group: { + name: '子表单', + props: { + disabled: '是否禁用', + syncDisabled: '是否与子表单强制同步禁用状态', + expand: '设置默认展开几项', + button: '是否显示操作按钮', + sortBtn: '是否显示排序按钮', + min: '设置最小添加几项', + max: '设置最多添加几项', + } + }, + html: { + name: 'HTML', + props: { + formCreateNative: '是否显示标题', + formCreateTitle: '标题', + formCreateChild: '内容', + } + }, + input: { + name: '输入框', + event: { + change: '当值改变时,当组件失去焦点或用户按Enter时触发', + }, + props: { + type: '类型', + maxlength: '最大输入长度', + minlength: '最小输入长度', + placeholder: '输入框占位文本', + clearable: '是否显示清除按钮', + disabled: '是否禁用', + readonly: '是否只读', + } + }, + inputNumber: { + name: '计数器', + props: { + precision: '数值精度', + min: '设置计数器允许的最小值', + max: '设置计数器允许的最大值', + step: '计数器步长', + stepStrictly: '是否只能输入 step 的倍数', + disabled: '是否禁用计数器', + controls: '是否使用控制按钮', + controlsPosition: '控制按钮位置', + placeholder: '输入框占位文本' + } + }, + password: { + name: '密码输入框', + event: { + change: '当值改变时,当组件失去焦点或用户按Enter时触发', + }, + props: { + disabled: '是否禁用', + readonly: '是否只读', + maxlength: '最大输入长度', + minlength: '最小输入长度', + placeholder: '输入框占位文本', + clearable: '是否显示清除按钮' + } + }, + radio: { + name: '单选框', + props: { + input: '是否可以填写', + disabled: '是否禁用', + type: '按钮形式', + textColor: '按钮形式激活时的文本颜色', + fill: '按钮形式激活时的填充色和边框色' + } + }, + rate: { + name: '评分', + props: { + max: '最大分值', + disabled: '是否禁用', + allowHalf: '是否允许半选', + voidColor: '未选中时图标的颜色', + disabledVoidColor: '只读时未选中时图标的颜色', + voidIconClass: '未选中时图标的类名', + disabledVoidIconClass: '只读时未选中时图标的类名', + showScore: '是否显示当前分数', + textColor: '辅助文字的颜色', + scoreTemplate: '分数显示模板' + } + }, + select: { + name: '选择器', + event: { + removeTag: '多选模式下移除tag时触发' + }, + props: { + + multiple: '是否多选', + disabled: '是否禁用', + clearable: '是否可以清空选项', + collapseTags: '多选时是否将选中值按文字的形式展示', + multipleLimit: '多选时用户最多可以选择的项目数,为 0 则不限制', + placeholder: '占位符', + filterable: '是否可搜索', + allowCreate: '是否允许用户创建新条目', + noMatchText: '搜索条件无匹配时显示的文字', + noDataText: '选项为空时显示的文字', + reserveKeyword: '多选且可搜索时,是否在选中一个选项后保留当前的搜索关键词', + defaultFirstOption: '在输入框按下回车,选择第一个匹配项', + remote: '其中的选项是否从服务器远程加载', + remoteMethod: '自定义远程搜索方法', + } + }, + slider: { + name: '滑块', + props: { + min: '最小值', + max: '最大值', + disabled: '是否禁用', + step: '步长', + showInput: '是否显示输入框,仅在非范围选择时有效', + showInputControls: '在显示输入框的情况下,是否显示输入框的控制按钮', + showStops: '是否显示间断点', + range: '是否为范围选择', + vertical: '是否竖向模式', + height: 'Slider 高度,竖向模式时必填' + } + }, + space: { + name: '间距', + props: { + height: '高度', + } + }, + subForm: { + name: '分组', + props: { + disabled: '是否禁用', + syncDisabled: '是否与子表单强制同步禁用状态' + } + }, + switch: { + name: '开关', + props: { + disabled: '是否禁用', + width: '宽度(px)', + activeText: '打开时的文字描述', + inactiveText: '关闭时的文字描述', + activeValue: '打开时的值', + inactiveValue: '关闭时的值', + activeColor: '打开时的背景色', + inactiveColor: '关闭时的背景色' + } + }, + tableForm: { + name: '表格表单', + props: { + disabled: '是否禁用', + filterEmptyColumn: '是否过滤空行的数据', + max: '最多添加几行,为 0 则不限制', + } + }, + tableFormColumn: { + name: '表格格子', + label: '自定义名称', + props: { + label: '标题', + width: '宽度', + color: '颜色', + required: '是否显示必填星号', + } + }, + text: { + name: '文字', + props: { + formCreateNative: '是否显示标题', + formCreateTitle: '标题', + formCreateChild: '内容' + } + }, + textarea: { + name: '多行输入框', + event: { + change: '当值改变时,当组件失去焦点或用户按Enter时触发', + }, + props: { + disabled: '是否禁用', + readonly: '是否只读', + maxlength: '最大输入长度', + minlength: '最小输入长度', + showWordLimit: '是否显示统计字数', + placeholder: '输入框占位文本', + rows: '输入框行数', + autosize: '高度是否自适应' + } + }, + timePicker: { + name: '时间', + props: { + pickerOptions: '当前时间日期选择器特有的选项', + readonly: '完全只读', + disabled: '禁用', + editable: '文本框可输入', + clearable: '是否显示清除按钮', + placeholder: '非范围选择时的占位内容', + startPlaceholder: '范围选择时开始日期的占位内容', + endPlaceholder: '范围选择时开始日期的占位内容', + isRange: '是否为时间范围选择', + arrowControl: '是否使用箭头进行时间选择', + align: '对齐方式' + } + }, + tree: { + name: '树形控件', + event: { + nodeClick: '当节点被点击的时候触发', + nodeContextmenu: '当某一节点被鼠标右键点击时会触发该事件', + checkChange: '当复选框被点击的时候触发', + check: '点击节点复选框之后触发', + currentChange: '当前选中节点变化时触发的事件', + nodeExpand: '节点被展开时触发的事件', + nodeCollapse: '节点被关闭时触发的事件', + nodeDragStart: '节点开始拖拽时触发的事件', + nodeDragEnter: '拖拽进入其他节点时触发的事件', + nodeDragLeave: '拖拽离开某个节点时触发的事件', + nodeDragOver: '在拖拽节点时触发的事件(类似浏览器的 mouseover 事件)', + nodeDragEnd: '拖拽结束时(可能未成功)触发的事件', + nodeDrop: '拖拽成功完成时触发的事件' + }, + props: { + emptyText: '内容为空的时候展示的文本', + props: '配置选项', + renderAfterExpand: '是否在第一次展开某个树节点后才渲染其子节点', + defaultExpandAll: '是否默认展开所有节点', + expandOnClickNode: '是否在点击节点的时候展开或者收缩节点,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。', + checkOnClickNode: '是否在点击节点的时候选中节点', + autoExpandParent: '展开子节点的时候是否自动展开父节点', + checkStrictly: '在显示复选框的情况下,是否严格的遵循父子不互相关联的做法', + accordion: '是否每次只打开一个同级树节点展开', + indent: '相邻级节点间的水平缩进(px)', + nodeKey: '每个树节点用来作为唯一标识的属性,整棵树应该是唯一的' + } + }, + upload: { + name: '上传', + info: '上传成功后,将接口返回的 URL 赋值给 file.url,或将返回结果赋值给 file.value,以便在后续的表单提交时获取这些数据。', + event: { + remove: '文件列表移除文件时触发', + preview: '点击文件列表中已上传的文件时触发', + error: '文件上传失败时触发', + progress: '文件上传时触发', + exceed:'当超出限制时触发' + }, + props: { + listType: '上传类型', + multiple: '是否支持多选文件', + action: '上传的地址(必填)', + beforeUpload: '上传文件之前触发', + onSuccess: '上传成功时触发', + beforeRemove: '删除文件之前触发', + headers: '设置上传的请求头部', + data: '上传时附带的额外参数', + name: '上传的文件字段名', + withCredentials: '支持发送 cookie 凭证信息', + accept: '接受上传的文件类型', + autoUpload: '是否在选取文件后立即进行上传', + disabled: '是否禁用', + limit: '最大允许上传个数' + } + } + }, +}; + +export default ZhCn; + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/style/fonts/fc-icons.woff b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/style/fonts/fc-icons.woff new file mode 100644 index 0000000..f5f3bba Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/style/fonts/fc-icons.woff differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/style/icon.css b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/style/icon.css new file mode 100644 index 0000000..4f45eb8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/style/icon.css @@ -0,0 +1,632 @@ +@font-face { + font-family: "fc-icon"; + src: url(fonts/fc-icons.woff) format('woff'); +} + +.fc-icon { + font-family: "fc-icon" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-up:before { + content: "\e697"; + display: inline-block; + transform: rotate(180deg); +} + +.icon-down:before { + content: "\e609"; +} + +.icon-alignitems-flexstart:before { + content: "\e67f"; + display: inline-block; + transform: rotate(180deg); +} + +.icon-align-center:before { + content: "\e6a5"; + display: inline-block; + transform: rotate(90deg); +} + +.icon-align-flexstart:before { + content: "\e6a4"; + display: inline-block; + transform: rotate(90deg); +} + +.icon-align-flexend:before { + content: "\e6a4"; + display: inline-block; + transform: rotate(-90deg); +} + +.icon-align-spacearound:before { + content: "\e670"; + display: inline-block; + transform: rotate(-90deg); +} + +.icon-align-spacebetween:before { + content: "\e695"; + display: inline-block; + transform: rotate(-90deg); +} + +.icon-align-stretch:before { + content: "\e6a7"; + display: inline-block; + transform: rotate(-90deg); +} + +.icon-align-flexend:before { + content: "\e6a4"; + display: inline-block; + transform: rotate(-90deg); +} + +.icon-justify-flexend:before { + content: "\e6a4"; + display: inline-block; + transform: rotate(180deg); +} + +.icon-direction-row:before { + content: "\e68b"; + display: inline-block; + transform: rotate(180deg); +} + +.icon-direction-column:before { + content: "\e68b"; + display: inline-block; + transform: rotate(-90deg); +} + +.icon-direction-columnreverse:before { + content: "\e68b"; + display: inline-block; + transform: rotate(90deg); +} + +.icon-arrow:before { + content: "\e697"; + display: inline-block; + transform: rotate(180deg); +} + +.icon-cell:before { + content: "\e654"; +} + +.icon-table:before { + content: "\eb0a"; +} + +.icon-next-step:before { + content: "\e6b4"; + display: inline-block; + transform: rotateY(180deg); +} + +.icon-grid:before { + content: "\e65c"; + display: inline-block; + transform: rotate(90deg); +} + +.icon-alignitems-stretch:before { + content: "\e67e"; +} + +.icon-alignitems-flexend:before { + content: "\e67f"; +} + +.icon-check:before { + content: "\e680"; +} + +.icon-auto:before { + content: "\e681"; +} + +.icon-config-event:before { + content: "\e66e"; +} + +.icon-calendar:before { + content: "\e683"; +} + +.icon-config-style:before { + content: "\e684"; +} + +.icon-copy:before { + content: "\e676"; +} + +.icon-config-advanced:before { + content: "\e686"; +} + +.icon-config-props:before { + content: "\e687"; +} + +.icon-delete-circle2:before { + content: "\e688"; +} + +.icon-delete-circle:before { + content: "\e689"; +} + +.icon-delete2:before { + content: "\e689"; +} + +.icon-delete:before { + content: "\e68a"; +} + +.icon-direction-rowreverse:before { + content: "\e68b"; +} + +.icon-display-flex:before { + content: "\e68c"; +} + +.icon-dialog:before { + content: "\e66f"; +} + +.icon-drag:before { + content: "\e68e"; +} + +.icon-display-block:before { + content: "\e68f"; +} + +.icon-data:before { + content: "\e690"; +} + +.icon-edit2:before { + content: "\e691"; +} + +.icon-edit:before { + content: "\e692"; +} + +.icon-add-col:before { + content: "\e693"; +} + +.icon-display-inlineblock:before { + content: "\e694"; +} + +.icon-config-base:before { + content: "\e6bf"; +} + +.icon-config-validate:before { + content: "\e696"; +} + +.icon-down:before { + content: "\e697"; +} + +.icon-display-inline:before { + content: "\e698"; +} + +.icon-eye:before { + content: "\e699"; +} + +.icon-eye-close:before { + content: "\e69a"; +} + +.icon-import:before { + content: "\e6a6"; +} + +.icon-preview:before { + content: "\e69b"; +} + +.icon-flex-nowrap:before { + content: "\e69c"; +} + +.icon-folder:before { + content: "\e69d"; +} + +.icon-form-circle:before { + content: "\e69e"; +} + +.icon-flex-wrap:before { + content: "\e69f"; +} + +.icon-form:before { + content: "\e6a0"; +} + +.icon-form-item:before { + content: "\e6a1"; +} + +.icon-icon:before { + content: "\e6a2"; +} + +.icon-image:before { + content: "\e6a3"; +} + +.icon-justify-flexstart:before { + content: "\e6a4"; +} + +.icon-justify-center:before { + content: "\e6a5"; +} + +.icon-justify-spacearound:before { + content: "\e670"; +} + +.icon-justify-stretch:before { + content: "\e6a7"; +} + +.icon-link2:before { + content: "\e6a8"; +} + +.icon-justify-spacebetween:before { + content: "\e695"; +} + +.icon-minus:before { + content: "\e6aa"; +} + +.icon-menu2:before { + content: "\e6ab"; +} + +.icon-more:before { + content: "\e6ac"; +} + +.icon-menu:before { + content: "\e6ad"; +} + +.icon-language:before { + content: "\e6ae"; +} + +.icon-pad:before { + content: "\e6af"; +} + +.icon-mobile:before { + content: "\e6b0"; +} + +.icon-page-max:before { + content: "\e6b1"; +} + +.icon-move:before { + content: "\e6b2"; +} + +.icon-page-min:before { + content: "\e6b3"; +} + +.icon-pre-step:before { + content: "\e6b4"; +} + +.icon-pc:before { + content: "\e6b5"; +} + +.icon-page:before { + content: "\e6b6"; +} + +.icon-refresh:before { + content: "\e6b7"; +} + +.icon-radius:before { + content: "\e6b8"; +} + +.icon-save-filled:before { + content: "\e6b9"; +} + +.icon-question:before { + content: "\e6ba"; +} + +.icon-scroll:before { + content: "\e6bb"; +} + +.icon-script:before { + content: "\e6bc"; +} + +.icon-setting:before { + content: "\e6bd"; +} + +.icon-save:before { + content: "\e6be"; +} + +.icon-save-online:before { + content: "\e6be"; +} + +.icon-task-add:before { + content: "\e68d"; +} + +.icon-shadow:before { + content: "\e6c0"; +} + +.icon-variable:before { + content: "\e6c1"; +} + +.icon-yes:before { + content: "\e6c2"; +} + +.icon-shadow-inset:before { + content: "\e6c3"; +} + +.icon-date:before { + content: "\e642"; +} + +.icon-date-range:before { + content: "\e643"; +} + +.icon-collapse:before { + content: "\e644"; +} + +.icon-slider:before { + content: "\e665"; +} + +.icon-switch:before { + content: "\e646"; +} + +.icon-subform:before { + content: "\e647"; +} + +.icon-time-range:before { + content: "\e685"; +} + +.icon-tree-select:before { + content: "\e649"; +} + +.icon-value:before { + content: "\e64a"; +} + +.icon-table-form3:before { + content: "\e6a9"; +} + +.icon-alert:before { + content: "\e64c"; +} + +.icon-card:before { + content: "\e64d"; +} + +.icon-checkbox:before { + content: "\e64e"; +} + +.icon-cascader:before { + content: "\e64f"; +} + +.icon-button:before { + content: "\e650"; +} + +.icon-data-table:before { + content: "\e651"; +} + +.icon-group:before { + content: "\e652"; +} + +.icon-divider:before { + content: "\e653"; +} + +.icon-flex:before { + content: "\e654"; +} + +.icon-descriptions:before { + content: "\e655"; +} + +.icon-html:before { + content: "\e656"; +} + +.icon-editor:before { + content: "\e657"; +} + +.icon-input:before { + content: "\e658"; +} + +.icon-link:before { + content: "\e659"; +} + +.icon-password:before { + content: "\e65a"; +} + +.icon-radio:before { + content: "\e65b"; +} + +.icon-row:before { + content: "\e65c"; +} + +.icon-inline:before { + content: "\e65d"; +} + +.icon-rate:before { + content: "\e65e"; +} + +.icon-color:before { + content: "\e65f"; +} + +.icon-select:before { + content: "\e660"; +} + +.icon-json:before { + content: "\e661"; +} + +.icon-number:before { + content: "\e662"; +} + +.icon-space:before { + content: "\e664"; +} + +.icon-step-form:before { + content: "\e663"; +} + +.icon-table-form:before { + content: "\e666"; +} + +.icon-table-form2:before { + content: "\e667"; +} + +.icon-time:before { + content: "\e668"; +} + +.icon-span:before { + content: "\e669"; +} + +.icon-textarea:before { + content: "\e66a"; +} + +.icon-tooltip:before { + content: "\e66b"; +} + +.icon-slot:before { + content: "\e66c"; +} + +.icon-transfer:before { + content: "\e66d"; +} + +.icon-upload:before { + content: "\e673"; +} + +.icon-tag:before { + content: "\e671"; +} + +.icon-watermark:before { + content: "\e672"; +} + +.icon-tab:before { + content: "\e674"; +} + +.icon-tree:before { + content: "\e675"; +} + +.icon-table:before { + content: "\e677"; +} + +.icon-add-child:before { + content: "\e678"; +} + +.icon-add2:before { + content: "\e679"; +} + +.icon-add:before { + content: "\e67a"; +} + +.icon-alignitems-baseline:before { + content: "\e67b"; +} + +.icon-add-circle:before { + content: "\e67c"; +} + +.icon-alignitems-center:before { + content: "\e67d"; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/style/index.css b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/style/index.css new file mode 100644 index 0000000..b17a589 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/style/index.css @@ -0,0 +1,829 @@ +:root { + /* Light mode variables */ + --fc-bg-color: #FFF; + --fc-border-color: #ECECEC; + --fc-text-color: #262626; + --fc-text-secondary: #AAAAAA; + --fc-primary-color: #2E73FF; + --fc-hover-bg: #f5f5f5; + --fc-tool-border: #2E73FF; + --fc-badge-bg: #2E73FF; + --fc-item-border: #000; + --fc-item-bg: #f5f5f5; + --fc-divider-color: #D8D8D8; + --fc-tab-active: #409EFF; + --fc-group-border: #EEEEEE; + --fc-message-bg: #fff; + --fc-message-border: #fff; + --fc-message-text: rgba(0, 0, 0, 0.88); + --fc-preview-copy-bg: #2E73FF33; + --fc-preview-copy-color: #2E73FF; + --fc-dot-color: #333; + --fc-disabled-color: #999; + --fc-empty-color: #aaa; + --fc-white: #FFFFFF; +} + +.dark { + --fc-bg-color: #1a1a1a; + --fc-border-color: #333333; + --fc-text-color: #ffffff; + --fc-text-secondary: #888888; + --fc-primary-color: #4d8eff; + --fc-hover-bg: #2a2a2a; + --fc-tool-border: #4d8eff; + --fc-badge-bg: #4d8eff; + --fc-item-border: #ffffff; + --fc-item-bg: #2a2a2a; + --fc-divider-color: #444444; + --fc-tab-active: #4d8eff; + --fc-group-border: #333333; + --fc-message-bg: #2a2a2a; + --fc-message-border: #2a2a2a; + --fc-message-text: rgba(255, 255, 255, 0.88); + --fc-preview-copy-bg: #4d8eff33; + --fc-preview-copy-color: #4d8eff; + --fc-dot-color: #ffffff; + --fc-disabled-color: #666; + --fc-empty-color: #666; + --fc-white: #1a1a1a; +} + +._fc-designer { + height: 100%; + min-height: 500px; + overflow: hidden; + cursor: default; + position: relative; + background-color: var(--fc-bg-color); + --fc-drag-empty: "拖拽左侧列表中的组件到此处"; + --fc-child-empty: "点击右下角 \e789 按钮添加一列"; + --fc-tool-border-color: var(--fc-tool-border); +} + + + +.vue-grid-item > .vue-resizable-handle:hover { + opacity: 1; + background: var(--el-color-primary); +} + +.vue-grid-item > .vue-resizable-handle::after { + content: ''; + position: absolute; + right: 4px; + bottom: 4px; + width: 5px; + height: 5px; + border-right: 2px solid var(--el-text-color-primary); + border-bottom: 2px solid var(--el-text-color-primary); +} + +._fc-designer > .el-main { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: 0; +} + +._fc-l-menu { + display: flex; + flex-direction: column; + align-items: center; + border-top: 1px solid var(--fc-border-color); + border-right: 1px solid var(--fc-border-color); +} + +._fc-l-menu-item { + display: flex; + width: 100%; + align-items: center; + justify-content: center; + height: 40px; + cursor: pointer; + box-sizing: border-box; +} + +._fc-l-menu-item.active { + color: var(--fc-primary-color); +} + +._fc-l-menu-form { + border-bottom: 1px solid var(--fc-border-color); +} + +._fc-l-menu-item i { + font-size: 22px; +} + +._fc-l-menu-item i:hover { + color: var(--fc-primary-color); +} + +._fc-l-menu-item .el-badge__content { + --el-badge-size: 15px; + --el-badge-padding: 4px; + background-color: var(--fc-badge-bg); +} + +._fc-l-label { + font-weight: 500; + font-size: 14px; + color: var(--fc-text-color); + line-height: 17px; + padding: 12px; + margin-top: 5px; +} + +._fc-l-info { + font-weight: 400; + font-size: 12px; + color: var(--fc-text-secondary); + line-height: 17px; + text-align: left; + font-style: normal; + padding: 0 12px; +} + +._fc-l > .el-container { + height: 100%; +} + +._fc-m .form-create ._fc-l-item { + display: flex !important; + align-items: center; + justify-content: center; + background: var(--fc-item-bg); + color: var(--fc-text-color); + width: 100%; + margin: 5px 0; + height: 30px; + overflow: hidden; + transition: all .3s ease; + border: 1px dashed var(--fc-item-border); + border-radius: 4px; + padding-bottom: 0; +} + +._fc-m .form-create ._fc-l-item ._fc-l-icon { + display: inline-block !important; + padding: 0 4px; +} + +._fc-m .form-create ._fc-l-item ._fc-l-name { + display: inline-block !important; + font-size: 12px; +} + +._fc-l, ._fc-m, ._fc-r { + border-top: 1px solid var(--fc-border-color); + box-sizing: border-box; +} + +._fc-r { + --el-color-primary: var(--fc-primary-color); +} + +._fc-r-tab-props { + padding: 0 20px; + position: relative; +} + +._fc-r-tools-close { + position: absolute; + right: 24px; + top: 12px; + transform: rotate(45deg); + color: var(--fc-text-secondary); + cursor: pointer; +} + +._fc-r-title { + font-size: 12px; + color: var(--fc-text-color); + margin: 15px 0 5px 0; +} + +._fc-r-sub ._fc-r-title { + display: flex; + align-items: center; + justify-content: space-between; +} + +._fc-r-sub .fc-icon { + cursor: pointer; +} + +._fc-r-sub ._fd-config-item + ._fd-config-item { + margin-top: 8px; +} + +._fc-r-sub > ._fd-config-item > ._fd-ci-head { + position: relative; + padding-left: 8px; +} + +._fc-r-sub > ._fd-config-item > ._fd-ci-head:before { + content: ' '; + position: absolute; + width: 5px; + height: 5px; + background-color: var(--fc-dot-color); + border-radius: 25px; + left: 0; +} + +._fc-r-config { + display: grid; + grid-template-columns: repeat(1, 1fr); + grid-template-areas: "base" "props" "style" "event" "validate"; +} + +._fc-r-name-input .el-input-group__append { + width: 25px; + padding: 0; + margin: 0; + color: var(--fc-text-secondary); + cursor: pointer; +} + +._fc-r-name-input .icon-group { + cursor: pointer +} + +._fc-r-name-input .icon-group:hover { + color: var(--fc-primary-color); +} + +._fc-r .el-main { + padding-bottom: 100px; +} + +._fc-l .el-main { + padding: 0; +} + +._fc-l .el-tree-node__label { + padding: 3px; + font-weight: 400; + color: var(--fc-text-color); +} + +._fc-l .el-tree-node__content { + height: 30px; + margin-top: 5px; +} + +._fc-l .el-tree-node__content > .el-tree-node__expand-icon { + color: var(--fc-text-color); +} + +._fc-l .el-tree-node__expand-icon.is-leaf { + color: transparent; +} + +@keyframes rotating { + 0% { + transform: rotate(0) + } + + to { + transform: rotate(360deg) + } +} + +._fc-loading { + animation: rotating 2s linear infinite; +} + +._fc-tree-node { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + height: 26px; + line-height: 26px; + padding-right: 5px +} + +._fc-tree-node.active, ._fc-tree-node.active .icon-more { + color: var(--fc-primary-color); +} + +._fc-tree-label { + display: flex; + align-items: center; +} + +._fc-tree-label > i { + margin-right: 5px; + font-weight: 700; +} + +._fc-tree-more { + display: flex; + align-items: center; + padding: 0 15px; + font-weight: 700; +} + +._fc-l-tabs { + display: flex; + border-bottom: 1px solid var(--fc-border-color); + padding: 0; +} + +._fc-l-tab { + height: 40px; + box-sizing: border-box; + line-height: 40px; + display: inline-block; + list-style: none; + font-size: 14px; + font-weight: 600; + color: var(--fc-text-color); + position: relative; + flex: 1; + text-align: center; +} + +._fc-l ._fc-l-tab.active { + color: var(--fc-tab-active); + border-bottom: 2px solid var(--fc-tab-active); +} + +._fc-l-group { + border: 1px solid var(--fc-group-border); + padding: 0; + margin: 12px; + user-select: none; +} + +._fc-l-group ._fc-l-list { + display: grid; + grid-template-columns: repeat(3, 1fr); + align-items: stretch; +} + +._fc-l-title { + display: flex; + align-items: center; + justify-content: space-between; + cursor: pointer; + font-weight: 600; + font-size: 14px; + padding: 12px; + margin: 0; +} + +._fc-l-title i { + font-size: 14px; +} + +._fc-l-title i.down { + transform: rotate(90deg); +} + +._fc-l-item { + display: inline-block; + background: var(--fc-bg-color); + color: var(--fc-text-color); + line-height: 1; + text-align: center; + transition: all .2s ease; + cursor: pointer; + padding-bottom: 10px; +} + +._fc-l-item i { + font-size: 21px; + display: inline-block; +} + +._fc-l-item ._fc-l-name { + font-size: 12px; +} + +._fc-l-item ._fc-l-icon { + padding: 10px 5px 12px; +} + +._fc-l-item:hover { + background: var(--fc-primary-color); + color: var(--fc-bg-color); +} + +._fc-m-tools { + height: 40px; + align-items: center; + display: flex; + justify-content: space-between; + border: 1px solid var(--fc-border-color); + border-top: 0 none; + white-space: nowrap; +} + +._fc-m-tools-l, ._fc-m-tools-r { + display: flex; + align-items: center; +} + +._fc-m-tools-r { + overflow: auto; +} + + +._fc-m-tools-l .devices .fc-icon { + width: 18px; + cursor: pointer; +} + +._fc-m-tools-l .devices .fc-icon.active { + color: var(--fc-primary-color); +} + +._fc-m-tools-l .devices .fc-icon + .fc-icon { + margin-left: 5px; +} + +._fc-m-tools .line { + width: 1px; + height: 24px; + background: var(--fc-divider-color); + margin: 0 10px; +} + +._fc-m-tools .el-button { + padding: 5px 10px; + display: flex; + align-items: center; + border-radius: 5px; +} + +._fc-m-tools .el-button > span { + display: inline-flex; + justify-content: center; + align-items: center; +} + +._fc-m-tools .el-dropdown, ._fc-m-tools .el-button + .el-button { + margin-left: 10px; +} + +._fc-m-tools ._fd-m-extend { + color: var(--fc-text-secondary); + border-color: var(--fc-border-color); + background-color: var(--fc-hover-bg); + border-radius: 5px; + padding: 5px; +} + +._fc-m-tools ._fd-m-extend .fc-icon { + margin-right: 0; +} + +._fc-m-tools ._fd-input-btn { + display: flex; + align-items: center; + justify-content: space-between; + font-size: 12px; +} + +._fc-m-tools ._fd-input-btn .el-switch__action { + width: 18px; + height: 18px; + left: 2px; +} + +._fc-m-tools ._fd-input-btn .is-checked .el-switch__action { + --el-color-white: var(--fc-primary-color); + left: calc(100% - 20px); +} + +._fc-m-tools ._fd-input-btn .el-switch__core { + --el-switch-on-color: var(--el-switch-off-color); + border-radius: 16px; + height: 24px; + width: 46px; +} + +._fc-m-tools ._fd-input-btn .is-checked .el-switch__core { + --el-switch-on-color: var(--el-switch-off-color); + border-radius: 16px; + height: 24px; + width: 46px; +} + +._fc-m-tools-r .fc-icon { + font-size: 14px; +} + +._fc-m-tools-l .fc-icon { + font-size: 18px; + cursor: pointer; +} + +._fc-m-tools-l .fc-icon + .fc-icon { + margin-left: 10px; +} + +._fc-m-tools-l .fc-icon.disabled { + color: var(--fc-disabled-color); + cursor: not-allowed; +} + +._fc-r .el-tabs__nav-wrap::after { + height: 1px; + background-color: var(--fc-border-color); +} + +._fc-r ._fc-r-tabs { + display: flex; + padding: 0; + border-bottom: 1px solid var(--fc-border-color); +} + +._fc-r .el-table__cell .cell, ._fc-r .el-button, ._fc-r .el-radio-button__inner { + font-weight: 400; +} + +._fc-r ._fc-r-tab { + height: 40px; + box-sizing: border-box; + line-height: 40px; + display: inline-block; + list-style: none; + font-size: 14px; + font-weight: 600; + color: var(--fc-text-color); + position: relative; + flex: 1; + text-align: center; +} + +._fc-r ._fc-r-tab.active { + color: var(--fc-tab-active); + border-bottom: 2px solid var(--fc-tab-active); +} + +._fc-m-con { + position: relative; + background: var(--fc-hover-bg); + padding: 20px 20px 36px; +} + +._fc-m-drag { + margin: 0 auto; + overflow: auto; + padding: 2px; + box-sizing: border-box; +} + +._fc-m-input { + padding: 5px 5px 80px; +} + +._fc-m-input-handle { + position: absolute; + bottom: 17px; + left: 0; + right: 0; + padding: 12px; + background: var(--fc-white); + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.05); + text-align: center; + margin: 20px; + z-index: 99; +} + +._fc-m-drag.mobile { + width: 400px; +} + +._fc-m-drag.pad { + width: 770px; +} + +._fc-m-drag, .draggable-drag { + background: var(--fc-bg-color); + height: 100%; + position: relative; +} + +._fc-m-drag > form, ._fc-m-drag > form > .el-row { + height: 100%; +} + +._fc-m-drag .el-tree { + width: 100%; +} + +._fd-drag-box { + width: 100%; + height: 100%; + min-height: 80px; + transition: padding-bottom, padding-top .3s ease; +} + +._fd-drag-box ._fd-drag-box { + outline: 1px dashed var(--fc-border-color); +} + +._fd-drag-tool > ._fd-drag-box { + outline: none; +} + +._fd-drag-box > div[data-draggable] { + margin-bottom: 1px; +} + +._fc-r ._fc-group-container + ._fc-group-container { + margin-top: 20px; +} + +._fc-r ._fc-group-container { + margin: 0; + padding: 10px; +} + +._fc-r ._fc-group-handle { + right: 15px; +} + +._fc-r .el-form-item { + margin-bottom: 10px !important; +} + +._fc-r .el-form-item__label { + color: var(--fc-text-color); +} + +._fc-upload-preview { + display: inline-block; + width: 120px; + height: 120px; + border-radius: 5px; + overflow: hidden; +} + +._fc-tabs .el-tabs__item { + font-weight: 400; +} + +._fc-tabs .el-tabs__content { + overflow: auto; +} + +._fc-tabs .el-tabs__nav-scroll { + padding: 0 15px; +} + +._fc-tabs .el-tab-pane { + margin-right: 15px; +} + +._fc-tabs .el-tabs__nav-wrap::after { + height: 1px; +} + +.form-create .fc-none { + display: none; +} + +._fd-draggable-drag.drag-holder, ._fd-tableFormColumn-drag.drag-holder, ._fd-elTabPane-drag.drag-holder, ._fd-group-drag.drag-holder, ._fd-subForm-drag.drag-holder, ._fd-elCard-drag.drag-holder, ._fd-elCollapseItem-drag.drag-holder { + position: relative; + background: var(--fc-hover-bg); + background-size: 0; + min-height: 90px; +} + +._fc-child-empty:after, ._fd-draggable-drag.drag-holder:after, ._fd-tableFormColumn-drag.drag-holder:after, ._fd-elTabPane-drag.drag-holder:after, ._fd-group-drag.drag-holder:after, ._fd-subForm-drag.drag-holder:after, ._fd-elCard-drag.drag-holder:after, ._fd-elCollapseItem-drag.drag-holder:after { + content: var(--fc-drag-empty); + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + color: var(--fc-empty-color); + font-size: 12px; +} + +._fc-designer ._fc-m-drag ._fd-draggable-drag { + overflow: auto; + padding: 2px 2px 100px; +} + +._fc-m-drag._fd-drop-hover ._fd-draggable-drag { + padding-top: 20px; +} + +._fd-draggable-drag.drag-holder { + background-color: var(--fc-white); +} + +._fd-draggable-drag.drag-holder:after { + font-size: 16px; +} + +._fc-child-empty:after { + font-family: "fc-icon" !important; + content: var(--fc-child-empty); +} + +.fc-configured { + color: var(--fc-disabled-color); + margin-left: 5px; +} + +._fc-manage-text { + cursor: pointer; + color: var(--fc-primary-color); + margin-left: 4px; + font-size: 12px; +} + +._fc-manage-text i { + font-size: 12px; +} + +._fc-message-error { + top: 16px; + z-index: 2116; + border-radius: 8px; + padding: 9px 13px; + background-color: var(--fc-white); + border-color: var(--fc-white); + box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05); +} + +._fc-message-error > .el-icon { + font-size: 18px; +} + +._fc-message-error .el-message__content { + color: var(--fc-message-text); + font-size: 14px; +} + +._fd-preview-copy{ + display: flex; + position: absolute; + right: 35px; + top: 65px; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + background: var(--fc-preview-copy-bg); + border-radius: 10px; + color: var(--fc-preview-copy-color); + cursor: pointer; +} + +._fd-preview-dialog { + border-radius: 6px; + padding-top: 0; +} + +._fd-preview-dialog .el-dialog__header { + position: absolute; + right: 0; + top: 0; + float: right; + z-index: 9; +} + +._fd-preview-code { + margin-top: 0; + max-height: 510px; + overflow: auto; +} + +._fd-preview-tabs .el-tabs__nav-wrap::after { + height: 1px; +} + +._fd-preview-tabs .el-tabs__item { + height: 46px; +} + +._fd-preview-code > code { + white-space: pre-wrap; +} + +._fd-row-line { + width: 100%; + height: 1px; + margin: 10px 0; + background: var(--fc-divider-color); +} + +.CodeMirror-hints { + z-index: 999999; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/form.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/form.js new file mode 100644 index 0000000..afcec30 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/form.js @@ -0,0 +1,10 @@ +import formCreate from '@form-create/element-ui'; + +const viewForm = formCreate; + +const designerForm = formCreate.factory(); + +export default viewForm; + +export {designerForm}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/highlight.min.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/highlight.min.js new file mode 100644 index 0000000..d1ff8d0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/highlight.min.js @@ -0,0 +1,307 @@ +/*! + Highlight.js v11.9.0 (git: b7ec4bfafc) + (c) 2006-2024 undefined and other contributors + License: BSD-3-Clause + */ +function e(t){ return t instanceof Map?t.clear=t.delete=t.set=()=>{ + throw Error('map is read-only') }:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ + throw Error('set is read-only') +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{ + const i=t[n],s=typeof i;'object'!==s&&'function'!==s||Object.isFrozen(i)||e(i) +})),t }class t{constructor(e){ + void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1 } +ignoreMatch(){ this.isMatchIgnored=!0 }}function n(e){ + return e.replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"').replace(/'/g,''') +}function i(e,...t){ const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{ for(const t in e)n[t]=e[t] })),n }const s=e=>!!e.scope +;class r{constructor(e,t){ + this.buffer='',this.classPrefix=t.classPrefix,e.walk(this) }addText(e){ + this.buffer+=n(e) }openNode(e){ if(!s(e))return;const t=((e,{prefix:t})=>{ + if(e.startsWith('language:'))return e.replace('language:','language-') + ;if(e.includes('.')){ const n=e.split('.') +;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${'_'.repeat(t+1)}`))].join(' ') + }return`${t}${e}` })(e.scope,{prefix:this.classPrefix});this.span(t) } +closeNode(e){ s(e)&&(this.buffer+='') }value(){ return this.buffer }span(e){ + this.buffer+=`` }}const o=(e={})=>{ const t={children:[]} +;return Object.assign(t,e),t };class a{constructor(){ + this.rootNode=o(),this.stack=[this.rootNode] }get top(){ + return this.stack[this.stack.length-1] }get root(){ return this.rootNode }add(e){ + this.top.children.push(e) }openNode(e){ const t=o({scope:e}) +;this.add(t),this.stack.push(t) }closeNode(){ + if(this.stack.length>1)return this.stack.pop() }closeAllNodes(){ + for(;this.closeNode();); }toJSON(){ return JSON.stringify(this.rootNode,null,4) } +walk(e){ return this.constructor._walk(e,this.rootNode) }static _walk(e,t){ + return'string'==typeof t?e.addText(t):t.children&&(e.openNode(t), + t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e }static _collapse(e){ + 'string'!=typeof e&&e.children&&(e.children.every((e=>'string'==typeof e))?e.children=[e.children.join('')]:e.children.forEach((e=>{ + a._collapse(e) }))) }}class c extends a{constructor(e){ super(),this.options=e } + addText(e){ ''!==e&&this.add(e) }startScope(e){ this.openNode(e) }endScope(){ + this.closeNode() }__addSublanguage(e,t){ const n=e.root +;t&&(n.scope='language:'+t),this.add(n) }toHTML(){ + return new r(this,this.options).value() }finalize(){ + return this.closeAllNodes(),!0 }}function l(e){ + return e?'string'==typeof e?e:e.source:null }function g(e){ return h('(?=',e,')') } +function u(e){ return h('(?:',e,')*') }function d(e){ return h('(?:',e,')?') } +function h(...e){ return e.map((e=>l(e))).join('') }function f(...e){ const t=(e=>{ + const t=e[e.length-1] +;return'object'==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} +})(e);return'('+(t.capture?'':'?:')+e.map((e=>l(e))).join('|')+')' } +function p(e){ return RegExp(e.toString()+'|').exec('').length-1 } +const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ +;function m(e,{joinWith:t}){ let n=0;return e.map((e=>{ n+=1;const t=n +;let i=l(e),s='';for(;i.length>0;){ const e=b.exec(i);if(!e){ s+=i;break } + s+=i.substring(0,e.index), + i=i.substring(e.index+e[0].length),'\\'===e[0][0]&&e[1]?s+='\\'+(Number(e[1])+t):(s+=e[0], + '('===e[0]&&n++) }return s })).map((e=>`(${e})`)).join(t) } +const E='[a-zA-Z]\\w*',x='[a-zA-Z_]\\w*',w='\\b\\d+(\\.\\d+)?',y='(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)',_='\\b(0b[01]+)',O={ + begin:'\\\\[\\s\\S]',relevance:0},k={scope:'string',begin:'\'',end:'\'', + illegal:'\\n',contains:[O]},v={scope:'string',begin:'"',end:'"',illegal:'\\n', + contains:[O]},N=(e,t,n={})=>{ const s=i({scope:'comment',begin:e,end:t, + contains:[]},n);s.contains.push({scope:'doctag', + begin:'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)', + end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) + ;const r=f('I','a','is','so','us','to','at','if','in','it','on',/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) +;return s.contains.push({begin:h(/[ ]+/,'(',r,/[.]?[:]?([.][ ]|[ ])/,'){3}')}),s + },S=N('//','$'),M=N('/\\*','\\*/'),R=N('#','$');var A=Object.freeze({ + __proto__:null,APOS_STRING_MODE:k,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{ + scope:'number',begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N, + C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:'number', + begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{ + 'on:begin':(e,t)=>{ t.data._beginMatch=e[1] },'on:end':(e,t)=>{ + t.data._beginMatch!==e[1]&&t.ignoreMatch() }}),HASH_COMMENT_MODE:R,IDENT_RE:E, + MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:'\\.\\s*'+x,relevance:0}, + NUMBER_MODE:{scope:'number',begin:w,relevance:0},NUMBER_RE:w, + PHRASAL_WORDS_MODE:{ + begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ + },QUOTE_STRING_MODE:v,REGEXP_MODE:{scope:'regexp',begin:/\/(?=[^/\n]*\/)/, + end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}, + RE_STARTERS_RE:'!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~', + SHEBANG:(e={})=>{ const t=/^#![ ]*\// +;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:'meta',begin:t, + end:/$/,relevance:0,'on:begin':(e,t)=>{ 0!==e.index&&t.ignoreMatch() }},e) }, + TITLE_MODE:{scope:'title',begin:E,relevance:0},UNDERSCORE_IDENT_RE:x, + UNDERSCORE_TITLE_MODE:{scope:'title',begin:x,relevance:0}});function j(e,t){ + '.'===e.input[e.index-1]&&t.ignoreMatch() }function I(e,t){ + void 0!==e.className&&(e.scope=e.className,delete e.className) }function T(e,t){ + t&&e.beginKeywords&&(e.begin='\\b('+e.beginKeywords.split(' ').join('|')+')(?!\\.)(?=\\b|\\s)', + e.__beforeBegin=j,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, + void 0===e.relevance&&(e.relevance=0)) }function L(e,t){ + Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal)) }function B(e,t){ + if(e.match){ + if(e.begin||e.end)throw Error('begin & end are not supported with match') + ;e.begin=e.match,delete e.match } }function P(e,t){ + void 0===e.relevance&&(e.relevance=1) }const D=(e,t)=>{ if(!e.beforeMatch)return + ;if(e.starts)throw Error('beforeMatch cannot be used with starts') + ;const n=Object.assign({},e);Object.keys(e).forEach((t=>{ delete e[t] + })),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={ + relevance:0,contains:[Object.assign(n,{endsParent:!0})] + },e.relevance=0,delete n.beforeMatch + },H=['of','and','for','in','not','or','if','then','parent','list','value'],C='keyword' +;function $(e,t,n=C){ const i=Object.create(null) +;return'string'==typeof e?s(n,e.split(' ')):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{ + Object.assign(i,$(e[n],t,n)) })),i;function s(e,n){ + t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{ const n=t.split('|') +;i[n[0]]=[e,U(n[0],n[1])] })) } }function U(e,t){ + return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1 }const z={},W=e=>{ + console.error(e) },X=(e,...t)=>{ console.log('WARN: '+e,...t) },G=(e,t)=>{ + z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0) + },K=Error();function F(e,t,{key:n}){ let i=0;const s=e[n],r={},o={} +;for(let e=1;e<=t.length;e++)o[e+i]=s[e],r[e+i]=!0,i+=p(t[e-1]) +;e[n]=o,e[n]._emit=r,e[n]._multi=!0 }function Z(e){ (e=>{ + e.scope&&'object'==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, + delete e.scope) })(e),'string'==typeof e.beginScope&&(e.beginScope={ + _wrap:e.beginScope}),'string'==typeof e.endScope&&(e.endScope={_wrap:e.endScope +}),(e=>{ if(Array.isArray(e.begin)){ + if(e.skip||e.excludeBegin||e.returnBegin)throw W('skip, excludeBegin, returnBegin not compatible with beginScope: {}'), + K + ;if('object'!=typeof e.beginScope||null===e.beginScope)throw W('beginScope must be object'), + K;F(e,e.begin,{key:'beginScope'}),e.begin=m(e.begin,{joinWith:''}) } })(e),(e=>{ + if(Array.isArray(e.end)){ + if(e.skip||e.excludeEnd||e.returnEnd)throw W('skip, excludeEnd, returnEnd not compatible with endScope: {}'), + K + ;if('object'!=typeof e.endScope||null===e.endScope)throw W('endScope must be object'), + K;F(e,e.end,{key:'endScope'}),e.end=m(e.end,{joinWith:''}) } })(e) }function V(e){ + function t(t,n){ + return RegExp(l(t),'m'+(e.case_insensitive?'i':'')+(e.unicodeRegex?'u':'')+(n?'g':'')) + }class n{constructor(){ + this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0 } + addRule(e,t){ + t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), + this.matchAt+=p(e)+1 }compile(){ 0===this.regexes.length&&(this.exec=()=>null) + ;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:'|' + }),!0),this.lastIndex=0 }exec(e){ this.matcherRe.lastIndex=this.lastIndex + ;const t=this.matcherRe.exec(e);if(!t)return null + ;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,i) }}class s{constructor(){ + this.rules=[],this.multiRegexes=[], + this.count=0,this.lastIndex=0,this.regexIndex=0 }getMatcher(e){ + if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), + t.compile(),this.multiRegexes[e]=t,t }resumingScanAtSamePosition(){ + return 0!==this.regexIndex }considerAll(){ this.regexIndex=0 }addRule(e,t){ + this.rules.push([e,t]),'begin'===t.type&&this.count++ }exec(e){ + const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex + ;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ + const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e) } + return n&&(this.regexIndex+=n.position+1, + this.regexIndex===this.count&&this.considerAll()),n }} + if(e.compilerExtensions||(e.compilerExtensions=[]), + e.contains&&e.contains.includes('self'))throw Error('ERR: contains `self` is not supported at the top-level of a language. See documentation.') + ;return e.classNameAliases=i(e.classNameAliases||{}),function n(r,o){ const a=r +;if(r.isCompiled)return a + ;[I,B,Z,D].forEach((e=>e(r,o))),e.compilerExtensions.forEach((e=>e(r,o))), + r.__beforeBegin=null,[T,L,P].forEach((e=>e(r,o))),r.isCompiled=!0;let c=null +;return'object'==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords), + c=r.keywords.$pattern, + delete r.keywords.$pattern),c=c||/\w+/,r.keywords&&(r.keywords=$(r.keywords,e.case_insensitive)), + a.keywordPatternRe=t(c,!0), + o&&(r.begin||(r.begin=/\B|\b/),a.beginRe=t(a.begin),r.end||r.endsWithParent||(r.end=/\B|\b/), + r.end&&(a.endRe=t(a.end)), + a.terminatorEnd=l(a.end)||'',r.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(r.end?'|':'')+o.terminatorEnd)), + r.illegal&&(a.illegalRe=t(r.illegal)), + r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{ + variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{ + starts:e.starts?i(e.starts):null + }):Object.isFrozen(e)?i(e):e))('self'===e?r:e)))),r.contains.forEach((e=>{ n(e,a) + })),r.starts&&n(r.starts,o),a.matcher=(e=>{ const t=new s +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:'begin' + }))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:'end' + }),e.illegal&&t.addRule(e.illegal,{type:'illegal'}),t })(a),a }(e) }function q(e){ + return!!e&&(e.endsWithParent||q(e.starts)) }class J extends Error{ + constructor(e,t){ super(e),this.name='HTMLInjectionError',this.html=t }} +const Y=n,Q=i,ee=Symbol('nomatch'),te=n=>{ + const i=Object.create(null),s=Object.create(null),r=[];let o=!0 +;const a='Could not find the language \'{}\', did you forget to load/include a language module?',l={ + disableAutodetect:!0,name:'Plain text',contains:[]};let p={ + ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, + languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:'hljs-', + cssSelector:'pre code',languages:null,__emitter:c};function b(e){ + return p.noHighlightRe.test(e) }function m(e,t,n){ let i='',s='' +;'object'==typeof t?(i=e, + n=t.ignoreIllegals,s=t.language):(G('10.7.0','highlight(lang, code, ...args) has been deprecated.'), + G('10.7.0','Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277'), + s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};N('before:highlight',r) + ;const o=r.result?r.result:E(r.language,r.code,n) +;return o.code=r.code,N('after:highlight',o),o }function E(e,n,s,r){ + const c=Object.create(null);function l(){ if(!N.keywords)return M.addText(R) + ;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n='' +;for(;t;){ n+=R.substring(e,t.index) + ;const s=_.case_insensitive?t[0].toLowerCase():t[0],r=(i=s,N.keywords[i]);if(r){ + const[e,i]=r +;if(M.addText(n),n='',c[s]=(c[s]||0)+1,c[s]<=7&&(A+=i),e.startsWith('_'))n+=t[0];else{ + const n=_.classNameAliases[e]||e;u(t[0],n) } }else n+=t[0] + ;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R) }var i +;n+=R.substring(e),M.addText(n) }function g(){ null!=N.subLanguage?(()=>{ + if(''===R)return;let e=null;if('string'==typeof N.subLanguage){ + if(!i[N.subLanguage])return M.addText(R) + ;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top + }else e=x(R,N.subLanguage.length?N.subLanguage:null) + ;N.relevance>0&&(A+=e.relevance),M.__addSublanguage(e._emitter,e.language) + })():l(),R='' }function u(e,t){ + ''!==e&&(M.startScope(t),M.addText(e),M.endScope()) }function d(e,t){ let n=1 +;const i=t.length-1;for(;n<=i;){ if(!e._emit[n]){ n++;continue } + const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=''),n++ } } + function h(e,t){ + return e.scope&&'string'==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope), + e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), + R=''):e.beginScope._multi&&(d(e.beginScope,t),R='')),N=Object.create(e,{parent:{ + value:N}}),N }function f(e,n,i){ let s=((e,t)=>{ const n=e&&e.exec(t) +;return n&&0===n.index })(e.endRe,i);if(s){ if(e['on:end']){ const i=new t(e) +;e['on:end'](n,i),i.isMatchIgnored&&(s=!1) }if(s){ + for(;e.endsParent&&e.parent;)e=e.parent;return e } } + if(e.endsWithParent)return f(e.parent,n,i) }function b(e){ + return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0) }function m(e){ + const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const r=N +;N.endScope&&N.endScope._wrap?(g(), + u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(), + d(N.endScope,e)):r.skip?R+=t:(r.returnEnd||r.excludeEnd||(R+=t), + g(),r.excludeEnd&&(R=t));do{ + N.scope&&M.closeNode(),N.skip||N.subLanguage||(A+=N.relevance),N=N.parent + }while(N!==s.parent);return s.starts&&h(s.starts,e),r.returnEnd?0:t.length } + let w={};function y(i,r){ const a=r&&r[0];if(R+=i,null==a)return g(),0 + ;if('begin'===w.type&&'end'===r.type&&w.index===r.index&&''===a){ + if(R+=n.slice(r.index,r.index+1),!o){ const t=Error(`0 width match regex (${e})`) +;throw t.languageName=e,t.badRule=w.rule,t }return 1 } + if(w=r,'begin'===r.type)return(e=>{ + const n=e[0],i=e.rule,s=new t(i),r=[i.__beforeBegin,i['on:begin']] +;for(const t of r)if(t&&(t(e,s),s.isMatchIgnored))return b(n) + ;return i.skip?R+=n:(i.excludeBegin&&(R+=n), + g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length })(r) + ;if('illegal'===r.type&&!s){ + const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||'')+'"') +;throw e.mode=N,e }if('end'===r.type){ const e=m(r);if(e!==ee)return e } + if('illegal'===r.type&&''===a)return 1 + ;if(I>1e5&&I>3*r.index)throw Error('potential infinite loop, way more iterations than matches') + ;return R+=a,a.length }const _=O(e) +;if(!_)throw W(a.replace('{}',e)),Error('Unknown language: "'+e+'"') + ;const k=V(_);let v='',N=r||k;const S={},M=new p.__emitter(p);(()=>{ const e=[] +;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope) + ;e.forEach((e=>M.openNode(e))) })();let R='',A=0,j=0,I=0,T=!1;try{ + if(_.__emitTokens)_.__emitTokens(n,M);else{ for(N.matcher.considerAll();;){ + I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=j + ;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(j,e.index),e) +;j=e.index+t }y(n.substring(j)) }return M.finalize(),v=M.toHTML(),{language:e, + value:v,relevance:A,illegal:!1,_emitter:M,_top:N} }catch(t){ + if(t.message&&t.message.includes('Illegal'))return{language:e,value:Y(n), + illegal:!0,relevance:0,_illegalBy:{message:t.message,index:j, + context:n.slice(j-100,j+100),mode:t.mode,resultSoFar:v},_emitter:M};if(o)return{ + language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N} + ;throw t } }function x(e,t){ t=t||p.languages||Object.keys(i);const n=(e=>{ + const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)} +;return t._emitter.addText(e),t })(e),s=t.filter(O).filter(v).map((t=>E(t,e,!1))) +;s.unshift(n);const r=s.sort(((e,t)=>{ + if(e.relevance!==t.relevance)return t.relevance-e.relevance + ;if(e.language&&t.language){ if(O(e.language).supersetOf===t.language)return 1 + ;if(O(t.language).supersetOf===e.language)return-1 }return 0 })),[o,a]=r,c=o +;return c.secondBest=a,c }function w(e){ let t=null;const n=(e=>{ + let t=e.className+' ';t+=e.parentNode?e.parentNode.className:'' + ;const n=p.languageDetectRe.exec(t);if(n){ const t=O(n[1]) +;return t||(X(a.replace('{}',n[1])), + X('Falling back to no-highlight mode for this block.',e)),t?n[1]:'no-highlight' } + return t.split(/\s+/).find((e=>b(e)||O(e))) })(e);if(b(n))return + ;if(N('before:highlightElement',{el:e,language:n + }),e.dataset.highlighted)return console.log('Element previously highlighted. To highlight again, first unset `dataset.highlighted`.',e) + ;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn('One of your code blocks includes unescaped HTML. This is a potentially serious security risk.'), + console.warn('https://github.com/highlightjs/highlight.js/wiki/security'), + console.warn('The element with unescaped HTML:'), + console.warn(e)),p.throwUnescapedHTML))throw new J('One of your code blocks includes unescaped HTML.',e.innerHTML) + ;t=e;const i=t.textContent,r=n?m(i,{language:n,ignoreIllegals:!0}):x(i) +;e.innerHTML=r.value,e.dataset.highlighted='yes',((e,t,n)=>{ const i=t&&s[t]||n +;e.classList.add('hljs'),e.classList.add('language-'+i) + })(e,n,r.language),e.result={language:r.language,re:r.relevance, + relevance:r.relevance},r.secondBest&&(e.secondBest={ + language:r.secondBest.language,relevance:r.secondBest.relevance + }),N('after:highlightElement',{el:e,result:r,text:i}) }let y=!1;function _(){ + 'loading'!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0 + }function O(e){ return e=(e||'').toLowerCase(),i[e]||i[s[e]] } + function k(e,{languageName:t}){ 'string'==typeof e&&(e=[e]),e.forEach((e=>{ + s[e.toLowerCase()]=t })) }function v(e){ const t=O(e) +;return t&&!t.disableAutodetect }function N(e,t){ const n=e;r.forEach((e=>{ + e[n]&&e[n](t) })) } + 'undefined'!=typeof window&&window.addEventListener&&window.addEventListener('DOMContentLoaded',(()=>{ + y&&_() }),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_, + highlightElement:w, + highlightBlock:e=>(G('10.7.0','highlightBlock will be removed entirely in v12.0'), + G('10.7.0','Please use highlightElement now.'),w(e)),configure:e=>{ p=Q(p,e) }, + initHighlighting:()=>{ + _(),G('10.6.0','initHighlighting() deprecated. Use highlightAll() now.') }, + initHighlightingOnLoad:()=>{ + _(),G('10.6.0','initHighlightingOnLoad() deprecated. Use highlightAll() now.') + },registerLanguage:(e,t)=>{ let s=null;try{ s=t(n) }catch(t){ + if(W('Language definition for \'{}\' could not be registered.'.replace('{}',e)), + !o)throw t;W(t),s=l } + s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&k(s.aliases,{ + languageName:e}) },unregisterLanguage:e=>{ delete i[e] + ;for(const t of Object.keys(s))s[t]===e&&delete s[t] }, + listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:k, + autoDetection:v,inherit:Q,addPlugin:e=>{ (e=>{ + e['before:highlightBlock']&&!e['before:highlightElement']&&(e['before:highlightElement']=t=>{ + e['before:highlightBlock'](Object.assign({block:t.el},t)) + }),e['after:highlightBlock']&&!e['after:highlightElement']&&(e['after:highlightElement']=t=>{ + e['after:highlightBlock'](Object.assign({block:t.el},t)) }) })(e),r.push(e) }, + removePlugin:e=>{ const t=r.indexOf(e);-1!==t&&r.splice(t,1) }}),n.debugMode=()=>{ + o=!1 },n.safeMode=()=>{ o=!0 },n.versionString='11.9.0',n.regex={concat:h, + lookahead:g,either:f,optional:d,anyNumberOfTimes:u} + ;for(const t in A)'object'==typeof A[t]&&e(A[t]);return Object.assign(n,A),n + },ne=te({});ne.newInstance=()=>te({});export{ne as default}; diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/javascript.min.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/javascript.min.js new file mode 100644 index 0000000..1a8f71c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/javascript.min.js @@ -0,0 +1,80 @@ +/*! `javascript` grammar compiled for Highlight.js 11.9.0 */ +var hljsGrammar=(()=>{ 'use strict' +;const e='[A-Za-z$_][0-9A-Za-z$_]*',n=['as','in','of','if','for','while','finally','var','new','function','do','return','void','else','break','catch','instanceof','with','throw','case','default','try','switch','continue','typeof','delete','let','yield','const','class','debugger','async','await','static','import','from','export','extends'],a=['true','false','null','undefined','NaN','Infinity'],t=['Object','Function','Boolean','Symbol','Math','Date','Number','BigInt','String','RegExp','Array','Float32Array','Float64Array','Int8Array','Uint8Array','Uint8ClampedArray','Int16Array','Int32Array','Uint16Array','Uint32Array','BigInt64Array','BigUint64Array','Set','Map','WeakSet','WeakMap','ArrayBuffer','SharedArrayBuffer','Atomics','DataView','JSON','Promise','Generator','GeneratorFunction','AsyncFunction','Reflect','Proxy','Intl','WebAssembly'],s=['Error','EvalError','InternalError','RangeError','ReferenceError','SyntaxError','TypeError','URIError'],r=['setInterval','setTimeout','clearInterval','clearTimeout','require','exports','eval','isFinite','isNaN','parseFloat','parseInt','decodeURI','decodeURIComponent','encodeURI','encodeURIComponent','escape','unescape'],c=['arguments','this','super','console','window','document','localStorage','sessionStorage','module','global'],i=[].concat(r,t,s) +;return o=>{ const l=o.regex,d=e,b={begin:/<[A-Za-z0-9\\._:-]+/, + end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ + const a=e[0].length+e.index,t=e.input[a] +;if('<'===t||','===t)return void n.ignoreMatch();let s +;'>'===t&&(((e,{after:n})=>{ const a='',$={ + match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(B)], + keywords:'async',className:{1:'keyword',3:'title.function'},contains:[R]} +;return{name:'JavaScript',aliases:['js','jsx','mjs','cjs'],keywords:g,exports:{ + PARAMS_CONTAINS:w,CLASS_REFERENCE:k},illegal:/#(?![$_A-z])/, +contains:[o.SHEBANG({label:'shebang',binary:'node',relevance:5}),{ + label:'use_strict',className:'meta',relevance:10, + begin:/^\s*['"]use (strict|asm)['"]/ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,p,{match:/\$\d+/},A,k,{ + className:'attr',begin:d+l.lookahead(':'),relevance:0},$,{ + begin:'('+o.RE_STARTERS_RE+'|\\b(case|return|throw)\\b)\\s*', + keywords:'return throw case',relevance:0,contains:[p,o.REGEXP_MODE,{ + className:'function',begin:B,returnBegin:!0,end:'\\s*=>',contains:[{ + className:'params',variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ + className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, + excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0},{match:/\s+/, + relevance:0},{variants:[{begin:'<>',end:''},{ + match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:b.begin, + 'on:begin':b.isTrulyOpeningTag,end:b.end}],subLanguage:'xml',contains:[{ + begin:b.begin,end:b.end,skip:!0,contains:['self']}]}]},I,{ + beginKeywords:'while if switch catch for'},{ + begin:'\\b(?!function)'+o.UNDERSCORE_IDENT_RE+'\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{', + returnBegin:!0,label:'func.def',contains:[R,o.inherit(o.TITLE_MODE,{begin:d, + className:'title.function'})]},{match:/\.\.\./,relevance:0},C,{match:'\\$'+d, + relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:'title.function'}, + contains:[R]},x,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, + className:'variable.constant'},O,M,{match:/\$[(.]/}]} } })() +;export default hljsGrammar; diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/style.css b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/style.css new file mode 100644 index 0000000..39e58cf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/style.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#fff}.hljs-subst,.hljs-title{font-weight:400;color:#000}.hljs-title.function_{color:#7a7a43}.hljs-code,.hljs-comment,.hljs-quote{color:#8c8c8c;font-style:italic}.hljs-meta{color:#9e880d}.hljs-section{color:#871094}.hljs-built_in,.hljs-keyword,.hljs-literal,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag,.hljs-symbol,.hljs-template-tag,.hljs-type,.hljs-variable.language_{color:#0033b3}.hljs-attr,.hljs-property{color:#871094}.hljs-attribute{color:#174ad4}.hljs-number{color:#1750eb}.hljs-regexp{color:#264eff}.hljs-link{text-decoration:underline;color:#006dcc}.hljs-meta .hljs-string,.hljs-string{color:#067d17}.hljs-char.escape_{color:#0037a6}.hljs-doctag{text-decoration:underline}.hljs-template-variable{color:#248f8f}.hljs-addition{background:#bee6be}.hljs-deletion{background:#d6d6d6}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/xml.min.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/xml.min.js new file mode 100644 index 0000000..822136b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/highlight/xml.min.js @@ -0,0 +1,29 @@ +/*! `xml` grammar compiled for Highlight.js 11.9.0 */ +var hljsGrammar=(()=>{ 'use strict';return e=>{ + const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={ + className:'symbol',begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/, + contains:[{className:'keyword',begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] + },i=e.inherit(t,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{ + className:'string'}),l=e.inherit(e.QUOTE_STRING_MODE,{className:'string'}),r={ + endsWithParent:!0,illegal:/`]+/}]}]}]};return{ + name:'HTML, XML', + aliases:['html','xhtml','rss','atom','xjb','xsd','xsl','plist','wsf','svg'], + case_insensitive:!0,unicodeRegex:!0,contains:[{className:'meta',begin://,relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{ + className:'meta',begin://,contains:[t,i,l,c]}]}] + },e.COMMENT(//,{relevance:10}),{begin://, + relevance:10},s,{className:'meta',end:/\?>/,variants:[{begin:/<\?xml/, + relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:'tag', + begin:/)/,end:/>/,keywords:{name:'style'},contains:[r],starts:{ + end:/<\/style>/,returnEnd:!0,subLanguage:['css','xml']}},{className:'tag', + begin:/)/,end:/>/,keywords:{name:'script'},contains:[r],starts:{ + end:/<\/script>/,returnEnd:!0,subLanguage:['javascript','handlebars','xml']}},{ + className:'tag',begin:/<>|<\/>/},{className:'tag', + begin:a.concat(//,/>/,/\s/)))), + end:/\/?>/,contains:[{className:'name',begin:n,relevance:0,starts:r}]},{ + className:'tag',begin:a.concat(/<\//,a.lookahead(a.concat(n,/>/))),contains:[{ + className:'name',begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]} } +})();export default hljsGrammar; diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/index.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/index.js new file mode 100644 index 0000000..69391ae --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/index.js @@ -0,0 +1,413 @@ +import is, {hasProperty} from '@form-create/utils/lib/type'; +import {parseFn} from '@form-create/utils/lib/json'; +import toCase from '@form-create/utils/lib/tocase'; +import {computed, isRef, ref, unref} from 'vue'; +import ZhCn from '../locale/zh-cn'; +import {message} from './message'; +import { error } from 'electron-log'; + +export {formTemplate, formTemplateV3, htmlTemplate} from './template'; + + +export function makeRequiredRule() { + return { + type: 'Required', field: 'formCreate$required', title: '是否必填' + }; +} + +export function addAutoKeyMap(cm) { +} + +export function makeTreeOptions(pre, config, level, data = []) { + if (!config.id) { + config.id = 1; + } + level && level--; + for (let i = 0; i < 3; i++) { + const item = { + [config.label]: pre + level * 10 + (i + 1), + [config.value]: '' + config.id++, + }; + if (level) { + makeTreeOptions(pre, config, level, item.children = []); + } + data.push(item); + } + return data; +} + +export function makeOptionsRule(t, to) { + const options = [ + {'label': t('fetch.optionsType.struct'), 'value': 2}, + {'label': t('fetch.optionsType.fetch'), 'value': 1}, + ]; + + const control = [ + { + value: 1, + rule: [ + { + type: 'FetchConfig', + field: 'formCreateEffect>fetch', + props: { + to + } + } + ] + }, + { + value: 2, + rule: [ + { + type: 'TableOptions', + field: 'formCreate' + upper(to).replace('.', '>'), + props: { + column: [{label: t('props.key'), key: 'label'}, {value: true, label: t('props.value'), key: 'value'}], + keyValue: 'label' + } + }, + ], + } + ]; + + return { + type: 'radio', + title: t('props.options'), + field: '_optionType', + value: 2, + options, + props: { + type: 'button' + }, + control + }; +} + +export function makeTreeOptionsRule(t, to, label, value) { + const options = [ + {'label': t('fetch.optionsType.struct'), 'value': 2}, + {'label': t('fetch.optionsType.fetch'), 'value': 1}, + ]; + + const control = [ + { + value: 1, + rule: [ + { + type: 'FetchConfig', + field: 'formCreateEffect>fetch', + props: { + to + } + } + ] + }, + { + value: 2, + rule: [ + { + type: 'TreeOptions', + field: 'formCreate' + upper(to).replace('.', '>'), + props: { + columns: { + label, + value + }, + keyValue: label, + } + }, + ], + } + ]; + + return { + type: 'radio', + title: t('props.options'), + field: '_optionType', + value: 2, + options, + props: { + type: 'button' + }, + control + }; +} + +export function upper(str) { + return str.replace(str[0], str[0].toLocaleUpperCase()); +} + +export const toJSON = function (val) { + const type = /object ([a-zA-Z]*)/.exec(Object.prototype.toString.call(val)); + if (type && _toJSON[type[1].toLowerCase()]) { + return _toJSON[type[1].toLowerCase()](val); + } else { + return val; + } +}; + +const _toJSON = { + object: function (val) { + var json = []; + for (var i in val) { + if (!hasProperty(val, i)) continue; + json.push( + toJSON(i) + ': ' + + ((val[i] != null) ? toJSON(val[i]) : 'null') + ); + } + return '{\n ' + json.join(',\n ') + '\n}'; + }, + function: function (val) { + val = '' + val; + var exec = (/^ *([\w]+) *\(/).exec(val); + if (exec && exec[1] !== 'function') { + return 'function ' + val; + } + return val; + }, + array: function (val) { + for (var i = 0, json = []; i < val.length; i++) + json[i] = (val[i] != null) ? toJSON(val[i]) : 'null'; + return '[' + json.join(', ') + ']'; + }, + string: function (val) { + var tmp = val.split(''); + for (var i = 0; i < tmp.length; i++) { + var c = tmp[i]; + (c >= ' ') ? + (c === '\\') ? (tmp[i] = '\\\\') : + (c === '"') ? (tmp[i] = '\\"') : 0 : + (tmp[i] = + (c === '\n') ? '\\n' : + (c === '\r') ? '\\r' : + (c === '\t') ? '\\t' : + (c === '\b') ? '\\b' : + (c === '\f') ? '\\f' : + (c = c.charCodeAt(), ('\\u00' + ((c > 15) ? 1 : 0) + (c % 16))) + ); + } + return '"' + tmp.join('') + '"'; + } +}; + +export const deepParseFn = function (target) { + if (target && typeof target === 'object') { + for (let key in target) { + if (Object.prototype.hasOwnProperty.call(target, key)) { + let data = target[key]; + if (Array.isArray(data) || is.Object(data)) { + deepParseFn(data); + } + if (is.String(data)) { + target[key] = parseFn(data); + } + } + } + } + return target; +}; + + +export function deepGet(object, path, defaultValue) { + path = (path || '').split('.'); + + let index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[path[index++]]; + } + return (index && index === length) ? (object !== undefined ? object : defaultValue) : defaultValue; +} + +export const buildTranslator = (locale) => (path, option) => translate(path, option, unref(locale)); + +export const translate = (path, option, locale) => + deepGet(locale, path, '').replace( + /\{(\w+)\}/g, + (_, key) => `${option?.[key] ?? `{${key}}`}` + ) + +export const buildLocaleContext = (locale) => { + const lang = computed(() => unref(locale).name) + const name = computed(() => upper(toCase(lang.value || ''))) + const localeRef = isRef(locale) ? locale : ref(locale) + return { + lang, + name, + locale: localeRef, + t: buildTranslator(locale), + } +} + +export const useLocale = (locale) => { + return buildLocaleContext(computed(() => locale.value || ZhCn)) +} + +export const localeOptions = (t, options, prefix) => { + return options.map(opt => { + opt.label = t((prefix || 'props') + '.' + opt.label || opt.value) || opt.label; + return opt; + }) +} + +export const localeProps = (t, prefix, rules) => { + return rules.map(rule => { + if (rule.field === 'formCreate$required') { + rule.title = t('validate.required') || rule.title; + } else if (rule.field && rule.field !== '_optionType') { + rule.title = t('com.' + prefix + '.' + rule.field) || rule.title; + } + if (rule.type === 'template' && is.trueArray(rule.children)) { + rule.children = localeProps(t, prefix, rule.children); + } + return rule; + }) +} + +export const getRuleTree = (children) => { + const tree = []; + children && children.forEach(rule => { + if (rule._fc_drag_tag) { + const item = { + id: rule.__fc__.id, + rule, + children: getRuleTree(rule.children), + }; + if (!item.children.length) { + delete item.children; + } + tree.push(item); + } else { + tree.push(...getRuleTree(rule.children)); + } + }); + return tree; +} + + +export const getFormRuleDescription = (tree) => { + const getTree = (children) => { + const tree = []; + children && children.forEach(rule => { + if (rule.field) { + rule.children = getTree(rule.children || []); + if (!rule.children.length) { + delete rule.children; + } + tree.push(rule); + } else { + tree.push(...getTree(rule.children || [])); + } + }); + return tree; + } + return getTree(tree); +}; + +export const getRuleDescription = (children) => { + const getTree = (children) => { + const tree = []; + children && children.forEach(rule => { + if (typeof rule !== 'object') { + return; + } + if (rule._fc_drag_tag) { + const item = { + _fc_id: rule._fc_id, + type: rule.type, + field: rule.field, + title: rule.title, + name: rule.name, + slot: rule.slot, + props: {...rule.props || {}}, + children: getTree(rule.children || []) + }; + if (rule.children && typeof rule.children[0] === 'string') { + item.content = rule.children[0]; + } + if (!item.children.length) { + delete item.children; + } + tree.push(item); + } else { + tree.push(...getTree(rule.children)); + } + }); + return tree; + } + return getTree(children); +}; + +export function getInjectArg(t) { + return { + name: '$inject', + columns: [ + {label: '$inject.api', info: t('event.inject.api'), type: 'Api'}, + {label: '$inject.rule', info: t('event.inject.rule'), type: 'Rule[]'}, + {label: '$inject.self', info: t('event.inject.self'), type: 'Rule'}, + {label: '$inject.option', info: t('event.inject.option'), type: 'Object'}, + {label: '$inject.args', info: t('event.inject.args'), type: 'Array'}, + ] + } +} + +export function isElementInside(x, y, element) { + const rect = element.getBoundingClientRect(); + return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; +} + +export function isNull(v) { + return ['', null, undefined].indexOf(v) !== -1; +} + +export function escapeRegExp(str) { + return str.replace(/[\ .*+?^${}()|[\]\\]/g, '\\$&'); +} + +export function compareVersion(v1, v2) { + const a1 = v1.split('.'); + const a2 = v2.split('.'); + const minLength = Math.min(a1.length, a2.length); + + for (var i = 0; i < minLength; i++) { + var diff = parseInt(a1[i], 10) - parseInt(a2[i], 10); + if (diff > 0) { + return 1; + } else if (diff < 0) { + return -1; + } + } + + return a1.length === a2.length ? 0 : (a1.length < a2.length ? -1 : 1); +} + +export function copyTextToClipboard(text, id) { + const textArea = document.createElement('textarea'); + + textArea.style.position = 'fixed'; + textArea.style.top = 0; + textArea.style.left = '-9999px'; + + textArea.value = text; + + document.body.appendChild(textArea); + + textArea.focus(); + textArea.select(); + + try { + document.execCommand('copy'); + } catch (err) { + error('Oops, unable to copy'); + } + + message('Copied', 'success', id); + + document.body.removeChild(textArea); +} + +export function uniqueArray(arr) { + return arr.filter((item, index) => arr.indexOf(item) === index); +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/locale.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/locale.js new file mode 100644 index 0000000..2517cc4 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/locale.js @@ -0,0 +1,24 @@ +import {useLocale} from './index'; +import {ref} from 'vue'; +import ZhCn from '../locale/zh-cn'; + +let _t = null; +let locale = ref(null); + +function t(...args) { + return _t(...args); +} + +const globalUseLocale = (_locale) => { + locale.value = _locale || ZhCn; + const data = useLocale(locale); + _t = data.t; + return data; +}; + +globalUseLocale(); + +export default globalUseLocale; + +export {t, locale}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/message.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/message.js new file mode 100644 index 0000000..d0609b1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/message.js @@ -0,0 +1,22 @@ +import {ElMessage} from 'element-plus'; + + +const message = (msg, type, id) => { + return ElMessage({ + message: msg, + plain: true, + offset: 30, + type: type || 'info', + customClass: '_fc-message-tip', + appendTo: id + }); +}; + +const errorMessage = (msg, id) => { + return message(msg, 'error', id); + +}; + +export default errorMessage; + +export {message} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/template.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/template.js new file mode 100644 index 0000000..e2cb877 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panel-designer/utils/template.js @@ -0,0 +1,105 @@ + +export function formTemplate(json, options) { + return ` + + + + + + + +` +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panelEditor.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panelEditor.vue new file mode 100644 index 0000000..d496a3b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panelEditor.vue @@ -0,0 +1,233 @@ + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panelView.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panelView.vue new file mode 100644 index 0000000..725d9e8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/panel/panelView.vue @@ -0,0 +1,184 @@ + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/serviceConfig.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/serviceConfig.vue new file mode 100644 index 0000000..bde8363 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/serviceConfig.vue @@ -0,0 +1,602 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/si.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/si.vue new file mode 100644 index 0000000..ed9dfe4 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/si.vue @@ -0,0 +1,1296 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/soa.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/soa.vue new file mode 100644 index 0000000..7fc2cd0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/soa.vue @@ -0,0 +1,399 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/someip.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/someip.vue new file mode 100644 index 0000000..6993dea --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/someip/someip.vue @@ -0,0 +1,949 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/test.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/test.vue new file mode 100644 index 0000000..1f46719 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/test.vue @@ -0,0 +1,1616 @@ + + + + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/buildError.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/buildError.vue new file mode 100644 index 0000000..199e6d1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/buildError.vue @@ -0,0 +1,93 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/canAddr.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/canAddr.vue new file mode 100644 index 0000000..d841279 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/canAddr.vue @@ -0,0 +1,657 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/config.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/config.vue new file mode 100644 index 0000000..51c9e3c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/config.vue @@ -0,0 +1,293 @@ + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/dbchoose.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/dbchoose.vue new file mode 100644 index 0000000..f5c0fd6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/dbchoose.vue @@ -0,0 +1,113 @@ + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/ethAddr.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/ethAddr.vue new file mode 100644 index 0000000..8c834f8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/ethAddr.vue @@ -0,0 +1,658 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/index.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/index.vue new file mode 100644 index 0000000..d6e4486 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/index.vue @@ -0,0 +1,853 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/linAddr.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/linAddr.vue new file mode 100644 index 0000000..afb86a5 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/linAddr.vue @@ -0,0 +1,188 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/param.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/param.vue new file mode 100644 index 0000000..2f716c3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/param.vue @@ -0,0 +1,730 @@ + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/sequence.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/sequence.vue new file mode 100644 index 0000000..58f6bbf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/sequence.vue @@ -0,0 +1,431 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/service.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/service.vue new file mode 100644 index 0000000..a7645af --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/service.vue @@ -0,0 +1,1082 @@ + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/subsequence.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/subsequence.vue new file mode 100644 index 0000000..f8c21ba --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/subsequence.vue @@ -0,0 +1,584 @@ + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/testercan.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/testercan.vue new file mode 100644 index 0000000..e2bea32 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/tester/testercan.vue @@ -0,0 +1,1485 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/trace.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/trace.vue new file mode 100644 index 0000000..b385059 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/trace.vue @@ -0,0 +1,2628 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/uds.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/uds.vue new file mode 100644 index 0000000..926f1e6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/uds.vue @@ -0,0 +1,1872 @@ + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/variable.vue b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/variable.vue new file mode 100644 index 0000000..d4ac9fb --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/views/uds/variable.vue @@ -0,0 +1,631 @@ + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/worker/dataParse.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/worker/dataParse.ts new file mode 100644 index 0000000..34a9903 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/worker/dataParse.ts @@ -0,0 +1,852 @@ +import { writeMessageData } from '../database/dbc/calc' +import { writeMessageData as writeLinMessageData } from '../database/ldf/calc' + +import { CanMessage } from 'nodeCan/can' +import { LinMsg } from 'nodeCan/lin' +import { ServiceItem } from 'nodeCan/uds' +import { SomeipMessage, SomeipMessageTypeMap } from 'nodeCan/someip' +import { DataSet } from 'src/preload/data' +import { OsEvent, TaskStatus, taskStatusRecord, TaskType, taskTypeRecord } from 'nodeCan/osEvent' +import OsStatistics from './osStatistics' +// Database reference +let database: DataSet['database'] + +const osStatistics: Map = new Map() +function parseLinData(raw: any) { + const findDb = (db?: string) => { + if (!db) return null + return database.lin[db] + } + + const result: Record = {} + const list: any[] = [] + + for (const sraw of raw) { + const msg: LinMsg = sraw.message.data + const db = findDb(msg.database) + + if (db) { + if (!msg.name) { + for (const frame of Object.values(db.frames)) { + if (frame.id === msg.frameId) { + msg.name = frame.name + break + } + } + } + if (msg.name) { + //find frame by frameId + const frame = db.frames[msg.name] + // Process signals if available + if (frame && frame.signals) { + msg.signals = {} + writeLinMessageData(frame, msg.data, db) + for (const signal of frame.signals) { + // Find signal definition + const signalDef = db.signals[signal.name] + if (!signalDef) continue + + // Create signal key + const signalKey = `lin.${db.name}.${frame.name}.signals.${signal.name}` + + // Initialize array if needed + if (!result[signalKey]) { + result[signalKey] = [] + } + + //转为秒 + const ts = parseFloat(((msg.ts || 0) / 1000000).toFixed(6)) + const value = signalDef.physValue + result[signalKey].push([ + ts, + { + value: value, + rawValue: signalDef.value + } + ]) + msg.signals[signal.name] = signalDef + } + } + } + } + list.push(sraw) + } + result['linBase'] = list + return result +} + +function parseCanData(raw: any) { + const result: Record = {} + const findDb = (db?: string) => { + if (!db) return null + return database.can[db] + } + const list: any[] = [] + + for (const sraw of raw) { + const msg: CanMessage = sraw.message.data + const db = findDb(msg.database) + if (db) { + const frame = Object.values(db.messages).find((item) => item.id === msg.id) + if (frame) { + msg.name = frame.name + msg.signals = {} + writeMessageData(frame, msg.data, db) + for (const signal of Object.values(frame.signals)) { + const signalKey = `can.${db.name}.${frame.name}.signals.${signal.name}` + if (!result[signalKey]) { + result[signalKey] = [] + } + const ts = parseFloat(((msg.ts || 0) / 1000000).toFixed(6)) + const value = signal.physValue + result[signalKey].push([ + ts, + { + value: value, + rawValue: signal.value + } + ]) + msg.signals[signal.name] = signal + } + } + } + + list.push(sraw) + } + result['canBase'] = list + return result +} + +function parseORTIData(raw: any) { + const result: Record = {} + const findDb = (db?: string) => { + if (!db) return null + return database.orti[db] + } + const list: any[] = [] + + for (const rawEvent of raw) { + const osEvent: OsEvent = rawEvent.message.data + + const ts = rawEvent.message.ts + const db = findDb(osEvent.database) + + const eventData = { + name: '', + ts: ts, + data: `Index:${osEvent.index} Time:${osEvent.ts} Core:${osEvent.coreId} ${getStatusDescription(osEvent.type, osEvent.status)}`, + id: getID(osEvent.type, osEvent.id, osEvent.coreId), + raw: osEvent + } + if (db) { + const timestampInSeconds = parseFloat(((ts || 0) / 1000000).toFixed(6)) + + let name + if (osEvent.type == TaskType.TASK || osEvent.type == TaskType.ISR) { + // Find matching configuration for this event + const config = db.coreConfigs.find( + (item) => + item.coreId === osEvent.coreId && item.type === osEvent.type && item.id === osEvent.id + ) + name = config?.name + } else if (osEvent.type == TaskType.RESOURCE) { + const config = db.resourceConfigs.find( + (item) => item.coreId === osEvent.coreId && item.id === osEvent.id + ) + name = config?.name + } else if (osEvent.type == TaskType.SERVICE) { + const config = db.serviceConfigs.find((item) => item.id === osEvent.id) + name = config?.name + } else if (osEvent.type == TaskType.HOOK) { + const config = db.hostConfigs.find((item) => item.id === osEvent.id) + name = config?.name + } else if (osEvent.type == TaskType.RUNABLE) { + name = 'Runable' + } + eventData.name = name || '' + + const osStat = osStatistics.get(db.id) + if (osStat) { + const pr = osStat.processEvent(osEvent) + for (const item of pr) { + if (item.error) { + list.push({ + message: { + method: 'osError', + error: item.error, + ts: ts + } + }) + continue + } + if (!result[item.id]) { + result[item.id] = [] + } + result[item.id].push([ + timestampInSeconds, + { + value: item.value.value, + rawValue: item.value.rawValue + } + ]) + } + } + } + + list.push({ + message: { + method: 'osEvent', + data: eventData + }, + label: db?.name, + instance: db?.name + }) + } + + result['osEvent'] = list + + return result +} + +function getID(type: TaskType, id: number, coreId: number): string { + return `${taskTypeRecord[type]}.${id}_${coreId}` +} +// Helper function to get status description for different event types +function getStatusDescription(type: TaskType, status: number): string { + switch (type) { + case TaskType.TASK: + return `Status:${taskStatusRecord[status as TaskStatus] || `Unknown(${status})`}` + case TaskType.ISR: + return `Status:${status === 0 ? 'Start' : 'Stop'}` + case TaskType.SPINLOCK: + return `Status:${status === 0 ? 'Locked' : 'Unlocked'}` + case TaskType.RESOURCE: + return `Status:${status === 0 ? 'Start' : 'Stop'}` + case TaskType.HOOK: + return `Param:${status}` + case TaskType.SERVICE: + return `Param:${status}` + default: + return `Status:${status}` + } +} +// Initialize database reference +function initDataBase(db: DataSet['database']) { + database = db +} + +function parseUdsData(raw: any, method: string) { + const result: Record = {} + const findDb = (db?: string) => { + if (!db) return null + return database.can[db] + } + const list: any[] = [] + + for (const sraw of raw) { + const msg = sraw.message.data as { + service: ServiceItem + ts: number + recvData?: Uint8Array + msg?: string + } + + const params = method == 'udsSent' ? msg.service.params : msg.service.respParams + + ;(msg as any).children = [] + + for (const param of params) { + ;(msg as any).children.push({ + name: param.name, + data: param.phyValue + }) + } + + list.push(sraw) + } + + result[method] = list + return result +} +function parseSetVar(data: any) { + const result: Record = {} + for (const item of data) { + const val = item.message.data + const ts = parseFloat(((item.message.ts || 0) / 1000000).toFixed(6)) + if (Array.isArray(val)) { + for (const sval of val) { + if (!result[sval.id]) { + result[sval.id] = [] + } + result[sval.id].push([ + ts, + { + value: sval.value, + rawValue: sval.value + } + ]) + } + } + } + return result +} + +function parsePluginEvent(data: any) { + const result: Record = {} + for (const item of data) { + const val = item.message + result[`${val.method}.${val.id}.${val.event}`] = val.data + } + return result +} + +function parsePluginError(data: any) { + const result: Record = {} + for (const item of data) { + const val = item.message + result[`${val.method}.${val.id}`] = { + msg: val.msg, + data: val.data + } + } + return result +} + +function getSomeipReturnCodeDesc(code: number) { + const map: Record = { + 0x00: 'E_OK', + 0x01: 'E_NOT_OK', + 0x02: 'E_UNKNOWN_SERVICE', + 0x03: 'E_UNKNOWN_METHOD', + 0x04: 'E_NOT_READY', + 0x05: 'E_NOT_REACHABLE', + 0x06: 'E_TIMEOUT', + 0x07: 'E_WRONG_PROTOCOL_VERSION', + 0x08: 'E_WRONG_INTERFACE_VERSION', + 0x09: 'E_MALFORMED_MESSAGE', + 0x0a: 'E_WRONG_MESSAGE_TYPE' + } + return map[code] || 'UNKNOWN' +} + +function parseIPv4FromBuffer(data: Uint8Array, offset: number) { + if (offset + 4 > data.length) return '0.0.0.0' + return `${data[offset]}.${data[offset + 1]}.${data[offset + 2]}.${data[offset + 3]}` +} + +function toUint8Array(input: any): Uint8Array { + if (!input) return new Uint8Array() + if (input instanceof Uint8Array) return input + if (ArrayBuffer.isView(input)) + return new Uint8Array(input.buffer, input.byteOffset, input.byteLength) + if (input instanceof ArrayBuffer) return new Uint8Array(input) + if (Array.isArray(input)) return new Uint8Array(input) + if (typeof input === 'object' && input.type === 'Buffer' && Array.isArray(input.data)) { + return new Uint8Array(input.data) + } + return new Uint8Array() +} + +type ParsedSomeipMessage = Omit & { payload: Uint8Array } +type DetailNode = { name: string; data: string; children?: DetailNode[] } + +function decodeSomeipFromRaw( + raw: { header?: any; data?: any; ts?: number } | undefined +): ParsedSomeipMessage { + const header = toUint8Array(raw?.header) + const data = toUint8Array(raw?.data) + const ts = raw?.ts || 0 + const protocolMap: Record = { + 0: 'local', + 1: 'udp', + 2: 'tcp', + 3: 'unknown' + } + const msg: ParsedSomeipMessage = { + sending: false, + service: 0, + instance: 0, + method: 0, + client: 0, + session: 0, + protocolVersion: 0, + interfaceVersion: 0, + messageType: 255 as any, + returnCode: 0, + payload: new Uint8Array(), + ts + } + if (data.length >= 16) { + msg.service = (data[0] << 8) | data[1] + msg.method = (data[2] << 8) | data[3] + msg.client = (data[8] << 8) | data[9] + msg.session = (data[10] << 8) | data[11] + msg.protocolVersion = data[12] + msg.interfaceVersion = data[13] + msg.messageType = data[14] as any + msg.returnCode = data[15] + msg.payload = data.subarray(16) + } else { + msg.payload = data + } + if (header.length >= 10) { + msg.ip = parseIPv4FromBuffer(header, 0) + msg.port = (header[4] << 8) | header[5] + msg.protocol = protocolMap[header[6]] || 'unknown' + msg.sending = header[7] === 1 + msg.instance = (header[8] << 8) | header[9] + } + return msg +} + +function parseSdOption(optionType: number, data: Uint8Array) { + if (data.length < 1) return [] + const children: DetailNode[] = [] + const l4ProtocolMap: Record = { + 0x06: 'TCP', + 0x11: 'UDP' + } + + if (optionType === 0x04 || optionType === 0x14 || optionType === 0x24 || optionType === 0x26) { + if (optionType === 0x04 || optionType === 0x14) { + if (data.length >= 9) { + children.push({ name: 'Reserved', data: `0x${data[0].toString(16).padStart(2, '0')}` }) + children.push({ name: 'IPv4 Address', data: parseIPv4FromBuffer(data, 1) }) + children.push({ name: 'Reserved 2', data: `0x${data[5].toString(16).padStart(2, '0')}` }) + const protocol = l4ProtocolMap[data[6]] || `0x${data[6].toString(16).padStart(2, '0')}` + children.push({ name: 'Protocol', data: protocol }) + const port = (data[7] << 8) | data[8] + children.push({ name: 'Port', data: `${port}` }) + } + } else { + children.push({ + name: 'Detail', + data: `IPv6 option payload (${data.length} bytes)` + }) + } + } else { + children.push({ + name: 'Raw Data', + data: Array.from(data) + .map((v) => v.toString(16).padStart(2, '0')) + .join(' ') + }) + } + return children +} + +function parseSdPayload(payload: Uint8Array) { + const children: DetailNode[] = [] + if (payload.length < 12) { + children.push({ name: 'Service Discovery', data: 'Malformed SD payload (too short)' }) + return children + } + + const flags = payload[0] + const rebootFlag = (flags & 0x80) !== 0 + const unicastFlag = (flags & 0x40) !== 0 + const explicitInitialDataControlFlag = (flags & 0x20) !== 0 + + const reserved = `0x${payload[1].toString(16).padStart(2, '0')}${payload[2].toString(16).padStart(2, '0')}${payload[3].toString(16).padStart(2, '0')}` + + const entriesLength = (payload[4] << 24) | (payload[5] << 16) | (payload[6] << 8) | payload[7] + const entriesStart = 8 + const entriesEnd = entriesStart + entriesLength + if (entriesEnd > payload.length) { + children.push({ name: 'Entries', data: 'Malformed entries length' }) + return children + } + + const entriesChildren: DetailNode[] = [] + const entryTypeMap: Record = { + 0x00: 'Find Service', + 0x01: 'Offer Service', + 0x06: 'Subscribe Eventgroup', + 0x07: 'Subscribe Eventgroup ACK' + } + for (let i = entriesStart; i + 15 < entriesEnd; i += 16) { + const type = payload[i] + const index1 = payload[i + 1] + const index2 = payload[i + 2] + const numOpt = payload[i + 3] + const numOpt1 = (numOpt & 0xf0) >> 4 + const numOpt2 = numOpt & 0x0f + const serviceId = (payload[i + 4] << 8) | payload[i + 5] + const instanceId = (payload[i + 6] << 8) | payload[i + 7] + const majorVersion = payload[i + 8] + const ttl = (payload[i + 9] << 16) | (payload[i + 10] << 8) | payload[i + 11] + const tailRaw = + (payload[i + 12] << 24) | (payload[i + 13] << 16) | (payload[i + 14] << 8) | payload[i + 15] + + const entryLabel = entryTypeMap[type] || `Unknown(0x${type.toString(16).padStart(2, '0')})` + const baseSummary = `${entryLabel} S:0x${serviceId + .toString(16) + .padStart(4, '0')} I:0x${instanceId + .toString(16) + .padStart( + 4, + '0' + )} Maj:${majorVersion} TTL:${ttl} Opt:[${index1}+${numOpt1}, ${index2}+${numOpt2}]` + if (type === 0x00 || type === 0x01) { + entriesChildren.push({ + name: `Entry ${Math.floor((i - entriesStart) / 16)}`, + data: `${entryLabel}`, + children: [ + { + name: 'Service/Instance', + data: `S:0x${serviceId.toString(16).padStart(4, '0')} I:0x${instanceId.toString(16).padStart(4, '0')}` + }, + { name: 'Version/TTL', data: `Maj:${majorVersion} Min:${tailRaw >>> 0} TTL:${ttl}` }, + { name: 'OptionRefs', data: `[${index1}+${numOpt1}, ${index2}+${numOpt2}]` } + ] + }) + } else if (type === 0x06 || type === 0x07) { + const counter = (tailRaw >>> 16) & 0x0f + const eventgroup = tailRaw & 0xffff + entriesChildren.push({ + name: `Entry ${Math.floor((i - entriesStart) / 16)}`, + data: `${entryLabel}`, + children: [ + { + name: 'Service/Instance', + data: `S:0x${serviceId.toString(16).padStart(4, '0')} I:0x${instanceId.toString(16).padStart(4, '0')}` + }, + { name: 'Version/TTL', data: `Maj:${majorVersion} TTL:${ttl}` }, + { + name: 'Eventgroup', + data: `Cnt:${counter} EG:0x${eventgroup.toString(16).padStart(4, '0')}` + }, + { name: 'OptionRefs', data: `[${index1}+${numOpt1}, ${index2}+${numOpt2}]` } + ] + }) + } else { + entriesChildren.push({ + name: `Entry ${Math.floor((i - entriesStart) / 16)}`, + data: `${entryLabel}`, + children: [ + { + name: 'Service/Instance', + data: `S:0x${serviceId.toString(16).padStart(4, '0')} I:0x${instanceId.toString(16).padStart(4, '0')}` + }, + { name: 'Version/TTL', data: `Maj:${majorVersion} TTL:${ttl}` }, + { name: 'Tail', data: `0x${(tailRaw >>> 0).toString(16).padStart(8, '0')}` }, + { name: 'OptionRefs', data: `[${index1}+${numOpt1}, ${index2}+${numOpt2}]` } + ] + }) + } + } + children.push({ + name: 'SD', + data: `Flags:0x${flags.toString(16).padStart(2, '0')} Reboot:${rebootFlag} Unicast:${unicastFlag} EIDC:${explicitInitialDataControlFlag} Reserved:${reserved}` + }) + children.push({ + name: 'Entries', + data: `${entriesChildren.length} item(s)`, + children: entriesChildren + }) + + const optionsLenPos = entriesEnd + if (optionsLenPos + 4 > payload.length) { + children.push({ name: 'Length of Options Array', data: 'Malformed options length' }) + return children + } + const optionsLength = + (payload[optionsLenPos] << 24) | + (payload[optionsLenPos + 1] << 16) | + (payload[optionsLenPos + 2] << 8) | + payload[optionsLenPos + 3] + const optionsStart = optionsLenPos + 4 + const optionsEnd = optionsStart + optionsLength + if (optionsEnd > payload.length) { + children.push({ name: 'Options Array', data: 'Malformed options length' }) + return children + } + + const optionTypeMap: Record = { + 0x01: 'Configuration Option', + 0x02: 'Load Balancing Option', + 0x04: 'IPv4 Endpoint Option', + 0x06: 'IPv4 Multicast Option', + 0x14: 'IPv4 SD Endpoint Option', + 0x24: 'IPv6 Endpoint Option', + 0x26: 'IPv6 Multicast Option' + } + let offset = optionsStart + let optionIndex = 0 + const optionChildrenList: DetailNode[] = [] + while (offset + 4 <= optionsEnd) { + const length = (payload[offset] << 8) | payload[offset + 1] + if (length < 2) { + children.push({ name: `Option ${optionIndex}`, data: 'Malformed option length' }) + break + } + const optionTotal = length + 2 + if (offset + optionTotal > optionsEnd) { + children.push({ name: `Option ${optionIndex}`, data: 'Option exceeds options array length' }) + break + } + const type = payload[offset + 2] + const reserved = payload[offset + 3] + const dataStart = offset + 4 + const dataEnd = offset + optionTotal + const optionData = payload.subarray(dataStart, dataEnd) + const typeText = optionTypeMap[type] || `Unknown(0x${type.toString(16).padStart(2, '0')})` + + const optionSummary = `${typeText} Len:${length} Res:0x${reserved.toString(16).padStart(2, '0')}` + const optionChildren = parseSdOption(type, optionData) + optionChildrenList.push({ + name: `Option ${optionIndex}`, + data: optionSummary, + children: optionChildren.length ? optionChildren : undefined + }) + optionIndex++ + offset += optionTotal + } + children.push({ + name: 'Options', + data: `${optionChildrenList.length} item(s)`, + children: optionChildrenList + }) + + return children +} + +function parseSomeipData(raw: any) { + const result: Record = {} + const list: any[] = [] + for (const sraw of raw) { + const source = sraw.message.data as + | (SomeipMessage & { + children?: { name: string; data: string }[] + summary?: string + sd?: boolean + }) + | { header?: any; data?: any; ts?: number } + + const msg = ( + (source as any).service === undefined + ? decodeSomeipFromRaw(source as any) + : { + ...(source as any), + payload: toUint8Array((source as any).payload) + } + ) as ParsedSomeipMessage & { + children?: DetailNode[] + summary?: string + sd?: boolean + } + const children: DetailNode[] = [] + children.push({ + name: 'SOME/IP Header', + data: `Service:0x${msg.service.toString(16).padStart(4, '0')} Method/Event:0x${msg.method.toString(16).padStart(4, '0')}` + }) + children.push({ + name: 'Message Type', + data: `0x${msg.messageType.toString(16).padStart(2, '0')} (${SomeipMessageTypeMap[msg.messageType] || 'Unknown'})` + }) + children.push({ + name: 'Return Code', + data: `0x${msg.returnCode.toString(16).padStart(2, '0')} (${getSomeipReturnCodeDesc(msg.returnCode)})` + }) + children.push({ + name: 'Version', + data: `Protocol:${msg.protocolVersion} Interface:${msg.interfaceVersion}` + }) + children.push({ + name: 'Request ID', + data: `Client:0x${msg.client.toString(16).padStart(4, '0')} Session:0x${msg.session.toString(16).padStart(4, '0')}` + }) + if (msg.ip) { + children.push({ + name: 'Endpoint', + data: `${msg.ip}:${msg.port ?? 0} (${msg.protocol || 'unknown'})` + }) + } + children.push({ + name: 'Payload Length', + data: `${msg.payload.length}` + }) + + const isSd = msg.service === 0xffff && msg.method === 0x8100 + if (isSd) { + msg.sd = true + children.push({ + name: 'SOME/IP Service Discovery', + data: 'Protocol' + }) + children.push(...parseSdPayload(new Uint8Array(msg.payload))) + } + msg.children = children + msg.summary = isSd + ? 'SOME/IP-SD' + : `${SomeipMessageTypeMap[msg.messageType] || 'Unknown'} Service 0x${msg.service + .toString(16) + .padStart(4, '0')}` + sraw.message.data = msg + list.push(sraw) + } + result['someipBase'] = list + return result +} +// Export functions for both testing and worker usage +export { parseLinData, initDataBase, parseCanData } + +// Check if we're in a worker context +declare const self: Worker +const isWorker = typeof self !== 'undefined' +function collectTransferables(obj: any, list: ArrayBuffer[] = []) { + if (obj instanceof ArrayBuffer) { + list.push(obj) + } else if (ArrayBuffer.isView(obj)) { + // 处理TypedArray (Uint8Array, Float32Array等) 和 DataView + list.push(obj.buffer as any) + } else if (Array.isArray(obj)) { + // 处理数组 + obj.forEach((item) => collectTransferables(item, list)) + } else if (obj && typeof obj === 'object') { + // 处理对象,但排除已处理的类型 + if (!(obj instanceof ArrayBuffer) && !ArrayBuffer.isView(obj)) { + Object.values(obj).forEach((value) => collectTransferables(value, list)) + } + } + return list +} +let port: MessagePort +function dataHandle(method: string, data: any) { + switch (method) { + case 'canBase': { + const result = parseCanData(data) + if (result) { + self.postMessage(result) + } + break + } + case 'udsSent': + case 'udsRecv': { + const result = parseUdsData(data, method) + if (result) { + self.postMessage(result) + } + break + } + case 'linBase': { + const result = parseLinData(data) + if (result) { + self.postMessage(result) + } + break + } + case 'setVar': { + const result = parseSetVar(data) + if (result) { + self.postMessage(result) + } + break + } + case 'osEvent': { + const result = parseORTIData(data) + if (result) { + self.postMessage(result) + } + break + } + case 'pluginEvent': { + const result = parsePluginEvent(data) + if (result) { + self.postMessage(result) + } + break + } + case 'pluginError': { + const result = parsePluginError(data) + if (result) { + self.postMessage(result) + } + break + } + case 'someipBase': { + const result = parseSomeipData(data) + if (result) { + self.postMessage(result) + } + break + } + default: { + // const transferables = collectTransferables(data) + self.postMessage({ + [method]: data + }) + break + } + } +} +// Only set up worker message handler if we're in a worker context +if (isWorker) { + self.onmessage = (event) => { + const { method, data } = event.data + + switch (method) { + case 'onmessage': { + port = data + port.onmessage = (event: MessageEvent) => { + const data = event.data + const groups: { method: string; data: any[] }[] = [] // 存储所有分组,每个元素是 {method, data} 对象 + let currentGroup: { method: string; data: any[] } | null = null + data.forEach((item: any) => { + const method = item.message.method + + // 如果是新的method或者当前组的method不同,创建新组 + if (!currentGroup || currentGroup.method !== method) { + if (currentGroup) { + groups.push(currentGroup) + } + currentGroup = { + method: method, + data: [] + } + } + + currentGroup.data.push(item) + }) + + // 添加最后一组 + if (currentGroup) { + groups.push(currentGroup) + } + + // 按顺序发送每个组的数据 + groups.forEach((group) => { + // window.logBus.emit(group.method, undefined, group.data) + dataHandle(group.method, group.data) + }) + } + break + } + case 'initDataBase': { + initDataBase(data) + //clear osStatistics + osStatistics.clear() + //create osStatistics + for (const key of Object.keys(database.orti)) { + const s = new OsStatistics(key, database.orti[key].cpuFreq, database.orti[key]) + for (const item of database.orti[key].coreConfigs) { + if (item.type == TaskType.TASK) { + if (item.isIdle || item.name.toLowerCase().includes('idle')) { + s.markIdleTask(item.id, item.coreId) + } + } + } + osStatistics.set(key, s) + } + break + } + default: { + // const transferables = collectTransferables(data) + self.postMessage({ + [method]: data + }) + break + } + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/worker/osStatistics.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/worker/osStatistics.ts new file mode 100644 index 0000000..c29cb1e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/src/renderer/src/worker/osStatistics.ts @@ -0,0 +1,1130 @@ +import { OsEvent, TaskType, TaskStatus, IsrStatus, ResourceStatus } from 'nodeCan/osEvent' +import type { ORTIFile } from '../database/ortiParse' + +// 时间窗口配置 - 记录每个时间点的执行时间片段 +interface TimeWindow { + timestamp: number // 时间戳 + executionTime: number // 该时间点的执行时间 +} + +// Task internal state (用于事件处理) +interface TaskState { + id: number + coreId: number + currentStatus: TaskStatus + previousStatus?: TaskStatus // 用于状态转换验证 + activeCount: number + fakeActiveInterval?: number + startCount: number + + lastActiveTime?: number + lastStartTime?: number + + activationIntervalSum: number + activationIntervalCount: number + activationIntervalMin: number + activationIntervalMax: number + activationIntervalCurrent: number + + // Jitter统计 + jitterMax: number + jitterMin: number + currentJitter: number + + delayTimeSum: number + delayTimeCount: number + delayTimeMin: number + delayTimeMax: number + + currentExecutionStartTime?: number + currentExecutionAccumulated: number + isInExecution: boolean + hasStartedInCurrentCycle: boolean + + // 任务执行时间统计(不包括被中断的时间) + executionTimeSum: number + executionTimeCount: number + executionTimeMin: number + executionTimeMax: number +} + +// ISR internal state +interface IsrState { + id: number + coreId: number + currentStatus: IsrStatus + runCount: number + + executionTimeSum: number + executionTimeCount: number + executionTimeMin: number + executionTimeMax: number + + callIntervalSum: number + callIntervalCount: number + callIntervalMin: number + callIntervalMax: number + + executionStartTime?: number + lastCallTime?: number + // Accumulated execution time when ISR is interrupted by another ISR + currentExecutionAccumulated: number +} + +// Resource internal state +interface ResourceState { + id: number + coreId: number + currentStatus: ResourceStatus + acquireCount: number + releaseCount: number +} + +// Service internal state +interface ServiceState { + id: number + coreId: number + count: number + lastStatus: number +} + +// Hook internal state +interface HookState { + id: number + coreId: number + count: number + lastStatus: number + lastTriggerTime?: number +} + +interface VarResult { + id: string + value: { + value: number | string + rawValue: number + } + error?: { + data: string + name: string + id: string + ts: number + } +} +export default class OsStatistics { + // 内部状态(用于事件处理) + private tasks: Map = new Map() + private isrs: Map = new Map() + private resources: Map = new Map() + private services: Map = new Map() + private hooks: Map = new Map() + + private startTime?: number + private endTime?: number + + // 滑动时间窗口 - 用于负载计算 + private readonly WINDOW_DURATION: number // 窗口时长(CPU cycles) + private coreTimeWindows: Map = new Map() + + private idleTaskIds: Set = new Set() + + // Track currently running task on each core (to handle ISR interruptions) + private runningTaskOnCore: Map = new Map() + // Stack to track nested ISRs on each core (for ISR preemption scenarios) + private runningIsrStackOnCore: Map = new Map() + + // 合法的状态转换映射(基于ARTI规范) + // 格式: 当前状态 -> 允许的下一个状态集合 + private readonly VALID_TASK_TRANSITIONS: Map> + + private initValidTransitions(): Map> { + const transitions = new Map>() + + // Suspended -> Ready (通过 Activate 事件) + // Ready状态后只能通过Start进入Running + transitions.set(TaskStatus.ACTIVE, new Set([TaskStatus.START])) + + // Ready -> Running (通过 Start 事件) + // Running状态后可以被Preempt(抢占)、Wait(等待)或Terminate(终止) + transitions.set( + TaskStatus.START, + new Set([TaskStatus.PREEMPT, TaskStatus.WAIT, TaskStatus.TERMINATE]) + ) + + // Running -> Ready (通过 Preempt 事件) + // 被抢占后回到Ready状态,只能通过Start重新进入Running + transitions.set(TaskStatus.PREEMPT, new Set([TaskStatus.START])) + + // Running -> Waiting (通过 Wait 事件) + // Waiting状态后可以Release(释放)回Ready,或被Terminate终止 + transitions.set(TaskStatus.WAIT, new Set([TaskStatus.RELEASE, TaskStatus.TERMINATE])) + + // Waiting -> Ready (通过 Release 事件) + // Release后回到Ready状态,只能通过Start进入Running + transitions.set(TaskStatus.RELEASE, new Set([TaskStatus.START])) + + // Running -> Suspended (通过 Terminate 事件) + // Terminate后回到Suspended状态,只能通过Activate重新激活 + transitions.set(TaskStatus.TERMINATE, new Set([TaskStatus.ACTIVE])) + + return transitions + } + + constructor( + private id: string, + private cpuFreq: number, + private orti: ORTIFile, + windowDurationMs: number = 5000 + ) { + // 将窗口时长转换为CPU cycles + this.WINDOW_DURATION = windowDurationMs * 1000 * cpuFreq + this.VALID_TASK_TRANSITIONS = this.initValidTransitions() + this.reset() + } + + reset(): void { + this.tasks.clear() + this.isrs.clear() + this.resources.clear() + this.services.clear() + this.hooks.clear() + + this.startTime = undefined + this.endTime = undefined + + this.coreTimeWindows.clear() + this.idleTaskIds.clear() + this.runningTaskOnCore.clear() + this.runningIsrStackOnCore.clear() + } + + private initTaskState(id: number, coreId: number, status: TaskStatus): TaskState { + //fake active interval + const fakeActiveInterval = this.orti.coreConfigs.find( + (c) => c.id === id && c.type === TaskType.TASK && c.coreId === coreId + )?.activeInterval + + return { + id, + coreId, + currentStatus: status, + previousStatus: undefined, + activeCount: 0, + startCount: 0, + + activationIntervalSum: 0, + activationIntervalCount: 0, + activationIntervalMin: Number.MAX_VALUE, + activationIntervalMax: 0, + activationIntervalCurrent: 0, + fakeActiveInterval: Number(fakeActiveInterval) * this.cpuFreq, + + jitterMax: 0, + jitterMin: 0, + currentJitter: 0, + + delayTimeSum: 0, + delayTimeCount: 0, + delayTimeMin: Number.MAX_VALUE, + delayTimeMax: 0, + currentExecutionAccumulated: 0, + isInExecution: false, + hasStartedInCurrentCycle: false, + + executionTimeSum: 0, + executionTimeCount: 0, + executionTimeMin: Number.MAX_VALUE, + executionTimeMax: 0 + } + } + + private initIsrState(id: number, coreId: number, status: IsrStatus): IsrState { + return { + id, + coreId, + currentStatus: status, + runCount: 0, + executionTimeSum: 0, + executionTimeCount: 0, + executionTimeMin: Number.MAX_VALUE, + executionTimeMax: 0, + callIntervalSum: 0, + callIntervalCount: 0, + callIntervalMin: Number.MAX_VALUE, + callIntervalMax: 0, + currentExecutionAccumulated: 0 + } + } + + private updateRunningStats( + sum: number, + count: number, + min: number, + max: number, + newValue: number + ): { sum: number; count: number; min: number; max: number } { + return { + sum: sum + newValue, + count: count + 1, + min: Math.min(min, newValue), + max: Math.max(max, newValue) + } + } + + /** + * 验证任务状态转换是否合法 + * @returns 如果状态转换非法,返回错误信息;否则返回 null + */ + private validateTaskStateTransition( + currentStatus: TaskStatus, + newStatus: TaskStatus, + event: OsEvent + ): string | null { + // 状态相同,不是真正的转换,跳过验证 + if (currentStatus === newStatus) { + return null + } + + const validNextStates = this.VALID_TASK_TRANSITIONS.get(currentStatus) + if (!validNextStates) { + // 未知的当前状态 + return `Unknown current state: ${TaskStatus[currentStatus]}` + } + + if (!validNextStates.has(newStatus)) { + // 非法的状态转换 + return `Invalid state transition: ${TaskStatus[currentStatus]} -> ${TaskStatus[newStatus]} at timestamp ${event.ts}` + } + + return null + } + + markIdleTask(taskId: number, coreId: number): void { + const key = this.getKey(TaskType.TASK, taskId, coreId) + this.idleTaskIds.add(key) + } + + processEvent(event: OsEvent) { + // 更新时间范围 + if (!this.startTime || event.ts < this.startTime) { + this.startTime = event.ts + } + if (!this.endTime || event.ts > this.endTime) { + this.endTime = event.ts + } + + let needUpdateLoad = false + const result: VarResult[] = [] + // 处理事件并立即更新统计 + switch (event.type) { + case TaskType.TASK: + result.push(...this.processTaskEvent(event)) + needUpdateLoad = true + break + case TaskType.ISR: + result.push(...this.processIsrEvent(event)) + needUpdateLoad = true + break + case TaskType.RESOURCE: + result.push(...this.processResourceEvent(event)) + break + case TaskType.SERVICE: + result.push(...this.processServiceEvent(event)) + break + case TaskType.HOOK: + result.push(...this.processHookEvent(event)) + break + } + if (needUpdateLoad) { + // 更新所有核心负载 + result.push(...this.updateCoreLoad(event.coreId, event.ts)) + } + return result + } + + private getKey(type: TaskType, id: number, coreId: number): string { + const map: Record = { + [TaskType.TASK]: 'Task', + [TaskType.ISR]: 'ISR', + [TaskType.RESOURCE]: 'Resource', + [TaskType.SERVICE]: 'Service', + [TaskType.HOOK]: 'Hook', + [TaskType.SPINLOCK]: 'Spinlock', + [TaskType.LINE]: 'Line', + [TaskType.RUNABLE]: 'Runable' + } + return `${this.id}.${map[type]}.${type}_${id}_${coreId}` + } + + // 修改:添加执行时间到滑动窗口 + private addCoreExecutionTime(coreId: number, execTime: number, timestamp: number): void { + // 更新累计执行时间(保留用于其他统计) + + // 添加到时间窗口 + if (!this.coreTimeWindows.has(coreId)) { + this.coreTimeWindows.set(coreId, []) + } + + const windows = this.coreTimeWindows.get(coreId)! + + // 创建新窗口记录 + windows.push({ + timestamp: timestamp, + executionTime: execTime + }) + + // 清理过期窗口(保留窗口时长内的数据) + const cutoffTime = timestamp - this.WINDOW_DURATION + while (windows.length > 0 && windows[0].timestamp < cutoffTime) { + windows.shift() + } + } + + // 计算滑动窗口内的负载 + private calculateWindowLoad(coreId: number, currentTime: number): number { + const windows = this.coreTimeWindows.get(coreId) + if (!windows || windows.length === 0) { + return 0 + } + + let totalExecTime = 0 + let earliestTimestamp = currentTime + + for (const window of windows) { + totalExecTime += window.executionTime + earliestTimestamp = Math.min(earliestTimestamp, window.timestamp) + } + + // 计算实际的时间窗口大小 + const actualWindowDuration = currentTime - earliestTimestamp + + // 设置最小窗口阈值为100ms对应的cycles,避免刚开始时窗口过小导致计算异常 + // 但又能快速反映实际负载情况 + const minWindowDuration = 1 * 1000 * this.cpuFreq // 1ms + + // 避免除以0或过小的窗口 + if (actualWindowDuration < minWindowDuration) { + // 窗口太小时,直接返回0,等待更多数据 + return 0 + } + + const loadPercent = (totalExecTime / actualWindowDuration) * 100 + + // 限制在合理范围内(0-100%) + return Math.min(Math.max(loadPercent, 0), 100) + } + + // 修复后的processTaskEvent方法中的关键部分 + private processTaskEvent(event: OsEvent): VarResult[] { + const key = this.getKey(event.type, event.id, event.coreId) + const status = event.status as TaskStatus + const result: VarResult[] = [] + + // 检查是否是第一次接收到该任务的事件 + const isFirstEvent = !this.tasks.has(key) + + if (isFirstEvent) { + // 第一次创建时,直接初始化,无需验证 + this.tasks.set(key, this.initTaskState(event.id, event.coreId, status)) + } else { + // 已存在的任务,需要验证状态转换 + const task = this.tasks.get(key)! + + // 验证状态转换(使用当前状态作为转换起点) + const transitionError = this.validateTaskStateTransition(task.currentStatus, status, event) + if (transitionError) { + result.push({ + id: '', + value: { value: 0, rawValue: 0 }, + error: { + data: `${transitionError} [Previous: ${TaskStatus[task.previousStatus || task.currentStatus]}]`, + name: '', + id: `Task.${event.id}_${event.coreId}`, + ts: event.ts + } + }) + } + + // 更新状态(保存前一个状态用于调试) + task.previousStatus = task.currentStatus + task.currentStatus = status + } + + const task = this.tasks.get(key)! + + switch (status) { + case TaskStatus.ACTIVE: + task.activeCount++ + task.isInExecution = true + task.hasStartedInCurrentCycle = false + task.currentExecutionAccumulated = 0 + + if (task.lastActiveTime !== undefined) { + const interval = event.ts - task.lastActiveTime + task.activationIntervalCurrent = interval + const stats = this.updateRunningStats( + task.activationIntervalSum, + task.activationIntervalCount, + task.activationIntervalMin, + task.activationIntervalMax, + interval + ) + task.activationIntervalSum = stats.sum + task.activationIntervalCount = stats.count + task.activationIntervalMin = stats.min + task.activationIntervalMax = stats.max + + // 计算当前jitter + if (task.fakeActiveInterval && task.fakeActiveInterval > 0) { + const jitter = (interval - task.fakeActiveInterval) / task.fakeActiveInterval + task.currentJitter = jitter + + // 比较绝对值来更新最大最小jitter + const absJitter = Math.abs(jitter) + const absMax = Math.abs(task.jitterMax) + const absMin = Math.abs(task.jitterMin) + + if (task.activationIntervalCount === 1) { + // 第一次计算,直接赋值 + task.jitterMax = jitter + task.jitterMin = jitter + } else { + // 比较绝对值 + if (absJitter > absMax) { + task.jitterMax = jitter + } + if (absJitter < absMin || task.jitterMin === 0) { + task.jitterMin = jitter + } + } + } + } + task.lastActiveTime = event.ts + break + + case TaskStatus.START: + // 只在第一次START时统计 + if (!task.hasStartedInCurrentCycle) { + task.startCount++ + + // 计算延迟时间(从ACTIVE到START) + if (task.lastActiveTime !== undefined) { + const delay = event.ts - task.lastActiveTime + const stats = this.updateRunningStats( + task.delayTimeSum, + task.delayTimeCount, + task.delayTimeMin, + task.delayTimeMax, + delay + ) + task.delayTimeSum = stats.sum + task.delayTimeCount = stats.count + task.delayTimeMin = stats.min + task.delayTimeMax = stats.max + } + + task.lastStartTime = event.ts + task.hasStartedInCurrentCycle = true + } + + // 关键修复:每次START都重新开始执行时间计时 + // 这样可以正确处理ISR中断后的恢复场景 + task.currentExecutionStartTime = event.ts + + // 记录任务正在此核心上运行 + this.runningTaskOnCore.set(event.coreId, key) + break + + case TaskStatus.PREEMPT: + // 任务被抢占,累加已执行时间 + if (task.currentExecutionStartTime !== undefined) { + const partialExecTime = event.ts - task.currentExecutionStartTime + + if (partialExecTime > 0 && partialExecTime < 1e15) { + task.currentExecutionAccumulated += partialExecTime + + if (!this.idleTaskIds.has(key)) { + this.addCoreExecutionTime(event.coreId, partialExecTime, event.ts) + } + } + + task.currentExecutionStartTime = undefined + } + + if (this.runningTaskOnCore.get(event.coreId) === key) { + this.runningTaskOnCore.delete(event.coreId) + } + break + + case TaskStatus.WAIT: + // 任务等待,累加已执行时间 + if (task.currentExecutionStartTime !== undefined) { + const partialExecTime = event.ts - task.currentExecutionStartTime + + if (partialExecTime > 0 && partialExecTime < 1e15) { + task.currentExecutionAccumulated += partialExecTime + + if (!this.idleTaskIds.has(key)) { + this.addCoreExecutionTime(event.coreId, partialExecTime, event.ts) + } + } + + task.currentExecutionStartTime = undefined + } + + task.isInExecution = false + + if (this.runningTaskOnCore.get(event.coreId) === key) { + this.runningTaskOnCore.delete(event.coreId) + } + break + + case TaskStatus.RELEASE: + // 从WAIT恢复到就绪状态 + task.isInExecution = true + break + + case TaskStatus.TERMINATE: + // 任务终止,累加最后的执行时间 + if (task.currentExecutionStartTime !== undefined) { + const partialExecTime = event.ts - task.currentExecutionStartTime + + if (partialExecTime > 0 && partialExecTime < 1e15) { + task.currentExecutionAccumulated += partialExecTime + + if (!this.idleTaskIds.has(key)) { + this.addCoreExecutionTime(event.coreId, partialExecTime, event.ts) + } + } + + task.currentExecutionStartTime = undefined + } + + task.isInExecution = false + + // 记录本次完整的执行时间统计 + if (task.currentExecutionAccumulated > 0) { + const stats = this.updateRunningStats( + task.executionTimeSum, + task.executionTimeCount, + task.executionTimeMin, + task.executionTimeMax, + task.currentExecutionAccumulated + ) + task.executionTimeSum = stats.sum + task.executionTimeCount = stats.count + task.executionTimeMin = stats.min + task.executionTimeMax = stats.max + } + + task.currentExecutionAccumulated = 0 + task.hasStartedInCurrentCycle = false + + if (this.runningTaskOnCore.get(event.coreId) === key) { + this.runningTaskOnCore.delete(event.coreId) + } + break + } + + // 立即更新统计结果并合并状态转换错误信息 + const statsResult = this.updateTaskStatistics(key, task) + result.push(...statsResult) + + return result + } + + private updateTaskStatistics(key: string, task: TaskState): VarResult[] { + const result: VarResult[] = [] + + const avgActivationInterval = + task.activationIntervalCount > 0 + ? task.activationIntervalSum / task.activationIntervalCount + : 0 + + const delayStats = this.formatTimeStats( + task.delayTimeSum, + task.delayTimeCount, + task.delayTimeMin, + task.delayTimeMax + ) + + result.push({ + id: `OsTrace.${key}.DelayTimeMin`, + value: { value: delayStats.min / this.cpuFreq, rawValue: delayStats.min } + }) + result.push({ + id: `OsTrace.${key}.DelayTimeMax`, + value: { value: delayStats.max / this.cpuFreq, rawValue: delayStats.max } + }) + result.push({ + id: `OsTrace.${key}.DelayTimeAvg`, + value: { value: delayStats.avg / this.cpuFreq, rawValue: delayStats.avg } + }) + + const activationStats = this.formatTimeStats( + task.activationIntervalSum, + task.activationIntervalCount, + task.activationIntervalMin, + task.activationIntervalMax + ) + + result.push({ + id: `OsTrace.${key}.ActivationIntervalMin`, + value: { value: activationStats.min / this.cpuFreq, rawValue: activationStats.min } + }) + result.push({ + id: `OsTrace.${key}.ActivationIntervalMax`, + value: { value: activationStats.max / this.cpuFreq, rawValue: activationStats.max } + }) + result.push({ + id: `OsTrace.${key}.ActivationIntervalAvg`, + value: { value: activationStats.avg / this.cpuFreq, rawValue: activationStats.avg } + }) + + // 任务执行时间统计(不包括被中断的时间) + const executionStats = this.formatTimeStats( + task.executionTimeSum, + task.executionTimeCount, + task.executionTimeMin, + task.executionTimeMax + ) + + result.push({ + id: `OsTrace.${key}.ExecutionTimeMin`, + value: { value: executionStats.min / this.cpuFreq, rawValue: executionStats.min } + }) + result.push({ + id: `OsTrace.${key}.ExecutionTimeMax`, + value: { value: executionStats.max / this.cpuFreq, rawValue: executionStats.max } + }) + result.push({ + id: `OsTrace.${key}.ExecutionTimeAvg`, + value: { value: executionStats.avg / this.cpuFreq, rawValue: executionStats.avg } + }) + + result.push({ + id: `OsTrace.${key}.Status`, + value: { value: TaskStatus[task.currentStatus], rawValue: task.currentStatus } + }) + result.push({ + id: `OsTrace.${key}.ActiveCount`, + value: { value: task.activeCount, rawValue: task.activeCount } + }) + + result.push({ + id: `OsTrace.${key}.StartCount`, + value: { value: task.startCount, rawValue: task.startCount } + }) + //Task实际运行次数与被激活次数的百分比Running\ Active + const TaskLost = + task.activeCount > 0 ? ((task.activeCount - task.startCount) / task.activeCount) * 100 : 0 + + result.push({ + id: `OsTrace.${key}.TaskLost`, + value: { value: Number(TaskLost.toFixed(2)), rawValue: TaskLost } + }) + + // Jitter统计:当前interval/理论interval的偏差 + if (task.fakeActiveInterval && task.fakeActiveInterval > 0) { + result.push({ + id: `OsTrace.${key}.JitterMax`, + value: { value: Number((task.jitterMax * 100).toFixed(2)), rawValue: task.jitterMax } + }) + result.push({ + id: `OsTrace.${key}.JitterMin`, + value: { value: Number((task.jitterMin * 100).toFixed(2)), rawValue: task.jitterMin } + }) + result.push({ + id: `OsTrace.${key}.Jitter`, + value: { + value: Number((task.currentJitter * 100).toFixed(2)), + rawValue: task.currentJitter + } + }) + } + + return result + } + + // 修复后的processIsrEvent方法 + private processIsrEvent(event: OsEvent): VarResult[] { + const key = this.getKey(event.type, event.id, event.coreId) + const status = event.status as IsrStatus + + if (!this.isrs.has(key)) { + this.isrs.set(key, this.initIsrState(event.id, event.coreId, status)) + } + + const isr = this.isrs.get(key)! + isr.currentStatus = status + + if (status === IsrStatus.START) { + // Get or initialize ISR stack for this core + if (!this.runningIsrStackOnCore.has(event.coreId)) { + this.runningIsrStackOnCore.set(event.coreId, []) + } + const isrStack = this.runningIsrStackOnCore.get(event.coreId)! + + // 检查同一个ISR是否已经在栈中(自己嵌套自己的异常情况) + const existingIndexInStack = isrStack.indexOf(key) + if (existingIndexInStack !== -1) { + // 检测到同一个ISR嵌套自己,这是异常情况,直接跳过这个事件 + + return [] + } + + // 正常的嵌套中断场景:检查是否有其他ISR正在运行 + if (isrStack.length > 0) { + // Pause the currently running ISR (at the top of the stack) + const runningIsrKey = isrStack[isrStack.length - 1] + const runningIsr = this.isrs.get(runningIsrKey) + if (runningIsr && runningIsr.executionStartTime !== undefined) { + // Save accumulated execution time for the interrupted ISR + const partialExecTime = event.ts - runningIsr.executionStartTime + + // Prevent abnormal values + if (partialExecTime > 0 && partialExecTime < 1e15) { + // Accumulate the partial execution time for the interrupted ISR + runningIsr.currentExecutionAccumulated += partialExecTime + + // Add to core execution time (ISR time counts toward core load) + this.addCoreExecutionTime(event.coreId, partialExecTime, event.ts) + } + + // Clear the ISR's execution start time (indicates ISR is paused) + runningIsr.executionStartTime = undefined + } + } else { + // No ISR running, so pause the currently running task + const runningTaskKey = this.runningTaskOnCore.get(event.coreId) + if (runningTaskKey) { + const runningTask = this.tasks.get(runningTaskKey) + if (runningTask && runningTask.currentExecutionStartTime !== undefined) { + // Save accumulated execution time + const partialExecTime = event.ts - runningTask.currentExecutionStartTime + + // Prevent abnormal values + if (partialExecTime > 0 && partialExecTime < 1e15) { + runningTask.currentExecutionAccumulated += partialExecTime + + // Add to core execution time (excluding idle tasks) + if (!this.idleTaskIds.has(runningTaskKey)) { + this.addCoreExecutionTime(event.coreId, partialExecTime, event.ts) + } + } + + // Clear task's execution start time (indicates task is paused) + runningTask.currentExecutionStartTime = undefined + } + } + } + + // Push current ISR to the stack + isrStack.push(key) + + // Start timing for this ISR (reset accumulated time for new run) + isr.executionStartTime = event.ts + isr.currentExecutionAccumulated = 0 + isr.runCount++ + + // Calculate ISR call interval + if (isr.lastCallTime !== undefined) { + const interval = event.ts - isr.lastCallTime + const stats = this.updateRunningStats( + isr.callIntervalSum, + isr.callIntervalCount, + isr.callIntervalMin, + isr.callIntervalMax, + interval + ) + isr.callIntervalSum = stats.sum + isr.callIntervalCount = stats.count + isr.callIntervalMin = stats.min + isr.callIntervalMax = stats.max + } + isr.lastCallTime = event.ts + } else if (status === IsrStatus.STOP) { + // Record the last execution segment for this ISR + if (isr.executionStartTime !== undefined) { + const lastSegmentTime = event.ts - isr.executionStartTime + + // Prevent abnormal values + if (lastSegmentTime > 0 && lastSegmentTime < 1e15) { + // Add the last segment to the accumulated time + isr.currentExecutionAccumulated += lastSegmentTime + + // Add this segment to core execution time + this.addCoreExecutionTime(event.coreId, lastSegmentTime, event.ts) + } + + isr.executionStartTime = undefined + } + + if (isr.currentExecutionAccumulated > 0) { + const stats = this.updateRunningStats( + isr.executionTimeSum, + isr.executionTimeCount, + isr.executionTimeMin, + isr.executionTimeMax, + isr.currentExecutionAccumulated + ) + isr.executionTimeSum = stats.sum + isr.executionTimeCount = stats.count + isr.executionTimeMin = stats.min + isr.executionTimeMax = stats.max + + // Reset accumulated time for next run + isr.currentExecutionAccumulated = 0 + } + + // Pop this ISR from the stack + const isrStack = this.runningIsrStackOnCore.get(event.coreId) + if (isrStack && isrStack.length > 0) { + const poppedKey = isrStack.pop() + + // Verify we're popping the correct ISR + if (poppedKey !== key) { + console.warn(`ISR stack mismatch: expected ${key}, got ${poppedKey}`) + } + + // Check if there's another ISR below in the stack + if (isrStack.length > 0) { + // Resume the previously interrupted ISR + const resumingIsrKey = isrStack[isrStack.length - 1] + const resumingIsr = this.isrs.get(resumingIsrKey) + if (resumingIsr && resumingIsr.executionStartTime === undefined) { + // Resume timing from this moment + resumingIsr.executionStartTime = event.ts + } + } else { + // No more ISRs in the stack, resume the interrupted task + const runningTaskKey = this.runningTaskOnCore.get(event.coreId) + if (runningTaskKey) { + const runningTask = this.tasks.get(runningTaskKey) + // Only resume timing if the task is still in execution state + if ( + runningTask && + runningTask.isInExecution && + runningTask.currentExecutionStartTime === undefined + ) { + // Resume timing task's execution time from ISR end moment + runningTask.currentExecutionStartTime = event.ts + } + } + } + } + } + + // Immediately update statistics + return this.updateIsrStatistics(key, isr) + } + + private updateIsrStatistics(key: string, isr: IsrState): VarResult[] { + const result: VarResult[] = [] + const execStats = this.formatTimeStats( + isr.executionTimeSum, + isr.executionTimeCount, + isr.executionTimeMin, + isr.executionTimeMax + ) + result.push({ + id: `OsTrace.${key}.ExecutionTimeMin`, + value: { value: execStats.min / this.cpuFreq, rawValue: execStats.min } + }) + result.push({ + id: `OsTrace.${key}.ExecutionTimeMax`, + value: { value: execStats.max / this.cpuFreq, rawValue: execStats.max } + }) + result.push({ + id: `OsTrace.${key}.ExecutionTimeAvg`, + value: { value: execStats.avg / this.cpuFreq, rawValue: execStats.avg } + }) + + const callIntervalStats = this.formatTimeStats( + isr.callIntervalSum, + isr.callIntervalCount, + isr.callIntervalMin, + isr.callIntervalMax + ) + result.push({ + id: `OsTrace.${key}.CallIntervalMin`, + value: { value: callIntervalStats.min / this.cpuFreq, rawValue: callIntervalStats.min } + }) + result.push({ + id: `OsTrace.${key}.CallIntervalMax`, + value: { value: callIntervalStats.max / this.cpuFreq, rawValue: callIntervalStats.max } + }) + result.push({ + id: `OsTrace.${key}.CallIntervalAvg`, + value: { value: callIntervalStats.avg / this.cpuFreq, rawValue: callIntervalStats.avg } + }) + + result.push({ + id: `OsTrace.${key}.RunCount`, + value: { value: isr.runCount, rawValue: isr.runCount } + }) + result.push({ + id: `OsTrace.${key}.Status`, + value: { value: IsrStatus[isr.currentStatus], rawValue: isr.currentStatus } + }) + return result + } + + private processResourceEvent(event: OsEvent): VarResult[] { + const key = this.getKey(event.type, event.id, event.coreId) + const status = event.status as ResourceStatus + + if (!this.resources.has(key)) { + this.resources.set(key, { + id: event.id, + coreId: event.coreId, + currentStatus: status, + acquireCount: 0, + releaseCount: 0 + }) + } + + const resource = this.resources.get(key)! + resource.currentStatus = status + + if (status === ResourceStatus.START) { + resource.acquireCount++ + } else if (status === ResourceStatus.STOP) { + resource.releaseCount++ + } + + // 立即更新统计结果 + return this.updateResourceStatistics(key, resource) + } + + private updateResourceStatistics(key: string, resource: ResourceState): VarResult[] { + const result: VarResult[] = [] + + // Return current status data + result.push({ + id: `OsTrace.${key}.Status`, + value: { value: ResourceStatus[resource.currentStatus], rawValue: resource.currentStatus } + }) + result.push({ + id: `OsTrace.${key}.AcquireCount`, + value: { value: resource.acquireCount, rawValue: resource.acquireCount } + }) + result.push({ + id: `OsTrace.${key}.ReleaseCount`, + value: { value: resource.releaseCount, rawValue: resource.releaseCount } + }) + + return result + } + + private processServiceEvent(event: OsEvent): VarResult[] { + const key = this.getKey(event.type, event.id, event.coreId) + + if (!this.services.has(key)) { + this.services.set(key, { + id: event.id, + coreId: event.coreId, + count: 0, + lastStatus: 0 + }) + } + + const service = this.services.get(key)! + service.count++ + service.lastStatus = event.status + + // 立即更新统计结果 + return this.updateServiceStatistics(key, service) + } + + private updateServiceStatistics(key: string, service: ServiceState): VarResult[] { + const result: VarResult[] = [] + + // Return current status data + result.push({ + id: `OsTrace.${key}.Count`, + value: { value: service.count, rawValue: service.count } + }) + result.push({ + id: `OsTrace.${key}.LastStatus`, + value: { value: service.lastStatus, rawValue: service.lastStatus } + }) + + return result + } + + private processHookEvent(event: OsEvent): VarResult[] { + const result: VarResult[] = [] + + // Track hook details + const key = this.getKey(event.type, event.id, event.coreId) + + if (!this.hooks.has(key)) { + this.hooks.set(key, { + id: event.id, + coreId: event.coreId, + count: 0, + lastStatus: 0 + }) + } + + const hook = this.hooks.get(key)! + hook.count++ + hook.lastStatus = event.status + // record last trigger time relative to startTime (ms) + if (!this.startTime) { + this.startTime = event.ts + } + const delta = event.ts - this.startTime + hook.lastTriggerTime = delta + + // Return hook status data + result.push({ + id: `OsTrace.${key}.Count`, + value: { value: hook.count, rawValue: hook.count } + }) + result.push({ + id: `OsTrace.${key}.LastStatus`, + value: { value: hook.lastStatus, rawValue: hook.lastStatus } + }) + result.push({ + id: `OsTrace.${key}.LastTriggerTime`, + value: { value: delta / this.cpuFreq, rawValue: delta } + }) + + return result + } + + // 修改:使用滑动窗口计算负载 + private updateCoreLoad(coreId: number, currentTime: number): VarResult[] { + const result: VarResult[] = [] + + // 使用滑动窗口计算当前负载 + const loadPercent = this.calculateWindowLoad(coreId, currentTime) + + result.push({ + id: `OsTrace.${this.id}.Core${coreId}.LoadPercent`, + value: { value: Number(loadPercent.toFixed(2)), rawValue: loadPercent } + }) + + // 保留总体统计(可选) + const totalTime = this.endTime && this.startTime ? this.endTime - this.startTime : 0 + + result.push({ + id: `OsTrace.${this.id}.Core${coreId}.TotalTime`, + value: { value: totalTime / this.cpuFreq / 1000, rawValue: totalTime } + }) + + return result + } + + private formatTimeStats(sum: number, count: number, min: number, max: number) { + if (count === 0) { + return { min: 0, max: 0, avg: 0 } + } + + const actualMin = min === Number.MAX_VALUE ? 0 : min + const avg = sum / count + + return { min: actualMin, max, avg } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/cdd/cdd.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/cdd/cdd.test.ts new file mode 100644 index 0000000..285212e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/cdd/cdd.test.ts @@ -0,0 +1,198 @@ +import { beforeAll, describe, expect, test } from 'vitest' +import { execBinary } from 'src/main/util' +import { getPythonPath } from 'src/main/python' +import path from 'path' +import fs from 'fs' +import { tmpdir } from 'os' + +const cddParsePy = path.join(__dirname, '../../resources/cdd/cddparse.py') +// A CANdelaStudio template-derived document from the cddtools project, saved +// back out of CANdelaStudio with DoIP declared as supported: 7 interfaces +// (CAN and DoIP enabled), 114 data types, 16 DIDs, 4 DTCs, 30 diagnostic +// classes. +const cddToolsCdd = path.join(__dirname, 'fixtures/CddTools-doip.cdd') + +async function runCddCommand(command: string, cddFilePath: string) { + const pythonPath = fs.existsSync(getPythonPath()) + ? getPythonPath() + : process.platform === 'win32' + ? 'python' + : 'python3' + const outputPath = path.join(tmpdir(), `cdd_test_${Date.now()}.json`) + const result = await execBinary(pythonPath, [cddParsePy, command, cddFilePath, outputPath], { + timeout: 120000 + }) + if (!result.success) { + throw new Error(result.stderr || 'CDD parse failed') + } + const jsonStr = fs.readFileSync(outputPath, 'utf-8') + fs.unlinkSync(outputPath) + return JSON.parse(jsonStr) +} + +describe('CDD parseTesterInfo', () => { + let testers: any + + beforeAll(async () => { + const result = await runCddCommand('parseTesterInfo', cddToolsCdd) + expect(result.error).toBe(0) + testers = result.data.CddTools_DoIP + }) + + test('splits testers by variant and supported interface', () => { + // Two variants and two supported interfaces, so neither name alone + // identifies a tester. + expect(Object.keys(testers).sort()).toEqual([ + 'Base_Variant.CAN', + 'Base_Variant.DoIP_ISO13400', + 'Base_Variant1.CAN', + 'Base_Variant1.DoIP_ISO13400' + ]) + expect(testers['Base_Variant.CAN'].type).toBe('can') + expect(testers['Base_Variant.DoIP_ISO13400'].type).toBe('eth') + expect(testers['Base_Variant.CAN'].didList.length).toBe(16) + expect(testers['Base_Variant.CAN'].dtcList.length).toBe(4) + }) + + test('reads CAN identifiers and timing the ECU overrides', () => { + const tester = testers['Base_Variant.CAN'] + + expect(tester.udsTime.pTime).toBe(150) + expect(tester.udsTime.pExtTime).toBe(2000) + expect(tester.udsTime.s3Time).toBe(4000) + expect(tester.udsTime.testerPresentEnable).toBe(true) + expect(tester.udsTime.testerPresentAddrIndex).toBe(0) + + const [physical, functional] = tester.address + expect(physical.canAddr.name).toBe('Physical') + expect(physical.canAddr.canIdTx).toBe('0x7aa') + expect(physical.canAddr.canIdRx).toBe('0x7ab') + expect(physical.canAddr.addrFormat).toBe('NORMAL') + expect(physical.canAddr.idType).toBe('STANDARD') + // A classic CAN interface carries no CanFd* parameters at all. + expect(physical.canAddr.canfd).toBe(false) + expect(physical.canAddr.dlc).toBe(8) + + expect(functional.canAddr.addrType).toBe('FUNCTIONAL') + expect(functional.canAddr.canIdTx).toBe('0x7df') + }) + + test('builds DoIP addresses from the CP_DoIPLogical parameters', () => { + const tester = testers['Base_Variant.DoIP_ISO13400'] + + expect(tester.udsTime.pTime).toBe(50) + expect(tester.udsTime.pExtTime).toBe(5000) + expect(tester.udsTime.s3Time).toBe(2000) + // Tester-present rides a CAN address, so an Ethernet tester has none. + expect(tester.udsTime.testerPresentEnable).toBe(false) + + const [physical, functional] = tester.address + expect(physical.ethAddr.name).toBe('Physical') + expect(physical.ethAddr.taType).toBe('physical') + expect(physical.ethAddr.tester.testerLogicalAddr).toBe(0x0e00) + // A document that names a gateway makes the ECU a node behind it. + expect(physical.ethAddr.entity.nodeType).toBe('gateway') + expect(physical.ethAddr.entity.nodeAddr).toBe(1) + + expect(functional.ethAddr.taType).toBe('functional') + expect(functional.ethAddr.entity.nodeAddr).toBe(0xe400) + }) + + test('groups every service by the SID the document writes', () => { + const services = testers['Base_Variant.CAN'].allServiceList + + expect(Object.keys(services).sort()).toEqual([ + '0x10', + '0x11', + '0x14', + '0x19', + '0x22', + '0x23', + '0x27', + '0x28', + '0x2A', + '0x2C', + '0x2E', + '0x2F', + '0x31', + '0x34', + '0x35', + '0x36', + '0x37', + '0x3D', + '0x3E', + '0x85' + ]) + expect(Object.values(services).flat().length).toBe(96) + }) + + test('a subfunction service locks its subfunction parameter', () => { + const session = testers['Base_Variant.CAN'].allServiceList['0x10'].find( + (s: any) => s.name === 'Default Session' + ) + + expect(session.subfunc).toBe('0x01') + expect(session.autoSubfunc).toBe(true) + + const [subfunc] = session.params + expect(subfunc.name).toBe('Subfunction DiagnosticSessionControl') + expect(subfunc.type).toBe('NUM') + expect(subfunc.bitLen).toBe(8) + expect(subfunc.value.data).toEqual([1]) + expect(subfunc.phyValue).toBe(1) + expect(subfunc.editable).toBe(false) + expect(subfunc.deletable).toBe(false) + expect(subfunc.meta.cddField.spec).toBe('sub') + expect(subfunc.meta.cddField.choices['1']).toBe('defaultSession') + + // The response payload container contributes its own parameters. + expect(session.respParams.slice(1).map((p: any) => [p.name, p.bitLen])).toEqual([ + ['P2', 16], + ['P2Ex', 16] + ]) + }) + + test('SecurityAccess marks its subfunction accm, not sub', () => { + const seed = testers['Base_Variant.CAN'].allServiceList['0x27'].find( + (s: any) => s.name === 'RequestSeed' + ) + + expect(seed.subfunc).toBe('0x01') + const securitySeed = seed.respParams.find((p: any) => p.name === 'SecuritySeed') + // HexDump (4 Byte): a byte string, edited byte-wise rather than as a number. + expect(securitySeed.type).toBe('ARRAY') + expect(securitySeed.bitLen).toBe(32) + }) + + test('a DID read expands into one parameter per DID member', () => { + const service = testers['Base_Variant.CAN'].allServiceList['0x22'].find( + (s: any) => s.name === 'Development Data' + ) + + const [identifier] = service.params + expect(identifier.name).toBe('DataIdentifier') + expect(identifier.bitLen).toBe(16) + expect(identifier.value.data).toEqual([0x01, 0x00]) + expect(identifier.meta.cddField.spec).toBe('id') + + expect(service.respParams.slice(1).map((p: any) => [p.name, p.bitLen])).toEqual([ + ['Operating System (Version)', 16], + ['CAN Driver (Version)', 16], + ['NM (Version)', 16], + ['Diagnostic Module (Version)', 16], + ['Transport Layer (Version)', 16] + ]) + }) + + test('an ASCII data type becomes an ASCII parameter of the full width', () => { + const service = testers['Base_Variant.CAN'].allServiceList['0x22'].find( + (s: any) => s.name === 'Ecu Identification' + ) + const partNumber = service.respParams.find((p: any) => p.type === 'ASCII') + + // ASCII (13 Byte) is a field data type: bl=8 is one element, 13 of them. + expect(partNumber.bitLen).toBe(104) + expect(partNumber.value.data.length).toBe(13) + expect(partNumber.meta.cddField.encoding).toBe('asc') + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/cdd/fixtures/CddTools-doip.cdd b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/cdd/fixtures/CddTools-doip.cdd new file mode 100644 index 0000000..69e1f53 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/cdd/fixtures/CddTools-doip.cdd @@ -0,0 +1,32142 @@ + + + + + + + + + + + +D:\ExampleDocTemplate\Ecu.jpg + +/9j/4AAQSkZJRgABAgEASABIAAD/7QE0UGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AgBIAAAAAQACOEJJTQPzAAAAAAAIAAAAAAAAAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1 +AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAA +AAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD///////////////////////////// +A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D +6AAAAAD/////////////////////////////A+gAADhCSU0EBgAAAAAAAgAE/+4ADkFkb2JlAGQA +AAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDAwMDAwMDAwMDAwM +DAwMDAwMDAwMDAwMDAwMDAEHBwcNDA0YEBAYFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwM +DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgA4AEsAwERAAIRAQMRAf/EAaIAAAAHAQEBAQEA +AAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQC +BgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PC +NUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW +5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voR +AAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEyobHwFMHR4SNCFVJicvEzJDRDghaS +UyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp0+PzhJSktMTU5PRldYWVpbXF1eX1 +RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+DlJWWl5iZmpucnZ6fkqOkpaanqK +mqq6ytrq+v/dAAQAJv/aAAwDAQACEQMRAD8A9UYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 +FWqYpdTFXVxtadXG1bxY07FaUJr20g+KeZIv9dlX+OGkcSU3nnfyra/3upQn/JQ+p/xGuPCvEl8P +5n+T5J/S+tMh/neN1XDSBJk8UsU0ayRMrRv8SuvxK2QIZgq2FXYq7FXYq7FXYq7FXYq7FXYq7FXY +q//Q9UYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUFPrWk2wrPewRf60qj9eFjaU3Pn/wAq +Qfav0l/yYlZjjS2lF1+a+kRD/R7We4/1uMf68nwNfiJRd/m7qfH/AEbT4ov+MrM3/EeOPAviJPcf +mf5rkZ/3sUCfselF/wA1c8aYeIkt35n8x3n9/qVw6/yIzqv/AAuGl8RKXi9V+TSu/P8A363LJ8LX +xtor8+f2V/kw8K8axHdpX5J8f2MgQyEnoP5Y+azZ3C6Detxgl/3ilb7Kyf77/wBnlZDYJPWsi3h2 +KuxV2KuxV2KuxV2KuxV2KuxV2Kv/0fVGKuxV2KuxVrFFt4rZapjbK3UxtbdgpjYU5JUjXkzKqf5W +NLYS6780+X7U0nv4E/yQ4Y/8LkuFh4gSu4/MrytF9iWWf/jFE/8Axtxx4V8VKrv82bFf95tPllf9 +nkyL/wAR55Lga/ESqX81NYkFIreK3H+ykbHgXxEtuPPfmmdB/pvpcv8AfSIuWcDHxEnm1XU7l+d1 +eyy/6zPjwrxofj8f2/tfzYsViW7umKr/AKvxf/IyVseJY8SK78PjT+TG14ls1oF+JuESfzs3H/iW +RtbQX1vS+fxagksv8kXOX/kzyxtWnuLZU+GG4l4/b/dely/5HNFjaeFEWjW8/wAM9pLbo3wJLzWV +f9kvwY2vAtdfSbh9tPto6/tLigBY7Pz5I/xp9j9nFsBe0+Q/Nya5YNBO3+5K1+GVf51/ZkyohyBJ +lmVkM28kh2KuxV2KuxV2KuxV2KuxV2Kv/9L1RirsVdiqhPfWdt/f3EcX+u6r+vFFpNceefKsDcW1 +GJn/AJY+Un/ERiw8UJdcfmf5fTl6UU8rJ24cf+JYo8UJZL+aMsp42en7/wDFsv8AzTlnA1eKllx+ +YfmaX7LwQcvsJFGWb/kpyw8C+Kltx5n8zXJ4tfzov+R8H/EcPCwspZcfWZ/inleX/Wfl/wASx4UW +VD6v8fKL/Z5LhQ6G0d/ibDSFX6p9hlyPEtO+qfB8Cc3/AJMeJaWTW8sSO06pbxJ9iWVkX/iWHiZc +KX3F7pa84nu4pX/5d+c//JlXx4lpZb30PP4bS6lT+dlSJf8AkpJzwMkQja5O/Gw0r/g5Xl/4WGP/ +AJmYqm1v5J8/3zo3pfVf9SBIv+ohpcjxMuBMrf8AKPzNOP8ATNQ9L+blO/8AxGFYkx4l4E20/wDJ +LQ4hzvLhZZf23SJf+JTerkbbPDT+1/LLyrB9qKW449pZG4/8CnDG18NN7Tyr5ctDWDTYEbx4Bv8A +iWC2zgR0llZyxNBLBG0DfaiZV4/divC8l85eVU0jUOEXw6bePysv+K5ftND/ALP7ceWAtEgxB4uH +xcOeFqJRWj6rcaRqVvfWb/vYG+x/vxf2o2wENkJPeNF1e01jTYdQtG5QzL/slb9pT8srcuKY5FDs +VdirsVdirsVdirsVdirsVf/T9UYq7FWF/mt5sufK/ku91Cxob9+MVr7M5+J/9gnx4Qsjs8zdIdR0 +601FJXuvrUSO7yty+L9pcmHAmg0eZXRfS/1MlTFEIi8/8v8AbwqqcEVOK4sl6Qs3wryZ/wDIxVyI +8CStK/BE+KV3+Hjiq63mt54UltZUuoufDnEySry/2OKod9Q+OWK1tLif0n4u68IouS/aXk3/ADLj +yRLZIWiok8yT/DY6VF8f7crSz/8AJmOL/k5lZKIwTO38nefrz41f6v8A6sEUH/UR674LZ8KNi/KX +XbmjX2pvzP2uU8rf8LH6SY2nhRtp+Sujq/q3V1yf/iqJFb/gn5vjxsvDZBaflp5Uth8Vu83/ABll +b/jXjg418NNoNA0G3CiHT7dOH2aRLgSAjhsoRFCqOigUGPCzteFkPtjslcEPc4LWl3HAl3HFWiMV +axVL9b0e01jTZbG6X91J9l/2lb9llyQLHILeJ63p97aXFxBcp/pVqyxXH+V/vuZf8h8sBcThSt4e +XDj+x9t/+NckUMn8g+aG0DU/Qum46XeMqS8vsxy/78/6qZUQ5GOT2sUyDdduxQ3il2KuxV2KuxV2 +KuxV2Kv/1PVGKuxV4h+a+svqfmP6jE3K105fSf8AlaRvik/6p4Q1yLCPIV89rqF15Znl4W91+90x +3/Zl/lyYaJBOpXuFldWif918Lu2TaUW9sssPwt/kfHiqmkWpwXEssV2npcF4WjwIyt/sv77/AJF4 +sll9FbajbxNKjekrszxc3+Fl+Flbj9vhiq63V5UezlfnwTlFz+LlEv7Pxfyf5/3WKumm9J/rSp/d +fBdov7UX7X/Af3keKs9/Lkaat1cQTqktw3721lfi3wftccgS34xb0XIEuRwN42jhdja8LqHBTK3c +CcUEtiNRhtFLqDAl2KuxV2KuxV2KrSMVargBQN2J+efLcmoWg1CzTnf2av8AD/v6Bv7yH/qnkwWu +cXlE0SRBPS+O3lXlE/2fhy0ONJSd+X7HJssEURk9L/LPzV9Zt10W8b/S4E/0V2/3ZGvb/YZit+GV +s/wOQW8VdirsVdirsVdirsVdir//1fVGKClHmbW4dF0K81KX/dCfB/lSN8Kj/gjhYF89I80ryyyv +6ssrc3f/ACm+LAhItesXT0rq1/3ot39WL/WxVn1pqFprGjW+t2v+7UVNQhT9mf8A5vy8FxiFF7dG +bkr5YGshVm9Zk4/tLgSpW7os3L/j3uvgl/yZ/sxt/s/7v/kViqx7OZZf3XwSxPzt3/lxTStKFleK +8iT90397E/7P8y/66YrSN0y4l064WKBuMsH72yb/ACPtMv8AsP8Ak1kCzg9f0bU4dT0+K8i/b+0n +8rftLlRcuMkfkWTsVXgYq7FXYq7FXYq7FXYq7FXYq0emKrcVdirzHzz5cTTr763Gn+428f4v+Kbl +v+NJv+TuWRLiyxsKlRld1/3bFloLQdlkLXEFxFeWr8biL4on/wApcZM4PbvK/mG313SkuY+KTp8N +1EP91yeGY5DmRkneBk7FXYq7FXYq7FXYq7FX/9b1RigvIfzp1t53i0a2ba24z3a+7KeC4sC8+t+a +wxP/ADJih13aevFyX9r9jFVPyxdy+VtefTNR5rpWspw/yeX82TBaSGW3ds1rcPEy/Y/kywFrIa/v +U/lfJsUPbwxM8trKnwN9tG/yvtYqqPzileKV+dxB8Ly/syK32W/2af8AJXFspV/upuX/AB73XFX/ +AMmX7Mbf7P8Au/8AkVitLJoZuARX4yxfHE//ABH/AKpyZAqGS+TfMH1HUEWVuNhffDLH/vmVPh/6 +9yZWWYk9RyDlBsdcVXYq7FXYq7FXYq7FXYq7FXYq0Tiq3FXYqhtR0+01Gxms7pPUt514SphBYy3e +Na3pV3pV3LZzvyuLX4vVb/d1s3wxyf8AMuXLAXHljtLX58/h+B/5MsYBMvLPmC40DU/rSfFayvxv +Yv5l/mX/AC0xMbZiT2u3uIbm3S4hYSQyryjdf2lbMZyQrYpdirsVdirsVdirsVf/1/VGKC+ePPtj +fReadVll+L1bhm/2P+6/+ExaykssvwYq53fh+2uKqWsvNfaTFZy/3tu/7qX9pfg+HJAoplHlvVv0 +toMLXPBdQsv9Hl5fab/KywFoyBW9FFf+X+TCxdLDKr+qrf66PiqJuIuVul1F8bxJ+9RP2ov2v+A/ +vI8WTdtFbypLZy/Hbyp8D4qhedx6vGV/VuIuKy/5X8sn/Pb/AJO5FVVeCy8/+Ped1V/8mX9lv9n/ +AHf/ACKxSHp/k7W/0hZfVp/96rP4X/yl/ZbIEN4kyEHINgXchhS2CD0xV2KuxV2KuxV2KtFhhpFr +anGltTWeFn4K6s3Hlx5fs/zY0q/fBbKnYbWnYgMREMW8/aZaz6O18zKl5Y/HaM37XL4Wjb+ZHycW +E4h5ZcIiy8lT4H/4XLnEQ8qPw4q/Hn9h8VZr+WnmcWc40S5f/RZ2pYP/ACyf77/2WVyi3YpPUqZQ +XKtvCh2KuxV2KuxV2Kv/0PVGKC8//NHy8k9l+mIoubwL6d0i/tRfzf7DCwLxh4ZoL6W1b9nAhW5v +9X5L9v8AkxVa/wBhP23fACzAXaZfJomuW+oy/wC8Vx+41Bf9b4eWTBaMgZtdwpBccV+NOHKKX+ZW ++y2WtKkipz5cPjbFVS3uHgfj+xL/AML/AC4slnpeh+6X7H2rT/JX9pf+eP8AyaxVTvv3sP1xP72L +lzRPtNF/uxf9h/eR5FXJ6TI8TfFFL/J+0rf5+piqP0fVbjT7qK7V/VltWWK4X/f0b/t/7NP+SuEh +MJPW7e4hureKeBuUUq80b/JbKyHLgqsKjAClYOanbJMV3qP4YKC208xRSz0VR1J2xoJU21C0VPUe +4jVOJfkXFOI79caRxKB1eOXTJL6zRrkIjMkS/C7Ff2aNjS8SWHXtYuDE9lp/K3enN3ZuS/zLx4/5 +Uf8AyV/31hpjbbjzLPPzR1gjjZWT1eK+opXkVbjz+x/1Ux2RaFls0g9YajrMTeq78VfZljZuUkf9 +5itoeHV/Ken3HrxTy3M6H4XVfspw48f2fg/5m4aW1K7/ADMtY/7qzdv5WZv+aceBHiJRd/mZrDuy +xxRQL/Px5f8AEseBfESq48069Ovqz6hLx/bii+H/AIVeGEBrEil7tLL8UrvK/wDlc2b/AIbLAGuc +ih/SRf5EwoUvq/wccVUU5ovH7D/zr9rCQx4nr3kLzQ+s6aYLtv8AcnafDcf8WL+zKv8Ar5jSDmYp +WyvItrsVdirsVdirsVf/0fVGKqVzbw3FvJBKvKKVSrr/AJLbYq+dfNmjy6Rr13bS/Eyv8Dt+1E39 +22LUlSOnPFUTwRHRf+AxZq13aQ3VpLFKnwypxfFCaeS76W+0x9FvH/3K6Nye3dvtTWf83xfyZaC0 +SCYS8P2/t5YC48gvZ/3Xq/abh8f+rkWQRHBLqL0l+G4i+O3d/wCb/m/+7kxZhCW8yrL9jikv7H7S +t/13+7xVZLaehziX4UT47dF/4aP/AGH/ACa/4xYqvL8+E6/Fw+GWL+aL9pV/1P7yPEhHJm/kfVfQ +lbTJH5W8vxWj/s8v5f8AZ/3mVkORjkzfI0207GlpTkmiiHKR1Rf8puOFjxJfqGraE0LwXNwjxSr8 +SL8X/EcaXiY/ca75djYyOk99L2eTf/Y/6mT4GrxEKPPMVunGxsIoF/l/1v8AVx4EeIgbvztrcn2Z +fS/yFXjkuBHipNd65qN18E8rt/rM+HhW7QM3Pjy/mwMWnWb7P/G+KodE+Pj6v/A4oQuo6npMEPpN +exLK/wAHxyorYqgf09aLw9BLq/8Ag+3FA/H/AIKTgn/JTFV6anrk/wDcaasSf8vU/wDxrCsv/JzF +XOuv/aa7ii/nS3g5f8nGfFUdYzXfP0p3+2vBJU+FW/1l/YfFVWVH/wA/hywlrIa0rVdQ0vUoL+y/ +vIP91fsyL+1G2VkNuMvc9G1a11XTYL+2blFOoYDurftKf9XKSHLiUd2yuklvJhQ7FXYq7FX/0vVG +KuxVgv5n+VV1XTVvoh/pNnu3+VH/AM2YtbxtIft8vtxPihWldF4N+22LNz33FPi+P4MVXfW0sIot +ftf72ydZUf8AaaL/AHYv/AYQWuQZXdwwu6XUCerZXierbyr/AMR/2GWAuPIKMLzL8a5JiHJL6Enq +/Z/nxZhG3dp6r+qvxxXHwP8A5Mv/AF+/5O/8ZcVW+l9ci4/YuIv23/mX7Lf9VMQqHdPS4S/ZVvt/ +5LfZb/gMsIRJ0KTQOiQPw9L97b8f2VX7Sr/qf3kf/XrKyFjJOpvzMv7b0rW4ureOWVOSs6Py4/zf +DkOFt8Rbqvm7W4rbkzS3UrOnCC1ZFX4v8vkqcMaXxEvTU3vIvrSI6S/ZlildGZW/Z+KNn+DJ0x4k +vsdWvvV+q6ncRT8vgSWKJoPTb/kY/NMV4lW4aZX4v/q5LiancIlTlK/BP23f4ceJaS+XzD5bg+B9 +Qill/kib1W/4GHlg4mXA2/mRG/3m0+9uv8v0vSX/AIKZoseJbUZtT8yT/DBZW9r+2jzyvO3/AAMa +p/ycwJQ7w65LC/1rUOPx/wC6Ioov+TnqviqGTy3Yzuiz/WL92+wk8srL/wADy4YqmcOiafpyJ6UU +Vq/8iRccVXy2NxL9r4on+Dh9nFXW9jdrcPFL8Kfz/s/8Fiqr9WiXn69x9j7H7LYqtaG34v6TfBz+ +DFXPzli5N9uL7af5WEFMwh1X41bnx/yMmA1Ask8leaE0PUvQmf8A3F3jfvX/AGY5P2ZP9T/fmUSD +kY5PYsrIcl2KuxV2KuxV/9P1RirsVU3VGQq3xI3wsuFBeH+f/Lz6VrEvoJ+6l/excftY8LAyY1cW +OpraPdLbv6UCeq6cfi4/tcVxpjbEtT8yW883+jfDFx/4bGk2neiagj26QS/FEqM7p/rYZMiyryLq +HOG48rS/G68rrR3f9pf994waymsyPE/Fv3To/DLWle6I3+V/r4qq2KcontZX/dfbT+biv/NGKrHe +WL96v21f0rj/AFvtf8P/AHmKr7iJfR9X7SS8Vl/4y/Zjb/Z/3f8AyKxVDokzxMv+7YviiZ/i+Jfs +tiqhFLwT65EnpcvglRf2eL/Z/wBg+TYyRFpzbnFw/wAuL+X+Zv8AqpH/AM9cVil6zS2d8/L4lX4Z +UT9pWyCadq2mM0qTxOnCX9v9luX2f+DxWkbp8zz2/KVf9Ii+CVG+1/Krf8y/+wuKUsTyhoLXHqz2 +n1y9lf8Ae3F0zzs3/BfBiqZpY2VmnpRQ+kn7HpcF/wCIrkrRTnt3/ZHwf5X/AAWNrSk+ncXTk/wf +ayHEy4Que2sVTlL8UvPnw/yceJPCEJzSJ+UX214f8FhYuleKX/JdPt/81fZxVe99L6XpK/Pn8Tun +2eX83xYaW0FK7ypy5u/DGltRmX1U/wAv+TJNa/0v2lf/AF8VXwu8HxMnPj8Dp/MuQZOmlhZ1eJuU +T/GnDFVnBHXkyP6TcslJEHpP5aebPrUT6HfS8ru2WtpK32pIR+z/AK8XTMeUXMhJ6BgbHYq7FXYq +/wD/1PVGKuxVjnnvVZ9M8tXFzbsyShokLL9vizrz4/5XCuMUSeaXerWNqkvqv8f/AC0N+1+1yzIi +HElJSh8w6Mz8otQ5XCp9h4n+Jf2uS5CmdsE178v7FnuLzRZeH/HwlkzcuS/teg3/ADLwUtpFplxx +dPj+19jIybSyCO7uP3V9Z/Be2r+rDx/yftLjFgXoWovb6nZWWu2P+8t+v+kJ+zHOv2stakPbvFLF +8L/Yfg/+xxQivj4c1+CX4cVVr6a34RT/AO6nTjcf8Yv5v+eL/wDM3FXWn989nPw9JkdHT9rFV7RX +EXBv92q/B/8AK/yv9mmKof6vEsvJX/0e6/n/AGZP2f8Ag/7v/kVk0RdbpN8cHPi6fGnL7S/yt/sH +xWSlq1k8sP1xU4PF/exL/k/3i5BspfpnCVHs5f7qX/ed/wBrl9po/wDmZ/yNxWmuHC4WdU/0iD4J +U/34v/N+LBVlhiidJYn5RP8AEkv/ABHFK10eV+LL8Spw5/s8cjbKls1eCRc+Xpf7HG1pR9Hk/wAP +Pnk+IMOFSe2ueH2OHL4v9jjxBeFVTTEf7Vwqf9d4FQ8toqc+PNv8vliqX1VfsvwZssphbvWPN8NL +aikssr8Pqj/6/H/mrIoRcUNx8HwcOeKongkX2k+1kGSEeJPsL9j/AI1xVdwfh8HwKmSQFkUN0t0t +zaS+ndWrLLBL/lLjwtgk9q8q+YoNd0pbxV9KdP3d1b/77kXqMxnLBTrFLsVdir//1fVGKuxV57+a +2sJbppumcGd7p3l5/sr6S/tf62ILAvOL3QZdY0yXTon43VqnG3lT/fDfZ+H/AJdn/wCZWWAtZeKv ++T3n21d/QheW4if/AHrWXivH/fjM3F0yKTJ615b07zD9Xt4G+PjxZ3Vf2lReTf5CO+FgZMX8xW6N +5n1BrVES3S4ZIkReK/D8OFkEw0zlx4/7LINgZX5I1GKz1CbQrp+Gn6z8du/++7lcsBayE7+o3Frd +vFKnCWL4XRsmC1kK7ui4GLrf4JviTmjfY/1sVX8OCekv97F8UTt+1F+z/wAB/d4quS4+xL9n9iX/ +AFf2v+A/vMVdcRRRSvBP/dT/APEv+b8VWw82f1efK9tX4XHL/dit9lv+eyf8lcVRV28SzJdQfHZT +8Vu3/wB9/sq3+w/u5MUpb9U+q3ctrxdX+1bv/Lx+L/hMVRTvzRL7hwdX43CJ/wAMv/MyPFCtcW8X +90n+89x8cX+Szfs/7P8Az/vcVUElms/739v9v+bFPEs4JzeWJ+ac/wDP7WK8SlLLEroiv8CfyYrx +Ie4u3l+FUd0/1cV4kMiaj9n4Ik/y35YtdKX1GZv724/4Bf8AmrFacmmWy/GyM7/zuztk0qzpw/1M +VUX9aV/g+x/w2K8SIR3R+LfE/wCxivEiEh9dPSr8f2XTBaKS97dFuOVf8hMbWkQluzJ9l8bWkR+i +ZW58l4fyfF9rG1pG6bqd75e1BNW4crDgq6lEv+++X97/AM8cqLfjL1uKSOWJJY35oy8kZe6tvkC3 +2rYGTsVf/9b1RirsVYP+Zej+vpianEnOWz+GVf8Aipv+acgGBefWmoXEUyXlq/CWJP3Lr/w2TBYF +J/Mn5m+ZFvvqtr9ViRU+OX0E5cv8nlyySmKVad5k8yanqHq6jqcrWVujT3EK/u19KJOX2Y+P28WB +ixk8/Wdv22fJMgE80vnXj+2+QLYEbNbytbp8f71H527/AMrL9nEFSHotpqf+IvLcWsL8OoW/7jU4 +v2uS/tZYC1kITn8PNck0qqcGT/hP5cVd61xzSWJ+dxb8uCN+1/NH/s8VVUSL62jJ/dT/ABI//EcV +Xvb8kezlfg8Sc7f/AIxfy/8APF/+SWKreUUXpXn+7Yk9K7i/aZW+0v8AzMjxVXdPqruvP/R7r4v8 +luX/ADXiq23dLq04s/8ApVk/wO/2mX9lv+ZcmKr7i29J/rUX+89wnKVP5f8AK/2GKtQy/wCj/VZf +2fsf6v8AzZirTmKdHin+L9iVf+Nv9ninhQL6ZbxJ8KP6X+Wz/wDC4rwqSRIv918GK8LpXTnxxXhU +Xc/BiinfH9rjitKUtxw+D7WTYqH+lyv+4R3xVGWmk6zL9qLh/Pz+HFeFHJ5el+FpZl/y8V4UbDo9 +pE/Jn5P+x+zlVsqVkeGL7Kelja0udU+Dj8Px88NrShM/x/Y4fycsbWlG4uXVHRk5RP8Ab/65wFSW +Q/lnqv8Aosugyvyl06jWnP7TWjH93/yK/u8rLkYyzrA2uxV//9f1RirsVUpoo5omikXlHIvFl/yW +2xV4p5m0m+0PVZYIrd7i0dvg4/a4/wCq328VeQ+ZNTml1Z/3Lrx+2j/C2LVSrpI1mWxu7qKJEt5+ +MDv8fLivxfD8P7eK0i7HTrhndWT48WbIbG3ROHFOXHFUb6Pw/wCXz+xikory/rP6C19JZ/8Ajlap ++41BP5eXwrJi1lk2q2iaZdzcvii/3U/7LK2XtRQ9t8Q+F/gf4sWsqkVwkEvxpyV/tv8A8RxSvZ3l +9WKL7bcpbf8A1v2l/wCZn/I3FVK41C4fjLK6fWIPj/yW/wCu8UxREtpFPwvIP7qX4X/m/wA/914r +JFRW7+l9TlT+d7R/8lfiZf8AYf3keKEPbxXCuzMnOWJ2+x+1E37P/VPFVZPtosDcreV/28laOJY6 +8P3H8n2Jf2f8nG14nSw8UWVH/e/tp+yy/wDXeR4Ugof4+fxPjwtgLaW7t/dI7v8A5GNsOIlEReXN +Yn/urR/9d/hxteElMLfyLqEvxzzJF/q/FjxtvAjbfyLpfL9/cPcf8KuPGvAjIvL2iQP8NunwfYf7 +WRVWuH0+BePFYv8AUxVK3u7dn5L8WLFZ6v8ALiqBlhmZ+OLCl/1ReH+XitLvqvwcv2P2OOStbWyx +Jz/k/a/2WK2gbiW0ROc7on+tkbQIsfg80abpfmLTb62uPrEsUvp3EMXxcoZvgk/6qYGyIe8I3IVy +tyW8Vf/Q9UYq7FXYqhL7TNPvk4Xluk6f5eKpfZeTPKljK01tpVqkr/E0vpKzf8E2KKXeZtCt9W0m +W2aJWlReVv8A5LYrTwt7eaC7dZU+NPt/zYoWQ8Hi5fYTFVju7v8Aun+xikqs1pFeWjwSp8Eq4sCy +Xyrd/p3y5Lp14/8Aua0T4Of+/IP5suaSibGF/wBv7CfY/wArC1lv0eSf8TT+XFKHhhuFufhfiy8X +R/8AV+y2KqmoxPO/O2h4uycHT+Vv2l/6p4pkitGimgT0GTmnD4+X83/N6YrFVS3u/W5fW+cXPlwf +7Xw/ytiqNREb4f2G/kbFVS30fUZ/7iLgn/A5G2XAjV8qahK/73gv+WzcseJeBGxeULReDTzO3+r8 +K5HjbBjRaaDpKty+r/8AB48bYMaN4W8CfDwTG0cIC17uJf8AL/1cbXiCHl1A8PgxpbQj3sz/AOTj +S2gZpU+wzv8A8FkmtCXEVv8AA3D4/wDiWKtQujf3SYsUR9W/m+HniqU32uaJZ/FdXsUX8nxcm/4F +cU0x3UfzL8vQI/perK/+wiX/AIbFaY3rP5zRRS/uLeKJE/bld2/5oyNrwMK1H88FnldbrWOKL+zA +v/NONp4Eqb80/Ldx/vNp9xeXX7Et1L6UX/M18jaRFkHkjzpr2u+ZLSC2tLWz034pbj0ldpWii/4s +5ftv/wAV422APqry9rVvrGmpcx/C6/BPF/vuReq4GSaYq//R9UYq7FXYq7FXYq7FXk35k+X0sdYT +U4k4Wt5/fOv2Vl/yv9fFixj0UbhF/M/xviq6HQYp9H1C8gu+NxYP6qW7/wC7Iv2sWIQumc3R2/2W +LMKK6nL5e1a18w2vxeg3C9i/35A32uWSBayHot3b2yuk9r/vFeIs9vy/aVviywFrIQSO6vKrK/BP +sYbY8KIht7mX4YrR5eHx/CmNrwou00HWWdJZbf0Iv5HdMhxsvDTCHys8Ery+r8DfsJ/Njxp8NME0 +GzXgrpyf7acsizpG2lvYwfCiLitI76zbKn28FNlqL36fZX43xpbQlxfTVRXRfj/YfCxKCuL6bn9v +Fgh0u+WKVr3D/s4qppFfS/ZTJWxQ9w9pa/72XsUX+QzJhtaSK+8+eVNO5skr3j/b5xfZxWmNan+d +Gnxc/q1onNP52/5pxWmFaz/zkDcwO/pXcVuj8vgThy/43yNsuFgOrfndfXTPzuLq6/2bcf8AhsbT +wsduPPnmO8H+jWvFP5mb/mnhjSbS95fNl5/e3bxK/wCwvw40tr/8NpL+9uZpZ3/ym5Y0tohNAsYv +j9JMaW0JqOmW32ovhX9vh+zkiGL2X8pEtLXRr28ldPrUrxWqIrcW9JUaRm/2b/8AJrK6V7F+W19c +P5jSKzd5LWWCT67+0q8D+6b/AF8Noxh633wM3//S9UYq7FXYq7FXYq7FUt8waPDrGk3Gny7CVfhb ++Vv2ThYvFkt3gu/SnXhLE7QXCf5S4FQPmO4eCKVon4v8KP8A7L4cWIb0ZPQsov8AU+PFmHXcPJPi ++xKnx8/5WyIKkMu/KLUIpdNvfLN4vqPYO0tlz+16EvxZYC1kM/t7Syih5xQpE37f+thtlwphFz4c +6fb/AGMbXhchDJx/l/4HI0ytZNyZH440tqSQs0XNm+1/xLCtIR4ZW+Lm/H+TFad8S/z88lTXa/jd +tw44ptCXvCBfVvLhIE/ymTIpLH9W86eTbHny1BJ3T9iL4v8AiOLWkV3+b2hwfBY6e1xL+3z4RYsm +P6n+e97Aj8vqFn/kM/Jv+JLil51rf54vPz9XVri6f9hLfnx/4XgmC00wTUPzYvp3dLW3fm/7bt8X +/C42tJVNrfnG8f8AYt+X8i/F/wANk1pR/QN3c/HeXcsvL/KbCq//AAzaL8XD/XyXAjiTCLTLSL7M +S48C8SrwRfhVMaYWvpjS2sflwxpbWcI2xpbUnt+aP+0jYSGSZ+VtZuNF1BOKcuCcODf7si/aX/X/ +AN95AhL6x/JZTc6BLqxlSVbplW39P9mP7X/G+UJAek4pf//T9UYq7FXYq7FXYq7FXYq8z/Mny/6F +9FrEHwRXXGK6/wAmT/dbYq8415Hn+rqyfH6vK4/55f8AN+LFF27v/sGxVVm+FkVfjyISWtD1P9B+ +a9N1Ff8Aeed/qt2/+TJlgYPbJY/9OT7PpN+1/k4s7RsUSc2Zftfy4ra5+auqr9h8UKPP0kf1fs/t +u+KpLqfnLytp3NZdTt+a/wC6uXL/AIjirEdW/O7ynbcGgSW6lX7HFfSX/hsVYhrP/ORNx6T/AFO0 +t4E+wjyvy+H/AIXDTBgWuf8AOQ2qNzX9L8f8m1/5txpLCtR/Ni8vH/dQ3F5/xbK/2v8AiWNKlMvm +zzref3SJAn+ry/4ljSpfLF5pvj/pN7L/AC8Fbj/xHJEM7S17eW25pP8Ab/nyshbQVxcfy4UojQXT +68jS/Fir0W7tknt0niy1pQKNLwxQs4fzZK2S+mNq7n/L9v8AY5fzZG2NJPp73sV3xvIvjVG5Ov7T +fs42tJg90i/ayNsqS+41vTovtSp/qJ8WNrSX3Hmi2X+4iZ/9b4cbTSDl8x3rOnGJeCfsfF/xLBag +PvX8jmlf8q/L88sPoSzwNK6/Z5cnbizf6y0ytsDPcVf/1PVGKuxV2KuxV2KuxV2KoPVNMt9R0+4s +bleUNwnFxirxXWNMaxumW5i/fxN6Uv8Asfst/s8WKWu6Kn8n2sULreXlD/l5EMih9QtPrlo8X8/x +p/rZYGsvQtG/MfQpPLlu+rztBf2y8ZkWJ25ccUpHqf556dA7/o6yeX4P72dvSXl/qrzxRbBvMP8A +zkTqy8l/ScVl/kW6Jy/43fFm881n88L6+T0nu7q//wCD/wCNsVYvd+efMNzza1tOCf8AFrcv+aMK +pe7ecr7+9uPST/J+HEIbTyhNL8VzcO2WUxRtv5W02L7Scv8AXxpUwt7G1gf4U4J+3jSoj/R/5XbG +lWMnN/gThhIW0n17TvVh9Vf9nkCE2wu4R4n4tkGx1vM8T/DhV6B5T1lJU9CXLGlH30XofEv9037e +KEquNTtIv72VF/1nyNs0vl80acv2GaX/AFVxtaS9/NMzclgt/s/F8X8uRtNIV9b1SQqDOtusi8uS +/wDNuNrSCe49Xg88ssrc/wB6n/NLZG2VKPNOC/B8Svy5f5P8uNrSynJsbWmQeQvKtx5p846VoECf +Hf3CRO/8sf2pG/2CY2tP0h0+wt9PsbextU9O2tYkgt1/lSNeK4EorFX/1fVGKuxV2KuxV2KuxV2K +uxVhfnjTLSe7sU+zLfM0Tlf+Kl9RcIYFIofL2jRK6/V0lR/tvL+9+1kw1l5lq1jcaFr81mzv9X/v +bfl/vpvs4lQmemP68yr9lMgWwPKfzV89agvmeXTtJlSKytU4/ZT7X7TYUvNJdR1DU5uMt3Lcf67f +D/wOFCcw+UYViSe4+Llli2mVpplnEnwoi8cVtHQpaL/l4ta9PhTFWsWSHaVFd0/bi/vU/wBbFVbg +clwsVjoceFadzORtlSjcTW/DhPwRf8v4cbTTDdTsUnZms3SXh9vg3L4cqbAlU1pcQTelKjxSp9tG +Ti2Kpnp0rwc5V+Djx/yfibFULfatqF5+9ubp2+LiYl5fCv8AxDFUI/o/Gi8m+L90/wBn4f8AKXIq +55fjfgiIkv7H2uP/AAWKrHllbhyflwTgn+riqzFXcMVXw280r+lEjPK/2ET4mxVnXln8jPzS8wvF +9R8v3UVvL/x9XSfVo/8AgpeOKvqn8jP+cfrDyBGdX1V0vvNEqsnqx/3NvG37EPIfb/nkxV7LirsV +f//W9UYq7FXYq7FXYq7FXYq7FXnH5g34m1BLe3l4Napy5r+zLy5YQwLdjcRXlol4qf3/APep+ysq +/wB4uTDWUh/MXRotT0xLqD4tSsPjRUT7UX7S4lQwjS7t7XRLjU2+HhySL/iOQLYHzprN39a1a4nl ++P1Xb4/9Z8KVW40yKzt7e/glVkl4+qi/s4VZdo19DeWPpP8AbyxqtSdEif4mxW1/q4quR/gdv5MV +a9VOeLNJ9WsdOlu2vJbj6vL8PqvyReWKqVx5m0yL/j4aV/8AITI8aaQEvnF+Dta2nwL+2zf8048a +0l93rGuSuyvceh8PPgvw/DkbZUlLu8v967t/rY2tPQPyE8st5h/NLQrNdooJfrlx/wAY7b943/VP +Al75/wA5S/lZHqNpF540yAG7slWLV0RfikgH93N/zw/5Nf8AGLAFfKOrfuoorX+f96//ABFcKpZi +q/g7fZyKoux0nU76b07O3lupW/YgRpW/5J4q9A8vf845/m1rvF4tClsom/3bfslsv/Ayfvv+SeKv +T9B/5ws1R+D695it4P5orKBp2/5Gzel/ybxV6Z5c/wCcVfym0kK13aT6zMv2mvZfh/5Fw+kmKvSd +H8oeVNDRE0fR7Kw4/Y+rwRRN/wAEq4qnOKuxV2KuxV//1/VGKuxV2KuxV2KuxV2KuxV5D53sZbPz +ZLK/+8t6n8v+7f2W5f8AJPFit0G7azS4idOVvPxZ05cWVl/ajb4vjxQuvvM1tY/7w2LtL/v24lT/ +AJlr8eKeF5Z581N4PLmoOsMVvF8UqRRfZVm/5vbFeF863bv6vL9j9jCGSe6HcJLZvay/Gv8Axrlg +VdpN89jfelz5Ir8HdMlbVTINb1TRoOE7XafWH+3EvxNja0kFx5us1/ukeX/Lb4cja0hZfNeptF6s +VukUSNxd+PLi2NppL7vU9TleVZ73jx+L4W+Fv8n93kGxBF7bnEzc5fh/eo/w/F/kt8WKrPW+BUVV +5K3L1f2sirTyys7uz/3vxv8A5WKrcVdir6s/5w8/L/ULKHUvOGoQNDHfxJbaXyX4niLcpJF/yP7v +FX0tc28F1bS206LLBOrRyxt9llYcWXFXyt5z/wCcQPMl15jefy5qVmdGl/ukvWlWSFf5f3atzxVN +tB/5wvsVVG13zE7N+3FYQIq/8jJuf/JvFXpXl/8A5xv/ACj0YK40b9JTL0l1GVp/+E2i/wCSeKvQ +9O0jTNMh9DT7WCzg/wB9QRLEv3LiqMxV2KuxV2KuxV2KuxV2Kv8A/9D1RirsVdirsVdirsVdirsV +Y1560JNU0Z+O00HxKy/a44sXl0Oo29siWt5cJFdRJwdJ+ETScf8Adi/z/wDPPFWOa9rkMrv6D/B9 +hJV+zivEwjz/AAahfafb6ZY/HLcMrv8AaZuMX7PGP9vFeJgOvflh500zRG1i/wBHurfTVZV+tXEX +pL8X2fhb4/jwhkxzS3/YyYVNtQ422mPdfD6q/DF/rNgtFMXeZWleXi8vJf22+Ll/N8ONrS36w6+l +x+B4vjR0+1/wWRtaWcmZ+bftY2tOwpX8HbFVyW832f28irK/L35RfmPr6o2k+X72eJ/+PhovSi/5 +GTekmKvTfLn/ADh5+YV9wfWLqy0mL9pGZrmX/gY/g/5KYq9X8qf84k+QNJmiudYurnW5o2VvSk4w +2zMv80a/E/8AyMxV7fDDDbwpFEixxRrxVV+FVVewxVVxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV/ +/9H1RirsVdirsVdirsVdirsVds2KsQ1v8uNK1NvhlaBOXMKFV+Lf5PLFUNaflD5QijcyJPdSv9qW +SWn/AAKpwTFU+8ueVtJ0C09CyT4nZmadgpkbl/lYqq+ZNAsNf0K+0bUF52l/E0Uop/N9lv8AYYq+ +BvOPlDU/Knma40++i/e2rcZf5W4/tL/rp+8xVKPM92ktpZRL9hv3rp/wuSVj6RO37GKqtvZXE8vp +RI8srfYiReTf8CuRVnXlz8h/zR1zi1n5fuoom/3fdItpH/yW44q9L8vf84a+a5+La3qtlpsX7aQI +93J/zKTFXp/l3/nE38s9OCPqTXmsTL9oTy+jF/yLg4f8TxV6P5e/LjyJ5d4/oXQrKydekqRL6v8A +yMb48VZLirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//0vVGKuxV2KuxV2KuxV2KuxV2 +KuxV2KuxV2KvM/zU/I/R/wAwr6yvZ9Ql0y4gR4rh7dFZpoz9lW5fyYqxS+/5xB/L6ezt4E1HU45Y +PtXDSxNy/wBj6eG1Tvy//wA4wflRpQVriyl1aVej38rMv/IuP00xtXo2j+VvLOiJx0fSrXTh/wAu +sCRf8RXAqbYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//2Q== + + + + +This CANdela template is based on ISO 14229-1:2013. + + + + +UDS +CddTools +Y1NUTFZIG2l5bQ== + + + + +CddTools.can + +LypAIUVuY29kaW5nOjEyNTIqLw0KdmFyaWFibGVzDQp7DQp9DQo= + + + + + + +Available interfaces + + + +(System category) + + +COM.INTERFACES + + + +Initialization + + +COM.INIT + + + +Communication + + +COM.COM + + + +Timing + + +COM.TIMING + + + +Autosar + + + +Autosar software configuration relevant parameters (name with trailing blank) + + +COM.AUTOSAR + + + +CANdesc + + + +Information used by CANdelaGen to configure diagnostic software components. + + +CANdesc + + + +Any attribute category + + + +Example of a user-defined attribute category and its usage in CANdelaStudio documents. + + +AnyAttributeCategory + + + +Quality Management + + +Quality_Management + + + +Editor + + +Editor + + + +ODX + + +ODX + + + +Autosar + + +Autosar + + + +UDS + + +UDS + + + +DEXT + + + +AUTOSAR Diagnostic Extract + + +DEXT + + + + + + +VariableForDirectAccess + + + +Specifiy name of application variable to be accessed by CANdesc. Currently, no (extended) type specifiers are allowed. If no variable for direct access is specified, a callback function will be generated. +Restriction: Only evaluated if: + - Service attribute 'MainHandler (on Service Level)' is set to 'generated' or + - Diagnostic instance attribute 'PacketHandlerOption' is set to 'generated'). + + +VariableForDirectAccess + + + + + + + +SignalHandlerOverrideName + + + +Provide alternative name for Signal Handler instead of generated one (default prefix + SignalHandlerOverrideName). You can reuse a Signal Handler for different Signals, if you specify the same Override Name. Pay attention that the function signature must match the different use-cases. +Restriction: Only evaluated if: + - Service attribute 'MainHandler (on Service Level)' is set to 'generated' or + - Diagnostic instance attribute 'PacketHandlerOption' is set to 'generated'). + + +SignalHandlerOverrideName + + + + + + + +Maturity + + +Maturity + +in progress + + + +completed + + + +verified + + + +released + + + + + +IoSignalType + + + +Specifies the signal type for IO Control + + +IoSignalType + +signal + + + +mask + + + + + +IoSignalDescriptor + + + +Input, Output + + +IoSignalDescriptor + + + + +ASR SWC DataElement Ref + + +ASR_SWC_DataElement_Ref + + + + +SYNCHELEMENT + + +SYNCHELEMENT + + + + +ASR UUID + + + +UUID of the synchronized AUTOSAR element which corresponds to the diagnostic object. + + +ASR_UUID + + + + + + +Faultmemory Relevance + + +FaultmemoryData + +N/A + + + +OccurrenceCounter + + + +AgingCounter_Upward + + + +OverflowIndication + + + +Significance + + + +StaticPriority + + + +AgingCounter_Downward + + + +FaultDetectionCounter + + + +MaxFaultDetectionCounter_SinceLastClear + + + +MaxFaultDetectionCounter_ThisCycle + + + +NumCyclesSinceLastFailed + + + +NumCyclesSinceFirstFailed + + + +NumFailedCycles + + + +Daimler_StdEnvData + + + +VolvoCar_OCC1 + + + +VolvoCar_OCC2 + + + +VolvoCar_OCC3 + + + +VolvoCar_OCC4 + + + +VolvoCar_OCC5 + + + +VolvoCar_OCC6 + + + +VolvoCar_OCC7 + + + +VolvoCar_FDC10 + + + +VolvoCar_FDC11 + + + +VolvoCar_FDC12 + + + +VolvoCar_SI30 + + + +OccurrenceCounter_2Byte + + + +NumConsecutiveFailedCycles + + + +NumTestedCyclesSinceFirstFailed + + + +RootCauseEventId + + + +ObdDTC + + + +ObdDTC_3Byte + + + +Obd_Ratio + + + +HealingCounter_Downward + + + +NumTestedCyclesSinceLastFailed + + + + + +DOCTYPE + + +DOCTYPE + +CONTAINER + + + +LAYER + + + + + +DOCREF + + +DOCREF + + + + +ID-REF + + +ID_REF + + + + +DataType is empty MIN-MAX-LENGTH-TYPE BYTEFIELD + + +IsEmptyMinMaxLengthTypeByteField + +no + + + +yes + + + + + +IsLeadingLengthInfoTypeByteField + + +IsLeadingLengthInfoTypeByteField + +no + + + +yes + + + + + +ASR Encoding + + + +Used in DEXT Export to set ASR encoding e.g. to BOOLEAN + + +ASR_Encoding + + + + + + +MainHandlerSupport (on Protocol Service Level) + + + +Provide MainHandlers and select type for all protocol services of the diagnostic class. + + +MainHandlerSupport + +none + + + +oem + + + +user + + + + + +PreHandlerSupport (for all Protocol Services) + + + +Provide type of PreServiceHandlers for all protocol services of the diagnostic class Restriction: Only evaluated if 'MainHandlerSupport (on Protocol Service Level)' is set, i.e. unequals to 'none'. + + +PreHandlerSupport + +none + + + +oem + + + +user + + + + + +PostHandlerSupport (for all Protocol Services) + + + +Provide type of PostServiceHandlers for all protocol services of the diagnostic class Restriction: Only evaluated if 'MainHandlerSupport (on Protocol Service Level)' is set, i.e. unequals to 'none'. + + +PostHandlerSupport + +none + + + +oem + + + +user + + + + + +PacketHandlerSupport + + + +Switch on/off Packet Handlers support for each Diagnostic instance of currrent Diagnostic class. +Restriction: Only evaluated if 'MainHandlerSupport' (on ProtocolService Level)' is set, i.e. unequal to 'none'. + + +PacketHandlerSupport + +none + + + +all + + + + + +Maturity + + +Maturity + +in progress + + + +completed + + + +verified + + + +released + + + + + + + +PacketHandlerOption + + + +Provide type of current PacketHandler for first found Service Positive Response. +Restriction: Only evaluated if attribute 'PacketHandlerSupport' is set to 'all'. + + +PacketHandlerOption + +user + + + +generated + + + + + +Example of a diagnostic instance attribute + + +ExampleOfADiagInstAttr + + + +Maturity + + +Maturity + +in progress + + + +completed + + + +verified + + + +released + + + + + +MaxAttemptsToDelay + + +MaxAttemptsToDelay + + + +DelayTimeMs + + +DelayTimeMs + + + +DelayTimeOnPowerOnMs + + +DelayTimeOnPowerOnMs + + + +IoHwAbManaged + + +IoHwAbManaged + +no + + + +yes + + + + + +NvmBlockDescriptor + + + +Specifies the NvM block name + + +NvmBlockDescriptor + + + + +Static_Seed + + + +This is used to indicate whether or not a static_seed is used or not for non-standard security algorithms. This value shall always be false if Delay_Timer and Att_Cnt are not supported. + + +Static_Seed + +False + + + +True + + + + + +Instance Type + + +Instance_Type + + + + +ASR SWC DataElement Ref + + + +Path to the system description data element which corresponds to the CANdela object. It is set by the SWC Sync and evaluated by DEXT export. + + +ASR_SWC_DataElement_Ref + + + + +ASR SWC ServiceDependency Ref + + + +Path to the system description service dependency which corresponds to the CANdela diagnostic instance. It is set by SWC Sync and evaluated by DEXT export. + + +ASR_SWC_ServiceDependency_Ref + + + + +SYNCHELEMENT + + +SYNCHELEMENT + + + + +Check Identifier for Uniqueness + + +CheckIdentifierForUniqueness + +no + + + +yes + + + + + +Snapshot Record Numeration Type + + + +Configures AUTOSAR DemTypeOfFreezeFrameRecordNumeration (CDS-70902). +Calculated: +- Snapshot Records have no trigger attributes (Failed, Confirmed, Update yes/no) +- Each DTC can have a different number of Snapshot Records stored (DemMaxNumberFreezeFrameRecords =: n) +- At each DTC, the Snapshot Record Numbers must be 1..n, without gaps. + + +Snapshot_Record_Numeration_Type + +Calculated + + + +Configured + + + + + + + +Maturity + + +Maturity + +in progress + + + +completed + + + +verified + + + +released + + + + + +MaxNumberOfDynDefinedDidReferences + + +MaxNumberOfDynDefinedDidReferences + + + +CAN + + +CAN + +not supported + + + +supported + + + + + +Bus Type + + + +Type of transport media + + +CAN.BusType + +CAN + + + + + +Transport Protocol Type + + + +Type of used Transport Protocol (e.g. ISO15765) + + +CAN.TransportProtocolType + +ISO15765 + + + + + +Addressing Scheme + + + +Addressing Scheme used for physical requests and responses. + + +CAN.AddrScheme + +Normal + + + + + +CAN-ID Type + + + +CAN-ID Type used for physical requests and responses + + +CAN.CanIdType + +11-Bit + + + +29-Bit + + + + + +Request CAN-ID + + + +The request CAN identifier for physical requests. The hex value not only describes the identifier but also the priority of the message. The higher the number, the lower the priority. + + +CAN.ReqCanId + + + +Response CAN-ID + + + +The response CAN identifier for physical responses. The response for functional requests is sent via the physical path. + + +CAN.ResCanId + + + +Functional Addressing Scheme + + + +Addressing Scheme used for functional requests. + + +CAN.AddrSchemeFunc + +Normal + + + + + +Functional CAN-ID Type + + + +CAN-ID Type used for functional request + + +CAN.CanIdTypeFunc + +11-Bit + + + +29-Bit + + + + + +Functional Request CAN-ID + + + +The request CAN identifier for functional requests. + + +CAN.ReqCanIdFunc + + + +UUDT Response CAN-ID + + + +UUDT Response CAN-ID used for multiple responses and/or periodic responses. + + +CAN.UudtResCanId + + + +UUDT CAN-ID Type + + + +Received CAN Format for CAN ID without segmentation (Segment Type Bit must = 0) + + +CAN.UudtCanIdType + +11-Bit + + + +29-Bit + + + + + +P2Client + + + +Timeout for the client to wait after the successful transmission of a request message for the start of incoming response messages. In UDS this is the timeout for the default session. + + +CAN.P2Client + + + +P2Server + + + +Performance requirement for the server to start with the response message after the reception of a request message. In UDS this is the timeout for the default session. The tester will also require the P2Server timeout, since in UDS service "DiagnosticSessionControl" returns the P2Server and P2*Server timeouts – the tester has to calculate the offset manually and has to add it to the returned P2Server and P2*Server timeouts. + + +CAN.P2Server + + + +P2*Client + + + +Enhanced timeout for the client to wait after the reception of a negative response message with response code 78 hex for the start of incoming response messages. In UDS this is the timeout for the default session. + + +CAN.P2ExClient + + + +P2*Server + + + +Performance requirement for the server to start with the response message after the transmission of a negative response message with response code 78 hex (enhanced response timing). In UDS this is the timeout for the default session. + + +CAN.P2ExServer + + + +S3Client + + + +Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication). + + +CAN.S3Client + + + +S3Server + + + +Time for the server to keep a diagnostic session other than the defaultSession active while not receiving any diagnostic request message + + +CAN.S3Server + + + +P3ClientPhys + + + +Minimum time for the client to wait after the successful transmission of a physically addressed request message (indicated via N_USData.con) with no response required before it can transmit the next physically addressed request message. +Minimum value = P2Server + + +CAN.P3ClientPhys + + + +TesterPresentPhys + + + +Defines the TesterPresent message for physically addressed requests used to keep a diagnostic session active. + + +CAN.TesterPresentPhys + + + +P3ClientFunc + + + +Minimum time for the client to wait after the successful transmission of a functionally addressed request message (indicated via N_USData.con) before it can transmit the next functionally addressed request message in case no response is required or the requested data is only supported by a subset of the functionally addressed servers. +Minimum value = P2Server. + + +CAN.P3ClientFunc + + + +TesterPresentFunc + + + +Defines the TesterPresent message for functionally addressed requests used to keep a diagnostic session active. + + +CAN.TesterPresentFunc + + + +STmin + + + +(Separation Time) defines the minimum time gap between consecutive frames. Values from 0x00 to 0x7F (0 – 127) are absolute milliseconds. Values from 0xF1 to 0xF9 are even 100 micro seconds. Every other value range is reserved and should not be used. + + +CAN.StMin + + + +Blocksize + + + +The Blocksize parameter indicates, how many consecutive frames shall be sent in a transmission before a flow control frame is sent. The number 0 tells the sender, that no more flow controls should disrupt the sending of the remaining flow controls + + +CAN.Blocksize + + + +Timeout As + + + +Time for transmission of frame, sender side + + +CAN.TimeoutAs + + + +Timeout Ar + + + +Time for transmission of frame, receiver side + + +CAN.TimeoutAr + + + +Timeout Bs + + + +Time until reception of next flow control + + +CAN.TimeoutBs + + + +Time Br + + + +Time for next transmission of flow control + + +CAN.TimeBr + + + +Time Cs + + + +Time until next transmission of consecutive frame + + +CAN.TimeCs + + + +Timeout Cr + + + +Time until reception of next consecutive frame + + +CAN.TimeoutCr + + + +Max Length of TP Message + + +CAN.MaxLengthTpMessage + + + +Baudrate + + + +Bus Speed of the used transport media. Caution, the Bus Speed has to be set identical in all ECUs connected to one subnet. + + +CAN.Baudrate + + + +CANFrameFillerByte + + + +Fill byte used for filling CAN frames to eight byte length. + + +CAN.CANFrameFillerByte + + + +FillerByteHandling + + + +Enables use of fill bytes; if "true", fill bytes are used, otherwise DLC may be smaller than 8. + + +CAN.FillerByteHandling + +false + + + +true + + + + + +CAN Extended Addressing + + +CAN_Extended_Addressing + +not supported + + + +supported + + + + + +Bus Type + + + +Type of transport media + + +CAN_Extended_Addressing.BusType + +CAN + + + + + +Transport Protocol Type + + + +Type of used Transport Protocol (e.g. ISO15765) + + +CAN_Extended_Addressing.TransportProtocolType + +ISO15765 + + + + + +Addressing Scheme + + + +Addressing Scheme used for physical requests and responses. + + +CAN_Extended_Addressing.AddrScheme + +Extended + + + + + +CAN-ID Type + + + +CAN-ID Type used for physical requests and responses + + +CAN_Extended_Addressing.CanIdType + +11-Bit + + + +29-Bit + + + + + +Request CAN-ID + + + +The request CAN identifier for physical requests. The hex value not only describes the identifier but also the priority of the message. The higher the number, the lower the priority. + + +CAN_Extended_Addressing.ReqCanId + + + +Response CAN-ID + + + +The response CAN identifier for physical responses. The response for functional requests is sent via the physical path. + + +CAN_Extended_Addressing.ResCanId + + + +ECU Address + + + +Physical diagnostic address of the ECU. + + +CAN_Extended_Addressing.EcuAddress + + + +Tester Address + + + +Using this Addressing Scheme, the Tester Address can not be determined by the ECU during runtime. Therefore the Tester Address has to be fixed. + + +CAN_Extended_Addressing.TesterAddress + + + +Functional Addressing Scheme + + + +Addressing Scheme used for functional requests. + + +CAN_Extended_Addressing.AddrSchemeFunc + +Normal + + + + + +Functional CAN-ID Type + + + +CAN-ID Type used for functional request + + +CAN_Extended_Addressing.CanIdTypeFunc + +11-Bit + + + +29-Bit + + + + + +Functional Request CAN-ID + + + +The request CAN identifier for functional requests. + + +CAN_Extended_Addressing.ReqCanIdFunc + + + +UUDT Response CAN-ID + + + +UUDT Response CAN-ID used for multiple responses and/or periodic responses. + + +CAN_Extended_Addressing.UudtResCanId + + + +UUDT CAN-ID Type + + + +Received CAN Format for CAN ID without segmentation (Segment Type Bit must = 0) + + +CAN_Extended_Addressing.UudtCanIdType + +11-Bit + + + +29-Bit + + + + + +P2Client + + + +Timeout for the client to wait after the successful transmission of a request message for the start of incoming response messages. In UDS this is the timeout for the default session. + + +CAN_Extended_Addressing.P2Client + + + +P2Server + + + +Performance requirement for the server to start with the response message after the reception of a request message. In UDS this is the timeout for the default session. The tester will also require the P2Server timeout, since in UDS service "DiagnosticSessionControl" returns the P2Server and P2*Server timeouts – the tester has to calculate the offset manually and has to add it to the returned P2Server and P2*Server timeouts. + + +CAN_Extended_Addressing.P2Server + + + +P2*Client + + + +Enhanced timeout for the client to wait after the reception of a negative response message with response code 78 hex for the start of incoming response messages. In UDS this is the timeout for the default session. + + +CAN_Extended_Addressing.P2ExClient + + + +P2*Server + + + +Performance requirement for the server to start with the response message after the transmission of a negative response message with response code 78 hex (enhanced response timing). In UDS this is the timeout for the default session. + + +CAN_Extended_Addressing.P2ExServer + + + +S3Client + + + +Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication). + + +CAN_Extended_Addressing.S3Client + + + +S3Server + + + +Time for the server to keep a diagnostic session other than the defaultSession active while not receiving any diagnostic request message + + +CAN_Extended_Addressing.S3Server + + + +P3ClientPhys + + + +Minimum time for the client to wait after the successful transmission of a physically addressed request message (indicated via N_USData.con) with no response required before it can transmit the next physically addressed request message. +Minimum value = P2Server + + +CAN_Extended_Addressing.P3ClientPhys + + + +TesterPresentPhys + + + +Defines the TesterPresent message for physically addressed requests used to keep a diagnostic session active. + + +CAN_Extended_Addressing.TesterPresentPhys + + + +P3ClientFunc + + + +Minimum time for the client to wait after the successful transmission of a functionally addressed request message (indicated via N_USData.con) before it can transmit the next functionally addressed request message in case no response is required or the requested data is only supported by a subset of the functionally addressed servers. +Minimum value = P2Server. + + +CAN_Extended_Addressing.P3ClientFunc + + + +TesterPresentFunc + + + +Defines the TesterPresent message for functionally addressed requests used to keep a diagnostic session active. + + +CAN_Extended_Addressing.TesterPresentFunc + + + +STmin + + + +(Separation Time) defines the minimum time gap between consecutive frames. Values from 0x00 to 0x7F (0 – 127) are absolute milliseconds. Values from 0xF1 to 0xF9 are even 100 micro seconds. Every other value range is reserved and should not be used. + + +CAN_Extended_Addressing.StMin + + + +Blocksize + + + +The Blocksize parameter indicates, how many consecutive frames shall be sent in a transmission before a flow control frame is sent. The number 0 tells the sender, that no more flow controls should disrupt the sending of the remaining flow controls + + +CAN_Extended_Addressing.Blocksize + + + +Timeout As + + + +Time for transmission of frame, sender side + + +CAN_Extended_Addressing.TimeoutAs + + + +Timeout Ar + + + +Time for transmission of frame, receiver side + + +CAN_Extended_Addressing.TimeoutAr + + + +Timeout Bs + + + +Time until reception of next flow control + + +CAN_Extended_Addressing.TimeoutBs + + + +Time Br + + + +Time for next transmission of flow control + + +CAN_Extended_Addressing.TimeBr + + + +Time Cs + + + +Time until next transmission of consecutive frame + + +CAN_Extended_Addressing.TimeCs + + + +Timeout Cr + + + +Time until reception of next consecutive frame + + +CAN_Extended_Addressing.TimeoutCr + + + +Max Length of TP Message + + +CAN_Extended_Addressing.MaxLengthTpMessage + + + +Baudrate + + + +Bus Speed of the used transport media. Caution, the Bus Speed has to be set identical in all ECUs connected to one subnet. + + +CAN_Extended_Addressing.Baudrate + + + +CANFrameFillerByte + + + +Fill byte used for filling CAN frames to eight byte length. + + +CAN_Extended_Addressing.CANFrameFillerByte + + + +FillerByteHandling + + + +Enables use of fill bytes; if "true", fill bytes are used, otherwise DLC may be smaller than 8. + + +CAN_Extended_Addressing.FillerByteHandling + +false + + + +true + + + + + +FlexRay (ISO10681 TP) + + + +Communication interface for FlexRay protocol. Based on the specification: ISO10681-2 "Road vehicles — Communication on FlexRay — Part 2: Communication Layer services". ISO document date 2009-10-23. + + +FlexRay_ISO + +not supported + + + +supported + + + + + +BusType + + + +Type of transport media. + + +FlexRay_ISO.BusType + +FlexRay + + + + + +P2Client + + + +Timeout for the client to wait after the successful transmission of a request message for the start of incoming response messages. In UDS this is the timeout for the default session. + + +FlexRay_ISO.CP_P2Max + + + +P2Server + + + +Performance requirement for the server to start with the response message after the reception of a request message. In UDS this is the timeout for the default session. The tester will also require the P2Server timeout, since in UDS service "DiagnosticSessionControl" returns the P2Server and P2*Server timeouts – the tester has to calculate the offset manually and has to add it to the returned P2Server and P2*Server timeouts. + + +FlexRay_ISO.CP_P2Max_Ecu + + + +P2ExClient + + + +Enhanced timeout for the client to wait after the reception of a negative response message with response code 78 hex for the start of incoming response messages. In UDS this is the timeout for the default session. + + +FlexRay_ISO.CP_P2Star + + + +P2ExServer + + + +Performance requirement for the server to start with the response message after the transmission of a negative response message with response code 78 hex (enhanced response timing). In UDS this is the timeout for the default session. + + +FlexRay_ISO.CP_P2Star_Ecu + + + +S3Client + + + +Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication). + + +FlexRay_ISO.CP_TesterPresentTime + + + +S3Server + + + +Time for the server to keep a diagnostic session other than the defaultSession active while not receiving any diagnostic request message. + + +FlexRay_ISO.CP_TesterPresentTime_Ecu + + + +P3ClientPhys + + + +Minimum time for the client to wait after the successful transmission of a physically addressed request message with no response required before it can transmit the next physically addressed request message. Minimum value = P2Server. + + +FlexRay_ISO.CP_P3Phys + + + +EcuAddress + + + +Defines the ecu address. Messages addressed to the ecu will contain this address as target address within the message header. + + +FlexRay_ISO.EcuAddress + + + +TesterAddress + + + +Defines the tester address. Messages addressed to the ecu will contain this address as source address within the message header. + + +FlexRay_ISO.TesterAddress + + + +PDUListReqPhys + + + +Describes the physical request channel. Can be single PDU or multiple Slots (comma separated list). + + +FlexRay_ISO.PDUListReqPhys + + + + +PDUListRes + + + +Describes the physical response channel. Can be single PDU or multiple Slots (comma separated list). + + +FlexRay_ISO.PDUListRes + + + + +FillerByteHandling + + + +Enables or disables frame padding (0 = false, 1 = true). + + +FlexRay_ISO.FillerByteHandling + +false + + + +true + + + + + +FrFrameFillerByte + + + +Byte value that is used for frame padding, if padding is enabled. + + +FlexRay_ISO.FrFrameFillerByte + + + +AutoP2Handling + + + +Support ISO14229 DiagnosticSessionControl service's influence on P2 (P2Client and P2ExClient) timings. Depending on the configured value, the timings will be updated or not (0 = Disabled, 1 = Enabled). + + +FlexRay_ISO.AutoP2Handling + +Disabled + + + +Enabled + + + + + +RC21Handling + + + +Repetition mode in case of KWP2000 negative response code 0x21 busy – repeat request (0 = Disabled, 1 = Enabled, 2 = EnabledUnlimited). + + +FlexRay_ISO.RC21Handling + +Disabled + + + +Enabled + + + +EnabledUnlimited + + + + + +RC21RequestTime + + + +Time between negative response with response code 0x21 and the retransmission of the same request. If P3ClientPhys is greater than RC21RequestTime, the time delay prior to the retransmission of the same request will be P3ClientPhys. + + +FlexRay_ISO.RC21RequestTime + + + +RC21CompletionTimeout + + + +Time period the tester accepts repeated negative responses with response code 0x21 and repeats the same request. Timer is started after reception of first negative response. + + +FlexRay_ISO.RC21CompletionTimeout + + + +RC78Handling + + + +Handling of 0x7F XX 0x78 ResponseTimeout and 0x78 repetitions (0 = Disabled, 1 = Enabled, 2 = EnabledUnlimited). + + +FlexRay_ISO.RC78Handling + +Disabled + + + +Enabled + + + +EnabledUnlimited + + + + + +RC78CompletionTimeout + + + +Time period the tester accepts repeated negative responses with response code 0x78 and waits for a positive response further on. + + +FlexRay_ISO.RC78CompletionTimeout + + + +TimeoutAr + + + +Time for transmission of frame, receiver side. + + +FlexRay_ISO.TimeoutAr + + + +TimeoutAs + + + +Time for transmission of frame, sender side. + + +FlexRay_ISO.TimeoutAs + + + +TimeBr + + + +Time for next transmission of flow control. + + +FlexRay_ISO.TimeBr + + + +TimeoutBs + + + +Time until reception of next flow control. + + +FlexRay_ISO.TimeoutBs + + + +TimeoutCr + + + +Time until reception of next consecutive frame. + + +FlexRay_ISO.TimeoutCr + + + +TimeCs + + + +Time until next transmission of consecutive frame. + + +FlexRay_ISO.TimeCs + + + +TransportProtocolType + + + +Describes the used FlexRay Transport Protocol Type (0 = Autosar2x, 1 = Autosar30, 2 = BMW, 3 = ISO10681). + + +FlexRay_ISO.TransportProtocolType + +Autosar2x + + + +Autosar30 + + + +BMW + + + +ISO10681 + + + + + +ConnectionModePhys + + + +Describes the Connection Mode for physical requests (1 = UnAckUnicast, 2 = AckUnicast, 3 = AckRetryUnicast). + + +FlexRay_ISO.ConnectionModePhys + +UnAckUnicast + + + +AckUnicast + + + +AckRetryUnicast + + + + + +BufferSize + + + +The maximum number of data bytes the receiver allows the sender to send via CFs, before waiting for an authorization to continue transmission of the following data bytes via further CFs. + + +FlexRay_ISO.BufferSize + + + +BandwidthControl + + + +By means of the BandwithControl (BC) parameter, the receiver reports its receiving performance level to the sender, i.e. the maximum bandwidth it can receive. The BC parameter is a one byte value. + + +FlexRay_ISO.BandwidthControl + + + +FlexRay (Autosar2x TP) + + + +Communication interface for FlexRay protocol. Based on the Autosar2x specific transport protocol. + + +FlexRay_Autosar2x + +not supported + + + +supported + + + + + +BusType + + + +Type of transport media. + + +FlexRay_Autosar2x.BusType + +FlexRay + + + + + +P2Client + + + +Timeout for the client to wait after the successful transmission of a request message for the start of incoming response messages. In UDS this is the timeout for the default session. + + +FlexRay_Autosar2x.CP_P2Max + + + +P2Server + + + +Performance requirement for the server to start with the response message after the reception of a request message. In UDS this is the timeout for the default session. The tester will also require the P2Server timeout, since in UDS service "DiagnosticSessionControl" returns the P2Server and P2*Server timeouts – the tester has to calculate the offset manually and has to add it to the returned P2Server and P2*Server timeouts. + + +FlexRay_Autosar2x.CP_P2Max_Ecu + + + +P2ExClient + + + +Enhanced timeout for the client to wait after the reception of a negative response message with response code 78 hex for the start of incoming response messages. In UDS this is the timeout for the default session. + + +FlexRay_Autosar2x.CP_P2Star + + + +P2ExServer + + + +Performance requirement for the server to start with the response message after the transmission of a negative response message with response code 78 hex (enhanced response timing). In UDS this is the timeout for the default session. + + +FlexRay_Autosar2x.CP_P2Star_Ecu + + + +S3Client + + + +Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication). + + +FlexRay_Autosar2x.CP_TesterPresentTime + + + +S3Server + + + +Time for the server to keep a diagnostic session other than the defaultSession active while not receiving any diagnostic request message. + + +FlexRay_Autosar2x.CP_TesterPresentTime_Ecu + + + +P3ClientPhys + + + +Minimum time for the client to wait after the successful transmission of a physically addressed request message with no response required before it can transmit the next physically addressed request message. Minimum value = P2Server. + + +FlexRay_Autosar2x.CP_P3Phys + + + +EcuAddress + + + +Defines the ecu address. Messages addressed to the ecu will contain this address as target address within the message header. + + +FlexRay_Autosar2x.EcuAddress + + + +TesterAddress + + + +Defines the tester address. Messages addressed to the ecu will contain this address as source address within the message header. + + +FlexRay_Autosar2x.TesterAddress + + + +PDUListReqPhys + + + +Describes the physical request channel. Can be single PDU or multiple Slots (comma separated list). + + +FlexRay_Autosar2x.PDUListReqPhys + + + + +PDUListRes + + + +Describes the physical response channel. Can be single PDU or multiple Slots (comma separated list). + + +FlexRay_Autosar2x.PDUListRes + + + + +FillerByteHandling + + + +Enables or disables frame padding (0 = false, 1 = true). + + +FlexRay_Autosar2x.FillerByteHandling + +false + + + +true + + + + + +FrFrameFillerByte + + + +Byte value that is used for frame padding, if padding is enabled. + + +FlexRay_Autosar2x.FrFrameFillerByte + + + +AutoP2Handling + + + +Support ISO14229 DiagnosticSessionControl service's influence on P2 (P2Client and P2ExClient) timings. Depending on the configured value, the timings will be updated or not (0 = Disabled, 1 = Enabled). + + +FlexRay_Autosar2x.AutoP2Handling + +Disabled + + + +Enabled + + + + + +RC21Handling + + + +Repetition mode in case of KWP2000 negative response code 0x21 busy – repeat request (0 = Disabled, 1 = Enabled, 2 = EnabledUnlimited). + + +FlexRay_Autosar2x.RC21Handling + +Disabled + + + +Enabled + + + +EnabledUnlimited + + + + + +RC21RequestTime + + + +Time between negative response with response code 0x21 and the retransmission of the same request. If P3ClientPhys is greater than RC21RequestTime, the time delay prior to the retransmission of the same request will be P3ClientPhys. + + +FlexRay_Autosar2x.RC21RequestTime + + + +RC21CompletionTimeout + + + +Time period the tester accepts repeated negative responses with response code 0x21 and repeats the same request. Timer is started after reception of first negative response. + + +FlexRay_Autosar2x.RC21CompletionTimeout + + + +RC78Handling + + + +Handling of 0x7F XX 0x78 ResponseTimeout and 0x78 repetitions (0 = Disabled, 1 = Enabled, 2 = EnabledUnlimited). + + +FlexRay_Autosar2x.RC78Handling + +Disabled + + + +Enabled + + + +EnabledUnlimited + + + + + +RC78CompletionTimeout + + + +Time period the tester accepts repeated negative responses with response code 0x78 and waits for a positive response further on. + + +FlexRay_Autosar2x.RC78CompletionTimeout + + + +TimeoutAr + + + +Time for transmission of frame, receiver side. + + +FlexRay_Autosar2x.TimeoutAr + + + +TimeoutAs + + + +Time for transmission of frame, sender side. + + +FlexRay_Autosar2x.TimeoutAs + + + +TimeBr + + + +Time for next transmission of flow control. + + +FlexRay_Autosar2x.TimeBr + + + +TimeoutBs + + + +Time until reception of next flow control. + + +FlexRay_Autosar2x.TimeoutBs + + + +TimeoutCr + + + +Time until reception of next consecutive frame. + + +FlexRay_Autosar2x.TimeoutCr + + + +TimeCs + + + +Time until next transmission of consecutive frame. + + +FlexRay_Autosar2x.TimeCs + + + +TransportProtocolType + + + +Describes the used FlexRay Transport Protocol Type (0 = Autosar2x, 1 = Autosar30, 2 = BMW, 3 = ISO10681). + + +FlexRay_Autosar2x.TransportProtocolType + +Autosar2x + + + +Autosar30 + + + +BMW + + + +ISO10681 + + + + + +ConnectionModePhys + + + +Describes the Connection Mode for physical requests (1 = UnAckUnicast, 2 = AckUnicast, 3 = AckRetryUnicast). + + +FlexRay_Autosar2x.ConnectionModePhys + +UnAckUnicast + + + +AckUnicast + + + +AckRetryUnicast + + + + + +MessageLength + + + +Message Length of physically addressed request (= message length mode (Autosar FlexRay TP 2.1, 10.2.3): ISO = 1 (up to 4095 bytes, do not use extended frame types), ISO6 = 2 (as ISO, but payload length is limited to 6 bytes), L16M = 3 (up to 2^24-1 bytes, E4 frames not allowed), L4G = 4 (up to 2^32-1 bytes, all frames allowed). + + +FlexRay_Autosar2x.MessageLengthPhys + +ISO + + + +ISO6 + + + +L16M + + + +L4G + + + + + +BlockSize + + + +The Block Size parameter indicates, how many consecutive frames shall be sent in a transmission before a flow control frame is sent. The number 0 tells the sender, that no more flow controls should disrupt the sending of the remaining flow controls. + + +FlexRay_Autosar2x.BlockSize + + + +SeparationTime + + + +Separation Time defines the minimum time gap between consecutive frames. Values from 0x00 to 0x7F (0 – 127) are absolute milliseconds. Values from 0xF1 to 0xF9 are even 100 micro seconds. Every other value range is reserved and should not be used. + + +FlexRay_Autosar2x.StMin + + + +AddressTypePhys + + + +Describes the number of address bytes used within the header of physically addressed messages (1 = 1 byte addresses, 2 = 2 byte addresses). + + +FlexRay_Autosar2x.AddressTypePhys + +1 + + + +2 + + + + + +RC21Handling + + + +Repetition mode in case of negative response code 0x21 (busy – repeat request) + + +CAN.RC21Handling + +Disabled + + + +Enabled + + + +EnabledUnlimited + + + + + +RC21RequestTime + + + +Time between negative response with response code 0x21 and the retransmission of the same request. If P3ClientPhys is greater than RC21RequestTime, the time delay prior to the retransmission of the same request will be P3ClientPhys. + + +CAN.RC21RequestTime + + + +RC21CompletionTimeout + + + +Time period the tester accepts repeated negative responses with response code 0x21 and repeats the same request. Timer is started after reception of first negative response. + + +CAN.RC21CompletionTimeout + + + +RC78Handling + + + +Handling of 0x7F XX 0x78 ResponseTimeout and 0x78 Repetitions + + +CAN.RC78Handling + +Disabled + + + +Enabled + + + +EnabledUnlimited + + + + + +RC78CompletionTimeout + + + +Time period the tester accepts repeated negative responses with response code 0x78 and waits for a positive response further on + + +CAN.RC78CompletionTimeout + + + +Periodic Rate (Slow) in ms + + + +Only exported if Service $2A with transmissionMode $01 (sendAtSlowRate) is supported. + + +Periodic_Rate_Slow_in_ms + + + +Periodic Rate (Medium) in ms + + + +Only exported if Service $2A with transmissionMode $02 (sendAtMediumRate) is supported. + + +Periodic_Rate_Medium_in_ms + + + +Periodic Rate (Fast) in ms + + + +Only exported if Service $2A with transmissionMode $03 (sendAtFastRate) is supported. + + +Periodic_Rate_Fast_in_ms + + + +FUNCTIONAL-GROUP.SHORT-NAME + + +FUNCTIONAL_GROUP_SHORT_NAME + + + + +FUNCTIONAL-GROUP.LONG-NAME + + +FUNCTIONAL_GROUP_LONG_NAME + + + + + + + +PROTOCOL.SHORT-NAME + + +PROTOCOL_SHORT_NAME + + + + +PROTOCOL.LONG-NAME + + +PROTOCOL_LONG_NAME + + + + + + + +BASE-VARIANT.PARENT-REF.DOCTYPE + + +BASE_VARIANT_PARENT_REF_DOCTYPE + + + + +BASE-VARIANT.PARENT-REF.DOCREF + + +BASE_VARIANT_PARENT_REF_DOCREF + + + + +BASE-VARIANT.PARENT-REF.ID-REF + + +BASE_VARIANT_PARENT_REF_ID_REF + + + + +FUNCTIONAL-GROUP.PARENT-REF.DOCTYPE + + +FUNCTIONAL_GROUP_PARENT_REF_DOCTYPE + + + + +FUNCTIONAL-GROUP.PARENT-REF.DOCREF + + +FUNCTIONAL_GROUP_PARENT_REF_DOCREF + + + + +FUNCTIONAL-GROUP.PARENT-REF.ID-REF + + +FUNCTIONAL_GROUP_PARENT_REF_ID_REF + + + + +ODX Mode Enabled + + +ODX_Mode_Enabled + +no + + + +yes + + + + + +Units + + +Units + +m + + + +kg + + + +s + + + +A + + + +K + + + +mol + + + +cd + + + + + +Default length of memory size (in Bytes) + + +DefaultLengthOfMemorySize + + + +Default length of memory address (in Bytes) + + +DefaultLengthOfMemoryAddress + + + +DoIP (ISO13400) + + + +Communication interface for Diagnostics over IP (DoIP) protocol. Based on the specification: ISO13400-2:2012 "Road vehicles — Diagnostic communication over Internet Protocol(DoIP) — Part 2: Network and transport layer requirements and services" and the referenced ISO22900-2 (D-PDU API) for ComParam qualifiers. + + +DoIP_ISO13400 + +not supported + + + +supported + + + + + +Bus Type + + + +Type of transport media + + +DoIP_ISO13400.BusType + +Ethernet + + + + + +LogicalGatewayAddress + + + +The logical address of the DoIP gateway. When addressing nodes behind a DoIP gateway, this address has to be used to reach the target addressed in CP_DoIPLogicalEcuAddress or CP_DoIPLogicalFunctionalAddress. For a DoIP node, the values for CP_DoIPLogicalGatewayAddress and CP_DoIPLogicalEcuAddress are identical. + + +DoIP_ISO13400.CP_DoIPLogicalGatewayAddress + + + +LogicalEcuAddress + + + +The target address of the ECU to communicate with. This is the logical address as defined by the OEM. + + +DoIP_ISO13400.CP_DoIPLogicalEcuAddress + + + +LogicalTesterAddress + + + +The source address of the test equipment. This is the logical address as defined by the OEM. + + +DoIP_ISO13400.CP_DoIPLogicalTesterAddress + + + +LogicalFunctionalAddress + + + +Logical address for functional addressed communication. + + +DoIP_ISO13400.CP_DoIPLogicalFunctionalAddress + + + +P6Client + + + +Timeout for the client to wait after the successful transmission of a request message indicated via T_Data.con) for the complete reception of the corresponding response message (indicated via T_Data.ind). If the transport/network layer doesn't support the T_DataSOM.ind interface (e.g. ISO13400 DoIP), this ComParam shall be used instead of P2Client. + + +DoIP_ISO13400.CP_P6Max + + + +P2Server + + + +Performance requirement for the server to start with the response message after the reception of a request message. In UDS this is the timeout for the default session. The tester will also require the P2Server timeout, since in UDS service "DiagnosticSessionControl" returns the P2Server and P2ExServer timeouts – the tester has to calculate the offset manually and has to add it to the returned P2Server and P2ExServer timeouts. + + +DoIP_ISO13400.CP_P2Max_Ecu + + + +P6ExClient + + + +Enhanced timeout for the client to wait after the reception of a negative response message with negative response code 0x78 (indicated via T_Data.ind) for the complete reception of the corresponding response messages (indicated via T_Data.ind). If the transport/network layer doesn't support the T_DataSOM.ind interface (e.g. ISO13400 DoIP), this ComParam shall be used instead of P2ExClient. + + +DoIP_ISO13400.CP_P6Star + + + +P2ExServer + + + +Performance requirement for the server to start with the response message after the transmission of a negative response message with response code 78 hex (enhanced response timing). In UDS this is the timeout for the default session. + + +DoIP_ISO13400.CP_P2Star_Ecu + + + +S3Client + + + +Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication). + + +DoIP_ISO13400.CP_TesterPresentTime + + + +S3Server + + + +Time for the server to keep a diagnostic session other than the defaultSession active while not receiving any diagnostic request message. + + +DoIP_ISO13400.CP_TesterPresentTime_Ecu + + + +P3ClientPhys + + + +Minimum time for the client to wait after the successful transmission of a physically addressed request message (indicated via N_USData.con) with no response required before it can transmit the next physically addressed request message. Minimum value = P2Server. + + +DoIP_ISO13400.CP_P3Phys + + + +P3ClientFunc + + + +Minimum time for the client to wait after the successful transmission of a functionally addressed request message (indicated via N_USData.con) before it can transmit the next functionally addressed request message in case no response is required or the requested data is only supported by a subset of the functionally addressed servers. Minimum value = P2Server. + + +DoIP_ISO13400.CP_P3Func + + + +TransmissionTime + + + +If the timeout values are used which have been received by the ECU via session control response(0x50), the Network transmission time has to be added to the timeout values. P6 = received P2 + NetworkTransmissionTime(contains delay for both transmission directions). + + +DoIP_ISO13400.CP_NetworkTransmissionTime + + + +RC78Handling + + + +Handling of 0x7F XX 0x78 ResponseTimeout and 0x78 Repetitions. The receive timeout value will be CP_P6Star. This timer will be reset on each consecutive reception of the 0x7F 0x78 response. + + +DoIP_ISO13400.CP_RC78Handling + +Disabled + + + +Continue until RC78 timeout + + + +Continue unlimited + + + + + +RC78CompletionTimeout + + + +Time period the tester accepts repeated negative responses with response code 0x78 and waits for a positive response further on. + + +DoIP_ISO13400.CP_RC78CompletionTimeout + + + +RC21Handling + + + +Repetition mode in case of response code 0x7F XX 0x21. + + +DoIP_ISO13400.CP_RC21Handling + +Disabled + + + +Continue until RC21 timeout + + + +Continue unlimited + + + + + +RC21RequestTime + + + +Time between negative response with response code 0x21 and the retransmission of the same request. + + +DoIP_ISO13400.CP_RC21RequestTime + + + +RC21CompletionTimeout + + + +Time period the tester accepts repeated negative responses with response code 0x21 and repeats the same request. Timer is started after reception of first negative response. + + +DoIP_ISO13400.CP_RC21CompletionTimeout + + + +DDDID check per source ID + + + +Perform checks for session, security and mode dependencies per source DID (in DID range 0xF200 to 0xF3FF), while reading DDDIDs via UDS service 0x22 or 0x2A. + + +DDDID_check_per_source_ID + +false + + + +true + + + + + +DDDID configuration storage + + + +Defines whether DDDID definition is handled as non-volatile information or not. + + +DDDID_configuration_storage + +volatile + + + +non volatile + + + + + +DiagnosticConnectionRef + + + +This attribute specifies the reference to the used TP Connection contained in the ECU Extract of the ECU. + + +CAN.DiagnosticConnectionRef + + + + +DiagnosticProtocolPriority + + + +This attribute specifies the priority of the diagnostic tester. + + +CAN.DiagnosticProtocolPriority + + + +DiagnosticConnectionRef + + + +This attribute specifies the reference to the used TP Connection contained in the ECU Extract of the ECU. + + +FlexRay_ISO.DiagnosticConnectionRef + + + + +DiagnosticProtocolPriority + + + +This attribute specifies the priority of the diagnostic tester. + + +FlexRay_ISO.DiagnosticProtocolPriority + + + +DiagnosticConnectionRef + + + +This attribute specifies the reference to the used TP Connection contained in the ECU Extract of the ECU. + + +FlexRay_Autosar2x.DiagnosticConnectionRef + + + + +DiagnosticProtocolPriority + + + +This attribute specifies the priority of the diagnostic tester. + + +FlexRay_Autosar2x.DiagnosticProtocolPriority + + + +DiagnosticConnectionRef + + + +This attribute specifies the reference to the used TP Connection contained in the ECU Extract of the ECU. + + +DoIP_ISO13400.DiagnosticConnectionRef + + + + +DiagnosticProtocolPriority + + + +This attribute specifies the priority of the diagnostic tester. + + +DoIP_ISO13400.DiagnosticProtocolPriority + + + +CAN FD + + +CAN_FD + +not supported + + + +supported + + + + + +Bus Type + + + +Type of transport media + + +CAN_FD.BusType + +CAN + + + + + +Transport Protocol Type + + + +Type of used Transport Protocol (e.g. ISO15765) + + +CAN_FD.TransportProtocolType + +ISO15765 + + + + + +Addressing Scheme + + + +Addressing Scheme used for physical requests and responses. + + +CAN_FD.AddrScheme + +Normal + + + + + +CAN-ID Type + + + +CAN-ID Type used for physical requests and responses + + +CAN_FD.CanIdType + +11-Bit + + + +29-Bit + + + + + +Request CAN-ID + + + +The request CAN identifier for physical requests. The hex value not only describes the identifier but also the priority of the message. The higher the number, the lower the priority. + + +CAN_FD.ReqCanId + + + +Response CAN-ID + + + +The response CAN identifier for physical responses. The response for functional requests is sent via the physical path. + + +CAN_FD.ResCanId + + + +P2Client + + + +Timeout for the client to wait after the successful transmission of a request message for the start of incoming response messages. In UDS this is the timeout for the default session. + + +CAN_FD.P2Client + + + +P2Server + + + +Performance requirement for the server to start with the response message after the reception of a request message. In UDS this is the timeout for the default session. The tester will also require the P2Server timeout, since in UDS service "DiagnosticSessionControl" returns the P2Server and P2*Server timeouts – the tester has to calculate the offset manually and has to add it to the returned P2Server and P2*Server timeouts. + + +CAN_FD.P2Server + + + +P2*Client + + + +Enhanced timeout for the client to wait after the reception of a negative response message with response code 78 hex for the start of incoming response messages. In UDS this is the timeout for the default session. + + +CAN_FD.P2ExClient + + + +P2*Server + + + +Performance requirement for the server to start with the response message after the transmission of a negative response message with response code 78 hex (enhanced response timing). In UDS this is the timeout for the default session. + + +CAN_FD.P2ExServer + + + +S3Client + + + +Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication). + + +CAN_FD.S3Client + + + +S3Server + + + +Time for the server to keep a diagnostic session other than the defaultSession active while not receiving any diagnostic request message + + +CAN_FD.S3Server + + + +P3ClientPhys + + + +Minimum time for the client to wait after the successful transmission of a physically addressed request message (indicated via N_USData.con) with no response required before it can transmit the next physically addressed request message. +Minimum value = P2Server + + +CAN_FD.P3ClientPhys + + + +TesterPresentPhys + + + +Defines the TesterPresent message for physically addressed requests used to keep a diagnostic session active. + + +CAN_FD.TesterPresentPhys + + + +STmin + + + +(Separation Time) defines the minimum time gap between consecutive frames. Values from 0x00 to 0x7F (0 – 127) are absolute milliseconds.Values from 0xF1 to 0xF9 are even 100 micro seconds. Every other value range is reserved and should not be used. + + +CAN_FD.StMin + + + +Blocksize + + + +The Blocksize parameter indicates, how many consecutive frames shall be sent in a transmission before a flow control frame is sent. The number 0 tells the sender, that no more flow controls should disrupt the sending of the remaining flow controls + + +CAN_FD.Blocksize + + + +Timeout As + + + +Time for transmission of frame, sender side + + +CAN_FD.TimeoutAs + + + +Timeout Ar + + + +Time for transmission of frame, receiver side + + +CAN_FD.TimeoutAr + + + +Timeout Bs + + + +Time until reception of next flow control + + +CAN_FD.TimeoutBs + + + +Time Br + + + +Time for next transmission of flow control + + +CAN_FD.TimeBr + + + +Time Cs + + + +Time until next transmission of consecutive frame + + +CAN_FD.TimeCs + + + +Timeout Cr + + + +Time until reception of next consecutive frame + + +CAN_FD.TimeoutCr + + + +Max Length of TP Message + + +CAN_FD.MaxLengthTpMessage + + + +Baudrate + + + +Bus Speed of the used transport media. Caution, the Bus Speed has to be set identical in all ECUs connected to one subnet. + + +CAN_FD.Baudrate + + + +CANFrameFillerByte + + + +Fill byte used for filling CAN frames to eight byte length. + + +CAN_FD.CANFrameFillerByte + + + +FillerByteHandling + + + +Enables use of fill bytes; if "true", fill bytes are used, otherwise DLC may be smaller than 8. + + +CAN_FD.FillerByteHandling + +false + + + +true + + + + + +Functional Addressing Scheme + + + +Addressing Scheme used for functional requests. + + +CAN_FD.AddrSchemeFunc + +Normal + + + + + +Functional CAN-ID Type + + + +CAN-ID Type used for functional request + + +CAN_FD.CanIdTypeFunc + +11-Bit + + + +29-Bit + + + + + +Functional Request CAN-ID + + + +The request CAN identifier for functional requests. + + +CAN_FD.ReqCanIdFunc + + + +CanFdDataBaudrate + + +CAN_FD.CanFdDataBaudrate + + + +CanFdDataTSeg1 + + +CAN_FD.CanFdDataTSeg1 + + + +CanFdDataTSeg2 + + +CAN_FD.CanFdDataTSeg2 + + + +CanFdDataSjw + + +CAN_FD.CanFdDataSjw + + + +TSeg1 + + +CAN_FD.TSeg1 + + + +TSeg2 + + +CAN_FD.TSeg2 + + + +Sjw + + +CAN_FD.Sjw + + + +CanFdHandling + + +CAN_FD.CanFdHandling + +Disabled + + + +Enabled + + + + + +CanFdBrsHandling + + +CAN_FD.CanFdBrsHandling + +Disabled + + + +Enabled + + + + + +CanFdMaxDlc + + +CAN_FD.CanFdMaxDlc + +CAN20 + + + +CANFD8 + + + +CANFD12 + + + +CANFD16 + + + +CANFD20 + + + +CANFD24 + + + +CANFD32 + + + +CANFD48 + + + +CANFD64 + + + + + +AutoP2Handling + + +CAN_FD.AutoP2Handling + +Disabled + + + +Enabled + + + + + +CAN FD Extended Addressing + + +CAN_FD_Extended_Addressing + +not supported + + + +supported + + + + + +Bus Type + + + +Type of transport media + + +CAN_FD_Extended_Addressing.BusType + +CAN + + + + + +Transport Protocol Type + + + +Type of used Transport Protocol (e.g. ISO15765) + + +CAN_FD_Extended_Addressing.TransportProtocolType + +ISO15765 + + + + + +Addressing Scheme + + + +Addressing Scheme used for physical requests and responses. + + +CAN_FD_Extended_Addressing.AddrScheme + +Extended + + + + + +CAN-ID Type + + + +CAN-ID Type used for physical requests and responses + + +CAN_FD_Extended_Addressing.CanIdType + +11-Bit + + + +29-Bit + + + + + +Request CAN-ID + + + +The request CAN identifier for physical requests. The hex value not only describes the identifier but also the priority of the message. The higher the number, the lower the priority. + + +CAN_FD_Extended_Addressing.ReqCanId + + + +Response CAN-ID + + + +The response CAN identifier for physical responses. The response for functional requests is sent via the physical path. + + +CAN_FD_Extended_Addressing.ResCanId + + + +ECU Address + + + +Physical diagnostic address of the ECU. + + +CAN_FD_Extended_Addressing.EcuAddress + + + +Tester Address + + + +Using this Addressing Scheme, the Tester Address can not be determined by the ECU during runtime. Therefore the Tester Address has to be fixed. + + +CAN_FD_Extended_Addressing.TesterAddress + + + +Functional Addressing Scheme + + + +Addressing Scheme used for functional requests. + + +CAN_FD_Extended_Addressing.AddrSchemeFunc + +Extended + + + + + +Functional CAN-ID Type + + + +CAN-ID Type used for functional request + + +CAN_FD_Extended_Addressing.CanIdTypeFunc + +11-Bit + + + +29-Bit + + + + + +Functional Request CAN-ID + + + +The request CAN identifier for functional requests. + + +CAN_FD_Extended_Addressing.ReqCanIdFunc + + + +Broadcast Address + + + +Address of the functional group the ECU belongs to. + + +CAN_FD_Extended_Addressing.BroadcastAddress + + + +P2Client + + + +Timeout for the client to wait after the successful transmission of a request message for the start of incoming response messages. In UDS this is the timeout for the default session. + + +CAN_FD_Extended_Addressing.P2Client + + + +P2Server + + + +Performance requirement for the server to start with the response message after the reception of a request message. In UDS this is the timeout for the default session. The tester will also require the P2Server timeout, since in UDS service "DiagnosticSessionControl" returns the P2Server and P2*Server timeouts – the tester has to calculate the offset manually and has to add it to the returned P2Server and P2*Server timeouts. + + +CAN_FD_Extended_Addressing.P2Server + + + +P2*Client + + + +Enhanced timeout for the client to wait after the reception of a negative response message with response code 78 hex for the start of incoming response messages. In UDS this is the timeout for the default session. + + +CAN_FD_Extended_Addressing.P2ExClient + + + +P2*Server + + + +Performance requirement for the server to start with the response message after the transmission of a negative response message with response code 78 hex (enhanced response timing). In UDS this is the timeout for the default session. + + +CAN_FD_Extended_Addressing.P2ExServer + + + +S3Client + + + +Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication). + + +CAN_FD_Extended_Addressing.S3Client + + + +S3Server + + + +Time for the server to keep a diagnostic session other than the defaultSession active while not receiving any diagnostic request message + + +CAN_FD_Extended_Addressing.S3Server + + + +P3ClientPhys + + + +Minimum time for the client to wait after the successful transmission of a physically addressed request message (indicated via N_USData.con) with no response required before it can transmit the next physically addressed request message. +Minimum value = P2Server + + +CAN_FD_Extended_Addressing.P3ClientPhys + + + +TesterPresentPhys + + + +Defines the TesterPresent message for physically addressed requests used to keep a diagnostic session active. + + +CAN_FD_Extended_Addressing.TesterPresentPhys + + + +P3ClientFunc + + + +Minimum time for the client to wait after the successful transmission of a functionally addressed request message (indicated via N_USData.con) before it can transmit the next functionally addressed request message in case no response is required or the requested data is only supported by a subset of the functionally addressed servers. +Minimum value = P2Server. + + +CAN_FD_Extended_Addressing.P3ClientFunc + + + +TesterPresentFunc + + + +Defines the TesterPresent message for functionally addressed requests used to keep a diagnostic session active. + + +CAN_FD_Extended_Addressing.TesterPresentFunc + + + +STmin + + + +(Separation Time) defines the minimum time gap between consecutive frames. Values from 0x00 to 0x7F (0 – 127) are absolute milliseconds. Values from 0xF1 to 0xF9 are even 100 micro seconds. Every other value range is reserved and should not be used. + + +CAN_FD_Extended_Addressing.StMin + + + +Blocksize + + + +The Blocksize parameter indicates, how many consecutive frames shall be sent in a transmission before a flow control frame is sent. The number 0 tells the sender, that no more flow controls should disrupt the sending of the remaining flow controls + + +CAN_FD_Extended_Addressing.Blocksize + + + +Timeout As + + + +Time for transmission of frame, sender side + + +CAN_FD_Extended_Addressing.TimeoutAs + + + +Timeout Ar + + + +Time for transmission of frame, receiver side + + +CAN_FD_Extended_Addressing.TimeoutAr + + + +Timeout Bs + + + +Time until reception of next flow control + + +CAN_FD_Extended_Addressing.TimeoutBs + + + +Time Br + + + +Time for next transmission of flow control + + +CAN_FD_Extended_Addressing.TimeBr + + + +Time Cs + + + +Time until next transmission of consecutive frame + + +CAN_FD_Extended_Addressing.TimeCs + + + +Timeout Cr + + + +Time until reception of next consecutive frame + + +CAN_FD_Extended_Addressing.TimeoutCr + + + +Max Length of TP Message + + +CAN_FD_Extended_Addressing.MaxLengthTpMessage + + + +Baudrate + + + +Bus Speed of the used transport media. Caution, the Bus Speed has to be set identical in all ECUs connected to one subnet. + + +CAN_FD_Extended_Addressing.Baudrate + + + +CANFrameFillerByte + + + +Fill byte used for filling CAN frames to eight byte length. + + +CAN_FD_Extended_Addressing.CANFrameFillerByte + + + +FillerByteHandling + + + +Enables use of fill bytes; if "true", fill bytes are used, otherwise DLC may be smaller than 8. + + +CAN_FD_Extended_Addressing.FillerByteHandling + +false + + + +true + + + + + +CanFdDataBaudrate + + +CAN_FD_Extended_Addressing.CanFdDataBaudrate + + + +CanFdDataTSeg1 + + +CAN_FD_Extended_Addressing.CanFdDataTSeg1 + + + +CanFdDataTSeg2 + + +CAN_FD_Extended_Addressing.CanFdDataTSeg2 + + + +CanFdDataSjw + + +CAN_FD_Extended_Addressing.CanFdDataSjw + + + +TSeg1 + + +CAN_FD_Extended_Addressing.TSeg1 + + + +TSeg2 + + +CAN_FD_Extended_Addressing.TSeg2 + + + +Sjw + + +CAN_FD_Extended_Addressing.Sjw + + + +CanFdHandling + + +CAN_FD_Extended_Addressing.CanFdHandling + +Disabled + + + +Enabled + + + + + +CanFdBrsHandling + + +CAN_FD_Extended_Addressing.CanFdBrsHandling + +Disabled + + + +Enabled + + + + + +CanFdMaxDlc + + +CAN_FD_Extended_Addressing.CanFdMaxDlc + +CAN20 + + + +CANFD8 + + + +CANFD12 + + + +CANFD16 + + + +CANFD20 + + + +CANFD24 + + + +CANFD32 + + + +CANFD48 + + + +CANFD64 + + + + + +AutoP2Handling + + +CAN_FD_Extended_Addressing.AutoP2Handling + +Disabled + + + +Enabled + + + + + +SynchronizationAttribute + + +SynchronizationAttribute + + + + +DiagnosticConnectionRef + + + +The used TP Connection contained in the ECU Extract. + + +CAN_Extended_Addressing.DiagnosticConnectionRef + + + + +DiagnosticProtocolPriority + + + +The priority of the diagnostic tester. + + +CAN_Extended_Addressing.DiagnosticProtocolPriority + + + +DiagnosticConnectionRef + + + +The used TP Connection contained in the ECU Extract. + + +CAN_FD.DiagnosticConnectionRef + + + + +DiagnosticProtocolPriority + + + +The priority of the diagnostic tester. + + +CAN_FD.DiagnosticProtocolPriority + + + +DiagnosticConnectionRef + + + +The used TP Connection contained in the ECU Extract. + + +CAN_FD_Extended_Addressing.DiagnosticConnectionRef + + + + +DiagnosticProtocolPriority + + + +The priority of the diagnostic tester. + + +CAN_FD_Extended_Addressing.DiagnosticProtocolPriority + + + + + +Maturity + + +Maturity + +in progress + + + +completed + + + +verified + + + +released + + + + + +Skip deactivation of Job during ODX-Import + + +SkipDeactivationOfJobDuringODXImport + +no + + + +yes + + + + + + + +Maturity + + +Maturity + +in progress + + + +completed + + + +verified + + + +released + + + + + + + +Status + + +Status + +in progress + + + +completed + + + +verified + + + +released + + + + + +DOCTYPE + + +DOCTYPE + +CONTAINER + + + +PROTOCOL + + + +LAYER + + + + + +DOCREF + + +DOCREF + + + + +ID-REF + + +ID_REF + + + + +Source Error Code + + +Source_Error_Code + + + +Source Error Text + + +Source_Error_Text + + + + +ASR SWC DataElement Ref + + +ASR_SWC_DataElement_Ref + + + + +ASR SWC ServiceDependency Ref + + + +Path to the system description service dependency that is related to the CANdela DTC. It is set by SWC Sync and evaluated by DEXT export. + + +ASR_SWC_ServiceDependency_Ref + + + + +SYNCHELEMENT + + +SYNCHELEMENT + + + + + + +MainHandlerSupport (on Service Level) + + + +Provide MainHandler for current service (Service/Subfunction combination). Restriction: Only evaluated if attribute 'MainHandlerSupport (on Protocol Service Level)' of diagnostic class is not set, i.e. equals to 'none'. + + +MainHandlerSupport + +user + + + +oem + + + +generated + + + + + +PreHandlerSupport + + + +Provide type of Service PreServiceHandler for current service (Service/Subfunction combination). The Service PreHandler is executed directly before the main handler. Restriction: Only evaluated if attribute 'MainHandlerSupport (on Protocol Service Level)' of diagnostic class is not set, i.e. equals to 'none'. + + +PreHandlerSupport + +none + + + +oem + + + +user + + + + + +PreHandlerOverrideName + + + +Provide alternative name for Service PreHandler instead of generated one (default prefix + PreHandlerOverrideName). You can reuse one Service PreHandler for different services, if you specify the same override name. Restriction: Only evaluated if attribute 'MainHandlerSupport (on Protocol Service Level)' is not set, i.e. equals to 'none'. + + +PreHandlerOverrideName + + + + + + + +PostHandlerSupport + + + +Provide type of Service PostServiceHandler for current service (Service/Subfunction combination). The Service PostHandler is executed after a positive confirmation of the positive response. Restriction: Only evaluated if attribute 'MainHandlerSupport (on Protocol Service Level)' is not set, i.e. equals to 'none'. + + +PostHandlerSupport + +none + + + +oem + + + +user + + + + + +PostHandlerOverrideName + + + +Provide alternative name for Service PostHandler instead of generated one (default prefix + PostHandlerOverrideName). You can reuse one Service PostHandler for different Services, if you specify the same Override Name. Restriction: Only evaluated if attribute 'MainHandlerSupport (on Protocol Service Level)' of diagnostic class is not set, i.e. equals to 'none'. + + +PostHandlerOverrideName + + + + + + + +Example of a service attribute + + +ExampleOfAServiceAttr + + + +Maturity + + +Maturity + +in progress + + + +completed + + + +verified + + + +released + + + + + +DIAG-LAYER + + +DIAG_LAYER + +not specified + + + +PROTOCOL + + + +FUNCTIONAL-GROUP + + + + + +Description + + +Description + + + + + + + + + +Maturity + + +Maturity + +in progress + + + +completed + + + +verified + + + +released + + + + + + + +Semantic + + +Semantic + + + + + + +Export as TABLE + + +Export_as_TABLE + +no + + + +yes (Dynamic TABLE) + + + +yes (Static TABLE) + + + +yes (Static TABLE with dynamic POS-RESPONSE) + + + + + +TABLE.SHORT-NAME + + +TABLE_SHORT_NAME + + + + +TABLE.SEMANTIC + + +TABLE_SEMANTIC + + + + +TABLE.LONG-NAME + + +TABLE_LONG_NAME + + + + + + + + + +TABLE.SHORT-NAME + + +TABLE_SHORT_NAME + + + + +TABLE.SEMANTIC + + +TABLE_SEMANTIC + + + + +TABLE.LONG-NAME + + +TABLE_LONG_NAME + + + + + + + +UsePrimitiveInTableName + + +UsePrimitiveInTableName + +no + + + +yes + + + + + + + +TABLE.SHORT-NAME + + +TABLE_SHORT_NAME + + + + +TABLE.SEMANTIC + + +TABLE_SEMANTIC + + + + +TABLE.LONG-NAME + + +TABLE_LONG_NAME + + + + + + + + + +SYNCHELEMENT + + +SYNCHELEMENT + + + + +ASR3 Legacy Combine DID + + + +If non-zero, DEXT export creates one element for the entire DID. +Set this to simplify the port mapping (but the software component must unpack the element to get at the DID data). + + +ASR3_Legacy_Combine_DID + + + + + +Jiang +Joe +JJ +CddTools + + + + + +demo. + + + + + + +Development + + +Development + + + +Manufacturing + + +Manufacturing + + + +Service + + +Service + + + +Legislated + + +Legislated + + + + + +General reject + + +General_reject + + + +Service not supported + + +Service_not_supported + + + +Subfunction not supported + + +Subfunction_not_supported + + + +Incorrect message length or invalid format + + +Incorrect_message_length_or_invalid_format + + + +Response too long + + +Response_too_long + + + +Busy repeat request + + +Busy_repeat_request + + + +Conditions not correct + + +Conditions_not_correct + + + +Request sequence error + + +Request_sequence_error + + + +Request out of range + + +Request_out_of_range + + + +Security access denied + + +Security_access_denied + + + +Invalid key + + +Invalid_key + + + +Exceed number of attempts + + +Exceed_number_of_attempts + + + +Required time delay not expired + + +Required_time_delay_not_expired + + + +Upload / Download not accepted + + +Upload_Download_not_accepted + + + +Transfer data suspended + + +Transfer_data_suspended + + + +General programming failure + + +General_programming_failure + + + +Wrong block sequence counter + + +Wrong_block_sequence_counter + + + +Request correctly received - response pending + + +Request_correctly_received_response_pending + + + +Subfunction not supported in active session + + +Subfunction_not_supported_in_active_session + + + +Service not supported in active session + + +Service_not_supported_in_active_session + + + +RPM too high + + +RPM_too_high + + + +RPM too low + + +RPM_too_low + + + +Engine is running + + +Engine_is_running + + + +Engine is not running + + +Engine_is_not_running + + + +Engine runtime too low + + +Engine_runtime_too_low + + + +Temperature too high + + +Temperature_too_high + + + +Temperature too low + + +Temperature_too_low + + + +Vehicle speed too high + + +Vehicle_speed_too_high + + + +Vehicle speed too low + + +Vehicle_speed_too_low + + + +Throttle / Pedal too high + + +Throttle_Pedal_too_high + + + +Throttle / Pedal too low + + +Throttle_Pedal_too_low + + + +Transmission range not in neutral + + +Transmission_range_not_in_neutral + + + +Transmission range not in gear + + +Transmission_range_not_in_gear + + + +Break switch(es) not closed + + +Break_switch_es_not_closed + + + +Shifter lever not in park + + +Shifter_lever_not_in_park + + + +Torque converter clutch locked + + +Torque_converter_clutch_locked + + + +Voltage too high + + +Voltage_too_high + + + +Voltage too low + + +Voltage_too_low + + + + + +Session + + +Session + + +Default + + + +{P2=50, P2Ex=5000} + + +Default + + + +Programming + + + +{P2=50, P2Ex=5000} + + +Programming + + + +Extended + + + +{P2=50, P2Ex=5000} + + +Extended + + + + + +SecurityAccess + + +SecurityAccess + + +Locked + + +Locked + + + +Unlocked L1 + + +UnlockedL1 + + + + + + + + +HexDump (1 Byte) + + +HexDump_1Byte + + + + + +HexDump (2 Byte) + + +HexDump_2Byte + + + + + +HexDump (4 Byte) + + +HexDump_4Byte + + + + + +DTC Statusbyte + + +DtcStatusbyte + + + + + +Test failed + + +TestFailed + + + + +false + + + + + +true + + + + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + + +false + + + + + +true + + + + + + +Pending DTC + + +PendingDtc + + + + +false + + + + + +true + + + + + + +Confirmed DTC + + +ConfirmedDtc + + + + +false + + + + + +true + + + + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + + +false + + + + + +true + + + + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + + +false + + + + + +true + + + + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + + +false + + + + + +true + + + + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + +false + + + + + +true + + + + + + +DTC Groups + + +DtcGroups + + + + +Emission-related systems + + + + + +Powertrain group + + + + + +Chassis group + + + + + +Body group + + + + + +Network communication group + + + + + +All groups + + + + + + +off/on (1 Bit) + + + +0=off; 1=on + + +offOn_1Bit + + + + +off + + + + + +on + + + + + + +Bcd (2 Byte) + + +Bcd_2_Byte + + + + + +Part Number ASCII (13 Byte) + + +PartNumberSize13 + + + + + +ExtendedDataRecordNumber + + +ExtendedDataRecordNumber + + + + +OccurrenceCounter + + + +Counts the number of times the DTC have been set. + + + + + + +SID-RQ-NR + + +SID_RQ_NR + + + + +Generic Range + + + + + + +Short Identifier + + +Short_Identifier + + + + +Generic Range + + + + + + +DTC AllSupportedSnapshotRecordNumbers + + +DTC_AllSupportedSnapshotRecordNumbers + + + + +Snapshot + + + + + + +DTCCount + + +DTCCount + + + + + +P2 + + +P2 + +ms + + +ms + + + + +P2Ex + + +P2Ex + + +ms + + + + + + +Serial Number (4 Byte) + + +Serial_Number_4_Byte + + + + + +CommunicationTypeNetworks + + +CommunicationTypeNetworks + + + + +allNetworks + + + + + +receivingNetworks + + + + + + +DataIdentifier + + +DataIdentifier + + + + +VehicleManufacturerSpecific + + + + + +networkConfigurationDataForTractorTrailerApplicationDataIdentifier + + + + + +vehicleManufacturerSpecific + + + + + +identificationOptionVehicleManufacturerSpecificDataIdentifier + + + + + +BootSoftwareIdentificationDataIdentifier + + + + + +applicationSoftwareIdentificationDataIdentifier + + + + + +applicationDataIdentificationDataIdentifier + + + + + +bootSoftwareFingerprintDataIdentifier + + + + + +applicationSoftwareFingerprintDataIdentifier + + + + + +applicationDataFingerprintDataIdentifier + + + + + +ActiveDiagnosticSessionDataIdentifier + + + + + +vehicleManufacturerSparePartNumberDataIdentifier + + + + + +vehicleManufacturerECUSoftwareNumberDataIdentifier + + + + + +vehicleManufacturerECUSoftwareVersionNumberDataIdentifier + + + + + +systemSupplierIdentifierDataIdentifier + + + + + +ECUManufacturingDateDataIdentifier + + + + + +ECUSerialNumberDataIdentifier + + + + + +supportedFunctionalUnitsDataIdentifier + + + + + +VehicleManufacturerKitAssemblyPartNumberDataIdentifier + + + + + +VINDataIdentifier + + + + + +vehicleManufacturerECUHardwareNumberDataIdentifier + + + + + +systemSupplierECUHardwareNumberDataIdentifier + + + + + +systemSupplierECUHardwareVersionNumberDataIdentifier + + + + + +systemSupplierECUSoftwareNumberDataIdentifier + + + + + +systemSupplierECUSoftwareVersionNumberDataIdentifier + + + + + +exhaustRegulationOrTypeApprovalNumberDataIdentifier + + + + + +systemNameOrEngineTypeDataIdentifier + + + + + +repairShopCodeOrTesterSerialNumberDataIdentifier + + + + + +programmingDateDataIdentifier + + + + + +calibrationRepairShopCodeOrCalibrationEquipmentSerialNumberDataIdentifier + + + + + +calibrationDateDataIdentifier + + + + + +calibrationEquipmentSoftwareNumberDataIdentifier + + + + + +ECUInstallationDateDataIdentifier + + + + + +ODXFileDataIdentifier + + + + + +EntityDataIdentifier + + + + + +identificationOptionVehicleManufacturerSpecific + + + + + +identificationOptionSystemSupplierSpecific + + + + + +periodicDataIdentifier + + + + + +DynamicallyDefinedDataIdentifier + + + + + +OBDDataIdentifier + + + + + +OBDDataIdentifier + + + + + +OBDMonitorDataIdentifier + + + + + +OBDMonitorDataIdentifier + + + + + +OBDInfoTypeDataIdentifier + + + + + +TachographDataIdentifier + + + + + +AirbagDeploymentDataIdentifier + + + + + +SafetySystemDataIdentifier + + + + + +ReservedForLegislativeUse + + + + + +SystemSupplierSpecific + + + + + +UDSVersionDataIdentifier + + + +See data type "UDS Version (4 Byte)" + + + + + +CAN Protocol at DLC + + + +See data type "CAN Protocols Supported (1 Byte)" + + + + + + +Subfunction CommunicationControl + + +Subfunction_CommunicationControl + + + + +enableRxAndTx + + + + + +enableRxAndDisableTx + + + + + +disableRxAndEnableTx + + + + + +disableRxAndTx + + + + + +vehicleManufacturerSpecific + + + + + +systemSupplierSpecific + + + + + + +Subfunction DiagnosticSessionControl + + +Subfunction_DiagnosticSessionControl + + + + +defaultSession + + + + + +programmingSession + + + + + +extendedDiagnosticSession + + + + + +safetySystemDiagnosticSession + + + + + +vehicleManufacturerSpecific + + + + + +systemSupplierSpecific + + + + + + +Subfunction EcuReset + + +Subfunction_EcuReset + + + + +hardReset + + + + + +keyOffOnReset + + + + + +softReset + + + + + +enableRapidPowerShutDown + + + + + +disableRapidPowerShutDown + + + + + +vehicleManufacturerSpecific + + + + + +systemSupplierSpecific + + + + + + +Subfunction SecurityAccess + + +Subfunction_SecurityAccess + + + + +requestSeed + + + + + +sendKey + + + + + +requestSeed + + + + + +sendKey + + + + + +requestSeed + + + + + +sendKey + + + + + +ISOSAEReserved requestSeed values + + + + + +ISOSAEReserved sendKey values + + + + + +systemSupplierSpecific + + + + + + +Address and Length Format Identifier + + + +Examples for addressAndLengthFormatIdentifier parameter values regarding to ISO 14229-1 Annex G.1 + + +AddressAndLengthFormatIdentifier + + + + +Length: memoryAddress 1 byte, memorySize 1 byte + + + + + +Length: memoryAddress 2 byte, memorySize 1 byte + + + + + +Length: memoryAddress 3 byte, memorySize 1 byte + + + + + +Length: memoryAddress 4 byte, memorySize 1 byte + + + + + +Length: memoryAddress 1 byte, memorySize 2 byte + + + + + +Length: memoryAddress 2 byte, memorySize 2 byte + + + + + +Length: memoryAddress 3 byte, memorySize 2 byte + + + + + +Length: memoryAddress 4 byte, memorySize 2 byte + + + + + +Length: memoryAddress 1 byte, memorySize 3 byte + + + + + +Length: memoryAddress 2 byte, memorySize 3 byte + + + + + +Length: memoryAddress 3 byte, memorySize 3 byte + + + + + +Length: memoryAddress 4 byte, memorySize 3 byte + + + + + +Length: memoryAddress 1 byte, memorySize 4 byte + + + + + +Length: memoryAddress 2 byte, memorySize 4 byte + + + + + +Length: memoryAddress 3 byte, memorySize 4 byte + + + + + +Length: memoryAddress 4 byte, memorySize 4 byte + + + + + +Length: memoryAddress 5 byte, memorySize 4 byte + + + + + + +HexDump (3 Byte) + + +HexDump_3Byte + + + + + +Memory (1 Byte Size Info) + + +Memory_1_Byte_Size_Info + + + + + +Memory (2 Byte Size Info) + + +Memory_2_Byte_Size_Info + + + + + +Memory (3 Byte Size Info) + + +Memory_3_Byte_Size_Info + + + + + +Subfunction EventType (Set up) + + +Subfunction_EventType_Set_up + + + + +OnDTCStatusChange (do not store event) + + + + + +OnTimerInterrupt + + + + + +OnChangeOfDataIdentifier + + + + + +OnComparisonOfValues + + + + + +VehicleManufacturerSpecific + + + + + +SystemSupplierSpecific + + + + + +OnDTCStatusChange (storeEvent) + + + + + +OnTimerInterrupt (storeEvent) + + + + + +OnChangeOfDataIdentifier (storeEvent) + + + + + +OnComparisonOfValues (storeEvent) + + + + + +VehicleManufacturerSpecific (storeEvent) + + + + + +SystemSupplierSpecific (storeEvent) + + + + + + +DTCFormatIdentifier + + +DTCFormatIdentifier + + + + +SAE_J2012-DA_DTCFormat + + + + + +ISO_14229-1DTCFormat + + + + + +SAE_J1939-73_DTCFormat + + + + + +ISO_11992-4_DTCFormat + + + + + +SAE_J2012-DA_WWHOBD_DTCFormat + + + + + + +FunctionalGroupID + + +FunctionalGroupID + + + + +Emission-system group + + + + + +V-OBD system + + + + + +All functional system groups + + + + + + +Hex Dump (1..65536 Bytes) + + +Hex_Dump_1_65536_Bytes + + + + + +DTCSeverity-maintenanceOnly (Bit 5) + + +DTCSeverity_maintenanceOnly_Bit_5 + + + + +no maintenanceOnly severity + + + + + +maintenanceOnly severity + + + + + + +DTCSeverity-checkAtNextHalt (Bit 6) + + +DTCSeverity_checkAtNextHalt_Bit_6 + + + + +do not checkAtNextHalt + + + + + +checkAtNextHalt + + + + + + +DTCSeverity-checkImmediately (Bit 7) + + +DTCSeverity_checkImmediately_Bit_7 + + + + +do not checkImmediately + + + + + +checkImmediately + + + + + + +DTCSeverity-DTC Class_0 (Bit 0) + + +DTCSeverity_DTC_Class_0_Bit_0 + + + + + +DTCSeverity-DTC Class_1 (Bit 1) + + +DTCSeverity_DTC_Class_1_Bit_1 + + + + + +DTCSeverity-DTC Class_3 (Bit 3) + + +DTCSeverity_DTC_Class_3_Bit_3 + + + + + +DTCSeverity-DTC Class_2 (Bit 2) + + +DTCSeverity_DTC_Class_2_Bit_2 + + + + + +DTCSeverity-DTC Class_4 (Bit 4) + + +DTCSeverity_DTC_Class_4_Bit_4 + + + + + +RoutineIdentifier + + +RoutineIdentifier + + + + +TachographTestIds + + + + + +vehicleManufacturerSpecific + + + + + +OBDTestIds + + + + + +DeployLoopRoutineID + + + + + +SafetySystemsRoutineIDs + + + + + +systemSupplierSpecific + + + + + +eraseMemory + + + + + +checkProgrammingDependencies + + + + + +eraseMemoryDTCs + + + + + + +EventWindowTime + + +EventWindowTime + + + + + +DTC OccurrenceCounter + + +OccurrenceCounter + + + + + + +HexDump (5 Byte) + + +HexDump_5_Byte + + + + + +Memory (4 Byte Size Info) + + +Memory_4_Byte_Size_Info + + + + + +Identifier + + +RecordDataIdentifier + + + + +Generic Range + + + + + + +ResponseOnEvent - EventWindowTime + + +ResponseOnEvent_EventWindowTime + + + + + + + + + + +InfiniteTimeToResponse + + + + + +30 Seconds + + + + + +40 Seconds + + + + + +50 Seconds + + + + + +60 Seconds + + + + + +70 Seconds + + + + + +80 Seconds + + + + + +90 Seconds + + + + + +100 Seconds + + + + + +110 Seconds + + + + + +120 Seconds + + + + + +130 Seconds + + + + + +140 Seconds + + + + + +150 Seconds + + + + + +160 Seconds + + + + + +170 Seconds + + + + + +180 Seconds + + + + + +190 Seconds + + + + + +200 Seconds + + + + + +210 Seconds + + + + + +220 Seconds + + + + + +230 Seconds + + + + + +240 Seconds + + + + + +250 Seconds + + + + + +260 Seconds + + + + + +270 Seconds + + + + + +280 Seconds + + + + + +290 Seconds + + + + + +300 Seconds + + + + + +310 Seconds + + + + + +320 Seconds + + + + + +330 Seconds + + + + + +340 Seconds + + + + + +350 Seconds + + + + + +360 Seconds + + + + + +370 Seconds + + + + + +380 Seconds + + + + + +390 Seconds + + + + + +400 Seconds + + + + + +410 Seconds + + + + + +420 Seconds + + + + + +430 Seconds + + + + + +440 Seconds + + + + + +450 Seconds + + + + + +460 Seconds + + + + + +470 Seconds + + + + + +480 Seconds + + + + + +490 Seconds + + + + + +500 Seconds + + + + + +510 Seconds + + + + + +520 Seconds + + + + + +530 Seconds + + + + + +540 Seconds + + + + + +550 Seconds + + + + + +560 Seconds + + + + + +570 Seconds + + + + + +580 Seconds + + + + + +590 Seconds + + + + + +600 Seconds + + + + + +610 Seconds + + + + + +620 Seconds + + + + + +630 Seconds + + + + + +640 Seconds + + + + + +650 Seconds + + + + + +660 Seconds + + + + + +670 Seconds + + + + + +680 Seconds + + + + + +690 Seconds + + + + + +700 Seconds + + + + + +710 Seconds + + + + + +720 Seconds + + + + + +730 Seconds + + + + + +740 Seconds + + + + + +750 Seconds + + + + + +760 Seconds + + + + + +770 Seconds + + + + + +780 Seconds + + + + + +790 Seconds + + + + + +800 Seconds + + + + + +810 Seconds + + + + + +820 Seconds + + + + + +830 Seconds + + + + + +840 Seconds + + + + + +850 Seconds + + + + + +860 Seconds + + + + + +870 Seconds + + + + + +880 Seconds + + + + + +890 Seconds + + + + + +900 Seconds + + + + + +910 Seconds + + + + + +920 Seconds + + + + + +930 Seconds + + + + + +940 Seconds + + + + + +950 Seconds + + + + + +960 Seconds + + + + + +970 Seconds + + + + + +980 Seconds + + + + + +990 Seconds + + + + + +1000 Seconds + + + + + +1010 Seconds + + + + + +1020 Seconds + + + + + +1030 Seconds + + + + + +1040 Seconds + + + + + +1050 Seconds + + + + + +1060 Seconds + + + + + +1070 Seconds + + + + + +1080 Seconds + + + + + +1090 Seconds + + + + + +1100 Seconds + + + + + +1110 Seconds + + + + + +1120 Seconds + + + + + +1130 Seconds + + + + + +1140 Seconds + + + + + +1150 Seconds + + + + + +1160 Seconds + + + + + +1170 Seconds + + + + + +1180 Seconds + + + + + +1190 Seconds + + + + + +1200 Seconds + + + + + +1210 Seconds + + + + + +1220 Seconds + + + + + +1230 Seconds + + + + + +1240 Seconds + + + + + +1250 Seconds + + + + + +1260 Seconds + + + + + +1270 Seconds + + + + + + +LinkControl Supported Baudrates + + +LinkControl_Supported_Baudrates + + + + +CAN250000Baud + + + + + +CAN500000Baud + + + + + +CAN1000000Baud + + + + + + +MemoryOverflowIndication + + +MemoryOverflowIndication + + + + +Invalid + + + + + + +No Memory Overflow + + + + + +Memory Overflow detected + + + + + + +DTC Significance + + +DTC_Significance + + + + +Reserved + + + + + + +Fault + + + + + +Occurrence + + + + + + +DTC Static Priority + + +DTC_Static_Priority + + + + + + +DTC Aging Counter (Counting Upwards) + + +DTC_Aging_Counter_Counting_Upwards + + + + + + +DTC Aging Counter (Counting Downwards) + + +DTC_Aging_Counter_Counting_Downwards + + + + + + +DTC FaultDetectionCounter + + +DTC_FaultDetectionCounter + + + + + +Test Passed + + + + + +Unqualified (passing) + + + + + +Unqualified + + + + + +Unqualified (failing) + + + + + +Test Failed + + + + + + +DTC FaultDetectionCounter - Maximum since last DTC clear + + +DTC_FaultDetectionCounter_Maximum_since_last_DTC_clear + + + + + +Test passed since last DTC clear + + + + + +Test never completed - was passing + + + + + +Test never run + + + + + +Test never completed - was failing + + + + + +Test failed since last DTC clear + + + + + + +DTC FaultDetectionCounter - Maximum this Operation Cycle + + +DTC_FaultDetectionCounter_Maximum_this_Operation_Cycle + + + + + +Test passed this operation cycle + + + + + +Test never completed - was passing + + + + + +Test never run + + + + + +Test never completed - was failing + + + + + +Test failed this operation cycle + + + + + + +DTC Number of Operation Cycles since first Fail + + +DTC_Number_of_Operation_Cycles_since_first_Fail + + + + + + +DTC Number of Operation Cycles since last Fail + + +DTC_Number_of_Operation_Cycles_since_last_Fail + + + + + + +DTC Number of Operation Cycles with Failed Test + + +DTC_Number_of_Operation_Cycles_with_Failed_Test + + + + + + +Subfunction CommunicationControl EnhancedAddressInformation + + +Subfunction_CommunicationControl_EnhancedAddressInformation + + + + +EnableRxAndDisableTxWithEnhancedAddressInformation + + + + + +EnableRxAndTxWithEnhancedAddressInformation + + + + + + +SID-RQ + + +SID_RQ + + + + +Generic Range + + + + + + +DTC OccurrenceCounter (2 Byte) + + +DTC_OccurrenceCounter_2_Byte + + + + + + +DTC Number of Consecutive Operation Cycles with Failed Test + + +DTC_Number_of_Consecutive_Operation_Cycles_with_Failed_Test + + + + + + +DTC Number of Tested Operation Cycles since first Fail + + +DTC_Number_of_Tested_Operation_Cycles_since_first_Fail + + + + + + +DTC Root Cause EventId + + +DTC_Root_Cause_EventId + + + + + + +DTC OBD + + +DTC_OBD + + + + + + +TestFailed (1Bit) + + +TestFailed_1Bit + + + + +false + + + + + +true + + + + + + +TestFailedThisOperationCycle (1Bit) + + +TestFailedThisOperationCycle + + + + +false + + + + + +true + + + + + + +Pending DTC (1Bit) + + +PendingDTC + + + + +false + + + + + +true + + + + + + +Confirmed DTC (1Bit) + + +ConfirmedDTC + + + + +false + + + + + +true + + + + + + +Test not completed since last clear (1Bit) + + +Test_not_completed_since_last_clear_1Bit + + + + +false + + + + + +true + + + + + + +Test failed since last clear (1Bit) + + +Test_failed_since_last_clear_1Bit + + + + +false + + + + + +true + + + + + + +Test not completed this operation cycle (1Bit) + + +TestNotCompletedThisOperationCycle + + + + +false + + + + + +true + + + + + + +Warning indicator requested (1Bit) + + +Warning_indicator_requested_1Bit + + + + +false + + + + + +true + + + + + + +SAE J2012 Failure Type Byte + + + +FTB is defined as the Failure Type Byte in extended DTCs most commonly used in CAN networks. The FTB is used with a base DTC made of two bytes designating the DTC number and B,C,P or U type. The base DTC will not specify a failure type such as an open or short circuit condition. Instead the failure type is specified by the FTB and is reported by an ECU with the base DTC. In effect then a reported DTC is made of the total of the three bytes. + +The DTC annexes of SAE J2012 and ISO 15031-6 documents define many two byte DTCs with failure type information. If such a standard DTC is already defined for a component / system and that DTC description already comprehends the DTC Failure Type information, then the standard DTC number can be used and the DTC Failure Type Byte shall be set to a value of 00 hex. A DTC Failure Type Byte value of 00 hex indicates that no additional sub type information is contained in the DTC Failure Type Byte. + + +SAE_J2012_Failure_Type_Byte + + + + +No Sub Type Information + + + +This sub type is used for failures where the base DTC text string provides the complete description of the failure itself (no Category and no Sub Type information used, e.g. emissions-related DTC (012700 hex): P0127 Intake Air Temperature Too High). + + + + + +General Electrical Failure + + + +This sub type is used for General Electrical Failures that cannot be assigned to a specific sub type (Category information and no Sub Type information, e.g. DTC (803901): B0039-01 Second Row Right Frontal Stage 1 Deployment Control - General Electrical Failure). + + + + + +General Signal Failure + + + +This sub type is used for General Signal Failures that cannot be assigned to a specific sub type (Category information and no Sub Type information, e.g. DTC (403002): C0030 Left Front Tone Wheel - General Signal Failure). + + + + + +FM (Frequency Modulated) / PWM (Pulse Width Modulated) Failure + + + +This sub type is used for FM / PWM Failures that cannot be assigned to a specific sub type. + + + + + +System Internal Failure + + + +This sub type is used for control module Internal Failures that cannot be assigned to a specific sub type. + + + + + +System Programming Failure + + + +This sub type is used for System Programming Failures that cannot be assigned to a specific sub type. + + + + + +Algorithm Based Failure + + + +This sub type is used for Algorithm Based Failures that cannot be assigned to a specific sub type. + + + + + +Mechanical Failure + + + +This sub type is used for Mechanical Failures that cannot be assigned to a specific sub type. + + + + + +Bus Signal / Message Failure + + + +This sub type is used for Bus Signal / Message Failures that cannot be assigned to a specific sub type. + + + + + +Component Failure + + + +This sub type is used for Component Failures that cannot be assigned to a specific sub type. + + + + + +General Electrical Failures - 2 + + + +This range specifies the standard wiring failure modes (i.e., shorts and opens), and direct current (DC) quantities related by Ohm's Law. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Circuit Short To Ground + + + +This sub type is used for failures where the control module measures ground (battery negative) potential for greater than a specified time period or when some other value less than the low voltage limit DTC Sub Type is measured. + + + + + +Circuit Short To Battery + + + +This sub type is used for failures, where the control module measures vehicle system (battery positive) potential for greater than a specified time period or when some other value higher than the high voltage limit DTC Sub Type is measured. + + + + + +Circuit Open + + + +This sub type is used for failures, where the control module determines an open circuit via lack of bias voltage, low current flow, no change in the state of an input in response to an output, etc. + + + + + +Circuit Short To Ground or Open + + + +This sub type is used for failures, where the condition detected by the control module is the same for either indicated failure mode. + + + + + +Circuit Short To Battery or Open + + + +This sub type is used for failures, where the condition detected by the control module is the same for either indicated failure mode. + + + + + +Circuit Voltage Below Threshold + + + +This sub type is used for failures, where the control module measures a voltage below a specified range. + + + + + +Circuit Voltage Above Threshold + + + +This sub type is used for failures where, the control module measures a voltage above a specified range. + + + + + +Circuit Current Below Threshold + + + +This sub type is used for failures, where the control module measures current flow below a specified range. + + + + + +Circuit Current Above Threshold + + + +This sub type is used for failures, where the control module measures current flow above a specified range. + + + + + +Circuit Resistance Below Threshold + + + +This sub type is used for failures, where the control module infers a circuit resistance below a specified range. + + + + + +Circuit Resistance Above Threshold + + + +This sub type is used for failures, where the control module infers a circuit resistance above a specified range. + + + + + +Circuit Voltage Out of Range + + + +This sub type is used for failures, where the control module measures a voltage outside the expected range but not identified as too high or too low. + + + + + +Circuit Current Out of Range + + + +This sub type is used for failures, where the control module measures a current outside the expected range but not identified as too high or too low. + + + + + +Circuit Resistance Out of Range + + + +This sub type is used for failures, where the control module measures a resistance outside the expected range but not identified as too high or too low. + + + + + +Circuit Intermittent + + + +This sub type is used for failures, where the control module momentarily detects one of the conditions defined above, but not long enough to set a specific sub type. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Signal Amplitude < Minimum + + + +This sub type is used for failures where the control module measures a signal voltage amplitude below a specified range (e.g., low gain). + + + + + +Signal Amplitude > Maximum + + + +This sub type is used for failures where the control module measures a signal voltage amplitude above a specified range (e.g., gain too high). + + + + + +Signal Stuck Low + + + +This sub type is used for failures where the control module measures a signal that remains low when transitions are expected. + + + + + +Signal Stuck High + + + +This sub type is used for failures where the control module measures a signal that remains high when transitions are expected. + + + + + +Signal Shape / Waveform Failure + + + +This sub type is used for failures where the shape of the signal (plot of the amplitude with respect to time) is not correct, e.g., improper circuit impedance. + + + + + +Signal Rate of Change Below Threshold + + + +This sub type is used for failures where the signal transitions more slowly than the specified limit. + + + + + +Signal Rate of Change Above Threshold + + + +This sub type is used for failures where the signal transitions more quickly than the specified limit. + + + + + +Signal Bias Level Out of Range / Zero Adjustment Failure + + + +This sub type is used for failures where the control module applies a bias voltage or a zero signal level to a circuit upon which is superimposed a signal voltage (e.g., bias voltage to an Oxygen Sensor circuit, or a filtered digital m/sec2 signal while vehicle stands still for a lateral accelerator sensor module.) + + + + + +Signal Invalid + + + +This sub type is used for failures where the value of the signal is not plausible given the operating conditions. + + + + + +Signal Stuck In Range + + + +This sub type is used for failures where the value of the signal is in the normal operating range, but not correct for current operating conditions. + + + + + +Signal Cross Coupled + + + +This sub type is used when a signal is found to be incorrectly correlated to another signal that the control module is also monitoring, indicating that the signals are shorted together + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Signal Erratic + + + +This sub type is used for failures where the signal is momentarily implausible (not long enough for "signal invalid") or discontinuous. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +No Signal + + + +This sub type is used for failures where the control module does not detect a signal which ought to be present (e.g., wheel speed signals present for three of the four wheels and brakes not applied.) + + + + + +Signal Low Time < Minimum + + + +This sub type is used for failures where the control module detects the low pulse is too narrow with respect to time. + + + + + +Signal Low Time > Maximum + + + +This sub type is used for failures where the control module detects the low pulse is too wide with respect to time. + + + + + +Signal High Time < Minimum + + + +This sub type is used for failures where the control module detects the high pulse is too narrow with respect to time. + + + + + +Signal High Time > Maximum + + + +This sub type is used for failures where the control module detects the high pulse is too wide with respect to time. + + + + + +Signal Frequency Too Low + + + +This sub type is used for failures where the control module detects excessive duration for one cycle of the output across a specified sample size. + + + + + +Signal Frequency Too High + + + +This sub type is used for failures where the control module detects insufficient duration for one cycle of the output across a specified sample size. + + + + + +Signal Frequency Incorrect + + + +This sub type is used for failures where the control module measures an incorrect number of cycles in a given time period. + + + + + +Signal Has Too Few Pulses + + + +This sub type is used for failures where the control module measures too few pulses (e.g., position is calibrated in counts from one extreme to the other). + + + + + +Signal Has Too Many Pulses + + + +This sub type is used for failures where the control module measures too many pulses (e.g., position is calibrated in counts from one extreme to the other). + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +General Checksum Failure + + + +This sub type is used by the control module to indicate an incorrect checksum calculation where memory type is not specified. + + + + + +General Memory Failure + + + +This sub type is used by the control module to indicate a memory failure where memory type is not specified. + + + + + +Special Memory Failure + + + +This sub type is used by the control module to indicate a memory failure where the specific memory type is not defined in this category. + + + + + +Data Memory Failure + + + +This sub type is used by the control module to indicate a data (or working) memory failure for embedded systems using FLASH memory. This is equivalent to RAM in RAM/ROM/EEPROM embedded systems. + + + + + +Program Memory Failure + + + +This sub type is used by the control module to indicate a program memory failure for embedded systems using FLASH memory. This is equivalent to ROM in RAM/ROM/EEPROM embedded systems. + + + + + +Calibration / Parameter Memory Failure + + + +This sub type is used by the control module to indicate a calibration / parameter memory failure for embedded systems using FLASH memory. This is equivalent to EEPROM in RAM/ROM/EEPROM embedded systems. + + + + + +Watchdog / Safety µC Failure + + + +This sub type is used by the control module to indicate a watchdog / safety µC failure, or a failure in the execution of operational software. + + + + + +Supervision Software Failure + + + +This sub type is used by the control module to indicate a supervision software failure. + + + + + +Internal Electronic Failure + + + +This sub type is used by the control module to indicate the detection of an internal circuit failure. + + + + + +Incorrect Component Installed + + + +This sub type is used by the control module to indicate a mismatch between the hardware connected to the control module and the hardware expected by the control module. + + + + + +Over Temperature + + + +This sub type is used by the control module to indicate the detection of an internal temperature above the expected range. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Not Programmed + + + +This sub type is used by the control module to indicate that programming is required. + + + + + +Not Activated + + + +This sub type is used by the control module to indicate that some portion of the program has not been enabled. + + + + + +Deactivated + + + +This sub type is used by the control module to indicate that that some portion of the program has been disabled. + + + + + +Missing Calibration + + + +This sub type is used by the control module to indicate that an operational range, etc., for a sensor or actuator must be taught to the control module, e.g. by programming or learning. + + + + + +Not Configured + + + +This sub type is used by the control module to indicate the need to enter (program) the sub system option content or the vehicle option content. + + + + + +Invalid / Incompatible Configuration + + + +This sub type indicates a control module or system configuration that cannot be valid, e.g. to have mutually exclusive options set on at the same time, or a set up that is not supported by the currently installed hardware/software. + + + + + +Invalid / Incompatible Software Component + + + +This sub type is used by the control module to indicate that a software component (calibration or program) has been identified as invalid for the control module or incompatible with other hardware or software identified by the control module, e.g. a downloaded calibration software component is incompatible with a permanent or downloaded strategy software component. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Signal Calculation Failure + + + +This sub type is used for algorithm based calculation failures where the calculated value is outside the expected range. + + + + + +Signal Compare Failure + + + +This sub type is used for failures where the control module compares two or more input parameters for plausibility but cannot specifically identify the component that is faulted. + + + + + +Circuit / Component Protection Time-Out + + + +This sub type is used for failures where the control module detects a function is active for greater than a specified time period. + + + + + +Signal Plausibility Failure + + + +This sub type is used for failures where the control module detects a single input parameter is operating outside the plausible range. + + + + + +Signal Has Too Few Transitions / Events + + + +This sub type is used for failures where the control module monitors a parameter over time within specified limits and detects fewer than the expected number of transitions. + + + + + +Signal Has Too Many Transitions / Events + + + +This sub type is used for failures where the control module monitors a parameter over time within specified limits and detects more than the expected number of transitions. + + + + + +Signal Incorrect After Event + + + +This sub type is used for failures where the control module does not see the correct change of a parameter or group of parameters in response to a particular event. + + + + + +Event Information + + + +This sub type is used by the control module to indicate the detection of a system event that was not caused by the control module itself but forces the control module to store a DTC (e.g. missing functionality from another system/control module). + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Actuator Stuck + + + +This sub type is used for failures where the control module does not detect any mechanical motion in response to energizing a motor, solenoid, relay, etc. + + + + + +Actuator Stuck Open + + + +This sub type is used for failures where the control module does not detect any mechanical motion upon commanding the operation of a motor, solenoid, relay, etc., to close some piece of equipment. + + + + + +Actuator Stuck Closed + + + +This sub type is used for failures where the control module does not detect any mechanical motion upon commanding the operation of a motor, solenoid, relay, etc., to open some piece of equipment. + + + + + +Actuator Slipping + + + +This sub type is used for failures where the control module detects excessive duration to command a motor, solenoid, relay, etc., to move a piece of equipment to a desired position. + + + + + +Emergency Position Not Reachable + + + +This sub type is used for failures where the control module is unable to command a motor, solenoid, relay, etc., to move a piece of equipment to the emergency position. + + + + + +Wrong Mounting Position + + + +This sub type is used for failures where the control module detects incorrectly mounted components, e.g., acceleration sensor showing a position error of 90°. + + + + + +Commanded Position Not Reachable + + + +This sub type is used for failures where the control module is unable to command a motor, solenoid, relay, etc., to move a piece of equipment to the commanded position either due to a failure in the actuator or its mechanical environment. + + + + + +Alignment or Adjustment Incorrect + + + +This sub type is used for failures where the control module detects incorrectly adjusted or aligned components. + + + + + +Mechanical Linkage Failure + + + +This sub type is used for failures where the control module detects that the actuator is operational but the driven device is not operating, e.g., drive cable for power sliding door broken. + + + + + +Fluid Leak or Seal Failure + + + +This sub type is used for failures where the control module detects that a mechanical component has an unexpected gas or liquid flow in, out, or through the component. + + + + + +Low Fluid Level + + + +This sub type is used for failures where the control module detects that a fluid level is too low for proper operation of the system. + + + + + +Slow Response + + + +This sub type is used where control module has detected a response that is longer than expected or a degraded rate of change in the monitored component or system. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Actuator Stuck On + + + +This sub type is used for failures where the control module detects the actuator mechanical function is fixed in the ON / applied state + + + + + +Actuator Stuck Off + + + +This sub type is used for failures where the control module detects the actuator mechanical function is fixed in the OFF / Released state + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Invalid Serial Data Received + + + +This sub type is used by the control module to indicate a signal was received with the corresponding validity bit equal to "invalid" or post processing of the signal determines it is invalid. + + + + + +Alive / Sequence Counter Incorrect / Not Updated + + + +This sub type is used by the control module to indicate that a signal was received without the corresponding rolling count value being properly updated. + + + + + +Value of Signal Protection Calculation Incorrect + + + +This sub type is used by the control module to indicate, that a message was processed with an incorrect protection (checksum) calculation. + + + + + +Signal Below Allowable Range + + + +This sub type is used for failures where some circuit quantity, reported via serial data, is below a specified range. + + + + + +Signal Above Allowable Range + + + +This sub type is used for failures where some circuit quantity, reported via serial data, is above a specified range. + + + + + +Signal Invalid + + + +This sub type is used for failures where some circuit quantity, reported via serial data, is not plausible given the operating conditions. + + + + + +Missing Message + + + +This sub type is used for failures where one (or more) expected message(s) is not received, e.g., periodic transmission where the repetition time is too high, or message not received as a result of unforeseen reset events of the concerning component (e.g. engine control unit communicating with ABS). + + + + + +Bus off + + + +This sub type is used for failures where a data bus is not available. + + + + + +Data Transfer Failure + + + +This subtype is for failures where an ECU requests a data transfer from an external source (off-board, on-board, or another ECU) and the data transfer initiates but fails to complete. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Erratic + + + +This sub type is used for failures where the signal, reported via serial data, is momentarily implausible or discontinuous. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Parametric + + + +This sub type is used for failures where the control module has detected that a component parameter (e.g., capacitance or inductance) is outside its expected range. + + + + + +Performance or Incorrect Operation + + + +This sub type is used for failures where the control module has detected that the component performance is outside its expected range or operating in an incorrect way. + + + + + +No Operation + + + +This sub type is used for failures where the control module has detected that the component is not operating. + + + + + +Unexpected Operation + + + +This sub type is used for failures where the control module has detected that the component is operating in a way or at a time that it has not been commanded to operate. + + + + + +Incorrect Assembly + + + +This sub type is used for failures where the control module has detected that the component has been incorrectly installed (e.g., hydraulic pipes crossed over, circuits cross wired) or polarity errors. + + + + + +Component Internal Failure + + + +This sub type is used for failures where the control module has received an indication about the component that indicates a failure (e.g., an intelligent actuator or sensor) is indicating an internal fault. + + + + + +Component or System Operation Obstructed or Blocked + + + +This sub type is used for failures where the control module has detected that the operation of a component is prevented by an obstruction, e.g., advanced cruise system radar beam obstructed. + + + + + +Component or System Over Temperature + + + +This sub type is used for failures where the control module has detected that the temperature is too high for the correct operation of the component or system. + + + + + +Exceeded Learning Limit + + + +This sub type is used for failures where the control module has detected that the component or system has exceeded the expected range allowed for learning component tolerances. + + + + + +Component or System Operating Conditions + + + +This sub type is used for failures where the control module has detected that environmental or other operating conditions are either temporarily or permanently outside the design limits for correct operation such that all or part of a component function is inhibited or fails, e.g. a radio is disabled because its LCD display or its CD mechanism cannot operate at a low ambient temperature. + + + + + +High/Excessive Flow + + + +This sub type is used for failures where the control module has detected that the component or system is operating above the expected flow range flow, e.g. too much EGR at idle. + + + + + +Low/Insufficient Flow + + + +This sub type is used for failures where the control module has detected that the component or system is operating below the expected flow range flow, e.g. too little EGR at part throttle. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Stuck On + + + +This sub type is used for failures where the control module detects the electrical circuit or switch is fixed in the ON / Applied state + + + + + +Stuck Off + + + +This sub type is used for failures where the control module detects the electrical circuit or switch is fixed in the OFF / Released state. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +System Voltage + + + +This sub type is used for failures, where the control module system voltage is outside the expected range but not identified as too high or too low. + + + + + +System Voltage Low + + + +This sub type is used for failures where the control module system voltage is below a specified range. + + + + + +System Voltage High + + + +This sub type is used for failures where the control module system voltage is above a specified range. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +ISO/SAE Reserved + + + +This value is reserved by the document for future expansion. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + +Manufacturer Defined + + + +This value is reserved for vehicle manufacturer/system supplier use. + + + + + + +DTC OBD (3 Byte) + + +DTC_OBD_3_Byte + + + + + + +DTC OBD Ratio + + +DTC_OBD_Ratio + + + + + + +User Defined Fault Memories + + +User_Defined_Fault_Memories + + + + +User Defined Fault Memory 0 + + + + + +User Defined Fault Memory 1 + + + + + +User Defined Fault Memory 2 + + + + + +User Defined Fault Memory 3 + + + + + +User Defined Fault Memory 4 + + + + + +User Defined Fault Memory 5 + + + + + + +SnapshotRecordsPlusFF + + +SnapshotRecordsPlusFF + + + +Not implemented + + + + + +Not implemented + + + + + +Not implemented + + + + + + +First Occurence + + + +DEM_TRIGGER_ON_CONFIRMED + + + + + +Last Occurence + + + +DEM_TRIGGER_ON_TEST_FAILED + + + + + +All Snapshot Records + + + + + + +SnapshotRecords + + +SnapshotRecords + + + +Not implemented + + + + + +Not implemented + + + + + +Not implemented + + + + + + +First Occurence + + + +DEM_TRIGGER_ON_CONFIRMED + + + + + +Last Occurence + + + +DEM_TRIGGER_ON_TEST_FAILED + + + + + + +Unsigned Dec (1 Byte) + + +Unsigned_1Byte + + + + + +DTCExtendedDataRecordNumber (1Byte) + + +DTCExtendedDataRecordNumber_1Byte + + + + + + + + +StandardEnvironmentData + + + + + + +UDS Version (4 Byte) + + + +4 bytes unsigned: Major (MSB), Minor, Revision, 0 (LSB); 0 to 255 each. + + +UDS_Version_4_Byte + + + + +2005 + + + + + +2013 + + + + + +2018 + + + + + + +CAN Protocols Supported (1 Byte) + + +CAN_Protocols_Supported_1Byte + + + + + + +CAN Classical only + + + + + +CAN FD only + + + + + +CAN Classical and CAN FD + + + + + + +DTC Healing Counter (Counting Downwards) + + +DTC_Healing_Counter_Counting_Downwards + + + + + + +DTC Number of Tested Operation Cycles since last Fail + + +DTC_Number_of_Tested_Operation_Cycles_since_last_Fail + + + + + + +VIN (17 Byte) + + +VIN_17_Byte + + + + + +String (2 Byte Size Info) + + +String_2_Byte_Size_Info + + + + + +Unsigned (4 Bit) + + +Unsigned_4_Bit + + + + + +ASCII (32 Bytes) + + +ASCII_32_Bytes + + + + + +ASCII (17 Bytes) + + +ASCII_17_Bytes + + + + + +Characteristic Curve +特性曲线 + +Characteristic_Curve + + + + + +Piecewise Linear +分段线性 + +Piecewise_Linear + + + + + +Formula +公式 + +Formula + + +abs(x) + + + +Procedure +过程转换 + +Procedure + + + + + + + + +Linear_2 + + +Linear_2 + + + + + + + +Float_0 + + +Float_0 + + + + + +DataType64 + + +DataType64 + + + + + + + +Communication Type + + +Communication_Type + + + + +Communciation Type + + +Communciation_Type + + +normalCommunicationMessages + + +normalCommunicationMessages + + + +networkManagementCommunicationMessages + + +networkManagementCommunicationMessages + + + +(reserved) + + +_reserved + + + +communicationTypeNetworks + + +communicationTypeNetworks + + + + + +Memory Address and Size + + +Memory_Address_and_Size + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + +Memory Address, Size and Data + + +Memory_Address_Size_and_Data + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + + +Address + + +Address + + + +Memory + + +Memory + + + + + + +ECU Serial Number DataIdentifier + + +ECU_Serial_Number_DataIdentifier + + + + +resp + + +resp + + + + +Vehicle Identification Number + + +Vehicle_Identification_Number + + + + +VIN + + +VIN + + + + +Fixed Count +固定次数 + +Fixed_Count + + + + +New Data Object + + +New_Data_Object + + + +New Data Object 1 + + +New_Data_Object_1 + + + + +Counter +计数器 + +Counter + + + + +New Data Object + + +New_Data_Object + + + + + End-Marker +结束标记 + +_End_Marker + + + + +New Data Object + + +New_Data_Object + + + + +End-of-Service +服务结束 + +End_of_Service + + + + +New Data Object + + +New_Data_Object + + + + + +Vector Reference + + +Vector_Reference + + + + + + + + +Errortext shortname + + +DTC_SHORTNAME + + + +Set Condition + + +SetCondition + + + +Reset condition & self healing + + +ResetCondition + + + +Corrective action + + +CorrectiveAction + +Replace ECU + + + +Check wiring connector + + + +Check wiring + + + +Check power supply + + + +Update software + + + +No known corrective action + + + +See special instruction + + + + + +Special instruction + + +SpecialInstruction + + + +Aging Supported + + + +If this parameter is supported, the aging mechanism is enabled for this DTC. +Aging means that the DTC will be automatically removed from fault memory +if the monitor function was executed +and no failure was detected for a configurable number of operation cycles. + + +DTC_AGING_SUPPORTED + +supported + + + +not supported + + + + + +Aging Cycle + + + +Operation cycle name that triggers the aging of this DTC. + + +DTC_AGING_CYCLE + +DEM_POWER + + + +DEM_IGNITION + + + +DEM_OBD_DCY + + + +DEM_WARMUP + + + +DEM_POWER + + + + + +Aging Cycle Counter Threshold + + + +Number of aging cycles needed to unlearn/delete this DTC. +This parameter has only effect if “Aging supported“ is set to “supported”. + + +DTC_AGING_COUNTER + + + +Monitor Initialization Function + + + +Monitor initialization function is (not) required for this event + + +DTC_INIT_MONITOR_REQUIRED + +not required + + + +required + + + +not required + + + + + +DTC Priority + + + +Priority of an event, in view of full event buffer (ref. to Dem104) + + +DTC_PRIORITY_VALUE + + + +DTC Severity + + + +Reports the recommended action to be taken by the system (e.g. vehicle) operator + + +DTC_SEVERITY_VALUE + +noSeverity + + + +maintenanceOnly + + + +checkAtNextHalt + + + +checkImmediately + + + + + +Functional Unit + + + +Can be used to identify the corresponding basic vehicle / system function which monitors this DTC. + + +DTC_FUNCTIONAL_UNIT_VALUE + + + + + + + +UDS DTC Reference + + + +Defines the UDS DTC which shall be linked to the OBD DTC. It is also possible to link several UDS DTCs to one single OBD DTC. +The supported format is as follows: +- 3 Byte Hexadecimal DTC number [0x123456 | 123456] +- If more than one DTC is entered separate them with a comma (",") + + +UDS_DTC_Reference + + + + + + + + + + + + + + + +Negative Response Codes for unsupported services + + +UNSUPPORTED_SERVICE_NR + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE TABLE + + +RESPONSE_CODE_TABLE + + + +NEGATIVE RESPONSE CODES + + +NRC + + + + + + + + + + + + +DID 0x0200 + + +DID_0x0200 + + + +Data + + +Data + + + + + +DID 0x0400 + + +DID_0x0400 + + + +DID Data + + +DID_Data + + + + + +DID 0x0300 + + +DID_0x0300 + + + +DID Data + + +DID_Data + + + + + +DataDiagnosticIdentifier DDI + + +DataDiagnosticIdentifier_DDI + + + +DataDiagnosticIdentifier + + +DataDiagnosticIdentifier + + + + + +Development Data + + +Development_Data + + + +Operating System (Version) + + +OperatingSystemVersion + + + +CAN Driver (Version) + + +CanDriverVersion + + + +NM (Version) + + +NmVersion + + + +Diagnostic Module (Version) + + +DiagnosticModuleVersion + + + +Transport Layer (Version) + + +TransportLayerVersion + + + + + +Boot Software + + +Boot_Software + + + +NumberOfModules + + +NumberOfModules + + + +Boot Software Identification + + +Boot_Software_Identification + + + + + +Spare Part Number + + +Spare_Part_Number + + + +Spare Part Number + + +Spare_Part_Number + + + + + +Serial Number + + +Serial_Number + + + +SerialNumber + + +SerialNumber + + + + + +Ecu Identification + + +Ecu_Identification + + + +Part Number + + +Part_Number + + + + + +Hardware Version + + +Hardware_Version + + + +Hardware Version Number + + +Hardware_Version_Number + + + + + +Vehicle Identification + + +Vehicle_Identification + + + +VIN + + +VIN + + + + + +DID 0x0500 + + +DID_0x0500 + + + +New Data Object + + +New_Data_Object + + + + + +UDS Version + + +UDS_Version + + + +UDS Version + + +UDS_Version + + + + + +CAN Protocol + + +CAN_Protocol + + + +CAN Protocol + + +CAN_Protocol + + + + + +ECU Serial Number + + +ECU_Serial_Number + + + +ECU Serial Number + + + +Serial number + + +ECU_Serial_Number + + + + + +Vehicle Identification Number + + +Vehicle_Identification_Number + + + +Vehicle Identification Number + + +Vehicle_Identification_Number + + + + + + + +($10) DiagnosticSessionControl + + +DSC + + +STDS-RQ + + +STDS_RQ + + +SID-RQ + + +SID_RQ + + + +Type + + +DiagSessionType + + + + +STDS-PR + + +STDS_PR + + +SID-PR + + +SID_PR + + + +Type + + +DiagSessionType + + + +SessionParameterRecord + + +SessionParameterRecord + + + + +STDS-NR + + +STDS_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($27) SecurityAccess - Request seed + + +SA_RS + + +SA_RSD-RQ + + +SA_RSD_RQ + + +SID-RQ + + +SID_RQ + + + +Type + + +SecurityAccessType + + + +Security Access Data Record + + +Security_Access_Data_Record + + + + +SA_RSD-PR + + +SA_RSD_PR + + +SID-PR + + +SID_PR + + + +Type + + +SecurityAccessType + + + +SecuritySeed + + +SecuritySeed + + + + +SA_RSD-NR + + +SA_RSD_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + + + + +($27) SecurityAccess - Send key + + +SA_SK + + +SA_SK-RQ + + +SA_SK_RQ + + +SID-RQ + + +SID_RQ + + + +Type + + +SecurityAccessType + + + +SecurityKey + + +SecurityKey + + + + +SA_SK-PR + + +SA_SK_PR + + +SID-PR + + +SID_PR + + + +Type + + +SecurityAccessType + + + + +SA_SK-NR + + +SA_SK_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + + + + +($28) CommunicationControl + + +CC + + +CC-RQ + + +CC_RQ + + +SID-RQ + + +SID_RQ + + + +Type + + +ControlType + + + +CommunicationType + + +CommunicationType + + + + +CC-PR + + +CC_PR + + +SID-PR + + +SID_PR + + + +Type + + +ControlType + + + + +CC-NR + + +CC_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($3E) TesterPresent + + +TP + + +TP-RQ + + +TP_RQ + + +SID-RQ + + +SID_RQ + + + +ZeroSubfunction + + +ZeroSubfunction + + + + +TP-PR + + +TP_PR + + +SID-PR + + +SID_PR + + + +ZeroSubfunction + + +ZeroSubfunction + + + + +TP-NR + + +TP_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + +($22) ReadDataByIdentifier + + +RDBI + + +RDBI-RQ + + +RDBI_RQ + + +SID-RQ + + +SID_RQ + + + +Identifier + + +RecordDataIdentifier + + + + +RDBI-PR + + +RDBI_PR + + +SID-PR + + +SID_PR + + + +Identifier + + +RecordDataIdentifier + + + +DataRecord + + +DataRecord + + + + +RDBI-NR + + +RDBI_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($2E) WriteDataByIdentifier + + +WDBI + + +WDBI-RQ + + +WDBI_RQ + + +SID-RQ + + +SID_RQ + + + +Identifier + + +RecordDataIdentifier + + + +DataRecord + + +DataRecord + + + + +WDBI-PR + + +WDBI_PR + + +SID-PR + + +SID_PR + + + +Identifier + + +RecordDataIdentifier + + + + +WDBI-NR + + +WDBI_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($14) ClearDiagnosticInformation + + +CDI + + +CDI-RQ + + +CDI_RQ + + +SID-RQ + + +SID_RQ + + + +GroupOfDtc + + +GroupOfDtc + + + + +CDI-PR + + +CDI_PR + + +SID-PR + + +SID_PR + + + + +CDI-NR + + +CDI_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report number of DTC by status mask + + +RDI_RNODTCBSM + + +RDI_RNODTCBSM-RQ + + +RDI_RNODTCBSM_RQ + + +SID-RQ + + +SID_RQ + + + +ReportNumberOfDtcByStatusMask + + +ReportNumberOfDtcByStatusMask + + + +DTCStatusMask + + +DTCStatusMask + + + + +RDI_RNODTCBSM-PR + + +RDI_RNODTCBSM_PR + + +SID-PR + + +SID_PR + + + +ReportNumberOfDtcByStatusMask + + +ReportNumberOfDtcByStatusMask + + + +DTCStatusAvailabilityMask + + +DTCStatusAvailabilityMask + + + +DTCFormatIdentifier + + +DtcFormatIdentifier + + + +DTCCount + + +DTCCount + + + +DTCCount + + +DTCCount + + + + + + +RDI_RNODTCBSM-NR + + +RDI_RNODTCBSM_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report DTC by status mask + + +RDI_RDTCBSM + + +RDI_RDTCBSM-RQ + + +RDI_RDTCBSM_RQ + + +SID-RQ + + +SID_RQ + + + +ReportDtcByStatusMask + + +ReportDtcByStatusMask + + + +DTCStatusMask + + +DTCStatusMask + + + + +RDI_RDTCBSM-PR + + +RDI_RDTCBSM_PR + + +SID-PR + + +SID_PR + + + +ReportDtcByStatusMask + + +ReportDtcByStatusMask + + + +DTCStatusAvailabilityMask + + +DtcAvailabilityMask + + + +ListOfDTC + + +ListOfDTC + + +DTC + + +DTC + + + +StatusOfDTC + + +StatusOfDTC + + + + + +RDI_RDTCBSM-NR + + +RDI_RDTCBSM_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report number of DTC by severity mask + + +RDI_RNODTCBSMR + + +RDI_RNODTCBSMR-RQ + + +RDI_RNODTCBSMR_RQ + + +SID-RQ + + +SID_RQ + + + +ReportNumberOfDtcBySeverityMask + + +ReportNumberOfDtcBySeverityMask + + + +DTCSeverityMask + + +DtcSeverityMask + + + +DTCStatusMask + + +DTCStatusMask + + + + +RDI_RNODTCBSMR-PR + + +RDI_RNODTCBSMR_PR + + +SID-PR + + +SID_PR + + + +ReportNumberOfDtcBySeverityMask + + +ReportNumberOfDtcBySeverityMask + + + +DTCStatusAvailabilityMask + + +DtcAvailabilityMask + + + +Formatidentifier + + +Formatidentifier + + + +DTCCount + + +DTCCount + + + +DTCCount + + +DTCCount + + + + + + +RDI_RNODTCBSMR-NR + + +RDI_RNODTCBSMR_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report DTC by severity mask record + + +RDI_RDTCBSMR + + +RDI_RDTCBSMR-RQ + + +RDI_RDTCBSMR_RQ + + +SID-RQ + + +SID_RQ + + + +ReportDTCBySeverityMaskRecord + + +ReportDTCBySeverityMaskRecord + + + +DTCSeverityMask + + +DtcSeverityMask + + + +DTCStatusMask + + +DTCStatusMask + + + + +RDI_RDTCBSMR-PR + + +RDI_RDTCBSMR_PR + + +SID-PR + + +SID_PR + + + +ReportDTCBySeverityMaskRecord + + +ReportDTCBySeverityMaskRecord + + + +DtcStatusAvailabilityMask + + +DtcStatusAvailabilityMask + + + +ListOfData + + +ListOfData + + +DTCSeverity + + +DTCSeverity + + + +DTCFunctionalUnit + + +DTCFunctionalUnit + + + +DTC + + +DTC + + + +statusOfDTC + + +statusOfDTC + + + + + +RDI_RDTCBSMR-NR + + +RDI_RDTCBSMR_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report severity information of DTC + + +RDI_RSIODTC + + +RDI_RSIODTC-RQ + + +RDI_RSIODTC_RQ + + +SID-RQ + + +SID_RQ + + + +ReportSeverityInformationOfDtc + + +ReportSeverityInformationOfDtc + + + +DTCMaskRecord + + +DtcMaskRecord + + + + +RDI_RSIODTC-PR + + +RDI_RSIODTC_PR + + +SID-PR + + +SID_PR + + + +ReportSeverityInformationOfDtc + + +ReportSeverityInformationOfDtc + + + +DtcStatusAvailabilityMask + + +DtcStatusAvailabilityMask + + + +ListOfData + + +ListOfData + + +DTCSeverity + + +DTCSeverity + + + +DTCFunctionalUnit + + +DTCFunctionalUnit + + + +DTC + + +DTC + + + +statusOfDTC + + +statusOfDTC + + + + + +RDI_RSIODTC-NR + + +RDI_RSIODTC_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($2F) InputOutputControlByIdentifier - Return control to ECU + + +IOCBI_RCTECU + + +IOCBI_RCTECU-RQ + + +IOCBI_RCTECU_RQ + + +SID-RQ + + +SID_RQ + + + +Identifier + + +DataIdentifier + + + +ControlOptionRecord_InputOutputControlParameter + + +ControlOptionRecord_InputOutputControlParameter + + + +ControlEnableMaskRecord + + +ControlEnableMaskRecord + + + + +IOCBI_RCTECU-PR + + +IOCBI_RCTECU_PR + + +SID-PR + + +SID_PR + + + +Identifier + + +DataIdentifier + + + +ControlStatusRecord_InputOutputControlParameter + + +ControlStatusRecord_InputOutputControlParameter + + + +ControlStatusRecord + + +ControlStatusRecord + + + + +IOCBI_RCTECU-NR + + +IOCBI_RCTECU_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2F) InputOutputControlByIdentifier - Reset to default + + +IOCBI_RTD + + +IOCBI_RTD-RQ + + +IOCBI_RTD_RQ + + +SID-RQ + + +SID_RQ + + + +Identifier + + +DataIdentifier + + + +ControlOptionRecord_InputOutputControlParameter + + +ControlOptionRecord_InputOutputControlParameter + + + +ControlEnableMaskRecord + + +ControlEnableMaskRecord + + + + +IOCBI_RTD-PR + + +IOCBI_RTD_PR + + +SID-PR + + +SID_PR + + + +Identifier + + +DataIdentifier + + + +ControlStatusRecord_InputOutputControlParameter + + +ControlStatusRecord_InputOutputControlParameter + + + +ControlStatusRecord + + +ControlStatusRecord + + + + +IOCBI_RTD-NR + + +IOCBI_RTD_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2F) InputOutputControlByIdentifier - Freeze current state + + +IOCBI_FCS + + +IOCBI_FCS-RQ + + +IOCBI_FCS_RQ + + +SID-RQ + + +SID_RQ + + + +Identifier + + +DataIdentifier + + + +ControlOptionRecord_InputOutputControlParameter + + +ControlOptionRecord_InputOutputControlParameter + + + +ControlEnableMaskRecord + + +ControlEnableMaskRecord + + + + +IOCBI_FCS-PR + + +IOCBI_FCS_PR + + +SID-PR + + +SID_PR + + + +Identifier + + +DataIdentifier + + + +ControlStatusRecord_InputOutputControlParameter + + +ControlStatusRecord_InputOutputControlParameter + + + +ControlStatusRecord + + +ControlStatusRecord + + + + +IOCBI_FCS-NR + + +IOCBI_FCS_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2F) InputOutputControlByIdentifier - Short term adjustment + + +IOCBI_STA + + +IOCBI_STA-RQ + + +IOCBI_STA_RQ + + +SID-RQ + + +SID_RQ + + + +Identifier + + +DataIdentifier + + + +ControlOptionRecord_InputOutputControlParameter + + +ControlOptionRecord_InputOutputControlParameter + + + +ControlOptionRecord + + +ControlOptionRecord + + + +ControlEnableMaskRecord + + +ControlEnableMaskRecord + + + + +IOCBI_STA-PR + + +IOCBI_STA_PR + + +SID-PR + + +SID_PR + + + +Identifier + + +DataIdentifier + + + +ControlStatusRecord_InputOutputControlParameter + + +ControlStatusRecord_InputOutputControlParameter + + + +ControlStatusRecord + + +ControlStatusRecord + + + + +IOCBI_STA-NR + + +IOCBI_STA_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($31) RoutineControl - Start routine + + +RC_STR + + +RC_STR-RQ + + +RC_STR_RQ + + +SID-RQ + + +SID_RQ + + + +RoutineControlType + + +RoutineControlType + + + +Identifier + + +RoutineIdentifier + + + +RoutineControlOptionRecord + + +RoutineControlOptionRecord + + + + +RC_STR-PR + + +RC_STR_PR + + +SID-PR + + +SID_PR + + + +RoutineControlType + + +RoutineControlType + + + +Identifier + + +RoutineIdentifier + + + +RoutineStatusRecord + + +RoutineStatusRecord + + + + +RC_STR-NR + + +RC_STR_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + + + +($31) RoutineControl - Stop routine + + +RC_STPR + + +RC_STPR-RQ + + +RC_STPR_RQ + + +SID-RQ + + +SID_RQ + + + +RoutineControlType + + +RoutineControlType + + + +Identifier + + +RoutineIdentifier + + + +RoutineControlOptionRecord + + +RoutineControlOptionRecord + + + + +RC_STPR-PR + + +RC_STPR_PR + + +SID-PR + + +SID_PR + + + +RoutineControlType + + +RoutineControlType + + + +Identifier + + +RoutineIdentifier + + + +RoutineStatusRecord + + +RoutineStatusRecord + + + + +RC_STPR-NR + + +RC_STPR_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + + + +($31) RoutineControl - Request routine results + + +RC_RRR + + +RC_RRR-RQ + + +RC_RRR_RQ + + +SID-RQ + + +SID_RQ + + + +RoutineControlType + + +RoutineControlType + + + +Identifier + + +RoutineIdentifier + + + + +RC_RRR-PR + + +RC_RRR_PR + + +SID-PR + + +SID_PR + + + +RoutineControlType + + +RoutineControlType + + + +Identifier + + +RoutineIdentifier + + + +RoutineStatusRecord + + +RoutineStatusRecord + + + + +RC_RRR-NR + + +RC_RRR_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + + + +($85) ControlDTCSetting (off) + + +CDTCS_OFF + + +CDTCS-RQ + + +CDTCS_RQ + + +SID-RQ + + +SID_RQ + + + +DTCSettingType + + +DTCSettingType + + + +DTCSettingControlOptionRecord + + +DTCSCOR_ + + + + +CDTCS-PR + + +CDTCS_PR + + +SID-PR + + +SID_PR + + + +DTCSettingType + + +DTCSTP + + + + +CDTCS-NR + + +CDTCS_NR + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($19) ReadDtcInformation - Report supported DTC + + +RDI_RSUPDTC + + +RDTCI_RSUPDTC-RQ + + +RDTCI_RSUPDTC_RQ + + +SID-RQ + + +SID_RQ + + + +ReportSupportedDTC + + +ReportSupportedDTC + + + + +RDTCI_RSUPDTC-PR + + +RDTCI_RSUPDTC_PR + + +SID-PR + + +SID_PR + + + +ReportSupportedDTC + + +ReportSupportedDTC + + + +DTCStatusAvailabilityMask + + +DTCStatusAvailabilityMask + + + +ListOfDTCAndStatus + + +ListOfDTCAndStatus + + +DTC + + +DTC + + + +statusOfDTC + + +statusOfDTC + + + + + +RDTCI_RSUPDTC-NR + + +RDTCI_RSUPDTC_NR + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($2A) ReadDataByPeriodicIdentifier - SendAtFastRate + + +RDBPI_TM_SAFR + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TransmissionMode + + +TransmissionMode + + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + + +Positive Response + + +Pos + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + +DataRecord + + +DataRecord + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2A) ReadDataByPeriodicIdentifier - SendAtMediumRate + + +RDBPI_TM_SAMR + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TransmissionMode + + +TransmissionMode + + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + + +Positive Response + + +Pos + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + +DataRecord + + +DataRecord + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2A) ReadDataByPeriodicIdentifier - SendAtSlowRate + + +RDBPI_TM_SASR + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TransmissionMode + + +TransmissionMode + + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + + +Positive Response + + +Pos + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + +DataRecord + + +DataRecord + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2A) ReadDataByPeriodicIdentifier - StopAll + + +RDBPI_TM_SA + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TransmissionMode + + +TransmissionMode + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2A) ReadDataByPeriodicIdentifier - StopSending + + +RDBPI_TM_SS + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TransmissionMode + + +TransmissionMode + + + +Identifier + + +Identifier + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2C) DynamicallyDefineDataIdentifier - Define By Identifier (0xF2xx) + + +DDDI_DBID_HB_F2 + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +DefinitionType - Define + + +DefinitionType_Define + + + +F2 + + +F2 + + + +DynamicallyDefinedIdentifier + + +DynamicallyDefinedIdentifier + + + +ListOfParameter + + +ListOfParameter + + +Parameter + + +Parameter + + + +SourceDID + + +SourceDID + + + +PositionInSourceDID + + +PositionInSourceDID + + + +MemorySize + + +MemorySize + + + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +DefinitionType - Define + + +DefinitionType_Define + + + +F2 + + +F2 + + + +DynamicallyDefinedIdentifier + + +DynamicallyDefinedIdentifier + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($2C) DynamicallyDefineDataIdentifier - Clear By Identifier (0xF2xx) + + +DDDI_CDDDID_HB_F2 + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +DefinitionType - Clear + + +DefinitionType_Clear + + + +F2 + + +F2 + + + +DynamicallyDefinedIdentifier + + +DynamicallyDefinedIdentifier + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +DefinitionType - Clear + + +DefinitionType_Clear + + + +F2 + + +F2 + + + +DynamicallyDefinedIdentifier + + +DynamicallyDefinedIdentifier + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($22) ReadDataByIdentifier - SendOnce (0xF2xx) + + +RDBI_F2_SendOnce + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +F2 + + +F2 + + + +Identifier + + +Identifier + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +F2 + + +F2 + + + +Identifier + + +Identifier + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($22) ReadDataByIdentifier - Dynamically Defined (0xF2xx) + + +RDBI_F2 + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +F2 + + +F2 + + + +Identifier + + +Identifier + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +F2 + + +F2 + + + +Identifier + + +Identifier + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($19) ReadDtcInformation - ReportDtcSnapshotIdentification + + +RDTCI_RDTCSSI + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +ReportDtcSnapshotIdentification + + +ReportDtcSnapshotIdentification + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +ReportDtcSnapshotIdentification + + +ReportDtcSnapshotIdentification + + + +DTCAndDTCSnapshotRecordNumber + + +DTCAndDTCSnapshotRecordNumber + + +DTC + + +DTC + + + +DTCSnapshotRecordNumber + + +DTCSnapshotRecordNumber + + + +SnapshotRecordNumber + + +SnapshotRecordNumber + + + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - ReportDtcSnapshotRecordByRecordNumber + + +RDTCI_RDTCSSBRN + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +ReportDtcInformationRequestServiceID + + +ReportDtcInformationRequestServiceID + + + +FreezeFrameNumber + + +FreezeFrameNumber + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +ReportDtcInformationRequestServiceID + + +ReportDtcInformationRequestServiceID + + + +FreezeFrameNumber + + +FreezeFrameNumber + + + +ListOfExtendedDataRecords + + +ListOfExtendedDataRecords + + +DTC + + +DTC + + + +StatusOfDTC + + +StatusOfDTC + + + +DTCSnapshotRecordNumberOfIDs + + +DTCSnapshotRecordNumberOfIDs + + + +SnapshotRecordData + + +SnapshotRecordData + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - ReportMostRecentConfirmedDTC + + +RDTCI_RMRCDTC + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +ReportMostRecentConfirmedDTC + + +ReportMostRecentConfirmedDTC + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +ReportMostRecentConfirmedDTC + + +ReportMostRecentConfirmedDTC + + + +DTCStatusAvailabilityMask + + +DTCStatusAvailabilityMask + + + +ListOfDTC + + +ListOfDTC + + +DTC + + +DTC + + + +statusOfDTC + + +statusOfDTC + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - ReportFirstConfirmedDTC + + +RDTCI_RFCDTC + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +ReportFirstConfirmedDTC + + +ReportFirstConfirmedDTC + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +ReportFirstConfirmedDTC + + +ReportFirstConfirmedDTC + + + +DTCStatusAvailabilityMask + + +DTCStatusAvailabilityMask + + + +ListOfDTC + + +ListOfDTC + + +DTC + + +DTC + + + +statusOfDTC + + +statusOfDTC + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($85) ControlDTCSetting (on) + + +CDTCS_ON + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +DTCSettingType + + +DTCSettingType + + + +DTCSettingControlOptionRecord + + +DTCSCOR_ + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +DTCSettingType + + +DTCSTP + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2C) DynamicallyDefineDataIdentifier - Define By Address (0xF2xx) + + +DDDI_DBMA_HB_F2 + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Definition Type - By Address + + +Definition_Type_By_Address + + + +F2 + + +F2 + + + +DynamicallyDefinedIdentifier + + +DynamicallyDefinedIdentifier + + + +ALFID + + +ALFID + + + +ALFID + + +ALFID + + + + + +ListOfParameters + + +ListOfParameters + + +MemoryAddressAndSize + + +MemoryAddressAndSize + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Definition Type- DefineByAddress + + +Definition_Type_DefineByAddress + + + +F2 + + +F2 + + + +DynamicallyDefinedIdentifier + + +DynamicallyDefinedIdentifier + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($22) ReadDataByIdentifier - Dynamically Defined (0xF3xx) + + +RDBI_F3 + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +F3 + + +F3 + + + +Identifier + + +Identifier + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +F3 + + +F3 + + + +Identifier + + +Identifier + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($2C) DynamicallyDefineDataIdentifier - Clear By Identifier (0xF3xx) + + +DDDI_CDDDID_HB_F3 + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +DefinitionType - Clear + + +DefinitionType_Clear + + + +F3 + + +F3 + + + +Identifier + + +Identifier + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +DefinitionType - Clear + + +DefinitionType_Clear + + + +F3 + + +F3 + + + +Identifier + + +Identifier + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($2C) DynamicallyDefineDataIdentifier - Define By Address (0xF3xx) + + +DDDI_DBMA_HB_F3 + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Definition Type - By Address + + +Definition_Type_By_Address + + + +F3 + + +F3 + + + +Identifier + + +Identifier + + + +ALFID + + +ALFID + + + +ALFID + + +ALFID + + + + + +ListOfParameters + + +ListOfParameters + + +MemoryAddressAndSize + + +MemoryAddressAndSize + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Definition Type - By Address + + +_2C_DynamicallyDefineDataIdentifier_Define_By_Address_0xF2xx + + + +F3 + + +F3 + + + +Identifier + + +Identifier + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($2C) DynamicallyDefineDataIdentifier - Define By Identifier (0xF3xx) + + +DDDI_DBID_HB_F3 + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +DefinitionType - Define + + +DefinitionType_Define + + + +F3 + + +F3 + + + +Identifier + + +Identifier + + + +listOfParameters + + +listOfParameters + + +Parameter + + +Parameter + + + +SourceDID + + +SourceDID + + + +PositionInSourceDID + + +PositionInSourceDID + + + +MemorySize + + +MemorySize + + + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +DefinitionType - Define + + +DefinitionType_Define + + + +F3 + + +F3 + + + +Identifier + + +Identifier + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($2C) DynamicallyDefineDataIdentifier - ClearAll + + +DDDI_CDDDID + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +DefinitionType - ClearAll + + +DefinitionType_ClearAll + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +DefinitionType - ClearAll + + +DefinitionType_ClearAll + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($19) ReadDtcInformation - ReportDTCFaultDetectionCounter + + +RDTCI_RDTCFDC + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +reportDTCFaultDetectionCounter + + +reportDTCFaultDetectionCounter + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +reportDTCFaultDetectionCounter + + +reportDTCFaultDetectionCounter + + + +DTCFaultDetectionCounterRecord + + +DTCFaultDetectionCounterRecord + + +DTC + + +DTC + + + +DTCFaultDetectionCounter + + +DTCFaultDetectionCounter + + + +DTCFaultDetectionCounter + + +DTCFaultDetectionCounter + + + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($19) ReadDtcInformation - ReportMostRecentTestFailedDTC + + +RDTCI_RMRTFDTC + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Subfunction + + +Subfunction + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Subfunction + + +Subfunction + + + +DTCAvailabilityMask + + +DTCAvailabilityMask + + + +ListOfDTCAndStatusRecord + + +ListOfDTCAndStatusRecord + + +DTC + + +DTC + + + +StatusOfDTC + + +StatusOfDTC + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - ReportFirstTestFailedDTC + + +RDTCI_RFTFDTC + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Subfunction + + +Subfunction + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Subfunction + + +Subfunction + + + +StatusAvailabilityMask + + +StatusAvailabilityMask + + + +ListOfDTC + + +ListOfDTC + + +DTC + + +DTC + + + +StatusOfDTC + + +StatusOfDTC + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($11) EcuReset + + +ER + + +ER-RQ + + +ER_RQ + + +SID-RQ + + +SID_RQ + + + +Type + + +ResetType + + + + +ER-PR + + +ER_PR + + +SID-PR + + +SID_PR + + + +Type + + +ResetType + + + +PowerDownTime + + +PowerDownTime + + + + +ER-NR + + +ER_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($23) ReadMemoryByAddress + + +RMBA + + +RMBA-RQ + + +RMBA_RQ + + +SID-RQ + + +SID_RQ + + + +Data + + +Data + + + +Address and Length Format Identifier + + +addressAndLengthFormatIdentifier + + + +Address and Size + + +addressAndSize + + + + + + +RMBA-PR + + +RMBA_PR + + +SID-PR + + +SID_PR + + + +DataRecord + + +DataRecord + + + + +RMBA-NR + + +RMBA_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($3D) WriteMemoryByAddress + + +WMBA + + +WMBA-RQ + + +WMBA_RQ + + +SID-RQ + + +SID_RQ + + + +Data + + +Data + + + +Address and Length Format Identifier + + +addressAndLengthFormatIdentifier + + + +Address, Size and Data + + +addressAndSizeAndData + + + + + + +WMBA-PR + + +WMBA_PR + + +SID-PR + + +SID_PR + + + +Data + + +Data + + + +Address and Length Format Identifier + + +addressAndLengthFormatIdentifier + + + +Address and Size + + +addressAndSize + + + + + + +WMBA-NR + + +WMBA_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($34) RequestDownload + + +RD + + +RD-RQ + + +RD_RQ + + +SID-RQ + + +SID_RQ + + + +DataFormatIdentifier + + +DFI_ + + + +Data + + +Data + + + +Address and Length Format Identifier + + +ALFID + + + +Address and Size + + +MA_MS_ + + + + + + +RD-PR + + +RD_PR + + +SID-PR + + +SID_PR + + + +LengthFormatIdentifier + + +LFID + + + +MaxNumberOfBlockLength + + +MNROB_ + + + + +RD-NR + + +RD_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($35) RequestUpload + + +RU + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +DataFormatIdentifier + + +DFI_ + + + +Data + + +Data + + + +Address and Length Format Identifier + + +ALFID + + + +Memory Address and Size + + +Memory_Address_and_Size + + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +FormatIdentifier + + +FormatIdentifier + + + +MaxNumberOfBlockLength + + +MaxAnzahlBlockLaengen + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($36) TransferData + + + +A) Download (transfer from the client to the ECU) +1. $34 download request +2. $36 request: + a) sequence counter + b) download data +3. $36 response: + a) echo of the sequence counter + b) optionally: checksum + (data-correctness double-check beside the sequence counter) + (depends on the manufacturer specs) + +B) Upload (transfer from the ECU to the client) +1. $35 upload request +2. $36 request: + a) sequence number + b) optionally: memory range for the uploaded data + (depends on the manufacturer specs) +3. $36 response: + a) echo of the sequence counter + b) the uploaded data. + + + +_36_TransferData + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Block Sequence Counter + + +Block_Sequence_Counter + + + +Transfer Request Parameter Record + + +Transfer_Request_Parameter_Record + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Block Sequence Counter + + +Block_Sequence_Counter + + + +Transfer Response Parameter Record + + +Transfer_Response_Parameter_Record + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + + + + + +($37) RequestTransferExit + + +RTE + + +RTE-RQ + + +RTE_RQ + + +SID-RQ + + +SID_RQ + + + +RequestParameter + + +TRPR_ + + + + +RTE-PR + + +RTE_PR + + +SID-PR + + +SID_PR + + + +ResponseParameter + + +TREPR_ + + + + +RTE-NR + + +RTE_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report WWH-OBD DTC by mask record + + +_19_ReadDtcInformation_Report_WWH_OBD_DTC_by_mask_record + + +RDI_RDTCBSMR-RQ + + +RDI_RDTCBSMR_RQ + + +SID-RQ + + +SID_RQ + + + +ReportWWHOBDDTCbyMaskRecord + + +ReportWWHOBDDTCbyMaskRecord + + + +FunctionalGroupID + + +FunctionalGroupID + + + +DTCStatusMask + + +DTCStatusMask + + + +DTCSeverityMask + + +DtcSeverityMask + + + + +RDI_RDTCBSMR-PR + + +RDI_RDTCBSMR_PR + + +SID-PR + + +SID_PR + + + +ReportWWHOBDDTCbyMaskRecord + + +ReportWWHOBDDTCbyMaskRecord + + + +FunctionalGroupID + + +FunctionalGroupID + + + +DTCStatusAvailabilityMask + + +DTCStatusAvailabilityMask + + + +DTCSeverityAvailabilityMask + + +DTCSeverityAvailabilityMask + + + +DTCFormatIdentifier + + +DTCFormatIdentifier + + + +DTCFormatIdentifier + + +DTCFormatIdentifier + + + + + +ListOfData + + +ListOfData + + +DTCSeverity + + +DTCSeverity + + + +DTC + + +DTC + + + +StatusOfDtc + + +StatusOfDtc + + + + + +RDI_RDTCBSMR-NR + + +RDI_RDTCBSMR_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($19) ReadDtcInformation - Report WWH-OBD DTC with permanent status + + +_19_ReadDtcInformation_Report_WWH_OBD_DTC_with_permanent_status + + +RDI_RDTCBSMR-RQ + + +RDI_RDTCBSMR_RQ + + +SID-RQ + + +SID_RQ + + + +ReportWWHOBDTCWithPermanentStatus + + +ReportWWHOBDTCWithPermanentStatus + + + +FunctionalGroupID + + +FunctionalGroupID + + + + +RDI_RDTCBSMR-PR + + +RDI_RDTCBSMR_PR + + +SID-PR + + +SID_PR + + + +ReportWWHOBDTCWithPermanentStatus + + +ReportWWHOBDTCWithPermanentStatus + + + +FunctionalGroupID + + +FunctionalGroupID + + + +DTCStatusAvailabilityMask + + +DTCStatusAvailabilityMask + + + +DTCFormatIdentifier + + +DTCFormatIdentifier + + + +DTCFormatIdentifier + + +DTCFormatIdentifier + + + + + +ListOfData + + +ListOfData + + +DTC + + +DTC + + + +StatusOfDtc + + +StatusOfDtc + + + + + +RDI_RDTCBSMR-NR + + +RDI_RDTCBSMR_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($2A) ReadDataByPeriodicIdentifier - SendAtFastRate (Dynamically Defined) + + +_2A_RDBPI_Dynamically_Defined_SendAtFastRate + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TransmissionMode + + +TransmissionMode + + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + + +Positive Response + + +Pos + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2A) ReadDataByPeriodicIdentifier - SendAtMediumRate (Dynamically Defined) + + +_2A_RDBPI_Dynamically_Defined_SendAtMediu + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TransmissionMode + + +TransmissionMode + + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + + +Positive Response + + +Pos + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($2A) ReadDataByPeriodicIdentifier - SendAtSlowRate (Dynamically Defined) + + +_2A_RDBPI_Dynamically_Defined_SendAtSlowRate + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TransmissionMode + + +TransmissionMode + + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + + +Positive Response + + +Pos + + +PeriodicDataIdentifier + + +PeriodicDataIdentifier + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($24) ReadScalingDataByIdentifier + + +Rsdbi + + +Rsdbi-RQ + + +Rsdbi_RQ + + +SID-RQ + + +SID_RQ + + + +Identifier + + +Identifier + + + + +Rsdbi-PR + + +Rsdbi_PR + + +SID-PR + + +SID_PR + + + +Identifier + + +Identifier + + + +Scaling data + + +Scaling_data + + + + +Rsdbi-NR + + +Rsdbi_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +Response Code + + +RC + + + + + + + + + + +($86) ResponseOnEvent - stopResponseOnEvent + + +_86_ResponseOnEvent_stopResponseOnEvent + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +EventType + + +EventType + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +EventType + + +EventType + + + +numberOfIdentifiedEvents + + +numberOfIdentifiedEvents + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($86) ResponseOnEvent - onDTCStatusChange + + +_86_ResponseOnEvent_onDTCStatusChange + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +EventType + + +EventType + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + +EventTypeRecord + + +EventTypeRecord + + + +ServiceToRespondTo (ServiceId) + + +ServiceToRespondTo_ServiceId + + + +ServiceToRespondTo (ReportDTCByStatusMask) + + +ServiceToRespondTo_ReportDTCByStatusMask + + + +ServiceToRespondTo(DTCStatusMask) + + +ServiceToRespondTo_DTCStatusMask + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +EventType + + +EventType + + + +numberOfIdentifiedEvents + + +numberOfIdentifiedEvents + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + +EventTypeRecord + + +EventTypeRecord + + + +ServiceToRespondTo (ServiceId) + + +ServiceToRespondTo_ServiceId + + + +ServiceToRespondTo (ReportDTCByStatusMask) + + +ServiceToRespondTo_ReportDTCByStatusMask + + + +ServiceToRespondTo(DTCStatusMask) + + +ServiceToRespondTo_DTCStatusMask + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($86) ResponseOnEvent - reportActivatedEvents + + +_86_ResponseOnEvent_reportActivatedEvents + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +EventType + + +EventType + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +EventType + + +EventType + + + +numberOfIdentifiedEvents + + +numberOfIdentifiedEvents + + + +ActiveEvents + + +ActiveEvents + + +EventType + + +EventType + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + +EventTypeRecord + + +EventTypeRecord + + + +SID-RQ-ReadDTCInformation + + +SID_RQ_ReadDTCInformation + + + +ReadDTCByStatusMask + + +ReadDTCByStatusMask + + + +DTCStatusMask + + +DTCStatusMask + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($86) ResponseOnEvent - startResponseOnEvent + + +_86_ResponseOnEvent_startResponseOnEvent + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +EventType + + +EventType + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +EventType + + +EventType + + + +numberOfIdentifiedEvents + + +numberOfIdentifiedEvents + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($86) ResponseOnEvent - clearResponseOnEvent + + +_86_ResponseOnEvent_clearResponseOnEvent + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +EventType + + +EventType + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +EventType + + +EventType + + + +numberOfIdentifiedEvents + + +numberOfIdentifiedEvents + + + +EventWindowTime + + +EventWindowTime + + + +EventWindowTime + + +EventWindowTime + + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + +($87) LinkControl - Transition baudrate + + +_87_LinkControl_Transition_baudrate + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +linkControlType + + +linkControlType + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +linkControlType + + +linkControlType + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($87) LinkControl - Verify with fixed baudrate + + +_87_LinkControl_Verify_with_fixed_baudrate + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +linkControlType + + +linkControlType + + + +baudrateIdentifier + + +baudrateIdentifier + + + +baudrateIdentifier + + +baudrateIdentifier + + + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +linkControlType + + +linkControlType + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($87) LinkControl - Verify with specific baudrate + + +_87_LinkControl_Verify_with_specific_baudrate + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +linkControlType] + + +linkControlType + + + +linkRecord + + +linkRecord + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +linkControlType + + +linkControlType + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($28) CommunicationControl - EnhancedAddressInformation + + +_28_CommunicationControl_EnhancedAddressInformation + + +CC-RQ + + +CC_RQ + + +SID-RQ + + +SID_RQ + + + +Type + + +ControlType + + + +CommunicationType + + +CommunicationType + + + +NodeIdentificationNumber + + +NodeIdentificationNumber + + + + +CC-PR + + +CC_PR + + +SID-PR + + +SID_PR + + + +Type + + +ControlType + + + + +CC-NR + + +CC_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($01) RequestCurrentPowertrainDiagnosticData - ReadPIDData + + + +The purpose of the service, RequestCurrentPowertrainDiagnosticData ($01), is to provide access to emission-related data values, including analog inputs and outputs, digital inputs and outputs, and system status information. It is required to retrieve the supported PIDs as well as to retrieved the actual data. +Note, it is possible to send up to six PID requests in one request message. + + +_01_RequestCurrentPowertrainDiagnosticData_ReadPIDData + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +PID + + + +The PIDs $00, $20, $40, $60, $80, $A0, $C0, $E0 result in a response that contains the supported PIDs in the respective range (e.g. $40 -> response describes the PIDs in range $41-$60. +Note, in this case one PID is mandatory and at most 6 PIDs are allowed. +Each other PID results in a response that contains the corresponding PID data (e.g. $14 -> response has two bytes the Bank1-Sensor1 Oxygen Sensor Output Voltage and Short-Term Fuel Trim). +Note, in this case also one PID is mandatory and at most 6 PIDs are allowed. + + +PID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +PID + + + +The response contains either an echo of the range PID or an echo of the supported PID for which data were requested. + + +PID + + + +Supported PIDs or PID Data + + +Supported_PIDs_or_PID_Data + + + + + +($01) RequestCurrentPowertrainDiagnosticData - ReadSupportedPIDs + + + +The purpose of the service, RequestCurrentPowertrainDiagnosticData ($01), is to provide access to emission-related data values, including analog inputs and outputs, digital inputs and outputs, and system status information. It is required to retrieve the supported PIDs as well as to retrieved the actual data. +Note, it is possible to send up to six PID requests in one request message. + + +_01_RequestCurrentPowertrainDiagnosticData_ReadSupportedPIDs + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +PID + + + +The PIDs $00, $20, $40, $60, $80, $A0, $C0, $E0 result in a response that contains the supported PIDs in the respective range (e.g. $40 -> response describes the PIDs in range $41-$60. +Note, in this case one PID is mandatory and at most 6 PIDs are allowed. +Each other PID results in a response that contains the corresponding PID data (e.g. $14 -> response has two bytes the Bank1-Sensor1 Oxygen Sensor Output Voltage and Short-Term Fuel Trim). +Note, in this case also one PID is mandatory and at most 6 PIDs are allowed. + + +PID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +PID + + + +The response contains either an echo of the range PID or an echo of the supported PID for which data were requested. + + +PID + + + +Supported PIDs or PID Data + + +Supported_PIDs_or_PID_Data + + + + + +($02) RequestPowertrainFreezeFrameData - ReadPIDData + + + +The purpose of the service, RequestPowertrainFreezeFrameData ($02), is to provide access to emission-related data values in a freeze frame. +Note, it is possible to send up to six PID requests in one request message. + + +_02_RequestPowertrainFreezeFrameData_ReadPIDData + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +PID + + + +The PIDs $00, $20, $40, $60, $80, $A0, $C0, $E0 result in a response that contains the supported PIDs in the respective range for a specific Freeze Frame (e.g. $40 -> response describes the PIDs in range $41-$60. +Note, in this case one PID is mandatory and at most 3 PIDs are allowed. +Each other PID results in a response that contains the corresponding PID data for specific Freeze Frame (e.g. $14 -> response has two bytes the Bank1-Sensor1 Oxygen Sensor Output Voltage and Short-Term Fuel Trim). +Note, in this case one PID is mandatory and at most 3 PIDs are allowed. + + +PID + + + +FrameNumber + + +FrameNumber + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +PID + + + +The response contains either the supported PIDs for the requested PID range or the PID data for a requested PID - in respect of the Freeze Frame. + + +PID + + + +FrameNumber + + +FrameNumber + + + +Supported PIDs or PID Data + + +Supported_PIDs_or_PID_Data + + + + + +($02) RequestPowertrainFreezeFrameData - ReadSupportedPIDs + + + +The purpose of the service, RequestPowertrainFreezeFrameData ($02), is to provide access to emission-related data values in a freeze frame. +Note, it is possible to send up to six PID requests in one request message. + + +_02_RequestPowertrainFreezeFrameData_ReadSupportedPIDs + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +PID + + + +The PIDs $00, $20, $40, $60, $80, $A0, $C0, $E0 result in a response that contains the supported PIDs in the respective range for a specific Freeze Frame (e.g. $40 -> response describes the PIDs in range $41-$60. +Note, in this case one PID is mandatory and at most 3 PIDs are allowed. +Each other PID results in a response that contains the corresponding PID data for specific Freeze Frame (e.g. $14 -> response has two bytes the Bank1-Sensor1 Oxygen Sensor Output Voltage and Short-Term Fuel Trim). +Note, in this case one PID is mandatory and at most 3 PIDs are allowed. + + +PID + + + +FrameNumber + + +FrameNumber + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +PID + + + +The response contains either the supported PIDs for the requested PID range or the PID data for a requested PID - in respect of the Freeze Frame. + + +PID + + + +FrameNumber + + +FrameNumber + + + +Supported PIDs or PID Data + + +Supported_PIDs_or_PID_Data + + + + + +($03) RequestEmissionRelatedPowertrainDTCs + + + +The purpose of the service is to enable external test equipment to obtain stored emission-related powertrain DTCs + + +_03_RequestEmissionRelatedPowertrainDTCs + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Number Of DTC + + +Number_Of_DTC + + + +List of DTC and DTC Status + + +List_of_DTC_and_DTC_Status + + +DTC + + +DTC + + + + + + +($04) ClearEmissionRelatedDiagInfo + + + +The purpose of the service, ClearEmissionRelatedDiagInfo ($04), is to provide a means for the external test equipment to command ECUs to clear all emission-related diagnostic information. + + +_04_ClearEmissionRelatedDiagInfo + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + +($06) RequestOnboardMonitoringTestResult - ReadOBDMIDData + + + +The purpose of this service is to provide access to the results for on-board diagnostic monitoring tests of specific components/systems that are continuously monitored (e.g. misfire monitoring) and non-continuously monitored (e.g. catalyst systems). + + +_06_RequestOnboardMonitoringTestResult_ReadOBDMIDData + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +OBDMID + + + +The OBDMIDs $00, $20, $40, $60, $80, $A0, $C0, $E0 result in a response that contains the supported OBDMIDs in the respective range. (e.g. $40 -> response describes the PIDs in range $41-$60. +Note, in this case one OBDMID is mandatory and at most 6 OBDMIDs are allowed. +Each other OBDMID results in a response that contains the corresponding OBDMID data (e.g. $03 -> response contains info about Oxygen Sensor Monitor Bank1-Sensor3). +Note, in this case exactly 1 OBDMID is required/allowed. + + +OBDMID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +OBDMID + + + +Request's OBDMID echo + + +OBDMID + + + +Data + + + +The response contains either the supported OBDMIDs for the requested OBDMID range (in case of a request with the OBDMIDs $00, $20, $40, ...) or the Test ID value structures for the supported TIDs (in case of a request with the OBDMIDs $01, $02, ...). + + +Data + + + + + +($06) RequestOnboardMonitoringTestResult - ReadSupportedOBDMID + + + +The purpose of this service is to provide access to the results for on-board diagnostic monitoring tests of specific components/systems that are continuously monitored (e.g. misfire monitoring) and non-continuously monitored (e.g. catalyst systems). + + +_06_RequestOnboardMonitoringTestResult_ReadSupportedOBDMID + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +OBDMID + + + +The OBDMIDs $00, $20, $40, $60, $80, $A0, $C0, $E0 result in a response that contains the supported OBDMIDs in the respective range. (e.g. $40 -> response describes the PIDs in range $41-$60. +Note, in this case one OBDMID is mandatory and at most 6 OBDMIDs are allowed. +Each other OBDMID results in a response that contains the corresponding OBDMID data (e.g. $03 -> response contains info about Oxygen Sensor Monitor Bank1-Sensor3). +Note, in this case exactly 1 OBDMID is required/allowed. + + +OBDMID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +OBDMID + + + +Request's OBDMID echo + + +OBDMID + + + +Data + + + +The response contains either the supported OBDMIDs for the requested OBDMID range (in case of a request with the OBDMIDs $00, $20, $40, ...) or the Test ID value structures for the supported TIDs (in case of a request with the OBDMIDs $01, $02, ...). + + +Data + + + + + +($07) RequestEmissionRelatedDTCsDetectedDuringCurrentOrLastCompletedCycle + + + +The purpose of this service is to enable the external test equipment to obtain "pending" diagnostic trouble codes detected during current or last completed driving cycle for emission-related components / systems that are tested or continuously monitored during normal driving conditions (assist service technician after a vehicle repair, and after clearing diagnostic information, by reporting test results after a single driving cycle) + + +_07_RequestEmissionDTCsDetectedDuringCurrentOrLastCompletedCycle + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Number of DTC + + +Number_of_DTC + + + +List of DTC and DTC Status + + +List_of_DTC_and_DTC_Status + + +DTC + + +DTC + + + + + + +($08) RequestControlOfOnBoardSystemTestOrComponent - ControlTID + + + +The purpose of this service is to enable external test equipment to control the operation of an on-board system, test or component. This specific sub-service is responsible for transferring the TID data of the supported TIDs. This sub-service allows all TIDs, except of $00, $20, $40, $60, .... + + +_08_RequestControlOfOnBoardSystemTestOrComponent_ControlTID + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TID + + + +Specifies the TID for which the TID data shall be transferred. + + +TID_SPEC + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +TID + + + +Specifies the TID for which the TID data shall be transferred. + + +TID_SPEC + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + +($08) RequestControlOfOnBoardSystemTestOrComponent - ReadSupportedTIDs + + + +The purpose of this service is to enable external test equipment to control the operation of an on-board system, test or component. This specific sub-service is responsible for reading the supported TIDs. This sub-service allows TIDs such as $00, $20, $40, $60, .... + + +_08_RequestContrOfOnBoardSystemTestOrComponent_ReadSupportedTIDs + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +TID + + + +Only the TIDs $00, $20, $40, $60, $80, $A0, $C0, $E0 are allowed in this sub-service. They result in a response that contains the supported TIDs in the respective range. (e.g. $40 -> response describes the supported TIDs in range $41-$60. +Note, in this case one TID is mandatory and at most 6 TIDs are allowed per request. + + +TID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +TID + + + +Request's TID echo. + + +TID + + + +Supported TIDs + + + +This sub-service response contains the supported TIDs for the specified TID range. + + +Supported_TIDs + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + +($09) RequestVehicleInformation - ReadInfoTypeData + + + +The purpose of this service is to enable the external test equipment to request vehicle information such as "Vehicle Identification Number". + + +_09_RequestVehicleInformation_ReadInfoTypeData + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +InfoType + + + +The InfoTypes $00, $20, $40, $60, $80, $A0, $C0, $E0 result in a response that contains the supported InfoTypes in the respective range (e.g. $40 -> response describes the InfoTypes in range $41-$60. +Note, in this case one InfoType is mandatory and at most 6 InfoTypes are allowed. +Each other InfoType results in a response that contains the corresponding InfoType data. + + +InfoType + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +InfoType + + + +Echo of request InfoType. + + +InfoType + + + +InfoTypeData + + +InfoTypeData + + + + + +($09) RequestVehicleInformation - ReadSupportedInfoTypes + + + +The purpose of this service is to enable the external test equipment to request vehicle information such as "Vehicle Identification Number". + + +_09_RequestVehicleInformation_ReadSupportedInfoTypes + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +InfoType + + + +The InfoTypes $00, $20, $40, $60, $80, $A0, $C0, $E0 result in a response that contains the supported InfoTypes in the respective range (e.g. $40 -> response describes the InfoTypes in range $41-$60. +Note, in this case one InfoType is mandatory and at most 6 InfoTypes are allowed. +Each other InfoType results in a response that contains the corresponding InfoType data. + + +InfoType + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +InfoType + + + +Echo of request InfoType. + + +InfoType + + + +InfoTypeData + + +InfoTypeData + + + + + +($0A) Emission-Related DTC With Permanent Status + + + +The purpose of this service is to enable the external test equipment to obtain all DTCs with "permanent DTC" status. +These are DTCs that are "confirmed" and are retained in the non-volatile memory of the server until the appropriate monitor for each DTC has determined that the malfunction is no longer present and is not commanding the "MIL on" monitor for each DTC has determined that the malfunction is no longer present and is not commanding the "MIL on". + + +_0A_Emission_Related_DTC_With_Permanent_Status + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Number of DTC + + +Number_of_DTC + + + +List of DTCs with Permanent Status + + +List_of_DTCs_with_Permanent_Status + + +DTC + + +DTC + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + +($22) ReadDataByIdentifier (Infotype) + + +_22_ReadDataByIdentifier_Infotype + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Infotype_Prefix + + +Infotype_Prefix + + + +Infotype + + +Infotype + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Infotype_Prefix + + +Infotype_Prefix + + + +Infotype + + +Infotype + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($22) ReadDataByIdentifier (OBDMIDs) + + +_22_ReadDataByIdentifier_OBDMIDs + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +OBDMID_Prefix + + +OBDMID_Prefix + + + +OBDMID + + +OBDMID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +OBDMID_Prefix + + +OBDMID_Prefix + + + +OBDMID + + +OBDMID + + + +OBDMID Data + + +OBDMID_Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($22) ReadDataByIdentifier (PIDs) + + +_22_ReadDataByIdentifier_PIDs + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +PID_Prefix + + +PID_Prefix + + + +PID + + +PID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +PID_Prefix + + +PID_Prefix + + + +PID + + +PID + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($22) ReadDataByIdentifier (SupportedInfotype) + + +_22_ReadDataByIdentifier_SupportedInfotype + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Infotype_Prefix + + +Infotype_Prefix + + + +Infotype + + +Infotype + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Infotype_Prefix + + +Infotype_Prefix + + + +Infotype + + +Infotype + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($22) ReadDataByIdentifier (SupportedOBDMIDs) + + +_22_ReadDataByIdentifier_SupportedOBDMIDs + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +OBDMID_Prefix + + +OBDMID_Prefix + + + +OBDMID + + +OBDMID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +OBDMID_Prefix + + +OBDMID_Prefix + + + +OBDMID + + +OBDMID + + + +OBDMID Data + + +OBDMID_Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($22) ReadDataByIdentifier (SupportedPIDs) + + +_22_ReadDataByIdentifier_SupportedPIDs + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +PID_Prefix + + +PID_Prefix + + + +PID + + +PID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +PID_Prefix + + +PID_Prefix + + + +PID + + +PID + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($31) RoutineControl - OnBoardSystemTestOrComponent + + +_31_RoutineControl_OnBoardSystemTestOrComponent + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +StartRoutine + + +StartRoutine + + + +OBDTestIds + + +OBDTestIds + + + +RID + + +RID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +StartRoutine + + +StartRoutine + + + +OBDTestIds + + +OBDTestIds + + + +RID + + +RID + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($31) RoutineControl - ReadSupportTIDs + + +_31_RoutineControl_ReadSupportTIDs + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +StartRoutine + + +StartRoutine + + + +OBDTestIds + + +OBDTestIds + + + +RID + + +RID + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +StartRoutine + + +StartRoutine + + + +OBDTestIds + + +OBDTestIds + + + +RID + + +RID + + + +Data + + +Data + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($19) ReadDtcInformation - ReportDTCWithPermanentStatus + + +_19_ReadDtcInformation_ReportDTCWithPermanentStatus + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Subfunction + + +Subfunction + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Subfunction + + +Subfunction + + + +DTCStatusAvailabilityMask + + +DtcAvailabilityMask + + + +ListOfDTC + + +ListOfDTC + + +DTC + + +DTC + + + +StatusOfDTC + + +StatusOfDTC + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report emission OBD DTC by status mask + + +_19_ReadDtcInformation_Report_emission_OBD_DTC_by_status_mask + + +RDI_RDTCBSM-RQ + + +RDI_RDTCBSM_RQ + + +SID-RQ + + +SID_RQ + + + +ReportDtcByStatusMask + + +ReportDtcByStatusMask + + + +DTCStatusMask + + +DTCStatusMask + + + + +RDI_RDTCBSM-PR + + +RDI_RDTCBSM_PR + + +SID-PR + + +SID_PR + + + +ReportDtcByStatusMask + + +ReportDtcByStatusMask + + + +DTCStatusAvailabilityMask + + +DtcAvailabilityMask + + + +ListOfDTC + + +ListOfDTC + + +DTC + + +DTC + + + +StatusOfDTC + + +StatusOfDTC + + + + + +RDI_RDTCBSM-NR + + +RDI_RDTCBSM_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report number of emission OBD DTC by status mask + + +_19_ReadDtcInformation_Report_number_of_emission_OBD_DTC_by_stat + + +RDI_RNODTCBSM-RQ + + +RDI_RNODTCBSM_RQ + + +SID-RQ + + +SID_RQ + + + +ReportNumberOfDtcByStatusMask + + +ReportNumberOfDtcByStatusMask + + + +DTCStatusMask + + +DTCStatusMask + + + + +RDI_RNODTCBSM-PR + + +RDI_RNODTCBSM_PR + + +SID-PR + + +SID_PR + + + +ReportNumberOfDtcByStatusMask + + +ReportNumberOfDtcByStatusMask + + + +DTCStatusAvailabilityMask + + +DTCStatusAvailabilityMask + + + +DTCFormatIdentifier + + +DtcFormatIdentifier + + + +DTCCount + + +DTCCount + + + +DTCCount + + +DTCCount + + + + + + +RDI_RNODTCBSM-NR + + +RDI_RNODTCBSM_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report mirror memory DTC by status mask + + +RDI_RMMDTCBSM + + +RDI_RDTCBSM-RQ + + +RDI_RDTCBSM_RQ + + +SID-RQ + + +SID_RQ + + + +ReportMirrorMemoryDTCByStatusMask + + +ReportMirrorMemoryDTCByStatusMask + + + +DTCStatusMask + + +DTCStatusMask + + + + +RDI_RDTCBSM-PR + + +RDI_RDTCBSM_PR + + +SID-PR + + +SID_PR + + + +ReportMirrorMemoryDTCByStatusMask + + +ReportMirrorMemoryDTCByStatusMask + + + +DTCStatusAvailabilityMask + + +DtcAvailabilityMask + + + +ListOfDTC + + +ListOfDTC + + +DTC + + +DTC + + + +StatusOfDTC + + +StatusOfDTC + + + + + +RDI_RDTCBSM-NR + + +RDI_RDTCBSM_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report number of mirror memory DTC by status mask + + +RDI_RNOMMDTCBSM + + +RDI_RNODTCBSM-RQ + + +RDI_RNODTCBSM_RQ + + +SID-RQ + + +SID_RQ + + + +ReportNumberOfMirrorMemoryDTCByStatusMask + + +ReportNumberOfMirrorMemoryDTCByStatusMask + + + +DTCStatusMask + + +DTCStatusMask + + + + +RDI_RNODTCBSM-PR + + +RDI_RNODTCBSM_PR + + +SID-PR + + +SID_PR + + + +ReportNumberOfMirrorMemoryDTCByStatusMask + + +ReportNumberOfMirrorMemoryDTCByStatusMask + + + +DTCStatusAvailabilityMask + + +DTCStatusAvailabilityMask + + + +DTCFormatIdentifier + + +DtcFormatIdentifier + + + +DTCCount + + +DTCCount + + + +DTCCount + + +DTCCount + + + + + + +RDI_RNODTCBSM-NR + + +RDI_RNODTCBSM_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report mirror memory DTC extended data record by DTC number + + +RDTCI_RMMDTCEDRBDN + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +ReportMirrorMemoryDTCExtendedDataRecordByDTCNumber + + +ReportMirrorMemoryDTCExtendedDataRecordByDTCNumber + + + +DTC + + +DTC + + + +AvailableExtendedDataRecordNumbers + + +AvailableExtendedDataRecordNumbers + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +ReportMirrorMemoryDTCExtendedDataRecordByDTCNumber + + +ReportMirrorMemoryDTCExtendedDataRecordByDTCNumber + + + +DTC + + +DTC + + + +Status Of Dtc + + +Status_Of_Dtc + + + +EndOfServiceIteration + + +EndOfServiceIteration + + +ExtendedDataRecordNumber + + +ExtendedDataRecordNumber + + + +ExtendedDataRecordNumber + + +ExtendedDataRecordNumber + + + + + +ExtendedDataRecord + + +ExtendedDataRecord + + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - Report DTC snapshot record by DTC number + + +RDI_RDTCSRBDTCN + + +Req + + +Req + + +SID-RQ + + +SID_RQ + + + +ReportDTCSnapshotRecordByDTCNumber + + +ReportDTCSnapshotRecordByDTCNumber + + + +DTCMaskRecord + + +DTCMaskRecord + + + +DTCSnapshotRecordNumber + + +DTCSnapshotRecordNumber + + + + +Pos + + +Pos + + +SID-PR + + +SID_PR + + + +ReportDTCSnapshotRecordByDTCNumber + + +ReportDTCSnapshotRecordByDTCNumber + + + +DTC + + +DTC + + + +StatusOfDTC + + +StatusOfDTC + + + +ListOfDTCSnapshotRecord + + +ListOfDTCSnapshotRecord + + +DTCSnapshotRecordNumber + + +DTCSnapshotRecordNumber + + + +DTCSnapshotRecordNumberOfIdentifiers + + +DTCSnapshotRecordNumberOfIdentifiers + + + +DTCSnapshotRecordData + + +DTCSnapshotRecordData + + + + + +Neg + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($19) ReadDtcInformation - Report DTC extended data record by DTC number + + +RDI_RDTCSRBDTCN_1 + + +Req + + +Req + + +SID-RQ + + +SID_RQ + + + +ReportDTCExtendedDataRecordByDtcNumber + + +ReportDTCExtendedDataRecordByDtcNumber + + + +DTC + + +DTC + + + +DTCExtendedDataRecordNumber + + +DTCExtendedDataRecordNumber + + + + +Pos + + +Pos + + +SID-PR + + +SID_PR + + + +ReportDTCExtendedDataRecordByDtcNumber + + +ReportDTCExtendedDataRecordByDtcNumber + + + +DTC + + +DTC + + + +StatusOfDTC + + +StatusOfDTC + + + +ListOfDTCExtendedDataRecord + + +ListOfDTCExtendedDataRecord + + +DTCExtendedDataRecordNumber + + +DTCExtendedDataRecordNumber + + + +DTCExtendedDataRecordData + + +DTCExtendedDataRecordData + + + + + +Neg + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + +($19) ReadDtcInformation - ReportUserDefMemoryDTCByStatusMask + + +_19_ReadDtcInformation_ReportUserDefMemoryDTCByStatusMask + + +RDI_RDTCBSM-RQ + + +RDI_RDTCBSM_RQ + + +SID-RQ + + +SID_RQ + + + +ReportDtcByStatusMask + + +ReportDtcByStatusMask + + + +DTC Status Mask + + +DTC_Status_Mask + + + +Memory Selection + + +Memory_Selection + + + + +RDI_RDTCBSM-PR + + +RDI_RDTCBSM_PR + + +SID-PR + + +SID_PR + + + +ReportDtcByStatusMask + + +ReportDtcByStatusMask + + + +Memory Selection + + +Memory_Selection + + + +DTCAvailabilityMask + + +DTCAvailabilityMask + + + +DTCAndStatusRecord + + +DTCAndStatusRecord + + +DTCRecord + + +DTCRecord + + + +StatusOfDTC + + +StatusOfDTC + + + + + +RDI_RDTCBSM-NR + + +RDI_RDTCBSM_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +Response Code + + +RC + + + + + + + + + + +($19) ReadDtcInformation - ReportUserDefMemoryDTCSnapshotRecordByDTCNumber + + +_19_ReadDtcInformation_ReportUserDefMemoryDTCSnapshotRecordByDTCNumber + + +_19_ReadDtcInformation_ReportDtcSnapshotRecordByDtcNumber-RQ + + +_19_ReadDtcInformation_ReportDtcSnapshotRecordByDtcNumber_RQ + + +SID-RQ + + +SID_RQ + + + +ReportDtcSnapshotRecordByDtcNumber + + +ReportDtcSnapshotRecordByDtcNumber + + + +DTCRecord + + +DTCRecord + + + +DTCSnapshotRecordNumber + + +DTCSnapshotRecordNumber + + + +DTCSnapshotRecordNumber + + +DTCSnapshotRecordNumber + + + + + +Memory Selection + + +Memory_Selection + + + + +_19_ReadDtcInformation_ReportDtcSnapshotRecordByDtcNumber-PR + + +_19_ReadDtcInformation_ReportDtcSnapshotRecordByDtcNumber_PR + + +SID-PR + + +SID_PR + + + +ReportDtcSnapshotRecordByDtcNumber + + +ReportDtcSnapshotRecordByDtcNumber + + + +Memory Selection + + +Memory_Selection + + + +DTCRecord + + +DTCRecord + + + +StatusOfDtc + + +StatusOfDtc + + + +Parameter + + +Parameter + + +DTCSnapshotRecordNumber + + +DTCSnapshotRecordNumber + + + +DTCSnapshotRecordNumber + + +DTCSnapshotRecordNumber + + + + + +DTCSnapshotRecordNumberOfIdentifiers + + +DTCSnapshotRecordNumberOfIdentifiers + + + +DTCSnapshotRecordNumberOfIdentifiers + + +DTCSnapshotRecordNumberOfIdentifiers + + + + + +DTCSnapshotRecord + + +DTCSnapshotRecord + + + + + +_19_ReadDtcInformation_ReportDtcSnapshotRecordByDtcNumber-NR + + +_19_ReadDtcInformation_ReportDtcSnapshotRecordByDtcNumber_NR + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + +($19) ReadDtcInformation - ReportUserDefMemoryDTCExtendedDataRecordByDTCNumber + + +_19_ReadDtcInformation_ReportUserDefMemoryDTCExtendedDataRecordByDTCNumber + + +RDI_RDTCEDRBDN-RQ + + +RDI_RDTCEDRBDN_RQ + + +SID-RQ + + +SID_RQ + + + +ReportDtcExtendedDataRecordByDtcNumber + + +ReportDtcExtendedDataRecordByDtcNumber + + + +DTCRecord + + +DTCRecord + + + +DTCExtendedDataRecordNumber + + +DTCExtendedDataRecordNumber + + + +Memory Selection + + +Memory_Selection + + + + +RDI_RDTCEDRBDN-PR + + +RDI_RDTCEDRBDN_PR + + +SID-PR + + +SID_PR + + + +ReportDtcExtendedDataRecordByDtcNumber + + +ReportDtcExtendedDataRecordByDtcNumber + + + +Memory Selection + + +Memory_Selection + + + +DTCRecord + + +DTCRecord + + + +StatusOfDtc + + +StatusOfDtc + + + +ListOfExtendedDataRecords + + +ListOfExtendedDataRecords + + +ExtDataRecordList + + +ExtDataRecordList + + + +ExtendedDataRecordNumber + + +ExtendedDataRecordNumber + + + + + +DTCExtendedDataRecord + + +DTCExtendedDataRecord + + + + + +RDI_RDTCEDRBDN-NR + + +RDI_RDTCEDRBDN_NR + + +SID-NR + + +SID_NR + + + +SIDRQ-NR + + +SIDRQ_NR + + + +Response Code + + +RC + + + + + + + + + + +($38) Request File Transfer - Add File + + +_38_Request_File_Transfer_Add_File + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Mode of Operation + + +Mode_of_Operation + + + +File Path and Name + + +File_Path_and_Name + + + +Data Format Identifier + + +Data_Format_Identifier + + + +File Size + + +File_Size + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Mode of Operation + + +Mode_of_Operation + + + +Variable Size Block Length + + +Variable_Size_Block_Length + + + +Data Format Identifier + + +Data_Format_Identifier + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($38) Request File Transfer - Delete File + + +_38_Request_File_Transfer_Delete_File + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Mode of Operation + + +Mode_of_Operation + + + +File Path and Name + + +File_Path_and_Name + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Mode of Operation + + +Mode_of_Operation + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($38) Request File Transfer - Replace File + + +_38_Request_File_Transfer_Replace_File + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Mode of Operation + + +Mode_of_Operation + + + +File Path and Name + + +File_Path_and_Name + + + +Data Format Identifier + + +Data_Format_Identifier + + + +File Size + + +File_Size + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Mode of Operation + + +Mode_of_Operation + + + +Variable Size Block Length + + +Variable_Size_Block_Length + + + +Data Format Identifier + + +Data_Format_Identifier + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($38) Request File Transfer - Read File + + +_38_Request_File_Transfer_Read_File + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Mode of Operation + + +Mode_of_Operation + + + +File Path and Name + + +File_Path_and_Name + + + +Data Format Identifier + + +Data_Format_Identifier + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Mode of Operation + + +Mode_of_Operation + + + +Variable Size Block Length + + +Variable_Size_Block_Length + + + +Data Format Identifier + + +Data_Format_Identifier + + + +File Size + + +File_Size + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + +($38) Request File Transfer - Read Dir + + +_38_Request_File_Transfer_Read_Dir + + +Request + + +Req + + +SID-RQ + + +SID_RQ + + + +Mode of Operation + + +Mode_of_Operation + + + +File Path and Name + + + +Dir + + +File_Path_and_Name + + + + +Positive Response + + +Pos + + +SID-PR + + +SID_PR + + + +Mode of Operation + + +Mode_of_Operation + + + +Variable Size Block Length + + +Variable_Size_Block_Length + + + +Data Format Identifier + + +Data_Format_Identifier + + + +Dir Info + + +Dir_Info + + + + +Negative Response + + +Neg + + +SID-NR + + +SID_NR + + + +SID-RQ-NR + + +SID_RQ_NR + + + +RESPONSE CODE + + +RC + + + + + + + + + + + + + + +Sessions + + + +This Diagnostic Class is describing the use case of the Session Management. + + +Sessions + + +Start + + +Start + + + +DiagnosticSessionType + + +DiagSessionType + + + + + +Start NR + + +Start_NR + + + + +SessionParameterRecord + + +SessionParameterRecord + + + + + +Ecu Reset + + +Ecu_Reset + + +Reset + + +Reset + + + +Type + + +ResetType + + + + + +Reset + + +Reset + + + + +PowerDownTime + + +PowerDownTime + + + + + +Security Access + + +SecurityAccess + + +Request + + +Request + + + +Send + + +Send + + + +Type + + +SecurityAccessType + + + + + + + +Seed + + +Seed + + + + +Key + + +Key + + + + +Anfordern + + +Request + + + + +Senden + + +Send + + + + +Security Access Data Record + + +Security_Access_Data_Record + + + + + +Communication Control + + +Communication_Control + + +Control + + +Control + + + +Type + + +ControlType + + + + + +CommunicationType + + +CommunicationType + + + + +Control + + +Control + + + + + +Communication Control - EnhancedAddressInformation + + +Communication_Control_EnhancedAddressInformation + + +Control + + +Control + + + +Type + + +ControlType + + + + + +CommunicationType + + +CommunicationType + + + + +NodeIdentificationNumber + + +NodeIdentificationNumber + + + + +Control + + +Control + + + + + +Tester Present + + +TesterPresent + + +Send + + +Send + + + +Senden + + +Send + + + + + +Control DTC Setting + + +ControlDTCSetting + + +On + + +On + + + +Off + + +Off + + + +New Service 1 + + +New_Service_1 + + + + +New Service 2 + + +New_Service_2 + + + + +DTCSettingControlOptionRecord + + +DTCSCOR_ + + + + + + +Response on Event + + +Response_on_Event + + +On DTC Status Change + + +On_DTC_Status_Change + + + +Report Activated Events + + +Report_Activated_Events + + + +Start + + +Start + + + +Stop + + +Stop + + + +Clear + + +Clear + + + +EventTypeRecord + + +EventTypeRecord + + + + + + +DTC StatusMask + + +ServiceToRespondTo_DTCStatusMask + + + + + +On DTC Status Change + + +On_DTC_Status_Change + + + + +Report Activated Events + + +Report_Activated_Events + + + + +Start + + +Start + + + + +Stop + + +Stop + + + + +Clear + + +Clear + + + + + +LinkControl + + +LinkControl + + +Transition + + +Transition + + + +Verify fixed + + +Verify_fixed + + + +Verify specific + + +Verify_specific + + + +Verify fixed + + +Verify_fixed + + + + +linkRecord + + +linkRecord + + + + +Verify specific + + +Verify_specific + + + + +Transition + + +Transition + + + + + +ECU Identification + + +ECU_Identification + + +Read + + +Read + + + +Write + + +Write + + + +Get Scaling + + +Get_Scaling + + + +Identifier + + +RecordDataIdentifier + + + + + + + + + +DataRecord + + +DataRecord + + + + + +Read + + +Read + + + + +Write + + +Write + + + + +Scaling data + + +Scaling_data + + + + +Get Scaling + + +Get_Scaling + + + + + +Variant Coding + + +Variant_Coding + + +Read + + +Read + + + +Write + + +Write + + + +Identifier + + +RecordDataIdentifier + + + + + + + +DataRecord + + +DataRecord + + + + + +Read + + +Read + + + + +Write + + +Write + + + + + +Stored Data + + +Stored_Data + + +Read + + +Read + + + +Write + + +Write + + + +Get Scaling + + +Get_Scaling + + + +Identifier + + +RecordDataIdentifier + + + + + + + + + +DataRecord + + +DataRecord + + + + + +Read + + +Read + + + + +Write + + +Write + + + + +Scaling data + + +Scaling_data + + + + +Get Scaling + + +Get_Scaling + + + + + +Dynamic Data + + +Dynamic_Data + + +Read + + +Read + + + +Get Scaling + + +Get_Scaling + + + +Identifier + + +RecordDataIdentifier + + + + + + + +DataRecord + + +DataRecord + + + + +Read + + +Read + + + + +Scaling data + + +Scaling_data + + + + +Get Scaling + + +Get_Scaling + + + + + +Periodic Data + + +Periodic_Data + + +Send once + + +Send_once + + + +Send slow + + +Send_slow + + + +Send medium + + +Send_medium + + + +Send fast + + +Send_fast + + + +Stop + + +Stop + + + +Stop all + + +Stop_all + + + +Identifier + + +Identifier + + + + + + + + + + + + +Send fast + + +Send_fast + + + + +Send slow + + +Send_slow + + + + +Send medium + + +Send_medium + + + + +Stop + + +Stop + + + + +Stop all + + +Stop_all + + + + +DataRecord + + +Data + + + + + + + +Send once + + +Send_once + + + + + +Dynamically Define Periodic Data + + +Dynamically_Define_Periodic_Data + + +Read + + +Read + + + +Define By Identifier + + +Define_By_Identifier + + + +Define By Address + + +Define_By_Address + + + +Clear + + +Clear + + + +ClearAll + + +ClearAll + + + +Send slow + + +Send_slow + + + +Send medium + + +Send_medium + + + +Send fast + + +Send_fast + + + +Stop + + +Stop + + + +Stop all + + +Stop_all + + + +DynamicallyDefinedIdentifier + + +DynamicallyDefinedIdentifier + + + + + + + + + + + + + + + + + + +Clear + + +Clear + + + + +Define By Identifier + + +Define_By_Identifier + + + + +Read + + +Read + + + + +Stop all + + +Stop_all + + + + +Stop + + +Stop + + + + +ClearAll + + +ClearAll + + + + +Define By Address + + +Define_By_Address + + + + +MemoryParameters + + +MemoryParameters + + + + +Send fast + + +Send_fast + + + + +Send medium + + +Send_medium + + + + +Send slow + + +Send_slow + + + + + +Dynamically Define Non-Periodic Data + + +Dynamically_Define_Non_Periodic_Data + + +Read + + +Read + + + +Define By Identifier + + +Define_By_Identifier + + + +Define By Address + + +Define_By_Address + + + +Clear + + +Clear + + + +ClearAll + + +ClearAll + + + +Identifier + + +Identifier + + + + + + + + + + + +Read + + +Read + + + + +Clear + + +Clear + + + + +Define By Identifier + + +Define_By_Identifier + + + + +ClearAll + + +ClearAll + + + + +Define By Address + + +Define_By_Address + + + + +MemoryAddressAndSize + + +MemoryAddressAndSize + + + + + +IO Control + + +IOControl + + +Read + + +Read + + + +ReturnControl + + +ReturnControl + + + +Reset + + +Reset + + + +Freeze + + +Freeze + + + +Control + + +Control + + + +Identifier + + +DataIdentifier + + + + + + + + + + + + + +Control States + + +Data + + + + + + + + + +Read + + +Read + + + + +ReturnControl + + +ReturnControl + + + + +Reset + + +Reset + + + + +Freeze + + +Freeze + + + + +Control + + +Control + + + + +ControlEnableMaskRecord + + +ControlEnableMaskRecord_3 + + + + + + + + +Routine Control + + +Routine_Control + + +Start + + +Start + + + +Stop + + +Stop + + + +Request Results + + +RequestResults + + + +Identifier + + +RoutineIdentifier + + + + + + + + + +Control Options (Start) + + +StartOptions + + + + +Status (Start) + + +StartStatus + + + + +Control Options (Stop) + + +StopOptions + + + + +Status (Stop) + + +StopStatus + + + + +Results + + +Results + + + + +Start NR + + +Start_NR + + + + +Stop NR + + +Stop_NR + + + + +Request Results NR + + +RequestResults_NR + + + + + +Memory + + +Memory + + +Read + + +Read + + + +Write + + +Write + + + +DataRecord + + +DataRecord + + + + +Read + + +Read + + + + +Write + + +Write + + + + + +Fault Memory + + +FaultMemory + + +Read - number of DTCs + + +ReadNumber + + + +Read - DTCs by status mask + + +ReadAllIdentified + + + +Read - extended data record + + +Read_extended_data_record + + + +Read - snapshot record + + +Read_snapshot_record + + + +Read - snapshot ID + + +Read_snapshot_ID + + + +Read - snapshot by record number + + +Read_snapshot_by_record_number + + + +Read - number of DTCs by severity + + +Read_number_of_DTCs_by_severity + + + +Read - DTCs by severity + + +Read_DTCs_by_severity + + + +Read - severity information + + +Read_severity_information + + + +Read - supported DTCs + + +ReadAllSupported + + + +Read - first test failed DTC + + +Read_first_test_failed_DTC + + + +Read - first confirmed DTC + + +Read_first_confirmed_DTC + + + +Read - most recent test failed DTC + + +Read_most_recent_test_failed_DTC + + + +Read - most recent confirmed DTC + + +Read_most_recent_confirmed_DTC + + + +Read -Mirror memory DTCs by status mask + + +Read_Mirror_memory_DTCs_by_status_mask + + + +Read - Mirror memory extended record + + +Read_Mirror_memory_extended_record + + + +Read - number of mirror memory DTCs + + +Read_number_of_mirror_memory_DTCs + + + +Read - number emission DTCs + + +Read_number_emission_DTCs + + + +Read - identified emission DTCs + + +Read_identified_emission_DTCs + + + +Read - fault detection counter + + +Read_fault_detection_counter + + + +Read - permanent DTCs + + +Read_permanent_DTCs + + + +Clear DTC + + +Clear + + + +Format Identifier + + +FormatIdentifier + + + + + + + +Read - DTCs by status mask + + +ReadAllIdentified + + + + +Read - number of DTCs + + +ReadNumber + + + + +Read - supported DTCs + + +ReadAllSupported + + + + +GroupOfDtc + + +GroupOfDtc + + + + +Clear DTC + + +Clear + + + + +Read - DTCs by severity + + +Read_DTCs_by_severity + + + + +DTCSeverity + + +DtcSeverity + + + + + +Read - number of DTCs by severity + + +Read_number_of_DTCs_by_severity + + + + +Read - severity information + + +Read_severity_information + + + + +Read - most recent confirmed DTC + + +Read_most_recent_confirmed_DTC + + + + +Read - first confirmed DTC + + +Read_first_confirmed_DTC + + + + +Read - fault detection counter + + +Read_fault_detection_counter + + + + +DTC Table + + +DTC + + + + + + + + + + + + + + + + + + + + + + + + +Read - snapshot ID + + +Read_snapshot_ID + + + + +DtcStatusMask + + +DtcStatusMask + + + + + + + + + + + + + +DtcStatusAvailabilityMask + + +DtcStatusAvailabilityMask_1 + + + + + + + + + + + + + + + + + + +StatusOfDtc + + +StatusOfDtc_2 + + + + + + + + + + + + + + + + +Read - first test failed DTC + + +Read_first_test_failed_DTC + + + + +Read - most recent test failed DTC + + +Read_most_recent_test_failed_DTC + + + + +ExtendedDataRecord + + +ExtendedDataRecord + + + + +DTCFunctionalUnit + + +DTCFunctionalUnit + + + + + +SnapshotRecordData + + +SnapshotRecordData + + + + +Read - snapshot by record number + + +Read_snapshot_by_record_number + + + + +AvailableExtendedDataRecordNumbers + + +AvailableExtendedDataRecordNumbers + + + + +DTCSeverityMask + + +DtcSeverityMask + + + + + +Read - permanent DTCs + + +Read_permanent_DTCs + + + + +Read - identified emission DTCs + + +Read_identified_emission_DTCs + + + + +Read - number emission DTCs + + +Read_number_emission_DTCs + + + + +Read -Mirror memory DTCs by status mask + + +Read_Mirror_memory_DTCs_by_status_mask + + + + +Read - Mirror memory extended record + + +Read_Mirror_memory_extended_record + + + + +Read - number of mirror memory DTCs + + +Read_number_of_mirror_memory_DTCs + + + + +Read - snapshot record + + +Read_snapshot_record + + + + +Read - extended data record + + +Read_extended_data_record + + + + + +User Defined Fault Memories + + +User_Defined_Fault_Memories + + +Read by Status Mask + + +Read_by_Status_Mask + + + +Read Snapshots + + +Read_Snapshots + + + +Read Extended Data Records + + +Read_Extended_Data_Records + + + +Memory Selection + + +Memory_Selection + + + + + + + + + +DTC Status Mask + + +DTC_Status_Mask + + + + + + +DTCRecord + + +DTCRecord + + + + + + + + +Read by Status Mask + + +Read_by_Status_Mask + + + + +DTCSnapshotRecord + + +DTCSnapshotRecord + + + + +Read Snapshots + + +Read_Snapshots + + + + +DTCExtendedDataRecordNumber + + +DTCExtendedDataRecordNumber + + + + +DTCExtendedDataRecord + + +DTCExtendedDataRecord + + + + +Read Extended Data Records + + +Read_Extended_Data_Records + + + + +DTCAvailabilityMask + + +DTCAvailabilityMask + + + + +StatusOfDTC + + +StatusOfDTC + + + + + +Upload/Download + + +Upload_Download + + +RequestDownload + + +RequestDownload + + + +RequestUpload + + +RequestUpload + + + +Transmit + + +Transmit + + + +Stop + + +Stop + + + +DataFormatIdentifier + + +DFI_ + + + + + +LengthFormatIdentifier + + +LFID + + + + + +MaxNumberOfBlockLength + + +MNROB_ + + + + + +RequestDownload + + +RequestDownload + + + + +RequestParameter + + +TRPR_ + + + + +ResponseParameter + + +TREPR_ + + + + +Stop + + +Stop + + + + +RequestUpload + + +RequestUpload + + + + +Transmit + + +Transmit + + + + + +File Transfer + + +File_Transfer + + +Add + + +Add + + + +Delete + + +Delete + + + +Replace + + +Replace + + + +Read + + +Read + + + +Read Dir + + +Read_Dir + + + +Transmit + + +Transmit + + + +Stop + + +Stop + + + +Transmit + + +Transmit + + + + +RequestParameter + + +TRPR_ + + + + +ResponseParameter + + +TREPR_ + + + + +Stop + + +Stop + + + + +Delete + + +Delete + + + + +File Path and Name + + +File_Path_and_Name_1 + + + + + + + + +Data Format Identifier + + +Data_Format_Identifier_1 + + + + + + + + + + +File Size + + +File_Size_1 + + + + + + +Block Length + + +Variable_Size_Block_Length + + + + + + + +Add + + +Add + + + + +Replace + + +Replace + + + + +Read + + +Read + + + + +Dir Info + + +Dir_Info + + + + +Read Dir + + +Read_Dir + + + + + +Powertrain Diagnostic and Freeze Frame Data + + +Powertrain_Diagnostic_and_Freeze_Frame_Data + + +Read Supported PID (OBD) + + +Read_Supported_PID_OBD + + + +Read PID (OBD) + + +Read_PID_OBD + + + +Read Supported Freeze Frame PID + + +Read_Supported_Freeze_Frame_PID + + + +Read Freeze Frame PID Data + + +Read_Freeze_Frame_PID_Data + + + +Read Supported PID (UDS) + + +Read_Supported_PID_UDS + + + +Read PID (UDS) + + +Read_PID_UDS + + + +PID + + +PID + + + + + + + + + + + + + + + +Supported OBD PIDs + + +Supported_PIDs_or_PID_Data + + + + +PID Data + + +Supported_PIDs_or_PID_Data_1 + + + + + + +Supported OBD FreezeFrame PIDs + + +Supported_PIDs_or_PID_Data_2 + + + + +Supported UDS PIDs + + +Data + + + + +Read Supported PID (UDS) + + +Read_Supported_PID_UDS + + + + +Read PID (UDS) + + +Read_PID_UDS + + + + + +Emission-related Trouble Codes + + +Emission_related_Trouble_Codes + + +Read (Powertrain) + + +Read_Powertrain + + + +Read (detection time dependent) + + +Read_detection_time_dependent + + + +Read (Permanent Status) + + +Read_Permanent_Status + + + +Clear/Reset + + +Clear_Reset + + + +OBD DTC Table + + +DTC + + + + + + +Read (Permanent Status) + + +Read_Permanent_Status + + + + +Clear/Reset + + +Clear_Reset + + + + + +Onboard Monitoring Test Results for Specific Monitored Systems + + +Onboard_Monitoring_Test_Results_for_Specific_Monitored_Systems + + +Read Supported OBDMID (OBD) + + +Read_Supported_OBDMID_OBD + + + +Read OBDMID Data (OBD) + + +Read_OBDMID_Data_OBD + + + +Read Supported OBDMID (UDS) + + +Read_Supported_OBDMID_UDS + + + +Read OBDMID Data (UDS) + + +Read_OBDMID_Data_UDS + + + +OBDMID + + +OBDMID + + + + + + + + + + + +Supported OBD IDs + + +Data + + + + +OBD ID Data + + +Data_1 + + + + +Supported UDS IDs + + +OBDMID_Data + + + + +Read Supported OBDMID (UDS) + + +Read_Supported_OBDMID_UDS + + + + +UDS ID Data + + +OBDMID_Data_1 + + + + +Read OBDMID Data (UDS) + + +Read_OBDMID_Data_UDS + + + + + +Control of Onboard Systems, Test or Control + + +Control_of_Onboard_Systems_Test_or_Control + + +Read supported TIDs (OBD) + + +Read_supported_TIDs_OBD + + + +Control TID (OBD) + + +Control_TID_OBD + + + +Read supported TIDs (UDS) + + +Read_supported_TIDs_UDS + + + +Control TID (UDS) + + +Control_TID_UDS + + + +TID + + +TID + + + + + + + + + + + +Supported TIDs + + +Supported_TIDs + + + + + +Read supported TIDs (OBD) + + +Read_supported_TIDs_OBD + + + + +Control TID (OBD) + + +Control_TID_OBD + + + + +Read supported TIDs (UDS) + + +Read_supported_TIDs_UDS + + + + +Control TID (UDS) + + +Control_TID_UDS + + + + + +Vehicle Information + + +Vehicle_Information + + +Read supported InfoTypes (OBD) + + +Read_supported_InfoTypes_OBD + + + +Read InfoType Data (OBD) + + +Read_InfoType_Data_OBD + + + +Read supported InfoTypes (UDS) + + +Read_supported_InfoTypes_UDS + + + +Read InfoType Data (UDS) + + +Read_InfoType_Data_UDS + + + +InfoType + + +InfoType + + + + + + + + + + + +Supported OBD IDs + + +InfoTypeData + + + + +InfoTypeData + + +InfoTypeData_1 + + + + + +Supported UDS IDs + + +Data + + + + +Read supported InfoTypes (UDS) + + +Read_supported_InfoTypes_UDS + + + + +Read InfoType Data (UDS) + + +Read_InfoType_Data_UDS + + + + + +Flash Jobs + + +Flash_Jobs + + + +Generic Jobs + + +Generic_Jobs + + + + + +RecordDataType + + +RecordDataType + + + + +Power Supply is OverVoltage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Power Supply is UnderVoltage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Bus Off of Body CAN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +message missing of node CddTools. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +OBDRecordDataType + + +OBDRecordDataType + + + + + + +CddTools-DoIP + + + +Notes for CANdesc Code Generation(Just a demo cdd for CddTools) + + + +The following diagnostic instance options can be configured in GENy (CANdesc) only: + +MaxAttemptsToDelay + +DelayTimeMs + +DelayTimeOnPowerOnMs + +The options are available as attributes in this file, but with category "UDS", therefore they do not take effect in GENy. + +To configure the options for GENy already in the CANdela file, use the older Vector_UDS_1.5.cddt instead. + + + +User Defined Fault Memory: + +CANdesc with Vector DEM checks the Memory Selection parameter, accepts only the first one defined in the CDD and rejects all other requests. It does not forward the Memory Selection to the Vector DEM but just asks for "SecondaryMemory". + +CANdesc without Vector DEM: it is the task of the main handler (application) to distinguish the User Defined Fault Memories. The main handler gets all parameters of the request. + + + + +CddTools_DoIP + + + + + + + + + + + +SYNCHELEMENT + + + + + +Snapshot Data + + +Snapshot_Data + + + + + +Snapshot Record 0x01 + + +Snapshot_Record_0x01 + + + + + +Extended Data Record 0x01 + + +Extended_Data_Record_0x01 + + + + + + + +Base Variant + + +Base_Variant + + + + + + + + + + + + + + + + + + + + +Sessions + + + +This Diagnostic Class describes the use case of the Session Management. + + + + +Sessions + + +Default Session + + +DefaultSession + + +Start + + +Start + + +Default Session Start + + +DefaultSession_Start + + + + + +P2 + + +P2 + + + +P2Ex + + +P2Ex + + + + + +Start NR + + +Start_NR + + + + + + + + +Programming Session + + +ProgrammingSession + + +Start + + +Start + + +Programming Session Start + + +ProgrammingSession_Start + + + + + +P2 + + +P2 + + + +P2Ex + + +P2Ex + + + + + +Start NR + + +Start_NR + + + + + + + + + +Extended Diagnostic Session + + +ExtendedDiagnosticSession + + +Start + + +Start + + +Extended Diagnostic Session Start + + +ExtendedDiagnosticSession_Start + + + + + +P2 + + +P2 + + + +P2Ex + + +P2Ex + + + + + +Start NR + + +Start_NR + + + + + + + + + +Ecu Reset + + +Ecu_Reset + + +Hard Reset + + +Hard_Reset + + +Reset + + +Reset + +Hard Reset Reset + + +Hard_Reset_Reset + + + + + + + +Reset + + +Reset + + + + + + + + + + + +Soft Reset + + +Soft_Reset + + +Reset + + +Reset + +Soft Reset Reset + + +Soft_Reset_Reset + + + + + + + +Reset + + +Reset + + + + + + + + + + + + +Security Access + + +SecurityAccess + + +RequestSeed + + + +This is the requestSeed level used for ECU programming. + +The Security Access Data Record is optional (consider using the newer 0x29 service). + +CANdesc supports it as a callout to the application. + +DCM supports it. + +Data-driven testers do not support it out of the box. + + + + +SeedLevel1 + + +Request + + +Request + +RequestSeed Request + + +SeedLevel1_Request + + + + + + + +SecuritySeed + + +SecuritySeed + + + + + +Request + + +Request + + + + + + + + +SendKey + + +KeyLevel1 + + +Send + + +Send + +SendKey Send + + +KeyLevel1_Send + + + + + +SecurityKey + + +SecurityKey + + + + + +Send + + +Send + + + + + + + + + +Communication Control + + +Communication_Control + + +EnableRxAndEnableTx + + +EnableRxAndEnableTx + + +Control + + +Control + + +EnableRxAndEnableTx Control + + +EnableRxAndEnableTx_Control + + + + + +CommunicationType + + +CommunicationType + + + + + +Control + + +Control + + + + + + + + + +EnableRxAndDisableTx + + +EnableRxAndDisableTx + + +Control + + +Control + + +EnableRxAndDisableTx Control + + +EnableRxAndDisableTx_Control + + + + + +CommunicationType + + +CommunicationType + + + + + +Control + + +Control + + + + + + + + + +DisableRxAndEnableTx + + +DisableRxAndEnableTx + + +Control + + +Control + +DisableRxAndEnableTx Control + + +DisableRxAndEnableTx_Control + + + + + +CommunicationType + + +CommunicationType + + + + + +Control + + +Control + + + + + + + + + +DisableRxAndDisableTx + + +DisableRxAndDisableTx + + +Control + + +Control + +DisableRxAndDisableTx Control + + +DisableRxAndDisableTx_Control + + + + + +CommunicationType + + +CommunicationType + + + + + +Control + + +Control + + + + + + + + + + +Tester Present + + +TesterPresent + + +Send + + +Send + + +Tester Present Send + + +TesterPresent_Send + + + + +Send + + +Send + + + + + + + +Control DTC Setting + + +ControlDTCSetting + + +On + + +On + +Control DTC Setting On + + +ControlDTCSetting_On + + + +Off + + +Off + +Control DTC Setting Off + + +ControlDTCSetting_Off + + + + + + +Negative Response Codes + + +NRC + + + + + + + +New Service 2 + + +New_Service_2 + + + + + + + + +ECU Identification + + +ECU_Identification + + +DataDiagnosticIdentifier DDI + + +DataDiagnosticIdentifier_DDI + + +Read + + +Read + +DataDiagnosticIdentifier DDI Read + + +DataDiagnosticIdentifier_DDI_Read + + + +Write + + +Write + +DataDiagnosticIdentifier DDI Write + + +DataDiagnosticIdentifier_DDI_Write + + + + + +DataDiagnosticIdentifier DDI + + +DataDiagnosticIdentifier_DDI + + + + + +Read NR + + +Read_NR + + + + + + + + +Write + + +Write + + + + + + + + + + + + +Development Data + + +DevelopmentData + + +Read + + +Read + +Development Data Read + + +DevelopmentData_Read + + + +Write + + +Write + +Development Data Write + + +DevelopmentData_Write + + + + + +Development Data + + +Development_Data + + + + + +Read NR + + +Read_NR + + + + + + + + +Write + + +Write + + + + + + + + + + + + +Boot Software + + +Boot_Software + + +Read + + +Read + +Boot Software Read + + +Boot_Software_Read + + + +Write + + +Write + +Boot Software Write + + +Boot_Software_Write + + + + + +Boot Software + + +Boot_Software + + + + + +Read NR + + +Read_NR + + + + + + + + +Write + + +Write + + + + + + + + + + + + +Spare Part Number + + +Spare_Part_Number + + +Read + + +Read + +Spare Part Number Read + + +Spare_Part_Number_Read + + + +Write + + +Write + +Spare Part Number Write + + +Spare_Part_Number_Write + + + + + +Spare Part Number + + +Spare_Part_Number + + + + + +Read NR + + +Read_NR + + + + + + + + +Write + + +Write + + + + + + + + + + + + +Serial Number + + +SerialNumber + + +Read + + +Read + +Serial Number Read + + +SerialNumber_Read + + + +Write + + +Write + +Serial Number Write + + +SerialNumber_Write + + + + + +Serial Number + + +Serial_Number + + + + + +Read NR + + +Read_NR + + + + + + + + +Write + + +Write + + + + + + + + + + + + +Ecu Identification + + +EcuIdentification + + +Read + + +Read + +Ecu Identification Read + + +EcuIdentification_Read + + + +Write + + +Write + +Ecu Identification Write + + +EcuIdentification_Write + + + + + +Ecu Identification + + +Ecu_Identification + + + + + +Read NR + + +ReadNR + + + + + + + + +Write + + +Write + + + + + + + + + + + + +Hardware Version + + +Hardware_Version + + +Read + + +Read + +Hardware Version Read + + +Hardware_Version_Read + + + +Write + + +Write + +Hardware Version Write + + +Hardware_Version_Write + + + + + +Hardware Version + + +Hardware_Version + + + + + +Read NR + + +Read_NR + + + + + + + + +Write + + +Write + + + + + + + + + + + + +Vehicle Identification + + +Vehicle_Identification + + +Read + + +Read + +Vehicle Identification Read + + +Vehicle_Identification_Read + + + +Write + + +Write + +Vehicle Identification Write + + +Vehicle_Identification_Write + + + + + +Vehicle Identification + + +Vehicle_Identification + + + + + +Read NR + + +Read_NR + + + + + + + + +Write + + +Write + + + + + + + + + + + + +ECU Serial Number + + +ECU_Serial_Number + + +Read + + +Read + +ECU Serial Number Read + + +ECU_Serial_Number_Read + + + +Write + + +Write + +ECU Serial Number Write + + +ECU_Serial_Number_Write + + + + + +ECU Serial Number + + +ECU_Serial_Number + + + + + +Read + + +Read + + + + + + + + + + + + +Write + + +Write + + + + + + + + + + + + +Vehicle Identification Number + + +Vehicle_Identification_Number + + +Read + + +Read + +Vehicle Identification Number Read + + +Vehicle_Identification_Number_Read + + + +Write + + +Write + +Vehicle Identification Number Write + + +Vehicle_Identification_Number_Write + + + + + +Vehicle Identification Number + + +Vehicle_Identification_Number + + + + + +Read + + +Read + + + + + + + + + + + + +Write + + +Write + + + + + + + + + + + + + +Variant Coding + + +Variant_Coding + + +New: Variant Coding + + +New_Variant_Coding + + +Read + + +Read + +New: Variant Coding Read + + +New_Variant_Coding_Read + + + +Write + + +Write + +New: Variant Coding Write + + +New_Variant_Coding_Write + + + + + +DID 0x0500 + + +DID_0x0500 + + + + + +Read + + +Read + + + + + + + + + + + +Write + + +Write + + + + + + + + + + + + + +Stored Data + + +Stored_Data + + +DID 0x0200 + + +DID_0x0200 + + +Read + + +Read + +DID 0x0200 Read + + +DID_0x0200_Read + + + +Write + + +Write + +DID 0x0200 Write + + +DID_0x0200_Write + + + + + +DID Data + + +DID_Data + + + + + +Read + + +Read + + + + + + + + + + + +Write + + +Write + + + + + + + + + + + + + +Dynamic Data + + +Dynamic_Data + + +DID 0x0400 + + +DID_0x0400 + + +Read + + +Read + +DID 0x0400 Read + + +DID_0x0400_Read + + + + + +DID Data + + +DID_Data + + + + + +Read + + +Read + + + + + + + + + + + + +Periodic Data + + +Periodic_Data + + +New: Periodic Data + + +New_Periodic_Data + + +Send once + + +Send_once + +New: Periodic Data Send once + + +New_Periodic_Data_Send_once + + + +Send slow + + +Send_slow + +New: Periodic Data Send slow + + +New_Periodic_Data_Send_slow + + + +Send medium + + +Send_medium + +New: Periodic Data Send medium + + +New_Periodic_Data_Send_medium + + + +Send fast + + +Send_fast + +New: Periodic Data Send fast + + +New_Periodic_Data_Send_fast + + + +Stop + + +Stop + +New: Periodic Data Stop + + +New_Periodic_Data_Stop + + + +Stop all + + +Stop_all + +New: Periodic Data Stop all + + +New_Periodic_Data_Stop_all + + + + + +DataRecord + + +DataRecord + + + + + +Send once + + +Send_once + + + + + + + +Send slow + + +Send_slow + + + + + + + +Send medium + + +Send_medium + + + + + + + +Send fast + + +Send_fast + + + + + + + +Stop + + +Stop + + + + + + + +Stop all + + +Stop_all + + + + + + + + +Dynamically Define Periodic Data + + +Dynamically_Define_Periodic_Data + + +New: Dynamically Define Periodic Data + + +New_Dynamically_Define_Periodic_Data + + +Read + + +Read + +New: Dynamically Define Periodic Data Read + + +New_Dynamically_Define_Periodic_Data_Read + + + +Define By Identifier + + +Define_By_Identifier + +New: Dynamically Define Periodic Data Define By Identifier + + +New_Dynamically_Define_Periodic_Data_Define_By_Identifier + + + +Define By Address + + +Define_By_Address + +New: Dynamically Define Periodic Data Define By Address + + +New_Dynamically_Define_Periodic_Data_Define_By_Address + + + +Clear + + +Clear + +New: Dynamically Define Periodic Data Clear + + +New_Dynamically_Define_Periodic_Data_Clear + + + +ClearAll + + +ClearAll + +New: Dynamically Define Periodic Data ClearAll + + +New_Dynamically_Define_Periodic_Data_ClearAll + + + +Send slow + + +Send_slow + +New: Dynamically Define Periodic Data Send slow + + +New_Dynamically_Define_Periodic_Data_Send_slow + + + +Send medium + + +Send_medium + +New: Dynamically Define Periodic Data Send medium + + +New_Dynamically_Define_Periodic_Data_Send_medium + + + +Send fast + + +Send_fast + +New: Dynamically Define Periodic Data Send fast + + +New_Dynamically_Define_Periodic_Data_Send_fast + + + +Stop + + +Stop + +New: Dynamically Define Periodic Data Stop + + +New_Dynamically_Define_Periodic_Data_Stop + + + +Stop all + + +Stop_all + +New: Dynamically Define Periodic Data Stop all + + +New_Dynamically_Define_Periodic_Data_Stop_all + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +(reserved) + + +_reserved + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +Read + + +Read + + + + + + + +Define By Identifier + + +Define_By_Identifier + + + + + + + +Define By Address + + +Define_By_Address + + + + + + + + + + + + +Clear + + +Clear + + + + + + + +ClearAll + + +ClearAll + + + + + + + +Send slow + + +Send_slow + + + + + + + + + + + +Send medium + + +Send_medium + + + + + + + + + + + +Send fast + + +Send_fast + + + + + + + + + + + +Stop + + +Stop + + + + + + + +Stop all + + +Stop_all + + + + + + + + +Dynamically Define Non-Periodic Data + + +Dynamically_Define_Non_Periodic_Data + + +New: Dynamically Define Non-Periodic Data + + +New_Dynamically_Define_Non_Periodic_Data + + +Read + + +Read + +New: Dynamically Define Non-Periodic Data Read + + +New_Dynamically_Define_Non_Periodic_Data_Read + + + +Define By Identifier + + +Define_By_Identifier + +New: Dynamically Define Non-Periodic Data Define By Identifier + + +New_Dynamically_Define_Non_Periodic_Data_Define_By_Identifier + + + +Define By Address + + +Define_By_Address + +New: Dynamically Define Non-Periodic Data Define By Address + + +New_Dynamically_Define_Non_Periodic_Data_Define_By_Address + + + +Clear + + +Clear + +New: Dynamically Define Non-Periodic Data Clear + + +New_Dynamically_Define_Non_Periodic_Data_Clear + + + +ClearAll + + +ClearAll + +New: Dynamically Define Non-Periodic Data ClearAll + + +New_Dynamically_Define_Non_Periodic_Data_ClearAll + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +(reserved) + + +_reserved + + + + + + +Address + + +Address + + + +Size + + +Size + + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +Read + + +Read + + + + + + + +Define By Identifier + + +Define_By_Identifier + + + + + + + +Define By Address + + +Define_By_Address + + + + + + + + + + + + +Clear + + +Clear + + + + + + + +ClearAll + + +ClearAll + + + + + + + + +IO Control + + +IOControl + + +DID 0x0300 + + +DID_0x0300 + + +Read + + +Read + +DID 0x0300 Read + + +DID_0x0300_Read + + + +ReturnControl + + +ReturnControl + +DID 0x0300 ReturnControl + + +DID_0x0300_ReturnControl + + + +Reset + + +Reset + +DID 0x0300 Reset + + +DID_0x0300_Reset + + + +Freeze + + +Freeze + +DID 0x0300 Freeze + + +DID_0x0300_Freeze + + + +Control + + +Control + +DID 0x0300 Control + + +DID_0x0300_Control + + + + + +Common Diagnostics Control States 16 + + +Common_Diagnostics_Control_States_16 + + + + + + + +Read + + +Read + + + + + + + + + + + +ReturnControl + + +ReturnControl + + + + + + + + + + + + +Reset + + +Reset + + + + + + + + + + + + +Freeze + + +Freeze + + + + + + + + + + + + +Control + + +Control + + + + + + + + + + + + + +Routine Control + + +Routine_Control + + +New: Routine Control + + +New_Routine_Control + + +Start + + +Start + +New: Routine Control Start + + +New_Routine_Control_Start + + + + + + + + + +Start NR + + +Start_NR + + + + + + + + + + + + + + + + +Memory + + +Memory + + +Read + + +Read + +Memory Read + + +Memory_Read + + + +Write + + +Write + +Memory Write + + +Memory_Write + + + + +DataRecord + + +DataRecord + + + + + +New Service 2 + + +New_Service_2 + + + + + + + + + + + +New Service 3 + + +New_Service_3 + + + + + + + + + + + + +Fault Memory + + +FaultMemory + + +Read - number of DTCs + + +ReadNumber + +Fault Memory Read (Number) + + +FaultMemory_ReadNumber + + + +Read - DTCs by status mask + + +ReadAllIdentified + +Fault Memory Read (all identified) + + +FaultMemory_ReadAllIdentified + + + +Read - extended data record + + +Read_extended_data_record + +Fault Memory Read - extended data record + + +FaultMemory_Read_extended_data_record + + + +Read - snapshot record + + +Read_snapshot_record + +Fault Memory Read - snapshot record + + +FaultMemory_Read_snapshot_record + + + +Read - snapshot ID + + +Read_snapshot_ID + +Fault Memory Read (snapshot ID) + + +FaultMemory_Read_snapshot_ID + + + +Read - number of DTCs by severity + + +Read_number_of_DTCs_by_severity + +Fault Memory Report nbr of DTC bei severity + + +FaultMemory_Report_nbr_of_DTC_bei_severity + + + +Read - DTCs by severity + + +Read_DTCs_by_severity + +Fault Memory Read DTC by severity + + +FaultMemory_Read_DTC_by_severity + + + +Read - severity information + + +Read_severity_information + +Fault Memory Read severity information + + +FaultMemory_Read_severity_information + + + +Read - supported DTCs + + +ReadAllSupported + +Fault Memory Read (supported errors) + + +FaultMemory_ReadAllSupported + + + +Read - first test failed DTC + + +Read_first_test_failed_DTC + +Fault Memory Read first test failed DTC + + +FaultMemory_Read_first_test_failed_DTC + + + +Read - first confirmed DTC + + +Read_first_confirmed_DTC + +Fault Memory Read first confirmed DTC + + +FaultMemory_Read_first_confirmed_DTC + + + +Read - most recent test failed DTC + + +Read_most_recent_test_failed_DTC + +Fault Memory Read most recent test failed DTC + + +FaultMemory_Read_most_recent_test_failed_DTC + + + +Read - most recent confirmed DTC + + +Read_most_recent_confirmed_DTC + +Fault Memory Read most recent confirmed DTC + + +FaultMemory_Read_most_recent_confirmed_DTC + + + +Read - fault detection counter + + +Read_fault_detection_counter + +Fault Memory Read fault detection counter + + +FaultMemory_Read_fault_detection_counter + + + +Clear DTC + + +Clear + +Fault Memory Clear (all errors) + + +FaultMemory_Clear + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +DTCFormatIdentifier + + +DtcFormatIdentifier + + + + + +DTC + + +DTC + + +RecordDataType + + +RecordDataType + + + + +Example Error 2 + + + + +DTC_0X000002 + + + + + + + +DEM_POWER + + + + + + +not required + + + + + + + + + +Example Error 3 + + + + +DTC_0X000003 + + + + + + + +DEM_POWER + + + + + + +not required + + + + + + + + + +Example Error 4 + + + + +DTC_0X000004 + + + + + + + +DEM_POWER + + + + + + +not required + + + + + + + + + + + + + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +DTC Severity + + +DTC_Severity + + +DTC GTR Class 0 + + +DTC_GTR_Class_0 + + + +DTC GTR Class 1 + + +DTC_GTR_Class_1 + + + +DTC GTR Class 2 + + +DTC_GTR_Class_2 + + + +DTC GTR Class 3 + + +DTC_GTR_Class_3 + + + +DTC GTR Class 4 + + +DTC_GTR_Class_4 + + + +maintenanceOnly + + +maintenanceOnly + + + +checkAtNextHalt + + +checkAtNextHalt + + + +checkImmediately + + +checkImmediately + + + + + + +DTC Severity + + +DTC_Severity + + +DTC GTR Class 0 + + +DTC_GTR_Class_0 + + + +DTC GTR Class 1 + + +DTC_GTR_Class_1 + + + +DTC GTR Class 2 + + +DTC_GTR_Class_2 + + + +DTC GTR Class 3 + + +DTC_GTR_Class_3 + + + +DTC GTR Class 4 + + +DTC_GTR_Class_4 + + + +maintenanceOnly + + +maintenanceOnly + + + +checkAtNextHalt + + +checkAtNextHalt + + + +checkImmediately + + +checkImmediately + + + + + + +DTCFunctionalUnit + + +DTCFunctionalUnit + + + + + +GroupOfDtc + + +GroupOfDtc + + +LocalTable + + +LocalTable + + + + +All groups + + + + + + + + + +Read (number) + + +ReadNumber + + + + + + + + + + +Read (all identified) + + +RDtcBSM + + + + + + + + + + +Read - extended data record + + +Read_extended_data_record + + + + + + + +Read - snapshot record + + +Read_snapshot_record + + + + + + + +RESPONSE CODE + + +RC + + + + + + + + + +Report nbr of DTC bei severity + + +Report_nbr_of_DTC_bei_severity + + + + + + + + + + +Read DTC by severity + + +Read_DTC_by_severity + + + + + + + + + + +Read severity information + + +Read_severity_information + + + + + + + + + + +Read (supported errors) + + +ReadAllSupported + + + + + + + + + +Read first test failed DTC + + +Read_first_test_failed_DTC + + + + + + + + + +Read first confirmed DTC + + +Read_first_confirmed_DTC + + + + + + + + + +Read most recent test failed DTC + + +Read_most_recent_test_failed_DTC + + + + + + + + + +Read most recent confirmed DTC + + +Read_most_recent_confirmed_DTC + + + + + + + + + +Read fault detection counter + + +Read_fault_detection_counter + + + + + + + + + +Clear (all errors) + + +Clear + + + + + + + + + + + +Malfunction Indicator Lamp + + +Malfunction_Indicator_Lamp + + + +ABS Inactive Lamp + + +ABS_Inactive_Lamp + + + +Oil Pressure Warning Lamp + + +Oil_Pressure_Warning_Lamp + + + + + +Ignition on/off + + +Ignition_on_off + + + +Power up/down + + +Power_up_down + + + +OBD driving cycle + + +OBD_driving_cycle + + + +Engine warm up cycle + + +Engine_warm_up_cycle + + + + + +Fast + + +Fast + + + +Middle + + +Middle + + + +Slow + + +Slow + + + +Time 5 Seconds + + +Time_5_Seconds + + + + + +Engine Cranking + + +Engine_Cranking + + + +Speed > 0 km/h + + +Speed_gt_0_km_h + + + + + + +User Defined Fault Memories + + +User_Defined_Fault_Memories + + +User Defined Fault Memory 1 + + +User_Defined_Fault_Memory_1 + + +Read by Status Mask + + +Read_by_Status_Mask + +User Defined Fault Memory 1 Read by Status Mask + + +User_Defined_Fault_Memory_1_Read_by_Status_Mask + + + +Read Snapshots + + +Read_Snapshots + +User Defined Fault Memory 1 Read Snapshots + + +User_Defined_Fault_Memory_1_Read_Snapshots + + + +Read Extended Data Records + + +Read_Extended_Data_Records + +User Defined Fault Memory 1 Read Extended Data Records + + +User_Defined_Fault_Memory_1_Read_Extended_Data_Records + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +DTCRecord + + +DTCRecord + + +RecordDataType + + +RecordDataType + + + + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +DID 0x0200 + + +DID_0x0200 + + +DID 0x0200 ID + + +DID_0x0200_ID + + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +DTCExtendedDataRecordNumber + + +DTCExtendedDataRecordNumber + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +DTCExtendedDataRecord + + +DTCExtendedDataRecord + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +Read by Status Mask + + +Read_by_Status_Mask + + + + + + + + + + +Read Snapshots + + +Read_Snapshots + + + + + + + + + + +Read Extended Data Records + + +Read_Extended_Data_Records + + + + + + + + + + +User Defined Fault Memory 2 + + +User_Defined_Fault_Memory_2 + + +Read by Status Mask + + +Read_by_Status_Mask + +User Defined Fault Memory 2 Read by Status Mask + + +User_Defined_Fault_Memory_1_Read_by_Status_Mask_1 + + + +Read Snapshots + + +Read_Snapshots + +User Defined Fault Memory 2 Read Snapshots + + +User_Defined_Fault_Memory_1_Read_Snapshots_1 + + + +Read Extended Data Records + + +Read_Extended_Data_Records + +User Defined Fault Memory 2 Read Extended Data Records + + +User_Defined_Fault_Memory_1_Read_Extended_Data_Records_1 + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +DTCRecord + + +DTCRecord + + +RecordDataType + + +RecordDataType + + + + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +DID 0x0200 + + +DID_0x0200 + + +DID 0x0200 ID + + +DID_0x0200_ID + + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +DTCExtendedDataRecordNumber + + +DTCExtendedDataRecordNumber + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +DTCExtendedDataRecord + + +DTCExtendedDataRecord + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +Read by Status Mask + + +Read_by_Status_Mask + + + + + + + + + + +Read Snapshots + + +Read_Snapshots + + + + + + + + + + +Read Extended Data Records + + +Read_Extended_Data_Records + + + + + + + + + + +User Defined Fault Memory 3 + + +User_Defined_Fault_Memory_3 + + +Read by Status Mask + + +Read_by_Status_Mask + +User Defined Fault Memory 3 Read by Status Mask + + +User_Defined_Fault_Memory_3_Read_by_Status_Mask + + + +Read Snapshots + + +Read_Snapshots + +User Defined Fault Memory 3 Read Snapshots + + +User_Defined_Fault_Memory_3_Read_Snapshots + + + +Read Extended Data Records + + +Read_Extended_Data_Records + +User Defined Fault Memory 3 Read Extended Data Records + + +User_Defined_Fault_Memory_3_Read_Extended_Data_Records + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +DTCRecord + + +DTCRecord + + +RecordDataType + + +RecordDataType + + + + + + + + +DTC Statusbyte + + +DtcStatusbyte + + +Test failed + + +TestFailed + + + +Test failed this monitoring cycle + + +TestFailedThisMonitoringCycle + + + +Pending DTC + + +PendingDtc + + + +Confirmed DTC + + +ConfirmedDtc + + + +Test not completed since last clear + + +TestNotCompletedSinceLastClear + + + +Test failed since last clear + + +TestFailedSinceLastClear + + + +Test not completed this monitoring cycle + + +TestNotCompletedThisMonitoringCycle + + + +Warning indicator requested + + +WarningIndicatorRequested + + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +DID 0x0200 + + +DID_0x0200 + + +DID 0x0200 ID + + +DID_0x0200_ID + + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +DTCExtendedDataRecordNumber + + +DTCExtendedDataRecordNumber + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +LocalMuxDataObject + + +LocalMuxDataType + + + + + +DTCExtendedDataRecord + + +DTCExtendedDataRecord + + + + + +LocalMuxDataObject + + +LocalMuxDataObject + + + + + +Read by Status Mask + + +Read_by_Status_Mask + + + + + + + + + + +Read Snapshots + + +Read_Snapshots + + + + + + + + + + +Read Extended Data Records + + +Read_Extended_Data_Records + + + + + + + + + + + +Upload/Download + + +Upload_Download + + +RequestDownload + + +RequestDownload + +Upload/Download RequestDownload + + +Upload_Download_RequestDownload + + + +RequestUpload + + +RequestUpload + +Upload/Download RequestUpload + + +Upload_Download_RequestUpload + + + +Transmit + + +Transmit + +Upload/Download Transmit + + +Upload_Download_Transmit + + + +Stop + + +Stop + +Upload/Download Stop + + +Upload_Download_Stop + + + + +DataFormatIdentifier + + +DFI_ + + + + + +LengthFormatIdentifier + + +LFID + + + + + +MaxNumberOfBlockLength + + +MNROB_ + + + + + + + + + +Request + + +Request + + + + + + + + + + + + + +RequestUpload + + +RequestUpload + + + + + + + + + + + + +Transmit + + +Transmit + + + + + + + + + + + + + + + + +Stop + + +Stop + + + + + + + + + + + +Flash Jobs + + +Flash_Jobs + + + +Generic Jobs + + +Generic_Jobs + + + + +Base Variant1 + + +Base_Variant1 + + + + + + + + + + + + + + + + + + + + +Sessions + + + +This Diagnostic Class describes the use case of the Session Management. + + + + +Sessions + + + + + + +Ecu Reset + + +Ecu_Reset + + + + + +Security Access + + +SecurityAccess + + + + + +Communication Control + + +Communication_Control + + + + + + + + + +ECU Identification + + +ECU_Identification + + + + + + + + + + + + + +Variant Coding + + +Variant_Coding + + + + +Stored Data + + +Stored_Data + + + + +Dynamic Data + + +Dynamic_Data + + + + +Periodic Data + + +Periodic_Data + + + + +Dynamically Define Periodic Data + + +Dynamically_Define_Periodic_Data + + + + +Dynamically Define Non-Periodic Data + + +Dynamically_Define_Non_Periodic_Data + + + + +IO Control + + +IOControl + + + + +Routine Control + + +Routine_Control + + + + + + +User Defined Fault Memories + + +User_Defined_Fault_Memories + + + + + + + + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/cli/rpc.spec.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/cli/rpc.spec.ts new file mode 100644 index 0000000..605fa5f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/cli/rpc.spec.ts @@ -0,0 +1,402 @@ +import net from 'net' +import { afterEach, describe, expect, it } from 'vitest' +import { CanRpcService, DEFAULT_CAN_BITRATE } from '../../src/cli/rpc/canService' +import { + findJsonEnd, + JsonRpcFramer, + encodeNotification, + makeError, + makeSuccess +} from '../../src/cli/rpc/protocol' +import { startRpcServer } from '../../src/cli/rpc/server' +import { RPC_METHOD_NOT_FOUND, RPC_PARSE_ERROR } from '../../src/cli/rpc/errors' +import { SIMULATE_CAN } from '../../src/main/docan/simulate' +import { CAN_ID_TYPE, CanMessage } from '../../src/main/share/can' + +let handleSeq = 0 +const SIM_BUS_MAX = 64 + +function nextHandle() { + const h = handleSeq % SIM_BUS_MAX + handleSeq++ + return h +} + +function nextHandles() { + return [nextHandle(), nextHandle()] as const +} + +function rpcLine(method: string, params: unknown, id: number | string) { + return JSON.stringify({ jsonrpc: '2.0', method, params, id }) + '\n' +} + +async function waitMs(ms: number) { + await new Promise((r) => setTimeout(r, ms)) +} + +describe('JSON-RPC protocol', () => { + it('finds object and array bounds', () => { + expect(findJsonEnd('{"a":1}')).toBe(7) + expect(findJsonEnd(' [1,2] extra')).toBe(7) + expect(findJsonEnd('{"a":"{x"}')).toBe(10) + expect(findJsonEnd('{"a":1')).toBe(-1) + }) + + it('frames NDJSON and concatenated JSON', () => { + const framer = new JsonRpcFramer() + const msgs = framer.push('{"a":1}\n{"b":2}{"c":3}') + expect(msgs).toEqual([{ a: 1 }, { b: 2 }, { c: 3 }]) + }) + + it('frames Content-Length headers', () => { + const framer = new JsonRpcFramer() + const body = '{"jsonrpc":"2.0","method":"sys.ping","id":1}' + const raw = `Content-Length: ${Buffer.byteLength(body)}\r\n\r\n${body}` + expect(framer.push(raw)).toEqual([JSON.parse(body)]) + }) + + it('encodes success, error, and notifications', () => { + expect(makeSuccess(1, { ok: true })).toEqual({ jsonrpc: '2.0', result: { ok: true }, id: 1 }) + expect(makeError(1, RPC_PARSE_ERROR, 'Parse error')).toEqual({ + jsonrpc: '2.0', + error: { code: RPC_PARSE_ERROR, message: 'Parse error' }, + id: 1 + }) + expect(JSON.parse(encodeNotification('can.rxIndication', { id: 1 }))).toEqual({ + jsonrpc: '2.0', + method: 'can.rxIndication', + params: { id: 1 } + }) + }) +}) + +describe('CanRpcService (simulate)', () => { + const services: CanRpcService[] = [] + + afterEach(async () => { + for (const s of services.splice(0)) { + await s.closeAll() + } + }) + + it('opens two simulate controllers and exchanges a frame', async () => { + const [h0, h1] = nextHandles() + const service = new CanRpcService() + services.push(service) + const session = service.createSession(() => undefined) + + const a = await service.canOpen( + { vendor: 'simulate', handle: h0, name: 'SIM_A', controllerId: 0 }, + session + ) + const b = await service.canOpen( + { vendor: 'simulate', handle: h1, name: 'SIM_B', controllerId: 1 }, + session + ) + expect(a.controllerId).toBe(0) + expect(b.mode).toBe('CAN_CS_STARTED') + + await service.canWrite( + { controllerId: 0, id: '0x123', data: [1, 2, 3, 4], idType: 'STANDARD' }, + session + ) + await waitMs(20) + const { frames } = await service.canRead({ controllerId: 1, timeoutMs: 200, max: 8 }, session) + expect(frames.length).toBeGreaterThan(0) + expect(frames[0].id).toBe(0x123) + expect(frames[0].data).toEqual([1, 2, 3, 4]) + expect(frames[0].dir).toBe('IN') + }) + + it('maps AUTOSAR Can.Init / Write / MainFunction_Read', async () => { + const [h0, h1] = nextHandles() + const service = new CanRpcService() + services.push(service) + const session = service.createSession(() => undefined) + + const init = await service.canInit({ + controllers: [ + { controllerId: 0, vendor: 'simulate', handle: h0, name: 'MCU' }, + { controllerId: 1, vendor: 'simulate', handle: h1, name: 'BUS' } + ], + hardwareObjects: [ + { + hohId: 0, + controllerId: 0, + objectType: 'TRANSMIT', + handleType: 'BASIC', + idType: 'STANDARD' + }, + { + hohId: 1, + controllerId: 1, + objectType: 'RECEIVE', + handleType: 'BASIC', + idType: 'STANDARD', + canId: 0x100, + idMask: 0x7ff + }, + { + hohId: 2, + controllerId: 1, + objectType: 'RECEIVE', + handleType: 'BASIC', + idType: 'STANDARD', + canId: 0x200, + idMask: 0x7ff + } + ] + }) + expect(init.result).toBe('E_OK') + + await service.setControllerMode(0, 'CAN_T_START') + await service.setControllerMode(1, 'CAN_T_START') + + const write = await service.canWriteHth( + { hth: 0, id: 0x100, sdu: '11 22 33 44 55 66 77 88', swPduHandle: 7 }, + session + ) + expect(write.result).toBe('E_OK') + expect(write.resultCode).toBe(0) + + await waitMs(20) + const { indications } = service.mainFunctionRead({ max: 16 }, session) + expect(indications.some((f) => f.id === 0x100 && f.hrh === 1)).toBe(true) + expect(indications.every((f) => f.id !== 0x300)).toBe(true) + + const { confirmations } = service.mainFunctionWrite({}, session) + expect(confirmations.some((c) => c.swPduHandle === 7 && c.result === 'E_OK')).toBe(true) + + await service.setControllerMode(0, 'CAN_T_STOP') + const busy = await service.canWriteHth({ hth: 0, id: 0x100, sdu: [1] }, session) + expect(busy.result).toBe('E_NOT_OK') + }) + + it('returns CAN_BUSY for FULL HTH while in-flight', async () => { + const [h0] = nextHandles() + const service = new CanRpcService() + services.push(service) + const session = service.createSession(() => undefined) + await service.canInit({ + controllers: [{ controllerId: 0, vendor: 'simulate', handle: h0 }], + hardwareObjects: [ + { + hohId: 10, + controllerId: 0, + objectType: 'TRANSMIT', + handleType: 'FULL', + idType: 'STANDARD', + canId: 0x55 + } + ] + }) + await service.setControllerMode(0, 'CAN_T_START') + const first = service.canWriteHth({ hth: 10, sdu: [1, 2] }, session) + const second = await service.canWriteHth({ hth: 10, sdu: [3, 4] }, session) + // simulate write is async (setImmediate); second may be BUSY or OK depending on timing + expect(['E_OK', 'CAN_BUSY']).toContain(second.result) + await first + }) + + it('software period send emits frames', async () => { + const [h0, h1] = nextHandles() + const service = new CanRpcService() + services.push(service) + const session = service.createSession(() => undefined) + await service.canOpen({ vendor: 'simulate', handle: h0, controllerId: 0 }, session) + await service.canOpen({ vendor: 'simulate', handle: h1, controllerId: 1 }, session) + const { taskId } = service.startPeriodSend({ + controllerId: 0, + id: 0x42, + data: [0xaa], + periodMs: 10 + }) + await waitMs(45) + const { frames } = await service.canRead({ controllerId: 1, timeoutMs: 50, max: 32 }, session) + expect(frames.filter((f) => f.id === 0x42).length).toBeGreaterThan(1) + service.stopPeriodSend({ controllerId: 0, taskId }) + }) + + it('nested interrupt disable blocks notifications but not polling', async () => { + const [h0, h1] = nextHandles() + const service = new CanRpcService() + services.push(service) + const notes: string[] = [] + const session = service.createSession((method) => notes.push(method)) + await service.canOpen({ vendor: 'simulate', handle: h0, controllerId: 0 }, session) + await service.canOpen({ vendor: 'simulate', handle: h1, controllerId: 1 }, session) + service.subscribe({ controllerId: 1 }, session) + service.disableInterrupts(1) + await service.canWrite({ controllerId: 0, id: 0x10, data: [9] }, session) + await waitMs(20) + expect(notes.filter((m) => m === 'can.rxIndication')).toHaveLength(0) + const { frames } = await service.canRead({ controllerId: 1, max: 8 }, session) + expect(frames.length).toBeGreaterThan(0) + service.enableInterrupts(1) + }) +}) + +describe('CanRpcService gateway (GUI live TX)', () => { + const services: CanRpcService[] = [] + const bases: SIMULATE_CAN[] = [] + + afterEach(async () => { + for (const s of services.splice(0)) { + await s.closeAll() + } + for (const b of bases.splice(0)) { + try { + b.close() + } catch { + // already closed + } + } + }) + + function openLive(name: string) { + const handle = nextHandle() + const base = new SIMULATE_CAN({ + id: `gw-${handle}`, + handle, + name, + vendor: 'simulate', + canfd: false, + bitrate: { ...DEFAULT_CAN_BITRATE } + }) + bases.push(base) + return base + } + + it('transmits RPC writes as dir OUT and does not echo them as RX', async () => { + const base = openLive('GUI_CAN') + const seen: CanMessage[] = [] + base.attachCanMessage((msg) => seen.push(msg)) + + const service = new CanRpcService({ role: 'gateway' }) + services.push(service) + const session = service.createSession(() => undefined) + service.attachLiveControllers(new Map([['dev1', base]])) + + expect(service.getVersion().role).toBe('gateway') + const listed = service.listControllers() + expect(listed.controllers).toHaveLength(1) + expect(listed.controllers[0].mode).toBe('CAN_CS_STARTED') + + await service.canWrite( + { controllerId: 0, id: '0x123', data: [1, 2, 3, 4], idType: 'STANDARD' }, + session + ) + await waitMs(20) + expect(seen.some((m) => m.dir === 'OUT' && m.id === 0x123)).toBe(true) + expect(seen.some((m) => m.dir === 'IN' && m.id === 0x123)).toBe(false) + + const { frames } = await service.canRead({ timeoutMs: 30, max: 8 }, session) + expect(frames.filter((f) => f.id === 0x123)).toHaveLength(0) + + const { confirmations } = service.mainFunctionWrite({}, session) + expect(confirmations.some((c) => c.result === 'E_OK')).toBe(true) + }) + + it('delivers hardware RX from a peer simulate bus as RPC RX', async () => { + const a = openLive('GUI_A') + const b = openLive('GUI_B') + const service = new CanRpcService({ role: 'gateway' }) + services.push(service) + const session = service.createSession(() => undefined) + service.attachLiveControllers( + new Map([ + ['devA', a], + ['devB', b] + ]) + ) + + await a.writeBase( + 0x200, + { idType: CAN_ID_TYPE.STANDARD, canfd: false, brs: false, remote: false }, + Buffer.from([9, 8, 7]) + ) + await waitMs(20) + const { frames } = await service.canRead({ controllerId: 1, timeoutMs: 50, max: 8 }, session) + expect(frames.some((f) => f.id === 0x200 && f.dir === 'IN')).toBe(true) + }) +}) + +describe('JSON-RPC TCP server', () => { + it('serves sys.ping, discovery, and CAN round-trip', async () => { + const [h0, h1] = nextHandles() + const server = await startRpcServer({ host: '127.0.0.1', port: 0 }) + const socket = net.connect({ host: '127.0.0.1', port: server.port }) + await new Promise((resolve, reject) => { + socket.once('connect', () => resolve()) + socket.once('error', reject) + }) + const framer = new JsonRpcFramer() + const pending = new Map void>() + const notifications: any[] = [] + socket.on('data', (chunk) => { + const ingest = (msg: any) => { + if (Array.isArray(msg)) { + msg.forEach(ingest) + return + } + if (msg && msg.method && msg.id === undefined) { + notifications.push(msg) + } else if (msg && pending.has(msg.id)) { + pending.get(msg.id)!(msg) + pending.delete(msg.id) + } + } + for (const msg of framer.push(chunk) as any[]) { + ingest(msg) + } + }) + const call = (method: string, params: unknown, id: number) => + new Promise((resolve) => { + pending.set(id, resolve) + socket.write(rpcLine(method, params, id)) + }) + + const ping = await call('sys.ping', {}, 1) + expect(ping.result.pong).toBe(true) + + const methods = await call('sys.listMethods', {}, 2) + expect(methods.result.methods).toContain('Can.Write') + expect(methods.result.methods).toContain('can.open') + + const unknown = await call('no.such', {}, 3) + expect(unknown.error.code).toBe(RPC_METHOD_NOT_FOUND) + + const opened0 = await call('can.open', { vendor: 'simulate', handle: h0, controllerId: 0 }, 4) + const opened1 = await call('can.open', { vendor: 'simulate', handle: h1, controllerId: 1 }, 5) + expect(opened0.result.mode).toBe('CAN_CS_STARTED') + expect(opened1.result.mode).toBe('CAN_CS_STARTED') + await call('can.subscribe', { controllerId: 1 }, 6) + const written = await call( + 'can.write', + { controllerId: 0, id: 0x321, data: [0xde, 0xad, 0xbe, 0xef] }, + 7 + ) + expect(written.error).toBeUndefined() + expect(written.result.ts).toBeGreaterThanOrEqual(0) + const read = await call('can.read', { controllerId: 1, timeoutMs: 500, max: 8 }, 8) + expect(read.result.frames.length).toBeGreaterThan(0) + expect(read.result.frames[0].id).toBe(0x321) + expect(read.result.frames[0].data).toEqual([0xde, 0xad, 0xbe, 0xef]) + expect(notifications.some((n) => n.method === 'can.rxIndication')).toBe(true) + + const batch = await new Promise((resolve) => { + pending.set(9, resolve) + socket.write( + JSON.stringify([ + { jsonrpc: '2.0', method: 'sys.ping', id: 9 }, + { jsonrpc: '2.0', method: 'sys.version', id: 10 } + ]) + '\n' + ) + }) + // batch writes two responses as one JSON array + expect(Array.isArray(batch) || batch.result?.pong === true).toBe(true) + + socket.end() + await server.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ID200.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ID200.dbc new file mode 100644 index 0000000..3fa1c4a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ID200.dbc @@ -0,0 +1,73 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: IG_Node + + +BO_ 512 Message_200: 8 Vector__XXX + SG_ LwBmIO : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ HhBmIO : 7|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 12 ID00CUI_status: 8 Vector__XXX + SG_ UI_audioActive : 1|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_autopilotTrial : 12|2@1+ (1,0) [0|3] "" Vector__XXX + SG_ UI_bluetoothActive : 2|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_cameraActive : 41|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_cellActive : 3|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_cellConnected : 10|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_cellNetworkTechnology : 19|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ UI_cellVector__XXXPower : 24|8@1+ (1,-128) [-128|127] "dB" Vector__XXX + SG_ UI_cellSignalBars : 42|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ UI_cpuTemperature : 56|8@1- (1,40) [-20|100] "C" Vector__XXX + SG_ UI_developmentCar : 40|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_displayOn : 5|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_displayReady : 4|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_factoryReset : 14|2@1+ (1,0) [0|3] "" Vector__XXX + SG_ UI_falseTouchCounter : 32|8@1+ (1,0) [0|255] "1" Vector__XXX + SG_ UI_gpsActive : 16|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_pcbTemperature : 48|8@1- (1,40) [-20|100] "C" Vector__XXX + SG_ UI_radioActive : 18|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_readyForDrive : 9|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_screenshotActive : 17|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_systemActive : 8|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_touchActive : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_vpnActive : 11|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_wifiActive : 6|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ UI_wifiConnected : 7|1@1+ (1,0) [0|1] "" Vector__XXX + +BA_DEF_ "BusType" STRING ; +BA_DEF_DEF_ "BusType" "CAN"; + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ID2001.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ID2001.dbc new file mode 100644 index 0000000..297860c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ID2001.dbc @@ -0,0 +1,48 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: IG_Node + + +BO_ 512 Message_200: 8 Vector__XXX + SG_ test : 19|15@0+ (1,0) [0|32767] "" Vector__XXX + SG_ LwBmIO : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ HhBmIO : 7|1@0+ (1,0) [0|1] "" Vector__XXX + + + +BA_DEF_ "BusType" STRING ; +BA_DEF_DEF_ "BusType" "CAN"; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/Model3CAN.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/Model3CAN.dbc new file mode 100644 index 0000000..032460d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/Model3CAN.dbc @@ -0,0 +1,4297 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: Receiver ChassisBus VehicleBus PartyBus +VAL_TABLE_ New_Value_Table_931 2 "qqq" 1 "test" ; + + +BO_ 12 ID00CUI_status: 8 VehicleBus + SG_ UI_audioActive : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_autopilotTrial : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_bluetoothActive : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_cameraActive : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_cellActive : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_cellConnected : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_cellNetworkTechnology : 19|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_cellReceiverPower : 24|8@1+ (1,-128) [-128|127] "dB" Receiver + SG_ UI_cellSignalBars : 42|3@1+ (1,0) [0|7] "" Receiver + SG_ UI_cpuTemperature : 56|8@1- (1,40) [-20|100] "C" Receiver + SG_ UI_developmentCar : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_displayOn : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_displayReady : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_factoryReset : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_falseTouchCounter : 32|8@1+ (1,0) [0|255] "1" Receiver + SG_ UI_gpsActive : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_pcbTemperature : 48|8@1- (1,40) [-20|100] "C" Receiver + SG_ UI_radioActive : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_readyForDrive : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_screenshotActive : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_systemActive : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_touchActive : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_vpnActive : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_wifiActive : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_wifiConnected : 7|1@1+ (1,0) [0|1] "" Receiver + +BO_ 851 ID353UI_status: 8 VehicleBus + SG_ UI_audioActive : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_autopilotTrial : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_bluetoothActive : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_cameraActive : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_cellActive : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_cellConnected : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_cellNetworkTechnology : 19|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_cellReceiverPower : 24|8@1+ (1,-128) [-128|127] "dB" Receiver + SG_ UI_cellSignalBars : 42|3@1+ (1,0) [0|7] "" Receiver + SG_ UI_cpuTemperature : 56|8@1- (1,40) [-20|100] "C" Receiver + SG_ UI_developmentCar : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_displayOn : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_displayReady : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_factoryReset : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_falseTouchCounter : 32|8@1+ (1,0) [0|255] "1" Receiver + SG_ UI_gpsActive : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_pcbTemperature : 48|8@1- (1,40) [-20|100] "C" Receiver + SG_ UI_radioActive : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_readyForDrive : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_screenshotActive : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_systemActive : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_touchActive : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_vpnActive : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_wifiActive : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_wifiConnected : 7|1@1+ (1,0) [0|1] "" Receiver + +BO_ 22 ID016DI_bmsRequest: 1 VehicleBus + SG_ DI_bmsOpenContactorsRequest : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_bmsRequestInterfaceVersion : 0|4@1+ (1,0) [0|15] "" Receiver + +BO_ 130 ID082UI_tripPlanning: 8 VehicleBus + SG_ UI_energyAtDestination : 48|16@1- (0.01,0) [-327.67|327.67] "kWh" Receiver + SG_ UI_hindsightEnergy : 32|16@1- (0.01,0) [-327.67|327.67] "kWh" Receiver + SG_ UI_navToSupercharger : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_predictedEnergy : 16|16@1- (0.01,0) [-327.67|327.67] "kWh" Receiver + SG_ UI_requestActiveBatteryHeating : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_tripPlanningActive : 0|1@1+ (1,0) [0|1] "" Receiver + +BO_ 257 ID101RCM_inertial1: 8 ChassisBus + SG_ RCM_inertial1Checksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ RCM_inertial1Counter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ RCM_pitchRate : 16|15@1- (0.00025,0) [-4.096|4.09575] "rad/s" Receiver + SG_ RCM_pitchRateQF : 50|2@1+ (1,0) [0|3] "" Receiver + SG_ RCM_rollRate : 31|15@1- (0.00025,0) [-4.096|4.09575] "rad/s" Receiver + SG_ RCM_rollRateQF : 46|2@1+ (1,0) [0|3] "" Receiver + SG_ RCM_yawRate : 0|16@1- (0.0001,0) [-3.2766|3.2766] "rad/s" Receiver + SG_ RCM_yawRateQF : 48|1@1+ (1,0) [0|1] "" Receiver + +BO_ 273 ID111RCM_inertial2: 8 ChassisBus + SG_ RCM_inertial2Checksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ RCM_inertial2Counter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ RCM_lateralAccel : 16|16@1- (0.00125,0) [-40.9575|40.9575] "m/s^2" Receiver + SG_ RCM_lateralAccelQF : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ RCM_longitudinalAccel : 0|16@1- (0.00125,0) [-40.9575|40.9575] "m/s^2" Receiver + SG_ RCM_longitudinalAccelQF : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ RCM_verticalAccel : 32|16@1- (0.00125,0) [-40.9575|40.9575] "m/s^2" Receiver + SG_ RCM_verticalAccelQF : 50|1@1+ (1,0) [0|1] "" Receiver + +BO_ 278 RCM_inertial2New: 8 ChassisBus + SG_ RCM_inertial2Checksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ RCM_inertial2Counter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ RCM_lateralAccel : 16|16@1- (0.00125,0) [-40.9575|40.9575] "m/s^2" Receiver + SG_ RCM_lateralAccelQF : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ RCM_longitudinalAccel : 0|16@1- (0.00125,0) [-40.9575|40.9575] "m/s^2" Receiver + SG_ RCM_longitudinalAccelQF : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ RCM_verticalAccel : 32|16@1- (0.00125,0) [-40.9575|40.9575] "m/s^2" Receiver + SG_ RCM_verticalAccelQF : 50|1@1+ (1,0) [0|1] "" Receiver + +BO_ 258 ID102VCLEFT_doorStatus: 8 VehicleBus + SG_ VCLEFT_frontHandlePWM : 16|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCLEFT_frontHandlePulled : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_frontHandlePulledPersist : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_frontIntSwitchPressed : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_frontLatchStatus : 0|4@1+ (1,0) [0|8] "" Receiver + SG_ VCLEFT_frontLatchSwitch : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_frontRelActuatorSwitch : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_mirrorDipped : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_mirrorFoldState : 52|3@1+ (1,0) [0|4] "" Receiver + SG_ VCLEFT_mirrorHeatState : 58|3@1+ (1,0) [0|4] "" Receiver + SG_ VCLEFT_mirrorRecallState : 55|3@1+ (1,0) [0|5] "" Receiver + SG_ VCLEFT_mirrorState : 49|3@1+ (1,0) [0|4] "" Receiver + SG_ VCLEFT_mirrorTiltXPosition : 33|8@1+ (0.02,0) [0|5] "V" Receiver + SG_ VCLEFT_mirrorTiltYPosition : 41|8@1+ (0.02,0) [0|5] "V" Receiver + SG_ VCLEFT_rearHandlePWM : 24|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCLEFT_rearHandlePulled : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_rearIntSwitchPressed : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_rearLatchStatus : 4|4@1+ (1,0) [0|8] "" Receiver + SG_ VCLEFT_rearLatchSwitch : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_rearRelActuatorSwitch : 13|1@1+ (1,0) [0|1] "" Receiver + +BO_ 259 ID103VCRIGHT_doorStatus: 8 VehicleBus + SG_ VCRIGHT_frontHandlePWM : 14|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCRIGHT_frontHandlePulled : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_frontHandlePulledPersist : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_frontIntSwitchPressed : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_frontLatchStatus : 0|4@1+ (1,0) [0|8] "" Receiver + SG_ VCRIGHT_frontLatchSwitch : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_frontRelActuatorSwitch : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_mirrorDipped : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_mirrorFoldState : 52|3@1+ (1,0) [0|4] "" Receiver + SG_ VCRIGHT_mirrorRecallState : 60|3@1+ (1,0) [0|5] "" Receiver + SG_ VCRIGHT_mirrorState : 49|3@1+ (1,0) [0|4] "" Receiver + SG_ VCRIGHT_mirrorTiltXPosition : 33|8@1+ (0.02,0) [0|5] "V" Receiver + SG_ VCRIGHT_mirrorTiltYPosition : 41|8@1+ (0.02,0) [0|5] "V" Receiver + SG_ VCRIGHT_rearHandlePWM : 21|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCRIGHT_rearHandlePulled : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_rearIntSwitchPressed : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_rearLatchStatus : 4|4@1+ (1,0) [0|8] "" Receiver + SG_ VCRIGHT_rearLatchSwitch : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_rearRelActuatorSwitch : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_reservedForBackCompat : 28|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_trunkLatchStatus : 56|4@1+ (1,0) [0|8] "" Receiver + +BO_ 2147483923 ID113GTW_bmpDebug: 3 VehicleBus + SG_ GTW_BMP_AWAKE_PIN : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_BMP_GTW_PMIC_ERROR : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_BMP_GTW_PMIC_ON : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_BMP_GTW_PMIC_THERMTRIP : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_BMP_GTW_SOC_PWROK : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_BMP_GTW_nSUSPWR : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_BMP_PERIPH_nRST_3V3_PIN : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_BMP_PGOOD_PIN : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_BMP_PMIC_PWR_ON : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_bmpState : 7|8@0+ (1,0) [0|255] "" Receiver + +BO_ 281 ID119VCSEC_windowRequests: 2 VehicleBus + SG_ VCSEC_hvacRunScreenProtectOnly : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ VCSEC_windowRequestLF : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ VCSEC_windowRequestLR : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ VCSEC_windowRequestPercent : 8|7@1+ (1,0) [0|127] "" Receiver + SG_ VCSEC_windowRequestRF : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ VCSEC_windowRequestRR : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ VCSEC_windowRequestType : 4|2@1+ (1,0) [0|3] "" Receiver + +BO_ 290 ID122VCLEFT_doorStatus2: 6 VehicleBus + SG_ VCLEFT_frontDoorState : 17|3@1+ (1,0) [0|4] "" Receiver + SG_ VCLEFT_frontHandle5vEnable : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_frontHandleDebounceStatus : 32|3@1+ (1,0) [0|5] "" Receiver + SG_ VCLEFT_frontHandleRawStatus : 24|3@1+ (1,0) [0|5] "" Receiver + SG_ VCLEFT_frontLatchRelDuty : 0|8@1+ (1,0) [0|255] "%" Receiver + SG_ VCLEFT_mirrorFoldMaxCurrent : 40|7@1- (0.046,0) [-2.944|2.898] "A" Receiver + SG_ VCLEFT_rearDoorState : 20|3@1+ (1,0) [0|4] "" Receiver + SG_ VCLEFT_rearHandle5vEnable : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_rearHandleDebounceStatus : 35|3@1+ (1,0) [0|5] "" Receiver + SG_ VCLEFT_rearHandleRawStatus : 27|3@1+ (1,0) [0|5] "" Receiver + SG_ VCLEFT_rearLatchRelDuty : 8|8@1+ (1,0) [0|255] "%" Receiver + SG_ VCLEFT_vehicleInMotion : 16|1@1+ (1,0) [0|1] "" Receiver + +BO_ 291 ID123UI_alertMatrix1: 8 VehicleBus + SG_ UI_a001_DriverDoorOpen : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a002_DoorOpen : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a003_TrunkOpen : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a004_FrunkOpen : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a005_HeadlightsOnDoorOpen : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a006_RemoteServiceAlert : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a007_SoftPackConfigMismatch : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a008_TouchScreenError : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a009_SquashfsError : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a010_MapsMissing : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a011_IncorrectMap : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a012_NotOnPrivateProperty : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a013_TPMSHardWarning : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a014_TPMSSoftWarning : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a015_TPMSOverPressureWarning : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a016_TPMSTemperatureWarning : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a017_TPMSSystemFault : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a018_SlipStartOn : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a019_ParkBrakeFault : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a020_SteeringReduced : 19|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a021_RearSeatbeltUnbuckled : 20|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a022_ApeFusesEtc : 21|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a023_CellInternetCheckFailed : 22|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a024_WifiInternetCheckFailed : 23|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a025_WifiOnlineCheckFailed : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a026_ModemResetLoopDetected : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a027_AutoSteerMIA : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a028_FrontTrunkPopupClosed : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a029_ModemMIA : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a030_ModemVMCrash : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a031_BrakeFluidLow : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a032_CellModemRecoveryResets : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a033_ApTrialExpired : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a034_WakeupProblem : 33|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a035_AudioWatchdogKernelError : 34|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a036_AudioWatchdogHfpError : 35|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a037_AudioWatchdogXrunStormEr : 36|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a038_AudioWatchdogA2bI2cLocku : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a039_AudioA2bNeedRediscovery : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a040_HomelinkTransmit : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a041_AudioDmesgXrun : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a042_AudioDmesgRtThrottling : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a043_InvalidMapDataOverride : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a044_AudioDmesgDspException : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a045_ECallNeedsService : 44|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a046_BackupCameraStreamError : 45|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a047_CellRoamingDisallowed : 46|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a048_AudioPremiumAmpCheckFail : 47|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a049_BrakeShiftRequired : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a050_BackupCameraIPUTimeout : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a051_BackupCameraFrameTimeout : 50|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a052_KernelPanicReported : 51|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a053_QtCarExitError : 52|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a054_AudioBoostPowerBad : 53|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a055_ManualECallDisabled : 54|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a056_ManualECallButtonDisconn : 55|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a057_CellAntennaDisconnected : 56|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a058_GPSAntennaDisconnected : 57|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a059_ECallSpeakerDisconnected : 58|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a060_ECallMicDisconnected : 59|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a061_SIMTestFailed : 60|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a062_ENSTestFailed : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a063_CellularTestFailed : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_a064_ModemFirmwareTestFailed : 63|1@1+ (1,0) [0|1] "" Receiver + +BO_ 322 ID142VCLEFT_liftgateStatus: 8 VehicleBus + SG_ VCLEFT_liftgateStatusIndex M : 0|2@1+ (1,0) [0|2] "" Receiver + SG_ VCLEFT_liftgateLatchRequest m0 : 61|3@1+ (1,0) [0|4] "" Receiver + SG_ VCLEFT_liftgateMvmntNotAllowedCo m0 : 14|3@1+ (1,0) [0|5] "" Receiver + SG_ VCLEFT_liftgatePhysicalChimeRequ m0 : 21|3@1+ (1,0) [0|4] "" Receiver + SG_ VCLEFT_liftgatePosition m1 : 21|7@1- (1,46) [-5|95] "deg" Receiver + SG_ VCLEFT_liftgatePositionCalibrate m0 : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_liftgateRequestSource m0 : 7|3@1+ (1,0) [0|7] "" Receiver + SG_ VCLEFT_liftgateSpeed m1 : 28|10@1- (0.1,0) [-30|30] "deg/s" Receiver + SG_ VCLEFT_liftgateState m0 : 3|4@1+ (1,0) [0|12] "" Receiver + SG_ VCLEFT_liftgateStoppingCondition m0 : 10|4@1+ (1,0) [0|11] "" Receiver + SG_ VCLEFT_liftgateStrutCurrent m1 : 11|10@1- (0.1,0) [-30|30] "A" Receiver + SG_ VCLEFT_liftgateStrutDutyCycle m1 : 3|8@1- (1,0) [-100|100] "%" Receiver + SG_ VCLEFT_liftgateUIChimeRequest m0 : 18|3@1+ (1,0) [0|4] "" Receiver + +BO_ 325 ID145ESP_status: 8 ChassisBus + SG_ ESP_absBrakeEvent2 : 22|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_absFaultLamp : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_brakeApply : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_brakeDiscWipingActive : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_brakeLamp : 21|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_brakeTorqueTarget : 51|13@1+ (2,0) [0|16382] "Nm" Receiver + SG_ ESP_btcTargetState : 38|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_cdpStatus : 34|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_driverBrakeApply : 29|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_ebdFaultLamp : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_ebrStandstillSkid : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_ebrStatus : 49|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_espFaultLamp : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_espLampFlash : 20|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_espModeActive : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_hydraulicBoostEnabled : 19|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_lateralAccelQF : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_longitudinalAccelQF : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_ptcTargetState : 36|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_stabilityControlSts2 : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_statusChecksum : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ ESP_statusCounter : 8|4@1+ (1,0) [0|15] "" Receiver + SG_ ESP_steeringAngleQF : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_yawRateQF : 26|1@1+ (1,0) [0|1] "" Receiver + +BO_ 470 ID1D6DI_limits: 5 VehicleBus + SG_ DI_limitBaseSpeed : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitClutch : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitDcCapTemp : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitDeltaFluidTemp : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitDiff : 22|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitDischargePower : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitDriveTorque : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitGracefulPowerOff : 23|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitIBat : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitIGBTJunctTemp : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitInverterTemp : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitLimpMode : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitMotorCurrent : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitMotorSpeed : 20|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitMotorVoltage : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitObstacleDetection : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitOilPumpFluidTemp : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitPCBTemp : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitPoleTemp : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitRegenPower : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitRegenTorque : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitRotorTemp : 36|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitShift : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitShockTorque : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitStatorFrequency : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitStatorTemp : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitTCDrive : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitTCRegen : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitVBatHigh : 19|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitVBatLow : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitVehicleSpeed : 21|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitdcLinkCapTemp : 33|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limithvDcCableTemp : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitnegDcBusbarTemp : 34|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitphaseOutBusBarWeldTemp : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitphaseOutBusbarTemp : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitphaseOutLugTemp : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_limitposDcBusbarTemp : 35|1@1+ (1,0) [0|1] "" Receiver + +BO_ 522 ID20AHVP_contactorState: 6 VehicleBus + SG_ HVP_dcLinkAllowedToEnergize : 36|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_fcContNegativeAuxOpen : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_fcContNegativeState : 12|3@1+ (1,0) [0|7] "" Receiver + SG_ HVP_fcContPositiveAuxOpen : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_fcContPositiveState : 16|3@1+ (1,0) [0|7] "" Receiver + SG_ HVP_fcContactorSetState : 19|4@1+ (1,0) [0|9] "" Receiver + SG_ HVP_fcCtrsClosingAllowed : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_fcCtrsOpenNowRequested : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_fcCtrsOpenRequested : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_fcCtrsRequestStatus : 24|2@1+ (1,0) [0|2] "" Receiver + SG_ HVP_fcCtrsResetRequestRequired : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_fcLinkAllowedToEnergize : 44|2@1+ (1,0) [0|2] "" Receiver + SG_ HVP_hvilStatus : 40|4@1+ (1,0) [0|9] "" Receiver + SG_ HVP_packContNegativeState : 0|3@1+ (1,0) [0|7] "" Receiver + SG_ HVP_packContPositiveState : 3|3@1+ (1,0) [0|7] "" Receiver + SG_ HVP_packContactorSetState : 8|4@1+ (1,0) [0|9] "" Receiver + SG_ HVP_packCtrsClosingAllowed : 35|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_packCtrsOpenNowRequested : 33|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_packCtrsOpenRequested : 34|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_packCtrsRequestStatus : 30|2@1+ (1,0) [0|2] "" Receiver + SG_ HVP_packCtrsResetRequestRequired : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_pyroTestInProgress : 37|1@1+ (1,0) [0|1] "" Receiver + +BO_ 526 ID20EPARK_sdiFront: 8 ChassisBus + SG_ PARK_sdiFrontChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ PARK_sdiFrontCounter : 54|2@1+ (1,0) [0|3] "" Receiver + SG_ PARK_sdiSensor1RawDistData : 0|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor2RawDistData : 9|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor3RawDistData : 18|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor4RawDistData : 27|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor5RawDistData : 36|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor6RawDistData : 45|9@1+ (1,0) [0|511] "cm" Receiver + +BO_ 537 ID219VCSEC_TPMSData: 5 ChassisBus + SG_ VCSEC_TPMSDataIndex M : 0|2@1+ (1,0) [0|3] "" Receiver + SG_ VCSEC_TPMSBatVoltage0 m0 : 24|8@1+ (0.01,1.5) [1.5|4.04] "V" Receiver + SG_ VCSEC_TPMSBatVoltage1 m1 : 24|8@1+ (0.01,1.5) [1.5|4.04] "V" Receiver + SG_ VCSEC_TPMSBatVoltage2 m2 : 24|8@1+ (0.01,1.5) [1.5|4.04] "V" Receiver + SG_ VCSEC_TPMSBatVoltage3 m3 : 24|8@1+ (0.01,1.5) [1.5|4.04] "V" Receiver + SG_ VCSEC_TPMSLocation0 m0 : 32|3@1+ (1,0) [0|4] "" Receiver + SG_ VCSEC_TPMSLocation1 m1 : 32|3@1+ (1,0) [0|4] "" Receiver + SG_ VCSEC_TPMSLocation2 m2 : 32|3@1+ (1,0) [0|4] "" Receiver + SG_ VCSEC_TPMSLocation3 m3 : 32|3@1+ (1,0) [0|4] "" Receiver + SG_ VCSEC_TPMSPressure0 m0 : 8|8@1+ (0.025,0) [0|6.35] "bar" Receiver + SG_ VCSEC_TPMSPressure1 m1 : 8|8@1+ (0.025,0) [0|6.35] "bar" Receiver + SG_ VCSEC_TPMSPressure2 m2 : 8|8@1+ (0.025,0) [0|6.35] "bar" Receiver + SG_ VCSEC_TPMSPressure3 m3 : 8|8@1+ (0.025,0) [0|6.35] "bar" Receiver + SG_ VCSEC_TPMSTemperature0 m0 : 16|8@1+ (1,-40) [-40|214] "C" Receiver + SG_ VCSEC_TPMSTemperature1 m1 : 16|8@1+ (1,-40) [-40|214] "C" Receiver + SG_ VCSEC_TPMSTemperature2 m2 : 16|8@1+ (1,-40) [-40|214] "C" Receiver + SG_ VCSEC_TPMSTemperature3 m3 : 16|8@1+ (1,-40) [-40|214] "C" Receiver + +BO_ 516 ID204PCS_chgStatus: 8 VehicleBus + SG_ PCS_chargeShutdownRequest : 57|2@1+ (1,0) [0|2] "" Receiver + SG_ PCS_chgInstantAcPowerAvailable : 16|8@1+ (0.1,0) [0|20] "kW" Receiver + SG_ PCS_chgMainState : 0|4@1+ (1,0) [0|9] "" Receiver + SG_ PCS_chgMaxAcPowerAvailable : 24|8@1+ (0.1,0) [0|20] "kW" Receiver + SG_ PCS_chgPHAEnable : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ PCS_chgPHALineCurrentRequest : 32|8@1+ (0.1,0) [0|20] "A" Receiver + SG_ PCS_chgPHBEnable : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ PCS_chgPHBLineCurrentRequest : 40|8@1+ (0.1,0) [0|20] "A" Receiver + SG_ PCS_chgPHCEnable : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ PCS_chgPHCLineCurrentRequest : 48|8@1+ (0.1,0) [0|20] "A" Receiver + SG_ PCS_chgPwmEnableLine : 56|1@1+ (1,0) [0|1] "" Receiver + SG_ PCS_gridConfig : 6|2@1+ (1,0) [0|3] "" Receiver + SG_ PCS_hvChargeStatus : 4|2@1+ (1,0) [0|3] "" Receiver + SG_ PCS_hwVariantType : 59|2@1+ (1,0) [0|3] "" Receiver + +BO_ 554 ID22AHVP_pcsControl: 4 VehicleBus + SG_ HVP_dcLinkVoltageFiltered : 20|11@1- (1,0) [-550|550] "V" Receiver + SG_ HVP_dcLinkVoltageRequest : 0|16@1- (0.1,0) [-550|550] "V" Receiver + SG_ HVP_pcsChargeHwEnabled : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ HVP_pcsControlRequest : 16|2@1+ (1,0) [0|3] "" Receiver + SG_ HVP_pcsDcdcHwEnabled : 19|1@1+ (1,0) [0|1] "" Receiver + +BO_ 562 ID232BMS_contactorRequest: 8 VehicleBus + SG_ BMS_ensShouldBeActiveForDrive : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_fcContactorRequest : 0|3@1+ (1,0) [0|5] "" Receiver + SG_ BMS_fcLinkOkToEnergizeRequest : 32|2@1+ (1,0) [0|2] "" Receiver + SG_ BMS_gpoHasCompleted : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_internalHvilSenseV : 16|16@1+ (0.001,0) [0|65.534] "V" Receiver + SG_ BMS_packContactorRequest : 3|3@1+ (1,0) [0|5] "" Receiver + SG_ BMS_pcsPwmDisable : 8|1@1+ (1,0) [0|1] "" Receiver + +BO_ 627 ID273UI_vehicleControl: 8 VehicleBus + SG_ UI_accessoryPowerRequest : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_alarmEnabled : 20|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_ambientLightingEnabled : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_autoFoldMirrorsOn : 52|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_autoHighBeamEnabled : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_childDoorLockOn : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_displayBrightnessLevel : 32|8@1+ (0.5,0) [0|127] "%" Receiver + SG_ UI_domeLightSwitch : 59|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_driveStateRequest : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_frontFogSwitch : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_frontLeftSeatHeatReq : 42|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_frontRightSeatHeatReq : 44|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_frunkRequest : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_globalUnlockOn : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_honkHorn : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_intrusionSensorOn : 21|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_lockRequest : 17|3@1+ (1,0) [0|7] "" Receiver + SG_ UI_mirrorDipOnReverse : 53|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_mirrorFoldRequest : 24|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_mirrorHeatRequest : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_powerOff : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rearCenterSeatHeatReq : 48|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_rearFogSwitch : 23|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rearLeftSeatHeatReq : 46|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_rearRightSeatHeatReq : 50|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_rearWindowLockout : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_remoteClosureRequest : 54|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_remoteStartRequest : 27|3@1+ (1,0) [0|4] "" Receiver + SG_ UI_seeYouHomeLightingOn : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_steeringBacklightEnabled : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_steeringButtonMode : 9|3@1+ (1,0) [0|5] "" Receiver + SG_ UI_stop12vSupport : 22|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_summonActive : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_unlockOnPark : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_walkAwayLock : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_walkUpUnlock : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_wiperMode : 6|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_wiperRequest : 56|3@1+ (1,0) [0|6] "" Receiver + +BO_ 637 ID27DCP_dcChargeLimits: 8 VehicleBus + SG_ CP_evseInstantDcCurrentLimit : 52|12@1+ (0.146484,0) [0|599.854] "A" Receiver + SG_ CP_evseMaxDcCurrentLimit : 0|13@1+ (0.0732422,0) [0|599.927] "A" Receiver + SG_ CP_evseMaxDcVoltageLimit : 26|13@1+ (0.0732422,0) [0|599.927] "V" Receiver + SG_ CP_evseMinDcCurrentLimit : 13|13@1+ (0.0732422,0) [0|599.927] "A" Receiver + SG_ CP_evseMinDcVoltageLimit : 39|13@1+ (0.0732422,0) [0|599.927] "V" Receiver + +BO_ 701 ID2BDCP_dcPowerLimits: 4 VehicleBus + SG_ CP_evseInstantDcPowerLimit : 0|13@1+ (0.0622559,0) [0|509.938] "kW" Receiver + SG_ CP_evseMaxDcPowerLimit : 16|13@1+ (0.0622559,0) [0|509.938] "kW" Receiver + +BO_ 1066 ID42AVCSEC_TPMSConnectionData: 8 VehicleBus + SG_ VCSEC_TPMSConnectionTypeCurrent0 : 11|2@1+ (1,0) [0|2] "" Receiver + SG_ VCSEC_TPMSConnectionTypeCurrent1 : 26|2@1+ (1,0) [0|2] "" Receiver + SG_ VCSEC_TPMSConnectionTypeCurrent2 : 41|2@1+ (1,0) [0|2] "" Receiver + SG_ VCSEC_TPMSConnectionTypeCurrent3 : 56|2@1+ (1,0) [0|2] "" Receiver + SG_ VCSEC_TPMSConnectionTypeDesired0 : 13|2@1+ (1,0) [0|2] "" Receiver + SG_ VCSEC_TPMSConnectionTypeDesired1 : 28|2@1+ (1,0) [0|2] "" Receiver + SG_ VCSEC_TPMSConnectionTypeDesired2 : 43|2@1+ (1,0) [0|2] "" Receiver + SG_ VCSEC_TPMSConnectionTypeDesired3 : 58|2@1+ (1,0) [0|2] "" Receiver + SG_ VCSEC_TPMSRSSI0 : 3|8@1- (1,0) [-127|0] "dBm" Receiver + SG_ VCSEC_TPMSRSSI1 : 18|8@1- (1,0) [-127|0] "dBm" Receiver + SG_ VCSEC_TPMSRSSI2 : 33|8@1- (1,0) [-127|0] "dBm" Receiver + SG_ VCSEC_TPMSRSSI3 : 48|8@1- (1,0) [-127|0] "dBm" Receiver + SG_ VCSEC_TPMSSensorState0 : 0|3@1+ (1,0) [0|4] "" Receiver + SG_ VCSEC_TPMSSensorState1 : 15|3@1+ (1,0) [0|4] "" Receiver + SG_ VCSEC_TPMSSensorState2 : 30|3@1+ (1,0) [0|4] "" Receiver + SG_ VCSEC_TPMSSensorState3 : 45|3@1+ (1,0) [0|4] "" Receiver + +BO_ 558 ID22EPARK_sdiRear: 8 VehicleBus + SG_ PARK_sdiRearChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ PARK_sdiRearCounter : 54|2@1+ (1,0) [0|3] "" Receiver + SG_ PARK_sdiSensor10RawDistData : 27|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor11RawDistData : 36|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor12RawDistData : 45|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor7RawDistData : 0|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor8RawDistData : 9|9@1+ (1,0) [0|511] "cm" Receiver + SG_ PARK_sdiSensor9RawDistData : 18|9@1+ (1,0) [0|511] "cm" Receiver + +BO_ 568 ID238UI_driverAssistMapData: 8 ChassisBus + SG_ UI_acceptBottsDots : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_autosteerRestricted : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_controlledAccess : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_countryCode : 16|10@1+ (1,0) [0|1023] "" Receiver + SG_ UI_gpsRoadMatch : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_inSuperchargerGeofence : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_mapDataChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ UI_mapDataCounter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_mapSpeedLimit : 8|5@1+ (1,0) [0|31] "" Receiver + SG_ UI_mapSpeedLimitDependency : 0|3@1+ (1,0) [0|7] "" Receiver + SG_ UI_mapSpeedLimitType : 13|3@1+ (1,0) [0|7] "" Receiver + SG_ UI_mapSpeedUnits : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_navRouteActive : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_nextBranchDist : 32|5@1+ (10,0) [0|300] "m" Receiver + SG_ UI_nextBranchLeftOffRamp : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_nextBranchRightOffRamp : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_parallelAutoparkEnabled : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_perpendicularAutoparkEnabled : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_pmmEnabled : 50|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rejectAutosteer : 46|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rejectHPP : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rejectHandsOn : 47|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rejectLeftFreeSpace : 44|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rejectLeftLane : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rejectNav : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rejectRightFreeSpace : 45|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_rejectRightLane : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_roadClass : 3|3@1+ (1,0) [0|6] "" Receiver + SG_ UI_scaEnabled : 51|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_streetCount : 26|2@1+ (1,0) [0|3] "" Receiver + +BO_ 569 ID239DAS_lanes: 8 ChassisBus + SG_ DAS_lanesCounter : 60|4@1+ (1,0) [0|15] "" Receiver + SG_ DAS_leftFork : 52|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_leftLaneExists : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_leftLineUsage : 48|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_rightFork : 54|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_rightLaneExists : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_rightLineUsage : 50|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_virtualLaneC0 : 16|8@1+ (0.035,-3.5) [-3.5|3.5] "m" Receiver + SG_ DAS_virtualLaneC1 : 24|8@1+ (0.0016,-0.2) [-0.2|0.2] "rad" Receiver + SG_ DAS_virtualLaneC2 : 32|8@1+ (2E-005,-0.0025) [-0.0025|0.0025] "m-1" Receiver + SG_ DAS_virtualLaneC3 : 40|8@1+ (2.4E-007,-3E-005) [-3E-005|3E-005] "m-2" Receiver + SG_ DAS_virtualLaneViewRange : 8|8@1+ (1,0) [0|160] "m" Receiver + SG_ DAS_virtualLaneWidth : 4|4@1+ (0.3125,2) [2|6.6875] "m" Receiver + +BO_ 586 ID24ADAS_visualDebug: 8 ChassisBus + SG_ DAS_accSmartSpeedActive : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_accSmartSpeedState : 49|3@1+ (1,0) [0|7] "" Receiver + SG_ DAS_autosteerBottsDotsUsage : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_autosteerHPPUsage : 6|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_autosteerHealthAnomalyLevel : 18|3@1+ (1,0) [0|7] "" Receiver + SG_ DAS_autosteerHealthState : 21|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_autosteerModelUsage : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_autosteerNavigationUsage : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_autosteerVehiclesUsage : 4|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_behaviorType : 56|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_devAppInterfaceEnabled : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_lastAutosteerAbortReason : 32|6@1+ (1,0) [0|34] "" Receiver + SG_ DAS_lastLinePreferenceReason : 24|4@1+ (1,0) [0|15] "" Receiver + SG_ DAS_navAvailable : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_navDistance : 40|8@1+ (100,0) [0|25500] "km" Receiver + SG_ DAS_offsetSide : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_plannerState : 28|4@1+ (1,0) [0|7] "" Receiver + SG_ DAS_rearLeftVehDetectedCurrent : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_rearLeftVehDetectedTrip : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_rearRightVehDetectedTrip : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_rearVehDetectedThisCycle : 60|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_roadSurfaceType : 16|2@1+ (1,0) [0|2] "" Receiver + SG_ DAS_ulcInProgress : 52|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_ulcType : 58|2@1+ (1,0) [0|2] "" Receiver + +BO_ 603 ID25BAPP_environment: 1 ChassisBus + SG_ APP_environmentRainy : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ APP_environmentSnowy : 1|1@1+ (1,0) [0|1] "" Receiver + +BO_ 605 ID25DCP_status: 8 VehicleBus + SG_ CP_UHF_controlState : 38|4@1+ (1,0) [0|10] "" Receiver + SG_ CP_UHF_handleFound : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_apsVoltage : 24|8@1+ (0.0715686,0) [0|18.249] "V" Receiver + SG_ CP_chargeCablePresent : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_chargeCableSecured : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_chargeCableState : 14|2@1+ (1,0) [0|2] "" Receiver + SG_ CP_chargeDoorOpen : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_chargeDoorOpenUI : 51|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_coldWeatherMode : 60|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_coverClosed : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_doorButtonPressed : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_doorControlState : 11|3@1+ (1,0) [0|6] "" Receiver + SG_ CP_doorOpenRequested : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_faultLineSensed : 44|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_hvInletExposed : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_inductiveDoorState : 45|3@1+ (1,0) [0|7] "" Receiver + SG_ CP_inductiveSensorState : 48|3@1+ (1,0) [0|7] "" Receiver + SG_ CP_insertEnableLine : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_latch2ControlState : 19|3@1+ (1,0) [0|5] "" Receiver + SG_ CP_latch2State : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ CP_latchControlState : 16|3@1+ (1,0) [0|5] "" Receiver + SG_ CP_latchEngaged : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_latchState : 5|2@1+ (1,0) [0|3] "" Receiver + SG_ CP_ledColor : 33|4@1+ (1,0) [0|10] "" Receiver + SG_ CP_numAlertsSet : 53|7@1+ (1,0) [0|127] "" Receiver + SG_ CP_permanentPowerRequest : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_swcanRelayClosed : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_type : 0|2@1+ (1,0) [0|3] "" Receiver + SG_ CP_vehicleUnlockRequest : 52|1@1+ (1,0) [0|1] "" Receiver + +BO_ 669 ID29DCP_dcChargeStatus: 4 VehicleBus + SG_ CP_evseOutputDcCurrent : 0|15@1- (0.0732467,0) [-1200|1200] "A" Receiver + SG_ CP_evseOutputDcCurrentStale : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_evseOutputDcVoltage : 16|13@1+ (0.0732422,0) [0|599.927] "V" Receiver + +BO_ 692 ID2B4PCS_dcdcRailStatus: 5 VehicleBus + SG_ PCS_dcdcHvBusVolt : 10|12@1+ (0.146484,0) [0|599.854] "V" Receiver + SG_ PCS_dcdcLvBusVolt : 0|10@1+ (0.0390625,0) [0|39.9609] "V" Receiver + SG_ PCS_dcdcLvOutputCurrent : 24|12@1+ (0.1,0) [0|400] "A" Receiver + +BO_ 697 ID2B9DAS_control: 8 ChassisBus + SG_ DAS_accState : 12|4@1+ (1,0) [0|15] "" Receiver + SG_ DAS_accelMax : 44|9@1+ (0.04,-15) [-15|5.44] "m/s^2" Receiver + SG_ DAS_accelMin : 35|9@1+ (0.04,-15) [-15|5.44] "m/s^2" Receiver + SG_ DAS_aebEvent : 16|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_controlChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ DAS_controlCounter : 53|3@1+ (1,0) [0|7] "" Receiver + SG_ DAS_jerkMax : 27|8@1+ (0.059,0) [0|15.045] "m/s^3" Receiver + SG_ DAS_jerkMin : 18|9@1+ (0.03,-15.232) [-15.232|0.098] "m/s^3" Receiver + SG_ DAS_setSpeed : 0|12@1+ (0.1,0) [0|409.4] "kph" Receiver + +BO_ 723 ID2D3UI_solarData: 8 ChassisBus + SG_ UI_isSunUp : 25|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_minsToSunrise : 56|8@1+ (10,0) [0|2550] "min" Receiver + SG_ UI_minsToSunset : 48|8@1+ (10,0) [0|2550] "min" Receiver + SG_ UI_screenPCBTemperature : 40|8@1- (0.5,40) [-20|100] "C" Receiver + SG_ UI_solarAzimuthAngle : 0|16@1- (1,0) [-32767|32767] "deg" Receiver + SG_ UI_solarAzimuthAngleCarRef : 16|9@1- (1,0) [-256|254] "deg" Receiver + SG_ UI_solarElevationAngle : 32|8@1- (1,0) [-128|126] "deg" Receiver + +BO_ 777 ID309DAS_object: 8 VehicleBus + SG_ DAS_objectId M : 0|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_cutinVehDx m3 : 8|8@1+ (0.5,0) [0|127] "m" Receiver + SG_ DAS_cutinVehDy m3 : 20|7@1+ (0.35,-22.05) [-22.05|22.4] "m" Receiver + SG_ DAS_cutinVehHeading m5 : 56|8@1+ (0.0245437,-3.14159) [-3.14159|3.09251] "rad" Receiver + SG_ DAS_cutinVehId m3 : 27|7@1+ (1,0) [0|127] "" Receiver + SG_ DAS_cutinVehRelevantForControl m3 : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_cutinVehType m3 : 3|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_cutinVehVxRel m3 : 16|4@1+ (4,-30) [-30|26] "m/s" Receiver + SG_ DAS_leadVeh2Dx m0 : 39|8@1+ (0.5,0) [0|127] "m" Receiver + SG_ DAS_leadVeh2Dy m0 : 51|7@1+ (0.35,-22.05) [-22.05|22.4] "m" Receiver + SG_ DAS_leadVeh2Heading m5 : 16|8@1+ (0.0245437,-3.14159) [-3.14159|3.09251] "rad" Receiver + SG_ DAS_leadVeh2Id m0 : 58|6@1+ (1,0) [0|63] "" Receiver + SG_ DAS_leadVeh2RelevantForControl m0 : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_leadVeh2Type m0 : 34|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_leadVeh2VxRel m0 : 47|4@1+ (4,-30) [-30|26] "m/s" Receiver + SG_ DAS_leadVehDx m0 : 8|8@1+ (0.5,0) [0|127] "m" Receiver + SG_ DAS_leadVehDy m0 : 20|7@1+ (0.35,-22.05) [-22.05|22.4] "m" Receiver + SG_ DAS_leadVehHeading m5 : 8|8@1+ (0.0245437,-3.14159) [-3.14159|3.09251] "rad" Receiver + SG_ DAS_leadVehId m0 : 27|7@1+ (1,0) [0|127] "" Receiver + SG_ DAS_leadVehRelevantForControl m0 : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_leadVehType m0 : 3|3@1+ (1,0) [0|6] "" Receiver + SG_ DAS_leadVehVxRel m0 : 16|4@1+ (4,-30) [-30|26] "m/s" Receiver + SG_ DAS_leftVeh2Dx m1 : 39|8@1+ (0.5,0) [0|127] "m" Receiver + SG_ DAS_leftVeh2Dy m1 : 51|7@1+ (0.35,-22.05) [-22.05|22.4] "m" Receiver + SG_ DAS_leftVeh2Heading m5 : 32|8@1+ (0.0245437,-3.14159) [-3.14159|3.09251] "rad" Receiver + SG_ DAS_leftVeh2Id m1 : 58|6@1+ (1,0) [0|63] "" Receiver + SG_ DAS_leftVeh2RelevantForControl m1 : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_leftVeh2Type m1 : 34|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_leftVeh2VxRel m1 : 47|4@1+ (4,-30) [-30|26] "m/s" Receiver + SG_ DAS_leftVehDx m1 : 8|8@1+ (0.5,0) [0|127] "m" Receiver + SG_ DAS_leftVehDy m1 : 20|7@1+ (0.35,-22.05) [-22.05|22.4] "m" Receiver + SG_ DAS_leftVehHeading m5 : 24|8@1+ (0.0245437,-3.14159) [-3.14159|3.09251] "rad" Receiver + SG_ DAS_leftVehId m1 : 27|7@1+ (1,0) [0|127] "" Receiver + SG_ DAS_leftVehRelevantForControl m1 : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_leftVehType m1 : 3|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_leftVehVxRel m1 : 16|4@1+ (4,-30) [-30|26] "m/s" Receiver + SG_ DAS_rightVeh2Dx m2 : 39|8@1+ (0.5,0) [0|127] "m" Receiver + SG_ DAS_rightVeh2Dy m2 : 51|7@1+ (0.35,-22.05) [-22.05|22.4] "m" Receiver + SG_ DAS_rightVeh2Heading m5 : 48|8@1+ (0.0245437,-3.14159) [-3.14159|3.09251] "rad" Receiver + SG_ DAS_rightVeh2Id m2 : 58|6@1+ (1,0) [0|63] "" Receiver + SG_ DAS_rightVeh2RelevantForControl m2 : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_rightVeh2Type m2 : 34|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_rightVeh2VxRel m2 : 47|4@1+ (4,-30) [-30|26] "m/s" Receiver + SG_ DAS_rightVehDx m2 : 8|8@1+ (0.5,0) [0|127] "m" Receiver + SG_ DAS_rightVehDy m2 : 20|7@1+ (0.35,-22.05) [-22.05|22.4] "m" Receiver + SG_ DAS_rightVehHeading m5 : 40|8@1+ (0.0245437,-3.14159) [-3.14159|3.09251] "rad" Receiver + SG_ DAS_rightVehId m2 : 27|7@1+ (1,0) [0|127] "" Receiver + SG_ DAS_rightVehRelevantForControl m2 : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_rightVehType m2 : 3|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_rightVehVxRel m2 : 16|4@1+ (4,-30) [-30|26] "m/s" Receiver + SG_ DAS_roadSignArrow m4 : 27|3@1+ (1,0) [0|4] "" Receiver + SG_ DAS_roadSignColor m4 : 3|3@1+ (1,0) [0|4] "" Receiver + SG_ DAS_roadSignControlActive m4 : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_roadSignId m4 : 6|8@1+ (1,0) [0|255] "" Receiver + SG_ DAS_roadSignOrientation m4 : 30|2@1+ (1,0) [0|2] "" Receiver + SG_ DAS_roadSignSource m4 : 25|2@1+ (1,0) [0|2] "" Receiver + SG_ DAS_roadSignStopLineDist m4 : 14|10@1+ (0.2,-20) [-20|184.4] "m" Receiver + +BO_ 905 ID389DAS_status2: 8 ChassisBus + SG_ DAS_ACC_report : 26|5@1+ (1,0) [0|24] "" Receiver + SG_ DAS_accSpeedLimit : 0|10@1+ (0.2,0) [0|204.6] "mph" Receiver + SG_ DAS_activationFailureStatus : 14|2@1+ (1,0) [0|2] "" Receiver + SG_ DAS_csaState : 32|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_driverInteractionLevel : 38|2@1+ (1,0) [0|2] "" Receiver + SG_ DAS_longCollisionWarning : 48|4@1+ (1,0) [0|15] "" Receiver + SG_ DAS_pmmCameraFaultReason : 24|2@1+ (1,0) [0|2] "" Receiver + SG_ DAS_pmmLoggingRequest : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_pmmObstacleSeverity : 10|3@1+ (1,0) [0|7] "" Receiver + SG_ DAS_pmmRadarFaultReason : 19|2@1+ (1,0) [0|2] "" Receiver + SG_ DAS_pmmSysFaultReason : 21|3@1+ (1,0) [0|7] "" Receiver + SG_ DAS_pmmUltrasonicsFaultReason : 16|3@1+ (1,0) [0|4] "" Receiver + SG_ DAS_ppOffsetDesiredRamp : 40|8@1+ (0.01,-1.28) [-1.28|1.27] "m" Receiver + SG_ DAS_radarTelemetry : 34|2@1+ (1,0) [0|2] "" Receiver + SG_ DAS_relaxCruiseLimits : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_robState : 36|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_status2Checksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ DAS_status2Counter : 52|4@1+ (1,0) [0|15] "" Receiver + +BO_ 921 ID399DAS_status: 8 ChassisBus + SG_ DAS_autoLaneChangeState : 46|5@1+ (1,0) [0|31] "" Receiver + SG_ DAS_autoParked : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_autoparkReady : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_autoparkWaitingForBrake : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_autopilotHandsOnState : 42|4@1+ (1,0) [0|15] "" Receiver + SG_ DAS_autopilotState : 0|4@1+ (1,0) [0|15] "" Receiver + SG_ DAS_blindSpotRearLeft : 4|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_blindSpotRearRight : 6|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_fleetSpeedState : 40|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_forwardCollisionWarning : 22|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_fusedSpeedLimit : 8|5@1+ (5,0) [0|150] "kph/mph" Receiver + SG_ DAS_heaterState : 21|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_laneDepartureWarning : 37|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_lssState : 29|3@1+ (1,0) [0|7] "" Receiver + SG_ DAS_sideCollisionAvoid : 32|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_sideCollisionInhibit : 36|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_sideCollisionWarning : 34|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_statusChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ DAS_statusCounter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ DAS_summonAvailable : 51|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_summonClearedGate : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_summonFwdLeashReached : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_summonObstacle : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_summonRvsLeashReached : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_suppressSpeedWarning : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_visionOnlySpeedLimit : 16|5@1+ (5,0) [0|150] "kph/mph" Receiver + +BO_ 925 ID39DIBST_status: 5 ChassisBus + SG_ IBST_driverBrakeApply : 16|2@1+ (1,0) [0|3] "" Receiver + SG_ IBST_iBoosterStatus : 12|3@1+ (1,0) [0|6] "" Receiver + SG_ IBST_internalState : 18|3@1+ (1,0) [0|6] "" Receiver + SG_ IBST_sInputRodDriver : 21|12@1+ (0.015625,-5) [-5|47] "mm" Receiver + SG_ IBST_statusChecksum : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ IBST_statusCounter : 8|4@1+ (1,0) [0|15] "" Receiver + +BO_ 929 ID3A1VCFRONT_vehicleStatus: 8 VehicleBus + SG_ VCFRONT_12vStatusForDrive : 14|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_2RowCenterUnbuckled : 38|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_2RowLeftUnbuckled : 36|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_2RowRightUnbuckled : 40|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_APGlassHeaterState : 2|3@1+ (1,0) [0|4] "" Receiver + SG_ VCFRONT_accPlusAvailable : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_batterySupportRequest : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_bmsHvChargeEnable : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_diPowerOnState : 10|3@1+ (1,0) [0|4] "" Receiver + SG_ VCFRONT_driverBuckleStatus : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_driverDoorStatus : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_driverIsLeaving : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_driverIsLeavingAnySpeed : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_driverPresent : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_driverUnbuckled : 32|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_ota12VSupportRequest : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_passengerPresent : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_passengerUnbuckled : 34|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_pcs12vVoltageTarget : 16|11@1+ (0.01,0) [0|16] "V" Receiver + SG_ VCFRONT_pcsEFuseVoltage : 42|10@1+ (0.1,0) [0|102.2] "V" Receiver + SG_ VCFRONT_preconditionRequest : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_standbySupplySupported : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_thermalSystemType : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_vehicleStatusChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_vehicleStatusCounter : 52|4@1+ (1,0) [0|15] "" Receiver + +BO_ 985 ID3D9UI_gpsVehicleSpeed: 8 ChassisBus + SG_ UI_conditionalLimitActive : 55|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_conditionalSpeedLimit : 56|5@1+ (5,0) [0|155] "kph/mph" Receiver + SG_ UI_gpsAntennaDisconnected : 54|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_gpsHDOP : 0|8@1+ (0.1,0) [0|25.5] "" Receiver + SG_ UI_gpsNmeaMIA : 53|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_gpsVehicleHeading : 8|16@1+ (0.0078125,0) [0|511.992] "deg" Receiver + SG_ UI_gpsVehicleSpeed : 24|16@1+ (0.00390625,0) [0|250.996] "kph" Receiver + SG_ UI_mapSpeedLimitUnits : 46|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_mppSpeedLimit : 48|5@1+ (5,0) [0|155] "kph/mph" Receiver + SG_ UI_userSpeedOffset : 40|6@1+ (1,-30) [-30|33] "kph/mph" Receiver + SG_ UI_userSpeedOffsetUnits : 47|1@1+ (1,0) [0|1] "" Receiver + +BO_ 994 ID3E2VCLEFT_lightStatus: 7 VehicleBus + SG_ VCLEFT_FLMapLightStatus : 6|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_FLMapLightSwitchPressed : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_FRMapLightStatus : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_FRMapLightSwitchPressed : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_RLMapLightStatus : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_RLMapLightSwitchPressed : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_RRMapLightStatus : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_RRMapLightSwitchPressed : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_brakeLightStatus : 0|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_brakeTrailerLightStatus : 22|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_dynamicBrakeLightStatus : 44|2@1+ (1,0) [0|2] "" Receiver + SG_ VCLEFT_fogTrailerLightStatus : 26|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontRideHeight : 28|8@1- (1,0) [-127|127] "mm" Receiver + SG_ VCLEFT_leftTurnTrailerLightStatu : 18|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_rearRideHeight : 36|8@1- (1,0) [-127|127] "mm" Receiver + SG_ VCLEFT_reverseTrailerLightStatus : 49|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_rideHeightSensorFault : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_rightTrnTrailerLightStatu : 20|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_tailLightOutageStatus : 51|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_tailLightStatus : 2|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_tailTrailerLightStatus : 24|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_trailerDetected : 46|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_turnSignalStatus : 4|2@1+ (1,0) [0|3] "" Receiver + +BO_ 1001 ID3E9DAS_bodyControls: 8 VehicleBus + SG_ DAS_bodyControlsChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ DAS_bodyControlsCounter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ DAS_dynamicBrakeLightRequest : 22|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_hazardLightRequest : 2|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_headlightRequest : 0|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_heaterRequest : 13|2@1+ (1,0) [0|2] "" Receiver + SG_ DAS_highLowBeamDecision : 11|2@1+ (1,0) [0|3] "" Receiver + SG_ DAS_highLowBeamOffReason : 15|3@1+ (1,0) [0|5] "" Receiver + SG_ DAS_turnIndicatorRequest : 8|3@1+ (1,0) [0|4] "" Receiver + SG_ DAS_turnIndicatorRequestReason : 18|4@1+ (1,0) [0|12] "" Receiver + SG_ DAS_wiperSpeed : 4|4@1+ (1,0) [0|15] "" Receiver + SG_ DAS_radarHeaterRequest : 23|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_ahlbOverride : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ DAS_mirrorFoldRequest : 25|2@1+ (1,0) [0|0] "" Receiver + +BO_ 1011 ID3F3UI_odo: 3 ChassisBus + SG_ UI_odometer : 0|24@1+ (0.1,0) [0|1677720] "km" Receiver + +BO_ 1013 ID3F5VCFRONT_lighting: 8 VehicleBus + SG_ VCFRONT_DRLLeftStatus : 36|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_DRLRightStatus : 38|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_ambientLightingBrightnes : 8|8@1+ (0.5,0) [0|127] "%" Receiver + SG_ VCFRONT_approachLightingRequest : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_courtesyLightingRequest : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_fogLeftStatus : 40|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_fogRightStatus : 42|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_hazardLightRequest : 4|4@1+ (1,0) [0|8] "" Receiver + SG_ VCFRONT_hazardSwitchBacklight : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_highBeamLeftStatus : 32|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_highBeamRightStatus : 34|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_highBeamSwitchActive : 58|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_indicatorLeftRequest : 0|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_indicatorRightRequest : 2|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_lowBeamLeftStatus : 28|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_lowBeamRightStatus : 30|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_lowBeamsCalibrated : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_lowBeamsOnForDRL : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_parkLeftStatus : 54|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_parkRightStatus : 56|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_seeYouHomeLightingReq : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_sideMarkersStatus : 44|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_sideRepeaterLeftStatus : 46|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_sideRepeaterRightStatus : 48|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_simLatchingStalk : 59|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_switchLightingBrightness : 16|8@1+ (0.5,0) [0|127] "%" Receiver + SG_ VCFRONT_turnSignalLeftStatus : 50|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_turnSignalRightStatus : 52|2@1+ (1,0) [0|3] "" Receiver + +BO_ 1016 ID3F8UI_driverAssistControl: 8 ChassisBus + SG_ UI_accFollowDistanceSetting : 45|3@1+ (1,0) [0|7] "" Receiver + SG_ UI_adaptiveSetSpeedEnable : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_alcOffHighwayEnable : 56|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_autoSummonEnable : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_autopilotControlRequest : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_coastToCoast : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_curvSpeedAdaptDisable : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_curvatureDatabaseOnly : 22|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_dasDeveloper : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_driveOnMapsEnable : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_drivingSide : 40|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_enableBrakeLightPulse : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_enableClipTelemetry : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_enableRoadSegmentTelemetry : 44|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_enableTripTelemetry : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_enableVinAssociation : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_enableVisionOnlyStops : 60|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_exceptionListEnable : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_followNavRouteEnable : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_fuseHPPDisable : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_fuseLanesDisable : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_fuseVehiclesDisable : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_handsOnRequirementDisable : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_hasDriveOnNav : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_lssElkEnabled : 23|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_lssLdwEnabled : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_lssLkaEnabled : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_roadCheckDisable : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_selfParkRequest : 28|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_smartSummonType : 58|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_source3D : 61|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_summonEntryType : 26|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_summonExitType : 24|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_summonHeartbeat : 2|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_summonReverseDist : 32|6@1+ (1,0) [0|63] "" Receiver + SG_ UI_ulcBlindSpotConfig : 52|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_ulcOffHighway : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_ulcSpeedConfig : 50|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_ulcStalkConfirm : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_undertakeAssistEnable : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_validationLoop : 57|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_visionSpeedType : 20|2@1+ (1,0) [0|3] "" Receiver + +BO_ 1021 ID3FDUI_autopilotControl: 8 ChassisBus + SG_ UI_autopilotControlIndex M : 0|3@1+ (1,0) [0|7] "" Receiver + SG_ UI_apmv3Branch m1 : 40|3@1+ (1,0) [0|5] "" Receiver + SG_ UI_applyEceR79 m1 : 19|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_blindspotDistance m0 : 15|3@1+ (1,0) [0|5] "" Receiver + SG_ UI_blindspotMinSpeed m0 : 11|4@1+ (1,0) [0|10] "" Receiver + SG_ UI_blindspotTTC m0 : 18|3@1+ (1,0) [0|7] "" Receiver + SG_ UI_disableBackup m1 : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_disableFisheye m1 : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_disableLeftPillar m1 : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_disableLeftRepeater m1 : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_disableMain m1 : 23|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_disableNarrow m1 : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_disableRadar m1 : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_disableRightPillar m1 : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_disableRightRepeater m1 : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_donAlcProgGoreAbortThres m0 : 29|4@1+ (1,0) [0|9] "" Receiver + SG_ UI_donDisableAutoWiperDuration m0 : 4|3@1+ (1,0) [0|6] "" Receiver + SG_ UI_donDisableCutin m0 : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_donDisableOnAutoWiperSpeed m0 : 7|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_donMinGoreWidthForAbortMap m0 : 25|4@1+ (1,0) [0|11] "" Receiver + SG_ UI_donMinGoreWidthForAbortNotMap m0 : 33|4@1+ (1,0) [0|11] "" Receiver + SG_ UI_donStopEndOfRampBuffer m0 : 21|3@1+ (1,0) [0|4] "" Receiver + SG_ UI_driverMonitorConfirmation m1 : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_enableAutopilotStopWarning m1 : 44|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_enableCabinCamera m1 : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_enableCabinCameraTelemetry m1 : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_enableMapStops m1 : 20|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_factorySummonEnable m1 : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_fsdStopsControlEnabled m0 : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_fsdVisualizationEnabled m0 : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_hardCoreSummon m1 : 47|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_homelinkNearby m0 : 45|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_hovEnabled m0 : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_noStalkConfirmAlertChime m1 : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_noStalkConfirmAlertHaptic m1 : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_showLaneGraph m1 : 45|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_showTrackLabels m1 : 46|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_ulcSnooze m1 : 36|1@1+ (1,0) [0|1] "" Receiver + +BO_ 615 ID267DI_vehicleEstimates: 8 VehicleBus + SG_ DI_gradeEst : 33|7@1- (1,0) [-40|40] "%" Receiver + SG_ DI_gradeEstInternal : 48|7@1- (1,0) [-40|40] "%" Receiver + SG_ DI_mass : 0|10@1+ (5,1900) [1900|7010] "kg" Receiver + SG_ DI_massConfidence : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_relativeTireTreadDepth : 16|6@1- (0.2,0) [-6.2|6.2] "mm" Receiver + SG_ DI_steeringAngleOffset : 56|8@1- (0.2,0) [-25.6|25.4] "Deg" Receiver + SG_ DI_tireFitment : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ DI_trailerDetected : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_vehicleEstimatesChecksum : 40|8@1+ (1,0) [0|255] "" Receiver + SG_ DI_vehicleEstimatesCounter : 13|3@1+ (1,0) [0|7] "" Receiver + +BO_ 642 ID282VCLEFT_hvacBlowerFeedback: 8 VehicleBus + SG_ VCLEFT_blowerIndex M : 0|2@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlowerCBCCtrlState m1 : 58|3@1+ (1,0) [0|4] "" Receiver + SG_ VCLEFT_hvacBlowerCBCEstState m1 : 54|4@1+ (1,0) [0|14] "" Receiver + SG_ VCLEFT_hvacBlowerEnabled m0 : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlowerFETTemp m0 : 44|7@1+ (1.5,-40) [-40|149] "C" Receiver + SG_ VCLEFT_hvacBlowerFault m0 : 59|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlowerIPhase0 m1 : 10|8@1+ (0.2,0) [0|50] "A" Receiver + SG_ VCLEFT_hvacBlowerIPhase1 m1 : 18|8@1+ (0.2,0) [0|50] "A" Receiver + SG_ VCLEFT_hvacBlowerIPhase2 m1 : 26|8@1+ (0.2,0) [0|50] "A" Receiver + SG_ VCLEFT_hvacBlowerITerm m0 : 51|7@1+ (0.05,-1.5) [-1.5|4.5] "Nm" Receiver + SG_ VCLEFT_hvacBlowerInitd m0 : 58|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlowerLimitFETTemps m0 : 60|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlowerOutputDuty m0 : 3|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCLEFT_hvacBlowerPowerOn m0 : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlowerRPMActual m0 : 20|10@1+ (10,0) [0|10000] "rpm" Receiver + SG_ VCLEFT_hvacBlowerRPMTarget m0 : 10|10@1+ (10,0) [0|10000] "rpm" Receiver + SG_ VCLEFT_hvacBlowerRs m1 : 2|8@1+ (0.25,0) [0|60] "mOhm" Receiver + SG_ VCLEFT_hvacBlowerRsOnlineActive m1 : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlowerSpiError m0 : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlowerTorque m0 : 34|10@1+ (0.006,-1.5) [-1.5|4.5] "Nm" Receiver + SG_ VCLEFT_hvacBlower_IO_CBC_HEAD m1 : 34|4@1+ (1,0) [0|15] "" Receiver + SG_ VCLEFT_hvacBlower_IO_CBC_Status m1 : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlower_IO_CBC_TAIL m1 : 38|4@1+ (1,0) [0|15] "" Receiver + SG_ VCLEFT_hvacBlower_IO_CBC_TAIL_va m1 : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hvacBlower_IO_CBC_numUart m1 : 46|8@1+ (1,0) [0|255] "" Receiver + +BO_ 755 ID2F3UI_hvacRequest: 5 VehicleBus + SG_ UI_hvacReqACDisable : 22|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_hvacReqAirDistributionMode : 13|3@1+ (1,0) [0|7] "" Receiver + SG_ UI_hvacReqBlowerSegment : 16|4@1+ (1,0) [0|11] "" Receiver + SG_ UI_hvacReqKeepClimateOn : 33|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_hvacReqManualDefogState : 24|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_hvacReqRecirc : 20|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_hvacReqSecondRowState : 29|3@1+ (1,0) [0|4] "" Receiver + SG_ UI_hvacReqTempSetpointLeft : 0|5@1+ (0.5,15) [15|28] "C" Receiver + SG_ UI_hvacReqTempSetpointRight : 8|5@1+ (0.5,15) [15|28] "C" Receiver + SG_ UI_hvacReqUserPowerState : 26|3@1+ (1,0) [0|4] "" Receiver + SG_ UI_hvacUseModeledDuctTemp : 32|1@1+ (1,0) [0|1] "" Receiver + +BO_ 787 ID313UI_trackModeSettings: 8 VehicleBus + SG_ UI_trackCmpOverclock : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_trackModeRequest : 0|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_trackModeSettingsChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ UI_trackModeSettingsCounter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_trackPostCooling : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_trackRotationTendency : 8|8@1+ (0.5,0) [0|100] "%" Receiver + SG_ UI_trackStabilityAssist : 16|8@1+ (0.5,0) [0|100] "%" Receiver + +BO_ 821 ID335RearDIinfo: 8 VehicleBus + SG_ DIR_infoIndex M : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ DIR_FPGA_version m16 : 48|8@1+ (1,0) [0|255] "" Receiver + SG_ DIR_appGitHash m17 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ DIR_applicationCrc m13 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ DIR_assemblyId m11 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ DIR_bootGitHash m18 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ DIR_bootloaderCrc m20 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ DIR_buildConfigurationId m10 : 16|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIR_buildType m10 : 8|3@1+ (1,0) [0|4] "" Receiver + SG_ DIR_componentId m10 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIR_hardwareId m10 : 32|8@1+ (1,0) [0|252] "" Receiver + SG_ DIR_infoBootLdUdsProtocolVersion m20 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ DIR_oilPumpAppCrc m16 : 16|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ DIR_oilPumpBuildType m16 : 8|3@1+ (1,0) [0|4] "" Receiver + SG_ DIR_pcbaId m11 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ DIR_platformTyp m19 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ DIR_subUsageId m11 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIR_subcomponentGitHash m31 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ DIR_usageId m11 : 32|16@1+ (1,0) [0|65535] "" Receiver + +BO_ 899 ID383VCRIGHT_thsStatus: 8 VehicleBus + SG_ VCRIGHT_estimatedThsSolarLoad : 53|10@1+ (1,0) [0|1022] "W/m2" Receiver + SG_ VCRIGHT_estimatedVehicleSituatio : 31|2@1+ (1,0) [0|2] "" Receiver + SG_ VCRIGHT_thsActive : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_thsHumidity : 17|8@1+ (1,0) [0|100] "%" Receiver + SG_ VCRIGHT_thsSolarLoadInfrared : 33|10@1+ (1,0) [0|1022] "W/m2" Receiver + SG_ VCRIGHT_thsSolarLoadVisible : 43|10@1+ (1,0) [0|1022] "W/m2" Receiver + SG_ VCRIGHT_thsTemperature : 1|8@1- (1,-40) [-40|150] "C" Receiver + +BO_ 947 ID3B3UI_vehicleControl2: 4 VehicleBus + SG_ UI_PINToDriveEnabled : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_PINToDrivePassed : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_UMCUpdateInhibit : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_VCLEFTFeature1 : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_VCSECFeature1 : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_WCUpdateInhibit : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_alarmTriggerRequest : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_autoRollWindowsOnLockEnable : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_autopilotPowerStateRequest : 25|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_batteryPreconditioningRequest : 23|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_coastDownMode : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_conditionalLoggingEnabledVCSE : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_efuseMXResistanceEstArmed : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_freeRollModeRequest : 19|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_gloveboxRequest : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_lightSwitch : 9|3@1+ (1,0) [0|4] "" Receiver + SG_ UI_locksPanelActive : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_readyToAddKey : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_shorted12VCellTestMode : 27|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_soundHornOnLock : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_summonState : 16|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_trunkRequest : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_userPresent : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_windowRequest : 20|3@1+ (1,0) [0|4] "" Receiver + +BO_ 963 ID3C3VCRIGHT_switchStatus: 7 VehicleBus + SG_ VCRIGHT_2RowSeatReclineSwitch : 54|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowAutoDownRF : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowAutoDownRR : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowAutoUpRF : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowAutoUpRR : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowDownRF : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowDownRR : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackAutoDwnLF : 35|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackAutoDwnLR : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackAutoDwnRR : 52|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackAutoUpLF : 33|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackAutoUpLR : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackAutoUpRR : 50|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackDownLF : 34|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackDownLR : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackDownRR : 51|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackUpLF : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackUpLR : 36|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowSwPackUpRR : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowUpRF : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_btnWindowUpRR : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_frontBuckleSwitch : 40|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontOccupancySwitch : 42|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatBackrestBack : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatBackrestForward : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatLiftDown : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatLiftUp : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatLumbarDown : 16|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatLumbarIn : 20|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatLumbarOut : 22|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatLumbarUp : 18|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatTiltDown : 4|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatTiltUp : 6|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatTrackBack : 0|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_frontSeatTrackForward : 2|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_liftgateShutfaceSwitchPr : 53|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_rearCenterBuckleSwitch : 44|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_rearRightBuckleSwitch : 46|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_trunkExtReleasePressed : 48|1@1+ (1,0) [0|1] "" Receiver + +BO_ 995 ID3E3VCRIGHT_lightStatus: 2 VehicleBus + SG_ VCRIGHT_brakeLightStatus : 0|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_interiorTrunkLightStatus : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_rearFogLightStatus : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_reverseLightStatus : 6|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_tailLightStatus : 2|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_turnSignalStatus : 4|2@1+ (1,0) [0|3] "" Receiver + +BO_ 1622 ID656FrontDIinfo: 8 VehicleBus + SG_ DIF_infoIndex M : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ DIF_FPGA_version m16 : 48|8@1+ (1,0) [0|255] "" Receiver + SG_ DIF_appGitHash m17 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ DIF_applicationCrc m13 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ DIF_assemblyId m11 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ DIF_bootGitHash m18 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ DIF_bootloaderCrc m20 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ DIF_buildConfigurationId m10 : 16|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIF_buildType m10 : 8|3@1+ (1,0) [0|4] "" Receiver + SG_ DIF_componentId m10 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIF_hardwareId m10 : 32|8@1+ (1,0) [0|252] "" Receiver + SG_ DIF_infoBootLdUdsProtocolVersion m20 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ DIF_oilPumpAppCrc m16 : 16|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ DIF_oilPumpBuildType m16 : 8|3@1+ (1,0) [0|4] "" Receiver + SG_ DIF_pcbaId m11 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ DIF_platformTyp m19 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ DIF_subUsageId m11 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIF_subcomponentGitHash m31 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ DIF_usageId m11 : 32|16@1+ (1,0) [0|65535] "" Receiver + +BO_ 768 ID300BMS_info: 8 VehicleBus + SG_ BMS_infoIndex M : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_appCrc m13 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ BMS_appGitHash m17 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ BMS_assemblyId m11 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_bootCrc m20 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ BMS_bootGitHash m18 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ BMS_bootUdsProtoVersion m20 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_buildConfigId m10 : 16|16@1+ (1,0) [0|65535] "" Receiver + SG_ BMS_buildType m10 : 8|3@1+ (1,0) [0|4] "" Receiver + SG_ BMS_componentId m10 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ BMS_hardwareId m10 : 32|16@1+ (1,0) [0|65535] "" Receiver + SG_ BMS_pcbaId m11 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_platformType m13 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_subUsageId m11 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ BMS_usageId m11 : 32|16@1+ (1,0) [0|65535] "" Receiver + +BO_ 530 ID212BMS_status: 8 VehicleBus + SG_ BMS_activeHeatingWorthwhile : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_chargeRequest : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_chargeRetryCount : 51|3@1+ (1,0) [0|7] "" Receiver + SG_ BMS_chgPowerAvailable : 40|11@1+ (0.125,0) [0|255.75] "kW" Receiver + SG_ BMS_contactorState : 8|3@1+ (1,0) [0|6] "" Receiver + SG_ BMS_cpMiaOnHvs : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_diLimpRequest : 36|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_ecuLogUploadRequest : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ BMS_hvState : 16|3@1+ (1,0) [0|6] "" Receiver + SG_ BMS_hvacPowerRequest : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_isolationResistance : 19|10@1+ (10,0) [0|10000] "kOhm" Receiver + SG_ BMS_keepWarmRequest : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_notEnoughPowerForDrive : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_notEnoughPowerForSupport : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_okToShipByAir : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_okToShipByLand : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_pcsPwmEnabled : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_preconditionAllowed : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_smStateRequest : 56|4@1+ (1,0) [0|9] "" Receiver + SG_ BMS_state : 32|4@1+ (1,0) [0|10] "" Receiver + SG_ BMS_uiChargeStatus : 11|3@1+ (1,0) [0|5] "" Receiver + SG_ BMS_updateAllowed : 4|1@1+ (1,0) [0|1] "" Receiver + +BO_ 796 ID31CCC_chgStatus: 8 VehicleBus + SG_ CC_currentLimit : 0|8@1+ (0.5,0) [0|127.5] "A" Receiver + SG_ CC_deltaTransformer : 28|2@1+ (1,0) [0|3] "" Receiver + SG_ CC_gridGrounding : 26|2@1+ (1,0) [0|2] "" Receiver + SG_ CC_line1Voltage : 16|9@1+ (1,0) [0|511] "V" Receiver + SG_ CC_line2Voltage : 33|9@1+ (1,0) [0|511] "V" Receiver + SG_ CC_line3Voltage : 42|9@1+ (1,0) [0|511] "V" Receiver + SG_ CC_numPhases : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ CC_numVehCharging : 30|3@1+ (1,0) [0|7] "" Receiver + SG_ CC_pilotState : 8|2@1+ (1,0) [0|3] "" Receiver + +BO_ 573 ID23DCP_chargeStatus: 4 VehicleBus + SG_ CP_acChargeCurrentLimit : 8|8@1+ (0.5,0) [0|127.5] "A" Receiver + SG_ CP_chargeShutdownRequest : 3|2@1+ (1,0) [0|2] "" Receiver + SG_ CP_hvChargeStatus : 0|3@1+ (1,0) [0|6] "" Receiver + SG_ CP_internalMaxCurrentLimit : 16|13@1+ (0.146502,0) [0|1200] "A" Receiver + SG_ CP_vehicleIsoCheckRequired : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_vehiclePrechargeRequired : 30|1@1+ (1,0) [0|1] "" Receiver + +BO_ 317 ID13DCP_chargeStatus: 6 VehicleBus + SG_ CP_acChargeCurrentLimit : 8|8@1+ (0.5,0) [0|127.5] "A" Receiver + SG_ CP_chargeShutdownRequest : 3|2@1+ (1,0) [0|2] "" Receiver + SG_ CP_evseChargeType : 40|2@1+ (1,0) [0|2] "" Receiver + SG_ CP_hvChargeStatus : 0|3@1+ (1,0) [0|6] "" Receiver + SG_ CP_internalMaxAcCurrentLimit : 32|8@1+ (0.5,0) [0|127.5] "A" Receiver + SG_ CP_internalMaxDcCurrentLimit : 16|13@1+ (0.146502,0) [0|1200] "A" Receiver + SG_ CP_vehicleIsoCheckRequired : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_vehiclePrechargeRequired : 30|1@1+ (1,0) [0|1] "" Receiver + +BO_ 1085 ID43DCP_chargeStatusLog: 6 VehicleBus + SG_ CP_acChargeCurrentLimit_log : 8|8@1+ (0.5,0) [0|127.5] "A" Receiver + SG_ CP_chargeShutdownRequest_log : 3|2@1+ (1,0) [0|2] "" Receiver + SG_ CP_evseChargeType_log : 40|2@1+ (1,0) [0|2] "" Receiver + SG_ CP_hvChargeStatus_log : 0|3@1+ (1,0) [0|6] "" Receiver + SG_ CP_internalMaxAcCurrentLimit_log : 32|8@1+ (0.5,0) [0|127.5] "A" Receiver + SG_ CP_internalMaxDcCurrentLimit_log : 16|13@1+ (0.146502,0) [0|1200] "A" Receiver + SG_ CP_vehicleIsoCheckRequired_log : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_vehiclePrechargeRequired_log : 30|1@1+ (1,0) [0|1] "" Receiver + +BO_ 541 ID21DCP_evseStatus: 8 VehicleBus + SG_ CP_acChargeState : 53|3@1+ (1,0) [0|6] "" Receiver + SG_ CP_acNumRetries : 40|2@1+ (1,0) [0|3] "" Receiver + SG_ CP_cableCurrentLimit : 24|7@1+ (1,0) [0|127] "A" Receiver + SG_ CP_cableType : 16|3@1+ (1,0) [0|4] "" Receiver + SG_ CP_digitalCommsAttempts : 32|2@1+ (1,0) [0|3] "" Receiver + SG_ CP_digitalCommsEstablished : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_evseAccept : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_evseChargeType_UI : 38|2@1+ (1,0) [0|2] "" Receiver + SG_ CP_evseRequest : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_gbState : 42|4@1+ (1,0) [0|15] "" Receiver + SG_ CP_gbdcChargeAttempts : 51|2@1+ (1,0) [0|3] "" Receiver + SG_ CP_gbdcFailureReason : 49|2@1+ (1,0) [0|3] "" Receiver + SG_ CP_gbdcStopChargeReason : 46|3@1+ (1,0) [0|7] "" Receiver + SG_ CP_iecComboState : 60|4@1+ (1,0) [0|12] "" Receiver + SG_ CP_pilot : 4|3@1+ (1,0) [0|7] "" Receiver + SG_ CP_pilotCurrent : 8|8@1+ (0.5,0) [0|127.5] "A" Receiver + SG_ CP_proximity : 2|2@1+ (1,0) [0|3] "" Receiver + SG_ CP_teslaDcState : 56|4@1+ (1,0) [0|10] "" Receiver + SG_ CP_teslaSwcanState : 34|3@1+ (1,0) [0|6] "" Receiver + +BO_ 1859 ID743VCRIGHT_recallStatus: 1 VehicleBus + SG_ VCRIGHT_mirrorRecallStatus : 4|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_seatRecallStatus : 2|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_systemRecallStatus : 0|2@1+ (1,0) [0|3] "" Receiver + +BO_ 1885 ID75DCP_sensorData: 8 VehicleBus + SG_ CP_sensorDataSelect M : 0|4@1+ (1,0) [0|12] "" Receiver + SG_ CP_UHF_chipState m6 : 4|3@1+ (1,0) [0|7] "" Receiver + SG_ CP_UHF_fifoData m6 : 32|8@1+ (1,0) [0|255] "" Receiver + SG_ CP_UHF_rssi m6 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ CP_UHF_rxNumBytes m6 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ CP_UHF_rxOverflow m6 : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_UHF_selfTestRssi m6 : 40|8@1+ (1,0) [0|255] "" Receiver + SG_ CP_backCover2Counts m5 : 32|16@1+ (0.0015259,0) [0|100] "%" Receiver + SG_ CP_backCoverCounts m5 : 16|16@1+ (0.0015259,0) [0|100] "%" Receiver + SG_ CP_boardTemperature m1 : 32|8@1+ (1.29412,-50) [-50|280] "C" Receiver + SG_ CP_doorCountsDebounced m0 : 24|16@1+ (0.0015259,0) [0|100] "%" Receiver + SG_ CP_doorCountsFiltered m0 : 8|16@1+ (0.0015259,0) [0|100] "%" Receiver + SG_ CP_doorI m2 : 16|12@1+ (0.0025,0) [0|10.2375] "A" Receiver + SG_ CP_doorLastRequestMaxI m2 : 28|12@1+ (0.0025,0) [0|10.2375] "A" Receiver + SG_ CP_doorPot m2 : 4|12@1+ (0.025,0) [0|100] "%" Receiver + SG_ CP_faultLineV m5 : 4|12@1+ (0.00114,0) [0|4.65524] "V" Receiver + SG_ CP_inductiveSensor_raw m4 : 4|28@1+ (1,0) [0|268435000] "" Receiver + SG_ CP_inlet1HarnessIdState m12 : 4|2@1+ (1,0) [0|2] "" Receiver + SG_ CP_inlet1HarnessIdValue m12 : 8|3@1+ (1,0) [0|7] "" Receiver + SG_ CP_inlet1HarnessV m12 : 16|14@1+ (0.001,0) [0|13.3] "V" Receiver + SG_ CP_inlet2HarnessIdState m12 : 30|2@1+ (1,0) [0|2] "" Receiver + SG_ CP_inlet2HarnessIdValue m12 : 32|3@1+ (1,0) [0|7] "" Receiver + SG_ CP_inlet2HarnessV m12 : 40|14@1+ (0.001,0) [0|13.3] "V" Receiver + SG_ CP_latch2I m3 : 16|12@1+ (0.0025,0) [0|10.2375] "A" Receiver + SG_ CP_latchI m3 : 4|12@1+ (0.0025,0) [0|10.2375] "A" Receiver + SG_ CP_pilotHighValue m9 : 40|12@1- (0.01,0) [-20.48|20.47] "V" Receiver + SG_ CP_pilotHighValue_intervalMax10s m10 : 28|12@1- (0.01,0) [-20.48|20.47] "V" Receiver + SG_ CP_pilotHighValue_intervalMin10s m10 : 40|12@1- (0.01,0) [-20.48|20.47] "V" Receiver + SG_ CP_pilotLowValue m9 : 28|12@1- (0.01,0) [-20.48|20.47] "V" Receiver + SG_ CP_pilotLowValue_intervalMax10s m10 : 4|12@1- (0.01,0) [-20.48|20.47] "V" Receiver + SG_ CP_pilotLowValue_intervalMin10s m10 : 16|12@1- (0.01,0) [-20.48|20.47] "V" Receiver + SG_ CP_pilotPeriod m9 : 16|12@1+ (1,0) [0|4095] "" Receiver + SG_ CP_pilotPulseWidth m9 : 4|12@1+ (1,0) [0|4095] "" Receiver + SG_ CP_pinTemperature1 m1 : 8|8@1+ (0.803922,-55) [-55|149.99] "C" Receiver + SG_ CP_pinTemperature2 m1 : 16|8@1+ (0.803922,-55) [-55|149.99] "C" Receiver + SG_ CP_pinTemperature3 m1 : 24|8@1+ (0.803922,-55) [-55|149.99] "C" Receiver + SG_ CP_proxConn1Sense m8 : 56|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_proxEn m8 : 57|1@1+ (1,0) [0|1] "" Receiver + SG_ CP_proximityV m8 : 8|16@1+ (0.0001,0) [0|6.5535] "V" Receiver + SG_ CP_proximityV_GBCC1 m11 : 8|14@1+ (0.001,0) [0|13.3] "V" Receiver + SG_ CP_proximityV_GBCC2 m11 : 24|14@1+ (0.001,0) [0|13.3] "V" Receiver + SG_ CP_proximityV_intervalMax10s m8 : 40|16@1+ (0.0001,0) [0|6.5535] "V" Receiver + SG_ CP_proximityV_intervalMin10s m8 : 24|16@1+ (0.0001,0) [0|6.5535] "V" Receiver + SG_ CP_refVoltage m7 : 8|8@1+ (0.00705882,0) [0|1.8] "V" Receiver + +BO_ 647 ID287PTCcabinHeatSensorStatus: 8 VehicleBus + SG_ PTC_leftCurrentHV : 48|8@1+ (0.2,0) [0|50] "A" Receiver + SG_ PTC_leftTempIGBT : 0|8@1+ (1,-40) [-40|200] "C" Receiver + SG_ PTC_rightCurrentHV : 56|8@1+ (0.2,0) [0|50] "A" Receiver + SG_ PTC_rightTempIGBT : 16|8@1+ (1,-40) [-40|200] "C" Receiver + SG_ PTC_tempOCP : 8|8@1+ (1,-40) [-40|200] "C" Receiver + SG_ PTC_tempPCB : 24|8@1+ (1,-40) [-40|200] "C" Receiver + SG_ PTC_voltageHV : 32|10@1+ (0.5,0) [0|511.5] "V" Receiver + +BO_ 819 ID333UI_chargeRequest: 5 VehicleBus + SG_ UI_acChargeCurrentLimit : 8|7@1+ (1,0) [0|127] "A" Receiver + SG_ UI_brickBalancingDisabled : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_brickVLoggingRequest : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_chargeEnableRequest : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_chargeTerminationPct : 16|10@1+ (0.1,0) [25|100] "%" Receiver + SG_ UI_closeChargePortDoorRequest : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_openChargePortDoorRequest : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_scheduledDepartureEnabled : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_smartAcChargingEnabled : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_cpInletHeaterRequest : 32|1@1+ (1,0) [0|0] "" Receiver + SG_ UI_socSnapshotExpirationTime : 28|4@1+ (1,2) [0|0] "weeks" Receiver + +BO_ 820 ID334UI_powertrainControl: 8 VehicleBus + SG_ UI_DIAppSliderDebug : 42|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_limitMode : 32|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_motorOnMode : 34|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_pedalMap : 5|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_powertrainControlChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ UI_powertrainControlCounter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_regenTorqueMax : 24|8@1+ (0.5,0) [0|100] "%" Receiver + SG_ UI_speedLimit : 16|8@1+ (1,50) [50|285] "kph" Receiver + SG_ UI_stoppingMode : 40|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_systemPowerLimit : 0|5@1+ (20,20) [20|640] "kW" Receiver + SG_ UI_systemTorqueLimit : 8|6@1+ (100,4000) [4000|10300] "Nm" Receiver + SG_ UI_wasteMode : 36|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_wasteModeRegenLimit : 38|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_closureConfirmed : 14|2@1+ (1,0) [0|2] "" Receiver + +BO_ 826 ID33AUI_rangeSOC: 8 VehicleBus + SG_ UI_idealRange : 16|10@1+ (1,0) [0|1023] "mi" Receiver + SG_ UI_Range : 0|10@1+ (1,0) [0|1023] "mi" Receiver + SG_ UI_SOC : 48|7@1+ (1,0) [0|127] "%" Receiver + SG_ UI_uSOE : 56|7@1+ (1,0) [0|127] "%" Receiver + SG_ UI_ratedWHpM : 32|10@1+ (1,0) [0|1023] "WHpM" Receiver + +BO_ 577 ID241VCFRONT_coolant: 7 VehicleBus + SG_ VCFRONT_coolantAirPurgeBatState : 48|3@1+ (1,0) [0|4] "" Receiver + SG_ VCFRONT_coolantFlowBatActual : 0|9@1+ (0.1,0) [0|40] "LPM" Receiver + SG_ VCFRONT_coolantFlowBatReason : 18|4@1+ (1,0) [0|14] "" Receiver + SG_ VCFRONT_coolantFlowBatTarget : 9|9@1+ (0.1,0) [0|40] "LPM" Receiver + SG_ VCFRONT_coolantFlowPTActual : 22|9@1+ (0.1,0) [0|40] "LPM" Receiver + SG_ VCFRONT_coolantFlowPTReason : 40|4@1+ (1,0) [0|14] "" Receiver + SG_ VCFRONT_coolantFlowPTTarget : 31|9@1+ (0.1,0) [0|40] "LPM" Receiver + SG_ VCFRONT_coolantHasBeenFilled : 46|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_radiatorIneffective : 47|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_wasteHeatRequestType : 44|2@1+ (1,0) [0|2] "" Receiver + +BO_ 955 ID3BBUI_power: 2 VehicleBus + SG_ UI_powerExpected : 0|8@1+ (1,0) [0|100] "kW" Receiver + SG_ UI_powerIdeal : 8|8@1+ (1,0) [0|100] "kW" Receiver + +BO_ 1493 ID5D5RearDItemps: 5 VehicleBus + SG_ DI_ph1Temp : 0|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ DI_ph2Temp : 8|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ DI_ph3Temp : 16|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ DI_pcbTemp2 : 24|8@1+ (1,-40) [-40|150] "C" Receiver + SG_ DI_IGBTJunctTemp : 32|8@1+ (1,-40) [-40|200] "C" Receiver + +BO_ 1366 ID556FrontDItemps: 7 VehicleBus + SG_ DIF_ph1Temp : 0|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ DIF_ph2Temp : 8|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ DIF_ph3Temp : 16|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ DIF_pcbTemp2 : 24|8@1+ (1,-40) [-40|150] "C" Receiver + SG_ DIF_IGBTJunctTemp : 32|8@1+ (1,-40) [-40|200] "C" Receiver + SG_ DIF_lashAngle : 40|10@1+ (0.06,0) [0|60] "Deg" Receiver + SG_ DIF_lashCheckCount : 50|6@1+ (1,0) [0|63] "" Receiver + +BO_ 1367 ID557FrontThermalControl: 4 VehicleBus + SG_ DIS_activeInletTempReq : 8|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ DIS_coolantFlowReq : 16|8@1+ (0.2,0) [0|50] "LPM" Receiver + SG_ DIS_oilFlowReq : 24|8@1+ (0.06,0) [0|15] "LPM" Receiver + SG_ DIS_passiveInletTempReq : 0|8@1+ (1,-40) [-40|120] "C" Receiver + +BO_ 1495 ID5D7RearThermalControl: 4 VehicleBus + SG_ DI_activeInletTempReq : 8|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ DI_coolantFlowReq : 16|8@1+ (0.2,0) [0|50] "LPM" Receiver + SG_ DI_oilFlowReq : 24|8@1+ (0.06,0) [0|15] "LPM" Receiver + SG_ DI_passiveInletTempReq : 0|8@1+ (1,-40) [-40|120] "C" Receiver + +BO_ 2005 ID7D5DIR_debug: 8 VehicleBus + SG_ DIR_debugSelector M : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ DIR_brakeSwitchNC m42 : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ DIR_brakeSwitchNO m42 : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ DIR_busbarTemp m64 : 16|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_controlStack m67 : 40|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIR_cpu100HzAvg m66 : 32|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu100HzMin m66 : 24|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu10HzAvg m66 : 16|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu10HzMin m66 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu10msMin m66 : 40|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu1HzAvg m128 : 24|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu1HzMin m128 : 16|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu1kHzAvg m67 : 16|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu1kHzMin m67 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu20kHzAvg m67 : 32|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpu20kHzMin m67 : 24|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_cpuIDWord0 m131 : 16|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIR_cpuIDWord1 m132 : 16|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIR_cpuIDWord2 m132 : 32|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIR_cpuIDWord3 m132 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIR_crc m131 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ DIR_currentLimit m41 : 32|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIR_dcCableCurrentEst m37 : 16|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIR_dcCableHeat m47 : 32|16@1+ (0.001,0) [0|65.535] "kA2s" Receiver + SG_ DIR_dcCapTemp m64 : 8|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_dcLinkCapTemp m70 : 32|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_decodeHardwareStack m68 : 24|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIR_driveUnitOdometer m69 : 32|32@1+ (10,0) [0|42949700000] "rev" Receiver + SG_ DIR_eepromStack m68 : 32|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIR_fluxState m42 : 16|4@1+ (1,0) [0|10] "" Receiver + SG_ DIR_gainScale m37 : 8|8@1+ (0.01,0) [0|2.55] "scale" Receiver + SG_ DIR_gateDriveState m50 : 10|3@1+ (1,0) [0|4] "" Receiver + SG_ DIR_gateDriveSupplyState m50 : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ DIR_hvDcCableTemp m70 : 40|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_hwFaultCount m69 : 8|4@1+ (1,0) [0|15] "" Receiver + SG_ DIR_idleStack m68 : 16|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIR_immobilizerStack m68 : 56|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIR_internalAngleFilt m37 : 48|16@1+ (0.0003,0) [0|8] "rad" Receiver + SG_ DIR_llrScale m42 : 32|8@1+ (0.015,0) [0|3.825] "scale" Receiver + SG_ DIR_llsScale m42 : 24|8@1+ (0.004,0) [0|1.02] "scale" Receiver + SG_ DIR_lmScale m36 : 8|8@1+ (0.004,0) [0|1.02] "scale" Receiver + SG_ DIR_loadAngle m42 : 40|16@1- (0.0003,0) [-4|4] "rad" Receiver + SG_ DIR_loadAngleMargin m37 : 32|16@1- (0.0003,0) [-4|4] "rad" Receiver + SG_ DIR_magnetTempEst m47 : 48|8@1+ (1,-40) [-40|180] "C" Receiver + SG_ DIR_module10HzStack m66 : 48|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIR_motorIA m32 : 16|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIR_motorIAavg m38 : 32|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIR_motorIB m32 : 32|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIR_motorIBavg m38 : 48|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIR_motorIC m32 : 48|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIR_motorType m128 : 8|6@1+ (1,0) [0|32] "" Receiver + SG_ DIR_motorV m34 : 48|16@1+ (2E-005,0) [0|1.3107] "mindex" Receiver + SG_ DIR_negDcBusbarTemp m70 : 48|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_offsetA m32 : 8|8@1- (0.1,0) [-12.8|12.7] "A" Receiver + SG_ DIR_offsetB m33 : 8|8@1- (0.1,0) [-12.8|12.7] "A" Receiver + SG_ DIR_oilPumpMotorSpeed m46 : 8|8@1+ (40,0) [0|10200] "RPM" Receiver + SG_ DIR_oilPumpPhaseVoltage m46 : 16|8@1+ (0.1,0) [0|25.4] "V" Receiver + SG_ DIR_oilPumpPressureEstimateMax m46 : 24|8@1+ (2,0) [0|500] "kPa" Receiver + SG_ DIR_oilPumpPressureExpectedMin m46 : 32|8@1+ (2,0) [0|500] "kPa" Receiver + SG_ DIR_pcsTemp m64 : 24|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_peakFlux m36 : 48|16@1+ (0.0001,0) [0|6.5535] "Wb" Receiver + SG_ DIR_peakIQref m38 : 16|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIR_phaseOutBusbarTemp m70 : 8|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_phaseOutBusbarWeldTemp m70 : 16|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_phaseOutLugTemp m70 : 24|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_posDcBusbarTemp m70 : 56|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_powerStageSafeState m50 : 13|2@1+ (1,0) [0|3] "" Receiver + SG_ DIR_pwmState m63 : 48|2@1+ (1,0) [0|3] "" Receiver + SG_ DIR_pwrSatChargeCurrent m42 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_pwrSatDischargeCurrent m40 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_pwrSatMaxBusVoltage m39 : 48|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_pwrSatMaxDischargePower m39 : 16|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_pwrSatMaxRegenPower m39 : 24|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_pwrSatMinBusVoltage m39 : 56|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_resolverClaMIA m48 : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ DIR_resolverCommonGain m48 : 32|8@1+ (0.025,0) [0|5] "1" Receiver + SG_ DIR_resolverCosFiltered m52 : 32|8@1- (0.01,0) [-1|1] "1" Receiver + SG_ DIR_resolverCosRmsSquared m52 : 16|8@1+ (0.005,0) [0|1] "1" Receiver + SG_ DIR_resolverErrorRmsSquared m52 : 48|8@1+ (0.005,0) [0|1] "1" Receiver + SG_ DIR_resolverNoCarrier m48 : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ DIR_resolverNoPhaseLock m48 : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ DIR_resolverOffsetCos m48 : 8|8@1+ (0.015,0) [0|3.3] "V" Receiver + SG_ DIR_resolverOffsetSin m48 : 16|8@1+ (0.015,0) [0|3.3] "V" Receiver + SG_ DIR_resolverPhaseOffset m48 : 24|8@1+ (0.1,7.5) [7.5|32.5] "us" Receiver + SG_ DIR_resolverReady m48 : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ DIR_resolverSinFiltered m52 : 40|8@1- (0.01,0) [-1|1] "1" Receiver + SG_ DIR_resolverSinRmsSquared m52 : 24|8@1+ (0.005,0) [0|1] "1" Receiver + SG_ DIR_rotorFlux m47 : 16|16@1+ (0.0001,0) [0|6.5535] "Wb" Receiver + SG_ DIR_rotorMaxMagnetTemp m72 : 16|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_rotorOffsetEst m43 : 8|12@1- (0.01,0) [-20|20] "deg" Receiver + SG_ DIR_rotorOffsetLearningState m63 : 8|4@1+ (1,0) [0|9] "" Receiver + SG_ DIR_rotorOffsetMean m43 : 20|12@1- (0.01,0) [-20|20] "deg" Receiver + SG_ DIR_rsScale m34 : 8|8@1+ (0.01,0) [0|2.55] "scale" Receiver + SG_ DIR_soptMaxCurrentMagSqrd m49 : 40|16@1+ (100,0) [0|6553500] "A2" Receiver + SG_ DIR_soptTimeToOff m49 : 24|11@1+ (0.05,0) [0|100] "ms" Receiver + SG_ DIR_soptTimeToTrip m49 : 8|8@1+ (0.05,0) [0|10] "ms" Receiver + SG_ DIR_soptTripDelay m49 : 16|8@1+ (0.05,0) [0|10] "ms" Receiver + SG_ DIR_ssmState m38 : 8|4@1+ (1,0) [0|8] "" Receiver + SG_ DIR_statorEndWindingTemp m72 : 8|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_statorFluxFdb m35 : 32|16@1+ (0.0001,0) [0|6.5535] "Wb" Receiver + SG_ DIR_statorFluxRef m35 : 16|16@1+ (0.0001,0) [0|6.5535] "Wb" Receiver + SG_ DIR_statorIDfdb m33 : 32|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIR_statorIDref m33 : 16|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIR_statorIQfdb m34 : 32|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIR_statorIQref m34 : 16|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIR_statorTemp1 m64 : 32|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_statorTemp2 m64 : 40|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_statorVD m36 : 32|16@1- (4E-005,0) [-1.31072|1.31068] "mindex" Receiver + SG_ DIR_statorVDFiltered m63 : 16|16@1- (4E-005,0) [-1.31072|1.31068] "mindex" Receiver + SG_ DIR_statorVQ m36 : 16|16@1- (4E-005,0) [-1.31072|1.31068] "mindex" Receiver + SG_ DIR_statorVQFiltered m63 : 32|16@1- (4E-005,0) [-1.31072|1.31068] "mindex" Receiver + SG_ DIR_sysHeatPowerOptimal m50 : 16|8@1+ (0.08,0) [0|20] "kW" Receiver + SG_ DIR_systemStack m68 : 8|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIR_systemTorqueCommand m35 : 48|16@1- (0.035,0) [-1146.88|1146.85] "Nm" Receiver + SG_ DIR_tcMaxRequest m40 : 16|8@1+ (5,0) [0|1275] "Nm" Receiver + SG_ DIR_tcMinRequest m40 : 24|8@1+ (5,0) [0|1275] "Nm" Receiver + SG_ DIR_torquePerAmp m33 : 48|16@1+ (0.0001,0) [0|6.5535] "Nm/A" Receiver + SG_ DIR_tqSatMotorCurrent m39 : 40|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_tqSatMotorVoltage m39 : 32|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_tqSatThermal m39 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_tqSatUiDriveTorque m40 : 32|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_tqSatUiRegenTorque m40 : 40|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_tqScaleDifferential m35 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_tqScaleMaxMotorSpeed m40 : 48|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_tqScaleShift m40 : 56|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIR_udsStack m68 : 40|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIR_usmState m38 : 12|3@1+ (1,0) [0|7] "" Receiver + SG_ DIR_veMassInvRaw m41 : 8|12@1+ (1E-007,0.0001) [0.0001|0.0005] "1/kg" Receiver + SG_ DIR_veResForce m41 : 20|12@1- (0.0005,0) [-1.024|1.0235] "G" Receiver + SG_ DIR_wasteCurrentLimit m41 : 48|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIR_xcpStack m68 : 48|8@1+ (0.4,0) [0|100] "%" Receiver + +BO_ 1879 ID757DIF_debug: 8 VehicleBus + SG_ DIF_debugSelector M : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ DIF_brakeSwitchNC m42 : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ DIF_brakeSwitchNO m42 : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ DIF_busbarTemp m64 : 16|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_controlStack m67 : 40|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIF_cpu100HzAvg m66 : 32|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu100HzMin m66 : 24|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu10HzAvg m66 : 16|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu10HzMin m66 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu10msMin m66 : 40|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu1HzAvg m128 : 24|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu1HzMin m128 : 16|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu1kHzAvg m67 : 16|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu1kHzMin m67 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu20kHzAvg m67 : 32|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpu20kHzMin m67 : 24|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_cpuIDWord0 m131 : 16|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIF_cpuIDWord1 m132 : 16|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIF_cpuIDWord2 m132 : 32|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIF_cpuIDWord3 m132 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ DIF_crc m131 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ DIF_currentLimit m41 : 32|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIF_dcCableCurrentEst m37 : 16|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIF_dcCableHeat m47 : 32|16@1+ (0.001,0) [0|65.535] "kA2s" Receiver + SG_ DIF_dcCapTemp m64 : 8|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_dcLinkCapTemp m70 : 32|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_decodeHardwareStack m68 : 24|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIF_driveUnitOdometer m69 : 32|32@1+ (10,0) [0|42949700000] "rev" Receiver + SG_ DIF_eepromStack m68 : 32|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIF_fluxState m42 : 16|4@1+ (1,0) [0|10] "" Receiver + SG_ DIF_gainScale m37 : 8|8@1+ (0.01,0) [0|2.55] "scale" Receiver + SG_ DIF_gateDriveState m50 : 10|3@1+ (1,0) [0|4] "" Receiver + SG_ DIF_gateDriveSupplyState m50 : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ DIF_hvDcCableTemp m70 : 40|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_hwFaultCount m69 : 8|4@1+ (1,0) [0|15] "" Receiver + SG_ DIF_idleStack m68 : 16|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIF_immobilizerStack m68 : 56|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIF_internalAngleFilt m37 : 48|16@1+ (0.0003,0) [0|8] "rad" Receiver + SG_ DIF_llrScale m42 : 32|8@1+ (0.015,0) [0|3.825] "scale" Receiver + SG_ DIF_llsScale m42 : 24|8@1+ (0.004,0) [0|1.02] "scale" Receiver + SG_ DIF_lmScale m36 : 8|8@1+ (0.004,0) [0|1.02] "scale" Receiver + SG_ DIF_loadAngle m42 : 40|16@1- (0.0003,0) [-4|4] "rad" Receiver + SG_ DIF_loadAngleMargin m37 : 32|16@1- (0.0003,0) [-4|4] "rad" Receiver + SG_ DIF_magnetTempEst m47 : 48|8@1+ (1,-40) [-40|180] "C" Receiver + SG_ DIF_module10HzStack m66 : 48|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIF_motorIA m32 : 16|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIF_motorIAavg m38 : 32|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIF_motorIB m32 : 32|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIF_motorIBavg m38 : 48|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIF_motorIC m32 : 48|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIF_motorType m128 : 8|6@1+ (1,0) [0|32] "" Receiver + SG_ DIF_motorV m34 : 48|16@1+ (2E-005,0) [0|1.3107] "mindex" Receiver + SG_ DIF_negDcBusbarTemp m70 : 48|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_offsetA m32 : 8|8@1- (0.1,0) [-12.8|12.7] "A" Receiver + SG_ DIF_offsetB m33 : 8|8@1- (0.1,0) [-12.8|12.7] "A" Receiver + SG_ DIF_oilPumpMotorSpeed m46 : 8|8@1+ (40,0) [0|10200] "RPM" Receiver + SG_ DIF_oilPumpPhaseVoltage m46 : 16|8@1+ (0.1,0) [0|25.4] "V" Receiver + SG_ DIF_oilPumpPressureEstimateMax m46 : 24|8@1+ (2,0) [0|500] "kPa" Receiver + SG_ DIF_oilPumpPressureExpectedMin m46 : 32|8@1+ (2,0) [0|500] "kPa" Receiver + SG_ DIF_pcsTemp m64 : 24|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_peakFlux m36 : 48|16@1+ (0.0001,0) [0|6.5535] "Wb" Receiver + SG_ DIF_peakIQref m38 : 16|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIF_phaseOutBusbarTemp m70 : 8|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_phaseOutBusbarWeldTemp m70 : 16|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_phaseOutLugTemp m70 : 24|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_posDcBusbarTemp m70 : 56|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_powerStageSafeState m50 : 13|2@1+ (1,0) [0|3] "" Receiver + SG_ DIF_pwmState m63 : 48|2@1+ (1,0) [0|3] "" Receiver + SG_ DIF_pwrSatChargeCurrent m42 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_pwrSatDischargeCurrent m40 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_pwrSatMaxBusVoltage m39 : 48|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_pwrSatMaxDischargePower m39 : 16|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_pwrSatMaxRegenPower m39 : 24|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_pwrSatMinBusVoltage m39 : 56|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_resolverClaMIA m48 : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ DIF_resolverCommonGain m48 : 32|8@1+ (0.025,0) [0|5] "1" Receiver + SG_ DIF_resolverCosFiltered m52 : 32|8@1- (0.01,0) [-1|1] "1" Receiver + SG_ DIF_resolverCosRmsSquared m52 : 16|8@1+ (0.005,0) [0|1] "1" Receiver + SG_ DIF_resolverErrorRmsSquared m52 : 48|8@1+ (0.005,0) [0|1] "1" Receiver + SG_ DIF_resolverNoCarrier m48 : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ DIF_resolverNoPhaseLock m48 : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ DIF_resolverOffsetCos m48 : 8|8@1+ (0.015,0) [0|3.3] "V" Receiver + SG_ DIF_resolverOffsetSin m48 : 16|8@1+ (0.015,0) [0|3.3] "V" Receiver + SG_ DIF_resolverPhaseOffset m48 : 24|8@1+ (0.1,7.5) [7.5|32.5] "us" Receiver + SG_ DIF_resolverReady m48 : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ DIF_resolverSinFiltered m52 : 40|8@1- (0.01,0) [-1|1] "1" Receiver + SG_ DIF_resolverSinRmsSquared m52 : 24|8@1+ (0.005,0) [0|1] "1" Receiver + SG_ DIF_rotorFlux m47 : 16|16@1+ (0.0001,0) [0|6.5535] "Wb" Receiver + SG_ DIF_rotorMaxMagnetTemp m72 : 16|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_rotorOffsetEst m43 : 8|12@1- (0.01,0) [-20|20] "deg" Receiver + SG_ DIF_rotorOffsetLearningState m63 : 8|4@1+ (1,0) [0|9] "" Receiver + SG_ DIF_rotorOffsetMean m43 : 20|12@1- (0.01,0) [-20|20] "deg" Receiver + SG_ DIF_rsScale m34 : 8|8@1+ (0.01,0) [0|2.55] "scale" Receiver + SG_ DIF_soptMaxCurrentMagSqrd m49 : 40|16@1+ (100,0) [0|6553500] "A2" Receiver + SG_ DIF_soptTimeToOff m49 : 24|11@1+ (0.05,0) [0|100] "ms" Receiver + SG_ DIF_soptTimeToTrip m49 : 8|8@1+ (0.05,0) [0|10] "ms" Receiver + SG_ DIF_soptTripDelay m49 : 16|8@1+ (0.05,0) [0|10] "ms" Receiver + SG_ DIF_ssmState m38 : 8|4@1+ (1,0) [0|8] "" Receiver + SG_ DIF_statorEndWindingTemp m72 : 8|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_statorFluxFdb m35 : 32|16@1+ (0.0001,0) [0|6.5535] "Wb" Receiver + SG_ DIF_statorFluxRef m35 : 16|16@1+ (0.0001,0) [0|6.5535] "Wb" Receiver + SG_ DIF_statorIDfdb m33 : 32|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIF_statorIDref m33 : 16|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIF_statorIQfdb m34 : 32|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIF_statorIQref m34 : 16|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIF_statorTemp1 m64 : 32|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_statorTemp2 m64 : 40|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_statorVD m36 : 32|16@1- (4E-005,0) [-1.31072|1.31068] "mindex" Receiver + SG_ DIF_statorVDFiltered m63 : 16|16@1- (4E-005,0) [-1.31072|1.31068] "mindex" Receiver + SG_ DIF_statorVQ m36 : 16|16@1- (4E-005,0) [-1.31072|1.31068] "mindex" Receiver + SG_ DIF_statorVQFiltered m63 : 32|16@1- (4E-005,0) [-1.31072|1.31068] "mindex" Receiver + SG_ DIF_sysHeatPowerOptimal m50 : 16|8@1+ (0.08,0) [0|20] "kW" Receiver + SG_ DIF_systemStack m68 : 8|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIF_systemTorqueCommand m35 : 48|16@1- (0.035,0) [-1146.88|1146.85] "Nm" Receiver + SG_ DIF_tcMaxRequest m40 : 16|8@1+ (5,0) [0|1275] "Nm" Receiver + SG_ DIF_tcMinRequest m40 : 24|8@1+ (5,0) [0|1275] "Nm" Receiver + SG_ DIF_torquePerAmp m33 : 48|16@1+ (0.0001,0) [0|6.5535] "Nm/A" Receiver + SG_ DIF_tqSatMotorCurrent m39 : 40|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_tqSatMotorVoltage m39 : 32|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_tqSatThermal m39 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_tqSatUiDriveTorque m40 : 32|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_tqSatUiRegenTorque m40 : 40|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_tqScaleDifferential m35 : 8|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_tqScaleMaxMotorSpeed m40 : 48|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_tqScaleShift m40 : 56|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ DIF_udsStack m68 : 40|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIF_usmState m38 : 12|3@1+ (1,0) [0|7] "" Receiver + SG_ DIF_veMassInvRaw m41 : 8|12@1+ (1E-007,0.0001) [0.0001|0.0005] "1/kg" Receiver + SG_ DIF_veResForce m41 : 20|12@1- (0.0005,0) [-1.024|1.0235] "G" Receiver + SG_ DIF_wasteCurrentLimit m41 : 48|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ DIF_xcpStack m68 : 48|8@1+ (0.4,0) [0|100] "%" Receiver + +BO_ 694 ID2B6DI_chassisControlStatus: 2 VehicleBus + SG_ DI_btcStateUI : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_ptcStateUI : 7|2@1+ (1,0) [0|3] "" Receiver + SG_ DI_tcTelltaleFlash : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_tcTelltaleOn : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_tractionControlModeUI : 4|3@1+ (1,0) [0|6] "" Receiver + SG_ DI_vdcTelltaleFlash : 0|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_vdcTelltaleOn : 1|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_vehicleHoldTelltaleOn : 10|1@1+ (1,0) [0|1] "" Receiver + +BO_ 644 ID284UIvehicleModes: 5 VehicleBus + SG_ UIfactoryMode284 : 0|1@1+ (1,0) [0|0] "" Receiver + SG_ UIhomelinkV2Command0284 : 8|8@1+ (1,0) [0|0] "" Receiver + SG_ UIhomelinkV2Command1284 : 16|8@1+ (1,0) [0|0] "" Receiver + SG_ UIhomelinkV2Command2284 : 24|8@1+ (1,0) [0|0] "" Receiver + SG_ UIserviceMode284 : 3|1@1+ (1,0) [0|0] "" Receiver + SG_ UIshowroomMode284 : 2|1@1+ (1,0) [0|0] "" Receiver + SG_ UItransportMode284 : 1|1@1+ (1,0) [0|0] "" Receiver + SG_ UIgameMode284 : 34|1@1+ (1,0) [0|0] "" Receiver + SG_ UIisDelivered284 : 4|1@1+ (1,0) [0|0] "" Receiver + SG_ UIcarWashModeRequest284 : 32|1@1+ (1,0) [0|0] "" Receiver + SG_ UIvaletMode284 : 33|1@1+ (1,0) [0|0] "" Receiver + SG_ UIsentryMode284 : 5|1@1+ (1,0) [0|0] "" Receiver + +BO_ 545 ID221VCFRONT_LVPowerState: 8 VehicleBus + SG_ VCFRONT_LVPowerStateIndex M : 0|5@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_CMPDLVState m1 : 18|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_amplifierLVRequest m0 : 28|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_cpLVRequest m1 : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_das1HighCurrentLVState m0 : 30|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_das2HighCurrentLVState m0 : 32|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_difLVState m0 : 36|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_dirLVRequest m0 : 34|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_epasLVState m1 : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_espLVState m0 : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_hvacCompLVState m0 : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_hvcLVRequest m1 : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_iBoosterLVState m0 : 24|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_ocsLVRequest m0 : 42|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_oilPumpFrontLVState m0 : 38|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_oilPumpRearLVRequest m0 : 40|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_parkLVState m0 : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_pcsLVState m1 : 16|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_ptcLVRequest m0 : 16|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_radcLVState m0 : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_rcmLVRequest m0 : 22|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_sccmLVRequest m0 : 18|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_tasLVState m1 : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_tpmsLVRequest m0 : 20|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_tunerLVRequest m0 : 26|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_uiHiCurrentLVState m0 : 48|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_vcleftHiCurrentLVState m0 : 44|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_vcrightHiCurrentLVState m0 : 46|2@1+ (1,0) [0|3] "" Receiver + +BO_ 549 ID225VCRIGHT_LVPowerState: 3 VehicleBus + SG_ VCRIGHT_amplifierLVState : 4|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_cntctrPwrState : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_eFuseLockoutStatus : 18|2@1+ (1,0) [0|2] "" Receiver + SG_ VCRIGHT_hvcLVState : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_lumbarLVState : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_ocsLVState : 2|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_ptcLVState : 0|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_rcmLVState : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_rearOilPumpLVState : 6|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_swEnStatus : 20|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_tunerLVState : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_vehiclePowerStateDBG : 21|2@1+ (1,0) [0|3] "" Receiver + +BO_ 753 ID2F1VCFRONT_eFuseDebugStatus: 8 VehicleBus + SG_ VCFRONT_eFuseDebugStatusIndex M : 0|5@1+ (1,0) [0|18] "" Receiver + SG_ VCFRONT_ChargePumpVoltage m16 : 24|16@1+ (0.00544368,0) [0|356.751] "V" Receiver + SG_ VCFRONT_EPAS3PCurrent m4 : 47|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_EPAS3PFault m4 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_EPAS3PSelfTestResult m4 : 11|4@1+ (1,0) [0|11] "" Receiver + SG_ VCFRONT_EPAS3PState m4 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_EPAS3PTemp m4 : 15|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_EPAS3PVoltage m4 : 31|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_EPAS3SCurrent m5 : 47|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_EPAS3SFault m5 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_EPAS3SSelfTestResult m5 : 11|4@1+ (1,0) [0|11] "" Receiver + SG_ VCFRONT_EPAS3SState m5 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_EPAS3STemp m5 : 15|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_EPAS3SVoltage m5 : 31|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_ESPMotorCurrent m6 : 47|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_ESPMotorFault m6 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_ESPMotorSelfTestResult m6 : 11|4@1+ (1,0) [0|11] "" Receiver + SG_ VCFRONT_ESPMotorState m6 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_ESPMotorTemp m6 : 15|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_ESPMotorVoltage m6 : 31|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_ESPValveCurrent m7 : 44|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_ESPValveFault m7 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_ESPValveState m7 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_ESPValveTemp m7 : 12|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_ESPValveVoltage m7 : 28|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_IBSUnfilteredTemperature m17 : 40|16@1- (0.01,0) [-327.68|327.67] "C" Receiver + SG_ VCFRONT_PCSCurrent m2 : 47|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ VCFRONT_PCSFault m2 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_PCSState m2 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_PCSTemp m2 : 15|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_PCSVoltage m2 : 31|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_autopilot1Current m8 : 43|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_autopilot1Fault m8 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_autopilot1State m8 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_autopilot1Temp m8 : 11|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_autopilot1Voltage m8 : 27|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_autopilot2Current m9 : 43|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_autopilot2Fault m9 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_autopilot2State m9 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_autopilot2Temp m9 : 11|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_autopilot2Voltage m9 : 27|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_chargedIBSAmpHours m17 : 8|16@1+ (1,0) [0|65535] "Ah" Receiver + SG_ VCFRONT_dischargedIBSAmpHours m17 : 24|16@1+ (1,0) [0|65535] "Ah" Receiver + SG_ VCFRONT_eFuseLockoutVoltage m16 : 8|12@1+ (0.00544368,0) [0|22.2919] "V" Receiver + SG_ VCFRONT_headlampLeftCurrent m12 : 10|10@1+ (0.1,0) [0|102.3] "A" Receiver + SG_ VCFRONT_headlampLeftFault m12 : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_headlampLeftState m12 : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_headlampLeftTemperature m12 : 48|8@1- (1,-40) [-40|150] "C" Receiver + SG_ VCFRONT_headlampLeftVoltage m12 : 20|8@1+ (0.1,0) [0|25.4] "V" Receiver + SG_ VCFRONT_headlampRightCurrent m12 : 30|10@1+ (0.1,0) [0|102.3] "A" Receiver + SG_ VCFRONT_headlampRightFault m12 : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_headlampRightState m12 : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_headlampRightTemperature m12 : 56|8@1- (1,-40) [-40|150] "C" Receiver + SG_ VCFRONT_headlampRightVoltage m12 : 40|8@1+ (0.1,0) [0|25.4] "V" Receiver + SG_ VCFRONT_iBoosterCurrent m3 : 47|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_iBoosterFault m3 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_iBoosterSelfTestResult m3 : 11|4@1+ (1,0) [0|11] "" Receiver + SG_ VCFRONT_iBoosterState m3 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_iBoosterTemp m3 : 15|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_iBoosterVoltage m3 : 31|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_leftControllerCurrent m1 : 47|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_leftControllerFault m1 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_leftControllerState m1 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_leftControllerTemp m1 : 15|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_leftControllerVoltage m1 : 31|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_pcsSelfTestResult m2 : 11|4@1+ (1,0) [0|11] "" Receiver + SG_ VCFRONT_pump1AndFanCurrent m14 : 6|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_pump1AndFanState m14 : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_pump1AndFanVoltage m14 : 22|12@1+ (0.1,0) [0|409.5] "V" Receiver + SG_ VCFRONT_pump2AndAirCompCurrent m14 : 35|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_pump2AndAirCompState m14 : 34|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_pump2AndAirCompVoltage m14 : 51|12@1+ (0.1,0) [0|409.5] "V" Receiver + SG_ VCFRONT_railA_12v m15 : 8|12@1+ (0.00544368,0) [0|22.2919] "V" Receiver + SG_ VCFRONT_railA_5v m15 : 32|12@1+ (0.00544368,0) [0|22.2919] "V" Receiver + SG_ VCFRONT_railB_12v m15 : 20|12@1+ (0.00544368,0) [0|22.2919] "V" Receiver + SG_ VCFRONT_railB_5v m15 : 44|12@1+ (0.00544368,0) [0|22.2919] "V" Receiver + SG_ VCFRONT_rightControllerCurrent m0 : 47|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_rightControllerFault m0 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_rightControllerState m0 : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_rightControllerTemp m0 : 15|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_rightControllerVoltage m0 : 31|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_sleepBypassCurrent m10 : 26|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_sleepBypassFault m10 : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_sleepBypassState m10 : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_sleepBypassVoltage m10 : 10|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_uiAudioCurrent m11 : 8|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_uiAudioFault m11 : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_uiAudioState m11 : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_uiCurrent m11 : 32|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_uiFault m11 : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_uiState m11 : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_vbatFusedHighCurrent m13 : 46|16@1+ (0.1,0) [0|6553.5] "A" Receiver + SG_ VCFRONT_vbatFusedHighFault m13 : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_vbatFusedHighState m13 : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_vbatFusedHighTemp m13 : 14|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_vbatFusedHighVoltage m13 : 30|16@1+ (0.1,0) [0|6553.5] "V" Receiver + SG_ VCFRONT_vbatFusedSelfTestResult m13 : 10|4@1+ (1,0) [0|11] "" Receiver + SG_ VCFRONT_vcleftSelfTestResult m1 : 11|4@1+ (1,0) [0|11] "" Receiver + SG_ VCFRONT_vcrightSelfTestResult m0 : 11|4@1+ (1,0) [0|11] "" Receiver + +BO_ 578 ID242VCLEFT_LVPowerState: 2 VehicleBus + SG_ VCLEFT_cpLVState : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_diLVState : 6|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_lumbarLVState : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_rcmLVState : 0|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_sccmLVState : 4|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_swcLVState : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_tpmsLVState : 2|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_vehiclePowerStateDBG : 14|2@1+ (1,0) [0|3] "" Receiver + +BO_ 579 ID243VCRIGHT_hvacStatus: 8 VehicleBus + SG_ VCRIGHT_hvacStatusIndex M : 0|2@1+ (1,0) [0|3] "" Receiver + SG_ VCRIGHT_hvacACRunning m0 : 50|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_hvacAirDistributionMode m0 : 41|3@1+ (1,0) [0|7] "" Receiver + SG_ VCRIGHT_hvacBlowerSegment m0 : 44|4@1+ (1,0) [0|11] "" Receiver + SG_ VCRIGHT_hvacCabinTempEst m0 : 30|11@1+ (0.1,-40) [-40|164] "C" Receiver + SG_ VCRIGHT_hvacDuctTargetLeft m1 : 48|8@1+ (0.5,-40) [-40|80] "C" Receiver + SG_ VCRIGHT_hvacDuctTargetRight m1 : 56|8@1+ (0.5,-40) [-40|80] "C" Receiver + SG_ VCRIGHT_hvacEvapInletTempEstimat m2 : 19|10@1+ (0.13,-40) [-40|90] "C" Receiver + SG_ VCRIGHT_hvacMassflowRefrigSystem m1 : 2|8@1+ (1,0) [0|250] "g/s" Receiver + SG_ VCRIGHT_hvacModelInitStatus m0 : 60|3@1+ (1,0) [0|5] "" Receiver + SG_ VCRIGHT_hvacOverheatProtActive m0 : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_hvacPowerState m0 : 51|3@1+ (1,0) [0|4] "" Receiver + SG_ VCRIGHT_hvacQdotLeft m0 : 2|14@1+ (1,-8191) [-8191|8191] "W" Receiver + SG_ VCRIGHT_hvacQdotRight m0 : 16|14@1+ (1,-8191) [-8191|8191] "W" Receiver + SG_ VCRIGHT_hvacRecirc m0 : 48|2@1+ (1,0) [0|2] "" Receiver + SG_ VCRIGHT_hvacRecircDoorPercent m1 : 10|6@1+ (1.6,0) [0|100] "%" Receiver + SG_ VCRIGHT_hvacSecondRowState m0 : 56|3@1+ (1,0) [0|4] "" Receiver + SG_ VCRIGHT_hvacSystemNominal m0 : 59|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_hvacVentStatus m0 : 54|2@1+ (1,0) [0|2] "" Receiver + SG_ VCRIGHT_tempDuctLeft m1 : 16|8@1+ (0.5,-22) [-22|105] "C" Receiver + SG_ VCRIGHT_tempDuctLeftLower m1 : 24|8@1+ (0.5,-22) [-22|105] "C" Receiver + SG_ VCRIGHT_tempDuctLeftUpper m2 : 2|8@1+ (0.5,-22) [-22|105] "C" Receiver + SG_ VCRIGHT_tempDuctRight m1 : 32|8@1+ (0.5,-22) [-22|105] "C" Receiver + SG_ VCRIGHT_tempDuctRightLower m1 : 40|8@1+ (0.5,-22) [-22|105] "C" Receiver + SG_ VCRIGHT_tempDuctRightUpper m2 : 10|8@1+ (0.5,-22) [-22|105] "C" Receiver + +BO_ 524 ID20CVCRIGHT_hvacRequest: 8 VehicleBus + SG_ VCRIGHT_conditioningRequest : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_evapPerformanceLow : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_hvacBlowerSpeedRPMReq : 32|10@1+ (5,0) [0|5115] "RPM" Receiver + SG_ VCRIGHT_hvacEvapEnabled : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_hvacHeatingEnabledLeft : 52|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_hvacHeatingEnabledRight : 53|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_hvacPerfTestRunning : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_hvacPerfTestState : 54|2@1+ (1,0) [0|2] "" Receiver + SG_ VCRIGHT_hvacUnavailable : 56|1@1+ (1,0) [0|1] "" Receiver + SG_ VCRIGHT_tempAmbientRaw : 44|8@1+ (0.5,-40) [-40|80] "C" Receiver + SG_ VCRIGHT_tempEvaporator : 13|11@1+ (0.1,-40) [-40|105] "C" Receiver + SG_ VCRIGHT_tempEvaporatorTarget : 24|8@1+ (0.2,0) [0|50] "C" Receiver + SG_ VCRIGHT_wattsDemandEvap : 0|11@1+ (5,0) [0|10000] "W" Receiver + +BO_ 737 ID2E1VCFRONT_status: 8 VehicleBus + SG_ VCFRONT_statusIndex M : 0|3@1+ (1,0) [0|6] "" Receiver + SG_ VCFRONT_12VARailStable m5 : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_12VBRailStable m5 : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_12VOverchargeCounter m4 : 16|4@1+ (1,0) [0|15] "" Receiver + SG_ VCFRONT_5VARailStable m5 : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_5VBRailStable m5 : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_AS8510Voltage m5 : 28|12@1+ (0.00544368,0) [0|22.2864] "V" Receiver + SG_ VCFRONT_ChargePumpVoltageStable m5 : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_HSDInitCompleteU13 m5 : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_HSDInitCompleteU16 m5 : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_IBSFault m4 : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_PCSMia m4 : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_PEResetLineState m5 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_airCompressorStatus m0 : 25|3@1+ (1,0) [0|7] "" Receiver + SG_ VCFRONT_anyClosureOpen m0 : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_anyDoorOpen m0 : 50|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_batterySMState m1 : 16|4@1+ (1,0) [0|8] "" Receiver + SG_ VCFRONT_chargeNeeded m4 : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_chillerDemandActive m3 : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_compPerfRecoveryLimited m3 : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_coolantFillRoutineStatus m3 : 50|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_crashDetectedType m0 : 20|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_crashState m0 : 22|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_crashUnlockOverrideSet m0 : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_epasWakeLine m1 : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_freezeEvapITerm m3 : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_frunkAccessPost m0 : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_frunkInteriorRelSwitch m0 : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_frunkLatchStatus m0 : 3|4@1+ (1,0) [0|8] "" Receiver + SG_ VCFRONT_frunkLatchType m0 : 58|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_hasLowRefrigerant m3 : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_headlampLeftFanStatus m0 : 60|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_headlampRightFanStatus m0 : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_headlightLeftVPosition m0 : 28|10@1+ (1,0) [0|1023] "ticks" Receiver + SG_ VCFRONT_headlightRightVPosition m0 : 38|10@1+ (1,0) [0|1023] "ticks" Receiver + SG_ VCFRONT_homelinkCommStatus m2 : 48|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_homelinkV2Response0 m2 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_homelinkV2Response1 m2 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_homelinkV2Response2 m2 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_homelinkV2Response3 m2 : 32|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_homelinkV2Response4 m2 : 40|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_hornOn m0 : 51|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hvacModeNotAttainable m3 : 28|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hvacPerfTestCommand m3 : 48|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_iBoosterStateDBG m1 : 5|3@1+ (1,0) [0|4] "" Receiver + SG_ VCFRONT_iBoosterWakeLine m1 : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_isActiveHeatingBattery m0 : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_isColdStartRunning m3 : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_isEvapOperationAllowed m3 : 25|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_isHeatPumpOilPurgeActive m3 : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_maxEvapHeatRejection m3 : 8|8@1+ (65,0) [0|16575] "W" Receiver + SG_ VCFRONT_minEvapHeatRejection m3 : 16|8@1+ (10,0) [0|2500] "W" Receiver + SG_ VCFRONT_passengerBuckleStatus m0 : 57|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_pressureRefrigDischarge m3 : 40|8@1+ (0.125,0) [0|31.75] "bar" Receiver + SG_ VCFRONT_pressureRefrigSuction m3 : 32|7@1+ (0.125,0) [0|11.5] "bar" Receiver + SG_ VCFRONT_radarHeaterState m0 : 52|3@1+ (1,0) [0|4] "" Receiver + SG_ VCFRONT_railAState m5 : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_railBState m5 : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_refrigFillRoutineStatus m3 : 52|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_reverseBatteryFault m4 : 30|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_shortedCellFaultCounter m4 : 44|3@1+ (1,0) [0|7] "" Receiver + SG_ VCFRONT_silentWakeIBSCurrent m4 : 32|12@1- (0.1,-204.7) [-409.5|0] "mA" Receiver + SG_ VCFRONT_sleepCurrent m1 : 32|12@1- (0.1,-204.7) [-409.5|0] "mA" Receiver + SG_ VCFRONT_tempCompTargetVoltage m4 : 3|10@1+ (0.01,9) [9|16] "V" Receiver + SG_ VCFRONT_timeSpentSleeping m1 : 24|8@1+ (1,0) [0|255] "s" Receiver + SG_ VCFRONT_vbatMonitorVoltage m5 : 16|12@1+ (0.00544368,0) [0|22.2864] "V" Receiver + SG_ VCFRONT_vbatProt m5 : 40|12@1+ (0.00544368,0) [0|22.2919] "V" Receiver + SG_ VCFRONT_vehicleStatusDBG m1 : 8|5@1+ (1,0) [0|17] "" Receiver + SG_ VCFRONT_voltageDropCounter m4 : 20|4@1+ (1,0) [0|15] "" Receiver + SG_ VCFRONT_voltageFloorReachedCount m4 : 24|4@1+ (1,0) [0|15] "" Receiver + SG_ VCFRONT_voltageProfile m4 : 28|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_wiperPosition m0 : 12|3@1+ (1,0) [0|4] "" Receiver + SG_ VCFRONT_wiperSpeed m0 : 8|4@1+ (1,0) [0|8] "" Receiver + SG_ VCFRONT_wiperState m0 : 16|4@1+ (1,0) [0|12] "" Receiver + +BO_ 897 ID381VCFRONT_logging1Hz: 8 VehicleBus + SG_ VCFRONT_logging1HzIndex M : 0|5@1+ (1,0) [0|19] "" Receiver + SG_ VCFRONT_CCQdotActual m9 : 21|7@1+ (80,0) [0|10100] "W" Receiver + SG_ VCFRONT_CCQdotFdFrwrdTarget m9 : 7|7@1+ (80,0) [0|10100] "W" Receiver + SG_ VCFRONT_CCQdotFdbk m9 : 14|7@1- (80,0) [-5000|5000] "W" Receiver + SG_ VCFRONT_CMPDischargeSuperheat m8 : 17|5@1- (1,6) [-10|21] "C" Receiver + SG_ VCFRONT_DIQdotA m9 : 42|7@1+ (80,0) [0|10000] "W" Receiver + SG_ VCFRONT_HCML_bladeTemp m3 : 32|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_HCML_diffuseTemp m3 : 40|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_HCML_highBeamTemp m3 : 16|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_HCML_lowBeamSpotTemp m3 : 8|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_HCML_turnTemp m3 : 24|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_HCMR_bladeTemp m4 : 32|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_HCMR_diffuseTemp m4 : 40|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_HCMR_highBeamTemp m4 : 16|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_HCMR_lowBeamSpotTemp m4 : 8|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_HCMR_turnTemp m4 : 24|8@1- (1,67) [-60|194] "C" Receiver + SG_ VCFRONT_PDischargeControllerOutp m14 : 24|8@1+ (0.5,0) [0|100] "%" Receiver + SG_ VCFRONT_PSuctionControllerOutput m14 : 40|8@1+ (0.5,0) [0|100] "%" Receiver + SG_ VCFRONT_ambientColderThanBatt m16 : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_ambientSourcingAvailable m16 : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_ambientSourcingDisabled m14 : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_battDissipation m12 : 8|8@1+ (140,0) [0|35000] "W" Receiver + SG_ VCFRONT_battLoopWorthCooling m16 : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_battOverStagUpperLimit m16 : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_battUnderStagUpperLimit m16 : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_cabinHeatEnergyDuringDri m8 : 42|7@1+ (150,0) [0|19000] "Wh" Receiver + SG_ VCFRONT_calibratedPositionHCML m6 : 5|10@1+ (1,0) [0|1023] "Steps" Receiver + SG_ VCFRONT_calibratedPositionHCMR m6 : 16|10@1+ (1,0) [0|1023] "Steps" Receiver + SG_ VCFRONT_ccLeftExvCalibFailed m11 : 60|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_ccLeftExvCalibOffset m11 : 40|8@1- (4,0) [-510|510] "ticks" Receiver + SG_ VCFRONT_ccLeftExvRange m7 : 41|9@1+ (3,0) [0|1500] "ticks" Receiver + SG_ VCFRONT_ccRightExvCalibFailed m11 : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_ccRightExvCalibOffset m11 : 48|8@1- (4,0) [-510|510] "ticks" Receiver + SG_ VCFRONT_ccRightExvRange m7 : 50|9@1+ (3,0) [0|1500] "ticks" Receiver + SG_ VCFRONT_chillerExvCalibFailed m11 : 56|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_chillerExvCalibOffset m11 : 8|8@1- (4,0) [-510|510] "ticks" Receiver + SG_ VCFRONT_chillerExvRange m7 : 5|9@1+ (3,0) [0|1500] "ticks" Receiver + SG_ VCFRONT_chillerInletTempEstimate m13 : 27|8@1- (1,0) [-40|85] "C" Receiver + SG_ VCFRONT_chillerLiftDisabledLowPs m14 : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_chillerPassiveCoolPower m12 : 24|8@1- (60,7560) [0|15000] "W" Receiver + SG_ VCFRONT_compEnergyDuringDrive m8 : 35|7@1+ (150,0) [0|19000] "Wh" Receiver + SG_ VCFRONT_condenserPressureLimit m1 : 8|6@1+ (0.16,10) [10|20] "bar" Receiver + SG_ VCFRONT_coolantLevelVoltage m0 : 55|9@1+ (0.01,0) [0|5] "V" Receiver + SG_ VCFRONT_coolantValveAngleDrift m2 : 18|10@1+ (0.25,-127) [-127|127] "degrees" Receiver + SG_ VCFRONT_coolantValveCountRange m2 : 8|10@1+ (1,375) [375|1375] "ticks" Receiver + SG_ VCFRONT_coolantValveDailyAngleTr m19 : 34|10@1+ (20,0) [0|20000] "degrees" Receiver + SG_ VCFRONT_coolantValveOdometer m19 : 24|10@1+ (500,0) [0|500000] "degrees" Receiver + SG_ VCFRONT_coolantValveRadBypass m2 : 56|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_coolantValveRecalCount m2 : 28|16@1+ (1,0) [0|65535] "" Receiver + SG_ VCFRONT_coolantValveRecalReason m2 : 5|3@1+ (1,0) [0|7] "" Receiver + SG_ VCFRONT_coolantValveWindupEstL m2 : 44|6@1+ (2,0) [0|126] "ticks" Receiver + SG_ VCFRONT_coolantValveWindupEstR m2 : 50|6@1+ (2,0) [0|126] "ticks" Receiver + SG_ VCFRONT_currentPositionHCML m6 : 26|10@1+ (1,0) [0|1023] "Steps" Receiver + SG_ VCFRONT_currentPositionHCMR m6 : 36|10@1+ (1,0) [0|1023] "Steps" Receiver + SG_ VCFRONT_cycleModelConverged m10 : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_diDissipation m12 : 16|8@1+ (80,0) [0|20000] "W" Receiver + SG_ VCFRONT_dischargePressureLimit m19 : 48|7@1+ (0.25,0) [0|26] "bar" Receiver + SG_ VCFRONT_dischargePressureTarget m14 : 8|7@1+ (0.25,0) [0|26] "bar" Receiver + SG_ VCFRONT_drlMode m18 : 5|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_estCompPower m16 : 35|8@1+ (50,0) [0|12750] "W" Receiver + SG_ VCFRONT_estCompRefrigMassflow m16 : 17|6@1+ (4,0) [0|251] "g/s" Receiver + SG_ VCFRONT_estCompressorRpm m10 : 48|6@1+ (400,0) [0|25200] "rpm" Receiver + SG_ VCFRONT_estPressureDisch m10 : 19|7@1+ (0.25,0) [0|31.75] "bar" Receiver + SG_ VCFRONT_estPressureLiq m10 : 5|7@1+ (0.25,0) [0|31.75] "bar" Receiver + SG_ VCFRONT_estPressureSuct m10 : 12|7@1+ (0.125,0) [0|11.5] "bar" Receiver + SG_ VCFRONT_estQLift m10 : 54|7@1+ (100,0) [0|12700] "W" Receiver + SG_ VCFRONT_estTempDisch m10 : 40|8@1- (0.8,68.8) [-34|170] "C" Receiver + SG_ VCFRONT_estTempLiq m10 : 26|8@1- (0.8,68.8) [-34|170] "C" Receiver + SG_ VCFRONT_estTempSuct m10 : 34|6@1- (1,2) [-30|33] "C" Receiver + SG_ VCFRONT_evapDisabledLowPsCutout m14 : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_evapExvCalibFailed m11 : 57|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_evapExvCalibOffset m11 : 16|8@1- (4,0) [-510|510] "ticks" Receiver + SG_ VCFRONT_evapExvRange m7 : 14|9@1+ (3,0) [0|1500] "ticks" Receiver + SG_ VCFRONT_evapFdFrwrdTarget m9 : 28|7@1+ (80,0) [0|10100] "W" Receiver + SG_ VCFRONT_evapFdFrwrdTargetMinimum m9 : 49|7@1+ (80,0) [0|10000] "W" Receiver + SG_ VCFRONT_evapFdbk m9 : 35|7@1- (80,0) [-5000|5000] "W" Receiver + SG_ VCFRONT_exteriorQuietModeAllowed m9 : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_exteriorQuietModeEnabled m9 : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_fanControlFeedfwdActive m15 : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_fanControlRadCanCool m15 : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_fanControlRadiatorInletT m15 : 57|6@1- (1.8,36) [-20|90] "C" Receiver + SG_ VCFRONT_fanControlRadiatorUa m15 : 50|7@1+ (8,0) [0|1000] "W/C" Receiver + SG_ VCFRONT_fanDemandCondenser m1 : 14|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_fanDemandRadiator m1 : 21|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_feedBackDuctTempControll m15 : 32|8@1+ (1,-100) [-100|100] "-" Receiver + SG_ VCFRONT_feedBackEvapTempControll m15 : 24|7@1+ (0.01,-0.5) [-0.5|0.5] "-" Receiver + SG_ VCFRONT_feedFwdFanDemand m13 : 35|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_feedFwdMDotCabinCondense m15 : 16|8@1+ (0.005,0) [0|1] "-" Receiver + SG_ VCFRONT_feedFwdMDotEvaporator m15 : 8|8@1+ (0.005,0) [0|1] "-" Receiver + SG_ VCFRONT_feedFwdPumpDemand m13 : 42|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_feedfwdLoadCoolingDomina m9 : 59|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_homelinkRegionCode m5 : 8|4@1+ (1,0) [0|9] "" Receiver + SG_ VCFRONT_hpAmbientSource m17 : 6|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpAtSteadyState m16 : 50|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpBattOverTempHvacDisabl m17 : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpBattStagTarget m8 : 28|7@1+ (1,-40) [-40|80] "C" Receiver + SG_ VCFRONT_hpBatteryCool m17 : 19|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpBatteryCoolCabinConden m17 : 20|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpBatteryCoolCabinReheat m17 : 21|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpBatteryCoolEvaporator m17 : 22|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpBatteryHeatAmbientSour m17 : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpBatteryHeatCOP1 m17 : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCOP m8 : 22|6@1+ (0.1,0) [0|6] "-" Receiver + SG_ VCFRONT_hpCabinCoolEvaporator m17 : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCabinCoolEvaporatorReh m17 : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCabinHeatAmbientSource m17 : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCabinHeatBatteryCoolRe m17 : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCabinHeatBatteryHeatRe m17 : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCabinHeatBlend m17 : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCabinHeatCOP1 m17 : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCabinHeatReheatAmbient m17 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCabinHeatReheatScaveng m17 : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCabinHeatScavengeOnly m17 : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpCompPowerIndex m16 : 43|7@1+ (1,0) [0|127] "-" Receiver + SG_ VCFRONT_hpCompPowerIndexFiltered m12 : 56|7@1+ (1,0) [0|127] "-" Receiver + SG_ VCFRONT_hpDiagLouverCalib m17 : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpForceScavenge m16 : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpGeneral m17 : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpMode m16 : 10|5@1+ (1,0) [0|19] "" Receiver + SG_ VCFRONT_hpPotentialLowRefrig m9 : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpRefrigerantPurgeState m9 : 62|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_hpSubcoolTarget m8 : 12|5@1+ (1,0) [0|31] "C" Receiver + SG_ VCFRONT_lccActiveCoolTarget m19 : 16|7@1+ (1,0) [0|100] "C" Receiver + SG_ VCFRONT_lccExvCalibFailed m11 : 59|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_lccExvCalibOffset m11 : 32|8@1- (4,0) [-510|510] "ticks" Receiver + SG_ VCFRONT_lccExvRange m7 : 32|9@1+ (3,0) [0|1500] "ticks" Receiver + SG_ VCFRONT_lccInletTempEstimate m13 : 19|8@1- (1,0) [-40|85] "C" Receiver + SG_ VCFRONT_lccPassiveHeatPower m12 : 32|8@1+ (60,0) [0|15000] "W" Receiver + SG_ VCFRONT_lowSideLiftEnergyDrive m8 : 49|7@1+ (150,0) [0|19000] "Wh" Receiver + SG_ VCFRONT_lowSideWattsLift m8 : 56|7@1+ (60,0) [0|7600] "W" Receiver + SG_ VCFRONT_maxAllowedEvapPowerInSer m12 : 40|8@1+ (40,0) [0|10000] "W" Receiver + SG_ VCFRONT_maxChillerCoolingPower m15 : 40|8@1+ (100,0) [0|20000] "W" Receiver + SG_ VCFRONT_maxCompressorRPMAllowed m14 : 56|7@1+ (90,0) [0|11430] "rpm" Receiver + SG_ VCFRONT_minAllowedChillerPowerIn m12 : 48|8@1+ (40,0) [0|10000] "W" Receiver + SG_ VCFRONT_minAllowedSuctionPressur m14 : 48|7@1+ (0.02,0) [0|2.5] "bar" Receiver + SG_ VCFRONT_minFlowPDCont m14 : 16|8@1+ (0.5,0) [0|100] "%" Receiver + SG_ VCFRONT_modeDesired m0 : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_modeTransitionID m0 : 8|6@1+ (1,0) [0|40] "" Receiver + SG_ VCFRONT_modelLoadCoolingDominant m9 : 60|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_passiveCoolingState m9 : 56|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_passiveDemandRadBypass m19 : 8|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_passiveSeriesRegOn m19 : 5|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_pressureRefrigDischEst m16 : 24|5@1+ (1,0) [0|31] "bar" Receiver + SG_ VCFRONT_pressureRefrigSuctionEst m16 : 51|7@1+ (0.12,0) [0|14.36] "bar" Receiver + SG_ VCFRONT_ptLoopWorthCooling m16 : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_pumpBatteryFETTemp m1 : 36|8@1+ (1,-40) [-40|150] "C" Receiver + SG_ VCFRONT_pumpPowertrainFETTemp m1 : 44|8@1+ (1,-40) [-40|150] "C" Receiver + SG_ VCFRONT_radActiveRejectEstimate m13 : 49|15@1+ (1,0) [0|30000] "W" Receiver + SG_ VCFRONT_radPassiveRejectEstimate m13 : 5|14@1+ (1,0) [0|15000] "W" Receiver + SG_ VCFRONT_radiatorFanFETTemp m1 : 52|8@1+ (1,-40) [-40|150] "C" Receiver + SG_ VCFRONT_radiatorFanRunReason m1 : 60|4@1+ (1,0) [0|8] "" Receiver + SG_ VCFRONT_recircExvCalibFailed m11 : 58|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_recircExvCalibOffset m11 : 24|8@1- (4,0) [-510|510] "ticks" Receiver + SG_ VCFRONT_recircExvRange m7 : 23|9@1+ (3,0) [0|1500] "ticks" Receiver + SG_ VCFRONT_subcoolActual m8 : 5|7@1- (0.4,15.2) [-10|40] "C" Receiver + SG_ VCFRONT_suctionPressureTarget m14 : 32|6@1+ (0.15,0) [0|8] "bar" Receiver + SG_ VCFRONT_suctionSuperheatEstPsSNA m16 : 58|4@1+ (2,0) [0|30] "C" Receiver + SG_ VCFRONT_suctionSuperheatEstTsSNA m17 : 24|4@1+ (2,0) [0|30] "C" Receiver + SG_ VCFRONT_targetBatActiveCool m0 : 32|7@1+ (1,0) [0|100] "C" Receiver + SG_ VCFRONT_targetBatActiveHeat m0 : 48|7@1+ (1,-40) [-40|60] "C" Receiver + SG_ VCFRONT_targetBatPassive m0 : 40|7@1+ (1,-20) [-20|80] "C" Receiver + SG_ VCFRONT_targetPTActiveCool m0 : 16|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ VCFRONT_targetPTPassive m0 : 24|8@1+ (1,-40) [-40|120] "C" Receiver + SG_ VCFRONT_tempRefrigDischargeEst m16 : 29|6@1+ (2,0) [0|125] "C" Receiver + SG_ VCFRONT_tempRefrigSuction m1 : 28|8@1+ (0.5,-40) [-40|85] "C" Receiver + SG_ VCFRONT_tempRefrigSuctionEst m17 : 32|6@1+ (1,0) [0|63] "C" Receiver + SG_ VCFRONT_totalLoadCoolingDominant m9 : 58|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_wiperCycles m18 : 48|16@1+ (100,0) [0|6553500] "Cycles" Receiver + +BO_ 792 ID318SystemTimeUTC: 8 VehicleBus + SG_ UTCyear318 : 0|8@1+ (1,0) [0|0] "yr" Receiver + SG_ UTCmonth318 : 8|8@1+ (1,0) [0|0] "mo" Receiver + SG_ UTCseconds318 : 16|8@1+ (1,0) [0|0] "sec" Receiver + SG_ UTChour318 : 24|8@1+ (1,0) [0|0] "hr" Receiver + SG_ UTCday318 : 32|8@1+ (1,0) [0|0] "dy" Receiver + SG_ UTCminutes318 : 40|8@1+ (1,0) [0|0] "min" Receiver + +BO_ 1320 ID528UnixTime: 4 VehicleBus + SG_ UnixTimeSeconds528 : 7|32@0+ (1,0) [0|4294970000] "sec" Receiver + +BO_ 553 ID229GearLever: 3 VehicleBus + SG_ GearLeverPosition229 : 12|3@1+ (1,0) [0|7] "" Receiver + SG_ GearLeverButton229 : 16|2@1+ (1,0) [0|3] "" Receiver + +BO_ 585 ID249SCCMLeftStalk: 4 VehicleBus + SG_ SCCM_highBeamStalkStatus : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ SCCM_leftStalkCounter : 8|4@1+ (1,0) [0|15] "" Receiver + SG_ SCCM_leftStalkCrc : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ SCCM_leftStalkReserved1 : 24|5@1+ (1,0) [0|31] "" Receiver + SG_ SCCM_turnIndicatorStalkStatus : 16|4@1+ (1,0) [0|9] "" Receiver + SG_ SCCM_washWipeButtonStatus : 14|2@1+ (1,0) [0|3] "" Receiver + +BO_ 390 ID186DIF_torque: 8 VehicleBus + SG_ DIF_axleSpeed : 40|16@1- (0.1,0) [-2750|2750] "RPM" Receiver + SG_ DIF_slavePedalPos : 56|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIF_torqueActual : 27|13@1- (2,0) [-7500|7500] "Nm" Receiver + SG_ DIF_torqueChecksum : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ DIF_torqueCommand : 12|13@1- (2,0) [-7500|7500] "Nm" Receiver + SG_ DIF_torqueCounter : 8|4@1+ (1,0) [0|15] "" Receiver + SG_ DIF_axleSpeedQF : 25|1@1+ (1,0) [0|1] "" Receiver + +BO_ 918 ID396FrontOilPump: 8 VehicleBus + SG_ FrontOilPumpPressureExpected396 : 48|8@1+ (2,0) [0|500] "kPa" Receiver + SG_ FrontOilPumpPhaseCurrent396 : 56|8@1+ (0.1,0) [0|25.4] "A" Receiver + SG_ FrontOilFlowActual396 : 16|8@1+ (0.06,0) [0|15] "LPM" Receiver + SG_ FrontOilPumpDutyCycle396 : 8|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ FrontOilPumpOilTempEst396 : 32|8@1+ (1,-40) [0|214] "C" Receiver + SG_ FrontOilPumpFluidTemp396 : 24|8@1+ (1,-40) [0|214] "C" Receiver + SG_ FrontOilPumpState396 : 0|3@1+ (1,0) [0|7] "" Receiver + SG_ FrontOilPumpPressureEstimate396 : 40|8@1+ (2,0) [0|500] "kPa" Receiver + SG_ FrontOilPumpOilTempEstConfident3 : 3|1@1+ (1,0) [0|0] "" Receiver + SG_ FrontOilPumpLeadAngle396 : 4|4@1+ (1.875,0) [0|28.125] "deg" Receiver + +BO_ 917 ID395DIR_oilPump: 8 VehicleBus + SG_ DIR_oilPumpFlowActual : 16|8@1+ (0.06,0) [0|15] "LPM" Receiver + SG_ DIR_oilPumpFlowTarget : 8|8@1+ (0.06,0) [0|15] "LPM" Receiver + SG_ DIR_oilPumpFluidT : 24|8@1+ (1,-40) [-40|214] "C" Receiver + SG_ DIR_oilPumpFluidTQF : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ DIR_oilPumpLeadAngle : 4|4@1+ (1.875,0) [0|28.125] "deg" Receiver + SG_ DIR_oilPumpPhaseCurrent : 32|8@1+ (0.1,0) [0|25.4] "A" Receiver + SG_ DIR_oilPumpPressureEstimate : 40|8@1+ (2,0) [0|500] "kPa" Receiver + SG_ DIR_oilPumpPressureExpected : 48|8@1+ (2,0) [0|500] "kPa" Receiver + SG_ DIR_oilPumpPressureResidual : 56|8@1+ (4,-500) [-500|500] "kPa" Receiver + SG_ DIR_oilPumpState : 0|3@1+ (1,0) [0|7] "" Receiver + +BO_ 472 ID1D8RearTorque: 8 VehicleBus + SG_ Checksum1D8 : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ Counter1D8 : 53|3@1+ (1,0) [0|7] "" Receiver + SG_ RearTorqueRequest1D8 : 8|13@1- (0.222,0) [-909.312|909.09] "NM" Receiver + SG_ RearTorque1D8 : 21|13@1- (0.222,0) [-909.312|909.09] "NM" Receiver + SG_ TorqueFlags1D8 : 0|8@1+ (1,0) [0|255] "" Receiver + +BO_ 341 ID155WheelAngles: 8 ChassisBus + SG_ WheelAngleTicsRR155 : 24|8@1+ (1.40625,0) [0|358.594] "deg" Receiver + SG_ WheelAngleTicsRL155 : 16|8@1+ (1.40625,0) [0|358.594] "deg" Receiver + SG_ WheelAngleTicsFR155 : 8|8@1+ (1.40625,0) [0|358.594] "deg" Receiver + SG_ WheelAngleTicsFL155 : 0|8@1+ (1.40625,0) [0|358.594] "deg" Receiver + SG_ ESP_WheelRotationReR : 32|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_WheelRotationReL : 34|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_WheelRotationFrR : 36|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_WheelRotationFrL : 38|2@1+ (1,0) [0|3] "" Receiver + SG_ ESP_wheelSpeedsQF : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_vehicleStandstillSts : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_vehicleSpeed : 42|10@1+ (0.5,0) [0|511] "kph" Receiver + SG_ ESP_wheelRotationCounter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ ESP_wheelRotationChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + +BO_ 373 ID175WheelSpeed: 8 ChassisBus + SG_ WheelSpeedRR175 : 39|13@1+ (0.04,0) [0|327.64] "KPH" Receiver + SG_ WheelSpeedRL175 : 26|13@1+ (0.04,0) [0|327.64] "KPH" Receiver + SG_ WheelSpeedFR175 : 13|13@1+ (0.04,0) [0|327.64] "KPH" Receiver + SG_ WheelSpeedFL175 : 0|13@1+ (0.04,0) [0|327.64] "KPH" Receiver + SG_ ESP_wheelSpeedsCounter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ ESP_wheelSpeedsChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + +BO_ 389 ID185ESP_brakeTorque: 8 ChassisBus + SG_ ESP_brakeTorqueFrL : 0|12@1+ (2,0) [0|8190] "Nm" Receiver + SG_ ESP_brakeTorqueFrR : 12|12@1+ (2,0) [0|8190] "Nm" Receiver + SG_ ESP_brakeTorqueReL : 24|12@1+ (2,0) [0|8190] "Nm" Receiver + SG_ ESP_brakeTorqueReR : 36|12@1+ (2,0) [0|8190] "Nm" Receiver + SG_ ESP_brakeTorqueQF : 50|1@1+ (1,0) [0|1] "" Receiver + SG_ ESP_brakeTorqueCounter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ ESP_brakeTorqueChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + +BO_ 468 ID1D4FrontTorqueOld: 8 VehicleBus + SG_ RAWTorqueFront1D4 : 40|12@1- (0.25,0) [-512|511.75] "NM" Receiver + +BO_ 469 ID1D5FrontTorque: 8 VehicleBus + SG_ FrontTorqueRequest1D5 : 8|13@1- (0.222,0) [-909.312|909.09] "NM" Receiver + SG_ FrontTorque1D5 : 21|13@1- (0.222,0) [-909.312|909.09] "NM" Receiver + +BO_ 641 ID281VCFRONT_CMPRequest: 8 VehicleBus + SG_ VCFRONT_CMPTargetDuty : 0|16@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_CMPPowerLimit : 16|16@1+ (1,0) [0|65534] "W" Receiver + SG_ VCFRONT_CMPReset : 32|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_CMPEnable : 40|1@1+ (1,0) [0|1] "" Receiver + +BO_ 962 ID3C2VCLEFT_switchStatus: 8 VehicleBus + SG_ VCLEFT_switchStatusIndex M : 0|2@1+ (1,0) [0|2] "" Receiver + SG_ VCLEFT_2RowSeatBothFoldFlatSwitc m1 : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_2RowSeatCenterSwitch m1 : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_2RowSeatLeftFoldFlatSwitc m1 : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_2RowSeatReclineSwitch m1 : 36|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_2RowSeatRightFoldFlatSwit m1 : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_brakePressed m0 : 60|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_brakeSwitchPressed m0 : 4|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowAutoDownLR m1 : 35|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowAutoUpLR m1 : 33|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowDownLR m1 : 34|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackAutoDownLF m0 : 35|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackAutoDownLR m0 : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackAutoDownRF m0 : 43|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackAutoDownRR m0 : 47|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackAutoUpLF m0 : 33|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackAutoUpLR m0 : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackAutoUpRF m0 : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackAutoUpRR m0 : 45|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackDownLF m0 : 34|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackDownLR m0 : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackDownRF m0 : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackDownRR m0 : 46|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackUpLF m0 : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackUpLR m0 : 36|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackUpRF m0 : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowSwPackUpRR m0 : 44|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_btnWindowUpLR m1 : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_frontBuckleSwitch m0 : 48|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontOccupancySwitch m0 : 50|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatBackrestBack m0 : 20|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatBackrestForward m0 : 22|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatLiftDown m0 : 16|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatLiftUp m0 : 18|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatLumbarDown m0 : 24|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatLumbarIn m0 : 28|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatLumbarOut m0 : 30|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatLumbarUp m0 : 26|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatTiltDown m0 : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatTiltUp m0 : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatTrackBack m0 : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_frontSeatTrackForward m0 : 10|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_hazardButtonPressed m0 : 3|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_hornSwitchPressed m0 : 2|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_rearCenterBuckleSwitch m0 : 62|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_rearCenterOccupancySwitch m0 : 54|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_rearHVACButtonPressed m0 : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_rearLeftBuckleSwitch m0 : 52|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_rearLeftOccupancySwitch m0 : 56|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_rearRightOccupancySwitch m0 : 58|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_rightMirrorTilt m0 : 5|3@1+ (1,0) [0|4] "" Receiver + SG_ VCLEFT_swcLeftDoublePress m1 : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_swcLeftPressed m1 : 5|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_swcLeftScrollTicks m1 : 16|6@1- (1,0) [-32|31] "" Receiver + SG_ VCLEFT_swcLeftTiltLeft m1 : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_swcLeftTiltRight m1 : 3|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_swcRightDoublePress m1 : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ VCLEFT_swcRightPressed m1 : 12|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_swcRightScrollTicks m1 : 24|6@1- (1,0) [-32|31] "" Receiver + SG_ VCLEFT_swcRightTiltLeft m1 : 8|2@1+ (1,0) [0|3] "" Receiver + SG_ VCLEFT_swcRightTiltRight m1 : 10|2@1+ (1,0) [0|3] "" Receiver + +BO_ 822 ID336MaxPowerRating: 4 VehicleBus + SG_ DriveRegenRating336 : 16|8@1+ (1,-100) [-100|155] "kW" Receiver + SG_ DrivePowerRating336 : 0|10@1+ (1,0) [0|600] "kW" Receiver + SG_ DI_performancePackage : 24|3@1+ (1,0) [0|4] "" Receiver + +BO_ 659 ID293UI_chassisControl: 8 VehicleBus + SG_ UI_accOvertakeEnable : 16|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_aebEnable : 18|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_aesEnable : 20|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_ahlbEnable : 22|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_autoLaneChangeEnable : 24|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_autoParkRequest : 28|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_bsdEnable : 32|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_chassisControlChecksum : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ UI_chassisControlCounter : 52|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_dasDebugEnable : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_distanceUnits : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_fcwEnable : 34|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_fcwSensitivity : 36|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_latControlEnable : 38|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_ldwEnable : 40|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_narrowGarages : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_parkBrakeRequest : 5|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_pedalSafetyEnable : 42|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_rebootAutopilot : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_redLightStopSignEnable : 46|2@1+ (1,0) [0|3] "" Receiver + SG_ UI_selfParkTune : 48|4@1+ (1,0) [0|15] "" Receiver + SG_ UI_steeringTuneRequest : 0|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_tractionControlMode : 2|3@1+ (1,0) [0|6] "" Receiver + SG_ UI_trailerMode : 12|1@1+ (1,0) [0|1] "" Receiver + SG_ UI_winchModeRequest : 8|2@1+ (1,0) [0|2] "" Receiver + SG_ UI_zeroSpeedConfirmed : 10|2@1+ (1,0) [0|3] "" Receiver + +BO_ 616 ID268SystemPower: 5 VehicleBus + SG_ SystemRegenPowerMax268 : 32|8@1+ (1,-100) [-100|155] "kW" Receiver + SG_ SystemHeatPowerMax268 : 0|8@1+ (0.08,0) [0|31875] "kW" Receiver + SG_ SystemHeatPower268 : 8|8@1+ (0.08,0) [0|31875] "kW" Receiver + SG_ SystemDrivePowerMax268 : 16|9@1+ (1,0) [0|511] "kW" Receiver + SG_ DI_primaryUnitSiliconType : 26|1@1+ (1,0) [0|1] "" Receiver + +BO_ 79 ID04FGPSLatLong: 8 ChassisBus + SG_ GPSAccuracy04F : 57|7@1+ (0.2,0) [0|25.2] "m" Receiver + SG_ GPSLongitude04F : 28|28@1- (1E-006,0) [-134.218|134.218] "Deg" Receiver + SG_ GPSLatitude04F : 0|28@1- (1E-006,0) [-134.218|134.218] "Deg" Receiver + +BO_ 978 ID3D2TotalChargeDischarge: 8 VehicleBus + SG_ TotalDischargeKWh3D2 : 0|32@1+ (0.001,0) [0|4294970] "kWh" Receiver + SG_ TotalChargeKWh3D2 : 32|32@1+ (0.001,0) [0|4294970] "kWh" Receiver + +BO_ 1010 ID3F2BMSCounters: 8 VehicleBus + SG_ BMS_kwhCounter_Id M : 0|4@1+ (1,0) [0|0] "" Receiver + SG_ BMS_kwhDcChargeTotalModule3 m9 : 36|28@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhChargeTotalModule2 m6 : 36|28@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhDcChargeTotalModule2 m7 : 36|28@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhChargeTotalModule4 m10 : 36|28@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhDcChargeTotalModule4 m11 : 36|28@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhDcChargeTotalModule1 m5 : 36|28@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhChargeTotalModule1 m4 : 36|28@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhChargeTotalModule3 m8 : 36|28@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhAcChargeTotalModule3 m9 : 8|28@1- (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhDischargeTotalModule2 m6 : 8|28@1- (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhAcChargeTotalModule2 m7 : 8|28@1- (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhDischargeTotalModule4 m10 : 8|28@1- (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhAcChargeTotalModule4 m11 : 8|28@1- (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhAcChargeTotalModule1 m5 : 8|28@1- (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhDriveDischargeTotal m3 : 8|32@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_dcChargerKwhTotal m1 : 8|32@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhDischargeTotalModule1 m4 : 8|28@1- (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_acChargerKwhTotal m0 : 8|32@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhRegenChargeTotal m2 : 8|32@1+ (0.001,0) [0|0] "KWh" Receiver + SG_ BMS_kwhDischargeTotalModule3 m8 : 8|28@1- (0.001,0) [0|0] "KWh" Receiver + +BO_ 722 ID2D2BMSVAlimits: 8 VehicleBus + SG_ MinVoltage2D2 : 0|16@1+ (0.01,0) [0|430] "V" Receiver + SG_ MaxDischargeCurrent2D2 : 48|14@1+ (0.128,0) [0|2096.9] "A" Receiver + SG_ MaxChargeCurrent2D2 : 32|14@1+ (0.1,0) [0|1638.2] "A" Receiver + SG_ MaxVoltage2D2 : 16|16@1+ (0.01,0) [0|430] "V" Receiver + +BO_ 1345 ID541FastChargeMaxLimits: 8 VehicleBus + SG_ FCMaxPowerLimit541 : 0|13@1+ (0.062256,0) [0|509.939] "kW" Receiver + SG_ FCMaxCurrentLimit541 : 16|13@1+ (0.073242,0) [0|599.925] "A" Receiver + +BO_ 580 ID244FastChargeLimits: 8 VehicleBus + SG_ FCMinVlimit244 : 48|13@1+ (0.073242,0) [0|599.925] "V" Receiver + SG_ FCMaxVlimit244 : 32|13@1+ (0.073242,0) [0|599.925] "V" Receiver + SG_ FCCurrentLimit244 : 16|13@1+ (0.073242,0) [0|599.925] "A" Receiver + SG_ FCPowerLimit244 : 0|13@1+ (0.062256,0) [0|509.939] "kW" Receiver + +BO_ 532 ID214FastChargeVA: 8 VehicleBus + SG_ FC_adapterLocked : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ FC_dcCurrent : 32|14@1- (0.0732422,0) [-600|599.927] "A" Receiver + SG_ FC_dcVoltage : 48|13@1+ (0.0732422,0) [0|599.927] "V" Receiver + SG_ FC_leakageTestNotSupported : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ FC_minCurrentLimit : 16|13@1+ (0.1,0) [0|600] "A" Receiver + SG_ FC_postID : 46|2@1+ (1,0) [0|3] "" Receiver + SG_ FC_protocolVersion : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_statusCode : 8|4@1+ (1,0) [0|15] "" Receiver + SG_ FC_type : 29|3@1+ (1,0) [0|7] "" Receiver + +BO_ 533 ID215FCisolation: 1 VehicleBus + SG_ FCIsolation215 : 0|8@1+ (40,0) [0|10200] "kOhm" Receiver + +BO_ 535 ID217FC_status3: 8 VehicleBus + SG_ FC_status3DataSelect M : 0|7@1+ (1,0) [0|1] "" Receiver + SG_ FC_billingEnergy m1 : 8|16@1+ (0.015259,0) [0|1000] "kWh" Receiver + SG_ FC_brand m0 : 16|4@1+ (1,0) [0|1] "" Receiver + SG_ FC_class m0 : 8|8@1+ (1,0) [0|2] "" Receiver + SG_ FC_coolingType m0 : 20|4@1+ (1,0) [0|2] "" Receiver + SG_ FC_generation m0 : 32|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_status3DummySig : 7|1@1+ (1,0) [0|1] "" Receiver + SG_ FC_uiStopType m0 : 24|4@1+ (1,0) [0|2] "" Receiver + +BO_ 801 ID321VCFRONT_sensors: 8 VehicleBus + SG_ VCFRONT_battSensorIrrational : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_brakeFluidLevel : 22|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_coolantLevel : 21|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_ptSensorIrrational : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_tempAmbient : 24|8@1+ (0.5,-40) [-40|80] "C" Receiver + SG_ VCFRONT_tempAmbientFiltered : 40|8@1+ (0.5,-40) [-40|80] "C" Receiver + SG_ VCFRONT_tempCoolantBatInlet : 0|10@1+ (0.125,-40) [-40|85] "C" Receiver + SG_ VCFRONT_tempCoolantPTInlet : 10|11@1+ (0.125,-40) [-40|200] "C" Receiver + SG_ VCFRONT_washerFluidLevel : 32|2@1+ (1,0) [0|2] "" Receiver + +BO_ 769 ID301VCFRONT_info: 8 VehicleBus + SG_ VCFRONT_infoIndex M : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_hcmlAppCRC m16 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ VCFRONT_hcmrAppCRC m23 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ VCFRONT_infoAppCrc m13 : 8|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ VCFRONT_infoAppGitHash m17 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ VCFRONT_infoAssemblyId m11 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_infoBootCrc m20 : 24|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ VCFRONT_infoBootGitHash m18 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ VCFRONT_infoBootUdsProtoVersion m20 : 8|16@1+ (1,0) [0|65535] "" Receiver + SG_ VCFRONT_infoBuildConfigId m10 : 16|16@1+ (1,0) [0|65535] "" Receiver + SG_ VCFRONT_infoBuildType m10 : 8|3@1+ (1,0) [0|4] "" Receiver + SG_ VCFRONT_infoComponentId m10 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ VCFRONT_infoHardwareId m10 : 32|16@1+ (1,0) [0|65535] "" Receiver + SG_ VCFRONT_infoPcbaId m11 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_infoPlatformType m19 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ VCFRONT_infoSubUsageId m11 : 40|16@1+ (1,0) [0|65535] "" Receiver + SG_ VCFRONT_infoSubcomponent3 m24 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ VCFRONT_infoSubcomponent4 m31 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ VCFRONT_infoSubcomponent5 m32 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ VCFRONT_infoSubcomponent6 m33 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ VCFRONT_infoUsageId m11 : 24|16@1+ (1,0) [0|65535] "" Receiver + +BO_ 513 ID201VCFRONT_loggingAndVitals10H: 8 VehicleBus + SG_ VCFRONT_loggingAndVitals10HzInde M : 0|3@1+ (1,0) [0|7] "" Receiver + SG_ VCFRONT_activeLouverOpenPos m1 : 16|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_activeLouverOpenPosTarg m1 : 8|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_cclExvFlow m3 : 44|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_cclExvFlowTarget m5 : 44|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_cclExvState m6 : 20|4@1+ (1,0) [0|9] "" Receiver + SG_ VCFRONT_ccrExvFlow m3 : 54|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_ccrExvFlowTarget m5 : 54|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_ccrExvState m6 : 24|4@1+ (1,0) [0|9] "" Receiver + SG_ VCFRONT_chillerExvFlow m3 : 3|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_chillerExvFlowTarget m5 : 3|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_chillerExvState m6 : 3|4@1+ (1,0) [0|9] "" Receiver + SG_ VCFRONT_compDemandChiller m2 : 39|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_compDemandEvap m2 : 26|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_compressorState m2 : 24|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_coolantValveMode m2 : 61|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_evapExvFlow m3 : 13|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_evapExvFlowTarget m5 : 13|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_evapExvState m6 : 8|4@1+ (1,0) [0|9] "" Receiver + SG_ VCFRONT_exvFlowTarget m0 : 54|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_exvState m2 : 33|4@1+ (1,0) [0|9] "" Receiver + SG_ VCFRONT_fanDemand m2 : 16|7@1+ (1,0) [0|100] "%" Receiver + SG_ VCFRONT_hpBatteryLoadType m4 : 16|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_hpBlendType m4 : 11|2@1+ (1,0) [0|2] "" Receiver + SG_ VCFRONT_hpCabinLoadType m4 : 14|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_hpDominantLoad m4 : 8|3@1+ (1,0) [0|6] "" Receiver + SG_ VCFRONT_hpHighSideHX m4 : 3|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_hpLowSideHX m4 : 5|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_hpQuietModeEnabled m4 : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ VCFRONT_hpReqCoolantMode m4 : 18|3@1+ (1,0) [0|4] "" Receiver + SG_ VCFRONT_lccExvFlow m3 : 34|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_lccExvFlowTarget m5 : 34|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_lccExvState m6 : 16|4@1+ (1,0) [0|9] "" Receiver + SG_ VCFRONT_pressureRefrigDischargeV m2 : 53|8@1+ (0.125,0) [0|31.75] "bar" Receiver + SG_ VCFRONT_pressureRefrigLiquid m1 : 40|8@1+ (0.125,0) [0|31.75] "bar" Receiver + SG_ VCFRONT_pressureRefrigSuctionVit m2 : 46|7@1+ (0.125,0) [0|11.5] "bar" Receiver + SG_ VCFRONT_pumpBatteryRPMActual m0 : 3|10@1+ (10,0) [0|10000] "rpm" Receiver + SG_ VCFRONT_pumpPowertrainRPMActual m0 : 13|10@1+ (10,0) [0|10000] "rpm" Receiver + SG_ VCFRONT_radiatorFanRPMActual m0 : 24|10@1+ (10,0) [0|10000] "rpm" Receiver + SG_ VCFRONT_recircExvFlow m3 : 24|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_recircExvFlowTarget m5 : 24|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ VCFRONT_recircExvState m6 : 12|4@1+ (1,0) [0|9] "" Receiver + SG_ VCFRONT_solenoidEvapState m2 : 37|2@1+ (1,0) [0|3] "" Receiver + SG_ VCFRONT_tempRefrigDischarge m2 : 3|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_tempRefrigLiquid m1 : 24|11@1+ (0.125,-40) [-40|150] "C" Receiver + SG_ VCFRONT_tempSuperheatActFiltered m1 : 48|8@1- (0.25,26.5) [-5|58] "C" Receiver + SG_ VCFRONT_tempSuperheatActual m0 : 34|10@1+ (0.1,-20) [-20|80] "C" Receiver + SG_ VCFRONT_tempSuperheatTarget m0 : 44|10@1+ (0.1,0) [0|60] "C" Receiver + +BO_ 984 ID3D8Elevation: 2 VehicleBus + SG_ Elevation3D8 : 0|14@1- (1,0) [-8192|8191] "M" Receiver + +BO_ 609 ID261_12vBattStatus: 8 VehicleBus + SG_ VCFRONT_12VBatteryStatusChecksum : 56|8@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_12VBatteryStatusCounter : 52|4@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_LVBatteryDisconnected m1 : 50|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_LVBatterySupported m1 : 49|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_voltageFloorReachedCount m0 : 48|4@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_reverseBatteryFault m1 : 48|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_LVLoadRequest : 47|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_good12VforUpdate : 46|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_firstChargePOR m0 : 45|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_chargeNeeded m1 : 45|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_firstChargeOTA m0 : 44|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_PCSMia m1 : 44|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_silentWakeIBSCurrent m0 : 32|12@1- (0.1,-204.7) [-409.5|2.8421709430404E-014] "mA" Receiver + SG_ v12vBattVoltage261 m1 : 32|12@1+ (0.00544368,0) [0|22.2918696] "V" Receiver + SG_ VCFRONT_12VBatteryTargetVoltage m2 : 32|10@1+ (0.01,9) [9|19.23] "V" Receiver + SG_ v12vBattCurrent261 m0 : 16|16@1- (0.005,0) [-163.84|163.835] "A" Receiver + SG_ VCFRONT_IBSCurrent m1 : 16|16@1- (0.005,0) [-163.84|163.835] "A" Receiver + SG_ v12vBattTemp261 m2 : 16|16@1- (0.01,0) [-327.68|327.67] "C" Receiver + SG_ VCFRONT_shortedCellFaultCounter m0 : 13|3@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_isVehicleSupported m0 : 12|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_targetCurrent m1 : 8|8@1+ (0.125,0) [0|31.875] "A" Receiver + SG_ VCFRONT_voltageDropCounter m0 : 8|4@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_batterySMState m1 : 4|4@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_12VOverchargeCounter m0 : 4|4@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_batterySupportRequest m1 : 3|1@1+ (1,0) [0|0] "" Receiver + SG_ v12vBattAH261 m2 : 2|14@1- (0.005,0) [-40.96|40.955] "Ah" Receiver + SG_ VCFRONT_voltageProfile m0 : 2|2@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_IBSFault m1 : 2|1@1+ (1,0) [0|0] "" Receiver + SG_ VCFRONT_12VBatteryStatusIndex M : 0|2@1+ (1,0) [0|0] "" Receiver + +BO_ 297 ID129SteeringAngle: 8 VehicleBus + SG_ SteeringSensorC129 : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ SteeringSensorB129 : 48|8@1+ (1,0) [0|255] "" Receiver + SG_ SteeringSensorA129 : 46|2@1+ (1,0) [0|3] "" Receiver + SG_ SteeringSpeed129 : 32|14@1+ (0.5,-4096) [-4096|4095.5] "D/S" Receiver + SG_ SteeringAngle129 : 16|14@1+ (0.1,-819.2) [-819.2|819.1] "Deg" Receiver + +BO_ 612 ID264ChargeLineStatus: 8 VehicleBus + SG_ ChargeLinePower264 : 24|8@1+ (0.1,0) [0|25.5] "kW" Receiver + SG_ ChargeLineCurrentLimit264 : 32|10@1+ (0.1,0) [0|102.3] "A" Receiver + SG_ ChargeLineVoltage264 : 0|14@1+ (0.0333,0) [0|545.554] "V" Receiver + SG_ ChargeLineCurrent264 : 14|9@1+ (0.1,0) [0|51.1] "A" Receiver + +BO_ 548 ID224PCSDCDCstatus: 8 VehicleBus + SG_ DCDC12VSupportRtyCnt224 : 44|4@1+ (1,0) [0|0] "" Receiver + SG_ DCDC12VSupportStatus224 : 2|2@1+ (1,0) [0|0] "" Receiver + SG_ DCDCDischargeRtyCnt224 : 48|4@1+ (1,0) [0|0] "" Receiver + SG_ DCDCFaulted224 : 15|1@1+ (1,0) [0|0] "" Receiver + SG_ DCDCHvBusDischargeStatus224 : 4|2@1+ (1,0) [0|0] "" Receiver + SG_ DCDCInitialPrechargeSubState224 : 59|5@1+ (1,0) [0|0] "" Receiver + SG_ DCDCoutputCurrent224 : 16|12@1+ (0.1,0) [0|409.5] "A" Receiver + SG_ DCDCstate224 : 6|4@1+ (1,0) [0|0] "" Receiver + SG_ DCDCoutputCurrentMax224 : 29|12@1+ (0.1,0) [0|409.5] "A" Receiver + SG_ DCDCOutputIsLimited224 : 28|1@1+ (1,0) [0|0] "" Receiver + SG_ DCDCPrechargeRestartCnt224 : 56|3@1+ (1,0) [0|0] "" Receiver + SG_ DCDCPrechargeRtyCnt224 : 41|3@1+ (1,0) [0|0] "" Receiver + SG_ DCDCPrechargeStatus224 : 0|2@1+ (1,0) [0|0] "" Receiver + SG_ DCDCPwmEnableLine224 : 52|1@1+ (1,0) [0|0] "" Receiver + SG_ DCDCSubState224 : 10|5@1+ (1,0) [0|0] "" Receiver + SG_ DCDCSupportingFixedLvTarget224 : 53|1@1+ (1,0) [0|0] "" Receiver + SG_ PCS_ecuLogUploadRequest224 : 54|2@1+ (1,0) [0|0] "" Receiver + +BO_ 551 ID227CMP_state: 8 VehicleBus + SG_ CMP_HVOverVoltage : 40|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_HVUnderVoltage : 41|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_VCFRONTCANTimeout : 44|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_currentSensorCal : 46|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_failedStart : 47|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_inverterTemperature : 32|8@1+ (1,-40) [-40|200] "C" Receiver + SG_ CMP_motorVoltageSat : 48|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_overCurrent : 45|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_overTemperature : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_ready : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_repeatOverCurrent : 50|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_shortCircuit : 49|1@1+ (1,0) [0|1] "" Receiver + SG_ CMP_speedDuty : 16|16@1+ (0.1,0) [0|100] "%" Receiver + SG_ CMP_speedRPM : 0|16@1+ (1,0) [0|65534] "RPM" Receiver + SG_ CMP_state : 56|4@1+ (1,0) [0|15] "" Receiver + SG_ CMP_underTemperature : 43|1@1+ (1,0) [0|1] "" Receiver + +BO_ 280 ID118DriveSystemStatus: 8 VehicleBus + SG_ DI_accelPedalPos : 32|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DI_brakePedalState : 19|2@1+ (1,0) [0|2] "" Receiver + SG_ DI_driveBlocked : 12|2@1+ (1,0) [0|2] "" Receiver + SG_ DI_epbRequest : 44|2@1+ (1,0) [0|2] "" Receiver + SG_ DI_gear : 21|3@1+ (1,0) [0|7] "" Receiver + SG_ DI_immobilizerState : 27|3@1+ (1,0) [0|6] "" Receiver + SG_ DI_keepDrivePowerStateRequest : 47|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_proximity : 46|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_regenLight : 26|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_systemState : 16|3@1+ (1,0) [0|5] "" Receiver + SG_ DI_systemStatusChecksum : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ DI_systemStatusCounter : 8|4@1+ (1,0) [0|15] "" Receiver + SG_ DI_trackModeState : 48|2@1+ (1,0) [0|2] "" Receiver + SG_ DI_tractionControlMode : 40|3@1+ (1,0) [0|6] "" Receiver + +BO_ 850 ID352BMS_energyStatus: 8 VehicleBus + SG_ BMS_energyBuffer : 55|8@1+ (0.1,0) [0|25.4] "KWh" Receiver + SG_ BMS_energyToChargeComplete : 44|11@1+ (0.1,0) [0|204.6] "KWh" Receiver + SG_ BMS_expectedEnergyRemaining : 22|11@1+ (0.1,0) [0|204.6] "KWh" Receiver + SG_ BMS_fullChargeComplete : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_idealEnergyRemaining : 33|11@1+ (0.1,0) [0|204.6] "KWh" Receiver + SG_ BMS_nominalEnergyRemaining : 11|11@1+ (0.1,0) [0|204.6] "KWh" Receiver + SG_ BMS_nominalFullPackEnergy : 0|11@1+ (0.1,0) [0|204.6] "KWh" Receiver + +BO_ 893 ID37DCP_thermalStatus: 7 VehicleBus + SG_ CP_acPinTemperature : 8|8@1+ (0.803922,-55) [-55|149.99] "C" Receiver + SG_ CP_dTdt_dcPinActual : 16|12@1+ (0.005,-10) [-10|10] "C" Receiver + SG_ CP_dTdt_dcPinExpected : 40|12@1+ (0.005,-10) [-10|10] "C" Receiver + SG_ CP_dcPinTemperature : 0|8@1+ (0.803922,-55) [-55|149.99] "C" Receiver + SG_ CP_dcPinTemperatureModeled : 32|8@1+ (0.803922,-55) [-55|149.99] "C" Receiver + +BO_ 914 ID392BMS_packConfig: 8 VehicleBus + SG_ BMS_packConfigMultiplexer M : 0|8@1+ (1,0) [0|1] "" Receiver + SG_ BMS_moduleType m1 : 8|3@1+ (1,0) [0|4] "" Receiver + SG_ BMS_packMass m1 : 16|8@1+ (1,300) [342|469] "kg" Receiver + SG_ BMS_reservedConfig_0 m0 : 8|5@1+ (1,0) [0|31] "" Receiver + SG_ BMS_platformMaxBusVoltage m1 : 24|10@1+ (0.1,375) [0|0] "V" Receiver + +BO_ 594 ID252BMS_powerAvailable: 8 VehicleBus + SG_ BMS_hvacPowerBudget : 50|10@1+ (0.02,0) [0|20.46] "kW" Receiver + SG_ BMS_maxDischargePower : 16|16@1+ (0.013,0) [0|655.35] "kW" Receiver + SG_ BMS_maxRegenPower : 0|16@1+ (0.01,0) [0|655.35] "kW" Receiver + SG_ BMS_maxStationaryHeatPower : 32|10@1+ (0.01,0) [0|10.23] "kW" Receiver + SG_ BMS_notEnoughPowerForHeatPump : 42|1@1+ (1,0) [0|1] "" Receiver + SG_ BMS_powerLimitsState : 48|1@1+ (1,0) [0|1] "" Receiver + +BO_ 786 ID312BMSthermal: 8 VehicleBus + SG_ BMSdissipation312 : 0|10@1+ (0.02,0) [0|20] "kW" Receiver + SG_ BMSflowRequest312 : 10|7@1+ (0.3,0) [0|30] "LPM" Receiver + SG_ BMSinletActiveCoolTarget312 : 17|9@1+ (0.25,-25) [-25|100] "C" Receiver + SG_ BMSinletActiveHeatTarget312 : 35|9@1+ (0.25,-25) [-25|100] "C" Receiver + SG_ BMSinletPassiveTarget312 : 26|9@1+ (0.25,-25) [-25|100] "C" Receiver + SG_ BMSnoFlowRequest312 : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ BMSpcsNoFlowRequest312 : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ BMSmaxPackTemperature : 53|9@1+ (0.25,-25) [-25|100] "C" Receiver + SG_ BMSminPackTemperature : 44|9@1+ (0.25,-25) [-25|100] "C" Receiver + +BO_ 658 ID292BMS_SOC: 8 VehicleBus + SG_ BattBeginningOfLifeEnergy292 : 40|10@1+ (0.1,0) [0|102.3] "kWh" Receiver + SG_ SOCmax292 : 20|10@1+ (0.1,0) [0|102.3] "%" Receiver + SG_ SOCave292 : 30|10@1+ (0.1,0) [0|102.3] "%" Receiver + SG_ SOCUI292 : 10|10@1+ (0.1,0) [0|102.3] "%" Receiver + SG_ SOCmin292 : 0|10@1+ (0.1,0) [0|102.3] "%" Receiver + SG_ BMS_battTempPct : 50|8@1+ (0.4,0) [0|100] "%" Receiver + +BO_ 599 ID257DIspeed: 8 VehicleBus + SG_ DI_speedChecksum : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ DI_speedCounter : 8|4@1+ (1,0) [0|15] "" Receiver + SG_ DI_uiSpeed : 24|9@1+ (1,0) [0|510] "" Receiver + SG_ DI_uiSpeedHighSpeed : 34|9@1+ (1,0) [0|510] "" Receiver + SG_ DI_uiSpeedUnits : 33|1@1+ (1,0) [0|1] "" Receiver + SG_ DI_vehicleSpeed : 12|12@1+ (0.08,-40) [-40|285] "kph" Receiver + +BO_ 680 ID2A8CMPD_state: 8 VehicleBus + SG_ CMPD_inputHVCurrent : 32|9@1+ (0.1,0) [0|50] "A" Receiver + SG_ CMPD_inputHVPower : 21|11@1+ (10,0) [0|20000] "W" Receiver + SG_ CMPD_inputHVVoltage : 41|11@1+ (0.5,0) [0|1000] "V" Receiver + SG_ CMPD_powerLimitActive : 55|1@1+ (1,0) [0|1] "" Receiver + SG_ CMPD_powerLimitTooLowToStart : 62|1@1+ (1,0) [0|1] "" Receiver + SG_ CMPD_ready : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ CMPD_speedDuty : 11|10@1+ (0.1,0) [0|100] "%" Receiver + SG_ CMPD_speedRPM : 0|11@1+ (10,0) [0|20000] "RPM" Receiver + SG_ CMPD_state : 56|4@1+ (1,0) [0|15] "" Receiver + SG_ CMPD_wasteHeatState : 60|2@1+ (1,0) [0|3] "" Receiver + +BO_ 1029 ID405VIN: 8 VehicleBus + SG_ VINB405 m17 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ VINC405 m18 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ VINA405 m16 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ mux405 M : 0|8@1+ (1,0) [0|255] "" Receiver + +BO_ 1310 ID51EFC_info: 8 VehicleBus + SG_ FC_infoIndex M : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoAppGitHashBytes m17 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ FC_infoApplicationCRC m13 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ FC_infoAssemblyID m11 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoBootCRC m15 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ FC_infoBootGitHashBytes m18 : 8|56@1+ (1,0) [0|7.20576E+016] "" Receiver + SG_ FC_infoBootSvnRev m14 : 8|24@1+ (1,0) [0|16777200] "" Receiver + SG_ FC_infoBootUdsProtoVersion m20 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoBranchOrigin m19 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoBuildConfigID m10 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoBuildType m10 : 8|3@1+ (1,0) [0|4] "" Receiver + SG_ FC_infoCPLDVersionMajor m16 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoCPLDVersionMinor m16 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoComponentID m10 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ FC_infoHardwareID m10 : 32|16@1+ (1,0) [0|65535] "" Receiver + SG_ FC_infoHardwareRevision m19 : 40|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoMajorVersion m19 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoMaturity m19 : 32|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoPcbaID m11 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoPlatformType m19 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ FC_infoSubUsageID m11 : 48|16@1+ (1,0) [0|65535] "" Receiver + SG_ FC_infoUsageID m11 : 32|16@1+ (1,0) [0|65535] "" Receiver + SG_ FC_infoVariantCRC m22 : 32|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ FC_partNumChar01 m25 : 8|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar02 m25 : 16|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar03 m25 : 24|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar04 m25 : 32|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar05 m25 : 40|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar06 m25 : 48|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar07 m25 : 56|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar08 m26 : 8|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar09 m26 : 16|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar10 m26 : 24|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar11 m26 : 32|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar12 m26 : 40|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar13 m26 : 48|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar14 m26 : 56|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar15 m27 : 8|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar16 m27 : 16|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar17 m27 : 24|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar18 m27 : 32|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar19 m27 : 40|8@1+ (1,0) [0|1] "" Receiver + SG_ FC_partNumChar20 m27 : 48|8@1+ (1,0) [0|1] "" Receiver + +BO_ 886 ID376FrontInverterTemps: 8 VehicleBus + SG_ TempInvPCB376 : 0|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ TempPctStator376 : 48|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ TempPctInverter376 : 40|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ TempInvCapbank376 : 24|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ TempStator376 : 16|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ TempInvHeatsink376 : 32|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ TempInverter376 : 8|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIF_inverterTQF : 56|2@1+ (1,0) [0|3] "" Receiver + +BO_ 789 ID315RearInverterTemps: 8 VehicleBus + SG_ RearTempInvPCB315 : 0|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ RearTempPctStator315 : 48|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ RearTempPctInverter315 : 40|8@1+ (0.4,0) [0|102] "%" Receiver + SG_ RearTempInvCapbank315 : 24|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ RearTempStator315 : 16|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ RearTempInvHeatsink315 : 32|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ RearTempInverter315 : 8|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ DIR_inverterTQF : 56|2@1+ (1,0) [0|3] "" Receiver + +BO_ 340 ID154RearTorqueOld: 8 VehicleBus + SG_ RAWTorqueRear154 : 40|12@1- (0.25,0) [-512|511.75] "NM" Receiver + +BO_ 950 ID3B6odometer: 4 VehicleBus + SG_ Odometer3B6 : 0|32@1+ (0.001,0) [0|4294970] "KM" Receiver + +BO_ 614 ID266RearInverterPower: 8 VehicleBus + SG_ RearHeatPowerMax266 : 24|8@1+ (0.08,0) [0|20] "kW" Receiver + SG_ RearPowerLimit266 : 48|9@1+ (1,0) [0|400] "kW" Receiver + SG_ RearHeatPower266 : 32|8@1+ (0.08,0) [0|20] "kW" Receiver + SG_ RearHeatPowerOptimal266 : 16|8@1+ (0.08,0) [0|20] "kW" Receiver + SG_ RearExcessHeatCmd : 40|8@1+ (0.08,0) [0|20] "kW" Receiver + SG_ RearPower266 : 0|11@1- (0.5,0) [-500|500] "kW" Receiver + +BO_ 741 ID2E5FrontInverterPower: 8 VehicleBus + SG_ FrontHeatPowerOptimal2E5 : 16|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ FrontPower2E5 : 0|11@1- (0.5,0) [-512|511.5] "kW" Receiver + SG_ FrontHeatPowerMax2E5 : 24|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ FrontPowerLimit2E5 : 48|9@1+ (1,0) [0|400] "kW" Receiver + SG_ FrontHeatPower2E5 : 32|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ FrontExcessHeatCmd : 40|8@1+ (0.08,0) [0|20] "kW" Receiver + +BO_ 742 ID2E6PlaidFrontPower: 8 VehicleBus + SG_ PFrontHeatPowerOptimal : 16|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ PFrontPower : 0|11@1- (0.5,0) [-512|511.5] "kW" Receiver + SG_ PFrontHeatPowerMax : 24|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ PFrontPowerLimit : 48|9@1+ (1,0) [0|400] "kW" Receiver + SG_ PFrontHeatPower : 32|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ PFrontExcessHeatCmd : 40|8@1+ (0.08,0) [0|20] "kW" Receiver + +BO_ 617 ID269LeftRearPower: 8 VehicleBus + SG_ LeftRearHeatPowerOptimal : 16|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ LeftRearPower : 0|11@1- (0.5,0) [-512|511.5] "kW" Receiver + SG_ LeftRearPowerMax : 24|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ LeftRearPowerLimit : 48|9@1+ (1,0) [0|400] "kW" Receiver + SG_ LeftRearHeatPower : 32|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ LeftRearExcessHeatCmd : 40|8@1+ (0.08,0) [0|20] "kW" Receiver + +BO_ 636 ID27CRightRearPower: 8 VehicleBus + SG_ RightRearHeatPowerOptimal : 16|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ RightRearPower : 0|11@1- (0.5,0) [-512|511.5] "kW" Receiver + SG_ RightRearHeatPowerMax : 24|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ RightRearPowerLimit : 48|9@1+ (1,0) [0|400] "kW" Receiver + SG_ RightRearHeatPower : 32|8@1+ (0.08,0) [0|20.4] "kW" Receiver + SG_ RightRearExcessHeatCmd : 40|8@1+ (0.08,0) [0|20] "kW" Receiver + +BO_ 264 ID108DIR_torque: 8 VehicleBus + SG_ DIR_axleSpeed : 40|16@1- (0.1,0) [-2750|2750] "RPM" Receiver + SG_ DIR_slavePedalPos : 56|8@1+ (0.4,0) [0|100] "%" Receiver + SG_ DIR_torqueActual : 27|13@1- (2,0) [-7500|7500] "Nm" Receiver + SG_ DIR_torqueChecksum : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ DIR_torqueCommand : 12|13@1- (2,0) [-7500|7500] "Nm" Receiver + SG_ DIR_torqueCounter : 8|4@1+ (1,0) [0|15] "" Receiver + SG_ DIR_axleSpeedQF : 25|1@1+ (1,0) [0|1] "" Receiver + +BO_ 306 ID132HVBattAmpVolt: 8 VehicleBus + SG_ ChargeHoursRemaining132 : 48|12@1+ (1,0) [0|4095] "Min" Receiver + SG_ BattVoltage132 : 0|16@1+ (0.01,0) [0|655.35] "V" Receiver + SG_ RawBattCurrent132 : 32|16@1- (-0.05,822) [-1138.35|2138.4] "A" Receiver + SG_ SmoothBattCurrent132 : 16|16@1- (-0.1,0) [-3276.7|3276.7] "A" Receiver + +BO_ 294 ID126RearHVStatus: 7 VehicleBus + SG_ RearHighVoltage126 : 0|10@1+ (0.5,0) [0|500] "V" Receiver + SG_ RearMotorCurrent126 : 11|11@1+ (1,0) [0|2047] "A" Receiver + SG_ DIR_switchingFrequency : 40|11@1+ (0.01,0) [0|20] "kHz" Receiver + SG_ DIR_dcCableCurrentEst : 24|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIR_vBatQF : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ DIR_targetFluxMode : 51|2@1+ (1,0) [0|0] "" Receiver + +BO_ 421 ID1A5FrontHVStatus: 7 VehicleBus + SG_ FrontHighVoltage1A5 : 0|10@1+ (0.5,0) [0|500] "V" Receiver + SG_ FrontMotorCurrent1A5 : 11|11@1+ (1,0) [0|2047] "A" Receiver + SG_ DIF_switchingFrequency : 40|11@1+ (0.01,0) [0|20] "kHz" Receiver + SG_ DIF_dcCableCurrentEst : 24|16@1- (0.1,0) [-3276.8|3276.7] "A" Receiver + SG_ DIF_vBatQF : 10|1@1+ (1,0) [0|0] "" Receiver + SG_ DIF_targetFluxMode : 51|2@1+ (1,0) [0|0] "" Receiver + +BO_ 295 ID127LeftRearHVStatus: 7 VehicleBus + SG_ LeftRear_targetFluxMode : 51|2@1+ (1,0) [0|0] "" Receiver + SG_ LeftRear_switchingFrequency : 40|11@1+ (0.01,0) [0|0] "kHz" Receiver + SG_ LeftRear_dcCableCurrentEst : 24|16@1- (0.1,0) [0|0] "A" Receiver + SG_ LeftRear_motorCurrent : 11|11@1+ (1,0) [0|0] "A" Receiver + SG_ LeftRear_vBatQF : 10|1@1+ (1,0) [0|0] "" Receiver + SG_ LeftRear_vBat : 0|10@1+ (0.5,0) [0|0] "V" Receiver + +BO_ 298 ID12ARightRearHVStatus: 7 VehicleBus + SG_ RightRear_targetFluxMode : 51|2@1+ (1,0) [0|0] "" Receiver + SG_ RightRear_switchingFrequency : 40|11@1+ (0.01,0) [0|0] "kHz" Receiver + SG_ RightRear_dcCableCurrentEst : 24|16@1- (0.1,0) [0|0] "A" Receiver + SG_ RightRear_motorCurrent : 11|11@1+ (1,0) [0|0] "A" Receiver + SG_ RightRear_vBatQF : 10|1@1+ (1,0) [0|0] "" Receiver + SG_ RightRear_vBat : 0|10@1+ (0.5,0) [0|0] "V" Receiver + +BO_ 799 ID31FTPMSsensors: 8 ChassisBus + SG_ TPMSFLpressure31F : 0|8@1+ (0.025,0) [0|6.375] "bar" Receiver + SG_ TPMSFRpressure31F : 16|8@1+ (0.025,0) [0|6.375] "bar" Receiver + SG_ TPMSRLpressure31F : 32|8@1+ (0.025,0) [0|6.375] "bar" Receiver + SG_ TPMSRRpressure31F : 48|8@1+ (0.025,0) [0|6.375] "bar" Receiver + SG_ TPMSFLtemp31F : 8|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ TPMSFRtemp31F : 24|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ TPMSRLtemp31F : 40|8@1+ (1,-40) [-40|215] "C" Receiver + SG_ TPMSRRtemp31F : 56|8@1+ (1,-40) [-40|215] "C" Receiver + +BO_ 1022 ID3FEbrakeTemps: 5 VehicleBus + SG_ BrakeTempFL3FE : 0|10@1+ (1,-40) [0|0] "C" Receiver + SG_ BrakeTempFR3FE : 10|10@1+ (1,-40) [0|0] "C" Receiver + SG_ BrakeTempRL3FE : 20|10@1+ (1,-40) [0|0] "C" Receiver + SG_ BrakeTempRR3FE : 30|10@1+ (1,-40) [0|0] "C" Receiver + +BO_ 552 ID228EPBrightStatus: 8 VehicleBus + SG_ EPBR12VFilt228 : 37|12@1+ (0.00544368,0) [0|0] "V" Receiver + SG_ EPBRcsmFaultReason228 : 21|5@1+ (1,0) [0|0] "" Receiver + SG_ EPBRdisconnected228 : 10|1@1+ (1,0) [0|0] "" Receiver + SG_ EPBRCDPQualified228 : 49|2@1+ (1,0) [0|0] "" Receiver + SG_ EPBResmCaliperRequest228 : 18|3@1+ (1,0) [0|0] "" Receiver + SG_ EPBResmOperationTrigger228 : 26|5@1+ (1,0) [0|0] "" Receiver + SG_ EPBRinternalCDPRequest228 : 51|1@1+ (1,0) [0|0] "" Receiver + SG_ EPBRinternalStatusChecksum228 : 56|8@1+ (1,0) [0|0] "" Receiver + SG_ EPBRinternalStatusCounter228 : 52|4@1+ (1,0) [0|0] "" Receiver + SG_ EPBRlocalServiceModeActive228 : 36|1@1+ (1,0) [0|0] "" Receiver + SG_ EPBRlockoutUnlockCount228 : 11|7@1+ (1,0) [0|0] "" Receiver + SG_ EPBRsummonFaultReason228 : 31|5@1+ (1,0) [0|0] "" Receiver + SG_ EPBRsummonState228 : 7|3@1+ (1,0) [0|0] "" Receiver + SG_ EPBRunitFaultStatus228 : 5|2@1+ (1,0) [0|0] "" Receiver + SG_ EPBRunitStatus228 : 0|5@1+ (1,0) [0|0] "" Receiver + +BO_ 648 ID288EPBleftStatus: 8 VehicleBus + SG_ EPBL12VFilt288 : 37|12@1+ (0.00544368,0) [0|0] "V" Receiver + SG_ EPBLcsmFaultReason288 : 21|5@1+ (1,0) [0|0] "" Receiver + SG_ EPBLdisconnected288 : 10|1@1+ (1,0) [0|0] "" Receiver + SG_ EPBLCDPQualified288 : 49|2@1+ (1,0) [0|0] "" Receiver + SG_ EPBLesmCaliperRequest288 : 18|3@1+ (1,0) [0|0] "" Receiver + SG_ EPBLesmOperationTrigger288 : 26|5@1+ (1,0) [0|0] "" Receiver + SG_ EPBLinternalCDPRequest288 : 51|1@1+ (1,0) [0|0] "" Receiver + SG_ EPBLinternalStatusChecksum288 : 56|8@1+ (1,0) [0|0] "" Receiver + SG_ EPBLinternalStatusCounter288 : 52|4@1+ (1,0) [0|0] "" Receiver + SG_ EPBLlocalServiceModeActive288 : 36|1@1+ (1,0) [0|0] "" Receiver + SG_ EPBLlockoutUnlockCount288 : 11|7@1+ (1,0) [0|0] "" Receiver + SG_ EPBLsummonFaultReason288 : 31|5@1+ (1,0) [0|0] "" Receiver + SG_ EPBLsummonState288 : 7|3@1+ (1,0) [0|0] "" Receiver + SG_ EPBLunitFaultStatus288 : 5|2@1+ (1,0) [0|0] "" Receiver + SG_ EPBLunitStatus288 : 0|5@1+ (1,0) [0|0] "" Receiver + +BO_ 1834 ID72ABMS_serialNumber: 8 VehicleBus + SG_ BMS_packSerialNumberByte01 m0 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte02 m0 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte03 m0 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte04 m0 : 32|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte05 m0 : 40|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte06 m0 : 48|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte07 m0 : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte08 m1 : 8|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte09 m1 : 16|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte10 m1 : 24|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte11 m1 : 32|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte12 m1 : 40|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte13 m1 : 48|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_packSerialNumberByte14 m1 : 56|8@1+ (1,0) [0|255] "" Receiver + SG_ BMS_serialNumberMultiplexer M : 0|1@1+ (1,0) [0|1] "" Receiver + +BO_ 2047 ID7FFcarConfig: 8 VehicleBus + SG_ GTW_carConfigMultiplexer M : 0|8@1+ (1,0) [0|255] "" Receiver + SG_ GTW_activeHighBeam m2 : 34|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_airSuspension m3 : 22|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_airbagCutoffSwitch m2 : 35|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_audioType m3 : 30|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_autopilot m2 : 42|3@1+ (1,0) [0|4] "" Receiver + SG_ GTW_autopilotCameraType m3 : 26|1@1+ (1,0) [0|0] "" Receiver + SG_ GTW_auxParkLamps m2 : 26|2@1+ (1,0) [0|3] "" Receiver + SG_ GTW_bPillarNFCParam m2 : 56|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_birthday m4 : 8|32@1+ (1,0) [0|4294970000] "" Receiver + SG_ GTW_brakeHWType m2 : 59|2@1+ (1,0) [0|3] "" Receiver + SG_ GTW_brakeLineSwitchType m3 : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_cabinPTCHeaterType m2 : 31|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_chassisType m3 : 18|3@1+ (1,0) [0|4] "" Receiver + SG_ GTW_compressorType m4 : 46|2@1+ (1,0) [0|3] "" Receiver + SG_ GTW_connectivityPackage m3 : 27|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_coolantPumpType m3 : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_country m1 : 16|16@1+ (1,0) [0|65535] "" Receiver + SG_ GTW_dasHw m1 : 40|3@1+ (1,0) [3|4] "" Receiver + SG_ GTW_deliveryStatus m1 : 8|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_drivetrainType m1 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_eBuckConfig m2 : 32|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_eCallEnabled m4 : 40|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_efficiencyPackage m4 : 48|3@1+ (1,0) [0|5] "" Receiver + SG_ GTW_epasType m1 : 9|1@1+ (1,0) [0|0] "" Receiver + SG_ GTW_espValveType m3 : 40|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_exteriorColor m2 : 48|3@1+ (1,0) [0|6] "" Receiver + SG_ GTW_frontFogLamps m2 : 20|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_frontSeatHeaters m2 : 9|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_frontSeatReclinerHardware m3 : 37|2@1+ (1,0) [0|3] "" Receiver + SG_ GTW_frontSeatType m3 : 60|3@1+ (1,0) [0|4] "" Receiver + SG_ GTW_headlamps m1 : 14|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_headlightLevelerType m3 : 47|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_homelinkType m2 : 13|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_hvacPanelVaneType m2 : 29|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_immersiveAudio m3 : 56|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_interiorLighting m2 : 57|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_intrusionSensorType m2 : 36|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_lumbarECUType m2 : 23|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_mapRegion m3 : 8|4@1+ (1,0) [0|10] "" Receiver + SG_ GTW_memoryMirrors m2 : 17|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_numberHVILNodes m2 : 51|2@1+ (1,0) [2|3] "" Receiver + SG_ GTW_packEnergy m3 : 32|5@1+ (1,0) [0|2] "" Receiver + SG_ GTW_passengerAirbagType m4 : 43|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_passengerOccupancySensorType m3 : 24|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_pedestrianWarningSound m2 : 54|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_performancePackage m3 : 12|3@1+ (1,0) [0|3] "" Receiver + SG_ GTW_plcSupportType m3 : 28|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_powerSteeringColumn m2 : 18|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_radarHeaterType m3 : 55|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_rearFogLamps m2 : 39|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_rearGlassType m2 : 38|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_rearLightType m1 : 12|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_rearSeatHeaters m2 : 10|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_refrigerantType m3 : 45|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_restraintsHardwareType m1 : 48|8@1+ (1,0) [21|163] "" Receiver + SG_ GTW_rightHandDrive m1 : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_roofGlassType m2 : 61|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_roofType m2 : 40|1@1+ (1,0) [1|1] "" Receiver + SG_ GTW_softRange m3 : 42|3@1+ (1,0) [0|2] "" Receiver + SG_ GTW_spoilerType m2 : 37|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_steeringColumnMotorType m4 : 52|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_steeringColumnUJointType m2 : 55|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_superchargingAccess m2 : 45|2@1+ (1,0) [0|2] "" Receiver + SG_ GTW_tireType m1 : 32|5@1+ (1,0) [0|21] "" Receiver + SG_ GTW_towPackage m3 : 15|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_tpmsType m2 : 11|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_twelveVBatteryType m3 : 63|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_vdcType m2 : 14|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_wheelType m3 : 48|7@1+ (1,0) [0|20] "" Receiver + SG_ GTW_windshieldType m2 : 33|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_xcpESP m2 : 16|1@1+ (1,0) [0|1] "" Receiver + SG_ GTW_xcpIbst m2 : 15|1@1+ (1,0) [0|1] "" Receiver + +BO_ 818 ID332BattBrickMinMax: 6 VehicleBus + SG_ BattBrickMultiplexer332 M : 0|2@1+ (1,0) [0|0] "" Receiver + SG_ BattBrickempMaxNum332 m0 : 2|4@1+ (1,0) [0|0] "" Receiver + SG_ BattBrickTempMinNum332 m0 : 8|4@1+ (1,0) [0|0] "" Receiver + SG_ BattBrickTempMax332 m0 : 16|8@1+ (0.5,-40) [0|0] "C" Receiver + SG_ BattBrickTempMin332 m0 : 24|8@1+ (0.5,-40) [0|0] "C" Receiver + SG_ BattBrickModelTMax332 m0 : 32|8@1+ (0.5,-40) [0|0] "C" Receiver + SG_ BattBrickModelTMin332 m0 : 40|8@1+ (0.5,-40) [0|0] "C" Receiver + SG_ BattBrickVoltageMax332 m1 : 2|12@1+ (0.002,0) [0|0] "V" Receiver + SG_ BattBrickVoltageMin332 m1 : 16|12@1+ (0.002,0) [0|0] "V" Receiver + SG_ BattBrickVoltageMaxNum332 m1 : 32|7@1+ (1,1) [0|0] "" Receiver + SG_ BattBrickVoltageMinNum332 m1 : 40|7@1+ (1,1) [0|0] "" Receiver + +BO_ 1025 ID401BrickVoltages: 8 VehicleBus + SG_ MultiplexSelector M : 0|8@1+ (1,0) [0|0] "" Receiver + SG_ StatusFlags : 8|8@1+ (1,0) [0|0] "" Receiver + SG_ Brick0 m0 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick1 m0 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick2 m0 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick3 m1 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick4 m1 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick5 m1 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick6 m2 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick7 m2 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick8 m2 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick9 m3 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick10 m3 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick11 m3 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick12 m4 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick13 m4 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick14 m4 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick15 m5 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick16 m5 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick17 m5 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick18 m6 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick19 m6 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick20 m6 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick21 m7 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick22 m7 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick23 m7 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick24 m8 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick25 m8 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick26 m8 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick27 m9 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick28 m9 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick29 m9 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick30 m10 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick31 m10 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick32 m10 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick34 m11 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick33 m11 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick35 m11 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick36 m12 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick37 m12 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick38 m12 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick39 m13 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick40 m13 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick41 m13 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick42 m14 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick43 m14 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick44 m14 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick45 m15 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick46 m15 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick47 m15 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick48 m16 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick49 m16 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick50 m16 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick51 m17 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick52 m17 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick53 m17 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick54 m18 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick55 m18 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick56 m18 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick57 m19 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick58 m19 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick59 m19 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick60 m20 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick61 m20 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick62 m20 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick63 m21 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick64 m21 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick65 m21 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick66 m22 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick67 m22 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick68 m22 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick69 m23 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick70 m23 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick71 m23 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick72 m24 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick73 m24 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick74 m24 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick75 m25 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick76 m25 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick77 m25 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick78 m26 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick79 m26 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick80 m26 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick81 m27 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick82 m27 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick83 m27 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick84 m28 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick85 m28 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick86 m28 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick87 m29 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick88 m29 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick89 m29 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick90 m30 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick91 m30 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick92 m30 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick93 m31 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick94 m31 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick95 m31 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick96 m32 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick97 m32 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick98 m32 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick99 m33 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick100 m33 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick101 m33 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick102 m34 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick103 m34 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick104 m34 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick105 m35 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick106 m35 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick107 m35 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick108 m36 : 16|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick109 m36 : 32|16@1+ (0.0001,0) [0|0] "V" Receiver + SG_ Brick110 m36 : 48|16@1+ (0.0001,0) [0|0] "V" Receiver + + + +CM_ SG_ 130 UI_tripPlanningActive "Navigation Active"; +CM_ SG_ 257 RCM_pitchRate "Pitch"; +CM_ SG_ 257 RCM_rollRate "Roll"; +CM_ SG_ 257 RCM_yawRate "Yaw"; +CM_ SG_ 273 RCM_lateralAccel "L/R Acceleration"; +CM_ SG_ 273 RCM_longitudinalAccel "F/B Acceleration"; +CM_ SG_ 273 RCM_verticalAccel "Vertical Acceleration"; +CM_ SG_ 692 PCS_dcdcHvBusVolt "DCDC HV Voltage"; +CM_ SG_ 692 PCS_dcdcLvBusVolt "DCDC 12v Voltage"; +CM_ SG_ 692 PCS_dcdcLvOutputCurrent "DCDC 12v Output Current"; +CM_ SG_ 985 UI_gpsVehicleHeading "GPS Heading"; +CM_ SG_ 985 UI_gpsVehicleSpeed "GPS Speed"; +CM_ SG_ 1011 UI_odometer "UI Odometer"; +CM_ SG_ 615 DI_gradeEst "Estimated Grade"; +CM_ SG_ 615 DI_mass "Estimated Mass"; +CM_ SG_ 642 VCLEFT_hvacBlowerRPMActual "HVAC Blower Speed"; +CM_ SG_ 647 PTC_leftCurrentHV "Heater Left Current"; +CM_ SG_ 647 PTC_rightCurrentHV "Heater Right Current"; +CM_ SG_ 647 PTC_voltageHV "Heater Voltage"; +CM_ SG_ 819 UI_acChargeCurrentLimit "UI Charge Current Limit"; +CM_ SG_ 826 UI_Range "Range"; +CM_ SG_ 826 UI_SOC "State of Charge UI"; +CM_ SG_ 826 UI_uSOE "UI fine SOC"; +CM_ SG_ 826 UI_ratedWHpM "WHM Rating"; +CM_ SG_ 577 VCFRONT_coolantFlowBatActual "Battery Coolant Flow"; +CM_ SG_ 577 VCFRONT_coolantFlowPTActual "Powertrain Coolant Flow"; +CM_ BO_ 1367 "swapped with 5D7 in old firmware"; +CM_ BO_ 1495 "swapped with 557 in old firmware"; +CM_ BO_ 2005 "swapped with 757 in old firmware"; +CM_ BO_ 1879 "swapped with 7D5 in old firmware"; +CM_ SG_ 579 VCRIGHT_hvacCabinTempEst "Cabin Temperature"; +CM_ SG_ 524 VCRIGHT_wattsDemandEvap "Evaporator Power"; +CM_ SG_ 792 UTCyear318 "Year"; +CM_ SG_ 792 UTCmonth318 "Month"; +CM_ SG_ 792 UTCseconds318 "Seconds"; +CM_ SG_ 792 UTChour318 "Hour"; +CM_ SG_ 792 UTCday318 "Day"; +CM_ SG_ 792 UTCminutes318 "Minute"; +CM_ SG_ 1320 UnixTimeSeconds528 "Unix Time"; +CM_ SG_ 390 DIF_axleSpeed "Front Axle Speed"; +CM_ SG_ 390 DIF_torqueActual "Front Axle Torque"; +CM_ SG_ 390 DIF_torqueCommand "Front Axle Torque Request"; +CM_ BO_ 918 "swapped with 395 in old firmware"; +CM_ BO_ 917 "swapped with 396 in old firmware"; +CM_ SG_ 472 RearTorqueRequest1D8 "Rear Motor Torque Request"; +CM_ SG_ 472 RearTorque1D8 "Rear Motor Torque"; +CM_ SG_ 468 RAWTorqueFront1D4 "Front Torque Old, Axle torque 2 with 9/1 gearing"; +CM_ SG_ 469 FrontTorqueRequest1D5 "Front Motor Torque Request"; +CM_ SG_ 469 FrontTorque1D5 "Front Motor Torque"; +CM_ SG_ 822 DriveRegenRating336 "Regen Rating"; +CM_ SG_ 822 DrivePowerRating336 "Power Rating"; +CM_ SG_ 616 SystemRegenPowerMax268 "Max Regen Power"; +CM_ SG_ 616 SystemHeatPowerMax268 "System Max Waste Heat Power"; +CM_ SG_ 616 SystemHeatPower268 "System Waste Heat Power"; +CM_ SG_ 616 SystemDrivePowerMax268 "Max Drive Power"; +CM_ SG_ 79 GPSLongitude04F "Longitude"; +CM_ SG_ 79 GPSLatitude04F "Latitude"; +CM_ SG_ 978 TotalDischargeKWh3D2 "Lifetime Discharge"; +CM_ SG_ 978 TotalChargeKWh3D2 "Lifetime Charge"; +CM_ SG_ 722 MinVoltage2D2 "BMS Min Voltage"; +CM_ SG_ 722 MaxDischargeCurrent2D2 "BMS Max Discharge Current"; +CM_ SG_ 722 MaxChargeCurrent2D2 "BMS Max Charge Current"; +CM_ SG_ 722 MaxVoltage2D2 "BMS Max Voltage"; +CM_ SG_ 1345 FCMaxPowerLimit541 "Supercharger Power Limit"; +CM_ SG_ 1345 FCMaxCurrentLimit541 "Supercharger Current Limit"; +CM_ SG_ 580 FCMinVlimit244 "Supercharger Min Voltage"; +CM_ SG_ 580 FCMaxVlimit244 "Supercharger Max Voltage"; +CM_ SG_ 580 FCCurrentLimit244 "Supercharger Max Current"; +CM_ SG_ 580 FCPowerLimit244 "Supercharger Max Power"; +CM_ SG_ 801 VCFRONT_tempAmbientFiltered "Outside Temperature"; +CM_ SG_ 801 VCFRONT_tempCoolantBatInlet "Battery Coolant Temp"; +CM_ SG_ 801 VCFRONT_tempCoolantPTInlet "Powertrain Coolant Temp"; +CM_ SG_ 984 Elevation3D8 "Elevation"; +CM_ SG_ 609 v12vBattVoltage261 "12V Battery Voltage"; +CM_ SG_ 609 v12vBattCurrent261 "12V Battery Current"; +CM_ SG_ 609 v12vBattTemp261 "12V Battery Temp"; +CM_ SG_ 609 v12vBattAH261 "12V Battery Capacity"; +CM_ SG_ 297 SteeringSpeed129 "Steering Speed"; +CM_ SG_ 297 SteeringAngle129 "Steering Angle"; +CM_ SG_ 612 ChargeLinePower264 "Charger Line Power"; +CM_ SG_ 612 ChargeLineCurrentLimit264 "Charge Connector Current Limit"; +CM_ SG_ 612 ChargeLineVoltage264 "Charger Line Voltage"; +CM_ SG_ 612 ChargeLineCurrent264 "Charger Line Current"; +CM_ SG_ 548 DCDCoutputCurrent224 "DCDC Output Current"; +CM_ SG_ 280 DI_accelPedalPos "Pedal Position"; +CM_ SG_ 280 DI_brakePedalState "Brake Pedal"; +CM_ SG_ 280 DI_gear "Gear"; +CM_ SG_ 280 DI_regenLight "Regen Brake"; +CM_ SG_ 280 DI_tractionControlMode "Traction Control Mode"; +CM_ SG_ 850 BMS_energyBuffer "Battery Buffer kWh"; +CM_ SG_ 850 BMS_energyToChargeComplete "Charge Remaining kWh"; +CM_ SG_ 850 BMS_fullChargeComplete "Charge Complete"; +CM_ SG_ 850 BMS_nominalEnergyRemaining "Batt Remaining kWh"; +CM_ SG_ 850 BMS_nominalFullPackEnergy "Batt Full kWh"; +CM_ SG_ 594 BMS_hvacPowerBudget "BMS Max HVAC Power"; +CM_ SG_ 594 BMS_maxDischargePower "BMS Max Discharge Power"; +CM_ SG_ 594 BMS_maxRegenPower "BMS Max Regen Power"; +CM_ SG_ 594 BMS_maxStationaryHeatPower "BMS Max Waste Heat Power"; +CM_ SG_ 786 BMSdissipation312 "Battery Dissipation"; +CM_ SG_ 786 BMSinletActiveCoolTarget312 "Battery Cool Target"; +CM_ SG_ 786 BMSinletActiveHeatTarget312 "Battery Heat Target"; +CM_ SG_ 786 BMSmaxPackTemperature "Max Battery Temp"; +CM_ SG_ 786 BMSminPackTemperature "Min Battery Temp"; +CM_ SG_ 658 BattBeginningOfLifeEnergy292 "HV Battery Original Energy"; +CM_ SG_ 658 SOCmax292 "BMS Max SOC"; +CM_ SG_ 658 SOCave292 "BMS Ave SOC"; +CM_ SG_ 658 SOCmin292 "BMS Min SOC"; +CM_ SG_ 599 DI_uiSpeed "UI Speed"; +CM_ SG_ 599 DI_uiSpeedUnits "Speed Units, 0-mph 1-kph"; +CM_ SG_ 599 DI_vehicleSpeed "Vehicle Speed, .05 -25 for mph"; +CM_ SG_ 1029 VINB405 "VIN3, last 7 of VIN (ASCII)"; +CM_ SG_ 1029 VINC405 "VIN2, part two of VIN (ASCII)"; +CM_ SG_ 1029 VINA405 "VIN1, four zeros then first 3 characters of VIN"; +CM_ SG_ 886 TempStator376 "Front Stator Temp"; +CM_ SG_ 789 RearTempStator315 "Rear Stator Temp"; +CM_ SG_ 340 RAWTorqueRear154 "Rear Torque Old, Axle torque 2 with 9/1 gearing"; +CM_ SG_ 950 Odometer3B6 "Odometer"; +CM_ SG_ 614 RearPowerLimit266 "Rear Power Limit, approx offset Orig scale 1"; +CM_ SG_ 614 RearHeatPower266 "Rear Waste Heat Power"; +CM_ SG_ 614 RearPower266 "Rear Motor Power"; +CM_ SG_ 741 FrontPower2E5 "Front Motor PowerFront Motor Power"; +CM_ SG_ 741 FrontPowerLimit2E5 "Front Power Limit, approx offset Orig scale 1Front Power Limit, approx offset Orig scale 1"; +CM_ SG_ 741 FrontHeatPower2E5 "Front Waste Heat PowerFront Waste Heat Power"; +CM_ SG_ 264 DIR_axleSpeed "Rear Axle Speed"; +CM_ SG_ 264 DIR_torqueActual "Rear Axle Torque"; +CM_ SG_ 264 DIR_torqueCommand "Rear Axle Torque Request"; +CM_ SG_ 306 ChargeHoursRemaining132 "Charge Time Remaining"; +CM_ SG_ 306 BattVoltage132 "HV Battery Voltage"; +CM_ SG_ 306 RawBattCurrent132 "HV Raw Current, old offset 1000"; +CM_ SG_ 306 SmoothBattCurrent132 "HV Battery Current"; +CM_ SG_ 294 RearHighVoltage126 "Rear Motor Voltage"; +CM_ SG_ 294 RearMotorCurrent126 "Rear Motor Current"; +CM_ SG_ 421 FrontHighVoltage1A5 "Front Motor Voltage"; +CM_ SG_ 421 FrontMotorCurrent1A5 "Front Motor Current"; +CM_ BO_ 1022 "Brake Temps Estimated"; +CM_ SG_ 2047 GTW_chassisType "Model"; +CM_ SG_ 2047 GTW_packEnergy "Battery Pack Size"; +CM_ SG_ 818 BattBrickTempMax332 "Max Batt Brick Temp"; +CM_ SG_ 818 BattBrickTempMin332 "Min Batt Brick Temp"; +CM_ SG_ 818 BattBrickVoltageMax332 "Max Batt Brick V"; +CM_ SG_ 818 BattBrickVoltageMin332 "Min Batt Brick V"; +BA_DEF_ EV_ "New_AttrDef_29" HEX 4294967295 4294967295; +BA_DEF_ BO_ "GenMsgSendType" ENUM "Cyclic","SendType1","SendType2","SendType3","SendType4","SendType5","SendType6","SendType7","SendType8","SendType9"; +BA_DEF_ BO_ "GenMsgDelayTime" INT 0 0; +BA_DEF_ BO_ "GenMsgCycleTime" INT 0 0; +BA_DEF_ BO_ "GenMsgTimeoutTime" INT 0 10000; +BA_DEF_ "ProtocolType" STRING ; +BA_DEF_ "BusType" STRING ; +BA_DEF_ BU_ "NodeLayerModules" STRING ; +BA_DEF_ BU_ "ECU" STRING ; +BA_DEF_ BU_ "CANoeJitterMax" INT 0 0; +BA_DEF_ BU_ "CANoeJitterMin" INT 0 0; +BA_DEF_ BU_ "CANoeDrift" INT 0 0; +BA_DEF_ BU_ "CANoeStartDelay" INT 0 0; +BA_DEF_ BO_ "GenMsgAutoGenSnd" ENUM "Cyclic","SendType1","SendType2","SendType3","SendType4","SendType5","SendType6","SendType7","SendType8","SendType9","No","Yes"; +BA_DEF_ BO_ "GenMsgAutoGenDsp" ENUM "Cyclic","SendType1","SendType2","SendType3","SendType4","SendType5","SendType6","SendType7","SendType8","SendType9","No","Yes","No","Yes"; +BA_DEF_ SG_ "GenSigAutoGenSnd" ENUM "Cyclic","SendType1","SendType2","SendType3","SendType4","SendType5","SendType6","SendType7","SendType8","SendType9","No","Yes","No","Yes","No","Yes"; +BA_DEF_ SG_ "GenSigAutoGenDsp" ENUM "Cyclic","SendType1","SendType2","SendType3","SendType4","SendType5","SendType6","SendType7","SendType8","SendType9","No","Yes","No","Yes","No","Yes","No","Yes"; +BA_DEF_ SG_ "GenSigEnvVarType" ENUM "Cyclic","SendType1","SendType2","SendType3","SendType4","SendType5","SendType6","SendType7","SendType8","SendType9","No","Yes","No","Yes","No","Yes","No","Yes","int","float","undef"; +BA_DEF_ SG_ "GenSigEVName" STRING ; +BA_DEF_ BU_ "GenNodAutoGenSnd" ENUM "Cyclic","SendType1","SendType2","SendType3","SendType4","SendType5","SendType6","SendType7","SendType8","SendType9","No","Yes","No","Yes","No","Yes","No","Yes","int","float","undef","No","Yes"; +BA_DEF_ BU_ "GenNodAutoGenDsp" ENUM "Cyclic","SendType1","SendType2","SendType3","SendType4","SendType5","SendType6","SendType7","SendType8","SendType9","No","Yes","No","Yes","No","Yes","No","Yes","int","float","undef","No","Yes","No","Yes"; +BA_DEF_ "GenEnvVarEndingDsp" STRING ; +BA_DEF_ "GenEnvVarEndingSnd" STRING ; +BA_DEF_ "GenEnvVarPrefix" STRING ; +BA_DEF_ "Modified" STRING ; +BA_DEF_ BO_ "GenMsgBackgroundColor" STRING ; +BA_DEF_ BO_ "GenMsgForegroundColor" STRING ; +BA_DEF_ BO_ "matchingcriteria" INT 0 0; +BA_DEF_ BO_ "filterlabeling" INT 0 0; +BA_DEF_ BO_ "SystemMessageLongSymbol" STRING ; +BA_DEF_DEF_ "New_AttrDef_29" 4294967295; +BA_DEF_DEF_ "GenMsgSendType" ""; +BA_DEF_DEF_ "GenMsgDelayTime" 0; +BA_DEF_DEF_ "GenMsgCycleTime" 0; +BA_DEF_DEF_ "GenMsgTimeoutTime" 0; +BA_DEF_DEF_ "ProtocolType" ""; +BA_DEF_DEF_ "BusType" ""; +BA_DEF_DEF_ "NodeLayerModules" ""; +BA_DEF_DEF_ "ECU" ""; +BA_DEF_DEF_ "CANoeJitterMax" 0; +BA_DEF_DEF_ "CANoeJitterMin" 0; +BA_DEF_DEF_ "CANoeDrift" 0; +BA_DEF_DEF_ "CANoeStartDelay" 0; +BA_DEF_DEF_ "GenMsgAutoGenSnd" ""; +BA_DEF_DEF_ "GenMsgAutoGenDsp" ""; +BA_DEF_DEF_ "GenSigAutoGenSnd" ""; +BA_DEF_DEF_ "GenSigAutoGenDsp" ""; +BA_DEF_DEF_ "GenSigEnvVarType" ""; +BA_DEF_DEF_ "GenSigEVName" ""; +BA_DEF_DEF_ "GenNodAutoGenSnd" ""; +BA_DEF_DEF_ "GenNodAutoGenDsp" ""; +BA_DEF_DEF_ "GenEnvVarEndingDsp" ""; +BA_DEF_DEF_ "GenEnvVarEndingSnd" ""; +BA_DEF_DEF_ "GenEnvVarPrefix" ""; +BA_DEF_DEF_ "Modified" "JW2021Aug29"; +BA_DEF_DEF_ "GenMsgBackgroundColor" ""; +BA_DEF_DEF_ "GenMsgForegroundColor" ""; +BA_DEF_DEF_ "matchingcriteria" 0; +BA_DEF_DEF_ "filterlabeling" 0; +BA_DEF_DEF_ "SystemMessageLongSymbol" ""; +BA_ "BusType" "CAN"; +BA_ "GenMsgCycleTime" BO_ 530 100; +BA_ "GenMsgSendType" BO_ 530 0; +BA_ "GenMsgCycleTime" BO_ 819 500; +BA_ "GenMsgCycleTime" BO_ 577 100; +BA_ "GenMsgCycleTime" BO_ 468 10; +BA_ "GenMsgSendType" BO_ 468 0; +BA_ "GenMsgCycleTime" BO_ 962 50; +BA_ "GenMsgCycleTime" BO_ 822 1000; +BA_ "GenMsgCycleTime" BO_ 659 500; +BA_ "GenMsgCycleTime" BO_ 616 100; +BA_ "GenMsgSendType" BO_ 79 0; +BA_ "GenMsgCycleTime" BO_ 79 1000; +BA_ "GenMsgCycleTime" BO_ 978 1000; +BA_ "GenMsgCycleTime" BO_ 722 100; +BA_ "GenMsgCycleTime" BO_ 1345 100; +BA_ "GenMsgCycleTime" BO_ 580 100; +BA_ "GenMsgCycleTime" BO_ 532 100; +BA_ "GenMsgCycleTime" BO_ 533 1000; +BA_ "GenMsgCycleTime" BO_ 535 1000; +BA_ "GenMsgCycleTime" BO_ 801 1000; +BA_ "SystemMessageLongSymbol" BO_ 513 "ID201VCFRONT_loggingAndVitals10Hz"; +BA_ "GenMsgCycleTime" BO_ 984 1000; +BA_ "GenMsgCycleTime" BO_ 609 100; +BA_ "GenMsgSendType" BO_ 297 0; +BA_ "GenMsgCycleTime" BO_ 297 10; +BA_ "GenMsgCycleTime" BO_ 612 100; +BA_ "GenMsgCycleTime" BO_ 548 100; +BA_ "GenMsgSendType" BO_ 280 0; +BA_ "GenMsgCycleTime" BO_ 280 10; +BA_ "GenMsgCycleTime" BO_ 850 1000; +BA_ "GenMsgCycleTime" BO_ 594 100; +BA_ "GenMsgCycleTime" BO_ 786 1000; +BA_ "GenMsgCycleTime" BO_ 658 100; +BA_ "GenMsgCycleTime" BO_ 599 20; +BA_ "GenMsgCycleTime" BO_ 1029 205; +BA_ "GenMsgCycleTime" BO_ 886 1000; +BA_ "GenMsgCycleTime" BO_ 340 10; +BA_ "GenMsgSendType" BO_ 340 0; +BA_ "GenMsgCycleTime" BO_ 950 1000; +BA_ "GenMsgCycleTime" BO_ 614 10; +BA_ "GenMsgCycleTime" BO_ 741 1000; +BA_ "GenMsgSendType" BO_ 264 0; +BA_ "GenMsgCycleTime" BO_ 264 10; +BA_ "GenMsgCycleTime" BO_ 306 10; +BA_ "GenMsgSendType" BO_ 306 0; +BA_ "GenMsgSendType" BO_ 294 0; +BA_ "GenMsgCycleTime" BO_ 294 100; +BA_ "GenMsgCycleTime" BO_ 799 1000; +BA_ "GenMsgCycleTime" BO_ 1022 1000; +BA_ "GenMsgCycleTime" BO_ 2047 100; +BA_ "GenSigEnvVarType" SG_ 472 TorqueFlags1D8 0; +VAL_ 12 UI_autopilotTrial 3 "ACTIVE" 0 "NONE" 1 "START" 2 "STOP" ; +VAL_ 12 UI_cellNetworkTechnology 9 "CELL_NETWORK_CDMA" 2 "CELL_NETWORK_EDGE" 1 "CELL_NETWORK_GPRS" 8 "CELL_NETWORK_GSM" 4 "CELL_NETWORK_HSDPA" 6 "CELL_NETWORK_HSPA" 5 "CELL_NETWORK_HSUPA" 7 "CELL_NETWORK_LTE" 0 "CELL_NETWORK_NONE" 15 "CELL_NETWORK_SNA" 3 "CELL_NETWORK_UMTS" 10 "CELL_NETWORK_WCDMA" ; +VAL_ 12 UI_cellSignalBars 5 "FIVE" 4 "FOUR" 1 "ONE" 7 "SNA" 3 "THREE" 2 "TWO" 0 "ZERO" ; +VAL_ 12 UI_factoryReset 3 "CUSTOMER" 1 "DEVELOPER" 2 "DIAGNOSTIC" 0 "NONE_SNA" ; +VAL_ 130 UI_energyAtDestination 32768 "SNA" 32767 "TRIP_TOO_LONG" ; +VAL_ 130 UI_hindsightEnergy 32768 "SNA" 32767 "TRIP_TOO_LONG" ; +VAL_ 130 UI_predictedEnergy 32768 "SNA" 32767 "TRIP_TOO_LONG" ; +VAL_ 257 RCM_pitchRate 16384 "SNA" ; +VAL_ 257 RCM_pitchRateQF 3 "FAULTED" 0 "INIT" 2 "TEMP_INVALID" 1 "VALID" ; +VAL_ 257 RCM_rollRate 16384 "SNA" ; +VAL_ 257 RCM_rollRateQF 3 "FAULTED" 0 "INIT" 2 "TEMP_INVALID" 1 "VALID" ; +VAL_ 257 RCM_yawRate 32768 "SNA" ; +VAL_ 257 RCM_yawRateQF 0 "FAULTED" 1 "NOT_FAULTED" ; +VAL_ 273 RCM_lateralAccel 32768 "SNA" ; +VAL_ 273 RCM_lateralAccelQF 0 "FAULTED" 1 "NOT_FAULTED" ; +VAL_ 273 RCM_longitudinalAccel 32768 "SNA" ; +VAL_ 273 RCM_longitudinalAccelQF 0 "FAULTED" 1 "NOT_FAULTED" ; +VAL_ 273 RCM_verticalAccel 32768 "SNA" ; +VAL_ 273 RCM_verticalAccelQF 0 "FAULTED" 1 "NOT_FAULTED" ; +VAL_ 258 VCLEFT_frontLatchStatus 5 "LATCH_AJAR" 2 "LATCH_CLOSED" 3 "LATCH_CLOSING" 7 "LATCH_DEFAULT" 8 "LATCH_FAULT" 1 "LATCH_OPENED" 4 "LATCH_OPENING" 0 "LATCH_SNA" 6 "LATCH_TIMEOUT" ; +VAL_ 258 VCLEFT_mirrorFoldState 1 "MIRROR_FOLD_STATE_FOLDED" 3 "MIRROR_FOLD_STATE_FOLDING" 2 "MIRROR_FOLD_STATE_UNFOLDED" 4 "MIRROR_FOLD_STATE_UNFOLDING" 0 "MIRROR_FOLD_STATE_UNKNOWN" ; +VAL_ 258 VCLEFT_mirrorHeatState 4 "HEATER_STATE_FAULT" 2 "HEATER_STATE_OFF" 3 "HEATER_STATE_OFF_UNAVAILABLE" 1 "HEATER_STATE_ON" 0 "HEATER_STATE_SNA" ; +VAL_ 258 VCLEFT_mirrorRecallState 0 "MIRROR_RECALL_STATE_INIT" 1 "MIRROR_RECALL_STATE_RECALLING_AXIS_1" 2 "MIRROR_RECALL_STATE_RECALLING_AXIS_2" 3 "MIRROR_RECALL_STATE_RECALLING_COMPLETE" 4 "MIRROR_RECALL_STATE_RECALLING_FAILED" 5 "MIRROR_RECALL_STATE_RECALLING_STOPPED" ; +VAL_ 258 VCLEFT_mirrorState 3 "MIRROR_STATE_FOLD_UNFOLD" 0 "MIRROR_STATE_IDLE" 4 "MIRROR_STATE_RECALL" 1 "MIRROR_STATE_TILT_X" 2 "MIRROR_STATE_TILT_Y" ; +VAL_ 258 VCLEFT_rearLatchStatus 5 "LATCH_AJAR" 2 "LATCH_CLOSED" 3 "LATCH_CLOSING" 7 "LATCH_DEFAULT" 8 "LATCH_FAULT" 1 "LATCH_OPENED" 4 "LATCH_OPENING" 0 "LATCH_SNA" 6 "LATCH_TIMEOUT" ; +VAL_ 259 VCRIGHT_frontLatchStatus 5 "LATCH_AJAR" 2 "LATCH_CLOSED" 3 "LATCH_CLOSING" 7 "LATCH_DEFAULT" 8 "LATCH_FAULT" 1 "LATCH_OPENED" 4 "LATCH_OPENING" 0 "LATCH_SNA" 6 "LATCH_TIMEOUT" ; +VAL_ 259 VCRIGHT_mirrorFoldState 1 "MIRROR_FOLD_STATE_FOLDED" 3 "MIRROR_FOLD_STATE_FOLDING" 2 "MIRROR_FOLD_STATE_UNFOLDED" 4 "MIRROR_FOLD_STATE_UNFOLDING" 0 "MIRROR_FOLD_STATE_UNKNOWN" ; +VAL_ 259 VCRIGHT_mirrorRecallState 0 "MIRROR_RECALL_STATE_INIT" 1 "MIRROR_RECALL_STATE_RECALLING_AXIS_1" 2 "MIRROR_RECALL_STATE_RECALLING_AXIS_2" 3 "MIRROR_RECALL_STATE_RECALLING_COMPLETE" 4 "MIRROR_RECALL_STATE_RECALLING_FAILED" 5 "MIRROR_RECALL_STATE_RECALLING_STOPPED" ; +VAL_ 259 VCRIGHT_mirrorState 3 "MIRROR_STATE_FOLD_UNFOLD" 0 "MIRROR_STATE_IDLE" 4 "MIRROR_STATE_RECALL" 1 "MIRROR_STATE_TILT_X" 2 "MIRROR_STATE_TILT_Y" ; +VAL_ 259 VCRIGHT_rearLatchStatus 5 "LATCH_AJAR" 2 "LATCH_CLOSED" 3 "LATCH_CLOSING" 7 "LATCH_DEFAULT" 8 "LATCH_FAULT" 1 "LATCH_OPENED" 4 "LATCH_OPENING" 0 "LATCH_SNA" 6 "LATCH_TIMEOUT" ; +VAL_ 259 VCRIGHT_trunkLatchStatus 5 "LATCH_AJAR" 2 "LATCH_CLOSED" 3 "LATCH_CLOSING" 7 "LATCH_DEFAULT" 8 "LATCH_FAULT" 1 "LATCH_OPENED" 4 "LATCH_OPENING" 0 "LATCH_SNA" 6 "LATCH_TIMEOUT" ; +VAL_ 2147483923 GTW_bmpState 2 "BMP_STATE_ASLEEP" 3 "BMP_STATE_MIA" 0 "BMP_STATE_OFF" 1 "BMP_STATE_ON" 5 "BMP_STATE_POWER_CYCLE" 4 "BMP_STATE_RESET" 255 "DUMMY" ; +VAL_ 281 VCSEC_windowRequestPercent 127 "SNA" ; +VAL_ 281 VCSEC_windowRequestType 3 "WINDOW_REQUEST_GOTO_CLOSED" 2 "WINDOW_REQUEST_GOTO_CRACKED" 1 "WINDOW_REQUEST_GOTO_PERCENT" 0 "WINDOW_REQUEST_IDLE" ; +VAL_ 290 VCLEFT_frontDoorState 1 "DOOR_STATE_CLOSED" 4 "DOOR_STATE_OPEN_OR_AJAR" 3 "DOOR_STATE_RELEASING_LATCH" 0 "DOOR_STATE_UNKNOWN" 2 "DOOR_STATE_WAIT_FOR_SHORT_DROP" ; +VAL_ 290 VCLEFT_frontHandleDebounceStatus 3 "EXTERIOR_HANDLE_STATUS_ACTIVE" 4 "EXTERIOR_HANDLE_STATUS_DISCONNECTED" 5 "EXTERIOR_HANDLE_STATUS_FAULT" 1 "EXTERIOR_HANDLE_STATUS_INDETERMINATE" 2 "EXTERIOR_HANDLE_STATUS_NOT_ACTIVE" 0 "EXTERIOR_HANDLE_STATUS_SNA" ; +VAL_ 290 VCLEFT_frontHandleRawStatus 3 "EXTERIOR_HANDLE_STATUS_ACTIVE" 4 "EXTERIOR_HANDLE_STATUS_DISCONNECTED" 5 "EXTERIOR_HANDLE_STATUS_FAULT" 1 "EXTERIOR_HANDLE_STATUS_INDETERMINATE" 2 "EXTERIOR_HANDLE_STATUS_NOT_ACTIVE" 0 "EXTERIOR_HANDLE_STATUS_SNA" ; +VAL_ 290 VCLEFT_rearDoorState 1 "DOOR_STATE_CLOSED" 4 "DOOR_STATE_OPEN_OR_AJAR" 3 "DOOR_STATE_RELEASING_LATCH" 0 "DOOR_STATE_UNKNOWN" 2 "DOOR_STATE_WAIT_FOR_SHORT_DROP" ; +VAL_ 290 VCLEFT_rearHandleDebounceStatus 3 "EXTERIOR_HANDLE_STATUS_ACTIVE" 4 "EXTERIOR_HANDLE_STATUS_DISCONNECTED" 5 "EXTERIOR_HANDLE_STATUS_FAULT" 1 "EXTERIOR_HANDLE_STATUS_INDETERMINATE" 2 "EXTERIOR_HANDLE_STATUS_NOT_ACTIVE" 0 "EXTERIOR_HANDLE_STATUS_SNA" ; +VAL_ 290 VCLEFT_rearHandleRawStatus 3 "EXTERIOR_HANDLE_STATUS_ACTIVE" 4 "EXTERIOR_HANDLE_STATUS_DISCONNECTED" 5 "EXTERIOR_HANDLE_STATUS_FAULT" 1 "EXTERIOR_HANDLE_STATUS_INDETERMINATE" 2 "EXTERIOR_HANDLE_STATUS_NOT_ACTIVE" 0 "EXTERIOR_HANDLE_STATUS_SNA" ; +VAL_ 322 VCLEFT_liftgateStatusIndex 0 "LIFTGATE_STATUS_INDEX_0" 1 "LIFTGATE_STATUS_INDEX_1" 2 "LIFTGATE_STATUS_INDEX_INVALID" ; +VAL_ 322 VCLEFT_liftgateLatchRequest 1 "LATCH_REQUEST_CINCH" 3 "LATCH_REQUEST_FORCE_RELEASE" 0 "LATCH_REQUEST_NONE" 2 "LATCH_REQUEST_RELEASE" 4 "LATCH_REQUEST_RESET" ; +VAL_ 322 VCLEFT_liftgateMvmntNotAllowedCo 4 "PLG_MVMT_NOT_ALLOWED_EXTERIOR_PRESS_AT_MAX_OPEN" 5 "PLG_MVMT_NOT_ALLOWED_LOCKED" 1 "PLG_MVMT_NOT_ALLOWED_LOW_12V" 0 "PLG_MVMT_NOT_ALLOWED_NONE" 3 "PLG_MVMT_NOT_ALLOWED_UNCALIBRATED" 2 "PLG_MVMT_NOT_ALLOWED_VEHICLE_AT_SPEED" ; +VAL_ 322 VCLEFT_liftgatePhysicalChimeRequ 0 "LIFTGATE_CHIME_REQUEST_NONE" 4 "LIFTGATE_CHIME_REQUEST_ONE_LONG" 1 "LIFTGATE_CHIME_REQUEST_ONE_SHORT" 3 "LIFTGATE_CHIME_REQUEST_THREE_SHORT" 2 "LIFTGATE_CHIME_REQUEST_TWO_SHORT" ; +VAL_ 322 VCLEFT_liftgateRequestSource 5 "PLG_REQUEST_SOURCE_CLOSE_ALL" 2 "PLG_REQUEST_SOURCE_EXTERIOR" 4 "PLG_REQUEST_SOURCE_KEY_TRUNK_BUTTON" 6 "PLG_REQUEST_SOURCE_MCU_CLOSE" 1 "PLG_REQUEST_SOURCE_MCU_SWITCH" 0 "PLG_REQUEST_SOURCE_NONE" 3 "PLG_REQUEST_SOURCE_SHUTFACE" 7 "PLG_REQUEST_SOURCE_UDS" ; +VAL_ 322 VCLEFT_liftgateState 2 "PLG_STATE_BACKOFF" 5 "PLG_STATE_CLOSED" 4 "PLG_STATE_CLOSING" 11 "PLG_STATE_END_OF_TRAVEL" 0 "PLG_STATE_INIT" 7 "PLG_STATE_LATCH_CLOSING" 12 "PLG_STATE_LATCH_ENTRY" 10 "PLG_STATE_LATCH_EXIT" 6 "PLG_STATE_LATCH_OPENING" 8 "PLG_STATE_NOT_INSTALLED" 1 "PLG_STATE_OFF" 3 "PLG_STATE_OPENING" 9 "PLG_STATE_UNKNOWN" ; +VAL_ 322 VCLEFT_liftgateStoppingCondition 11 "PLG_STOPPING_CONDITION_COUNT" 10 "PLG_STOPPING_CONDITION_LATCH_FAULT" 3 "PLG_STOPPING_CONDITION_LOW_12V" 0 "PLG_STOPPING_CONDITION_NONE" 6 "PLG_STOPPING_CONDITION_OBSTACLE_CURRENT" 2 "PLG_STOPPING_CONDITION_OBSTACLE_STALL" 7 "PLG_STOPPING_CONDITION_OBSTACLE_TRAJ_POS" 8 "PLG_STOPPING_CONDITION_OBSTACLE_TRAJ_VEL" 1 "PLG_STOPPING_CONDITION_PINCH" 4 "PLG_STOPPING_CONDITION_STATE_TIMEOUT" 9 "PLG_STOPPING_CONDITION_UNCALIBRATED" 5 "PLG_STOPPING_CONDITION_VEHICLE_AT_SPEED" ; +VAL_ 322 VCLEFT_liftgateUIChimeRequest 0 "LIFTGATE_CHIME_REQUEST_NONE" 4 "LIFTGATE_CHIME_REQUEST_ONE_LONG" 1 "LIFTGATE_CHIME_REQUEST_ONE_SHORT" 3 "LIFTGATE_CHIME_REQUEST_THREE_SHORT" 2 "LIFTGATE_CHIME_REQUEST_TWO_SHORT" ; +VAL_ 325 ESP_absBrakeEvent2 2 "ABS_EVENT_ACTIVE_FRONT" 1 "ABS_EVENT_ACTIVE_FRONT_REAR" 3 "ABS_EVENT_ACTIVE_REAR" 0 "ABS_EVENT_NOT_ACTIVE" ; +VAL_ 325 ESP_absFaultLamp 0 "ABS_FAULT_LAMP_OFF" 1 "ABS_FAULT_LAMP_ON" ; +VAL_ 325 ESP_brakeApply 1 "BLS_ACTIVE" 0 "BLS_INACTIVE" ; +VAL_ 325 ESP_brakeDiscWipingActive 1 "BDW_ACTIVE" 0 "BDW_INACTIVE" ; +VAL_ 325 ESP_brakeLamp 0 "LAMP_OFF" 1 "LAMP_ON" ; +VAL_ 325 ESP_brakeTorqueTarget 8191 "SNA" ; +VAL_ 325 ESP_btcTargetState 1 "BACKUP" 0 "OFF" 2 "ON" 3 "SNA" ; +VAL_ 325 ESP_cdpStatus 2 "ACTUATING_EPB_CDP" 3 "CDP_COMMAND_INVALID" 1 "CDP_IS_AVAILABLE" 0 "CDP_IS_NOT_AVAILABLE" ; +VAL_ 325 ESP_driverBrakeApply 2 "Driver_applying_brakes" 3 "Faulty_SNA" 0 "NotInit_orOff" 1 "Not_Applied" ; +VAL_ 325 ESP_ebdFaultLamp 0 "EBD_FAULT_LAMP_OFF" 1 "EBD_FAULT_LAMP_ON" ; +VAL_ 325 ESP_ebrStandstillSkid 0 "NO_STANDSTILL_SKID" 1 "STANDSTILL_SKID_DETECTED" ; +VAL_ 325 ESP_ebrStatus 2 "ACTUATING_DI_EBR" 3 "EBR_COMMAND_INVALID" 1 "EBR_IS_AVAILABLE" 0 "EBR_IS_NOT_AVAILABLE" ; +VAL_ 325 ESP_espFaultLamp 0 "ESP_FAULT_LAMP_OFF" 1 "ESP_FAULT_LAMP_ON" ; +VAL_ 325 ESP_espLampFlash 1 "ESP_LAMP_FLASH" 0 "ESP_LAMP_OFF" ; +VAL_ 325 ESP_espModeActive 0 "ESP_MODE_00_NORMAL" 1 "ESP_MODE_01" 2 "ESP_MODE_02" 3 "ESP_MODE_03" ; +VAL_ 325 ESP_lateralAccelQF 1 "IN_SPEC" 0 "UNDEFINABLE_ACCURACY" ; +VAL_ 325 ESP_longitudinalAccelQF 1 "IN_SPEC" 0 "UNDEFINABLE_ACCURACY" ; +VAL_ 325 ESP_ptcTargetState 1 "BACKUP" 0 "FAULT" 2 "ON" 3 "SNA" ; +VAL_ 325 ESP_stabilityControlSts2 2 "ENGAGED" 3 "FAULTED" 0 "INIT" 1 "ON" ; +VAL_ 325 ESP_steeringAngleQF 1 "IN_SPEC" 0 "UNDEFINABLE_ACCURACY" ; +VAL_ 325 ESP_yawRateQF 1 "IN_SPEC" 0 "UNDEFINABLE_ACCURACY" ; +VAL_ 522 HVP_fcContNegativeState 3 "CONTACTOR_STATE_BLOCKED" 6 "CONTACTOR_STATE_ECONOMIZED" 1 "CONTACTOR_STATE_OPEN" 5 "CONTACTOR_STATE_OPENING" 2 "CONTACTOR_STATE_PRECHARGE" 4 "CONTACTOR_STATE_PULLED_IN" 0 "CONTACTOR_STATE_SNA" 7 "CONTACTOR_STATE_WELDED" ; +VAL_ 522 HVP_fcContPositiveState 3 "CONTACTOR_STATE_BLOCKED" 6 "CONTACTOR_STATE_ECONOMIZED" 1 "CONTACTOR_STATE_OPEN" 5 "CONTACTOR_STATE_OPENING" 2 "CONTACTOR_STATE_PRECHARGE" 4 "CONTACTOR_STATE_PULLED_IN" 0 "CONTACTOR_STATE_SNA" 7 "CONTACTOR_STATE_WELDED" ; +VAL_ 522 HVP_fcContactorSetState 3 "CONTACTOR_SET_STATE_BLOCKED" 5 "CONTACTOR_SET_STATE_CLOSED" 2 "CONTACTOR_SET_STATE_CLOSING" 9 "CONTACTOR_SET_STATE_NEGATIVE_CLOSED" 1 "CONTACTOR_SET_STATE_OPEN" 4 "CONTACTOR_SET_STATE_OPENING" 6 "CONTACTOR_SET_STATE_PARTIAL_WELD" 8 "CONTACTOR_SET_STATE_POSITIVE_CLOSED" 0 "CONTACTOR_SET_STATE_SNA" 7 "CONTACTOR_SET_STATE_WELDED" ; +VAL_ 522 HVP_fcCtrsRequestStatus 1 "REQUEST_ACTIVE" 2 "REQUEST_COMPLETED" 0 "REQUEST_NOT_ACTIVE" ; +VAL_ 522 HVP_fcLinkAllowedToEnergize 1 "FC_LINK_ENERGY_AC" 2 "FC_LINK_ENERGY_DC" 0 "FC_LINK_ENERGY_NONE" ; +VAL_ 522 HVP_hvilStatus 2 "CURRENT_SOURCE_FAULT" 3 "INTERNAL_OPEN_FAULT" 8 "NO_12V_SUPPLY" 5 "PENTHOUSE_LID_OPEN_FAULT" 1 "STATUS_OK" 0 "UNKNOWN" 6 "UNKNOWN_LOCATION_OPEN_FAULT" 7 "VEHICLE_NODE_FAULT" 4 "VEHICLE_OPEN_FAULT" 9 "VEHICLE_OR_PENTHOUSE_LID_OPEN_FAULT" ; +VAL_ 522 HVP_packContNegativeState 3 "CONTACTOR_STATE_BLOCKED" 6 "CONTACTOR_STATE_ECONOMIZED" 1 "CONTACTOR_STATE_OPEN" 5 "CONTACTOR_STATE_OPENING" 2 "CONTACTOR_STATE_PRECHARGE" 4 "CONTACTOR_STATE_PULLED_IN" 0 "CONTACTOR_STATE_SNA" 7 "CONTACTOR_STATE_WELDED" ; +VAL_ 522 HVP_packContPositiveState 3 "CONTACTOR_STATE_BLOCKED" 6 "CONTACTOR_STATE_ECONOMIZED" 1 "CONTACTOR_STATE_OPEN" 5 "CONTACTOR_STATE_OPENING" 2 "CONTACTOR_STATE_PRECHARGE" 4 "CONTACTOR_STATE_PULLED_IN" 0 "CONTACTOR_STATE_SNA" 7 "CONTACTOR_STATE_WELDED" ; +VAL_ 522 HVP_packContactorSetState 3 "CONTACTOR_SET_STATE_BLOCKED" 5 "CONTACTOR_SET_STATE_CLOSED" 2 "CONTACTOR_SET_STATE_CLOSING" 9 "CONTACTOR_SET_STATE_NEGATIVE_CLOSED" 1 "CONTACTOR_SET_STATE_OPEN" 4 "CONTACTOR_SET_STATE_OPENING" 6 "CONTACTOR_SET_STATE_PARTIAL_WELD" 8 "CONTACTOR_SET_STATE_POSITIVE_CLOSED" 0 "CONTACTOR_SET_STATE_SNA" 7 "CONTACTOR_SET_STATE_WELDED" ; +VAL_ 522 HVP_packCtrsRequestStatus 1 "REQUEST_ACTIVE" 2 "REQUEST_COMPLETED" 0 "REQUEST_NOT_ACTIVE" ; +VAL_ 526 PARK_sdiSensor1RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 526 PARK_sdiSensor2RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 526 PARK_sdiSensor3RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 526 PARK_sdiSensor4RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 526 PARK_sdiSensor5RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 526 PARK_sdiSensor6RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 537 VCSEC_TPMSDataIndex 0 "TPMS_DATA_SENSOR_0" 1 "TPMS_DATA_SENSOR_1" 2 "TPMS_DATA_SENSOR_2" 3 "TPMS_DATA_SENSOR_3" ; +VAL_ 537 VCSEC_TPMSBatVoltage0 255 "SNA" ; +VAL_ 537 VCSEC_TPMSBatVoltage1 255 "SNA" ; +VAL_ 537 VCSEC_TPMSBatVoltage2 255 "SNA" ; +VAL_ 537 VCSEC_TPMSBatVoltage3 255 "SNA" ; +VAL_ 537 VCSEC_TPMSLocation0 0 "LOCATION_FL" 1 "LOCATION_FR" 2 "LOCATION_RL" 3 "LOCATION_RR" 4 "LOCATION_UNKNOWN" ; +VAL_ 537 VCSEC_TPMSLocation1 0 "LOCATION_FL" 1 "LOCATION_FR" 2 "LOCATION_RL" 3 "LOCATION_RR" 4 "LOCATION_UNKNOWN" ; +VAL_ 537 VCSEC_TPMSLocation2 0 "LOCATION_FL" 1 "LOCATION_FR" 2 "LOCATION_RL" 3 "LOCATION_RR" 4 "LOCATION_UNKNOWN" ; +VAL_ 537 VCSEC_TPMSLocation3 0 "LOCATION_FL" 1 "LOCATION_FR" 2 "LOCATION_RL" 3 "LOCATION_RR" 4 "LOCATION_UNKNOWN" ; +VAL_ 537 VCSEC_TPMSPressure0 255 "SNA" ; +VAL_ 537 VCSEC_TPMSPressure1 255 "SNA" ; +VAL_ 537 VCSEC_TPMSPressure2 255 "SNA" ; +VAL_ 537 VCSEC_TPMSPressure3 255 "SNA" ; +VAL_ 537 VCSEC_TPMSTemperature0 255 "SNA" ; +VAL_ 537 VCSEC_TPMSTemperature1 255 "SNA" ; +VAL_ 537 VCSEC_TPMSTemperature2 255 "SNA" ; +VAL_ 537 VCSEC_TPMSTemperature3 255 "SNA" ; +VAL_ 516 PCS_chargeShutdownRequest 2 "EMERGENCY_SHUTDOWN_REQUESTED" 1 "GRACEFUL_SHUTDOWN_REQUESTED" 0 "NO_SHUTDOWN_REQUESTED" ; +VAL_ 516 PCS_chgMainState 9 "PCS_CHG_STATE_CLEAR_FAULTS" 6 "PCS_CHG_STATE_ENABLE" 8 "PCS_CHG_STATE_FAULTED" 1 "PCS_CHG_STATE_IDLE" 0 "PCS_CHG_STATE_INIT" 4 "PCS_CHG_STATE_QUALIFY_LINE_CONFIG" 7 "PCS_CHG_STATE_SHUTDOWN" 2 "PCS_CHG_STATE_STARTUP" 5 "PCS_CHG_STATE_SYSTEM_CONFIG" 3 "PCS_CHG_STATE_WAIT_FOR_LINE_VOLTAGE" ; +VAL_ 516 PCS_gridConfig 1 "GRID_CONFIG_SINGLE_PHASE" 0 "GRID_CONFIG_SNA" 2 "GRID_CONFIG_THREE_PHASE" 3 "GRID_CONFIG_THREE_PHASE_DELTA" ; +VAL_ 516 PCS_hvChargeStatus 1 "PCS_CHARGE_BLOCKED" 2 "PCS_CHARGE_ENABLED" 3 "PCS_CHARGE_FAULTED" 0 "PCS_CHARGE_STANDBY" ; +VAL_ 516 PCS_hwVariantType 1 "PCS_32A_SINGLE_PHASE_VARIANT" 0 "PCS_48A_SINGLE_PHASE_VARIANT" 3 "PCS_HW_VARIANT_TYPE_SNA" 2 "PCS_THREE_PHASES_VARIANT" ; +VAL_ 554 HVP_dcLinkVoltageFiltered 550 "SNA" ; +VAL_ 554 HVP_pcsControlRequest 3 "DISCHARGE" 2 "PRECHARGE" 0 "SHUTDOWN" 1 "SUPPORT" ; +VAL_ 562 BMS_fcContactorRequest 1 "SET_REQUEST_CLOSE" 4 "SET_REQUEST_CLOSE_NEGATIVE_ONLY" 5 "SET_REQUEST_CLOSE_POSITIVE_ONLY" 2 "SET_REQUEST_OPEN" 3 "SET_REQUEST_OPEN_IMMEDIATELY" 0 "SET_REQUEST_SNA" ; +VAL_ 562 BMS_fcLinkOkToEnergizeRequest 1 "FC_LINK_ENERGY_AC" 2 "FC_LINK_ENERGY_DC" 0 "FC_LINK_ENERGY_NONE" ; +VAL_ 562 BMS_internalHvilSenseV 65535 "SNA" ; +VAL_ 562 BMS_packContactorRequest 1 "SET_REQUEST_CLOSE" 4 "SET_REQUEST_CLOSE_NEGATIVE_ONLY" 5 "SET_REQUEST_CLOSE_POSITIVE_ONLY" 2 "SET_REQUEST_OPEN" 3 "SET_REQUEST_OPEN_IMMEDIATELY" 0 "SET_REQUEST_SNA" ; +VAL_ 627 UI_displayBrightnessLevel 255 "SNA" ; +VAL_ 627 UI_domeLightSwitch 2 "DOME_LIGHT_SWITCH_AUTO" 0 "DOME_LIGHT_SWITCH_OFF" 1 "DOME_LIGHT_SWITCH_ON" ; +VAL_ 627 UI_driveStateRequest 0 "DRIVE_STATE_REQ_IDLE" 1 "DRIVE_STATE_REQ_START" ; +VAL_ 627 UI_frontLeftSeatHeatReq 1 "HEATER_REQUEST_LEVEL1" 2 "HEATER_REQUEST_LEVEL2" 3 "HEATER_REQUEST_LEVEL3" 0 "HEATER_REQUEST_OFF" ; +VAL_ 627 UI_frontRightSeatHeatReq 1 "HEATER_REQUEST_LEVEL1" 2 "HEATER_REQUEST_LEVEL2" 3 "HEATER_REQUEST_LEVEL3" 0 "HEATER_REQUEST_OFF" ; +VAL_ 627 UI_lockRequest 0 "UI_LOCK_REQUEST_IDLE" 1 "UI_LOCK_REQUEST_LOCK" 4 "UI_LOCK_REQUEST_REMOTE_LOCK" 3 "UI_LOCK_REQUEST_REMOTE_UNLOCK" 7 "UI_LOCK_REQUEST_SNA" 2 "UI_LOCK_REQUEST_UNLOCK" ; +VAL_ 627 UI_mirrorFoldRequest 0 "MIRROR_FOLD_REQUEST_IDLE" 2 "MIRROR_FOLD_REQUEST_PRESENT" 1 "MIRROR_FOLD_REQUEST_RETRACT" 3 "MIRROR_FOLD_REQUEST_SNA" ; +VAL_ 627 UI_rearCenterSeatHeatReq 1 "HEATER_REQUEST_LEVEL1" 2 "HEATER_REQUEST_LEVEL2" 3 "HEATER_REQUEST_LEVEL3" 0 "HEATER_REQUEST_OFF" ; +VAL_ 627 UI_rearLeftSeatHeatReq 1 "HEATER_REQUEST_LEVEL1" 2 "HEATER_REQUEST_LEVEL2" 3 "HEATER_REQUEST_LEVEL3" 0 "HEATER_REQUEST_OFF" ; +VAL_ 627 UI_rearRightSeatHeatReq 1 "HEATER_REQUEST_LEVEL1" 2 "HEATER_REQUEST_LEVEL2" 3 "HEATER_REQUEST_LEVEL3" 0 "HEATER_REQUEST_OFF" ; +VAL_ 627 UI_remoteClosureRequest 2 "UI_REMOTE_CLOSURE_REQUEST_FRONT_TRUNK_MOVE" 0 "UI_REMOTE_CLOSURE_REQUEST_IDLE" 1 "UI_REMOTE_CLOSURE_REQUEST_REAR_TRUNK_MOVE" 3 "UI_REMOTE_CLOSURE_REQUEST_SNA" ; +VAL_ 627 UI_remoteStartRequest 0 "UI_REMOTE_START_REQUEST_IDLE" 4 "UI_REMOTE_START_REQUEST_SNA" 1 "UI_REMOTE_START_REQUEST_START" ; +VAL_ 627 UI_steeringBacklightEnabled 0 "STEERING_BACKLIGHT_DISABLED" 1 "STEERING_BACKLIGHT_ENABLED" ; +VAL_ 627 UI_steeringButtonMode 4 "STEERING_BUTTON_MODE_HEADLIGHT_LEFT" 5 "STEERING_BUTTON_MODE_HEADLIGHT_RIGHT" 2 "STEERING_BUTTON_MODE_MIRROR_LEFT" 3 "STEERING_BUTTON_MODE_MIRROR_RIGHT" 0 "STEERING_BUTTON_MODE_OFF" 1 "STEERING_BUTTON_MODE_STEERING_COLUMN_ADJ" ; +VAL_ 627 UI_wiperMode 2 "WIPER_MODE_NORMAL" 3 "WIPER_MODE_PARK" 1 "WIPER_MODE_SERVICE" 0 "WIPER_MODE_SNA" ; +VAL_ 627 UI_wiperRequest 2 "WIPER_REQUEST_AUTO" 6 "WIPER_REQUEST_FAST_CONTINUOUS" 4 "WIPER_REQUEST_FAST_INTERMITTENT" 1 "WIPER_REQUEST_OFF" 5 "WIPER_REQUEST_SLOW_CONTINUOUS" 3 "WIPER_REQUEST_SLOW_INTERMITTENT" 0 "WIPER_REQUEST_SNA" ; +VAL_ 1066 VCSEC_TPMSConnectionTypeCurrent0 0 "CONNECTIONTYPE_FAST" 1 "CONNECTIONTYPE_SLOW" 2 "CONNECTIONTYPE_UNKNOWN" ; +VAL_ 1066 VCSEC_TPMSConnectionTypeCurrent1 0 "CONNECTIONTYPE_FAST" 1 "CONNECTIONTYPE_SLOW" 2 "CONNECTIONTYPE_UNKNOWN" ; +VAL_ 1066 VCSEC_TPMSConnectionTypeCurrent2 0 "CONNECTIONTYPE_FAST" 1 "CONNECTIONTYPE_SLOW" 2 "CONNECTIONTYPE_UNKNOWN" ; +VAL_ 1066 VCSEC_TPMSConnectionTypeCurrent3 0 "CONNECTIONTYPE_FAST" 1 "CONNECTIONTYPE_SLOW" 2 "CONNECTIONTYPE_UNKNOWN" ; +VAL_ 1066 VCSEC_TPMSConnectionTypeDesired0 0 "CONNECTIONTYPE_FAST" 1 "CONNECTIONTYPE_SLOW" 2 "CONNECTIONTYPE_UNKNOWN" ; +VAL_ 1066 VCSEC_TPMSConnectionTypeDesired1 0 "CONNECTIONTYPE_FAST" 1 "CONNECTIONTYPE_SLOW" 2 "CONNECTIONTYPE_UNKNOWN" ; +VAL_ 1066 VCSEC_TPMSConnectionTypeDesired2 0 "CONNECTIONTYPE_FAST" 1 "CONNECTIONTYPE_SLOW" 2 "CONNECTIONTYPE_UNKNOWN" ; +VAL_ 1066 VCSEC_TPMSConnectionTypeDesired3 0 "CONNECTIONTYPE_FAST" 1 "CONNECTIONTYPE_SLOW" 2 "CONNECTIONTYPE_UNKNOWN" ; +VAL_ 1066 VCSEC_TPMSSensorState0 3 "SENSOR_CONNECTED" 4 "SENSOR_DISCONNECTING" 0 "SENSOR_NOT_PAIRED" 1 "SENSOR_WAIT_FOR_ADV" 2 "SENSOR_WAIT_FOR_CONN" ; +VAL_ 1066 VCSEC_TPMSSensorState1 3 "SENSOR_CONNECTED" 4 "SENSOR_DISCONNECTING" 0 "SENSOR_NOT_PAIRED" 1 "SENSOR_WAIT_FOR_ADV" 2 "SENSOR_WAIT_FOR_CONN" ; +VAL_ 1066 VCSEC_TPMSSensorState2 3 "SENSOR_CONNECTED" 4 "SENSOR_DISCONNECTING" 0 "SENSOR_NOT_PAIRED" 1 "SENSOR_WAIT_FOR_ADV" 2 "SENSOR_WAIT_FOR_CONN" ; +VAL_ 1066 VCSEC_TPMSSensorState3 3 "SENSOR_CONNECTED" 4 "SENSOR_DISCONNECTING" 0 "SENSOR_NOT_PAIRED" 1 "SENSOR_WAIT_FOR_ADV" 2 "SENSOR_WAIT_FOR_CONN" ; +VAL_ 558 PARK_sdiSensor10RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 558 PARK_sdiSensor11RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 558 PARK_sdiSensor12RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 558 PARK_sdiSensor7RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 558 PARK_sdiSensor8RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 558 PARK_sdiSensor9RawDistData 0 "BLOCKED" 1 "NEAR_DETECTION" 500 "NO_OBJECT_DETECTED" 511 "SNA" ; +VAL_ 568 UI_countryCode 1023 "SNA" 0 "UNKNOWN" ; +VAL_ 568 UI_mapSpeedLimit 3 "LESS_OR_EQ_10" 21 "LESS_OR_EQ_100" 22 "LESS_OR_EQ_105" 23 "LESS_OR_EQ_110" 24 "LESS_OR_EQ_115" 25 "LESS_OR_EQ_120" 26 "LESS_OR_EQ_130" 27 "LESS_OR_EQ_140" 4 "LESS_OR_EQ_15" 28 "LESS_OR_EQ_150" 29 "LESS_OR_EQ_160" 5 "LESS_OR_EQ_20" 6 "LESS_OR_EQ_25" 7 "LESS_OR_EQ_30" 8 "LESS_OR_EQ_35" 9 "LESS_OR_EQ_40" 10 "LESS_OR_EQ_45" 1 "LESS_OR_EQ_5" 11 "LESS_OR_EQ_50" 12 "LESS_OR_EQ_55" 13 "LESS_OR_EQ_60" 14 "LESS_OR_EQ_65" 2 "LESS_OR_EQ_7" 15 "LESS_OR_EQ_70" 16 "LESS_OR_EQ_75" 17 "LESS_OR_EQ_80" 18 "LESS_OR_EQ_85" 19 "LESS_OR_EQ_90" 20 "LESS_OR_EQ_95" 31 "SNA" 0 "UNKNOWN" 30 "UNLIMITED" ; +VAL_ 568 UI_mapSpeedLimitDependency 6 "LANE" 0 "NONE" 2 "RAIN" 1 "SCHOOL" 5 "SEASON" 7 "SNA" 3 "SNOW" 4 "TIME" ; +VAL_ 568 UI_mapSpeedLimitType 2 "ADVISORY" 4 "BUMPS" 3 "DEPENDENT" 1 "REGULAR" 7 "UNKNOWN_SNA" ; +VAL_ 568 UI_mapSpeedUnits 1 "KPH" 0 "MPH" ; +VAL_ 568 UI_nextBranchDist 31 "SNA" ; +VAL_ 568 UI_roadClass 1 "CLASS_1_MAJOR" 2 "CLASS_2" 3 "CLASS_3" 4 "CLASS_4" 5 "CLASS_5" 6 "CLASS_6_MINOR" 0 "UNKNOWN_INVALID_SNA" ; +VAL_ 569 DAS_leftFork 1 "LEFT_FORK_AVAILABLE" 0 "LEFT_FORK_NONE" 2 "LEFT_FORK_SELECTED" 3 "LEFT_FORK_UNAVAILABLE" ; +VAL_ 569 DAS_leftLineUsage 1 "AVAILABLE" 3 "BLACKLISTED" 2 "FUSED" 0 "REJECTED_UNAVAILABLE" ; +VAL_ 569 DAS_rightFork 1 "RIGHT_FORK_AVAILABLE" 0 "RIGHT_FORK_NONE" 2 "RIGHT_FORK_SELECTED" 3 "RIGHT_FORK_UNAVAILABLE" ; +VAL_ 569 DAS_rightLineUsage 1 "AVAILABLE" 3 "BLACKLISTED" 2 "FUSED" 0 "REJECTED_UNAVAILABLE" ; +VAL_ 586 DAS_accSmartSpeedState 2 "ACTIVE_INTEGRATING" 1 "ACTIVE_OFFRAMP" 3 "ACTIVE_ONRAMP" 0 "NOT_ACTIVE" 5 "OFFRAMP_DELAY" 4 "SET_SPEED_SET_REQUESTED" 7 "SNA" ; +VAL_ 586 DAS_autosteerBottsDotsUsage 1 "AVAILABLE" 3 "BLACKLISTED" 2 "FUSED" 0 "REJECTED_UNAVAILABLE" ; +VAL_ 586 DAS_autosteerHPPUsage 1 "AVAILABLE" 3 "BLACKLISTED" 2 "FUSED" 0 "REJECTED_UNAVAILABLE" ; +VAL_ 586 DAS_autosteerHealthState 4 "HEALTH_ABORTING" 2 "HEALTH_DEGRADED" 5 "HEALTH_FAULT" 1 "HEALTH_NOMINAL" 3 "HEALTH_SEVERELY_DEGRADED" 0 "HEALTH_UNAVAILABLE" ; +VAL_ 586 DAS_autosteerModelUsage 1 "AVAILABLE" 3 "BLACKLISTED" 2 "FUSED" 0 "REJECTED_UNAVAILABLE" ; +VAL_ 586 DAS_autosteerNavigationUsage 1 "AVAILABLE" 3 "BLACKLISTED" 2 "FUSED" 0 "REJECTED_UNAVAILABLE" ; +VAL_ 586 DAS_autosteerVehiclesUsage 1 "AVAILABLE" 3 "BLACKLISTED" 2 "FUSED" 0 "REJECTED_UNAVAILABLE" ; +VAL_ 586 DAS_behaviorType 0 "DAS_BEHAVIOR_INVALID" 1 "DAS_BEHAVIOR_IN_LANE" 2 "DAS_BEHAVIOR_LANE_CHANGE_LEFT" 3 "DAS_BEHAVIOR_LANE_CHANGE_RIGHT" ; +VAL_ 586 DAS_lastAutosteerAbortReason 29 "UI_ABORT_REASON_ACC_CANCEL" 32 "UI_ABORT_REASON_AEB" 14 "UI_ABORT_REASON_APP_ME_STATE_NOT_VISION" 30 "UI_ABORT_REASON_CAMERA_FAILSAFES" 16 "UI_ABORT_REASON_CAM_MSG_MIA" 17 "UI_ABORT_REASON_CAM_WATCHDOG" 23 "UI_ABORT_REASON_CID_SWITCH_DISABLED" 21 "UI_ABORT_REASON_COMPONENT_MIA" 22 "UI_ABORT_REASON_CRUISE_FAULT" 24 "UI_ABORT_REASON_DRIVING_OFF_NAV" 20 "UI_ABORT_REASON_EPAS_EAC_DENIED" 28 "UI_ABORT_REASON_EPAS_ERROR_CODE" 26 "UI_ABORT_REASON_FOLLOWER_OUTPUT_INVALID" 0 "UI_ABORT_REASON_HM_LANE_VIEW_RANGE" 2 "UI_ABORT_REASON_HM_STEERING_ERROR" 1 "UI_ABORT_REASON_HM_VIRTUAL_LANE_NO_INPUTS" 15 "UI_ABORT_REASON_ME_MAIN_STATE_NOT_VISION" 31 "UI_ABORT_REASON_NO_ABORT" 27 "UI_ABORT_REASON_PLANNER_OUTPUT_INVALID" 33 "UI_ABORT_REASON_SEATBELT_UNBUCKLED" 19 "UI_ABORT_REASON_SIDE_COLLISION_IMMINENT" 18 "UI_ABORT_REASON_TRAILER_MODE" 34 "UI_ABORT_REASON_USER_OVERRIDE_STRIKEOUT" 25 "UI_ABORT_REASON_VEHICLE_SPEED_ABOVE_MAX" ; +VAL_ 586 DAS_lastLinePreferenceReason 1 "AGREEMENT_WITH_NEIGHBOR_LANES" 4 "AVOID_ONCOMING_LANES" 5 "COUNTRY_DRIVING_SIDE" 3 "NAVIGATION_BRANCH" 2 "NEIGHBOR_LANE_PROBABILIY" 15 "NONE" 0 "OTHER_LANE_DISAGREES_WITH_MODEL" ; +VAL_ 586 DAS_navAvailable 1 "DAS_NAV_AVAILABLE" 0 "DAS_NAV_UNAVAILABLE" ; +VAL_ 586 DAS_offsetSide 0 "NO_OFFSET" 3 "OFFSET_BOTH_OBJECTS" 2 "OFFSET_LEFT_OBJECT" 1 "OFFSET_RIGHT_OBJECT" ; +VAL_ 586 DAS_plannerState 0 "TP_EXTSTATE_DISABLED" 2 "TP_EXTSTATE_FOLLOW" 7 "TP_EXTSTATE_LANECHANGE_ABORT" 4 "TP_EXTSTATE_LANECHANGE_IN_PROGRESS" 3 "TP_EXTSTATE_LANECHANGE_REQUESTED" 6 "TP_EXTSTATE_LANECHANGE_WAIT_FOR_FWD_OBSTACLE" 5 "TP_EXTSTATE_LANECHANGE_WAIT_FOR_SIDE_OBSTACLE" 1 "TP_EXTSTATE_VL" ; +VAL_ 586 DAS_rearLeftVehDetectedCurrent 1 "VEHICLE_DETECTED" 0 "VEHICLE_NOT_DETECTED" ; +VAL_ 586 DAS_rearLeftVehDetectedTrip 1 "VEHICLE_DETECTED" 0 "VEHICLE_NOT_DETECTED" ; +VAL_ 586 DAS_rearRightVehDetectedTrip 1 "VEHICLE_DETECTED" 0 "VEHICLE_NOT_DETECTED" ; +VAL_ 586 DAS_rearVehDetectedThisCycle 1 "VEHICLE_DETECTED" 0 "VEHICLE_NOT_DETECTED" ; +VAL_ 586 DAS_roadSurfaceType 2 "ROAD_SURFACE_ENHANCED" 1 "ROAD_SURFACE_NORMAL" 0 "ROAD_SURFACE_SNA" ; +VAL_ 586 DAS_ulcInProgress 1 "ULC_ACTIVE" 0 "ULC_INACTIVE" ; +VAL_ 586 DAS_ulcType 1 "ULC_TYPE_NAV" 0 "ULC_TYPE_NONE" 2 "ULC_TYPE_SPEED" ; +VAL_ 605 CP_UHF_controlState 3 "CP_UHF_CALIBRATE" 6 "CP_UHF_CHECK_RX" 1 "CP_UHF_CONFIG" 10 "CP_UHF_FAULT" 8 "CP_UHF_HANDLE_FOUND" 2 "CP_UHF_IDLE" 0 "CP_UHF_INIT" 4 "CP_UHF_PREPARE_RX" 7 "CP_UHF_READ_RXFIFO" 5 "CP_UHF_RX" 9 "CP_UHF_SLEEP" ; +VAL_ 605 CP_chargeCablePresent 0 "CABLE_NOT_PRESENT" 1 "CABLE_PRESENT" ; +VAL_ 605 CP_chargeCableState 2 "CHARGE_CABLE_CONNECTED" 1 "CHARGE_CABLE_NOT_CONNECTED" 0 "CHARGE_CABLE_UNKNOWN_SNA" ; +VAL_ 605 CP_coldWeatherMode 1 "CP_COLD_WEATHER_LATCH_MITIGATION" 0 "CP_COLD_WEATHER_NONE" ; +VAL_ 605 CP_doorControlState 5 "CP_doorClosing" 1 "CP_doorIdle" 0 "CP_doorInit" 2 "CP_doorOpenRequested" 3 "CP_doorOpening" 6 "CP_doorSenseClosed" 4 "CP_doorSenseOpen" ; +VAL_ 605 CP_faultLineSensed 0 "FAULT_LINE_CLEARED" 1 "FAULT_LINE_SET" ; +VAL_ 605 CP_inductiveDoorState 7 "CP_INDUCTIVE_DOOR_FAULT" 0 "CP_INDUCTIVE_DOOR_INIT" 1 "CP_INDUCTIVE_DOOR_INIT_FROM_CHARGE" 2 "CP_INDUCTIVE_DOOR_INIT_FROM_DRIVE" 4 "CP_INDUCTIVE_DOOR_NOT_PRESENT" 6 "CP_INDUCTIVE_DOOR_OFF_CHARGE" 5 "CP_INDUCTIVE_DOOR_OFF_DRIVE" 3 "CP_INDUCTIVE_DOOR_PRESENT" ; +VAL_ 605 CP_inductiveSensorState 7 "CP_INDUCTIVE_SENSOR_CONFIG" 5 "CP_INDUCTIVE_SENSOR_FAULT" 0 "CP_INDUCTIVE_SENSOR_INIT" 3 "CP_INDUCTIVE_SENSOR_PAUSE" 1 "CP_INDUCTIVE_SENSOR_POLL" 6 "CP_INDUCTIVE_SENSOR_RESET" 2 "CP_INDUCTIVE_SENSOR_SHUTDOWN" 4 "CP_INDUCTIVE_SENSOR_WAIT_FOR_INIT" ; +VAL_ 605 CP_latch2ControlState 2 "CP_latchDisengageRequested" 4 "CP_latchDisengaged" 3 "CP_latchDisengaging" 5 "CP_latchEngaging" 1 "CP_latchIdle" 0 "CP_latchInit" ; +VAL_ 605 CP_latch2State 3 "CP_LATCH_BLOCKING" 1 "CP_LATCH_DISENGAGED" 2 "CP_LATCH_ENGAGED" 0 "CP_LATCH_SNA" ; +VAL_ 605 CP_latchControlState 2 "CP_latchDisengageRequested" 4 "CP_latchDisengaged" 3 "CP_latchDisengaging" 5 "CP_latchEngaging" 1 "CP_latchIdle" 0 "CP_latchInit" ; +VAL_ 605 CP_latchState 3 "CP_LATCH_BLOCKING" 1 "CP_LATCH_DISENGAGED" 2 "CP_LATCH_ENGAGED" 0 "CP_LATCH_SNA" ; +VAL_ 605 CP_ledColor 7 "CP_LEDS_AMBER" 3 "CP_LEDS_BLUE" 9 "CP_LEDS_DEBUG" 6 "CP_LEDS_FLASHING_AMBER" 10 "CP_LEDS_FLASHING_BLUE" 5 "CP_LEDS_FLASHING_GREEN" 2 "CP_LEDS_GREEN" 0 "CP_LEDS_OFF" 8 "CP_LEDS_RAVE" 1 "CP_LEDS_RED" 4 "CP_LEDS_WHITE" ; +VAL_ 605 CP_type 1 "CP_TYPE_EURO_IEC" 2 "CP_TYPE_GB" 3 "CP_TYPE_IEC_CCS" 0 "CP_TYPE_US_TESLA" ; +VAL_ 697 DAS_accState 1 "ACC_CANCEL_CAMERA_BLIND" 0 "ACC_CANCEL_GENERIC" 13 "ACC_CANCEL_GENERIC_SILENT" 14 "ACC_CANCEL_OUT_OF_CALIBRATION" 12 "ACC_CANCEL_PATH_NOT_CLEAR" 2 "ACC_CANCEL_RADAR_BLIND" 3 "ACC_HOLD" 4 "ACC_ON" 8 "APC_ABORT" 5 "APC_BACKWARD" 7 "APC_COMPLETE" 6 "APC_FORWARD" 9 "APC_PAUSE" 11 "APC_SELFPARK_START" 10 "APC_UNPARK_COMPLETE" 15 "FAULT_SNA" ; +VAL_ 697 DAS_accelMax 511 "SNA" ; +VAL_ 697 DAS_accelMin 511 "SNA" ; +VAL_ 697 DAS_aebEvent 1 "AEB_ACTIVE" 2 "AEB_FAULT" 0 "AEB_NOT_ACTIVE" 3 "AEB_SNA" ; +VAL_ 697 DAS_jerkMax 255 "SNA" ; +VAL_ 697 DAS_jerkMin 511 "SNA" ; +VAL_ 697 DAS_setSpeed 4095 "SNA" ; +VAL_ 723 UI_isSunUp 0 "SUN_DOWN" 3 "SUN_SNA" 1 "SUN_UP" ; +VAL_ 723 UI_solarAzimuthAngle 32768 "SNA" ; +VAL_ 723 UI_solarAzimuthAngleCarRef 255 "SNA" ; +VAL_ 723 UI_solarElevationAngle 127 "SNA" ; +VAL_ 777 DAS_objectId 3 "CUTIN_VEHICLE" 0 "LEAD_VEHICLES" 1 "LEFT_VEHICLES" 2 "RIGHT_VEHICLES" 4 "ROAD_SIGN" 5 "VEHICLE_HEADINGS" ; +VAL_ 777 DAS_cutinVehDx 255 "SNA" ; +VAL_ 777 DAS_cutinVehHeading 255 "SNA" ; +VAL_ 777 DAS_cutinVehId 127 "SNA" ; +VAL_ 777 DAS_cutinVehType 4 "BICYCLE" 2 "CAR" 3 "MOTORCYCLE" 5 "PEDESTRIAN" 1 "TRUCK" 0 "UNKNOWN" ; +VAL_ 777 DAS_cutinVehVxRel 15 "SNA" ; +VAL_ 777 DAS_leadVeh2Dx 255 "SNA" ; +VAL_ 777 DAS_leadVeh2Heading 255 "SNA" ; +VAL_ 777 DAS_leadVeh2Id 0 "SNA" ; +VAL_ 777 DAS_leadVeh2Type 4 "BICYCLE" 2 "CAR" 3 "MOTORCYCLE" 5 "PEDESTRIAN" 1 "TRUCK" 0 "UNKNOWN" ; +VAL_ 777 DAS_leadVeh2VxRel 15 "SNA" ; +VAL_ 777 DAS_leadVehDx 255 "SNA" ; +VAL_ 777 DAS_leadVehHeading 255 "SNA" ; +VAL_ 777 DAS_leadVehId 127 "SNA" ; +VAL_ 777 DAS_leadVehType 4 "BICYCLE" 2 "CAR" 6 "IPSO" 3 "MOTORCYCLE" 5 "PEDESTRIAN" 1 "TRUCK" 0 "UNKNOWN" ; +VAL_ 777 DAS_leadVehVxRel 15 "SNA" ; +VAL_ 777 DAS_leftVeh2Dx 255 "SNA" ; +VAL_ 777 DAS_leftVeh2Heading 255 "SNA" ; +VAL_ 777 DAS_leftVeh2Id 0 "SNA" ; +VAL_ 777 DAS_leftVeh2Type 4 "BICYCLE" 2 "CAR" 3 "MOTORCYCLE" 5 "PEDESTRIAN" 1 "TRUCK" 0 "UNKNOWN" ; +VAL_ 777 DAS_leftVeh2VxRel 15 "SNA" ; +VAL_ 777 DAS_leftVehDx 255 "SNA" ; +VAL_ 777 DAS_leftVehHeading 255 "SNA" ; +VAL_ 777 DAS_leftVehId 127 "SNA" ; +VAL_ 777 DAS_leftVehType 4 "BICYCLE" 2 "CAR" 3 "MOTORCYCLE" 5 "PEDESTRIAN" 1 "TRUCK" 0 "UNKNOWN" ; +VAL_ 777 DAS_leftVehVxRel 15 "SNA" ; +VAL_ 777 DAS_rightVeh2Dx 255 "SNA" ; +VAL_ 777 DAS_rightVeh2Heading 255 "SNA" ; +VAL_ 777 DAS_rightVeh2Id 0 "SNA" ; +VAL_ 777 DAS_rightVeh2Type 4 "BICYCLE" 2 "CAR" 3 "MOTORCYCLE" 5 "PEDESTRIAN" 1 "TRUCK" 0 "UNKNOWN" ; +VAL_ 777 DAS_rightVeh2VxRel 15 "SNA" ; +VAL_ 777 DAS_rightVehDx 255 "SNA" ; +VAL_ 777 DAS_rightVehHeading 255 "SNA" ; +VAL_ 777 DAS_rightVehId 127 "SNA" ; +VAL_ 777 DAS_rightVehType 4 "BICYCLE" 2 "CAR" 3 "MOTORCYCLE" 5 "PEDESTRIAN" 1 "TRUCK" 0 "UNKNOWN" ; +VAL_ 777 DAS_rightVehVxRel 15 "SNA" ; +VAL_ 777 DAS_roadSignArrow 0 "CIRCLE" 1 "LEFT" 2 "RIGHT" 3 "STRAIGHT" 4 "UNKNOWN" ; +VAL_ 777 DAS_roadSignColor 3 "GREEN" 0 "NONE" 1 "RED" 4 "RED_YELLOW" 2 "YELLOW" ; +VAL_ 777 DAS_roadSignId 255 "SNA" 0 "STOP_SIGN" 1 "TRAFFIC_LIGHT" ; +VAL_ 777 DAS_roadSignOrientation 2 "HORIZONTAL_3_LIGHT" 0 "UNKNOWN" 1 "VERTICAL_3_LIGHT" ; +VAL_ 777 DAS_roadSignSource 1 "NAV" 0 "NONE" 2 "VISION" ; +VAL_ 777 DAS_roadSignStopLineDist 1023 "SNA" ; +VAL_ 905 DAS_ACC_report 24 "ACC_REPORT_BEHAVIOR_REPORT" 23 "ACC_REPORT_CAMERA_ONLY" 21 "ACC_REPORT_CIPV_CUTTING_OUT" 10 "ACC_REPORT_CSA" 18 "ACC_REPORT_FLEET_SPEEDS" 13 "ACC_REPORT_LC_EXTERNAL_STATE_ABORTED" 12 "ACC_REPORT_LC_EXTERNAL_STATE_ABORTING" 14 "ACC_REPORT_LC_EXTERNAL_STATE_ACTIVE_RESTRICTED" 11 "ACC_REPORT_LC_HANDS_ON_REQD_STRUCK_OUT" 19 "ACC_REPORT_MCVLR_DPP" 20 "ACC_REPORT_MCVLR_IN_PATH" 22 "ACC_REPORT_RADAR_OBJ_FIVE" 15 "ACC_REPORT_RADAR_OBJ_ONE" 16 "ACC_REPORT_RADAR_OBJ_TWO" 1 "ACC_REPORT_TARGET_CIPV" 5 "ACC_REPORT_TARGET_CUTIN" 2 "ACC_REPORT_TARGET_IN_FRONT_OF_CIPV" 17 "ACC_REPORT_TARGET_MCP" 3 "ACC_REPORT_TARGET_MCVL" 4 "ACC_REPORT_TARGET_MCVR" 0 "ACC_REPORT_TARGET_NONE" 9 "ACC_REPORT_TARGET_TYPE_FAULT" 8 "ACC_REPORT_TARGET_TYPE_IPSO" 6 "ACC_REPORT_TARGET_TYPE_STOP_SIGN" 7 "ACC_REPORT_TARGET_TYPE_TRAFFIC_LIGHT" ; +VAL_ 905 DAS_accSpeedLimit 0 "NONE" 1023 "SNA" ; +VAL_ 905 DAS_activationFailureStatus 1 "LC_ACTIVATION_FAILED_1" 2 "LC_ACTIVATION_FAILED_2" 0 "LC_ACTIVATION_IDLE" ; +VAL_ 905 DAS_csaState 1 "CSA_EXTERNAL_STATE_AVAILABLE" 2 "CSA_EXTERNAL_STATE_ENABLE" 3 "CSA_EXTERNAL_STATE_HOLD" 0 "CSA_EXTERNAL_STATE_UNAVAILABLE" ; +VAL_ 905 DAS_driverInteractionLevel 2 "CONTINUED_DRIVER_NOT_INTERACTING" 0 "DRIVER_INTERACTING" 1 "DRIVER_NOT_INTERACTING" ; +VAL_ 905 DAS_longCollisionWarning 3 "FCM_LONG_COLLISION_WARNING_IPSO" 0 "FCM_LONG_COLLISION_WARNING_NONE" 2 "FCM_LONG_COLLISION_WARNING_PEDESTRIAN" 15 "FCM_LONG_COLLISION_WARNING_SNA" 4 "FCM_LONG_COLLISION_WARNING_STOPSIGN_STOPLINE" 5 "FCM_LONG_COLLISION_WARNING_TFL_STOPLINE" 6 "FCM_LONG_COLLISION_WARNING_VEHICLE_CIPV" 12 "FCM_LONG_COLLISION_WARNING_VEHICLE_CIPV2" 7 "FCM_LONG_COLLISION_WARNING_VEHICLE_CUTIN" 8 "FCM_LONG_COLLISION_WARNING_VEHICLE_MCVL" 9 "FCM_LONG_COLLISION_WARNING_VEHICLE_MCVL2" 10 "FCM_LONG_COLLISION_WARNING_VEHICLE_MCVR" 11 "FCM_LONG_COLLISION_WARNING_VEHICLE_MCVR2" 1 "FCM_LONG_COLLISION_WARNING_VEHICLE_UNKNOWN" ; +VAL_ 905 DAS_pmmCameraFaultReason 1 "PMM_CAMERA_BLOCKED_FRONT" 2 "PMM_CAMERA_INVALID_MIA" 0 "PMM_CAMERA_NO_FAULT" ; +VAL_ 905 DAS_pmmLoggingRequest 0 "FALSE" 1 "TRUE" ; +VAL_ 905 DAS_pmmObstacleSeverity 6 "PMM_ACCEL_LIMIT" 3 "PMM_BRAKE_REQUEST" 5 "PMM_CRASH_FRONT" 4 "PMM_CRASH_REAR" 2 "PMM_IMMINENT_FRONT" 1 "PMM_IMMINENT_REAR" 0 "PMM_NONE" 7 "PMM_SNA" ; +VAL_ 905 DAS_pmmRadarFaultReason 1 "PMM_RADAR_BLOCKED_FRONT" 2 "PMM_RADAR_INVALID_MIA" 0 "PMM_RADAR_NO_FAULT" ; +VAL_ 905 DAS_pmmSysFaultReason 7 "PMM_FAULT_BRAKE_PEDAL_INHIBIT" 1 "PMM_FAULT_DAS_DISABLED" 5 "PMM_FAULT_DISABLED_BY_USER" 3 "PMM_FAULT_DI_FAULT" 0 "PMM_FAULT_NONE" 6 "PMM_FAULT_ROAD_TYPE" 2 "PMM_FAULT_SPEED" 4 "PMM_FAULT_STEERING_ANGLE_RATE" ; +VAL_ 905 DAS_pmmUltrasonicsFaultReason 3 "PMM_ULTRASONICS_BLOCKED_BOTH" 1 "PMM_ULTRASONICS_BLOCKED_FRONT" 2 "PMM_ULTRASONICS_BLOCKED_REAR" 4 "PMM_ULTRASONICS_INVALID_MIA" 0 "PMM_ULTRASONICS_NO_FAULT" ; +VAL_ 905 DAS_ppOffsetDesiredRamp 128 "PP_NO_OFFSET" ; +VAL_ 905 DAS_radarTelemetry 0 "RADAR_TELEMETRY_IDLE" 1 "RADAR_TELEMETRY_NORMAL" 2 "RADAR_TELEMETRY_URGENT" ; +VAL_ 905 DAS_robState 2 "ROB_STATE_ACTIVE" 0 "ROB_STATE_INHIBITED" 3 "ROB_STATE_MAPLESS" 1 "ROB_STATE_MEASURE" ; +VAL_ 921 DAS_autoLaneChangeState 19 "ALC_ABORT_BLINKER_TURNED_OFF" 18 "ALC_ABORT_LC_HEALTH_BAD" 30 "ALC_ABORT_MISSION_PLAN_INVALID" 20 "ALC_ABORT_OTHER_REASON" 17 "ALC_ABORT_POOR_VIEW_RANGE" 15 "ALC_ABORT_SIDE_OBSTACLE_PRESENT_L" 16 "ALC_ABORT_SIDE_OBSTACLE_PRESENT_R" 29 "ALC_ABORT_TIMEOUT" 8 "ALC_AVAILABLE_BOTH" 6 "ALC_AVAILABLE_ONLY_L" 7 "ALC_AVAILABLE_ONLY_R" 26 "ALC_BLOCKED_LANE_TYPE_L" 27 "ALC_BLOCKED_LANE_TYPE_R" 23 "ALC_BLOCKED_VEH_TTC_AND_USS_L" 25 "ALC_BLOCKED_VEH_TTC_AND_USS_R" 22 "ALC_BLOCKED_VEH_TTC_L" 24 "ALC_BLOCKED_VEH_TTC_R" 9 "ALC_IN_PROGRESS_L" 10 "ALC_IN_PROGRESS_R" 31 "ALC_SNA" 0 "ALC_UNAVAILABLE_DISABLED" 4 "ALC_UNAVAILABLE_EXITING_HIGHWAY" 1 "ALC_UNAVAILABLE_NO_LANES" 21 "ALC_UNAVAILABLE_SOLID_LANE_LINE" 2 "ALC_UNAVAILABLE_SONICS_INVALID" 3 "ALC_UNAVAILABLE_TP_FOLLOW" 5 "ALC_UNAVAILABLE_VEHICLE_SPEED" 13 "ALC_WAITING_FOR_FWD_OBST_TO_PASS_L" 14 "ALC_WAITING_FOR_FWD_OBST_TO_PASS_R" 11 "ALC_WAITING_FOR_SIDE_OBST_TO_PASS_L" 12 "ALC_WAITING_FOR_SIDE_OBST_TO_PASS_R" 28 "ALC_WAITING_HANDS_ON" ; +VAL_ 921 DAS_autoparkReady 1 "AUTOPARK_READY" 0 "AUTOPARK_UNAVAILABLE" ; +VAL_ 921 DAS_autopilotHandsOnState 0 "LC_HANDS_ON_NOT_REQD" 4 "LC_HANDS_ON_REQD_CHIME_1" 5 "LC_HANDS_ON_REQD_CHIME_2" 1 "LC_HANDS_ON_REQD_DETECTED" 9 "LC_HANDS_ON_REQD_ESCALATED_CHIME_1" 10 "LC_HANDS_ON_REQD_ESCALATED_CHIME_2" 2 "LC_HANDS_ON_REQD_NOT_DETECTED" 6 "LC_HANDS_ON_REQD_SLOWING" 7 "LC_HANDS_ON_REQD_STRUCK_OUT" 3 "LC_HANDS_ON_REQD_VISUAL" 15 "LC_HANDS_ON_SNA" 8 "LC_HANDS_ON_SUSPENDED" ; +VAL_ 921 DAS_autopilotState 9 "ABORTED" 8 "ABORTING" 5 "ACTIVE_NAV" 3 "ACTIVE_NOMINAL" 4 "ACTIVE_RESTRICTED" 2 "AVAILABLE" 0 "DISABLED" 14 "FAULT" 15 "SNA" 1 "UNAVAILABLE" ; +VAL_ 921 DAS_blindSpotRearLeft 0 "NO_WARNING" 3 "SNA" 1 "WARNING_LEVEL_1" 2 "WARNING_LEVEL_2" ; +VAL_ 921 DAS_blindSpotRearRight 0 "NO_WARNING" 3 "SNA" 1 "WARNING_LEVEL_1" 2 "WARNING_LEVEL_2" ; +VAL_ 921 DAS_fleetSpeedState 2 "FLEETSPEED_ACTIVE" 1 "FLEETSPEED_AVAILABLE" 3 "FLEETSPEED_HOLD" 0 "FLEETSPEED_UNAVAILABLE" ; +VAL_ 921 DAS_forwardCollisionWarning 1 "FORWARD_COLLISION_WARNING" 0 "NONE" 3 "SNA" ; +VAL_ 921 DAS_fusedSpeedLimit 31 "NONE" 0 "UNKNOWN_SNA" ; +VAL_ 921 DAS_heaterState 0 "HEATER_OFF_SNA" 1 "HEATER_ON" ; +VAL_ 921 DAS_laneDepartureWarning 1 "LEFT_WARNING" 3 "LEFT_WARNING_SEVERE" 0 "NONE" 2 "RIGHT_WARNING" 4 "RIGHT_WARNING_SEVERE" 5 "SNA" ; +VAL_ 921 DAS_lssState 6 "LSS_STATE_ABORT" 5 "LSS_STATE_BLINDSPOT" 3 "LSS_STATE_ELK" 0 "LSS_STATE_FAULT" 1 "LSS_STATE_LDW" 2 "LSS_STATE_LKA" 4 "LSS_STATE_MONITOR" 7 "LSS_STATE_OFF" ; +VAL_ 921 DAS_sideCollisionAvoid 1 "AVOID_LEFT" 2 "AVOID_RIGHT" 0 "NONE" 3 "SNA" ; +VAL_ 921 DAS_sideCollisionInhibit 1 "INHIBIT" 0 "NO_INHIBIT" ; +VAL_ 921 DAS_sideCollisionWarning 0 "NONE" 1 "WARN_LEFT" 3 "WARN_LEFT_RIGHT" 2 "WARN_RIGHT" ; +VAL_ 921 DAS_suppressSpeedWarning 0 "Do_Not_Suppress" 1 "Suppress_Speed_Warning" ; +VAL_ 921 DAS_visionOnlySpeedLimit 31 "NONE" 0 "UNKNOWN_SNA" ; +VAL_ 925 IBST_driverBrakeApply 1 "BRAKES_NOT_APPLIED" 2 "DRIVER_APPLYING_BRAKES" 3 "FAULT" 0 "NOT_INIT_OR_OFF" ; +VAL_ 925 IBST_iBoosterStatus 4 "IBOOSTER_ACTIVE_GOOD_CHECK" 6 "IBOOSTER_ACTUATION" 3 "IBOOSTER_DIAGNOSTIC" 2 "IBOOSTER_FAILURE" 1 "IBOOSTER_INIT" 0 "IBOOSTER_OFF" 5 "IBOOSTER_READY" ; +VAL_ 925 IBST_internalState 4 "DIAGNOSTIC" 3 "EXTERNAL_BRAKE_REQUEST" 2 "LOCAL_BRAKE_REQUEST" 0 "NO_MODE_ACTIVE" 6 "POST_DRIVE_CHECK" 1 "PRE_DRIVE_CHECK" 5 "TRANSITION_TO_IDLE" ; +VAL_ 929 VCFRONT_12vStatusForDrive 2 "EXIT_DRIVE_REQUESTED_12V" 0 "NOT_READY_FOR_DRIVE_12V" 1 "READY_FOR_DRIVE_12V" ; +VAL_ 929 VCFRONT_2RowCenterUnbuckled 0 "CHIME_NONE" 1 "CHIME_OCCUPIED_AND_UNBUCKLED" 2 "CHIME_SNA" ; +VAL_ 929 VCFRONT_2RowLeftUnbuckled 0 "CHIME_NONE" 1 "CHIME_OCCUPIED_AND_UNBUCKLED" 2 "CHIME_SNA" ; +VAL_ 929 VCFRONT_2RowRightUnbuckled 0 "CHIME_NONE" 1 "CHIME_OCCUPIED_AND_UNBUCKLED" 2 "CHIME_SNA" ; +VAL_ 929 VCFRONT_APGlassHeaterState 4 "HEATER_STATE_FAULT" 2 "HEATER_STATE_OFF" 3 "HEATER_STATE_OFF_UNAVAILABLE" 1 "HEATER_STATE_ON" 0 "HEATER_STATE_SNA" ; +VAL_ 929 VCFRONT_diPowerOnState 0 "DI_POWERED_OFF" 3 "DI_POWERED_ON_FOR_DRIVE" 2 "DI_POWERED_ON_FOR_STATIONARY_HEAT" 1 "DI_POWERED_ON_FOR_SUMMON" 4 "DI_POWER_GOING_DOWN" ; +VAL_ 929 VCFRONT_driverBuckleStatus 1 "BUCKLED" 0 "UNBUCKLED" ; +VAL_ 929 VCFRONT_driverDoorStatus 1 "DOOR_CLOSED" 0 "DOOR_OPEN" ; +VAL_ 929 VCFRONT_driverUnbuckled 0 "CHIME_NONE" 1 "CHIME_OCCUPIED_AND_UNBUCKLED" 2 "CHIME_SNA" ; +VAL_ 929 VCFRONT_passengerUnbuckled 0 "CHIME_NONE" 1 "CHIME_OCCUPIED_AND_UNBUCKLED" 2 "CHIME_SNA" ; +VAL_ 929 VCFRONT_pcsEFuseVoltage 1023 "SNA" ; +VAL_ 929 VCFRONT_thermalSystemType 1 "HEAT_PUMP_THERMAL_SYSTEM" 0 "LEGACY_THERMAL_SYSTEM" ; +VAL_ 985 UI_conditionalSpeedLimit 31 "SNA" ; +VAL_ 985 UI_mapSpeedLimitUnits 1 "KPH" 0 "MPH" ; +VAL_ 985 UI_userSpeedOffsetUnits 1 "KPH" 0 "MPH" ; +VAL_ 994 VCLEFT_FLMapLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_FRMapLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_RLMapLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_RRMapLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_brakeLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_brakeTrailerLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_dynamicBrakeLightStatus 2 "DYNAMIC_BRAKE_LIGHT_ACTIVE_HIGH" 1 "DYNAMIC_BRAKE_LIGHT_ACTIVE_LOW" 0 "DYNAMIC_BRAKE_LIGHT_OFF" ; +VAL_ 994 VCLEFT_fogTrailerLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_frontRideHeight 128 "SNA" ; +VAL_ 994 VCLEFT_leftTurnTrailerLightStatu 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_rearRideHeight 128 "SNA" ; +VAL_ 994 VCLEFT_reverseTrailerLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_rightTrnTrailerLightStatu 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_tailLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_tailTrailerLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 994 VCLEFT_trailerDetected 2 "TRAILER_LIGHT_DETECTION_DETECTED" 1 "TRAILER_LIGHT_DETECTION_FAULT" 3 "TRAILER_LIGHT_DETECTION_NOT_DETECTED" 0 "TRAILER_LIGHT_DETECTION_SNA" ; +VAL_ 994 VCLEFT_turnSignalStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1001 DAS_hazardLightRequest 0 "DAS_REQUEST_HAZARDS_OFF" 1 "DAS_REQUEST_HAZARDS_ON" 3 "DAS_REQUEST_HAZARDS_SNA" 2 "DAS_REQUEST_HAZARDS_UNUSED" ; +VAL_ 1001 DAS_headlightRequest 3 "DAS_HEADLIGHT_REQUEST_INVALID" 0 "DAS_HEADLIGHT_REQUEST_OFF" 1 "DAS_HEADLIGHT_REQUEST_ON" ; +VAL_ 1001 DAS_heaterRequest 1 "DAS_HEATER_OFF" 2 "DAS_HEATER_ON" 0 "DAS_HEATER_SNA" ; +VAL_ 1001 DAS_highLowBeamDecision 1 "DAS_HIGH_BEAM_OFF" 2 "DAS_HIGH_BEAM_ON" 3 "DAS_HIGH_BEAM_SNA" 0 "DAS_HIGH_BEAM_UNDECIDED" ; +VAL_ 1001 DAS_highLowBeamOffReason 3 "HIGH_BEAM_OFF_REASON_AMBIENT_LIGHT" 4 "HIGH_BEAM_OFF_REASON_HEAD_LIGHT" 2 "HIGH_BEAM_OFF_REASON_MOVING_RADAR_TARGET" 1 "HIGH_BEAM_OFF_REASON_MOVING_VISION_TARGET" 5 "HIGH_BEAM_OFF_REASON_SNA" 0 "HIGH_BEAM_ON" ; +VAL_ 1001 DAS_turnIndicatorRequest 3 "DAS_TURN_INDICATOR_CANCEL" 4 "DAS_TURN_INDICATOR_DEFER" 1 "DAS_TURN_INDICATOR_LEFT" 0 "DAS_TURN_INDICATOR_NONE" 2 "DAS_TURN_INDICATOR_RIGHT" ; +VAL_ 1001 DAS_turnIndicatorRequestReason 8 "DAS_ACTIVE_COMMANDED_LANE_CHANGE" 3 "DAS_ACTIVE_FORK" 9 "DAS_ACTIVE_INTERSECTION" 6 "DAS_ACTIVE_MERGE" 1 "DAS_ACTIVE_NAV_LANE_CHANGE" 2 "DAS_ACTIVE_SPEED_LANE_CHANGE" 11 "DAS_ACTIVE_SUMMMON" 5 "DAS_CANCEL_FORK" 10 "DAS_CANCEL_INTERSECTION" 4 "DAS_CANCEL_LANE_CHANGE" 7 "DAS_CANCEL_MERGE" 12 "DAS_CANCEL_SUMMMON" 0 "DAS_NONE" ; +VAL_ 1001 DAS_wiperSpeed 1 "DAS_WIPER_SPEED_1" 10 "DAS_WIPER_SPEED_10" 11 "DAS_WIPER_SPEED_11" 12 "DAS_WIPER_SPEED_12" 13 "DAS_WIPER_SPEED_13" 14 "DAS_WIPER_SPEED_14" 2 "DAS_WIPER_SPEED_2" 3 "DAS_WIPER_SPEED_3" 4 "DAS_WIPER_SPEED_4" 5 "DAS_WIPER_SPEED_5" 6 "DAS_WIPER_SPEED_6" 7 "DAS_WIPER_SPEED_7" 8 "DAS_WIPER_SPEED_8" 9 "DAS_WIPER_SPEED_9" 15 "DAS_WIPER_SPEED_INVALID" 0 "DAS_WIPER_SPEED_OFF" ; +VAL_ 1001 DAS_mirrorFoldRequest 0 "NONE" 1 "FOLD" 2 "UNFOLD" 3 "SNA" ; +VAL_ 1011 UI_odometer 16777215 "SNA" ; +VAL_ 1013 VCFRONT_DRLLeftStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_DRLRightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_ambientLightingBrightnes 255 "SNA" ; +VAL_ 1013 VCFRONT_fogLeftStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_fogRightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_hazardLightRequest 1 "HAZARD_REQUEST_BUTTON" 6 "HAZARD_REQUEST_CAR_ALARM" 5 "HAZARD_REQUEST_CRASH" 7 "HAZARD_REQUEST_DAS" 2 "HAZARD_REQUEST_LOCK" 4 "HAZARD_REQUEST_MISLOCK" 0 "HAZARD_REQUEST_NONE" 8 "HAZARD_REQUEST_UDS" 3 "HAZARD_REQUEST_UNLOCK" ; +VAL_ 1013 VCFRONT_highBeamLeftStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_highBeamRightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_indicatorLeftRequest 2 "TURN_SIGNAL_ACTIVE_HIGH" 1 "TURN_SIGNAL_ACTIVE_LOW" 0 "TURN_SIGNAL_OFF" ; +VAL_ 1013 VCFRONT_indicatorRightRequest 2 "TURN_SIGNAL_ACTIVE_HIGH" 1 "TURN_SIGNAL_ACTIVE_LOW" 0 "TURN_SIGNAL_OFF" ; +VAL_ 1013 VCFRONT_lowBeamLeftStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_lowBeamRightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_parkLeftStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_parkRightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_sideMarkersStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_sideRepeaterLeftStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_sideRepeaterRightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_simLatchingStalk 0 "SIMULATED_LATCHING_STALK_IDLE" 1 "SIMULATED_LATCHING_STALK_LEFT" 2 "SIMULATED_LATCHING_STALK_RIGHT" 3 "SIMULATED_LATCHING_STALK_SNA" ; +VAL_ 1013 VCFRONT_switchLightingBrightness 255 "SNA" ; +VAL_ 1013 VCFRONT_turnSignalLeftStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1013 VCFRONT_turnSignalRightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1016 UI_accFollowDistanceSetting 0 "DISTANCE_SETTING_1" 1 "DISTANCE_SETTING_2" 2 "DISTANCE_SETTING_3" 3 "DISTANCE_SETTING_4" 4 "DISTANCE_SETTING_5" 5 "DISTANCE_SETTING_6" 6 "DISTANCE_SETTING_7" 7 "DISTANCE_SETTING_SNA" ; +VAL_ 1016 UI_autopilotControlRequest 0 "LEGACY_LAT_CTRL" 1 "NEXT_GEN_CTRL" ; +VAL_ 1016 UI_curvSpeedAdaptDisable 1 "CSA_OFF" 0 "CSA_ON" ; +VAL_ 1016 UI_curvatureDatabaseOnly 0 "OFF" 1 "ON" ; +VAL_ 1016 UI_driveOnMapsEnable 0 "DOM_OFF" 1 "DOM_ON" ; +VAL_ 1016 UI_drivingSide 0 "DRIVING_SIDE_LEFT" 1 "DRIVING_SIDE_RIGHT" 2 "DRIVING_SIDE_UNKNOWN" ; +VAL_ 1016 UI_exceptionListEnable 0 "EXCEPTION_LIST_OFF" 1 "EXCEPTION_LIST_ON" ; +VAL_ 1016 UI_followNavRouteEnable 0 "NAV_ROUTE_OFF" 1 "NAV_ROUTE_ON" ; +VAL_ 1016 UI_fuseHPPDisable 1 "FUSE_HPP_OFF" 0 "FUSE_HPP_ON" ; +VAL_ 1016 UI_fuseLanesDisable 1 "FUSE_LANES_OFF" 0 "FUSE_LANES_ON" ; +VAL_ 1016 UI_fuseVehiclesDisable 1 "FUSE_VEH_OFF" 0 "FUSE_VEH_ON" ; +VAL_ 1016 UI_handsOnRequirementDisable 1 "HANDS_ON_REQ_OFF" 0 "HANDS_ON_REQ_ON" ; +VAL_ 1016 UI_lssElkEnabled 0 "ELK_OFF" 1 "ELK_ON" ; +VAL_ 1016 UI_lssLdwEnabled 0 "LDW_OFF" 1 "LDW_ON" ; +VAL_ 1016 UI_lssLkaEnabled 0 "LKA_OFF" 1 "LKA_ON" ; +VAL_ 1016 UI_roadCheckDisable 1 "RC_OFF" 0 "RC_ON" ; +VAL_ 1016 UI_selfParkRequest 3 "ABORT" 9 "AUTO_SUMMON_CANCEL" 7 "AUTO_SUMMON_FORWARD" 10 "AUTO_SUMMON_PRIMED" 8 "AUTO_SUMMON_REVERSE" 0 "NONE" 5 "PAUSE" 4 "PRIME" 6 "RESUME" 1 "SELF_PARK_FORWARD" 2 "SELF_PARK_REVERSE" 11 "SMART_SUMMON" 12 "SMART_SUMMON_NO_OP" 15 "SNA" ; +VAL_ 1016 UI_smartSummonType 1 "FIND_ME" 0 "PIN_DROP" 2 "SMART_AUTOPARK" ; +VAL_ 1016 UI_source3D 2 "XYZ_PREDICTION" 0 "Z_FROM_MAP" 1 "Z_FROM_PATH_PREDICTION" ; +VAL_ 1016 UI_summonEntryType 3 "SNA" 0 "STRAIGHT" 2 "TURN_LEFT" 1 "TURN_RIGHT" ; +VAL_ 1016 UI_summonExitType 3 "SNA" 0 "STRAIGHT" 2 "TURN_LEFT" 1 "TURN_RIGHT" ; +VAL_ 1016 UI_summonReverseDist 63 "SNA" ; +VAL_ 1016 UI_ulcBlindSpotConfig 1 "AGGRESSIVE" 2 "MAD_MAX" 0 "STANDARD" ; +VAL_ 1016 UI_ulcSpeedConfig 2 "SPEED_BASED_ULC_AVERAGE" 0 "SPEED_BASED_ULC_DISABLED" 3 "SPEED_BASED_ULC_MAD_MAX" 1 "SPEED_BASED_ULC_MILD" ; +VAL_ 1016 UI_visionSpeedType 0 "VISION_SPEED_DISABLED" 1 "VISION_SPEED_ONE_SECOND" 3 "VISION_SPEED_OPTIMIZED" 2 "VISION_SPEED_TWO_SECOND" ; +VAL_ 1021 UI_autopilotControlIndex 0 "AUTOPILOT_CONTROL_0" 1 "AUTOPILOT_CONTROL_1" 2 "AUTOPILOT_CONTROL_2" 3 "AUTOPILOT_CONTROL_3" 4 "AUTOPILOT_CONTROL_4" 5 "AUTOPILOT_CONTROL_5" 6 "AUTOPILOT_CONTROL_6" 7 "AUTOPILOT_CONTROL_7" ; +VAL_ 1021 UI_apmv3Branch 5 "DEMO" 2 "DEV" 4 "EAP" 0 "LIVE" 1 "STAGE" 3 "STAGE2" ; +VAL_ 1021 UI_blindspotDistance 1 "BLINDSPOT_DISTANCE_0P5_M" 2 "BLINDSPOT_DISTANCE_1_M" 3 "BLINDSPOT_DISTANCE_2_M" 4 "BLINDSPOT_DISTANCE_4_M" 0 "BLINDSPOT_DISTANCE_DEFAULT" 5 "BLINDSPOT_DISTANCE_OFF" ; +VAL_ 1021 UI_blindspotMinSpeed 2 "BLINDSPOT_MIN_SPEED_10_KPH" 3 "BLINDSPOT_MIN_SPEED_15_KPH" 4 "BLINDSPOT_MIN_SPEED_20_KPH" 5 "BLINDSPOT_MIN_SPEED_25_KPH" 6 "BLINDSPOT_MIN_SPEED_30_KPH" 7 "BLINDSPOT_MIN_SPEED_35_KPH" 8 "BLINDSPOT_MIN_SPEED_40_KPH" 9 "BLINDSPOT_MIN_SPEED_45_KPH" 1 "BLINDSPOT_MIN_SPEED_5_KPH" 0 "BLINDSPOT_MIN_SPEED_DEFAULT" 10 "BLINDSPOT_MIN_SPEED_OFF" ; +VAL_ 1021 UI_blindspotTTC 1 "BLINDSPOT_TTC_0P5_S" 2 "BLINDSPOT_TTC_1_S" 3 "BLINDSPOT_TTC_2_S" 5 "BLINDSPOT_TTC_3_S" 4 "BLINDSPOT_TTC_4_S" 6 "BLINDSPOT_TTC_5_S" 0 "BLINDSPOT_TTC_DEFAULT" 7 "BLINDSPOT_TTC_OFF" ; +VAL_ 1021 UI_donAlcProgGoreAbortThres 1 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P00" 2 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P05" 3 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P10" 4 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P15" 5 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P20" 6 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P25" 7 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P30" 8 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P35" 9 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P40" 0 "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_DEFAULT" ; +VAL_ 1021 UI_donDisableAutoWiperDuration 5 "DON_DISABLE_AUTO_WIPER_DURATION_120_S" 2 "DON_DISABLE_AUTO_WIPER_DURATION_15_S" 3 "DON_DISABLE_AUTO_WIPER_DURATION_30_S" 1 "DON_DISABLE_AUTO_WIPER_DURATION_5_S" 4 "DON_DISABLE_AUTO_WIPER_DURATION_60_S" 0 "DON_DISABLE_AUTO_WIPER_DURATION_DEFAULT" 6 "DON_DISABLE_AUTO_WIPER_DURATION_OFF" ; +VAL_ 1021 UI_donDisableCutin 0 "DON_DISABLE_CUTIN_OFF" 1 "DON_DISABLE_CUTIN_ON" ; +VAL_ 1021 UI_donDisableOnAutoWiperSpeed 1 "DAS_WIPER_SPEED_1" 10 "DAS_WIPER_SPEED_10" 11 "DAS_WIPER_SPEED_11" 12 "DAS_WIPER_SPEED_12" 13 "DAS_WIPER_SPEED_13" 14 "DAS_WIPER_SPEED_14" 2 "DAS_WIPER_SPEED_2" 3 "DAS_WIPER_SPEED_3" 4 "DAS_WIPER_SPEED_4" 5 "DAS_WIPER_SPEED_5" 6 "DAS_WIPER_SPEED_6" 7 "DAS_WIPER_SPEED_7" 8 "DAS_WIPER_SPEED_8" 9 "DAS_WIPER_SPEED_9" 15 "DAS_WIPER_SPEED_INVALID" 0 "DAS_WIPER_SPEED_OFF" ; +VAL_ 1021 UI_donMinGoreWidthForAbortMap 2 "DON_MIN_GORE_WIDTH_FOR_ABORT_0P5_M" 1 "DON_MIN_GORE_WIDTH_FOR_ABORT_0_M" 4 "DON_MIN_GORE_WIDTH_FOR_ABORT_1P5_M" 3 "DON_MIN_GORE_WIDTH_FOR_ABORT_1_M" 6 "DON_MIN_GORE_WIDTH_FOR_ABORT_2P5_M" 5 "DON_MIN_GORE_WIDTH_FOR_ABORT_2_M" 8 "DON_MIN_GORE_WIDTH_FOR_ABORT_3P5_M" 7 "DON_MIN_GORE_WIDTH_FOR_ABORT_3_M" 10 "DON_MIN_GORE_WIDTH_FOR_ABORT_4P5_M" 9 "DON_MIN_GORE_WIDTH_FOR_ABORT_4_M" 11 "DON_MIN_GORE_WIDTH_FOR_ABORT_5_M" 0 "DON_MIN_GORE_WIDTH_FOR_ABORT_DEFAULT" ; +VAL_ 1021 UI_donMinGoreWidthForAbortNotMap 2 "DON_MIN_GORE_WIDTH_FOR_ABORT_0P5_M" 1 "DON_MIN_GORE_WIDTH_FOR_ABORT_0_M" 4 "DON_MIN_GORE_WIDTH_FOR_ABORT_1P5_M" 3 "DON_MIN_GORE_WIDTH_FOR_ABORT_1_M" 6 "DON_MIN_GORE_WIDTH_FOR_ABORT_2P5_M" 5 "DON_MIN_GORE_WIDTH_FOR_ABORT_2_M" 8 "DON_MIN_GORE_WIDTH_FOR_ABORT_3P5_M" 7 "DON_MIN_GORE_WIDTH_FOR_ABORT_3_M" 10 "DON_MIN_GORE_WIDTH_FOR_ABORT_4P5_M" 9 "DON_MIN_GORE_WIDTH_FOR_ABORT_4_M" 11 "DON_MIN_GORE_WIDTH_FOR_ABORT_5_M" 0 "DON_MIN_GORE_WIDTH_FOR_ABORT_DEFAULT" ; +VAL_ 1021 UI_donStopEndOfRampBuffer 1 "DON_STOP_END_OF_RAMP_BUFFER_15_M" 2 "DON_STOP_END_OF_RAMP_BUFFER_30_M" 3 "DON_STOP_END_OF_RAMP_BUFFER_45_M" 0 "DON_STOP_END_OF_RAMP_BUFFER_DEFAULT" 4 "DON_STOP_END_OF_RAMP_BUFFER_OFF" ; +VAL_ 1021 UI_homelinkNearby 1 "HOMELINK_NEARBY" 0 "HOMELINK_NOT_NEARBY" ; +VAL_ 1021 UI_hovEnabled 0 "HOV_OFF" 1 "HOV_ON" ; +VAL_ 615 DI_massConfidence 1 "MASS_CONFIDED" 0 "MASS_NOT_CONFIDED" ; +VAL_ 615 DI_relativeTireTreadDepth 32 "SNA" ; +VAL_ 615 DI_tireFitment 3 "FITMENT_SNA" 0 "FITMENT_SQUARE" 1 "FITMENT_STAGGERED" ; +VAL_ 615 DI_trailerDetected 1 "TRAILER_DETECTED" 0 "TRAILER_NOT_DETECTED" ; +VAL_ 642 VCLEFT_blowerIndex 0 "HVAC_FEEDBACK_SIGNALS" 1 "HVAC_VARS" ; +VAL_ 642 VCLEFT_hvacBlowerCBCCtrlState 4 "COUNT" 0 "ERROR" 1 "IDLE" 2 "OFFLINE" 3 "ONLINE" ; +VAL_ 642 VCLEFT_hvacBlowerCBCEstState 14 "COUNT" 0 "ERROR" 1 "IDLE" 5 "IDRATED" 10 "INDUCTANCE_EST" 9 "LOCKROTOR" 12 "MOTOR_IDENTIFIED" 13 "ONLINE" 8 "RAMPDOWN" 4 "RAMPUP" 7 "RATEDFLUX" 6 "RATEDFLUX_OL" 11 "ROTOR_RESISTANCE" 2 "ROVERL" 3 "RS" ; +VAL_ 642 VCLEFT_hvacBlowerFETTemp 127 "SNA" ; +VAL_ 642 VCLEFT_hvacBlowerIPhase0 255 "SNA" ; +VAL_ 642 VCLEFT_hvacBlowerIPhase1 255 "SNA" ; +VAL_ 642 VCLEFT_hvacBlowerIPhase2 255 "SNA" ; +VAL_ 642 VCLEFT_hvacBlowerITerm 127 "SNA" ; +VAL_ 642 VCLEFT_hvacBlowerOutputDuty 127 "SNA" ; +VAL_ 642 VCLEFT_hvacBlowerRPMTarget 1023 "SNA" ; +VAL_ 642 VCLEFT_hvacBlowerRs 255 "SNA" ; +VAL_ 642 VCLEFT_hvacBlowerTorque 1023 "SNA" ; +VAL_ 642 VCLEFT_hvacBlower_IO_CBC_Status 0 "IDLE" 1 "RX" ; +VAL_ 755 UI_hvacReqACDisable 0 "AUTO" 1 "OFF" 2 "ON" ; +VAL_ 755 UI_hvacReqAirDistributionMode 0 "AUTO" 4 "MANUAL_DEFROST" 5 "MANUAL_DEFROST_FLOOR" 6 "MANUAL_DEFROST_PANEL" 7 "MANUAL_DEFROST_PANEL_FLOOR" 1 "MANUAL_FLOOR" 2 "MANUAL_PANEL" 3 "MANUAL_PANEL_FLOOR" ; +VAL_ 755 UI_hvacReqBlowerSegment 1 "1" 10 "10" 2 "2" 3 "3" 4 "4" 5 "5" 6 "6" 7 "7" 8 "8" 9 "9" 11 "AUTO" 0 "OFF" ; +VAL_ 755 UI_hvacReqKeepClimateOn 2 "KEEP_CLIMATE_ON_REQ_DOG" 0 "KEEP_CLIMATE_ON_REQ_OFF" 1 "KEEP_CLIMATE_ON_REQ_ON" 3 "KEEP_CLIMATE_ON_REQ_PARTY" ; +VAL_ 755 UI_hvacReqManualDefogState 1 "DEFOG" 2 "DEFROST" 0 "NONE" ; +VAL_ 755 UI_hvacReqRecirc 0 "AUTO" 2 "FRESH" 1 "RECIRC" ; +VAL_ 755 UI_hvacReqSecondRowState 0 "AUTO" 4 "HIGH" 2 "LOW" 3 "MED" 1 "OFF" ; +VAL_ 755 UI_hvacReqTempSetpointLeft 26 "HI" 0 "LO" ; +VAL_ 755 UI_hvacReqTempSetpointRight 26 "HI" 0 "LO" ; +VAL_ 755 UI_hvacReqUserPowerState 0 "OFF" 1 "ON" 4 "OVERHEAT_PROTECT" 3 "OVERHEAT_PROTECT_FANONLY" 2 "PRECONDITION" ; +VAL_ 787 UI_trackCmpOverclock 0 "TRACK_MODE_CMP_OVERCLOCK_OFF" 1 "TRACK_MODE_CMP_OVERCLOCK_ON" ; +VAL_ 787 UI_trackModeRequest 0 "TRACK_MODE_REQUEST_IDLE" 2 "TRACK_MODE_REQUEST_OFF" 1 "TRACK_MODE_REQUEST_ON" ; +VAL_ 787 UI_trackPostCooling 0 "TRACK_MODE_POST_COOLING_OFF" 1 "TRACK_MODE_POST_COOLING_ON" ; +VAL_ 821 DIR_infoIndex 13 "DI_INFO_APP_CRC" 17 "DI_INFO_APP_GITHASH" 15 "DI_INFO_BOOTLOADER_CRC" 18 "DI_INFO_BOOTLOADER_GITHASH" 14 "DI_INFO_BOOTLOADER_SVN" 10 "DI_INFO_BUILD_HWID_COMPONENTID" 0 "DI_INFO_DEPRECATED_0" 1 "DI_INFO_DEPRECATED_1" 2 "DI_INFO_DEPRECATED_2" 3 "DI_INFO_DEPRECATED_3" 4 "DI_INFO_DEPRECATED_4" 5 "DI_INFO_DEPRECATED_5" 6 "DI_INFO_DEPRECATED_6" 7 "DI_INFO_DEPRECATED_7" 8 "DI_INFO_DEPRECATED_8" 9 "DI_INFO_DEPRECATED_9" 255 "DI_INFO_END" 11 "DI_INFO_PCBAID_ASSYID_USAGEID" 16 "DI_INFO_SUBCOMPONENT" 23 "DI_INFO_SUBCOMPONENT2" 31 "DI_INFO_SUBCOMPONENT_GITHASH" 20 "DI_INFO_UDS_PROTOCOL_BOOTCRC" 19 "DI_INFO_VERSION_DEPRECATED" ; +VAL_ 821 DIR_FPGA_version 254 "FPGA_VERSION_LOCAL_BUILD" 255 "FPGA_VERSION_SNA" ; +VAL_ 821 DIR_buildType 2 "INFO_LOCAL_BUILD" 4 "INFO_MFG_BUILD" 1 "INFO_PLATFORM_BUILD" 3 "INFO_TRACEABLE_CI_BUILD" 0 "INFO_UNKNOWN_BUILD" ; +VAL_ 821 DIR_hardwareId 252 "CONFIGURABLE_HWID_PLACEHOLDER" ; +VAL_ 821 DIR_oilPumpBuildType 2 "INFO_LOCAL_BUILD" 4 "INFO_MFG_BUILD" 1 "INFO_PLATFORM_BUILD" 3 "INFO_TRACEABLE_CI_BUILD" 0 "INFO_UNKNOWN_BUILD" ; +VAL_ 899 VCRIGHT_estimatedThsSolarLoad 1023 "SNA" ; +VAL_ 899 VCRIGHT_estimatedVehicleSituatio 1 "VEHICLE_SITUATION_INDOOR" 2 "VEHICLE_SITUATION_OUTDOOR" 0 "VEHICLE_SITUATION_UNKNOWN" ; +VAL_ 899 VCRIGHT_thsHumidity 255 "SNA" ; +VAL_ 899 VCRIGHT_thsSolarLoadInfrared 1023 "SNA" ; +VAL_ 899 VCRIGHT_thsSolarLoadVisible 1023 "SNA" ; +VAL_ 899 VCRIGHT_thsTemperature 128 "SNA" ; +VAL_ 947 UI_autopilotPowerStateRequest 0 "AUTOPILOT_NOMINAL" 1 "AUTOPILOT_SENTRY" 2 "AUTOPILOT_SUSPEND" ; +VAL_ 947 UI_lightSwitch 0 "LIGHT_SWITCH_AUTO" 3 "LIGHT_SWITCH_OFF" 1 "LIGHT_SWITCH_ON" 2 "LIGHT_SWITCH_PARKING" 4 "LIGHT_SWITCH_SNA" ; +VAL_ 947 UI_shorted12VCellTestMode 2 "SHORTED_CELL_TEST_MODE_ACTIVE" 0 "SHORTED_CELL_TEST_MODE_DISABLED" 1 "SHORTED_CELL_TEST_MODE_SHADOW" ; +VAL_ 947 UI_summonState 3 "ACTIVE" 1 "IDLE" 2 "PRE_PRIMED" 0 "SNA" ; +VAL_ 947 UI_windowRequest 3 "WINDOW_REQUEST_GOTO_CLOSED" 4 "WINDOW_REQUEST_GOTO_OPEN" 1 "WINDOW_REQUEST_GOTO_PERCENT" 2 "WINDOW_REQUEST_GOTO_VENT" 0 "WINDOW_REQUEST_IDLE" ; +VAL_ 963 VCRIGHT_frontBuckleSwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontOccupancySwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatBackrestBack 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatBackrestForward 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatLiftDown 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatLiftUp 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatLumbarDown 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatLumbarIn 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatLumbarOut 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatLumbarUp 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatTiltDown 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatTiltUp 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatTrackBack 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_frontSeatTrackForward 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_rearCenterBuckleSwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 963 VCRIGHT_rearRightBuckleSwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 995 VCRIGHT_brakeLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 995 VCRIGHT_interiorTrunkLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 995 VCRIGHT_rearFogLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 995 VCRIGHT_reverseLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 995 VCRIGHT_tailLightStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 995 VCRIGHT_turnSignalStatus 2 "LIGHT_FAULT" 0 "LIGHT_OFF" 1 "LIGHT_ON" 3 "LIGHT_SNA" ; +VAL_ 1622 DIF_infoIndex 13 "DI_INFO_APP_CRC" 17 "DI_INFO_APP_GITHASH" 15 "DI_INFO_BOOTLOADER_CRC" 18 "DI_INFO_BOOTLOADER_GITHASH" 14 "DI_INFO_BOOTLOADER_SVN" 10 "DI_INFO_BUILD_HWID_COMPONENTID" 0 "DI_INFO_DEPRECATED_0" 1 "DI_INFO_DEPRECATED_1" 2 "DI_INFO_DEPRECATED_2" 3 "DI_INFO_DEPRECATED_3" 4 "DI_INFO_DEPRECATED_4" 5 "DI_INFO_DEPRECATED_5" 6 "DI_INFO_DEPRECATED_6" 7 "DI_INFO_DEPRECATED_7" 8 "DI_INFO_DEPRECATED_8" 9 "DI_INFO_DEPRECATED_9" 255 "DI_INFO_END" 11 "DI_INFO_PCBAID_ASSYID_USAGEID" 16 "DI_INFO_SUBCOMPONENT" 23 "DI_INFO_SUBCOMPONENT2" 31 "DI_INFO_SUBCOMPONENT_GITHASH" 20 "DI_INFO_UDS_PROTOCOL_BOOTCRC" 19 "DI_INFO_VERSION_DEPRECATED" ; +VAL_ 1622 DIF_FPGA_version 254 "FPGA_VERSION_LOCAL_BUILD" 255 "FPGA_VERSION_SNA" ; +VAL_ 1622 DIF_buildType 2 "INFO_LOCAL_BUILD" 4 "INFO_MFG_BUILD" 1 "INFO_PLATFORM_BUILD" 3 "INFO_TRACEABLE_CI_BUILD" 0 "INFO_UNKNOWN_BUILD" ; +VAL_ 1622 DIF_hardwareId 252 "CONFIGURABLE_HWID_PLACEHOLDER" ; +VAL_ 1622 DIF_oilPumpBuildType 2 "INFO_LOCAL_BUILD" 4 "INFO_MFG_BUILD" 1 "INFO_PLATFORM_BUILD" 3 "INFO_TRACEABLE_CI_BUILD" 0 "INFO_UNKNOWN_BUILD" ; +VAL_ 768 BMS_infoIndex 13 "INFO_APP_CRC" 17 "INFO_APP_GITHASH" 15 "INFO_BOOTLOADER_CRC" 18 "INFO_BOOTLOADER_GITHASH" 14 "INFO_BOOTLOADER_SVN" 10 "INFO_BUILD_HWID_COMPONENTID" 0 "INFO_DEPRECATED_0" 1 "INFO_DEPRECATED_1" 2 "INFO_DEPRECATED_2" 3 "INFO_DEPRECATED_3" 4 "INFO_DEPRECATED_4" 5 "INFO_DEPRECATED_5" 6 "INFO_DEPRECATED_6" 7 "INFO_DEPRECATED_7" 8 "INFO_DEPRECATED_8" 9 "INFO_DEPRECATED_9" 255 "INFO_END" 27 "INFO_PACKAGE_PN_15_20" 25 "INFO_PACKAGE_PN_1_7" 26 "INFO_PACKAGE_PN_8_14" 29 "INFO_PACKAGE_SN_1_7" 30 "INFO_PACKAGE_SN_8_14" 11 "INFO_PCBAID_ASSYID_USAGEID" 16 "INFO_SUBCOMPONENT" 31 "INFO_SUBCOMPONENT_GITHASH" 20 "INFO_UDS_PROTOCOL_BOOTCRC" 22 "INFO_VARIANTCRC" 19 "INFO_VERSION_DEPRECATED" ; +VAL_ 768 BMS_buildType 2 "INFO_LOCAL_BUILD" 4 "INFO_MFG_BUILD" 1 "INFO_PLATFORM_BUILD" 3 "INFO_TRACEABLE_CI_BUILD" 0 "INFO_UNKNOWN_BUILD" ; +VAL_ 530 BMS_chgPowerAvailable 2047 "SNA" ; +VAL_ 530 BMS_contactorState 6 "BMS_CTRSET_BLOCKED" 4 "BMS_CTRSET_CLOSED" 3 "BMS_CTRSET_CLOSING" 1 "BMS_CTRSET_OPEN" 2 "BMS_CTRSET_OPENING" 0 "BMS_CTRSET_SNA" 5 "BMS_CTRSET_WELDED" ; +VAL_ 530 BMS_diLimpRequest 0 "LIMP_REQUEST_NONE" 1 "LIMP_REQUEST_WELDED" ; +VAL_ 530 BMS_ecuLogUploadRequest 1 "REQUEST_PRIORITY_1" 2 "REQUEST_PRIORITY_2" 3 "REQUEST_PRIORITY_3" 0 "REQUEST_PRIORITY_NONE" ; +VAL_ 530 BMS_hvState 1 "HV_COMING_UP" 0 "HV_DOWN" 2 "HV_GOING_DOWN" 6 "HV_UP" 4 "HV_UP_FOR_CHARGE" 5 "HV_UP_FOR_DC_CHARGE" 3 "HV_UP_FOR_DRIVE" ; +VAL_ 530 BMS_isolationResistance 1023 "SNA" ; +VAL_ 530 BMS_smStateRequest 3 "BMS_CHARGE" 5 "BMS_CLEAR_FAULT" 10 "BMS_DIAG" 1 "BMS_DRIVE" 6 "BMS_FAULT" 4 "BMS_FEIM" 9 "BMS_SNA" 0 "BMS_STANDBY" 2 "BMS_SUPPORT" 8 "BMS_TEST" 7 "BMS_WELD" ; +VAL_ 530 BMS_state 3 "BMS_CHARGE" 5 "BMS_CLEAR_FAULT" 10 "BMS_DIAG" 1 "BMS_DRIVE" 6 "BMS_FAULT" 4 "BMS_FEIM" 9 "BMS_SNA" 0 "BMS_STANDBY" 2 "BMS_SUPPORT" 8 "BMS_TEST" 7 "BMS_WELD" ; +VAL_ 530 BMS_uiChargeStatus 2 "BMS_ABOUT_TO_CHARGE" 4 "BMS_CHARGE_COMPLETE" 5 "BMS_CHARGE_STOPPED" 3 "BMS_CHARGING" 0 "BMS_DISCONNECTED" 1 "BMS_NO_POWER" ; +VAL_ 796 CC_currentLimit 255 "SNA" ; +VAL_ 796 CC_gridGrounding 1 "CC_GRID_GROUNDING_IT_SplitPhase" 2 "CC_GRID_GROUNDING_SNA" 0 "CC_GRID_GROUNDING_TN_TT" ; +VAL_ 796 CC_line1Voltage 511 "SNA" ; +VAL_ 796 CC_line2Voltage 511 "SNA" ; +VAL_ 796 CC_line3Voltage 511 "SNA" ; +VAL_ 796 CC_numPhases 0 "SNA" ; +VAL_ 796 CC_pilotState 2 "CC_PILOT_STATE_FAULTED" 1 "CC_PILOT_STATE_IDLE" 0 "CC_PILOT_STATE_READY" 3 "CC_PILOT_STATE_SNA" ; +VAL_ 573 CP_chargeShutdownRequest 2 "EMERGENCY_SHUTDOWN_REQUESTED" 1 "GRACEFUL_SHUTDOWN_REQUESTED" 0 "NO_SHUTDOWN_REQUESTED" ; +VAL_ 573 CP_hvChargeStatus 1 "CP_CHARGE_CONNECTED" 5 "CP_CHARGE_ENABLED" 6 "CP_CHARGE_FAULTED" 0 "CP_CHARGE_INACTIVE" 2 "CP_CHARGE_STANDBY" 4 "CP_EVSE_TEST_PASSED" 3 "CP_EXT_EVSE_TEST_ACTIVE" ; +VAL_ 317 CP_chargeShutdownRequest 2 "EMERGENCY_SHUTDOWN_REQUESTED" 1 "GRACEFUL_SHUTDOWN_REQUESTED" 0 "NO_SHUTDOWN_REQUESTED" ; +VAL_ 317 CP_evseChargeType 2 "AC_CHARGER_PRESENT" 1 "DC_CHARGER_PRESENT" 0 "NO_CHARGER_PRESENT" ; +VAL_ 317 CP_hvChargeStatus 1 "CP_CHARGE_CONNECTED" 5 "CP_CHARGE_ENABLED" 6 "CP_CHARGE_FAULTED" 0 "CP_CHARGE_INACTIVE" 2 "CP_CHARGE_STANDBY" 4 "CP_EVSE_TEST_PASSED" 3 "CP_EXT_EVSE_TEST_ACTIVE" ; +VAL_ 1085 CP_chargeShutdownRequest_log 2 "EMERGENCY_SHUTDOWN_REQUESTED" 1 "GRACEFUL_SHUTDOWN_REQUESTED" 0 "NO_SHUTDOWN_REQUESTED" ; +VAL_ 1085 CP_evseChargeType_log 2 "AC_CHARGER_PRESENT" 1 "DC_CHARGER_PRESENT" 0 "NO_CHARGER_PRESENT" ; +VAL_ 1085 CP_hvChargeStatus_log 1 "CP_CHARGE_CONNECTED" 5 "CP_CHARGE_ENABLED" 6 "CP_CHARGE_FAULTED" 0 "CP_CHARGE_INACTIVE" 2 "CP_CHARGE_STANDBY" 4 "CP_EVSE_TEST_PASSED" 3 "CP_EXT_EVSE_TEST_ACTIVE" ; +VAL_ 541 CP_acChargeState 1 "AC_CHARGE_CONNECTED_CHARGE_BLOCKED" 3 "AC_CHARGE_ENABLED" 6 "AC_CHARGE_FAULT" 0 "AC_CHARGE_INACTIVE" 4 "AC_CHARGE_ONBOARD_CHARGER_SHUTDOWN" 2 "AC_CHARGE_STANDBY" 5 "AC_CHARGE_VEH_SHUTDOWN" ; +VAL_ 541 CP_cableType 2 "CHG_CABLE_TYPE_GB_AC" 3 "CHG_CABLE_TYPE_GB_DC" 0 "CHG_CABLE_TYPE_IEC" 1 "CHG_CABLE_TYPE_SAE" 4 "CHG_CABLE_TYPE_SNA" ; +VAL_ 541 CP_evseChargeType_UI 2 "AC_CHARGER_PRESENT" 1 "DC_CHARGER_PRESENT" 0 "NO_CHARGER_PRESENT" ; +VAL_ 541 CP_gbState 10 "GBDC_CHARGE_DISABLING" 5 "GBDC_CHARGE_PARAM_CONFIG" 8 "GBDC_CHARGING" 2 "GBDC_COMMS_RECEIVED" 11 "GBDC_END_OF_CHARGE" 12 "GBDC_ERROR_HANDLING" 14 "GBDC_FAULTED" 3 "GBDC_HANDSHAKING_EXT_ISO" 0 "GBDC_INACTIVE" 7 "GBDC_READY_TO_CHARGE" 4 "GBDC_RECOGNITION" 13 "GBDC_RETRY_CHARGE" 9 "GBDC_STOP_CHARGE_REQUESTED" 15 "GBDC_TESTER_PRESENT" 6 "GBDC_VEH_PACK_PRECHARGE" 1 "GBDC_WAIT_FOR_COMMS" ; +VAL_ 541 CP_gbdcFailureReason 1 "GBDC_ATTEMPTS_EXPIRED" 3 "GBDC_CRITICAL_FAILURE" 0 "GBDC_FAILURE_NONE" 2 "GBDC_SHUTDOWN_FAILURE" ; +VAL_ 541 CP_gbdcStopChargeReason 3 "GBDC_COMMS_TIMEOUT" 5 "GBDC_EVSE_CRITICAL_FAULT" 4 "GBDC_EVSE_FAULT" 2 "GBDC_EVSE_REQUESTED" 6 "GBDC_LIVE_DISCONNECT" 0 "GBDC_STOP_REASON_NONE" 7 "GBDC_SUPERCHARGER_COMMS_TIMEOUT" 1 "GBDC_VEH_REQUESTED" ; +VAL_ 541 CP_iecComboState 6 "IEC_COMBO_CABLE_CHECK" 5 "IEC_COMBO_CHARGE_PARAM_DISCOVERY" 1 "IEC_COMBO_CONNECTED" 8 "IEC_COMBO_ENABLED" 10 "IEC_COMBO_END_OF_CHARGE" 11 "IEC_COMBO_FAULT" 0 "IEC_COMBO_INACTIVE" 4 "IEC_COMBO_PAYMENT_SELECTION" 7 "IEC_COMBO_PRECHARGE" 3 "IEC_COMBO_SERVICE_DISCOVERY" 9 "IEC_COMBO_SHUTDOWN" 2 "IEC_COMBO_V2G_SESSION_SETUP" 12 "IEC_COMBO_WAIT_RESTART" ; +VAL_ 541 CP_pilot 3 "CHG_PILOT_FAST_CHARGE" 1 "CHG_PILOT_FAULTED" 4 "CHG_PILOT_IDLE" 5 "CHG_PILOT_INVALID" 2 "CHG_PILOT_LINE_CHARGE" 0 "CHG_PILOT_NONE" 7 "CHG_PILOT_SNA" 6 "CHG_PILOT_UNUSED_6" ; +VAL_ 541 CP_proximity 1 "CHG_PROXIMITY_DISCONNECTED" 3 "CHG_PROXIMITY_LATCHED" 0 "CHG_PROXIMITY_SNA" 2 "CHG_PROXIMITY_UNLATCHED" ; +VAL_ 541 CP_teslaDcState 1 "TESLA_DC_CONNECTED_CHARGE_BLOCKED" 9 "TESLA_DC_EMERGENCY_SHUTDOWN" 6 "TESLA_DC_ENABLED" 7 "TESLA_DC_EVSE_SHUTDOWN" 5 "TESLA_DC_EXT_PRECHARGE_ACTIVE" 3 "TESLA_DC_EXT_TESTS_ENABLED" 4 "TESLA_DC_EXT_TEST_ACTIVE" 10 "TESLA_DC_FAULT" 0 "TESLA_DC_INACTIVE" 2 "TESLA_DC_STANDBY" 8 "TESLA_DC_VEH_SHUTDOWN" ; +VAL_ 541 CP_teslaSwcanState 1 "TESLA_SWCAN_ACCEPT" 3 "TESLA_SWCAN_ESTABLISHED" 4 "TESLA_SWCAN_FAULT" 5 "TESLA_SWCAN_GO_TO_SLEEP" 0 "TESLA_SWCAN_INACTIVE" 6 "TESLA_SWCAN_OFFBOARD_UPDATE_IN_PROGRESS" 2 "TESLA_SWCAN_RECEIVE" ; +VAL_ 1859 VCRIGHT_mirrorRecallStatus 2 "RECALL_COMPLETE" 3 "RECALL_INTERRUPTED" 1 "RECALL_IN_PROGRESS" 0 "RECALL_SNA" ; +VAL_ 1859 VCRIGHT_seatRecallStatus 2 "RECALL_COMPLETE" 3 "RECALL_INTERRUPTED" 1 "RECALL_IN_PROGRESS" 0 "RECALL_SNA" ; +VAL_ 1859 VCRIGHT_systemRecallStatus 2 "RECALL_COMPLETE" 3 "RECALL_INTERRUPTED" 1 "RECALL_IN_PROGRESS" 0 "RECALL_SNA" ; +VAL_ 1885 CP_sensorDataSelect 2 "CP_SENSOR_DOOR" 0 "CP_SENSOR_DOOR_COUNTS" 4 "CP_SENSOR_INDUCTIVE_DOOR" 12 "CP_SENSOR_INLET_HARNESS_ID" 3 "CP_SENSOR_LATCH" 9 "CP_SENSOR_PILOT" 10 "CP_SENSOR_PILOT2" 1 "CP_SENSOR_PIN_TEMP" 8 "CP_SENSOR_PROX" 11 "CP_SENSOR_PROX_GB" 7 "CP_SENSOR_RAILS" 5 "CP_SENSOR_SAFETY" 6 "CP_SENSOR_UHF" ; +VAL_ 1885 CP_inlet1HarnessIdState 1 "HARNESS_PEDIGREE_INVALID" 0 "HARNESS_PEDIGREE_UNKNOWN_SNA" 2 "HARNESS_PEDIGREE_VALID" ; +VAL_ 1885 CP_inlet2HarnessIdState 1 "HARNESS_PEDIGREE_INVALID" 0 "HARNESS_PEDIGREE_UNKNOWN_SNA" 2 "HARNESS_PEDIGREE_VALID" ; +VAL_ 819 UI_acChargeCurrentLimit 127 "SNA" ; +VAL_ 819 UI_brickBalancingDisabled 0 "FALSE" 1 "TRUE" ; +VAL_ 819 UI_brickVLoggingRequest 0 "FALSE" 1 "TRUE" ; +VAL_ 820 UI_limitMode 2 "LIMIT_FACTORY" 0 "LIMIT_NORMAL" 3 "LIMIT_SERVICE" 1 "LIMIT_VALET" ; +VAL_ 820 UI_motorOnMode 1 "MOTORONMODE_FRONT_ONLY" 0 "MOTORONMODE_NORMAL" 2 "MOTORONMODE_REAR_ONLY" ; +VAL_ 820 UI_pedalMap 0 "CHILL" 2 "PERFORMANCE" 1 "SPORT" ; +VAL_ 820 UI_speedLimit 255 "SNA" ; +VAL_ 820 UI_stoppingMode 1 "CREEP" 2 "HOLD" 0 "STANDARD" ; +VAL_ 820 UI_systemPowerLimit 31 "SNA" ; +VAL_ 820 UI_systemTorqueLimit 63 "SNA" ; +VAL_ 820 UI_wasteMode 2 "WASTE_TYPE_FULL" 0 "WASTE_TYPE_NONE" 1 "WASTE_TYPE_PARTIAL" ; +VAL_ 820 UI_wasteModeRegenLimit 3 "MAX_REGEN_CURRENT_0A" 2 "MAX_REGEN_CURRENT_10A" 1 "MAX_REGEN_CURRENT_30A" 0 "MAX_REGEN_CURRENT_MAX" ; +VAL_ 820 UI_closureConfirmed 1 "CONFIRMED_FRUNK" 0 "CONFIRMED_NONE" 2 "CONFIRMED_PROX" ; +VAL_ 577 VCFRONT_coolantAirPurgeBatState 1 "AIR_PURGE_STATE_ACTIVE" 2 "AIR_PURGE_STATE_COMPLETE" 0 "AIR_PURGE_STATE_INACTIVE" 3 "AIR_PURGE_STATE_INTERRUPTED" 4 "AIR_PURGE_STATE_PENDING" ; +VAL_ 577 VCFRONT_coolantFlowBatReason 4 "ACTIVE_MANAGER_BATT" 9 "ACTIVE_MANAGER_PT" 6 "BMS_FLOW_REQ" 1 "COOLANT_AIR_PURGE" 7 "DAS_FLOW_REQ" 13 "DIS_FLOW_REQ" 12 "DI_FLOW_REQ" 14 "HP_FLOW_REQ" 0 "NONE" 2 "NO_FLOW_REQ" 3 "OVERRIDE_BATT" 8 "OVERRIDE_PT" 5 "PASSIVE_MANAGER_BATT" 10 "PASSIVE_MANAGER_PT" 11 "PCS_FLOW_REQ" ; +VAL_ 577 VCFRONT_coolantFlowPTReason 4 "ACTIVE_MANAGER_BATT" 9 "ACTIVE_MANAGER_PT" 6 "BMS_FLOW_REQ" 1 "COOLANT_AIR_PURGE" 7 "DAS_FLOW_REQ" 13 "DIS_FLOW_REQ" 12 "DI_FLOW_REQ" 14 "HP_FLOW_REQ" 0 "NONE" 2 "NO_FLOW_REQ" 3 "OVERRIDE_BATT" 8 "OVERRIDE_PT" 5 "PASSIVE_MANAGER_BATT" 10 "PASSIVE_MANAGER_PT" 11 "PCS_FLOW_REQ" ; +VAL_ 577 VCFRONT_wasteHeatRequestType 2 "WASTE_TYPE_FULL" 0 "WASTE_TYPE_NONE" 1 "WASTE_TYPE_PARTIAL" ; +VAL_ 1493 DI_IGBTJunctTemp 255 "SNA" ; +VAL_ 1366 DIF_IGBTJunctTemp 255 "SNA" ; +VAL_ 2005 DIR_fluxState 5 "DI_FLUXSTATE_ENABLED" 9 "DI_FLUXSTATE_FAULT" 4 "DI_FLUXSTATE_FLUX_DOWN" 3 "DI_FLUXSTATE_FLUX_UP" 6 "DI_FLUXSTATE_ICONTROL" 2 "DI_FLUXSTATE_STANDBY" 0 "DI_FLUXSTATE_START" 10 "DI_FLUXSTATE_STATIONARY_WASTE" 1 "DI_FLUXSTATE_TEST" 7 "DI_FLUXSTATE_VCONTROL" ; +VAL_ 2005 DIR_gateDriveState 3 "PSTG_GD_STATE_CONFIGURED" 2 "PSTG_GD_STATE_CONFIGURING" 0 "PSTG_GD_STATE_INIT" 4 "PSTG_GD_STATE_NOT_CONFIGURED" 1 "PSTG_GD_STATE_SELFTEST" ; +VAL_ 2005 DIR_gateDriveSupplyState 0 "PSTG_GD_SUPPLY_DOWN" 3 "PSTG_GD_SUPPLY_FALLING" 1 "PSTG_GD_SUPPLY_RISING" 2 "PSTG_GD_SUPPLY_UP" ; +VAL_ 2005 DIR_magnetTempEst 0 "SNA" ; +VAL_ 2005 DIR_motorType 8 "DI_MOTOR_F1A" 10 "DI_MOTOR_F1AC" 11 "DI_MOTOR_F2AB" 12 "DI_MOTOR_F2AC" 13 "DI_MOTOR_F2AD" 14 "DI_MOTOR_F2AE" 26 "DI_MOTOR_F2AE_AL" 15 "DI_MOTOR_F2APMSRM" 17 "DI_MOTOR_IM100A" 19 "DI_MOTOR_IM100B" 22 "DI_MOTOR_IM130C" 24 "DI_MOTOR_IM130D" 25 "DI_MOTOR_IM130D_AL" 27 "DI_MOTOR_IM130D_AL_POSCO" 20 "DI_MOTOR_IM216A" 3 "DI_MOTOR_M7M3" 4 "DI_MOTOR_M7M4" 5 "DI_MOTOR_M7M5" 7 "DI_MOTOR_M7M6" 6 "DI_MOTOR_M8A" 16 "DI_MOTOR_PM216A" 18 "DI_MOTOR_PM216B" 21 "DI_MOTOR_PM216C" 30 "DI_MOTOR_PM216CSR" 31 "DI_MOTOR_PM216CSR_N42" 23 "DI_MOTOR_PM216D" 32 "DI_MOTOR_PM228B" 28 "DI_MOTOR_PM275B" 29 "DI_MOTOR_PM350B" 1 "DI_MOTOR_ROADSTER_BASE" 2 "DI_MOTOR_ROADSTER_SPORT" 0 "DI_MOTOR_SNA" 9 "DI_MOTOR_SSR1A" ; +VAL_ 2005 DIR_oilPumpPhaseVoltage 255 "SNA" ; +VAL_ 2005 DIR_oilPumpPressureEstimateMax 255 "SNA" ; +VAL_ 2005 DIR_oilPumpPressureExpectedMin 255 "SNA" ; +VAL_ 2005 DIR_powerStageSafeState 2 "PSTG_SAFESTATE_3PS_HIGH" 3 "PSTG_SAFESTATE_3PS_LOW" 1 "PSTG_SAFESTATE_ALL_OFF" 0 "PSTG_SAFESTATE_NONE" ; +VAL_ 2005 DIR_pwmState 1 "PWMSTATE_DPWM2" 2 "PWMSTATE_OPWM1" 3 "PWMSTATE_OPWM2" 0 "PWMSTATE_SVPWM" ; +VAL_ 2005 DIR_rotorOffsetLearningState 9 "ROL_NUM_STATES" 2 "ROL_STATE_ACCELERATE" 5 "ROL_STATE_CORRECT" 8 "ROL_STATE_DONE" 0 "ROL_STATE_INIT" 4 "ROL_STATE_MEASURE" 3 "ROL_STATE_SHIFT" 6 "ROL_STATE_VERIFY" 1 "ROL_STATE_WAIT" 7 "ROL_STATE_WRITE" ; +VAL_ 2005 DIR_ssmState 5 "SSM_STATE_ABORT" 4 "SSM_STATE_ENABLE" 8 "SSM_STATE_FAULT" 2 "SSM_STATE_IDLE" 7 "SSM_STATE_RETRY" 3 "SSM_STATE_STANDBY" 0 "SSM_STATE_START" 1 "SSM_STATE_UNAVAILABLE" 6 "SSM_STATE_WAIT_FOR_RETRY" ; +VAL_ 2005 DIR_tcMaxRequest 255 "SNA" ; +VAL_ 2005 DIR_tcMinRequest 255 "SNA" ; +VAL_ 2005 DIR_usmState 3 "USM_STATE_ABORT" 4 "USM_STATE_ENABLE" 5 "USM_STATE_FAULT" 2 "USM_STATE_RETRY" 1 "USM_STATE_STANDBY" 0 "USM_STATE_START" 6 "USM_STATE_UNAVAILABLE" 7 "USM_STATE_WAIT_FOR_RETRY" ; +VAL_ 1879 DIF_fluxState 5 "DI_FLUXSTATE_ENABLED" 9 "DI_FLUXSTATE_FAULT" 4 "DI_FLUXSTATE_FLUX_DOWN" 3 "DI_FLUXSTATE_FLUX_UP" 6 "DI_FLUXSTATE_ICONTROL" 2 "DI_FLUXSTATE_STANDBY" 0 "DI_FLUXSTATE_START" 10 "DI_FLUXSTATE_STATIONARY_WASTE" 1 "DI_FLUXSTATE_TEST" 7 "DI_FLUXSTATE_VCONTROL" ; +VAL_ 1879 DIF_gateDriveState 3 "PSTG_GD_STATE_CONFIGURED" 2 "PSTG_GD_STATE_CONFIGURING" 0 "PSTG_GD_STATE_INIT" 4 "PSTG_GD_STATE_NOT_CONFIGURED" 1 "PSTG_GD_STATE_SELFTEST" ; +VAL_ 1879 DIF_gateDriveSupplyState 0 "PSTG_GD_SUPPLY_DOWN" 3 "PSTG_GD_SUPPLY_FALLING" 1 "PSTG_GD_SUPPLY_RISING" 2 "PSTG_GD_SUPPLY_UP" ; +VAL_ 1879 DIF_magnetTempEst 0 "SNA" ; +VAL_ 1879 DIF_motorType 8 "DI_MOTOR_F1A" 10 "DI_MOTOR_F1AC" 11 "DI_MOTOR_F2AB" 12 "DI_MOTOR_F2AC" 13 "DI_MOTOR_F2AD" 14 "DI_MOTOR_F2AE" 26 "DI_MOTOR_F2AE_AL" 15 "DI_MOTOR_F2APMSRM" 17 "DI_MOTOR_IM100A" 19 "DI_MOTOR_IM100B" 22 "DI_MOTOR_IM130C" 24 "DI_MOTOR_IM130D" 25 "DI_MOTOR_IM130D_AL" 27 "DI_MOTOR_IM130D_AL_POSCO" 20 "DI_MOTOR_IM216A" 3 "DI_MOTOR_M7M3" 4 "DI_MOTOR_M7M4" 5 "DI_MOTOR_M7M5" 7 "DI_MOTOR_M7M6" 6 "DI_MOTOR_M8A" 16 "DI_MOTOR_PM216A" 18 "DI_MOTOR_PM216B" 21 "DI_MOTOR_PM216C" 30 "DI_MOTOR_PM216CSR" 31 "DI_MOTOR_PM216CSR_N42" 23 "DI_MOTOR_PM216D" 32 "DI_MOTOR_PM228B" 28 "DI_MOTOR_PM275B" 29 "DI_MOTOR_PM350B" 1 "DI_MOTOR_ROADSTER_BASE" 2 "DI_MOTOR_ROADSTER_SPORT" 0 "DI_MOTOR_SNA" 9 "DI_MOTOR_SSR1A" ; +VAL_ 1879 DIF_oilPumpPhaseVoltage 255 "SNA" ; +VAL_ 1879 DIF_oilPumpPressureEstimateMax 255 "SNA" ; +VAL_ 1879 DIF_oilPumpPressureExpectedMin 255 "SNA" ; +VAL_ 1879 DIF_powerStageSafeState 2 "PSTG_SAFESTATE_3PS_HIGH" 3 "PSTG_SAFESTATE_3PS_LOW" 1 "PSTG_SAFESTATE_ALL_OFF" 0 "PSTG_SAFESTATE_NONE" ; +VAL_ 1879 DIF_pwmState 1 "PWMSTATE_DPWM2" 2 "PWMSTATE_OPWM1" 3 "PWMSTATE_OPWM2" 0 "PWMSTATE_SVPWM" ; +VAL_ 1879 DIF_rotorOffsetLearningState 9 "ROL_NUM_STATES" 2 "ROL_STATE_ACCELERATE" 5 "ROL_STATE_CORRECT" 8 "ROL_STATE_DONE" 0 "ROL_STATE_INIT" 4 "ROL_STATE_MEASURE" 3 "ROL_STATE_SHIFT" 6 "ROL_STATE_VERIFY" 1 "ROL_STATE_WAIT" 7 "ROL_STATE_WRITE" ; +VAL_ 1879 DIF_ssmState 5 "SSM_STATE_ABORT" 4 "SSM_STATE_ENABLE" 8 "SSM_STATE_FAULT" 2 "SSM_STATE_IDLE" 7 "SSM_STATE_RETRY" 3 "SSM_STATE_STANDBY" 0 "SSM_STATE_START" 1 "SSM_STATE_UNAVAILABLE" 6 "SSM_STATE_WAIT_FOR_RETRY" ; +VAL_ 1879 DIF_tcMaxRequest 255 "SNA" ; +VAL_ 1879 DIF_tcMinRequest 255 "SNA" ; +VAL_ 1879 DIF_usmState 3 "USM_STATE_ABORT" 4 "USM_STATE_ENABLE" 5 "USM_STATE_FAULT" 2 "USM_STATE_RETRY" 1 "USM_STATE_STANDBY" 0 "USM_STATE_START" 6 "USM_STATE_UNAVAILABLE" 7 "USM_STATE_WAIT_FOR_RETRY" ; +VAL_ 694 DI_ptcStateUI 0 "FAULTED" 1 "BACKUP" 2 "ON" 3 "SNA" ; +VAL_ 694 DI_tractionControlModeUI 0 "NORMAL" 1 "SLIP_START" 2 "DEV_MODE_1" 3 "DEV_MODE_2" 4 "ROLLS_MODE" 5 "DYNO_MODE" 6 "OFFROAD_ASSIST" ; +VAL_ 545 VCFRONT_LVPowerStateIndex 0 "Mux0" 1 "Mux1" ; +VAL_ 545 VCFRONT_CMPDLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_amplifierLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_cpLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_das1HighCurrentLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_das2HighCurrentLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_difLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_dirLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_epasLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_espLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_hvacCompLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_hvcLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_iBoosterLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_ocsLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_oilPumpFrontLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_oilPumpRearLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_parkLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_pcsLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_ptcLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_radcLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_rcmLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_sccmLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_tasLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_tpmsLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_tunerLVRequest 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_uiHiCurrentLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_vcleftHiCurrentLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 545 VCFRONT_vcrightHiCurrentLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 549 VCRIGHT_amplifierLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 549 VCRIGHT_eFuseLockoutStatus 2 "EFUSE_LOCKOUT_STATUS_ACTIVE" 0 "EFUSE_LOCKOUT_STATUS_IDLE" 1 "EFUSE_LOCKOUT_STATUS_PENDING" ; +VAL_ 549 VCRIGHT_hvcLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 549 VCRIGHT_lumbarLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 549 VCRIGHT_ocsLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 549 VCRIGHT_ptcLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 549 VCRIGHT_rcmLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 549 VCRIGHT_rearOilPumpLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 549 VCRIGHT_tunerLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 549 VCRIGHT_vehiclePowerStateDBG 2 "VEHICLE_POWER_STATE_ACCESSORY" 1 "VEHICLE_POWER_STATE_CONDITIONING" 3 "VEHICLE_POWER_STATE_DRIVE" 0 "VEHICLE_POWER_STATE_OFF" ; +VAL_ 753 VCFRONT_eFuseDebugStatusIndex 8 "VCF_DBG_STS_AUTOPILOT_1" 9 "VCF_DBG_STS_AUTOPILOT_2" 4 "VCF_DBG_STS_EPAS3P" 5 "VCF_DBG_STS_EPAS3S" 6 "VCF_DBG_STS_ESP_MOTOR" 7 "VCF_DBG_STS_ESP_VALVE" 12 "VCF_DBG_STS_HEADLAMPS" 3 "VCF_DBG_STS_IBOOSTER" 18 "VCF_DBG_STS_INVALID" 17 "VCF_DBG_STS_LV_BATTERY_DEBUG" 16 "VCF_DBG_STS_MISC_RAILS" 2 "VCF_DBG_STS_PCS" 14 "VCF_DBG_STS_PUMPS" 15 "VCF_DBG_STS_RAILS_A_B" 10 "VCF_DBG_STS_SLEEP_BYPASS" 11 "VCF_DBG_STS_UI" 13 "VCF_DBG_STS_VBAT_FUSED_HIGH_CURRENT" 1 "VCF_DBG_STS_VCLEFT" 0 "VCF_DBG_STS_VCRIGHT" ; +VAL_ 753 VCFRONT_EPAS3PSelfTestResult 4 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT" 8 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION" 6 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION" 10 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED" 7 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN" 5 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON" 3 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE" 9 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW" 0 "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN" 2 "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED" 1 "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING" 11 "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" ; +VAL_ 753 VCFRONT_EPAS3PState 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_EPAS3SSelfTestResult 4 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT" 8 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION" 6 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION" 10 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED" 7 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN" 5 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON" 3 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE" 9 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW" 0 "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN" 2 "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED" 1 "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING" 11 "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" ; +VAL_ 753 VCFRONT_EPAS3SState 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_ESPMotorSelfTestResult 4 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT" 8 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION" 6 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION" 10 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED" 7 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN" 5 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON" 3 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE" 9 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW" 0 "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN" 2 "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED" 1 "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING" 11 "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" ; +VAL_ 753 VCFRONT_ESPMotorState 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_ESPValveState 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_PCSState 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_autopilot1State 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_autopilot2State 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_headlampLeftTemperature 128 "SNA" ; +VAL_ 753 VCFRONT_headlampLeftVoltage 255 "SNA" ; +VAL_ 753 VCFRONT_headlampRightTemperature 128 "SNA" ; +VAL_ 753 VCFRONT_headlampRightVoltage 255 "SNA" ; +VAL_ 753 VCFRONT_iBoosterSelfTestResult 4 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT" 8 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION" 6 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION" 10 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED" 7 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN" 5 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON" 3 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE" 9 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW" 0 "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN" 2 "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED" 1 "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING" 11 "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" ; +VAL_ 753 VCFRONT_iBoosterState 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_leftControllerState 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_pcsSelfTestResult 4 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT" 8 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION" 6 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION" 10 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED" 7 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN" 5 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON" 3 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE" 9 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW" 0 "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN" 2 "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED" 1 "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING" 11 "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" ; +VAL_ 753 VCFRONT_rightControllerState 2 "EFUSE_STATE_LOCKED_OUT" 0 "EFUSE_STATE_OFF" 1 "EFUSE_STATE_ON" ; +VAL_ 753 VCFRONT_vbatFusedSelfTestResult 4 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT" 8 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION" 6 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION" 10 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED" 7 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN" 5 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON" 3 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE" 9 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW" 0 "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN" 2 "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED" 1 "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING" 11 "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" ; +VAL_ 753 VCFRONT_vcleftSelfTestResult 4 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT" 8 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION" 6 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION" 10 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED" 7 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN" 5 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON" 3 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE" 9 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW" 0 "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN" 2 "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED" 1 "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING" 11 "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" ; +VAL_ 753 VCFRONT_vcrightSelfTestResult 4 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT" 8 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION" 6 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION" 10 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED" 7 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN" 5 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON" 3 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE" 9 "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW" 0 "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN" 2 "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED" 1 "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING" 11 "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" ; +VAL_ 578 VCLEFT_cpLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 578 VCLEFT_diLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 578 VCLEFT_lumbarLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 578 VCLEFT_rcmLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 578 VCLEFT_sccmLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 578 VCLEFT_swcLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 578 VCLEFT_tpmsLVState 3 "LV_FAULT" 2 "LV_GOING_DOWN" 0 "LV_OFF" 1 "LV_ON" ; +VAL_ 578 VCLEFT_vehiclePowerStateDBG 2 "VEHICLE_POWER_STATE_ACCESSORY" 1 "VEHICLE_POWER_STATE_CONDITIONING" 3 "VEHICLE_POWER_STATE_DRIVE" 0 "VEHICLE_POWER_STATE_OFF" ; +VAL_ 579 VCRIGHT_hvacStatusIndex 3 "END" 0 "STATUS_UI" 1 "STATUS_VCFRONT" 2 "STATUS_VCFRONT2" ; +VAL_ 579 VCRIGHT_hvacACRunning 0 "OFF" 1 "ON" ; +VAL_ 579 VCRIGHT_hvacAirDistributionMode 4 "DEFROST" 5 "DEFROST_FLOOR" 6 "DEFROST_PANEL" 7 "DEFROST_PANEL_FLOOR" 1 "FLOOR" 0 "NONE" 2 "PANEL" 3 "PANEL_FLOOR" ; +VAL_ 579 VCRIGHT_hvacBlowerSegment 1 "1" 10 "10" 11 "11" 2 "2" 3 "3" 4 "4" 5 "5" 6 "6" 7 "7" 8 "8" 9 "9" 0 "OFF" ; +VAL_ 579 VCRIGHT_hvacDuctTargetLeft 255 "SNA" ; +VAL_ 579 VCRIGHT_hvacDuctTargetRight 255 "SNA" ; +VAL_ 579 VCRIGHT_hvacEvapInletTempEstimat 1023 "SNA" ; +VAL_ 579 VCRIGHT_hvacModelInitStatus 4 "INIT_FORWARD_CALC" 2 "INIT_FROM_SENSORS" 3 "INIT_FROM_SENSORS_PREDICTION_ERROR" 5 "INIT_WAITING_FOR_SENSORS" 1 "NOT_INIT_WAIT_FOR_GTW" 0 "NOT_INIT_WAIT_FOR_SENSORS" ; +VAL_ 579 VCRIGHT_hvacPowerState 0 "OFF" 1 "ON" 4 "OVERHEAT_PROTECT" 3 "OVERHEAT_PROTECT_FANONLY" 2 "PRECONDITION" ; +VAL_ 579 VCRIGHT_hvacRecirc 0 "AUTO" 2 "FRESH" 1 "RECIRC" ; +VAL_ 579 VCRIGHT_hvacSecondRowState 0 "AUTO" 4 "HIGH" 2 "LOW" 3 "MED" 1 "OFF" ; +VAL_ 579 VCRIGHT_hvacVentStatus 0 "BOTH" 1 "LEFT" 2 "RIGHT" ; +VAL_ 579 VCRIGHT_tempDuctLeft 255 "SNA" ; +VAL_ 579 VCRIGHT_tempDuctLeftLower 255 "SNA" ; +VAL_ 579 VCRIGHT_tempDuctLeftUpper 255 "SNA" ; +VAL_ 579 VCRIGHT_tempDuctRight 255 "SNA" ; +VAL_ 579 VCRIGHT_tempDuctRightLower 255 "SNA" ; +VAL_ 579 VCRIGHT_tempDuctRightUpper 255 "SNA" ; +VAL_ 524 VCRIGHT_hvacPerfTestState 2 "BLOWING" 0 "STOPPED" 1 "WAITING" ; +VAL_ 524 VCRIGHT_tempAmbientRaw 0 "SNA" ; +VAL_ 524 VCRIGHT_tempEvaporator 2047 "SNA" ; +VAL_ 524 VCRIGHT_tempEvaporatorTarget 255 "SNA" ; +VAL_ 737 VCFRONT_statusIndex 0 "VCF_STS_IDX_BODY_CONTROLS" 2 "VCF_STS_IDX_HOMELINK" 6 "VCF_STS_IDX_INVALID" 4 "VCF_STS_IDX_LV_BATTERY" 3 "VCF_STS_IDX_REFRIGERANT_SYSTEM" 5 "VCF_STS_IDX_SYSTEM_HEALTH" 1 "VCF_STS_IDX_VEHICLE_STATE" ; +VAL_ 737 VCFRONT_AS8510Voltage 4095 "SNA" ; +VAL_ 737 VCFRONT_airCompressorStatus 4 "VCFRONT_AIR_COMPRESSOR_STATUS_FAULT" 0 "VCFRONT_AIR_COMPRESSOR_STATUS_OFF" 1 "VCFRONT_AIR_COMPRESSOR_STATUS_ON" 5 "VCFRONT_AIR_COMPRESSOR_STATUS_RETRY_AVAILABLE" 7 "VCFRONT_AIR_COMPRESSOR_STATUS_SNA" 2 "VCFRONT_AIR_COMPRESSOR_STATUS_TURNING_OFF" 3 "VCFRONT_AIR_COMPRESSOR_STATUS_TURNING_ON" ; +VAL_ 737 VCFRONT_batterySMState 1 "BATTERY_SM_STATE_CHARGE" 2 "BATTERY_SM_STATE_DISCHARGE" 6 "BATTERY_SM_STATE_DISCONNECTED_BATTERY_TEST" 8 "BATTERY_SM_STATE_FAULT" 0 "BATTERY_SM_STATE_INIT" 5 "BATTERY_SM_STATE_OTA_STANDBY" 4 "BATTERY_SM_STATE_RESISTANCE_ESTIMATION" 7 "BATTERY_SM_STATE_SHORTED_CELL_TEST" 3 "BATTERY_SM_STATE_STANDBY" ; +VAL_ 737 VCFRONT_coolantFillRoutineStatus 3 "FAULTED" 1 "MOVING_TO_FILL_POSITION" 0 "NOT_READY" 2 "READY_TO_FILL" ; +VAL_ 737 VCFRONT_crashDetectedType 1 "CRASH_DETECTED_TYPE_MINOR_1" 2 "CRASH_DETECTED_TYPE_MINOR_2" 0 "CRASH_DETECTED_TYPE_NONE" 3 "CRASH_DETECTED_TYPE_SEVERE" ; +VAL_ 737 VCFRONT_crashState 0 "CRASH_STATE_IDLE" 1 "CRASH_STATE_MINOR_1" 2 "CRASH_STATE_MINOR_2" 3 "CRASH_STATE_SEVERE" ; +VAL_ 737 VCFRONT_frunkLatchStatus 5 "LATCH_AJAR" 2 "LATCH_CLOSED" 3 "LATCH_CLOSING" 7 "LATCH_DEFAULT" 8 "LATCH_FAULT" 1 "LATCH_OPENED" 4 "LATCH_OPENING" 0 "LATCH_SNA" 6 "LATCH_TIMEOUT" ; +VAL_ 737 VCFRONT_frunkLatchType 1 "FRUNK_LATCH_TYPE_DOUBLE_ACTUATOR" 2 "FRUNK_LATCH_TYPE_DOUBLE_PULL" 0 "FRUNK_LATCH_TYPE_UNKNOWN" ; +VAL_ 737 VCFRONT_homelinkCommStatus 3 "HOMELINK_COMM_STATUS_FAULT" 1 "HOMELINK_COMM_STATUS_OFF" 2 "HOMELINK_COMM_STATUS_ON" 0 "HOMELINK_COMM_STATUS_SNA" ; +VAL_ 737 VCFRONT_hvacPerfTestCommand 2 "BLOW" 1 "INIT" 0 "NOT_STARTED" 3 "STOP" ; +VAL_ 737 VCFRONT_iBoosterStateDBG 4 "IBOOSTER_FORCE_OFF" 2 "IBOOSTER_GOING_DOWN" 0 "IBOOSTER_OFF" 1 "IBOOSTER_ON" 3 "IBOOSTER_WRITING_DATA_SHUTDOWN" ; +VAL_ 737 VCFRONT_passengerBuckleStatus 1 "BUCKLED" 0 "UNBUCKLED" ; +VAL_ 737 VCFRONT_pressureRefrigDischarge 255 "SNA" ; +VAL_ 737 VCFRONT_pressureRefrigSuction 127 "SNA" ; +VAL_ 737 VCFRONT_radarHeaterState 4 "HEATER_STATE_FAULT" 2 "HEATER_STATE_OFF" 3 "HEATER_STATE_OFF_UNAVAILABLE" 1 "HEATER_STATE_ON" 0 "HEATER_STATE_SNA" ; +VAL_ 737 VCFRONT_refrigFillRoutineStatus 3 "FAULTED" 1 "MOVING_TO_FILL_POSITION" 0 "NOT_READY" 2 "READY_TO_FILL" ; +VAL_ 737 VCFRONT_vbatMonitorVoltage 4095 "SNA" ; +VAL_ 737 VCFRONT_vehicleStatusDBG 10 "VEHICLE_STATUS_ACCESSORY" 11 "VEHICLE_STATUS_ACCESSORY_PLUS" 3 "VEHICLE_STATUS_BATTERY_POST_WAKE" 12 "VEHICLE_STATUS_CONDITIONING" 14 "VEHICLE_STATUS_CRASH" 13 "VEHICLE_STATUS_DRIVE" 9 "VEHICLE_STATUS_HV_UP_STANDBY" 0 "VEHICLE_STATUS_INIT" 1 "VEHICLE_STATUS_LOW_POWER_STANDBY" 8 "VEHICLE_STATUS_LV_AWAKE" 7 "VEHICLE_STATUS_LV_SHUTDOWN" 15 "VEHICLE_STATUS_OTA" 17 "VEHICLE_STATUS_RESET" 2 "VEHICLE_STATUS_SILENT_WAKE" 5 "VEHICLE_STATUS_SLEEP_SHUTDOWN" 6 "VEHICLE_STATUS_SLEEP_STANDBY" 4 "VEHICLE_STATUS_SYSTEM_CHECKS" 16 "VEHICLE_STATUS_TURN_ON_RAILS" ; +VAL_ 737 VCFRONT_voltageProfile 3 "VOLTAGE_PROFILE_ALWAYS_CLOSED_CONTACTORS" 0 "VOLTAGE_PROFILE_CHARGE" 1 "VOLTAGE_PROFILE_FLOAT" 2 "VOLTAGE_PROFILE_REDUCED_FLOAT" ; +VAL_ 737 VCFRONT_wiperPosition 3 "WIPER_POSITION_DELAYED_REST" 2 "WIPER_POSITION_DEPRESSED_PARK" 1 "WIPER_POSITION_SERVICE" 0 "WIPER_POSITION_SNA" 4 "WIPER_POSITION_WIPING" ; +VAL_ 737 VCFRONT_wiperSpeed 2 "WIPER_SPEED_1" 3 "WIPER_SPEED_2" 4 "WIPER_SPEED_3" 5 "WIPER_SPEED_4" 6 "WIPER_SPEED_5" 8 "WIPER_SPEED_HIGH" 7 "WIPER_SPEED_LOW" 1 "WIPER_SPEED_OFF" 0 "WIPER_SPEED_SNA" ; +VAL_ 737 VCFRONT_wiperState 9 "WIPER_STATE_CONT_FAST" 10 "WIPER_STATE_CONT_SLOW" 3 "WIPER_STATE_DELAYED_REST" 2 "WIPER_STATE_FAULT" 7 "WIPER_STATE_INTERMITTENT_HIGH" 8 "WIPER_STATE_INTERMITTENT_LOW" 12 "WIPER_STATE_INT_AUTO_HIGH" 11 "WIPER_STATE_INT_AUTO_LOW" 6 "WIPER_STATE_MOMENTARY_WIPE" 4 "WIPER_STATE_PARK" 1 "WIPER_STATE_SERVICE" 0 "WIPER_STATE_SNA" 5 "WIPER_STATE_WASH" ; +VAL_ 897 VCFRONT_logging1HzIndex 18 "BODY_CONTROL" 0 "COOLANT" 19 "COOLANT_2" 2 "COOLANT_VALVE" 20 "END" 1 "FAN_DEMAND_CONDENSER_AND_FET_TEMPS" 3 "HCML_LED_TEMPS" 4 "HCMR_LED_TEMPS" 6 "HEADLAMP_AIM" 5 "HOMELINK" 15 "HP_ARBITRATION" 9 "HP_CONTROL_LOOP_AND_STATE" 10 "HP_CYCLE_MODEL" 8 "HP_DATA_AND_ACCUMULATORS" 12 "HP_DISSIPATION_AND_POWER" 11 "HP_EXV_CALIBRATION" 7 "HP_EXV_RANGE" 17 "HP_MODE_OPTIONS_AND_ESTIMATES" 16 "HP_MODE_SELECT_AND_ESTIMATES" 14 "HP_PRESSURE_CONTROL" 13 "HP_TEMPS_AND_DEMANDS" ; +VAL_ 897 VCFRONT_HCML_bladeTemp 128 "SNA" ; +VAL_ 897 VCFRONT_HCML_diffuseTemp 128 "SNA" ; +VAL_ 897 VCFRONT_HCML_highBeamTemp 128 "SNA" ; +VAL_ 897 VCFRONT_HCML_lowBeamSpotTemp 128 "SNA" ; +VAL_ 897 VCFRONT_HCML_turnTemp 128 "SNA" ; +VAL_ 897 VCFRONT_HCMR_bladeTemp 128 "SNA" ; +VAL_ 897 VCFRONT_HCMR_diffuseTemp 128 "SNA" ; +VAL_ 897 VCFRONT_HCMR_highBeamTemp 128 "SNA" ; +VAL_ 897 VCFRONT_HCMR_lowBeamSpotTemp 128 "SNA" ; +VAL_ 897 VCFRONT_HCMR_turnTemp 128 "SNA" ; +VAL_ 897 VCFRONT_coolantValveCountRange 1023 "SNA" ; +VAL_ 897 VCFRONT_coolantValveRadBypass 127 "SNA" ; +VAL_ 897 VCFRONT_coolantValveRecalReason 3 "CALIBRATION_FAULT_NO_TRAVEL" 2 "GENERAL_FAULT" 1 "MAX_TRAVEL" 5 "MOTOR_FEEDBACK_INTERRUPTED" 6 "NVRAM_LOSS" 4 "SELF_TEST" 7 "SYSTEM_LEVEL_FAULT_RESPONSE" 0 "UNDEFINED" ; +VAL_ 897 VCFRONT_drlMode 2 "DRL_MODE_DRL" 0 "DRL_MODE_OFF" 1 "DRL_MODE_POSITION" ; +VAL_ 897 VCFRONT_homelinkRegionCode 5 "HOMELINK_REGION_CODE_AMERICAS" 9 "HOMELINK_REGION_CODE_CHINA" 1 "HOMELINK_REGION_CODE_EUROPE" 8 "HOMELINK_REGION_CODE_REST_OF_WORLD" 0 "HOMELINK_REGION_CODE_UNKNOWN" ; +VAL_ 897 VCFRONT_hpMode 2 "AMBIENT_SOURCE" 15 "BATTERY_COOL" 17 "BATTERY_COOL_CABIN_CONDENSER" 16 "BATTERY_COOL_CABIN_CONDENSER_REHEAT" 18 "BATTERY_COOL_CABIN_REHEAT" 19 "BATTERY_COOL_EVAPORATOR" 13 "BATTERY_HEAT_AMBIENT_SOURCE" 14 "BATTERY_HEAT_COP1" 11 "CABIN_COOL_EVAPORATOR" 12 "CABIN_COOL_EVAPORATOR_REHEAT" 4 "CABIN_HEAT_AMBIENT_SOURCE" 10 "CABIN_HEAT_BATTERY_COOL_REHEAT" 9 "CABIN_HEAT_BATTERY_HEAT_REHEAT_AMBIENT_SOURCE" 7 "CABIN_HEAT_BLEND" 8 "CABIN_HEAT_COP1" 6 "CABIN_HEAT_REHEAT_AMBIENT_SOURCE" 5 "CABIN_HEAT_REHEAT_SCAVENGE" 3 "CABIN_HEAT_SCAVENGE_ONLY" 1 "GENERAL" 0 "NONE" ; +VAL_ 897 VCFRONT_hpRefrigerantPurgeState 2 "COMPLETE" 1 "EVAP_PURGE" 0 "IDLE" ; +VAL_ 897 VCFRONT_modeDesired 3 "AMBIENT_SOURCE" 2 "BLEND" 1 "PARALLEL" 0 "SERIES" ; +VAL_ 897 VCFRONT_modeTransitionID 23 "ENTER_AMBIENTSOURCE" 24 "EXIT_AMBIENTSOURCE" 20 "INIT" 21 "OVERRIDE" 6 "PARALLEL_2_drive_batteryWantsHeat" 7 "PARALLEL_3_drive_batteryWantsCool" 8 "PARALLEL_4_drive_batteryNeedsCool" 11 "PARALLEL_5_charge_batteryWantsHeat" 12 "PARALLEL_6_charge_batteryWantsCool" 15 "PARALLEL_7_fastCharge_batteryWantsCool" 16 "PARALLEL_8_fastCharge_batteryWantsHeat" 19 "PARALLEL_9_drive_batteryThermalLimiting" 0 "PARALLEL_F1_noFlowRequest" 33 "PAR_1_drive_battNeedsActiveCooling_evapDisabled" 34 "PAR_2_drive_ptNeedsActiveCooling" 35 "PAR_3_drive_chillerPassivelyCoolsBatt" 36 "PAR_4_drive_cannotPassivelyCoolBatt" 37 "PAR_5_drive_battAboveHotStagnationTemp" 38 "PAR_6_FC_battNeedsActiveCooling_evapDisabled" 39 "PAR_7_FC_battNeedsActiveCooling_evapEnabled" 40 "PAR_8_charge_battAbovePassiveTarget" 3 "SERIES_1_drive_batteryWantsCool" 4 "SERIES_2_drive_batteryNeedsHeat" 5 "SERIES_3_drive_batteryWantsHeat" 9 "SERIES_4_charge_batteryNeedsHeat" 10 "SERIES_5_charge_batteryWantsHeat" 13 "SERIES_6_fastCharge_batteryNeedsHeat" 14 "SERIES_7_fastCharge_batteryWantsCool" 17 "SERIES_8_preConditioning_batteryNeedsHeat" 18 "SERIES_9_drive_driveUnitThermalLimiting" 1 "SERIES_F2_faultPumps" 2 "SERIES_F3_faultTempSensors" 25 "SER_1_drive_battNeedsActiveCooling_evapEnabled" 26 "SER_2_drive_battBelowHotStagnationTemp" 27 "SER_3_drive_chillerPassivelyCools" 28 "SER_4_drive_radPassivelyCoolsBatt" 29 "SER_5_FC_battHeatingNeeded" 30 "SER_6_FC_battNeedsActiveCooling_evapDisabled" 31 "SER_7_FC_battNeedsActiveCooling_evapEnabled" 32 "SER_8_charge_battBelowPassiveTarget" 22 "UNDEFINED" ; +VAL_ 897 VCFRONT_passiveCoolingState 3 "CannotCoolBattery" 2 "ChillerAndRadCoolSeriesLoop" 1 "ChillerCoolsParallelBattLoop" 0 "ChillerCoolsSeriesLoop" ; +VAL_ 897 VCFRONT_pumpBatteryFETTemp 255 "SNA" ; +VAL_ 897 VCFRONT_pumpPowertrainFETTemp 255 "SNA" ; +VAL_ 897 VCFRONT_radiatorFanFETTemp 255 "SNA" ; +VAL_ 897 VCFRONT_radiatorFanRunReason 1 "ACTIVE_MANAGER" 2 "AMBIENT_SNIFF" 5 "COAST_MODE" 4 "HEAT_PUMP" 6 "MIN_ON_GLOBAL" 7 "MIN_ON_NVH" 0 "NONE" 3 "NVH_MASKING" 8 "UDS" ; +VAL_ 897 VCFRONT_tempRefrigSuction 255 "SNA" ; +VAL_ 553 GearLeverPosition229 4 "Full Up" 3 "Half Up" 2 "Full Down" 1 "Half Down" 0 "Center" ; +VAL_ 585 SCCM_highBeamStalkStatus 0 "IDLE" 1 "PULL" 2 "PUSH" 3 "SNA" ; +VAL_ 585 SCCM_turnIndicatorStalkStatus 5 "DOWN_0_5" 6 "DOWN_1" 7 "DOWN_1_5" 8 "DOWN_2" 0 "IDLE" 9 "SNA" 1 "UP_0_5" 2 "UP_1" 3 "UP_1_5" 4 "UP_2" ; +VAL_ 585 SCCM_washWipeButtonStatus 1 "1ST_DETENT" 2 "2ND_DETENT" 0 "NOT_PRESSED" 3 "SNA" ; +VAL_ 390 DIF_axleSpeed 32768 "SNA" ; +VAL_ 390 DIF_slavePedalPos 255 "SNA" ; +VAL_ 390 DIF_torqueActual 4096 "SNA" ; +VAL_ 390 DIF_torqueCommand 4096 "SNA" ; +VAL_ 918 FrontOilPumpState396 7 "OIL_PUMP_SNA" 6 "OIL_PUMP_FAULTED" 2 "OIL_PUMP_COLD_STARTUP" 1 "OIL_PUMP_ENABLE" 0 "OIL_PUMP_STANDBY" ; +VAL_ 917 DIR_oilPumpFluidTQF 1 "OIL_PUMP_FLUIDT_HIGH_CONFIDENCE" 0 "OIL_PUMP_FLUIDT_LOW_CONFIDENCE" ; +VAL_ 917 DIR_oilPumpState 2 "OIL_PUMP_COLD_STARTUP" 1 "OIL_PUMP_ENABLE" 6 "OIL_PUMP_FAULTED" 7 "OIL_PUMP_SNA" 0 "OIL_PUMP_STANDBY" ; +VAL_ 341 ESP_WheelRotationReR 3 "WR_NOT_DEFINABLE" 2 "WR_STANDSTILL" 1 "WR_BACKWARD" 0 "WR_FORWARD" ; +VAL_ 341 ESP_WheelRotationReL 3 "WR_NOT_DEFINABLE" 2 "WR_STANDSTILL" 1 "WR_BACKWARD" 0 "WR_FORWARD" ; +VAL_ 341 ESP_WheelRotationFrR 3 "WR_NOT_DEFINABLE" 2 "WR_STANDSTILL" 1 "WR_BACKWARD" 0 "WR_FORWARD" ; +VAL_ 341 ESP_WheelRotationFrL 3 "WR_NOT_DEFINABLE" 2 "WR_STANDSTILL" 1 "WR_BACKWARD" 0 "WR_FORWARD" ; +VAL_ 341 ESP_wheelSpeedsQF 1 "ALL_WSS_VALID" 0 "ONE_OR_MORE_WSS_INVALID" ; +VAL_ 341 ESP_vehicleStandstillSts 1 "STANDSTILL" 0 "NOT_STANDSTILL" ; +VAL_ 341 ESP_vehicleSpeed 1023 "ESP_VEHICLE_SPEED_SNA" ; +VAL_ 373 WheelSpeedRR175 8191 "SNA" ; +VAL_ 373 WheelSpeedRL175 8191 "SNA" ; +VAL_ 373 WheelSpeedFR175 8191 "SNA" ; +VAL_ 373 WheelSpeedFL175 8191 "SNA" ; +VAL_ 389 ESP_brakeTorqueFrL 4095 "SNA" ; +VAL_ 389 ESP_brakeTorqueFrR 4095 "SNA" ; +VAL_ 389 ESP_brakeTorqueReL 4095 "SNA" ; +VAL_ 389 ESP_brakeTorqueReR 4095 "SNA" ; +VAL_ 389 ESP_brakeTorqueQF 1 "IN_SPEC" 0 "UNDEFINABLE_ACCURACY" ; +VAL_ 962 VCLEFT_switchStatusIndex 0 "VCLEFT_SWITCH_STATUS_INDEX_0" 1 "VCLEFT_SWITCH_STATUS_INDEX_1" 2 "VCLEFT_SWITCH_STATUS_INDEX_INVALID" ; +VAL_ 962 VCLEFT_frontBuckleSwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontOccupancySwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatBackrestBack 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatBackrestForward 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatLiftDown 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatLiftUp 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatLumbarDown 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatLumbarIn 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatLumbarOut 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatLumbarUp 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatTiltDown 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatTiltUp 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatTrackBack 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_frontSeatTrackForward 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_rearCenterBuckleSwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_rearCenterOccupancySwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_rearLeftBuckleSwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_rearLeftOccupancySwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_rearRightOccupancySwitch 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_rightMirrorTilt 1 "MIRROR_TILT_DOWN" 4 "MIRROR_TILT_LEFT" 3 "MIRROR_TILT_RIGHT" 0 "MIRROR_TILT_STOP" 2 "MIRROR_TILT_UP" ; +VAL_ 962 VCLEFT_swcLeftPressed 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_swcLeftTiltLeft 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_swcLeftTiltRight 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_swcRightPressed 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_swcRightTiltLeft 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 962 VCLEFT_swcRightTiltRight 3 "SWITCH_FAULT" 1 "SWITCH_OFF" 2 "SWITCH_ON" 0 "SWITCH_SNA" ; +VAL_ 822 DI_performancePackage 0 "BASE" 3 "BASE_PLUS" 1 "PERFORMANCE" 4 "SNA" ; +VAL_ 659 UI_accOvertakeEnable 0 "ACC_OVERTAKE_OFF" 1 "ACC_OVERTAKE_ON" 3 "SNA" ; +VAL_ 659 UI_aebEnable 0 "AEB_OFF" 1 "AEB_ON" 3 "SNA" ; +VAL_ 659 UI_aesEnable 0 "AES_OFF" 1 "AES_ON" 3 "SNA" ; +VAL_ 659 UI_ahlbEnable 0 "AHLB_OFF" 1 "AHLB_ON" 3 "SNA" ; +VAL_ 659 UI_autoLaneChangeEnable 0 "OFF" 1 "ON" 3 "SNA" ; +VAL_ 659 UI_autoParkRequest 7 "ABORT" 8 "COMPLETE" 0 "NONE" 5 "PARALLEL_PULL_OUT_TO_LEFT" 6 "PARALLEL_PULL_OUT_TO_RIGHT" 2 "PARK_LEFT_CROSS" 1 "PARK_LEFT_PARALLEL" 4 "PARK_RIGHT_CROSS" 3 "PARK_RIGHT_PARALLEL" 10 "PAUSE" 11 "RESUME" 9 "SEARCH" 15 "SNA" ; +VAL_ 659 UI_bsdEnable 0 "BSD_OFF" 1 "BSD_ON" 3 "SNA" ; +VAL_ 659 UI_distanceUnits 0 "DISTANCEUNITS_KM" 1 "DISTANCEUNITS_MILES" ; +VAL_ 659 UI_fcwEnable 0 "FCW_OFF" 1 "FCW_ON" 3 "SNA" ; +VAL_ 659 UI_fcwSensitivity 1 "AEB_SENSITIVITY_AVERAGE" 0 "AEB_SENSITIVITY_EARLY" 2 "AEB_SENSITIVITY_LATE" 3 "SNA" ; +VAL_ 659 UI_latControlEnable 0 "LATERAL_CONTROL_OFF" 1 "LATERAL_CONTROL_ON" 3 "LATERAL_CONTROL_SNA" 2 "LATERAL_CONTROL_UNAVAILABLE" ; +VAL_ 659 UI_ldwEnable 1 "LDW_TRIGGERS_HAPTIC" 0 "NO_HAPTIC" 3 "SNA" ; +VAL_ 659 UI_parkBrakeRequest 0 "PARK_BRAKE_REQUEST_IDLE" 1 "PARK_BRAKE_REQUEST_PRESSED" 3 "PARK_BRAKE_REQUEST_SNA" ; +VAL_ 659 UI_pedalSafetyEnable 0 "PEDAL_SAFETY_OFF" 1 "PEDAL_SAFETY_ON" 3 "SNA" ; +VAL_ 659 UI_redLightStopSignEnable 0 "RLSSW_OFF" 1 "RLSSW_ON" 3 "SNA" ; +VAL_ 659 UI_selfParkTune 15 "SNA" ; +VAL_ 659 UI_steeringTuneRequest 0 "STEERING_TUNE_COMFORT" 2 "STEERING_TUNE_SPORT" 1 "STEERING_TUNE_STANDARD" ; +VAL_ 659 UI_tractionControlMode 2 "TC_DEV_MODE_1_SELECTED" 3 "TC_DEV_MODE_2_SELECTED" 5 "TC_DYNO_MODE_SELECTED" 0 "TC_NORMAL_SELECTED" 6 "TC_OFFROAD_ASSIST_SELECTED" 4 "TC_ROLLS_MODE_SELECTED" 1 "TC_SLIP_START_SELECTED" ; +VAL_ 659 UI_trailerMode 0 "TRAILER_MODE_OFF" 1 "TRAILER_MODE_ON" ; +VAL_ 659 UI_winchModeRequest 1 "WINCH_MODE_ENTER" 2 "WINCH_MODE_EXIT" 0 "WINCH_MODE_IDLE" ; +VAL_ 659 UI_zeroSpeedConfirmed 0 "ZERO_SPEED_CANCELED" 1 "ZERO_SPEED_CONFIRMED" 3 "ZERO_SPEED_SNA" 2 "ZERO_SPEED_UNUSED" ; +VAL_ 616 DI_primaryUnitSiliconType 1 "IGBT" 0 "MOSFET" ; +VAL_ 532 FC_postID 2 "FC_POST_ID_2" 3 "FC_POST_ID_SNA" 0 "FC_POST_MASTER" 1 "FC_POST_SLAVE" ; +VAL_ 532 FC_statusCode 3 "FC_STATUS_DEPRECATED_3" 4 "FC_STATUS_DEPRECATED_4" 6 "FC_STATUS_EXT_ISOACTIVE" 5 "FC_STATUS_INT_ISOACTIVE" 14 "FC_STATUS_MALFUNCTION" 15 "FC_STATUS_NODATA" 13 "FC_STATUS_NOTCOMPATIBLE" 0 "FC_STATUS_NOTREADY_SNA" 7 "FC_STATUS_POST_OUT_OF_SERVICE" 1 "FC_STATUS_READY" 2 "FC_STATUS_UPDATE_IN_PROGRESS" ; +VAL_ 532 FC_type 3 "FC_TYPE_CC_EVSE" 1 "FC_TYPE_CHADEMO" 4 "FC_TYPE_COMBO" 2 "FC_TYPE_GB" 5 "FC_TYPE_MC_EVSE" 6 "FC_TYPE_OTHER" 7 "FC_TYPE_SNA" 0 "FC_TYPE_SUPERCHARGER" ; +VAL_ 535 FC_status3DataSelect 0 "Mux0" 1 "Mux1" ; +VAL_ 535 FC_brand 0 "FC_BRAND_SNA" 1 "FC_BRAND_TESLA" ; +VAL_ 535 FC_class 0 "FC_CLASS_SNA" 1 "FC_CLASS_SUPERCHARGER" 2 "FC_CLASS_URBANCHARGER" ; +VAL_ 535 FC_coolingType 2 "FC_COOLING_TYPE_CONVECTION" 1 "FC_COOLING_TYPE_LIQUID" 0 "FC_COOLING_TYPE_SNA" ; +VAL_ 535 FC_generation 0 "GENERATION_SNA" ; +VAL_ 535 FC_uiStopType 2 "FC_UI_STOP_TYPE_MOMENTARY" 0 "FC_UI_STOP_TYPE_SNA" 1 "FC_UI_STOP_TYPE_TOGGLE" ; +VAL_ 801 VCFRONT_brakeFluidLevel 1 "LOW" 2 "NORMAL" 0 "SNA" ; +VAL_ 801 VCFRONT_coolantLevel 1 "FILLED" 0 "NOT_OK" ; +VAL_ 801 VCFRONT_tempAmbient 0 "SNA" ; +VAL_ 801 VCFRONT_tempAmbientFiltered 0 "SNA" ; +VAL_ 801 VCFRONT_tempCoolantBatInlet 1023 "SNA" ; +VAL_ 801 VCFRONT_tempCoolantPTInlet 2047 "SNA" ; +VAL_ 801 VCFRONT_washerFluidLevel 1 "LOW" 2 "NORMAL" 0 "SNA" ; +VAL_ 769 VCFRONT_infoIndex 13 "BC_INFO_APP_CRC" 17 "BC_INFO_APP_GITHASH" 15 "BC_INFO_BOOTLOADER_CRC" 18 "BC_INFO_BOOTLOADER_GITHASH" 14 "BC_INFO_BOOTLOADER_SVN" 10 "BC_INFO_BUILD_HWID_COMPONENTID" 0 "BC_INFO_DEPRECATED_0" 1 "BC_INFO_DEPRECATED_1" 2 "BC_INFO_DEPRECATED_2" 3 "BC_INFO_DEPRECATED_3" 4 "BC_INFO_DEPRECATED_4" 5 "BC_INFO_DEPRECATED_5" 6 "BC_INFO_DEPRECATED_6" 7 "BC_INFO_DEPRECATED_7" 8 "BC_INFO_DEPRECATED_8" 9 "BC_INFO_DEPRECATED_9" 255 "BC_INFO_END" 11 "BC_INFO_PCBAID_ASSYID_USAGEID" 16 "BC_INFO_SUBCOMPONENT1" 23 "BC_INFO_SUBCOMPONENT2" 24 "BC_INFO_SUBCOMPONENT3" 31 "BC_INFO_SUBCOMPONENT4" 32 "BC_INFO_SUBCOMPONENT5" 33 "BC_INFO_SUBCOMPONENT6" 20 "BC_INFO_UDS_PROTOCOL_BOOTCRC" 19 "BC_INFO_VERSION_DEPRECATED" ; +VAL_ 769 VCFRONT_infoAssemblyId 1 "ASSEMBLY1" 255 "ASSEMBLY_SNA" ; +VAL_ 769 VCFRONT_infoBuildType 2 "INFO_LOCAL_BUILD" 4 "INFO_MFG_BUILD" 1 "INFO_PLATFORM_BUILD" 3 "INFO_TRACEABLE_CI_BUILD" 0 "INFO_UNKNOWN_BUILD" ; +VAL_ 513 VCFRONT_loggingAndVitals10HzInde 7 "END" 3 "EXV_FLOW" 5 "EXV_FLOW_TARGET" 6 "EXV_STATE" 4 "HP_STATE" 2 "STATES_AND_SENSORS" 0 "TARGETS_AND_ACTUALS_0" 1 "TARGETS_SENSORS_AND_ACTUALS_1" ; +VAL_ 513 VCFRONT_cclExvState 8 "CALIB_CLOSE" 9 "CALIB_CLOSE_OVERDRIVE" 4 "FAULTED" 2 "INIT_CLOSE" 1 "INIT_OPEN" 6 "OVERDRIVING_SHUT" 3 "READY" 7 "READY_SHUT" 0 "UNINIT" 5 "WAIT" ; +VAL_ 513 VCFRONT_ccrExvState 8 "CALIB_CLOSE" 9 "CALIB_CLOSE_OVERDRIVE" 4 "FAULTED" 2 "INIT_CLOSE" 1 "INIT_OPEN" 6 "OVERDRIVING_SHUT" 3 "READY" 7 "READY_SHUT" 0 "UNINIT" 5 "WAIT" ; +VAL_ 513 VCFRONT_chillerExvState 8 "CALIB_CLOSE" 9 "CALIB_CLOSE_OVERDRIVE" 4 "FAULTED" 2 "INIT_CLOSE" 1 "INIT_OPEN" 6 "OVERDRIVING_SHUT" 3 "READY" 7 "READY_SHUT" 0 "UNINIT" 5 "WAIT" ; +VAL_ 513 VCFRONT_compressorState 3 "FAULT" 1 "READY" 2 "RUNNING" 0 "STANDBY" ; +VAL_ 513 VCFRONT_coolantValveMode 3 "AMBIENT_SOURCE" 2 "BLEND" 1 "PARALLEL" 0 "SERIES" ; +VAL_ 513 VCFRONT_evapExvState 8 "CALIB_CLOSE" 9 "CALIB_CLOSE_OVERDRIVE" 4 "FAULTED" 2 "INIT_CLOSE" 1 "INIT_OPEN" 6 "OVERDRIVING_SHUT" 3 "READY" 7 "READY_SHUT" 0 "UNINIT" 5 "WAIT" ; +VAL_ 513 VCFRONT_exvState 8 "CALIB_CLOSE" 9 "CALIB_CLOSE_OVERDRIVE" 4 "FAULTED" 2 "INIT_CLOSE" 1 "INIT_OPEN" 6 "OVERDRIVING_SHUT" 3 "READY" 7 "READY_SHUT" 0 "UNINIT" 5 "WAIT" ; +VAL_ 513 VCFRONT_hpBatteryLoadType 2 "BATT_COOL" 1 "BATT_HEAT" 0 "NONE" ; +VAL_ 513 VCFRONT_hpBlendType 2 "HP_FULL" 0 "HP_NONE" 1 "HP_PARTIAL" ; +VAL_ 513 VCFRONT_hpCabinLoadType 1 "CC" 3 "EVAP" 0 "NONE" 2 "REHEAT" ; +VAL_ 513 VCFRONT_hpDominantLoad 5 "CC" 2 "CHILLER" 1 "EVAP" 6 "HIGH_BOTH" 4 "LCC" 3 "LOW_BOTH" 0 "NONE" ; +VAL_ 513 VCFRONT_hpHighSideHX 3 "BOTH" 2 "CC" 1 "LCC" 0 "NONE" ; +VAL_ 513 VCFRONT_hpLowSideHX 3 "BOTH" 1 "CHILLER" 2 "EVAP" 0 "NONE" ; +VAL_ 513 VCFRONT_hpReqCoolantMode 4 "AMBIENT_SOURCE" 0 "ANY" 3 "PARALLEL" 2 "SERIES_BYPASS" 1 "SERIES_NO_BYPASS" ; +VAL_ 513 VCFRONT_lccExvState 8 "CALIB_CLOSE" 9 "CALIB_CLOSE_OVERDRIVE" 4 "FAULTED" 2 "INIT_CLOSE" 1 "INIT_OPEN" 6 "OVERDRIVING_SHUT" 3 "READY" 7 "READY_SHUT" 0 "UNINIT" 5 "WAIT" ; +VAL_ 513 VCFRONT_pressureRefrigDischargeV 255 "SNA" ; +VAL_ 513 VCFRONT_pressureRefrigLiquid 255 "SNA" ; +VAL_ 513 VCFRONT_pressureRefrigSuctionVit 127 "SNA" ; +VAL_ 513 VCFRONT_pumpBatteryRPMActual 1023 "SNA" ; +VAL_ 513 VCFRONT_pumpPowertrainRPMActual 1023 "SNA" ; +VAL_ 513 VCFRONT_radiatorFanRPMActual 1023 "SNA" ; +VAL_ 513 VCFRONT_recircExvState 8 "CALIB_CLOSE" 9 "CALIB_CLOSE_OVERDRIVE" 4 "FAULTED" 2 "INIT_CLOSE" 1 "INIT_OPEN" 6 "OVERDRIVING_SHUT" 3 "READY" 7 "READY_SHUT" 0 "UNINIT" 5 "WAIT" ; +VAL_ 513 VCFRONT_solenoidEvapState 2 "CLOSED" 3 "FAULTED" 1 "OPENED" 0 "UNDEFINED" ; +VAL_ 513 VCFRONT_tempRefrigDischarge 2047 "SNA" ; +VAL_ 513 VCFRONT_tempRefrigLiquid 2047 "SNA" ; +VAL_ 513 VCFRONT_tempSuperheatActual 1023 "SNA" ; +VAL_ 609 VCFRONT_batterySMState 0 "INIT" 1 "CHARGE" 2 "DISCHARGE" 3 "STANDBY" 4 "RESISTANCE_ESTIMATION" 5 "OTA_STANDBY" 6 "DISCONNECTED_BATTERY_TEST" 7 "SHORTED_CELL_TEST" 8 "FAULT" 9 "RECOVERY" ; +VAL_ 609 VCFRONT_voltageProfile 0 "CHARGE" 1 "FLOAT" 2 "REDUCED_FLOAT" 3 "ALWAYS_CLOSED_CONTACTORS" ; +VAL_ 548 DCDCstate224 6 "Error" 5 "Shutdown" 4 "HVactive" 3 "Precharge" 2 "PrechargeStart" 1 "12vChg" 0 "Idle" ; +VAL_ 548 DCDCSubState224 0 "PWR_UP_INIT" 1 "STANDBY" 2 "12V_SUPPORT_ACTIVE" 3 "DIS_HVBUS" 4 "PCHG_FAST_DIS_HVBUS" 5 "PCHG_SLOW_DIS_HVBUS" 6 "PCHG_DWELL_CHARGE" 7 "PCHG_DWELL_WAIT" 8 "PCHG_DI_RECOVERY_WAIT" 9 "PCHG_ACTIVE" 10 "PCHG_FLT_FAST_DIS_HVBUS" 11 "SHUTDOWN" 12 "12V_SUPPORT_FAULTED" 13 "DIS_HVBUS_FAULTED" 14 "PCHG_FAULTED" 15 "CLEAR_FAULTS" 16 "FAULTED" 17 "NUM" ; +VAL_ 551 CMP_state 3 "CMP_STATE_FAULT" 0 "CMP_STATE_NONE" 1 "CMP_STATE_NORMAL" 15 "CMP_STATE_SNA" 5 "CMP_STATE_SOFT_SHUTDOWN" 4 "CMP_STATE_SOFT_START" 2 "CMP_STATE_WAIT" ; +VAL_ 280 DI_accelPedalPos 255 "SNA" ; +VAL_ 280 DI_brakePedalState 2 "INVALID" 0 "OFF" 1 "ON" ; +VAL_ 280 DI_driveBlocked 1 "DRIVE_BLOCKED_FRUNK" 0 "DRIVE_BLOCKED_NONE" 2 "DRIVE_BLOCKED_PROX" ; +VAL_ 280 DI_epbRequest 0 "DI_EPBREQUEST_NO_REQUEST" 1 "DI_EPBREQUEST_PARK" 2 "DI_EPBREQUEST_UNPARK" ; +VAL_ 280 DI_gear 4 "DI_GEAR_D" 0 "DI_GEAR_INVALID" 3 "DI_GEAR_N" 1 "DI_GEAR_P" 2 "DI_GEAR_R" 7 "DI_GEAR_SNA" ; +VAL_ 280 DI_immobilizerState 2 "DI_IMM_STATE_AUTHENTICATING" 3 "DI_IMM_STATE_DISARMED" 6 "DI_IMM_STATE_FAULT" 4 "DI_IMM_STATE_IDLE" 0 "DI_IMM_STATE_INIT_SNA" 1 "DI_IMM_STATE_REQUEST" 5 "DI_IMM_STATE_RESET" ; +VAL_ 280 DI_keepDrivePowerStateRequest 1 "KEEP_ALIVE" 0 "NO_REQUEST" ; +VAL_ 280 DI_systemState 4 "DI_SYS_ABORT" 5 "DI_SYS_ENABLE" 3 "DI_SYS_FAULT" 1 "DI_SYS_IDLE" 2 "DI_SYS_STANDBY" 0 "DI_SYS_UNAVAILABLE" ; +VAL_ 280 DI_trackModeState 1 "TRACK_MODE_AVAILABLE" 2 "TRACK_MODE_ON" 0 "TRACK_MODE_UNAVAILABLE" ; +VAL_ 280 DI_tractionControlMode 6 "Offroad Assist" 5 "Dyno Mode" 4 "Rolls Mode" 3 "Dev2" 2 "Dev1" 1 "Slip Start" 0 "Standard" ; +VAL_ 850 BMS_energyBuffer 255 "SNA" ; +VAL_ 850 BMS_energyToChargeComplete 2047 "SNA" ; +VAL_ 850 BMS_expectedEnergyRemaining 2047 "SNA" ; +VAL_ 850 BMS_idealEnergyRemaining 2047 "SNA" ; +VAL_ 850 BMS_nominalEnergyRemaining 2047 "SNA" ; +VAL_ 850 BMS_nominalFullPackEnergy 2047 "SNA" ; +VAL_ 914 BMS_packConfigMultiplexer 0 "Mux0" 1 "Mux1" ; +VAL_ 914 BMS_moduleType 0 "UNKNOWN" 1 "E3_NCT" 2 "E1_NCT" 3 "E3_CT" 4 "E1_CT" 5 "E1_CP" ; +VAL_ 914 BMS_reservedConfig_0 0 "BMS_CONFIG_0" 1 "BMS_CONFIG_1" 10 "BMS_CONFIG_10" 11 "BMS_CONFIG_11" 12 "BMS_CONFIG_12" 13 "BMS_CONFIG_13" 14 "BMS_CONFIG_14" 15 "BMS_CONFIG_15" 16 "BMS_CONFIG_16" 17 "BMS_CONFIG_17" 18 "BMS_CONFIG_18" 19 "BMS_CONFIG_19" 2 "BMS_CONFIG_2" 20 "BMS_CONFIG_20" 21 "BMS_CONFIG_21" 22 "BMS_CONFIG_22" 23 "BMS_CONFIG_23" 24 "BMS_CONFIG_24" 25 "BMS_CONFIG_25" 26 "BMS_CONFIG_26" 27 "BMS_CONFIG_27" 28 "BMS_CONFIG_28" 29 "BMS_CONFIG_29" 3 "BMS_CONFIG_3" 30 "BMS_CONFIG_30" 31 "BMS_CONFIG_31" 4 "BMS_CONFIG_4" 5 "BMS_CONFIG_5" 6 "BMS_CONFIG_6" 7 "BMS_CONFIG_7" 8 "BMS_CONFIG_8" 9 "BMS_CONFIG_9" ; +VAL_ 594 BMS_powerLimitsState 1 "POWER_CALCULATED_FOR_DRIVE" 0 "POWER_NOT_CALCULATED_FOR_DRIVE" ; +VAL_ 658 BattBeginningOfLifeEnergy292 1023 "SNA" ; +VAL_ 658 BMS_battTempPct 255 "SNA" ; +VAL_ 599 DI_uiSpeed 511 "DI_UI_SPEED_SNA" ; +VAL_ 599 DI_uiSpeedHighSpeed 511 "DI_UI_HIGH_SPEED_SNA" ; +VAL_ 599 DI_uiSpeedUnits 1 "DI_SPEED_KPH" 0 "DI_SPEED_MPH" ; +VAL_ 599 DI_vehicleSpeed 4095 "SNA" ; +VAL_ 680 CMPD_state 3 "CMPD_STATE_FAULT" 4 "CMPD_STATE_IDLE" 0 "CMPD_STATE_INIT" 1 "CMPD_STATE_RUNNING" 15 "CMPD_STATE_SNA" 2 "CMPD_STATE_STANDBY" ; +VAL_ 680 CMPD_wasteHeatState 1 "CMPD_WASTE_HEAT_STATE_ACTIVE" 2 "CMPD_WASTE_HEAT_STATE_NOT_AVAILABLE" 0 "CMPD_WASTE_HEAT_STATE_OFF" 3 "CMPD_WASTE_HEAT_STATE_UNUSED" ; +VAL_ 886 DIF_inverterTQF 0 "INVERTERT_INIT" 1 "INVERTERT_IRRATIONAL" 2 "INVERTERT_RATIONAL" 3 "INVERTERT_UNKNOWN" ; +VAL_ 789 DIR_inverterTQF 0 "INVERTERT_INIT" 1 "INVERTERT_IRRATIONAL" 2 "INVERTERT_RATIONAL" 3 "INVERTERT_UNKNOWN" ; +VAL_ 950 Odometer3B6 4294967 "SNA" ; +VAL_ 264 DIR_axleSpeed 32768 "SNA" ; +VAL_ 264 DIR_slavePedalPos 255 "SNA" ; +VAL_ 264 DIR_torqueActual 4096 "SNA" ; +VAL_ 264 DIR_torqueCommand 4096 "SNA" ; +VAL_ 294 DIR_vBatQF 0 "NOT_QUALIFIED" 1 "QUALIFIED" ; +VAL_ 421 DIF_vBatQF 0 "NOT_QUALIFIED" 1 "QUALIFIED" ; +VAL_ 552 EPBResmCaliperRequest228 3 "disengaging" 2 "engaging" 1 "idle" ; +VAL_ 552 EPBResmOperationTrigger228 22 "SuperPark" 6 "Released" 1 "ParkEngaged" ; +VAL_ 552 EPBRunitStatus228 10 "Disengaging" 8 "Engaging" 3 "ParkEngaged" 1 "DriveReleased" ; +VAL_ 648 EPBLesmCaliperRequest288 3 "disengaging" 2 "engaging" 1 "idle" ; +VAL_ 648 EPBLesmOperationTrigger288 22 "SuperPark" 6 "Released" 1 "ParkEngaged" ; +VAL_ 648 EPBLunitStatus288 10 "Disengaging" 8 "Engaging" 3 "ParkEngaged" 1 "DriveReleased" ; +VAL_ 2047 GTW_activeHighBeam 1 "ACTIVE" 0 "NOT_ACTIVE" ; +VAL_ 2047 GTW_airSuspension 0 "NONE" 2 "TESLA_ADAPTIVE" 1 "TESLA_STANDARD" ; +VAL_ 2047 GTW_airbagCutoffSwitch 0 "CUTOFF_SWITCH_DISABLED" 1 "CUTOFF_SWITCH_ENABLED" ; +VAL_ 2047 GTW_audioType 0 "BASE" 2 "BASE_WITH_PREMIUM200" 1 "PREMIUM" ; +VAL_ 2047 GTW_autopilot 4 "BASIC" 2 "ENHANCED" 1 "HIGHWAY" 0 "NONE" 3 "SELF_DRIVING" ; +VAL_ 2047 GTW_autopilotCameraType 0 "RCCB_CAMERAS" ; +VAL_ 2047 GTW_auxParkLamps 2 "EU" 0 "NA_BASE" 1 "NA_PREMIUM" 3 "NONE" ; +VAL_ 2047 GTW_bPillarNFCParam 0 "MODEL_3" 1 "MODEL_Y" ; +VAL_ 2047 GTW_brakeHWType 1 "BREMBO_LARGE_P42_BREMBO_44MOC" 3 "BREMBO_LARGE_P42_BREMBO_LARGE_44MOC" 2 "BREMBO_LARGE_P42_MANDO_43MOC" 0 "BREMBO_P42_MANDO_43MOC" ; +VAL_ 2047 GTW_brakeLineSwitchType 0 "DI_VC_SHARED" 1 "VC_ONLY" ; +VAL_ 2047 GTW_cabinPTCHeaterType 0 "BORGWARNER" 1 "NONE" ; +VAL_ 2047 GTW_chassisType 2 "MODEL_3_CHASSIS" 0 "MODEL_S_CHASSIS" 1 "MODEL_X_CHASSIS" 3 "MODEL_Y_CHASSIS" ; +VAL_ 2047 GTW_compressorType 2 "DENSO_41CC_11K" 1 "DENSO_41CC_8K" 0 "HANON_33CC" ; +VAL_ 2047 GTW_connectivityPackage 0 "BASE" 1 "PREMIUM" ; +VAL_ 2047 GTW_coolantPumpType 0 "DUAL" 1 "SINGLE_PUMP_BATT" ; +VAL_ 2047 GTW_dasHw 3 "PARKER_PASCAL_2_5" 4 "TESLA_AP3" ; +VAL_ 2047 GTW_deliveryStatus 1 "DELIVERED" 0 "NOT_DELIVERED" ; +VAL_ 2047 GTW_drivetrainType 1 "AWD" 0 "RWD" ; +VAL_ 2047 GTW_eBuckConfig 1 "DEV_BUCK" 0 "NONE" ; +VAL_ 2047 GTW_eCallEnabled 0 "DISABLED" 1 "ENABLED_OHC_SOS" 2 "ENABLED_UI_SOS" ; +VAL_ 2047 GTW_efficiencyPackage 0 "DEFAULT" 2 "M3_LR_2020" 3 "M3_LR_PERFORMANCE_2020" 1 "M3_SR_PLUS_2020" ; +VAL_ 2047 GTW_epasType 0 "MANDO_VGR69_GEN3" ; +VAL_ 2047 GTW_espValveType 0 "UNKNOWN" 1 "VALVE_TYPE_1" 2 "VALVE_TYPE_2" ; +VAL_ 2047 GTW_exteriorColor 5 "DEEP_BLUE" 3 "MIDNIGHT_SILVER" 6 "PEARL_WHITE" 0 "RED_MULTICOAT" 2 "SILVER_METALLIC" 1 "SOLID_BLACK" ; +VAL_ 2047 GTW_frontFogLamps 1 "INSTALLED" 0 "NOT_INSTALLED" ; +VAL_ 2047 GTW_frontSeatHeaters 1 "KONGSBERG_LOW_POWER" 0 "NONE" ; +VAL_ 2047 GTW_frontSeatReclinerHardware 3 "LEFT_RIGHT_SEAT_REDUCED_RANGE" 2 "LEFT_SEAT_REDUCED_RANGE" 1 "RIGHT_SEAT_REDUCED_RANGE" 0 "STANDARD_RANGE" ; +VAL_ 2047 GTW_frontSeatType 0 "BASE_TESLA" 3 "PREMIUM_L_TESLA_R_YANFENG" 2 "PREMIUM_L_YANFENG_R_TESLA" 1 "PREMIUM_TESLA" 4 "PREMIUM_YANFENG" ; +VAL_ 2047 GTW_headlamps 0 "BASE" 1 "PREMIUM" ; +VAL_ 2047 GTW_headlightLevelerType 1 "GEN1" 0 "NONE" ; +VAL_ 2047 GTW_homelinkType 1 "HOMELINK_V_OPT_2" 0 "NONE" ; +VAL_ 2047 GTW_hvacPanelVaneType 1 "CONVERGENT_V1" 0 "PARALLEL_V1" ; +VAL_ 2047 GTW_immersiveAudio 1 "BASE" 0 "DISABLED" 2 "PREMIUM" ; +VAL_ 2047 GTW_interiorLighting 0 "BASE" 1 "PREMIUM" 2 "PREMIUM_NO_POCKET_LIGHT" ; +VAL_ 2047 GTW_intrusionSensorType 0 "NOT_INSTALLED" 1 "VODAFONE" ; +VAL_ 2047 GTW_lumbarECUType 1 "ALFMEIER" 0 "NONE" ; +VAL_ 2047 GTW_mapRegion 4 "AU" 3 "CN" 1 "EU" 9 "HK" 5 "JP" 7 "KR" 8 "ME" 10 "MO" 2 "NONE" 6 "TW" 0 "US" ; +VAL_ 2047 GTW_memoryMirrors 0 "NOT_INSTALLED" 1 "SMR" ; +VAL_ 2047 GTW_numberHVILNodes 0 "HVIL_NODES_0" 1 "HVIL_NODES_1" 2 "HVIL_NODES_2" 3 "HVIL_NODES_3" 4 "HVIL_NODES_4" 5 "HVIL_NODES_5" ; +VAL_ 2047 GTW_packEnergy 3 "PACK_100_KWH" 0 "PACK_50_KWH" 2 "PACK_62_KWH" 1 "PACK_74_KWH" 4 "PACK_75_KWH" ; +VAL_ 2047 GTW_passengerAirbagType 2 "EUROW" 0 "FULL_SUPPRESSION" 1 "SAFETY_VENT" ; +VAL_ 2047 GTW_passengerOccupancySensorType 0 "OCS" 1 "RESISTIVE_PAD" ; +VAL_ 2047 GTW_pedestrianWarningSound 0 "NONE" 1 "SPEAKER" ; +VAL_ 2047 GTW_performancePackage 0 "BASE" 3 "BASE_PLUS" 4 "BASE_PLUS_AWD" 2 "LUDICROUS" 1 "PERFORMANCE" ; +VAL_ 2047 GTW_plcSupportType 2 "NATIVE_CHARGE_PORT" 0 "NONE" 1 "ONBOARD_ADAPTER" ; +VAL_ 2047 GTW_powerSteeringColumn 0 "NOT_INSTALLED" 1 "TK" ; +VAL_ 2047 GTW_radarHeaterType 1 "BECKER_THIN_3M" 0 "NONE" ; +VAL_ 2047 GTW_rearFogLamps 1 "INSTALLED" 0 "NOT_INSTALLED" ; +VAL_ 2047 GTW_rearGlassType 0 "NX" 1 "TSA5_NOPET" ; +VAL_ 2047 GTW_rearLightType 1 "EU_CN" 2 "GLOBAL" 0 "NA" ; +VAL_ 2047 GTW_rearSeatHeaters 1 "KONGSBERG_LOW_POWER" 0 "NONE" ; +VAL_ 2047 GTW_refrigerantType 0 "Default" 2 "R1234YF" 1 "R134A" ; +VAL_ 2047 GTW_restraintsHardwareType 22 "EUROW_ECALL_M3" 33 "EUROW_ECALL_MY" 23 "EUROW_NO_ECALL_M3" 34 "EUROW_NO_ECALL_MY" 21 "NA_M3" 32 "NA_MY" 31 "NA_MY_OLD" ; +VAL_ 2047 GTW_rightHandDrive 0 "LEFT" 1 "RIGHT" ; +VAL_ 2047 GTW_roofGlassType 0 "TSA3_PET" 1 "TSA5_NOPET" ; +VAL_ 2047 GTW_roofType 1 "FIXED_GLASS" 0 "METAL" 2 "PANORAMIC" ; +VAL_ 2047 GTW_softRange 1 "RANGE_220_MILES" 2 "RANGE_93_MILES" 0 "STANDARD" ; +VAL_ 2047 GTW_spoilerType 0 "NOT_INSTALLED" 1 "PASSIVE" ; +VAL_ 2047 GTW_steeringColumnMotorType 0 "BOSCH" 1 "JE" ; +VAL_ 2047 GTW_steeringColumnUJointType 0 "B_SAMPLE_PHASING" 1 "C_SAMPLE_PHASING" ; +VAL_ 2047 GTW_superchargingAccess 1 "ALLOWED" 0 "NOT_ALLOWED" 2 "PAY_AS_YOU_GO" ; +VAL_ 2047 GTW_tireType 4 "CONTI_ALL_SEASON_19" 17 "GOODYEAR_ALL_SEASON_20" 3 "HANKOOK_SUMMER_19" 1 "MICHELIN_ALL_SEASON_18" 19 "MICHELIN_ALL_SEASON_21" 2 "MICHELIN_SUMMER_18" 5 "MICHELIN_SUMMER_20" 18 "PIRELLI_SUMMER_21" 0 "UNKNOWN" ; +VAL_ 2047 GTW_towPackage 0 "NONE" 1 "TESLA_REV1" ; +VAL_ 2047 GTW_tpmsType 0 "CONTI_2" 1 "TESLA_BLE" ; +VAL_ 2047 GTW_twelveVBatteryType 0 "ATLASBX_B24_FLOODED" 1 "CLARIOS_B24_FLOODED" ; +VAL_ 2047 GTW_vdcType 0 "BOSCH_VDC" 1 "TESLA_VDC" ; +VAL_ 2047 GTW_wheelType 4 "GEMINI_19_SQUARE" 5 "GEMINI_19_STAGGERED" 0 "PINWHEEL_18" 18 "PINWHEEL_18_CAP_KIT" 1 "STILETTO_19" 2 "STILETTO_20" 14 "STILETTO_20_DARK_SQUARE" 3 "STILETTO_20_DARK_STAGGERED" 19 "ZEROG_20_GUNPOWDER" 17 "APOLLO_19_SILVER" 20 "APOLLO_19_SILVER_CAP_KIT" 15 "INDUCTION_20_BLACK" 16 "UBERTURBINE_21_BLACK" ; +VAL_ 2047 GTW_windshieldType 1 "EASTMAN_ACOUSTIC" 0 "SEKISUI_ACOUSTIC" ; +VAL_ 2047 GTW_xcpESP 0 "FALSE" 1 "TRUE" ; +VAL_ 2047 GTW_xcpIbst 0 "FALSE" 1 "TRUE" ; +VAL_ 818 BattBrickVoltageMax332 2 "qqq" 1 "test" ; + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/Model3CAN.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/Model3CAN.json new file mode 100644 index 0000000..08cd924 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/Model3CAN.json @@ -0,0 +1,88216 @@ +{ + "attributes": { + "BusType": "CAN" + }, + "baudrate": 0, + "ecu_defines": [ + { + "default": "", + "define": "STRING", + "name": "NodeLayerModules", + "type": "STRING" + }, + { + "default": "", + "define": "STRING", + "name": "ECU", + "type": "STRING" + }, + { + "default": "0", + "define": "INT 0 0", + "name": "CANoeJitterMax", + "type": "INT" + }, + { + "default": "0", + "define": "INT 0 0", + "name": "CANoeJitterMin", + "type": "INT" + }, + { + "default": "0", + "define": "INT 0 0", + "name": "CANoeDrift", + "type": "INT" + }, + { + "default": "0", + "define": "INT 0 0", + "name": "CANoeStartDelay", + "type": "INT" + }, + { + "default": "", + "define": "ENUM \"Cyclic\",\"SendType1\",\"SendType2\",\"SendType3\",\"SendType4\",\"SendType5\",\"SendType6\",\"SendType7\",\"SendType8\",\"SendType9\",\"No\",\"Yes\",\"No\",\"Yes\",\"No\",\"Yes\",\"No\",\"Yes\",\"int\",\"float\",\"undef\",\"No\",\"Yes\"", + "name": "GenNodAutoGenSnd", + "type": "ENUM" + }, + { + "default": "", + "define": "ENUM \"Cyclic\",\"SendType1\",\"SendType2\",\"SendType3\",\"SendType4\",\"SendType5\",\"SendType6\",\"SendType7\",\"SendType8\",\"SendType9\",\"No\",\"Yes\",\"No\",\"Yes\",\"No\",\"Yes\",\"No\",\"Yes\",\"int\",\"float\",\"undef\",\"No\",\"Yes\",\"No\",\"Yes\"", + "name": "GenNodAutoGenDsp", + "type": "ENUM" + } + ], + "ecus": { + "ChassisBus": null, + "PartyBus": null, + "Receiver": null, + "VehicleBus": null + }, + "enumerations": { + "New_Value_Table_931": { + "1": "test", + "2": "qqq" + } + }, + "env_defines": [ + { + "default": null, + "define": "HEX 4294967295 4294967295", + "name": "New_AttrDef_29", + "type": "HEX" + } + ], + "env_vars": {}, + "fd_baudrate": 0, + "frame_defines": [ + { + "default": "", + "define": "ENUM \"Cyclic\",\"SendType1\",\"SendType2\",\"SendType3\",\"SendType4\",\"SendType5\",\"SendType6\",\"SendType7\",\"SendType8\",\"SendType9\"", + "name": "GenMsgSendType", + "type": "ENUM" + }, + { + "default": "0", + "define": "INT 0 0", + "name": "GenMsgDelayTime", + "type": "INT" + }, + { + "default": "0", + "define": "INT 0 0", + "name": "GenMsgCycleTime", + "type": "INT" + }, + { + "default": "0", + "define": "INT 0 10000", + "name": "GenMsgTimeoutTime", + "type": "INT" + }, + { + "default": "", + "define": "ENUM \"Cyclic\",\"SendType1\",\"SendType2\",\"SendType3\",\"SendType4\",\"SendType5\",\"SendType6\",\"SendType7\",\"SendType8\",\"SendType9\",\"No\",\"Yes\"", + "name": "GenMsgAutoGenSnd", + "type": "ENUM" + }, + { + "default": "", + "define": "ENUM \"Cyclic\",\"SendType1\",\"SendType2\",\"SendType3\",\"SendType4\",\"SendType5\",\"SendType6\",\"SendType7\",\"SendType8\",\"SendType9\",\"No\",\"Yes\",\"No\",\"Yes\"", + "name": "GenMsgAutoGenDsp", + "type": "ENUM" + }, + { + "default": "", + "define": "STRING", + "name": "GenMsgBackgroundColor", + "type": "STRING" + }, + { + "default": "", + "define": "STRING", + "name": "GenMsgForegroundColor", + "type": "STRING" + }, + { + "default": "0", + "define": "INT 0 0", + "name": "matchingcriteria", + "type": "INT" + }, + { + "default": "0", + "define": "INT 0 0", + "name": "filterlabeling", + "type": "INT" + }, + { + "default": "", + "define": "STRING", + "name": "SystemMessageLongSymbol", + "type": "STRING" + } + ], + "global_defines": [ + { + "default": "", + "define": "STRING", + "name": "ProtocolType", + "type": "STRING" + }, + { + "default": "", + "define": "STRING", + "name": "BusType", + "type": "STRING" + }, + { + "default": "", + "define": "STRING", + "name": "GenEnvVarEndingDsp", + "type": "STRING" + }, + { + "default": "", + "define": "STRING", + "name": "GenEnvVarEndingSnd", + "type": "STRING" + }, + { + "default": "", + "define": "STRING", + "name": "GenEnvVarPrefix", + "type": "STRING" + }, + { + "default": "JW2021Aug29", + "define": "STRING", + "name": "Modified", + "type": "STRING" + } + ], + "messages": [ + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 12, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID00CUI_status", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_audioActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_autopilotTrial", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "NONE", + "1": "START", + "2": "STOP", + "3": "ACTIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_bluetoothActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_cameraActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_cellActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_cellConnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "UI_cellNetworkTechnology", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": { + "0": "CELL_NETWORK_NONE", + "1": "CELL_NETWORK_GPRS", + "2": "CELL_NETWORK_EDGE", + "3": "CELL_NETWORK_UMTS", + "4": "CELL_NETWORK_HSDPA", + "5": "CELL_NETWORK_HSUPA", + "6": "CELL_NETWORK_HSPA", + "7": "CELL_NETWORK_LTE", + "8": "CELL_NETWORK_GSM", + "9": "CELL_NETWORK_CDMA", + "10": "CELL_NETWORK_WCDMA", + "15": "CELL_NETWORK_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "-128", + "mux_value": null, + "name": "UI_cellReceiverPower", + "offset": "-128", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "dB", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "UI_cellSignalBars", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "ZERO", + "1": "ONE", + "2": "TWO", + "3": "THREE", + "4": "FOUR", + "5": "FIVE", + "7": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "100", + "min": "-20", + "mux_value": null, + "name": "UI_cpuTemperature", + "offset": "40", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_developmentCar", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_displayOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_displayReady", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_factoryReset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "NONE_SNA", + "1": "DEVELOPER", + "2": "DIAGNOSTIC", + "3": "CUSTOMER" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "UI_falseTouchCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_gpsActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "100", + "min": "-20", + "mux_value": null, + "name": "UI_pcbTemperature", + "offset": "40", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_radioActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_readyForDrive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_screenshotActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_systemActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_touchActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_vpnActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_wifiActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_wifiConnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 851, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID353UI_status", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_audioActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_autopilotTrial", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_bluetoothActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_cameraActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_cellActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_cellConnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "UI_cellNetworkTechnology", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "-128", + "mux_value": null, + "name": "UI_cellReceiverPower", + "offset": "-128", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "dB", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "UI_cellSignalBars", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "100", + "min": "-20", + "mux_value": null, + "name": "UI_cpuTemperature", + "offset": "40", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_developmentCar", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_displayOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_displayReady", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_factoryReset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "UI_falseTouchCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_gpsActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "100", + "min": "-20", + "mux_value": null, + "name": "UI_pcbTemperature", + "offset": "40", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_radioActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_readyForDrive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_screenshotActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_systemActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_touchActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_vpnActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_wifiActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_wifiConnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 22, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 1, + "mux_names": {}, + "name": "ID016DI_bmsRequest", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_bmsOpenContactorsRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DI_bmsRequestInterfaceVersion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 130, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID082UI_tripPlanning", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "327.67", + "min": "-327.67", + "mux_value": null, + "name": "UI_energyAtDestination", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "kWh", + "values": { + "32767": "TRIP_TOO_LONG", + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "327.67", + "min": "-327.67", + "mux_value": null, + "name": "UI_hindsightEnergy", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kWh", + "values": { + "32767": "TRIP_TOO_LONG", + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_navToSupercharger", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "327.67", + "min": "-327.67", + "mux_value": null, + "name": "UI_predictedEnergy", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kWh", + "values": { + "32767": "TRIP_TOO_LONG", + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_requestActiveBatteryHeating", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": "Navigation Active", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_tripPlanningActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 257, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID101RCM_inertial1", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "RCM_inertial1Checksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "RCM_inertial1Counter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 15, + "comment": "Pitch", + "comments": {}, + "factor": "0.00025", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "4.09575", + "min": "-4.096", + "mux_value": null, + "name": "RCM_pitchRate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "rad/s", + "values": { + "16384": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "RCM_pitchRateQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "INIT", + "1": "VALID", + "2": "TEMP_INVALID", + "3": "FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 15, + "comment": "Roll", + "comments": {}, + "factor": "0.00025", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "4.09575", + "min": "-4.096", + "mux_value": null, + "name": "RCM_rollRate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "unit": "rad/s", + "values": { + "16384": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "RCM_rollRateQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "INIT", + "1": "VALID", + "2": "TEMP_INVALID", + "3": "FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "Yaw", + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3.2766", + "min": "-3.2766", + "mux_value": null, + "name": "RCM_yawRate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "rad/s", + "values": { + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "RCM_yawRateQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "FAULTED", + "1": "NOT_FAULTED" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 273, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID111RCM_inertial2", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "RCM_inertial2Checksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "RCM_inertial2Counter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "L/R Acceleration", + "comments": {}, + "factor": "0.00125", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40.9575", + "min": "-40.9575", + "mux_value": null, + "name": "RCM_lateralAccel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "m/s^2", + "values": { + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "RCM_lateralAccelQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": { + "0": "FAULTED", + "1": "NOT_FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "F/B Acceleration", + "comments": {}, + "factor": "0.00125", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40.9575", + "min": "-40.9575", + "mux_value": null, + "name": "RCM_longitudinalAccel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "m/s^2", + "values": { + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "RCM_longitudinalAccelQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "FAULTED", + "1": "NOT_FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "Vertical Acceleration", + "comments": {}, + "factor": "0.00125", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40.9575", + "min": "-40.9575", + "mux_value": null, + "name": "RCM_verticalAccel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "m/s^2", + "values": { + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "RCM_verticalAccelQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "FAULTED", + "1": "NOT_FAULTED" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 278, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "RCM_inertial2New", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "RCM_inertial2Checksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "RCM_inertial2Counter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00125", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40.9575", + "min": "-40.9575", + "mux_value": null, + "name": "RCM_lateralAccel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "m/s^2", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "RCM_lateralAccelQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00125", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40.9575", + "min": "-40.9575", + "mux_value": null, + "name": "RCM_longitudinalAccel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "m/s^2", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "RCM_longitudinalAccelQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00125", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40.9575", + "min": "-40.9575", + "mux_value": null, + "name": "RCM_verticalAccel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "m/s^2", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "RCM_verticalAccelQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 258, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID102VCLEFT_doorStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontHandlePWM", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontHandlePulled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontHandlePulledPersist", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontIntSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontLatchStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "LATCH_SNA", + "1": "LATCH_OPENED", + "2": "LATCH_CLOSED", + "3": "LATCH_CLOSING", + "4": "LATCH_OPENING", + "5": "LATCH_AJAR", + "6": "LATCH_TIMEOUT", + "7": "LATCH_DEFAULT", + "8": "LATCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontLatchSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontRelActuatorSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_mirrorDipped", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCLEFT_mirrorFoldState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "MIRROR_FOLD_STATE_UNKNOWN", + "1": "MIRROR_FOLD_STATE_FOLDED", + "2": "MIRROR_FOLD_STATE_UNFOLDED", + "3": "MIRROR_FOLD_STATE_FOLDING", + "4": "MIRROR_FOLD_STATE_UNFOLDING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCLEFT_mirrorHeatState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "HEATER_STATE_SNA", + "1": "HEATER_STATE_ON", + "2": "HEATER_STATE_OFF", + "3": "HEATER_STATE_OFF_UNAVAILABLE", + "4": "HEATER_STATE_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCLEFT_mirrorRecallState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 55, + "values": { + "0": "MIRROR_RECALL_STATE_INIT", + "1": "MIRROR_RECALL_STATE_RECALLING_AXIS_1", + "2": "MIRROR_RECALL_STATE_RECALLING_AXIS_2", + "3": "MIRROR_RECALL_STATE_RECALLING_COMPLETE", + "4": "MIRROR_RECALL_STATE_RECALLING_FAILED", + "5": "MIRROR_RECALL_STATE_RECALLING_STOPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCLEFT_mirrorState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": { + "0": "MIRROR_STATE_IDLE", + "1": "MIRROR_STATE_TILT_X", + "2": "MIRROR_STATE_TILT_Y", + "3": "MIRROR_STATE_FOLD_UNFOLD", + "4": "MIRROR_STATE_RECALL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.02", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCLEFT_mirrorTiltXPosition", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.02", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCLEFT_mirrorTiltYPosition", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearHandlePWM", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearHandlePulled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearIntSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearLatchStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "LATCH_SNA", + "1": "LATCH_OPENED", + "2": "LATCH_CLOSED", + "3": "LATCH_CLOSING", + "4": "LATCH_OPENING", + "5": "LATCH_AJAR", + "6": "LATCH_TIMEOUT", + "7": "LATCH_DEFAULT", + "8": "LATCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearLatchSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearRelActuatorSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 259, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID103VCRIGHT_doorStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontHandlePWM", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontHandlePulled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontHandlePulledPersist", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontIntSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontLatchStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "LATCH_SNA", + "1": "LATCH_OPENED", + "2": "LATCH_CLOSED", + "3": "LATCH_CLOSING", + "4": "LATCH_OPENING", + "5": "LATCH_AJAR", + "6": "LATCH_TIMEOUT", + "7": "LATCH_DEFAULT", + "8": "LATCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontLatchSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontRelActuatorSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_mirrorDipped", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_mirrorFoldState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "MIRROR_FOLD_STATE_UNKNOWN", + "1": "MIRROR_FOLD_STATE_FOLDED", + "2": "MIRROR_FOLD_STATE_UNFOLDED", + "3": "MIRROR_FOLD_STATE_FOLDING", + "4": "MIRROR_FOLD_STATE_UNFOLDING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_mirrorRecallState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": { + "0": "MIRROR_RECALL_STATE_INIT", + "1": "MIRROR_RECALL_STATE_RECALLING_AXIS_1", + "2": "MIRROR_RECALL_STATE_RECALLING_AXIS_2", + "3": "MIRROR_RECALL_STATE_RECALLING_COMPLETE", + "4": "MIRROR_RECALL_STATE_RECALLING_FAILED", + "5": "MIRROR_RECALL_STATE_RECALLING_STOPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_mirrorState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": { + "0": "MIRROR_STATE_IDLE", + "1": "MIRROR_STATE_TILT_X", + "2": "MIRROR_STATE_TILT_Y", + "3": "MIRROR_STATE_FOLD_UNFOLD", + "4": "MIRROR_STATE_RECALL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.02", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_mirrorTiltXPosition", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.02", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_mirrorTiltYPosition", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearHandlePWM", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearHandlePulled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearIntSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearLatchStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "LATCH_SNA", + "1": "LATCH_OPENED", + "2": "LATCH_CLOSED", + "3": "LATCH_CLOSING", + "4": "LATCH_OPENING", + "5": "LATCH_AJAR", + "6": "LATCH_TIMEOUT", + "7": "LATCH_DEFAULT", + "8": "LATCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearLatchSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearRelActuatorSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_reservedForBackCompat", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_trunkLatchStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "LATCH_SNA", + "1": "LATCH_OPENED", + "2": "LATCH_CLOSED", + "3": "LATCH_CLOSING", + "4": "LATCH_OPENING", + "5": "LATCH_AJAR", + "6": "LATCH_TIMEOUT", + "7": "LATCH_DEFAULT", + "8": "LATCH_FAULT" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 275, + "is_complex_multiplexed": false, + "is_extended_frame": true, + "is_fd": false, + "is_j1939": false, + "length": 3, + "mux_names": {}, + "name": "ID113GTW_bmpDebug", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "GTW_BMP_AWAKE_PIN", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "GTW_BMP_GTW_PMIC_ERROR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "GTW_BMP_GTW_PMIC_ON", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "GTW_BMP_GTW_PMIC_THERMTRIP", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "GTW_BMP_GTW_SOC_PWROK", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "GTW_BMP_GTW_nSUSPWR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "GTW_BMP_PERIPH_nRST_3V3_PIN", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "GTW_BMP_PGOOD_PIN", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "GTW_BMP_PMIC_PWR_ON", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": true, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "GTW_bmpState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "BMP_STATE_OFF", + "1": "BMP_STATE_ON", + "2": "BMP_STATE_ASLEEP", + "3": "BMP_STATE_MIA", + "4": "BMP_STATE_RESET", + "5": "BMP_STATE_POWER_CYCLE", + "255": "DUMMY" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 281, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 2, + "mux_names": {}, + "name": "ID119VCSEC_windowRequests", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCSEC_hvacRunScreenProtectOnly", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCSEC_windowRequestLF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCSEC_windowRequestLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "mux_value": null, + "name": "VCSEC_windowRequestPercent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCSEC_windowRequestRF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCSEC_windowRequestRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCSEC_windowRequestType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "WINDOW_REQUEST_IDLE", + "1": "WINDOW_REQUEST_GOTO_PERCENT", + "2": "WINDOW_REQUEST_GOTO_CRACKED", + "3": "WINDOW_REQUEST_GOTO_CLOSED" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 290, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 6, + "mux_names": {}, + "name": "ID122VCLEFT_doorStatus2", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontDoorState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": { + "0": "DOOR_STATE_UNKNOWN", + "1": "DOOR_STATE_CLOSED", + "2": "DOOR_STATE_WAIT_FOR_SHORT_DROP", + "3": "DOOR_STATE_RELEASING_LATCH", + "4": "DOOR_STATE_OPEN_OR_AJAR" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontHandle5vEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontHandleDebounceStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "EXTERIOR_HANDLE_STATUS_SNA", + "1": "EXTERIOR_HANDLE_STATUS_INDETERMINATE", + "2": "EXTERIOR_HANDLE_STATUS_NOT_ACTIVE", + "3": "EXTERIOR_HANDLE_STATUS_ACTIVE", + "4": "EXTERIOR_HANDLE_STATUS_DISCONNECTED", + "5": "EXTERIOR_HANDLE_STATUS_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontHandleRawStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "EXTERIOR_HANDLE_STATUS_SNA", + "1": "EXTERIOR_HANDLE_STATUS_INDETERMINATE", + "2": "EXTERIOR_HANDLE_STATUS_NOT_ACTIVE", + "3": "EXTERIOR_HANDLE_STATUS_ACTIVE", + "4": "EXTERIOR_HANDLE_STATUS_DISCONNECTED", + "5": "EXTERIOR_HANDLE_STATUS_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "VCLEFT_frontLatchRelDuty", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.046", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "2.898", + "min": "-2.944", + "mux_value": null, + "name": "VCLEFT_mirrorFoldMaxCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearDoorState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "DOOR_STATE_UNKNOWN", + "1": "DOOR_STATE_CLOSED", + "2": "DOOR_STATE_WAIT_FOR_SHORT_DROP", + "3": "DOOR_STATE_RELEASING_LATCH", + "4": "DOOR_STATE_OPEN_OR_AJAR" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearHandle5vEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearHandleDebounceStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "values": { + "0": "EXTERIOR_HANDLE_STATUS_SNA", + "1": "EXTERIOR_HANDLE_STATUS_INDETERMINATE", + "2": "EXTERIOR_HANDLE_STATUS_NOT_ACTIVE", + "3": "EXTERIOR_HANDLE_STATUS_ACTIVE", + "4": "EXTERIOR_HANDLE_STATUS_DISCONNECTED", + "5": "EXTERIOR_HANDLE_STATUS_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearHandleRawStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "0": "EXTERIOR_HANDLE_STATUS_SNA", + "1": "EXTERIOR_HANDLE_STATUS_INDETERMINATE", + "2": "EXTERIOR_HANDLE_STATUS_NOT_ACTIVE", + "3": "EXTERIOR_HANDLE_STATUS_ACTIVE", + "4": "EXTERIOR_HANDLE_STATUS_DISCONNECTED", + "5": "EXTERIOR_HANDLE_STATUS_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rearLatchRelDuty", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_vehicleInMotion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 291, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID123UI_alertMatrix1", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a001_DriverDoorOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a002_DoorOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a003_TrunkOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a004_FrunkOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a005_HeadlightsOnDoorOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a006_RemoteServiceAlert", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a007_SoftPackConfigMismatch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a008_TouchScreenError", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a009_SquashfsError", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a010_MapsMissing", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a011_IncorrectMap", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a012_NotOnPrivateProperty", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a013_TPMSHardWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a014_TPMSSoftWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a015_TPMSOverPressureWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a016_TPMSTemperatureWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a017_TPMSSystemFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a018_SlipStartOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a019_ParkBrakeFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a020_SteeringReduced", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a021_RearSeatbeltUnbuckled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a022_ApeFusesEtc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a023_CellInternetCheckFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a024_WifiInternetCheckFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 23, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a025_WifiOnlineCheckFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a026_ModemResetLoopDetected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a027_AutoSteerMIA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a028_FrontTrunkPopupClosed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a029_ModemMIA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a030_ModemVMCrash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a031_BrakeFluidLow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a032_CellModemRecoveryResets", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a033_ApTrialExpired", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a034_WakeupProblem", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a035_AudioWatchdogKernelError", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a036_AudioWatchdogHfpError", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a037_AudioWatchdogXrunStormEr", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a038_AudioWatchdogA2bI2cLocku", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a039_AudioA2bNeedRediscovery", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a040_HomelinkTransmit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a041_AudioDmesgXrun", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a042_AudioDmesgRtThrottling", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a043_InvalidMapDataOverride", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a044_AudioDmesgDspException", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a045_ECallNeedsService", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a046_BackupCameraStreamError", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a047_CellRoamingDisallowed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a048_AudioPremiumAmpCheckFail", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a049_BrakeShiftRequired", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a050_BackupCameraIPUTimeout", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a051_BackupCameraFrameTimeout", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a052_KernelPanicReported", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a053_QtCarExitError", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a054_AudioBoostPowerBad", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a055_ManualECallDisabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a056_ManualECallButtonDisconn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 55, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a057_CellAntennaDisconnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a058_GPSAntennaDisconnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 57, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a059_ECallSpeakerDisconnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a060_ECallMicDisconnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a061_SIMTestFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a062_ENSTestFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a063_CellularTestFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_a064_ModemFirmwareTestFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 322, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID142VCLEFT_liftgateStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCLEFT_liftgateStatusIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "LIFTGATE_STATUS_INDEX_0", + "1": "LIFTGATE_STATUS_INDEX_1", + "2": "LIFTGATE_STATUS_INDEX_INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgateLatchRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": { + "0": "LATCH_REQUEST_NONE", + "1": "LATCH_REQUEST_CINCH", + "2": "LATCH_REQUEST_RELEASE", + "3": "LATCH_REQUEST_FORCE_RELEASE", + "4": "LATCH_REQUEST_RESET" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgateMvmntNotAllowedCo", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "PLG_MVMT_NOT_ALLOWED_NONE", + "1": "PLG_MVMT_NOT_ALLOWED_LOW_12V", + "2": "PLG_MVMT_NOT_ALLOWED_VEHICLE_AT_SPEED", + "3": "PLG_MVMT_NOT_ALLOWED_UNCALIBRATED", + "4": "PLG_MVMT_NOT_ALLOWED_EXTERIOR_PRESS_AT_MAX_OPEN", + "5": "PLG_MVMT_NOT_ALLOWED_LOCKED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgatePhysicalChimeRequ", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": { + "0": "LIFTGATE_CHIME_REQUEST_NONE", + "1": "LIFTGATE_CHIME_REQUEST_ONE_SHORT", + "2": "LIFTGATE_CHIME_REQUEST_TWO_SHORT", + "3": "LIFTGATE_CHIME_REQUEST_THREE_SHORT", + "4": "LIFTGATE_CHIME_REQUEST_ONE_LONG" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "95", + "min": "-5", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgatePosition", + "offset": "46", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgatePositionCalibrate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgateRequestSource", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": { + "0": "PLG_REQUEST_SOURCE_NONE", + "1": "PLG_REQUEST_SOURCE_MCU_SWITCH", + "2": "PLG_REQUEST_SOURCE_EXTERIOR", + "3": "PLG_REQUEST_SOURCE_SHUTFACE", + "4": "PLG_REQUEST_SOURCE_KEY_TRUNK_BUTTON", + "5": "PLG_REQUEST_SOURCE_CLOSE_ALL", + "6": "PLG_REQUEST_SOURCE_MCU_CLOSE", + "7": "PLG_REQUEST_SOURCE_UDS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "30", + "min": "-30", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgateSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "deg/s", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "12", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgateState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "PLG_STATE_INIT", + "1": "PLG_STATE_OFF", + "2": "PLG_STATE_BACKOFF", + "3": "PLG_STATE_OPENING", + "4": "PLG_STATE_CLOSING", + "5": "PLG_STATE_CLOSED", + "6": "PLG_STATE_LATCH_OPENING", + "7": "PLG_STATE_LATCH_CLOSING", + "8": "PLG_STATE_NOT_INSTALLED", + "9": "PLG_STATE_UNKNOWN", + "10": "PLG_STATE_LATCH_EXIT", + "11": "PLG_STATE_END_OF_TRAVEL", + "12": "PLG_STATE_LATCH_ENTRY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgateStoppingCondition", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "PLG_STOPPING_CONDITION_NONE", + "1": "PLG_STOPPING_CONDITION_PINCH", + "2": "PLG_STOPPING_CONDITION_OBSTACLE_STALL", + "3": "PLG_STOPPING_CONDITION_LOW_12V", + "4": "PLG_STOPPING_CONDITION_STATE_TIMEOUT", + "5": "PLG_STOPPING_CONDITION_VEHICLE_AT_SPEED", + "6": "PLG_STOPPING_CONDITION_OBSTACLE_CURRENT", + "7": "PLG_STOPPING_CONDITION_OBSTACLE_TRAJ_POS", + "8": "PLG_STOPPING_CONDITION_OBSTACLE_TRAJ_VEL", + "9": "PLG_STOPPING_CONDITION_UNCALIBRATED", + "10": "PLG_STOPPING_CONDITION_LATCH_FAULT", + "11": "PLG_STOPPING_CONDITION_COUNT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "30", + "min": "-30", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgateStrutCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "100", + "min": "-100", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgateStrutDutyCycle", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_liftgateStatusIndex", + "name": "VCLEFT_liftgateUIChimeRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "LIFTGATE_CHIME_REQUEST_NONE", + "1": "LIFTGATE_CHIME_REQUEST_ONE_SHORT", + "2": "LIFTGATE_CHIME_REQUEST_TWO_SHORT", + "3": "LIFTGATE_CHIME_REQUEST_THREE_SHORT", + "4": "LIFTGATE_CHIME_REQUEST_ONE_LONG" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 325, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID145ESP_status", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_absBrakeEvent2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "ABS_EVENT_NOT_ACTIVE", + "1": "ABS_EVENT_ACTIVE_FRONT_REAR", + "2": "ABS_EVENT_ACTIVE_FRONT", + "3": "ABS_EVENT_ACTIVE_REAR" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_absFaultLamp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": { + "0": "ABS_FAULT_LAMP_OFF", + "1": "ABS_FAULT_LAMP_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_brakeApply", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": { + "0": "BLS_INACTIVE", + "1": "BLS_ACTIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_brakeDiscWipingActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "BDW_INACTIVE", + "1": "BDW_ACTIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_brakeLamp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": { + "0": "LAMP_OFF", + "1": "LAMP_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "16382", + "min": "0", + "mux_value": null, + "name": "ESP_brakeTorqueTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "unit": "Nm", + "values": { + "8191": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_btcTargetState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "OFF", + "1": "BACKUP", + "2": "ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_cdpStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "CDP_IS_NOT_AVAILABLE", + "1": "CDP_IS_AVAILABLE", + "2": "ACTUATING_EPB_CDP", + "3": "CDP_COMMAND_INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_driverBrakeApply", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": { + "0": "NotInit_orOff", + "1": "Not_Applied", + "2": "Driver_applying_brakes", + "3": "Faulty_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_ebdFaultLamp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "EBD_FAULT_LAMP_OFF", + "1": "EBD_FAULT_LAMP_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_ebrStandstillSkid", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "NO_STANDSTILL_SKID", + "1": "STANDSTILL_SKID_DETECTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_ebrStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": { + "0": "EBR_IS_NOT_AVAILABLE", + "1": "EBR_IS_AVAILABLE", + "2": "ACTUATING_DI_EBR", + "3": "EBR_COMMAND_INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_espFaultLamp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "ESP_FAULT_LAMP_OFF", + "1": "ESP_FAULT_LAMP_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_espLampFlash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "ESP_LAMP_OFF", + "1": "ESP_LAMP_FLASH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_espModeActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "ESP_MODE_00_NORMAL", + "1": "ESP_MODE_01", + "2": "ESP_MODE_02", + "3": "ESP_MODE_03" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_hydraulicBoostEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_lateralAccelQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": { + "0": "UNDEFINABLE_ACCURACY", + "1": "IN_SPEC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_longitudinalAccelQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "UNDEFINABLE_ACCURACY", + "1": "IN_SPEC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_ptcTargetState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "FAULT", + "1": "BACKUP", + "2": "ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_stabilityControlSts2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "INIT", + "1": "ON", + "2": "ENGAGED", + "3": "FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "ESP_statusChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "ESP_statusCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_steeringAngleQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "0": "UNDEFINABLE_ACCURACY", + "1": "IN_SPEC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_yawRateQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "UNDEFINABLE_ACCURACY", + "1": "IN_SPEC" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 470, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID1D6DI_limits", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitBaseSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitClutch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitDcCapTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitDeltaFluidTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitDiff", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitDischargePower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitDriveTorque", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitGracefulPowerOff", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 23, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitIBat", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitIGBTJunctTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitInverterTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitLimpMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitMotorCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitMotorSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitMotorVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitObstacleDetection", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitOilPumpFluidTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitPCBTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitPoleTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitRegenPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitRegenTorque", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitRotorTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitShift", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitShockTorque", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitStatorFrequency", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitStatorTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitTCDrive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitTCRegen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitVBatHigh", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitVBatLow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitVehicleSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitdcLinkCapTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limithvDcCableTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitnegDcBusbarTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitphaseOutBusBarWeldTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitphaseOutBusbarTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitphaseOutLugTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_limitposDcBusbarTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 522, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 6, + "mux_names": {}, + "name": "ID20AHVP_contactorState", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_dcLinkAllowedToEnergize", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_fcContNegativeAuxOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "HVP_fcContNegativeState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "CONTACTOR_STATE_SNA", + "1": "CONTACTOR_STATE_OPEN", + "2": "CONTACTOR_STATE_PRECHARGE", + "3": "CONTACTOR_STATE_BLOCKED", + "4": "CONTACTOR_STATE_PULLED_IN", + "5": "CONTACTOR_STATE_OPENING", + "6": "CONTACTOR_STATE_ECONOMIZED", + "7": "CONTACTOR_STATE_WELDED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_fcContPositiveAuxOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "HVP_fcContPositiveState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "CONTACTOR_STATE_SNA", + "1": "CONTACTOR_STATE_OPEN", + "2": "CONTACTOR_STATE_PRECHARGE", + "3": "CONTACTOR_STATE_BLOCKED", + "4": "CONTACTOR_STATE_PULLED_IN", + "5": "CONTACTOR_STATE_OPENING", + "6": "CONTACTOR_STATE_ECONOMIZED", + "7": "CONTACTOR_STATE_WELDED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "mux_value": null, + "name": "HVP_fcContactorSetState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": { + "0": "CONTACTOR_SET_STATE_SNA", + "1": "CONTACTOR_SET_STATE_OPEN", + "2": "CONTACTOR_SET_STATE_CLOSING", + "3": "CONTACTOR_SET_STATE_BLOCKED", + "4": "CONTACTOR_SET_STATE_OPENING", + "5": "CONTACTOR_SET_STATE_CLOSED", + "6": "CONTACTOR_SET_STATE_PARTIAL_WELD", + "7": "CONTACTOR_SET_STATE_WELDED", + "8": "CONTACTOR_SET_STATE_POSITIVE_CLOSED", + "9": "CONTACTOR_SET_STATE_NEGATIVE_CLOSED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_fcCtrsClosingAllowed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_fcCtrsOpenNowRequested", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_fcCtrsOpenRequested", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "HVP_fcCtrsRequestStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "REQUEST_NOT_ACTIVE", + "1": "REQUEST_ACTIVE", + "2": "REQUEST_COMPLETED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_fcCtrsResetRequestRequired", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "HVP_fcLinkAllowedToEnergize", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "FC_LINK_ENERGY_NONE", + "1": "FC_LINK_ENERGY_AC", + "2": "FC_LINK_ENERGY_DC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "mux_value": null, + "name": "HVP_hvilStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "UNKNOWN", + "1": "STATUS_OK", + "2": "CURRENT_SOURCE_FAULT", + "3": "INTERNAL_OPEN_FAULT", + "4": "VEHICLE_OPEN_FAULT", + "5": "PENTHOUSE_LID_OPEN_FAULT", + "6": "UNKNOWN_LOCATION_OPEN_FAULT", + "7": "VEHICLE_NODE_FAULT", + "8": "NO_12V_SUPPLY", + "9": "VEHICLE_OR_PENTHOUSE_LID_OPEN_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "HVP_packContNegativeState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "CONTACTOR_STATE_SNA", + "1": "CONTACTOR_STATE_OPEN", + "2": "CONTACTOR_STATE_PRECHARGE", + "3": "CONTACTOR_STATE_BLOCKED", + "4": "CONTACTOR_STATE_PULLED_IN", + "5": "CONTACTOR_STATE_OPENING", + "6": "CONTACTOR_STATE_ECONOMIZED", + "7": "CONTACTOR_STATE_WELDED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "HVP_packContPositiveState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "CONTACTOR_STATE_SNA", + "1": "CONTACTOR_STATE_OPEN", + "2": "CONTACTOR_STATE_PRECHARGE", + "3": "CONTACTOR_STATE_BLOCKED", + "4": "CONTACTOR_STATE_PULLED_IN", + "5": "CONTACTOR_STATE_OPENING", + "6": "CONTACTOR_STATE_ECONOMIZED", + "7": "CONTACTOR_STATE_WELDED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "mux_value": null, + "name": "HVP_packContactorSetState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "CONTACTOR_SET_STATE_SNA", + "1": "CONTACTOR_SET_STATE_OPEN", + "2": "CONTACTOR_SET_STATE_CLOSING", + "3": "CONTACTOR_SET_STATE_BLOCKED", + "4": "CONTACTOR_SET_STATE_OPENING", + "5": "CONTACTOR_SET_STATE_CLOSED", + "6": "CONTACTOR_SET_STATE_PARTIAL_WELD", + "7": "CONTACTOR_SET_STATE_WELDED", + "8": "CONTACTOR_SET_STATE_POSITIVE_CLOSED", + "9": "CONTACTOR_SET_STATE_NEGATIVE_CLOSED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_packCtrsClosingAllowed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_packCtrsOpenNowRequested", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_packCtrsOpenRequested", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "HVP_packCtrsRequestStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": { + "0": "REQUEST_NOT_ACTIVE", + "1": "REQUEST_ACTIVE", + "2": "REQUEST_COMPLETED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_packCtrsResetRequestRequired", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_pyroTestInProgress", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 526, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID20EPARK_sdiFront", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "PARK_sdiFrontChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "PARK_sdiFrontCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor1RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor2RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor3RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor4RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor5RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor6RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 537, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID219VCSEC_TPMSData", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCSEC_TPMSDataIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "TPMS_DATA_SENSOR_0", + "1": "TPMS_DATA_SENSOR_1", + "2": "TPMS_DATA_SENSOR_2", + "3": "TPMS_DATA_SENSOR_3" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "1.50", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4.04", + "min": "1.5", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSBatVoltage0", + "offset": "1.5", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "V", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "1.50", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4.04", + "min": "1.5", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSBatVoltage1", + "offset": "1.5", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "V", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "1.50", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4.04", + "min": "1.5", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSBatVoltage2", + "offset": "1.5", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "V", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "1.50", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4.04", + "min": "1.5", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSBatVoltage3", + "offset": "1.5", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "V", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSLocation0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "LOCATION_FL", + "1": "LOCATION_FR", + "2": "LOCATION_RL", + "3": "LOCATION_RR", + "4": "LOCATION_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSLocation1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "LOCATION_FL", + "1": "LOCATION_FR", + "2": "LOCATION_RL", + "3": "LOCATION_RR", + "4": "LOCATION_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSLocation2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "LOCATION_FL", + "1": "LOCATION_FR", + "2": "LOCATION_RL", + "3": "LOCATION_RR", + "4": "LOCATION_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSLocation3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "LOCATION_FL", + "1": "LOCATION_FR", + "2": "LOCATION_RL", + "3": "LOCATION_RR", + "4": "LOCATION_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.35", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSPressure0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "bar", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.35", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSPressure1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "bar", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.35", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSPressure2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "bar", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.35", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSPressure3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "bar", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "214", + "min": "-40", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSTemperature0", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "214", + "min": "-40", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSTemperature1", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "214", + "min": "-40", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSTemperature2", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "214", + "min": "-40", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCSEC_TPMSDataIndex", + "name": "VCSEC_TPMSTemperature3", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": { + "255": "SNA" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 516, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID204PCS_chgStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "PCS_chargeShutdownRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 57, + "values": { + "0": "NO_SHUTDOWN_REQUESTED", + "1": "GRACEFUL_SHUTDOWN_REQUESTED", + "2": "EMERGENCY_SHUTDOWN_REQUESTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "PCS_chgInstantAcPowerAvailable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "mux_value": null, + "name": "PCS_chgMainState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "PCS_CHG_STATE_INIT", + "1": "PCS_CHG_STATE_IDLE", + "2": "PCS_CHG_STATE_STARTUP", + "3": "PCS_CHG_STATE_WAIT_FOR_LINE_VOLTAGE", + "4": "PCS_CHG_STATE_QUALIFY_LINE_CONFIG", + "5": "PCS_CHG_STATE_SYSTEM_CONFIG", + "6": "PCS_CHG_STATE_ENABLE", + "7": "PCS_CHG_STATE_SHUTDOWN", + "8": "PCS_CHG_STATE_FAULTED", + "9": "PCS_CHG_STATE_CLEAR_FAULTS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "PCS_chgMaxAcPowerAvailable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "PCS_chgPHAEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "PCS_chgPHALineCurrentRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "PCS_chgPHBEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "PCS_chgPHBLineCurrentRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "PCS_chgPHCEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "PCS_chgPHCLineCurrentRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "PCS_chgPwmEnableLine", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "PCS_gridConfig", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "GRID_CONFIG_SNA", + "1": "GRID_CONFIG_SINGLE_PHASE", + "2": "GRID_CONFIG_THREE_PHASE", + "3": "GRID_CONFIG_THREE_PHASE_DELTA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "PCS_hvChargeStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "PCS_CHARGE_STANDBY", + "1": "PCS_CHARGE_BLOCKED", + "2": "PCS_CHARGE_ENABLED", + "3": "PCS_CHARGE_FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "PCS_hwVariantType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": { + "0": "PCS_48A_SINGLE_PHASE_VARIANT", + "1": "PCS_32A_SINGLE_PHASE_VARIANT", + "2": "PCS_THREE_PHASES_VARIANT", + "3": "PCS_HW_VARIANT_TYPE_SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 554, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID22AHVP_pcsControl", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "550", + "min": "-550", + "mux_value": null, + "name": "HVP_dcLinkVoltageFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "V", + "values": { + "550": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "550", + "min": "-550", + "mux_value": null, + "name": "HVP_dcLinkVoltageRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_pcsChargeHwEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "HVP_pcsControlRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "SHUTDOWN", + "1": "SUPPORT", + "2": "PRECHARGE", + "3": "DISCHARGE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "HVP_pcsDcdcHwEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 562, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID232BMS_contactorRequest", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_ensShouldBeActiveForDrive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "BMS_fcContactorRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "SET_REQUEST_SNA", + "1": "SET_REQUEST_CLOSE", + "2": "SET_REQUEST_OPEN", + "3": "SET_REQUEST_OPEN_IMMEDIATELY", + "4": "SET_REQUEST_CLOSE_NEGATIVE_ONLY", + "5": "SET_REQUEST_CLOSE_POSITIVE_ONLY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "BMS_fcLinkOkToEnergizeRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "FC_LINK_ENERGY_NONE", + "1": "FC_LINK_ENERGY_AC", + "2": "FC_LINK_ENERGY_DC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_gpoHasCompleted", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65.534", + "min": "0", + "mux_value": null, + "name": "BMS_internalHvilSenseV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": { + "65535": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "BMS_packContactorRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "SET_REQUEST_SNA", + "1": "SET_REQUEST_CLOSE", + "2": "SET_REQUEST_OPEN", + "3": "SET_REQUEST_OPEN_IMMEDIATELY", + "4": "SET_REQUEST_CLOSE_NEGATIVE_ONLY", + "5": "SET_REQUEST_CLOSE_POSITIVE_ONLY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_pcsPwmDisable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 627, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID273UI_vehicleControl", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_accessoryPowerRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_alarmEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_ambientLightingEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_autoFoldMirrorsOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_autoHighBeamEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_childDoorLockOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "mux_value": null, + "name": "UI_displayBrightnessLevel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_domeLightSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": { + "0": "DOME_LIGHT_SWITCH_OFF", + "1": "DOME_LIGHT_SWITCH_ON", + "2": "DOME_LIGHT_SWITCH_AUTO" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_driveStateRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": { + "0": "DRIVE_STATE_REQ_IDLE", + "1": "DRIVE_STATE_REQ_START" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_frontFogSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_frontLeftSeatHeatReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "HEATER_REQUEST_OFF", + "1": "HEATER_REQUEST_LEVEL1", + "2": "HEATER_REQUEST_LEVEL2", + "3": "HEATER_REQUEST_LEVEL3" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_frontRightSeatHeatReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "HEATER_REQUEST_OFF", + "1": "HEATER_REQUEST_LEVEL1", + "2": "HEATER_REQUEST_LEVEL2", + "3": "HEATER_REQUEST_LEVEL3" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_frunkRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_globalUnlockOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_honkHorn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_intrusionSensorOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "UI_lockRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": { + "0": "UI_LOCK_REQUEST_IDLE", + "1": "UI_LOCK_REQUEST_LOCK", + "2": "UI_LOCK_REQUEST_UNLOCK", + "3": "UI_LOCK_REQUEST_REMOTE_UNLOCK", + "4": "UI_LOCK_REQUEST_REMOTE_LOCK", + "7": "UI_LOCK_REQUEST_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_mirrorDipOnReverse", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_mirrorFoldRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "MIRROR_FOLD_REQUEST_IDLE", + "1": "MIRROR_FOLD_REQUEST_RETRACT", + "2": "MIRROR_FOLD_REQUEST_PRESENT", + "3": "MIRROR_FOLD_REQUEST_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_mirrorHeatRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_powerOff", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_rearCenterSeatHeatReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "HEATER_REQUEST_OFF", + "1": "HEATER_REQUEST_LEVEL1", + "2": "HEATER_REQUEST_LEVEL2", + "3": "HEATER_REQUEST_LEVEL3" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rearFogSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 23, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_rearLeftSeatHeatReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "HEATER_REQUEST_OFF", + "1": "HEATER_REQUEST_LEVEL1", + "2": "HEATER_REQUEST_LEVEL2", + "3": "HEATER_REQUEST_LEVEL3" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_rearRightSeatHeatReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "HEATER_REQUEST_OFF", + "1": "HEATER_REQUEST_LEVEL1", + "2": "HEATER_REQUEST_LEVEL2", + "3": "HEATER_REQUEST_LEVEL3" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rearWindowLockout", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_remoteClosureRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": { + "0": "UI_REMOTE_CLOSURE_REQUEST_IDLE", + "1": "UI_REMOTE_CLOSURE_REQUEST_REAR_TRUNK_MOVE", + "2": "UI_REMOTE_CLOSURE_REQUEST_FRONT_TRUNK_MOVE", + "3": "UI_REMOTE_CLOSURE_REQUEST_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "UI_remoteStartRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "0": "UI_REMOTE_START_REQUEST_IDLE", + "1": "UI_REMOTE_START_REQUEST_START", + "4": "UI_REMOTE_START_REQUEST_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_seeYouHomeLightingOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_steeringBacklightEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "STEERING_BACKLIGHT_DISABLED", + "1": "STEERING_BACKLIGHT_ENABLED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "UI_steeringButtonMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": { + "0": "STEERING_BUTTON_MODE_OFF", + "1": "STEERING_BUTTON_MODE_STEERING_COLUMN_ADJ", + "2": "STEERING_BUTTON_MODE_MIRROR_LEFT", + "3": "STEERING_BUTTON_MODE_MIRROR_RIGHT", + "4": "STEERING_BUTTON_MODE_HEADLIGHT_LEFT", + "5": "STEERING_BUTTON_MODE_HEADLIGHT_RIGHT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_stop12vSupport", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_summonActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_unlockOnPark", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_walkAwayLock", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_walkUpUnlock", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_wiperMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "WIPER_MODE_SNA", + "1": "WIPER_MODE_SERVICE", + "2": "WIPER_MODE_NORMAL", + "3": "WIPER_MODE_PARK" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "UI_wiperRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "WIPER_REQUEST_SNA", + "1": "WIPER_REQUEST_OFF", + "2": "WIPER_REQUEST_AUTO", + "3": "WIPER_REQUEST_SLOW_INTERMITTENT", + "4": "WIPER_REQUEST_FAST_INTERMITTENT", + "5": "WIPER_REQUEST_SLOW_CONTINUOUS", + "6": "WIPER_REQUEST_FAST_CONTINUOUS" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 637, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID27DCP_dcChargeLimits", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.146484", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.854", + "min": "0", + "mux_value": null, + "name": "CP_evseInstantDcCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.0732422", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.927", + "min": "0", + "mux_value": null, + "name": "CP_evseMaxDcCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.0732422", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.927", + "min": "0", + "mux_value": null, + "name": "CP_evseMaxDcVoltageLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.0732422", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.927", + "min": "0", + "mux_value": null, + "name": "CP_evseMinDcCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.0732422", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.927", + "min": "0", + "mux_value": null, + "name": "CP_evseMinDcVoltageLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "unit": "V", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 701, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID2BDCP_dcPowerLimits", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.0622559", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "509.938", + "min": "0", + "mux_value": null, + "name": "CP_evseInstantDcPowerLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.0622559", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "509.938", + "min": "0", + "mux_value": null, + "name": "CP_evseMaxDcPowerLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1066, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID42AVCSEC_TPMSConnectionData", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSConnectionTypeCurrent0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "CONNECTIONTYPE_FAST", + "1": "CONNECTIONTYPE_SLOW", + "2": "CONNECTIONTYPE_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSConnectionTypeCurrent1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "CONNECTIONTYPE_FAST", + "1": "CONNECTIONTYPE_SLOW", + "2": "CONNECTIONTYPE_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSConnectionTypeCurrent2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": { + "0": "CONNECTIONTYPE_FAST", + "1": "CONNECTIONTYPE_SLOW", + "2": "CONNECTIONTYPE_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSConnectionTypeCurrent3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "CONNECTIONTYPE_FAST", + "1": "CONNECTIONTYPE_SLOW", + "2": "CONNECTIONTYPE_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSConnectionTypeDesired0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "CONNECTIONTYPE_FAST", + "1": "CONNECTIONTYPE_SLOW", + "2": "CONNECTIONTYPE_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSConnectionTypeDesired1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "CONNECTIONTYPE_FAST", + "1": "CONNECTIONTYPE_SLOW", + "2": "CONNECTIONTYPE_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSConnectionTypeDesired2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": { + "0": "CONNECTIONTYPE_FAST", + "1": "CONNECTIONTYPE_SLOW", + "2": "CONNECTIONTYPE_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSConnectionTypeDesired3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "CONNECTIONTYPE_FAST", + "1": "CONNECTIONTYPE_SLOW", + "2": "CONNECTIONTYPE_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "-127", + "mux_value": null, + "name": "VCSEC_TPMSRSSI0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "unit": "dBm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "-127", + "mux_value": null, + "name": "VCSEC_TPMSRSSI1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "unit": "dBm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "-127", + "mux_value": null, + "name": "VCSEC_TPMSRSSI2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "unit": "dBm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "-127", + "mux_value": null, + "name": "VCSEC_TPMSRSSI3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "dBm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSSensorState0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "SENSOR_NOT_PAIRED", + "1": "SENSOR_WAIT_FOR_ADV", + "2": "SENSOR_WAIT_FOR_CONN", + "3": "SENSOR_CONNECTED", + "4": "SENSOR_DISCONNECTING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSSensorState1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": { + "0": "SENSOR_NOT_PAIRED", + "1": "SENSOR_WAIT_FOR_ADV", + "2": "SENSOR_WAIT_FOR_CONN", + "3": "SENSOR_CONNECTED", + "4": "SENSOR_DISCONNECTING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSSensorState2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": { + "0": "SENSOR_NOT_PAIRED", + "1": "SENSOR_WAIT_FOR_ADV", + "2": "SENSOR_WAIT_FOR_CONN", + "3": "SENSOR_CONNECTED", + "4": "SENSOR_DISCONNECTING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCSEC_TPMSSensorState3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": { + "0": "SENSOR_NOT_PAIRED", + "1": "SENSOR_WAIT_FOR_ADV", + "2": "SENSOR_WAIT_FOR_CONN", + "3": "SENSOR_CONNECTED", + "4": "SENSOR_DISCONNECTING" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 558, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID22EPARK_sdiRear", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "PARK_sdiRearChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "PARK_sdiRearCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor10RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor11RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor12RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor7RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor8RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "PARK_sdiSensor9RawDistData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "unit": "cm", + "values": { + "0": "BLOCKED", + "1": "NEAR_DETECTION", + "500": "NO_OBJECT_DETECTED", + "511": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 568, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID238UI_driverAssistMapData", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_acceptBottsDots", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_autosteerRestricted", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_controlledAccess", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "mux_value": null, + "name": "UI_countryCode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "UNKNOWN", + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_gpsRoadMatch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_inSuperchargerGeofence", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "UI_mapDataChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "UI_mapDataCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31", + "min": "0", + "mux_value": null, + "name": "UI_mapSpeedLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "UNKNOWN", + "1": "LESS_OR_EQ_5", + "2": "LESS_OR_EQ_7", + "3": "LESS_OR_EQ_10", + "4": "LESS_OR_EQ_15", + "5": "LESS_OR_EQ_20", + "6": "LESS_OR_EQ_25", + "7": "LESS_OR_EQ_30", + "8": "LESS_OR_EQ_35", + "9": "LESS_OR_EQ_40", + "10": "LESS_OR_EQ_45", + "11": "LESS_OR_EQ_50", + "12": "LESS_OR_EQ_55", + "13": "LESS_OR_EQ_60", + "14": "LESS_OR_EQ_65", + "15": "LESS_OR_EQ_70", + "16": "LESS_OR_EQ_75", + "17": "LESS_OR_EQ_80", + "18": "LESS_OR_EQ_85", + "19": "LESS_OR_EQ_90", + "20": "LESS_OR_EQ_95", + "21": "LESS_OR_EQ_100", + "22": "LESS_OR_EQ_105", + "23": "LESS_OR_EQ_110", + "24": "LESS_OR_EQ_115", + "25": "LESS_OR_EQ_120", + "26": "LESS_OR_EQ_130", + "27": "LESS_OR_EQ_140", + "28": "LESS_OR_EQ_150", + "29": "LESS_OR_EQ_160", + "30": "UNLIMITED", + "31": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "UI_mapSpeedLimitDependency", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "NONE", + "1": "SCHOOL", + "2": "RAIN", + "3": "SNOW", + "4": "TIME", + "5": "SEASON", + "6": "LANE", + "7": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "UI_mapSpeedLimitType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "1": "REGULAR", + "2": "ADVISORY", + "3": "DEPENDENT", + "4": "BUMPS", + "7": "UNKNOWN_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_mapSpeedUnits", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": { + "0": "MPH", + "1": "KPH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_navRouteActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "300", + "min": "0", + "mux_value": null, + "name": "UI_nextBranchDist", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "m", + "values": { + "31": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_nextBranchLeftOffRamp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_nextBranchRightOffRamp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_parallelAutoparkEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_perpendicularAutoparkEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_pmmEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rejectAutosteer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rejectHPP", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rejectHandsOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rejectLeftFreeSpace", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rejectLeftLane", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rejectNav", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rejectRightFreeSpace", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rejectRightLane", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "UI_roadClass", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "UNKNOWN_INVALID_SNA", + "1": "CLASS_1_MAJOR", + "2": "CLASS_2", + "3": "CLASS_3", + "4": "CLASS_4", + "5": "CLASS_5", + "6": "CLASS_6_MINOR" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_scaEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_streetCount", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 569, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID239DAS_lanes", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_lanesCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_leftFork", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "LEFT_FORK_NONE", + "1": "LEFT_FORK_AVAILABLE", + "2": "LEFT_FORK_SELECTED", + "3": "LEFT_FORK_UNAVAILABLE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_leftLaneExists", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_leftLineUsage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "REJECTED_UNAVAILABLE", + "1": "AVAILABLE", + "2": "FUSED", + "3": "BLACKLISTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_rightFork", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": { + "0": "RIGHT_FORK_NONE", + "1": "RIGHT_FORK_AVAILABLE", + "2": "RIGHT_FORK_SELECTED", + "3": "RIGHT_FORK_UNAVAILABLE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_rightLaneExists", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_rightLineUsage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "REJECTED_UNAVAILABLE", + "1": "AVAILABLE", + "2": "FUSED", + "3": "BLACKLISTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.035", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.5", + "min": "-3.5", + "mux_value": null, + "name": "DAS_virtualLaneC0", + "offset": "-3.5", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.0016", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0.2", + "min": "-0.2", + "mux_value": null, + "name": "DAS_virtualLaneC1", + "offset": "-0.2", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "rad", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.00002", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0.0025", + "min": "-0.0025", + "mux_value": null, + "name": "DAS_virtualLaneC2", + "offset": "-0.0025", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "m-1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "2.4E-7", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0.00003", + "min": "-0.00003", + "mux_value": null, + "name": "DAS_virtualLaneC3", + "offset": "-0.00003", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "m-2", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "160", + "min": "0", + "mux_value": null, + "name": "DAS_virtualLaneViewRange", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "0.3125", + "initial_value": "2.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.6875", + "min": "2", + "mux_value": null, + "name": "DAS_virtualLaneWidth", + "offset": "2", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "unit": "m", + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 586, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID24ADAS_visualDebug", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_accSmartSpeedActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DAS_accSmartSpeedState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": { + "0": "NOT_ACTIVE", + "1": "ACTIVE_OFFRAMP", + "2": "ACTIVE_INTEGRATING", + "3": "ACTIVE_ONRAMP", + "4": "SET_SPEED_SET_REQUESTED", + "5": "OFFRAMP_DELAY", + "7": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_autosteerBottsDotsUsage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "REJECTED_UNAVAILABLE", + "1": "AVAILABLE", + "2": "FUSED", + "3": "BLACKLISTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_autosteerHPPUsage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "REJECTED_UNAVAILABLE", + "1": "AVAILABLE", + "2": "FUSED", + "3": "BLACKLISTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DAS_autosteerHealthAnomalyLevel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "DAS_autosteerHealthState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": { + "0": "HEALTH_UNAVAILABLE", + "1": "HEALTH_NOMINAL", + "2": "HEALTH_DEGRADED", + "3": "HEALTH_SEVERELY_DEGRADED", + "4": "HEALTH_ABORTING", + "5": "HEALTH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_autosteerModelUsage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "REJECTED_UNAVAILABLE", + "1": "AVAILABLE", + "2": "FUSED", + "3": "BLACKLISTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_autosteerNavigationUsage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "REJECTED_UNAVAILABLE", + "1": "AVAILABLE", + "2": "FUSED", + "3": "BLACKLISTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_autosteerVehiclesUsage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "REJECTED_UNAVAILABLE", + "1": "AVAILABLE", + "2": "FUSED", + "3": "BLACKLISTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_behaviorType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "DAS_BEHAVIOR_INVALID", + "1": "DAS_BEHAVIOR_IN_LANE", + "2": "DAS_BEHAVIOR_LANE_CHANGE_LEFT", + "3": "DAS_BEHAVIOR_LANE_CHANGE_RIGHT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_devAppInterfaceEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "34", + "min": "0", + "mux_value": null, + "name": "DAS_lastAutosteerAbortReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "UI_ABORT_REASON_HM_LANE_VIEW_RANGE", + "1": "UI_ABORT_REASON_HM_VIRTUAL_LANE_NO_INPUTS", + "2": "UI_ABORT_REASON_HM_STEERING_ERROR", + "14": "UI_ABORT_REASON_APP_ME_STATE_NOT_VISION", + "15": "UI_ABORT_REASON_ME_MAIN_STATE_NOT_VISION", + "16": "UI_ABORT_REASON_CAM_MSG_MIA", + "17": "UI_ABORT_REASON_CAM_WATCHDOG", + "18": "UI_ABORT_REASON_TRAILER_MODE", + "19": "UI_ABORT_REASON_SIDE_COLLISION_IMMINENT", + "20": "UI_ABORT_REASON_EPAS_EAC_DENIED", + "21": "UI_ABORT_REASON_COMPONENT_MIA", + "22": "UI_ABORT_REASON_CRUISE_FAULT", + "23": "UI_ABORT_REASON_CID_SWITCH_DISABLED", + "24": "UI_ABORT_REASON_DRIVING_OFF_NAV", + "25": "UI_ABORT_REASON_VEHICLE_SPEED_ABOVE_MAX", + "26": "UI_ABORT_REASON_FOLLOWER_OUTPUT_INVALID", + "27": "UI_ABORT_REASON_PLANNER_OUTPUT_INVALID", + "28": "UI_ABORT_REASON_EPAS_ERROR_CODE", + "29": "UI_ABORT_REASON_ACC_CANCEL", + "30": "UI_ABORT_REASON_CAMERA_FAILSAFES", + "31": "UI_ABORT_REASON_NO_ABORT", + "32": "UI_ABORT_REASON_AEB", + "33": "UI_ABORT_REASON_SEATBELT_UNBUCKLED", + "34": "UI_ABORT_REASON_USER_OVERRIDE_STRIKEOUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_lastLinePreferenceReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "OTHER_LANE_DISAGREES_WITH_MODEL", + "1": "AGREEMENT_WITH_NEIGHBOR_LANES", + "2": "NEIGHBOR_LANE_PROBABILIY", + "3": "NAVIGATION_BRANCH", + "4": "AVOID_ONCOMING_LANES", + "5": "COUNTRY_DRIVING_SIDE", + "15": "NONE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_navAvailable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": { + "0": "DAS_NAV_UNAVAILABLE", + "1": "DAS_NAV_AVAILABLE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "100", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25500", + "min": "0", + "mux_value": null, + "name": "DAS_navDistance", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "km", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_offsetSide", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "NO_OFFSET", + "1": "OFFSET_RIGHT_OBJECT", + "2": "OFFSET_LEFT_OBJECT", + "3": "OFFSET_BOTH_OBJECTS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DAS_plannerState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "TP_EXTSTATE_DISABLED", + "1": "TP_EXTSTATE_VL", + "2": "TP_EXTSTATE_FOLLOW", + "3": "TP_EXTSTATE_LANECHANGE_REQUESTED", + "4": "TP_EXTSTATE_LANECHANGE_IN_PROGRESS", + "5": "TP_EXTSTATE_LANECHANGE_WAIT_FOR_SIDE_OBSTACLE", + "6": "TP_EXTSTATE_LANECHANGE_WAIT_FOR_FWD_OBSTACLE", + "7": "TP_EXTSTATE_LANECHANGE_ABORT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_rearLeftVehDetectedCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": { + "0": "VEHICLE_NOT_DETECTED", + "1": "VEHICLE_DETECTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_rearLeftVehDetectedTrip", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": { + "0": "VEHICLE_NOT_DETECTED", + "1": "VEHICLE_DETECTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_rearRightVehDetectedTrip", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": { + "0": "VEHICLE_NOT_DETECTED", + "1": "VEHICLE_DETECTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_rearVehDetectedThisCycle", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": { + "0": "VEHICLE_NOT_DETECTED", + "1": "VEHICLE_DETECTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DAS_roadSurfaceType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "ROAD_SURFACE_SNA", + "1": "ROAD_SURFACE_NORMAL", + "2": "ROAD_SURFACE_ENHANCED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_ulcInProgress", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "ULC_INACTIVE", + "1": "ULC_ACTIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DAS_ulcType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "ULC_TYPE_NONE", + "1": "ULC_TYPE_NAV", + "2": "ULC_TYPE_SPEED" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 603, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 1, + "mux_names": {}, + "name": "ID25BAPP_environment", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "APP_environmentRainy", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "APP_environmentSnowy", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 605, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID25DCP_status", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "mux_value": null, + "name": "CP_UHF_controlState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "CP_UHF_INIT", + "1": "CP_UHF_CONFIG", + "2": "CP_UHF_IDLE", + "3": "CP_UHF_CALIBRATE", + "4": "CP_UHF_PREPARE_RX", + "5": "CP_UHF_RX", + "6": "CP_UHF_CHECK_RX", + "7": "CP_UHF_READ_RXFIFO", + "8": "CP_UHF_HANDLE_FOUND", + "9": "CP_UHF_SLEEP", + "10": "CP_UHF_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_UHF_handleFound", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.0715686", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "18.249", + "min": "0", + "mux_value": null, + "name": "CP_apsVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_chargeCablePresent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "CABLE_NOT_PRESENT", + "1": "CABLE_PRESENT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_chargeCableSecured", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "CP_chargeCableState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "CHARGE_CABLE_UNKNOWN_SNA", + "1": "CHARGE_CABLE_NOT_CONNECTED", + "2": "CHARGE_CABLE_CONNECTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_chargeDoorOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_chargeDoorOpenUI", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_coldWeatherMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": { + "0": "CP_COLD_WEATHER_NONE", + "1": "CP_COLD_WEATHER_LATCH_MITIGATION" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_coverClosed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_doorButtonPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "CP_doorControlState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "CP_doorInit", + "1": "CP_doorIdle", + "2": "CP_doorOpenRequested", + "3": "CP_doorOpening", + "4": "CP_doorSenseOpen", + "5": "CP_doorClosing", + "6": "CP_doorSenseClosed" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_doorOpenRequested", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_faultLineSensed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "FAULT_LINE_CLEARED", + "1": "FAULT_LINE_SET" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_hvInletExposed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "CP_inductiveDoorState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": { + "0": "CP_INDUCTIVE_DOOR_INIT", + "1": "CP_INDUCTIVE_DOOR_INIT_FROM_CHARGE", + "2": "CP_INDUCTIVE_DOOR_INIT_FROM_DRIVE", + "3": "CP_INDUCTIVE_DOOR_PRESENT", + "4": "CP_INDUCTIVE_DOOR_NOT_PRESENT", + "5": "CP_INDUCTIVE_DOOR_OFF_DRIVE", + "6": "CP_INDUCTIVE_DOOR_OFF_CHARGE", + "7": "CP_INDUCTIVE_DOOR_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "CP_inductiveSensorState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "CP_INDUCTIVE_SENSOR_INIT", + "1": "CP_INDUCTIVE_SENSOR_POLL", + "2": "CP_INDUCTIVE_SENSOR_SHUTDOWN", + "3": "CP_INDUCTIVE_SENSOR_PAUSE", + "4": "CP_INDUCTIVE_SENSOR_WAIT_FOR_INIT", + "5": "CP_INDUCTIVE_SENSOR_FAULT", + "6": "CP_INDUCTIVE_SENSOR_RESET", + "7": "CP_INDUCTIVE_SENSOR_CONFIG" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_insertEnableLine", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "CP_latch2ControlState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": { + "0": "CP_latchInit", + "1": "CP_latchIdle", + "2": "CP_latchDisengageRequested", + "3": "CP_latchDisengaging", + "4": "CP_latchDisengaged", + "5": "CP_latchEngaging" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CP_latch2State", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "CP_LATCH_SNA", + "1": "CP_LATCH_DISENGAGED", + "2": "CP_LATCH_ENGAGED", + "3": "CP_LATCH_BLOCKING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "CP_latchControlState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "CP_latchInit", + "1": "CP_latchIdle", + "2": "CP_latchDisengageRequested", + "3": "CP_latchDisengaging", + "4": "CP_latchDisengaged", + "5": "CP_latchEngaging" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_latchEngaged", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CP_latchState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "CP_LATCH_SNA", + "1": "CP_LATCH_DISENGAGED", + "2": "CP_LATCH_ENGAGED", + "3": "CP_LATCH_BLOCKING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "mux_value": null, + "name": "CP_ledColor", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": { + "0": "CP_LEDS_OFF", + "1": "CP_LEDS_RED", + "2": "CP_LEDS_GREEN", + "3": "CP_LEDS_BLUE", + "4": "CP_LEDS_WHITE", + "5": "CP_LEDS_FLASHING_GREEN", + "6": "CP_LEDS_FLASHING_AMBER", + "7": "CP_LEDS_AMBER", + "8": "CP_LEDS_RAVE", + "9": "CP_LEDS_DEBUG", + "10": "CP_LEDS_FLASHING_BLUE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "mux_value": null, + "name": "CP_numAlertsSet", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_permanentPowerRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_swcanRelayClosed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CP_type", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "CP_TYPE_US_TESLA", + "1": "CP_TYPE_EURO_IEC", + "2": "CP_TYPE_GB", + "3": "CP_TYPE_IEC_CCS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_vehicleUnlockRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 669, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID29DCP_dcChargeStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 15, + "comment": null, + "comments": {}, + "factor": "0.0732467", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1200", + "min": "-1200", + "mux_value": null, + "name": "CP_evseOutputDcCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_evseOutputDcCurrentStale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.0732422", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.927", + "min": "0", + "mux_value": null, + "name": "CP_evseOutputDcVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 692, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID2B4PCS_dcdcRailStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "DCDC HV Voltage", + "comments": {}, + "factor": "0.146484", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.854", + "min": "0", + "mux_value": null, + "name": "PCS_dcdcHvBusVolt", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "DCDC 12v Voltage", + "comments": {}, + "factor": "0.0390625", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "39.9609", + "min": "0", + "mux_value": null, + "name": "PCS_dcdcLvBusVolt", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "DCDC 12v Output Current", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "400", + "min": "0", + "mux_value": null, + "name": "PCS_dcdcLvOutputCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "A", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 697, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID2B9DAS_control", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_accState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "ACC_CANCEL_GENERIC", + "1": "ACC_CANCEL_CAMERA_BLIND", + "2": "ACC_CANCEL_RADAR_BLIND", + "3": "ACC_HOLD", + "4": "ACC_ON", + "5": "APC_BACKWARD", + "6": "APC_FORWARD", + "7": "APC_COMPLETE", + "8": "APC_ABORT", + "9": "APC_PAUSE", + "10": "APC_UNPARK_COMPLETE", + "11": "APC_SELFPARK_START", + "12": "ACC_CANCEL_PATH_NOT_CLEAR", + "13": "ACC_CANCEL_GENERIC_SILENT", + "14": "ACC_CANCEL_OUT_OF_CALIBRATION", + "15": "FAULT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "0.04", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5.44", + "min": "-15", + "mux_value": null, + "name": "DAS_accelMax", + "offset": "-15", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "m/s^2", + "values": { + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "0.04", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5.44", + "min": "-15", + "mux_value": null, + "name": "DAS_accelMin", + "offset": "-15", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "unit": "m/s^2", + "values": { + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_aebEvent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "AEB_NOT_ACTIVE", + "1": "AEB_ACTIVE", + "2": "AEB_FAULT", + "3": "AEB_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "DAS_controlChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DAS_controlCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.059", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15.045", + "min": "0", + "mux_value": null, + "name": "DAS_jerkMax", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "unit": "m/s^3", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "0.03", + "initial_value": "0.008", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0.098", + "min": "-15.232", + "mux_value": null, + "name": "DAS_jerkMin", + "offset": "-15.232", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "unit": "m/s^3", + "values": { + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "409.4", + "min": "0", + "mux_value": null, + "name": "DAS_setSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kph", + "values": { + "4095": "SNA" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 723, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID2D3UI_solarData", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_isSunUp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": { + "0": "SUN_DOWN", + "1": "SUN_UP", + "3": "SUN_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2550", + "min": "0", + "mux_value": null, + "name": "UI_minsToSunrise", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "min", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2550", + "min": "0", + "mux_value": null, + "name": "UI_minsToSunset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "min", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "100", + "min": "-20", + "mux_value": null, + "name": "UI_screenPCBTemperature", + "offset": "40", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "32767", + "min": "-32767", + "mux_value": null, + "name": "UI_solarAzimuthAngle", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "deg", + "values": { + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "254", + "min": "-256", + "mux_value": null, + "name": "UI_solarAzimuthAngleCarRef", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "deg", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "126", + "min": "-128", + "mux_value": null, + "name": "UI_solarElevationAngle", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "deg", + "values": { + "127": "SNA" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 777, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID309DAS_object", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "DAS_objectId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "LEAD_VEHICLES", + "1": "LEFT_VEHICLES", + "2": "RIGHT_VEHICLES", + "3": "CUTIN_VEHICLE", + "4": "ROAD_SIGN", + "5": "VEHICLE_HEADINGS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_cutinVehDx", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "m", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.35", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.4", + "min": "-22.05", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_cutinVehDy", + "offset": "-22.05", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.0245437", + "initial_value": "0.0000036", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.09251", + "min": "-3.14159", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_cutinVehHeading", + "offset": "-3.14159", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "rad", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_cutinVehId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_cutinVehRelevantForControl", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_cutinVehType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "UNKNOWN", + "1": "TRUCK", + "2": "CAR", + "3": "MOTORCYCLE", + "4": "BICYCLE", + "5": "PEDESTRIAN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "2", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "26", + "min": "-30", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_cutinVehVxRel", + "offset": "-30", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "m/s", + "values": { + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVeh2Dx", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "unit": "m", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.35", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.4", + "min": "-22.05", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVeh2Dy", + "offset": "-22.05", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.0245437", + "initial_value": "0.0000036", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.09251", + "min": "-3.14159", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVeh2Heading", + "offset": "-3.14159", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "rad", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "63", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVeh2Id", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVeh2RelevantForControl", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVeh2Type", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "UNKNOWN", + "1": "TRUCK", + "2": "CAR", + "3": "MOTORCYCLE", + "4": "BICYCLE", + "5": "PEDESTRIAN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "2", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "26", + "min": "-30", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVeh2VxRel", + "offset": "-30", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "m/s", + "values": { + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVehDx", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "m", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.35", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.4", + "min": "-22.05", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVehDy", + "offset": "-22.05", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.0245437", + "initial_value": "0.0000036", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.09251", + "min": "-3.14159", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVehHeading", + "offset": "-3.14159", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "rad", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVehId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVehRelevantForControl", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVehType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "UNKNOWN", + "1": "TRUCK", + "2": "CAR", + "3": "MOTORCYCLE", + "4": "BICYCLE", + "5": "PEDESTRIAN", + "6": "IPSO" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "2", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "26", + "min": "-30", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leadVehVxRel", + "offset": "-30", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "m/s", + "values": { + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVeh2Dx", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "unit": "m", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.35", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.4", + "min": "-22.05", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVeh2Dy", + "offset": "-22.05", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.0245437", + "initial_value": "0.0000036", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.09251", + "min": "-3.14159", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVeh2Heading", + "offset": "-3.14159", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "rad", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "63", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVeh2Id", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVeh2RelevantForControl", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVeh2Type", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "UNKNOWN", + "1": "TRUCK", + "2": "CAR", + "3": "MOTORCYCLE", + "4": "BICYCLE", + "5": "PEDESTRIAN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "2", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "26", + "min": "-30", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVeh2VxRel", + "offset": "-30", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "m/s", + "values": { + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVehDx", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "m", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.35", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.4", + "min": "-22.05", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVehDy", + "offset": "-22.05", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.0245437", + "initial_value": "0.0000036", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.09251", + "min": "-3.14159", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVehHeading", + "offset": "-3.14159", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "rad", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVehId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVehRelevantForControl", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVehType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "UNKNOWN", + "1": "TRUCK", + "2": "CAR", + "3": "MOTORCYCLE", + "4": "BICYCLE", + "5": "PEDESTRIAN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "2", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "26", + "min": "-30", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_leftVehVxRel", + "offset": "-30", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "m/s", + "values": { + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVeh2Dx", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "unit": "m", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.35", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.4", + "min": "-22.05", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVeh2Dy", + "offset": "-22.05", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.0245437", + "initial_value": "0.0000036", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.09251", + "min": "-3.14159", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVeh2Heading", + "offset": "-3.14159", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "rad", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "63", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVeh2Id", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVeh2RelevantForControl", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVeh2Type", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "UNKNOWN", + "1": "TRUCK", + "2": "CAR", + "3": "MOTORCYCLE", + "4": "BICYCLE", + "5": "PEDESTRIAN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "2", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "26", + "min": "-30", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVeh2VxRel", + "offset": "-30", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "m/s", + "values": { + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVehDx", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "m", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.35", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.4", + "min": "-22.05", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVehDy", + "offset": "-22.05", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.0245437", + "initial_value": "0.0000036", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.09251", + "min": "-3.14159", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVehHeading", + "offset": "-3.14159", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "rad", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVehId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVehRelevantForControl", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVehType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "UNKNOWN", + "1": "TRUCK", + "2": "CAR", + "3": "MOTORCYCLE", + "4": "BICYCLE", + "5": "PEDESTRIAN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "2", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "26", + "min": "-30", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_rightVehVxRel", + "offset": "-30", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "m/s", + "values": { + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_roadSignArrow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "0": "CIRCLE", + "1": "LEFT", + "2": "RIGHT", + "3": "STRAIGHT", + "4": "UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_roadSignColor", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "NONE", + "1": "RED", + "2": "YELLOW", + "3": "GREEN", + "4": "RED_YELLOW" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_roadSignControlActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_roadSignId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "STOP_SIGN", + "1": "TRAFFIC_LIGHT", + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_roadSignOrientation", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": { + "0": "UNKNOWN", + "1": "VERTICAL_3_LIGHT", + "2": "HORIZONTAL_3_LIGHT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_roadSignSource", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": { + "0": "NONE", + "1": "NAV", + "2": "VISION" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "184.4", + "min": "-20", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "DAS_objectId", + "name": "DAS_roadSignStopLineDist", + "offset": "-20", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "unit": "m", + "values": { + "1023": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 905, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID389DAS_status2", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "24", + "min": "0", + "mux_value": null, + "name": "DAS_ACC_report", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "ACC_REPORT_TARGET_NONE", + "1": "ACC_REPORT_TARGET_CIPV", + "2": "ACC_REPORT_TARGET_IN_FRONT_OF_CIPV", + "3": "ACC_REPORT_TARGET_MCVL", + "4": "ACC_REPORT_TARGET_MCVR", + "5": "ACC_REPORT_TARGET_CUTIN", + "6": "ACC_REPORT_TARGET_TYPE_STOP_SIGN", + "7": "ACC_REPORT_TARGET_TYPE_TRAFFIC_LIGHT", + "8": "ACC_REPORT_TARGET_TYPE_IPSO", + "9": "ACC_REPORT_TARGET_TYPE_FAULT", + "10": "ACC_REPORT_CSA", + "11": "ACC_REPORT_LC_HANDS_ON_REQD_STRUCK_OUT", + "12": "ACC_REPORT_LC_EXTERNAL_STATE_ABORTING", + "13": "ACC_REPORT_LC_EXTERNAL_STATE_ABORTED", + "14": "ACC_REPORT_LC_EXTERNAL_STATE_ACTIVE_RESTRICTED", + "15": "ACC_REPORT_RADAR_OBJ_ONE", + "16": "ACC_REPORT_RADAR_OBJ_TWO", + "17": "ACC_REPORT_TARGET_MCP", + "18": "ACC_REPORT_FLEET_SPEEDS", + "19": "ACC_REPORT_MCVLR_DPP", + "20": "ACC_REPORT_MCVLR_IN_PATH", + "21": "ACC_REPORT_CIPV_CUTTING_OUT", + "22": "ACC_REPORT_RADAR_OBJ_FIVE", + "23": "ACC_REPORT_CAMERA_ONLY", + "24": "ACC_REPORT_BEHAVIOR_REPORT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "204.6", + "min": "0", + "mux_value": null, + "name": "DAS_accSpeedLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "mph", + "values": { + "0": "NONE", + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DAS_activationFailureStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "LC_ACTIVATION_IDLE", + "1": "LC_ACTIVATION_FAILED_1", + "2": "LC_ACTIVATION_FAILED_2" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_csaState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "CSA_EXTERNAL_STATE_UNAVAILABLE", + "1": "CSA_EXTERNAL_STATE_AVAILABLE", + "2": "CSA_EXTERNAL_STATE_ENABLE", + "3": "CSA_EXTERNAL_STATE_HOLD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DAS_driverInteractionLevel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "DRIVER_INTERACTING", + "1": "DRIVER_NOT_INTERACTING", + "2": "CONTINUED_DRIVER_NOT_INTERACTING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_longCollisionWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "FCM_LONG_COLLISION_WARNING_NONE", + "1": "FCM_LONG_COLLISION_WARNING_VEHICLE_UNKNOWN", + "2": "FCM_LONG_COLLISION_WARNING_PEDESTRIAN", + "3": "FCM_LONG_COLLISION_WARNING_IPSO", + "4": "FCM_LONG_COLLISION_WARNING_STOPSIGN_STOPLINE", + "5": "FCM_LONG_COLLISION_WARNING_TFL_STOPLINE", + "6": "FCM_LONG_COLLISION_WARNING_VEHICLE_CIPV", + "7": "FCM_LONG_COLLISION_WARNING_VEHICLE_CUTIN", + "8": "FCM_LONG_COLLISION_WARNING_VEHICLE_MCVL", + "9": "FCM_LONG_COLLISION_WARNING_VEHICLE_MCVL2", + "10": "FCM_LONG_COLLISION_WARNING_VEHICLE_MCVR", + "11": "FCM_LONG_COLLISION_WARNING_VEHICLE_MCVR2", + "12": "FCM_LONG_COLLISION_WARNING_VEHICLE_CIPV2", + "15": "FCM_LONG_COLLISION_WARNING_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DAS_pmmCameraFaultReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "PMM_CAMERA_NO_FAULT", + "1": "PMM_CAMERA_BLOCKED_FRONT", + "2": "PMM_CAMERA_INVALID_MIA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_pmmLoggingRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "FALSE", + "1": "TRUE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DAS_pmmObstacleSeverity", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "PMM_NONE", + "1": "PMM_IMMINENT_REAR", + "2": "PMM_IMMINENT_FRONT", + "3": "PMM_BRAKE_REQUEST", + "4": "PMM_CRASH_REAR", + "5": "PMM_CRASH_FRONT", + "6": "PMM_ACCEL_LIMIT", + "7": "PMM_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DAS_pmmRadarFaultReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": { + "0": "PMM_RADAR_NO_FAULT", + "1": "PMM_RADAR_BLOCKED_FRONT", + "2": "PMM_RADAR_INVALID_MIA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DAS_pmmSysFaultReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": { + "0": "PMM_FAULT_NONE", + "1": "PMM_FAULT_DAS_DISABLED", + "2": "PMM_FAULT_SPEED", + "3": "PMM_FAULT_DI_FAULT", + "4": "PMM_FAULT_STEERING_ANGLE_RATE", + "5": "PMM_FAULT_DISABLED_BY_USER", + "6": "PMM_FAULT_ROAD_TYPE", + "7": "PMM_FAULT_BRAKE_PEDAL_INHIBIT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "DAS_pmmUltrasonicsFaultReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "PMM_ULTRASONICS_NO_FAULT", + "1": "PMM_ULTRASONICS_BLOCKED_FRONT", + "2": "PMM_ULTRASONICS_BLOCKED_REAR", + "3": "PMM_ULTRASONICS_BLOCKED_BOTH", + "4": "PMM_ULTRASONICS_INVALID_MIA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1.27", + "min": "-1.28", + "mux_value": null, + "name": "DAS_ppOffsetDesiredRamp", + "offset": "-1.28", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "m", + "values": { + "128": "PP_NO_OFFSET" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DAS_radarTelemetry", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "RADAR_TELEMETRY_IDLE", + "1": "RADAR_TELEMETRY_NORMAL", + "2": "RADAR_TELEMETRY_URGENT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_relaxCruiseLimits", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_robState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "ROB_STATE_INHIBITED", + "1": "ROB_STATE_MEASURE", + "2": "ROB_STATE_ACTIVE", + "3": "ROB_STATE_MAPLESS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "DAS_status2Checksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_status2Counter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 921, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID399DAS_status", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31", + "min": "0", + "mux_value": null, + "name": "DAS_autoLaneChangeState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "ALC_UNAVAILABLE_DISABLED", + "1": "ALC_UNAVAILABLE_NO_LANES", + "2": "ALC_UNAVAILABLE_SONICS_INVALID", + "3": "ALC_UNAVAILABLE_TP_FOLLOW", + "4": "ALC_UNAVAILABLE_EXITING_HIGHWAY", + "5": "ALC_UNAVAILABLE_VEHICLE_SPEED", + "6": "ALC_AVAILABLE_ONLY_L", + "7": "ALC_AVAILABLE_ONLY_R", + "8": "ALC_AVAILABLE_BOTH", + "9": "ALC_IN_PROGRESS_L", + "10": "ALC_IN_PROGRESS_R", + "11": "ALC_WAITING_FOR_SIDE_OBST_TO_PASS_L", + "12": "ALC_WAITING_FOR_SIDE_OBST_TO_PASS_R", + "13": "ALC_WAITING_FOR_FWD_OBST_TO_PASS_L", + "14": "ALC_WAITING_FOR_FWD_OBST_TO_PASS_R", + "15": "ALC_ABORT_SIDE_OBSTACLE_PRESENT_L", + "16": "ALC_ABORT_SIDE_OBSTACLE_PRESENT_R", + "17": "ALC_ABORT_POOR_VIEW_RANGE", + "18": "ALC_ABORT_LC_HEALTH_BAD", + "19": "ALC_ABORT_BLINKER_TURNED_OFF", + "20": "ALC_ABORT_OTHER_REASON", + "21": "ALC_UNAVAILABLE_SOLID_LANE_LINE", + "22": "ALC_BLOCKED_VEH_TTC_L", + "23": "ALC_BLOCKED_VEH_TTC_AND_USS_L", + "24": "ALC_BLOCKED_VEH_TTC_R", + "25": "ALC_BLOCKED_VEH_TTC_AND_USS_R", + "26": "ALC_BLOCKED_LANE_TYPE_L", + "27": "ALC_BLOCKED_LANE_TYPE_R", + "28": "ALC_WAITING_HANDS_ON", + "29": "ALC_ABORT_TIMEOUT", + "30": "ALC_ABORT_MISSION_PLAN_INVALID", + "31": "ALC_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_autoParked", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_autoparkReady", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "AUTOPARK_UNAVAILABLE", + "1": "AUTOPARK_READY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_autoparkWaitingForBrake", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_autopilotHandsOnState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "LC_HANDS_ON_NOT_REQD", + "1": "LC_HANDS_ON_REQD_DETECTED", + "2": "LC_HANDS_ON_REQD_NOT_DETECTED", + "3": "LC_HANDS_ON_REQD_VISUAL", + "4": "LC_HANDS_ON_REQD_CHIME_1", + "5": "LC_HANDS_ON_REQD_CHIME_2", + "6": "LC_HANDS_ON_REQD_SLOWING", + "7": "LC_HANDS_ON_REQD_STRUCK_OUT", + "8": "LC_HANDS_ON_SUSPENDED", + "9": "LC_HANDS_ON_REQD_ESCALATED_CHIME_1", + "10": "LC_HANDS_ON_REQD_ESCALATED_CHIME_2", + "15": "LC_HANDS_ON_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_autopilotState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "DISABLED", + "1": "UNAVAILABLE", + "2": "AVAILABLE", + "3": "ACTIVE_NOMINAL", + "4": "ACTIVE_RESTRICTED", + "5": "ACTIVE_NAV", + "8": "ABORTING", + "9": "ABORTED", + "14": "FAULT", + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_blindSpotRearLeft", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "NO_WARNING", + "1": "WARNING_LEVEL_1", + "2": "WARNING_LEVEL_2", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_blindSpotRearRight", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "NO_WARNING", + "1": "WARNING_LEVEL_1", + "2": "WARNING_LEVEL_2", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_fleetSpeedState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "FLEETSPEED_UNAVAILABLE", + "1": "FLEETSPEED_AVAILABLE", + "2": "FLEETSPEED_ACTIVE", + "3": "FLEETSPEED_HOLD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_forwardCollisionWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "NONE", + "1": "FORWARD_COLLISION_WARNING", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "0", + "mux_value": null, + "name": "DAS_fusedSpeedLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "kph/mph", + "values": { + "0": "UNKNOWN_SNA", + "31": "NONE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_heaterState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": { + "0": "HEATER_OFF_SNA", + "1": "HEATER_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "DAS_laneDepartureWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": { + "0": "NONE", + "1": "LEFT_WARNING", + "2": "RIGHT_WARNING", + "3": "LEFT_WARNING_SEVERE", + "4": "RIGHT_WARNING_SEVERE", + "5": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DAS_lssState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": { + "0": "LSS_STATE_FAULT", + "1": "LSS_STATE_LDW", + "2": "LSS_STATE_LKA", + "3": "LSS_STATE_ELK", + "4": "LSS_STATE_MONITOR", + "5": "LSS_STATE_BLINDSPOT", + "6": "LSS_STATE_ABORT", + "7": "LSS_STATE_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_sideCollisionAvoid", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "NONE", + "1": "AVOID_LEFT", + "2": "AVOID_RIGHT", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_sideCollisionInhibit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "NO_INHIBIT", + "1": "INHIBIT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_sideCollisionWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "NONE", + "1": "WARN_LEFT", + "2": "WARN_RIGHT", + "3": "WARN_LEFT_RIGHT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "DAS_statusChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_statusCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_summonAvailable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_summonClearedGate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_summonFwdLeashReached", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_summonObstacle", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_summonRvsLeashReached", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_suppressSpeedWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "Do_Not_Suppress", + "1": "Suppress_Speed_Warning" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "0", + "mux_value": null, + "name": "DAS_visionOnlySpeedLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kph/mph", + "values": { + "0": "UNKNOWN_SNA", + "31": "NONE" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 925, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID39DIBST_status", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "IBST_driverBrakeApply", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "NOT_INIT_OR_OFF", + "1": "BRAKES_NOT_APPLIED", + "2": "DRIVER_APPLYING_BRAKES", + "3": "FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "IBST_iBoosterStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "IBOOSTER_OFF", + "1": "IBOOSTER_INIT", + "2": "IBOOSTER_FAILURE", + "3": "IBOOSTER_DIAGNOSTIC", + "4": "IBOOSTER_ACTIVE_GOOD_CHECK", + "5": "IBOOSTER_READY", + "6": "IBOOSTER_ACTUATION" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "IBST_internalState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "NO_MODE_ACTIVE", + "1": "PRE_DRIVE_CHECK", + "2": "LOCAL_BRAKE_REQUEST", + "3": "EXTERNAL_BRAKE_REQUEST", + "4": "DIAGNOSTIC", + "5": "TRANSITION_TO_IDLE", + "6": "POST_DRIVE_CHECK" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.015625", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "47", + "min": "-5", + "mux_value": null, + "name": "IBST_sInputRodDriver", + "offset": "-5", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "unit": "mm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "IBST_statusChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "IBST_statusCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 929, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID3A1VCFRONT_vehicleStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_12vStatusForDrive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "NOT_READY_FOR_DRIVE_12V", + "1": "READY_FOR_DRIVE_12V", + "2": "EXIT_DRIVE_REQUESTED_12V" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_2RowCenterUnbuckled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "CHIME_NONE", + "1": "CHIME_OCCUPIED_AND_UNBUCKLED", + "2": "CHIME_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_2RowLeftUnbuckled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "CHIME_NONE", + "1": "CHIME_OCCUPIED_AND_UNBUCKLED", + "2": "CHIME_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_2RowRightUnbuckled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "CHIME_NONE", + "1": "CHIME_OCCUPIED_AND_UNBUCKLED", + "2": "CHIME_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCFRONT_APGlassHeaterState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "HEATER_STATE_SNA", + "1": "HEATER_STATE_ON", + "2": "HEATER_STATE_OFF", + "3": "HEATER_STATE_OFF_UNAVAILABLE", + "4": "HEATER_STATE_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_accPlusAvailable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_batterySupportRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_bmsHvChargeEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCFRONT_diPowerOnState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "DI_POWERED_OFF", + "1": "DI_POWERED_ON_FOR_SUMMON", + "2": "DI_POWERED_ON_FOR_STATIONARY_HEAT", + "3": "DI_POWERED_ON_FOR_DRIVE", + "4": "DI_POWER_GOING_DOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_driverBuckleStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": { + "0": "UNBUCKLED", + "1": "BUCKLED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_driverDoorStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": { + "0": "DOOR_OPEN", + "1": "DOOR_CLOSED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_driverIsLeaving", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_driverIsLeavingAnySpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_driverPresent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_driverUnbuckled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "CHIME_NONE", + "1": "CHIME_OCCUPIED_AND_UNBUCKLED", + "2": "CHIME_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_ota12VSupportRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_passengerPresent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_passengerUnbuckled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "CHIME_NONE", + "1": "CHIME_OCCUPIED_AND_UNBUCKLED", + "2": "CHIME_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "16", + "min": "0", + "mux_value": null, + "name": "VCFRONT_pcs12vVoltageTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102.2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_pcsEFuseVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "unit": "V", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_preconditionRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_standbySupplySupported", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_thermalSystemType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "LEGACY_THERMAL_SYSTEM", + "1": "HEAT_PUMP_THERMAL_SYSTEM" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "VCFRONT_vehicleStatusChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "VCFRONT_vehicleStatusCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 985, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID3D9UI_gpsVehicleSpeed", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_conditionalLimitActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 55, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "155", + "min": "0", + "mux_value": null, + "name": "UI_conditionalSpeedLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "kph/mph", + "values": { + "31": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_gpsAntennaDisconnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.5", + "min": "0", + "mux_value": null, + "name": "UI_gpsHDOP", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_gpsNmeaMIA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "GPS Heading", + "comments": {}, + "factor": "0.0078125", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511.992", + "min": "0", + "mux_value": null, + "name": "UI_gpsVehicleHeading", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "GPS Speed", + "comments": {}, + "factor": "0.00390625", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "250.996", + "min": "0", + "mux_value": null, + "name": "UI_gpsVehicleSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kph", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_mapSpeedLimitUnits", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "MPH", + "1": "KPH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "155", + "min": "0", + "mux_value": null, + "name": "UI_mppSpeedLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "kph/mph", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "33", + "min": "-30", + "mux_value": null, + "name": "UI_userSpeedOffset", + "offset": "-30", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kph/mph", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_userSpeedOffsetUnits", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": { + "0": "MPH", + "1": "KPH" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 994, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 7, + "mux_names": {}, + "name": "ID3E2VCLEFT_lightStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_FLMapLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_FLMapLightSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_FRMapLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_FRMapLightSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_RLMapLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_RLMapLightSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_RRMapLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_RRMapLightSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_brakeLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_brakeTrailerLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCLEFT_dynamicBrakeLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "DYNAMIC_BRAKE_LIGHT_OFF", + "1": "DYNAMIC_BRAKE_LIGHT_ACTIVE_LOW", + "2": "DYNAMIC_BRAKE_LIGHT_ACTIVE_HIGH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_fogTrailerLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "127", + "min": "-127", + "mux_value": null, + "name": "VCLEFT_frontRideHeight", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "mm", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_leftTurnTrailerLightStatu", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "127", + "min": "-127", + "mux_value": null, + "name": "VCLEFT_rearRideHeight", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "mm", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_reverseTrailerLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rideHeightSensorFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rightTrnTrailerLightStatu", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCLEFT_tailLightOutageStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_tailLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_tailTrailerLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_trailerDetected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "TRAILER_LIGHT_DETECTION_SNA", + "1": "TRAILER_LIGHT_DETECTION_FAULT", + "2": "TRAILER_LIGHT_DETECTION_DETECTED", + "3": "TRAILER_LIGHT_DETECTION_NOT_DETECTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_turnSignalStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1001, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID3E9DAS_bodyControls", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "DAS_bodyControlsChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_bodyControlsCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_dynamicBrakeLightRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_hazardLightRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "DAS_REQUEST_HAZARDS_OFF", + "1": "DAS_REQUEST_HAZARDS_ON", + "2": "DAS_REQUEST_HAZARDS_UNUSED", + "3": "DAS_REQUEST_HAZARDS_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_headlightRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "DAS_HEADLIGHT_REQUEST_OFF", + "1": "DAS_HEADLIGHT_REQUEST_ON", + "3": "DAS_HEADLIGHT_REQUEST_INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DAS_heaterRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "DAS_HEATER_SNA", + "1": "DAS_HEATER_OFF", + "2": "DAS_HEATER_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DAS_highLowBeamDecision", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "DAS_HIGH_BEAM_UNDECIDED", + "1": "DAS_HIGH_BEAM_OFF", + "2": "DAS_HIGH_BEAM_ON", + "3": "DAS_HIGH_BEAM_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "DAS_highLowBeamOffReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": { + "0": "HIGH_BEAM_ON", + "1": "HIGH_BEAM_OFF_REASON_MOVING_VISION_TARGET", + "2": "HIGH_BEAM_OFF_REASON_MOVING_RADAR_TARGET", + "3": "HIGH_BEAM_OFF_REASON_AMBIENT_LIGHT", + "4": "HIGH_BEAM_OFF_REASON_HEAD_LIGHT", + "5": "HIGH_BEAM_OFF_REASON_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "DAS_turnIndicatorRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "DAS_TURN_INDICATOR_NONE", + "1": "DAS_TURN_INDICATOR_LEFT", + "2": "DAS_TURN_INDICATOR_RIGHT", + "3": "DAS_TURN_INDICATOR_CANCEL", + "4": "DAS_TURN_INDICATOR_DEFER" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "12", + "min": "0", + "mux_value": null, + "name": "DAS_turnIndicatorRequestReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "DAS_NONE", + "1": "DAS_ACTIVE_NAV_LANE_CHANGE", + "2": "DAS_ACTIVE_SPEED_LANE_CHANGE", + "3": "DAS_ACTIVE_FORK", + "4": "DAS_CANCEL_LANE_CHANGE", + "5": "DAS_CANCEL_FORK", + "6": "DAS_ACTIVE_MERGE", + "7": "DAS_CANCEL_MERGE", + "8": "DAS_ACTIVE_COMMANDED_LANE_CHANGE", + "9": "DAS_ACTIVE_INTERSECTION", + "10": "DAS_CANCEL_INTERSECTION", + "11": "DAS_ACTIVE_SUMMMON", + "12": "DAS_CANCEL_SUMMMON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DAS_wiperSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "DAS_WIPER_SPEED_OFF", + "1": "DAS_WIPER_SPEED_1", + "2": "DAS_WIPER_SPEED_2", + "3": "DAS_WIPER_SPEED_3", + "4": "DAS_WIPER_SPEED_4", + "5": "DAS_WIPER_SPEED_5", + "6": "DAS_WIPER_SPEED_6", + "7": "DAS_WIPER_SPEED_7", + "8": "DAS_WIPER_SPEED_8", + "9": "DAS_WIPER_SPEED_9", + "10": "DAS_WIPER_SPEED_10", + "11": "DAS_WIPER_SPEED_11", + "12": "DAS_WIPER_SPEED_12", + "13": "DAS_WIPER_SPEED_13", + "14": "DAS_WIPER_SPEED_14", + "15": "DAS_WIPER_SPEED_INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_radarHeaterRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 23, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DAS_ahlbOverride", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DAS_mirrorFoldRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": { + "0": "NONE", + "1": "FOLD", + "2": "UNFOLD", + "3": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1011, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 3, + "mux_names": {}, + "name": "ID3F3UI_odo", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 24, + "comment": "UI Odometer", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1677720", + "min": "0", + "mux_value": null, + "name": "UI_odometer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "km", + "values": { + "16777215": "SNA" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1013, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID3F5VCFRONT_lighting", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_DRLLeftStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_DRLRightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "mux_value": null, + "name": "VCFRONT_ambientLightingBrightnes", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_approachLightingRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_courtesyLightingRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_fogLeftStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_fogRightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "mux_value": null, + "name": "VCFRONT_hazardLightRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "HAZARD_REQUEST_NONE", + "1": "HAZARD_REQUEST_BUTTON", + "2": "HAZARD_REQUEST_LOCK", + "3": "HAZARD_REQUEST_UNLOCK", + "4": "HAZARD_REQUEST_MISLOCK", + "5": "HAZARD_REQUEST_CRASH", + "6": "HAZARD_REQUEST_CAR_ALARM", + "7": "HAZARD_REQUEST_DAS", + "8": "HAZARD_REQUEST_UDS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_hazardSwitchBacklight", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_highBeamLeftStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_highBeamRightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_highBeamSwitchActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_indicatorLeftRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "TURN_SIGNAL_OFF", + "1": "TURN_SIGNAL_ACTIVE_LOW", + "2": "TURN_SIGNAL_ACTIVE_HIGH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_indicatorRightRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "TURN_SIGNAL_OFF", + "1": "TURN_SIGNAL_ACTIVE_LOW", + "2": "TURN_SIGNAL_ACTIVE_HIGH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_lowBeamLeftStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_lowBeamRightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_lowBeamsCalibrated", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_lowBeamsOnForDRL", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_parkLeftStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_parkRightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_seeYouHomeLightingReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_sideMarkersStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_sideRepeaterLeftStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_sideRepeaterRightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_simLatchingStalk", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": { + "0": "SIMULATED_LATCHING_STALK_IDLE", + "1": "SIMULATED_LATCHING_STALK_LEFT", + "2": "SIMULATED_LATCHING_STALK_RIGHT", + "3": "SIMULATED_LATCHING_STALK_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "mux_value": null, + "name": "VCFRONT_switchLightingBrightness", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_turnSignalLeftStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCFRONT_turnSignalRightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1016, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID3F8UI_driverAssistControl", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "UI_accFollowDistanceSetting", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": { + "0": "DISTANCE_SETTING_1", + "1": "DISTANCE_SETTING_2", + "2": "DISTANCE_SETTING_3", + "3": "DISTANCE_SETTING_4", + "4": "DISTANCE_SETTING_5", + "5": "DISTANCE_SETTING_6", + "6": "DISTANCE_SETTING_7", + "7": "DISTANCE_SETTING_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_adaptiveSetSpeedEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_alcOffHighwayEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_autoSummonEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_autopilotControlRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "LEGACY_LAT_CTRL", + "1": "NEXT_GEN_CTRL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_coastToCoast", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_curvSpeedAdaptDisable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "CSA_ON", + "1": "CSA_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_curvatureDatabaseOnly", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "OFF", + "1": "ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_dasDeveloper", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_driveOnMapsEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "DOM_OFF", + "1": "DOM_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_drivingSide", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "DRIVING_SIDE_LEFT", + "1": "DRIVING_SIDE_RIGHT", + "2": "DRIVING_SIDE_UNKNOWN" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_enableBrakeLightPulse", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_enableClipTelemetry", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_enableRoadSegmentTelemetry", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_enableTripTelemetry", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_enableVinAssociation", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_enableVisionOnlyStops", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_exceptionListEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "EXCEPTION_LIST_OFF", + "1": "EXCEPTION_LIST_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_followNavRouteEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": { + "0": "NAV_ROUTE_OFF", + "1": "NAV_ROUTE_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_fuseHPPDisable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": { + "0": "FUSE_HPP_ON", + "1": "FUSE_HPP_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_fuseLanesDisable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "FUSE_LANES_ON", + "1": "FUSE_LANES_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_fuseVehiclesDisable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "FUSE_VEH_ON", + "1": "FUSE_VEH_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_handsOnRequirementDisable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "HANDS_ON_REQ_ON", + "1": "HANDS_ON_REQ_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_hasDriveOnNav", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_lssElkEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 23, + "values": { + "0": "ELK_OFF", + "1": "ELK_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_lssLdwEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "LDW_OFF", + "1": "LDW_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_lssLkaEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": { + "0": "LKA_OFF", + "1": "LKA_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_roadCheckDisable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "RC_ON", + "1": "RC_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "UI_selfParkRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "NONE", + "1": "SELF_PARK_FORWARD", + "2": "SELF_PARK_REVERSE", + "3": "ABORT", + "4": "PRIME", + "5": "PAUSE", + "6": "RESUME", + "7": "AUTO_SUMMON_FORWARD", + "8": "AUTO_SUMMON_REVERSE", + "9": "AUTO_SUMMON_CANCEL", + "10": "AUTO_SUMMON_PRIMED", + "11": "SMART_SUMMON", + "12": "SMART_SUMMON_NO_OP", + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_smartSummonType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "PIN_DROP", + "1": "FIND_ME", + "2": "SMART_AUTOPARK" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_source3D", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": { + "0": "Z_FROM_MAP", + "1": "Z_FROM_PATH_PREDICTION", + "2": "XYZ_PREDICTION" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_summonEntryType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "STRAIGHT", + "1": "TURN_RIGHT", + "2": "TURN_LEFT", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_summonExitType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "STRAIGHT", + "1": "TURN_RIGHT", + "2": "TURN_LEFT", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_summonHeartbeat", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "63", + "min": "0", + "mux_value": null, + "name": "UI_summonReverseDist", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "63": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_ulcBlindSpotConfig", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "STANDARD", + "1": "AGGRESSIVE", + "2": "MAD_MAX" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_ulcOffHighway", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_ulcSpeedConfig", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "SPEED_BASED_ULC_DISABLED", + "1": "SPEED_BASED_ULC_MILD", + "2": "SPEED_BASED_ULC_AVERAGE", + "3": "SPEED_BASED_ULC_MAD_MAX" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_ulcStalkConfirm", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_undertakeAssistEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_validationLoop", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 57, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_visionSpeedType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "VISION_SPEED_DISABLED", + "1": "VISION_SPEED_ONE_SECOND", + "2": "VISION_SPEED_TWO_SECOND", + "3": "VISION_SPEED_OPTIMIZED" + } + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1021, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID3FDUI_autopilotControl", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "UI_autopilotControlIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "AUTOPILOT_CONTROL_0", + "1": "AUTOPILOT_CONTROL_1", + "2": "AUTOPILOT_CONTROL_2", + "3": "AUTOPILOT_CONTROL_3", + "4": "AUTOPILOT_CONTROL_4", + "5": "AUTOPILOT_CONTROL_5", + "6": "AUTOPILOT_CONTROL_6", + "7": "AUTOPILOT_CONTROL_7" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_apmv3Branch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "LIVE", + "1": "STAGE", + "2": "DEV", + "3": "STAGE2", + "4": "EAP", + "5": "DEMO" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_applyEceR79", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_blindspotDistance", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": { + "0": "BLINDSPOT_DISTANCE_DEFAULT", + "1": "BLINDSPOT_DISTANCE_0P5_M", + "2": "BLINDSPOT_DISTANCE_1_M", + "3": "BLINDSPOT_DISTANCE_2_M", + "4": "BLINDSPOT_DISTANCE_4_M", + "5": "BLINDSPOT_DISTANCE_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_blindspotMinSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "BLINDSPOT_MIN_SPEED_DEFAULT", + "1": "BLINDSPOT_MIN_SPEED_5_KPH", + "2": "BLINDSPOT_MIN_SPEED_10_KPH", + "3": "BLINDSPOT_MIN_SPEED_15_KPH", + "4": "BLINDSPOT_MIN_SPEED_20_KPH", + "5": "BLINDSPOT_MIN_SPEED_25_KPH", + "6": "BLINDSPOT_MIN_SPEED_30_KPH", + "7": "BLINDSPOT_MIN_SPEED_35_KPH", + "8": "BLINDSPOT_MIN_SPEED_40_KPH", + "9": "BLINDSPOT_MIN_SPEED_45_KPH", + "10": "BLINDSPOT_MIN_SPEED_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_blindspotTTC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "BLINDSPOT_TTC_DEFAULT", + "1": "BLINDSPOT_TTC_0P5_S", + "2": "BLINDSPOT_TTC_1_S", + "3": "BLINDSPOT_TTC_2_S", + "4": "BLINDSPOT_TTC_4_S", + "5": "BLINDSPOT_TTC_3_S", + "6": "BLINDSPOT_TTC_5_S", + "7": "BLINDSPOT_TTC_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_disableBackup", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_disableFisheye", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_disableLeftPillar", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_disableLeftRepeater", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_disableMain", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 23, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_disableNarrow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_disableRadar", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_disableRightPillar", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_disableRightRepeater", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_donAlcProgGoreAbortThres", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": { + "0": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_DEFAULT", + "1": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P00", + "2": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P05", + "3": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P10", + "4": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P15", + "5": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P20", + "6": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P25", + "7": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P30", + "8": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P35", + "9": "DON_ALC_PROGRESS_GORE_ABORT_THRESHOLD_0P40" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_donDisableAutoWiperDuration", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "DON_DISABLE_AUTO_WIPER_DURATION_DEFAULT", + "1": "DON_DISABLE_AUTO_WIPER_DURATION_5_S", + "2": "DON_DISABLE_AUTO_WIPER_DURATION_15_S", + "3": "DON_DISABLE_AUTO_WIPER_DURATION_30_S", + "4": "DON_DISABLE_AUTO_WIPER_DURATION_60_S", + "5": "DON_DISABLE_AUTO_WIPER_DURATION_120_S", + "6": "DON_DISABLE_AUTO_WIPER_DURATION_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_donDisableCutin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "DON_DISABLE_CUTIN_OFF", + "1": "DON_DISABLE_CUTIN_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_donDisableOnAutoWiperSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": { + "0": "DAS_WIPER_SPEED_OFF", + "1": "DAS_WIPER_SPEED_1", + "2": "DAS_WIPER_SPEED_2", + "3": "DAS_WIPER_SPEED_3", + "4": "DAS_WIPER_SPEED_4", + "5": "DAS_WIPER_SPEED_5", + "6": "DAS_WIPER_SPEED_6", + "7": "DAS_WIPER_SPEED_7", + "8": "DAS_WIPER_SPEED_8", + "9": "DAS_WIPER_SPEED_9", + "10": "DAS_WIPER_SPEED_10", + "11": "DAS_WIPER_SPEED_11", + "12": "DAS_WIPER_SPEED_12", + "13": "DAS_WIPER_SPEED_13", + "14": "DAS_WIPER_SPEED_14", + "15": "DAS_WIPER_SPEED_INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_donMinGoreWidthForAbortMap", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": { + "0": "DON_MIN_GORE_WIDTH_FOR_ABORT_DEFAULT", + "1": "DON_MIN_GORE_WIDTH_FOR_ABORT_0_M", + "2": "DON_MIN_GORE_WIDTH_FOR_ABORT_0P5_M", + "3": "DON_MIN_GORE_WIDTH_FOR_ABORT_1_M", + "4": "DON_MIN_GORE_WIDTH_FOR_ABORT_1P5_M", + "5": "DON_MIN_GORE_WIDTH_FOR_ABORT_2_M", + "6": "DON_MIN_GORE_WIDTH_FOR_ABORT_2P5_M", + "7": "DON_MIN_GORE_WIDTH_FOR_ABORT_3_M", + "8": "DON_MIN_GORE_WIDTH_FOR_ABORT_3P5_M", + "9": "DON_MIN_GORE_WIDTH_FOR_ABORT_4_M", + "10": "DON_MIN_GORE_WIDTH_FOR_ABORT_4P5_M", + "11": "DON_MIN_GORE_WIDTH_FOR_ABORT_5_M" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_donMinGoreWidthForAbortNotMap", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": { + "0": "DON_MIN_GORE_WIDTH_FOR_ABORT_DEFAULT", + "1": "DON_MIN_GORE_WIDTH_FOR_ABORT_0_M", + "2": "DON_MIN_GORE_WIDTH_FOR_ABORT_0P5_M", + "3": "DON_MIN_GORE_WIDTH_FOR_ABORT_1_M", + "4": "DON_MIN_GORE_WIDTH_FOR_ABORT_1P5_M", + "5": "DON_MIN_GORE_WIDTH_FOR_ABORT_2_M", + "6": "DON_MIN_GORE_WIDTH_FOR_ABORT_2P5_M", + "7": "DON_MIN_GORE_WIDTH_FOR_ABORT_3_M", + "8": "DON_MIN_GORE_WIDTH_FOR_ABORT_3P5_M", + "9": "DON_MIN_GORE_WIDTH_FOR_ABORT_4_M", + "10": "DON_MIN_GORE_WIDTH_FOR_ABORT_4P5_M", + "11": "DON_MIN_GORE_WIDTH_FOR_ABORT_5_M" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_donStopEndOfRampBuffer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": { + "0": "DON_STOP_END_OF_RAMP_BUFFER_DEFAULT", + "1": "DON_STOP_END_OF_RAMP_BUFFER_15_M", + "2": "DON_STOP_END_OF_RAMP_BUFFER_30_M", + "3": "DON_STOP_END_OF_RAMP_BUFFER_45_M", + "4": "DON_STOP_END_OF_RAMP_BUFFER_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_driverMonitorConfirmation", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_enableAutopilotStopWarning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_enableCabinCamera", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_enableCabinCameraTelemetry", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_enableMapStops", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_factorySummonEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_fsdStopsControlEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_fsdVisualizationEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_hardCoreSummon", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_homelinkNearby", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": { + "0": "HOMELINK_NOT_NEARBY", + "1": "HOMELINK_NEARBY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_hovEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "HOV_OFF", + "1": "HOV_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_noStalkConfirmAlertChime", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_noStalkConfirmAlertHaptic", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_showLaneGraph", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_showTrackLabels", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "UI_autopilotControlIndex", + "name": "UI_ulcSnooze", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 615, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID267DI_vehicleEstimates", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": "Estimated Grade", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40", + "min": "-40", + "mux_value": null, + "name": "DI_gradeEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40", + "min": "-40", + "mux_value": null, + "name": "DI_gradeEstInternal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "Estimated Mass", + "comments": {}, + "factor": "5", + "initial_value": "1900", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7010", + "min": "1900", + "mux_value": null, + "name": "DI_mass", + "offset": "1900", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_massConfidence", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "MASS_NOT_CONFIDED", + "1": "MASS_CONFIDED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "6.2", + "min": "-6.2", + "mux_value": null, + "name": "DI_relativeTireTreadDepth", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "mm", + "values": { + "32": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "25.4", + "min": "-25.6", + "mux_value": null, + "name": "DI_steeringAngleOffset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "Deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DI_tireFitment", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "FITMENT_SQUARE", + "1": "FITMENT_STAGGERED", + "3": "FITMENT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_trailerDetected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "TRAILER_NOT_DETECTED", + "1": "TRAILER_DETECTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "DI_vehicleEstimatesChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DI_vehicleEstimatesCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 642, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID282VCLEFT_hvacBlowerFeedback", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCLEFT_blowerIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "HVAC_FEEDBACK_SIGNALS", + "1": "HVAC_VARS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerCBCCtrlState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "ERROR", + "1": "IDLE", + "2": "OFFLINE", + "3": "ONLINE", + "4": "COUNT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "14", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerCBCEstState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": { + "0": "ERROR", + "1": "IDLE", + "2": "ROVERL", + "3": "RS", + "4": "RAMPUP", + "5": "IDRATED", + "6": "RATEDFLUX_OL", + "7": "RATEDFLUX", + "8": "RAMPDOWN", + "9": "LOCKROTOR", + "10": "INDUCTANCE_EST", + "11": "ROTOR_RESISTANCE", + "12": "MOTOR_IDENTIFIED", + "13": "ONLINE", + "14": "COUNT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1.5", + "initial_value": "0.5", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "149", + "min": "-40", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerFETTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "C", + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "50", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerIPhase0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "A", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "50", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerIPhase1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "unit": "A", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "50", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerIPhase2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "unit": "A", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.05", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4.5", + "min": "-1.5", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerITerm", + "offset": "-1.5", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "unit": "Nm", + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerInitd", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerLimitFETTemps", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerOutputDuty", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "unit": "%", + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerPowerOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "HVAC Blower Speed", + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerRPMActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "rpm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerRPMTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "rpm", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "60", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerRs", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "unit": "mOhm", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerRsOnlineActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerSpiError", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.006", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4.5", + "min": "-1.5", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlowerTorque", + "offset": "-1.5", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "unit": "Nm", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlower_IO_CBC_HEAD", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlower_IO_CBC_Status", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": { + "0": "IDLE", + "1": "RX" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlower_IO_CBC_TAIL", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlower_IO_CBC_TAIL_va", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_blowerIndex", + "name": "VCLEFT_hvacBlower_IO_CBC_numUart", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 755, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID2F3UI_hvacRequest", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_hvacReqACDisable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "AUTO", + "1": "OFF", + "2": "ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "UI_hvacReqAirDistributionMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "AUTO", + "1": "MANUAL_FLOOR", + "2": "MANUAL_PANEL", + "3": "MANUAL_PANEL_FLOOR", + "4": "MANUAL_DEFROST", + "5": "MANUAL_DEFROST_FLOOR", + "6": "MANUAL_DEFROST_PANEL", + "7": "MANUAL_DEFROST_PANEL_FLOOR" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "mux_value": null, + "name": "UI_hvacReqBlowerSegment", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "OFF", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "10", + "11": "AUTO" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_hvacReqKeepClimateOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": { + "0": "KEEP_CLIMATE_ON_REQ_OFF", + "1": "KEEP_CLIMATE_ON_REQ_ON", + "2": "KEEP_CLIMATE_ON_REQ_DOG", + "3": "KEEP_CLIMATE_ON_REQ_PARTY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_hvacReqManualDefogState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "NONE", + "1": "DEFOG", + "2": "DEFROST" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_hvacReqRecirc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "AUTO", + "1": "RECIRC", + "2": "FRESH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "UI_hvacReqSecondRowState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": { + "0": "AUTO", + "1": "OFF", + "2": "LOW", + "3": "MED", + "4": "HIGH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "15.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "28", + "min": "15", + "mux_value": null, + "name": "UI_hvacReqTempSetpointLeft", + "offset": "15", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": { + "0": "LO", + "26": "HI" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "15.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "28", + "min": "15", + "mux_value": null, + "name": "UI_hvacReqTempSetpointRight", + "offset": "15", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": { + "0": "LO", + "26": "HI" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "UI_hvacReqUserPowerState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "OFF", + "1": "ON", + "2": "PRECONDITION", + "3": "OVERHEAT_PROTECT_FANONLY", + "4": "OVERHEAT_PROTECT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_hvacUseModeledDuctTemp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 787, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID313UI_trackModeSettings", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_trackCmpOverclock", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": { + "0": "TRACK_MODE_CMP_OVERCLOCK_OFF", + "1": "TRACK_MODE_CMP_OVERCLOCK_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_trackModeRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "TRACK_MODE_REQUEST_IDLE", + "1": "TRACK_MODE_REQUEST_ON", + "2": "TRACK_MODE_REQUEST_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "UI_trackModeSettingsChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "UI_trackModeSettingsCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_trackPostCooling", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "TRACK_MODE_POST_COOLING_OFF", + "1": "TRACK_MODE_POST_COOLING_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "UI_trackRotationTendency", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "UI_trackStabilityAssist", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 821, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID335RearDIinfo", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "DIR_infoIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "DI_INFO_DEPRECATED_0", + "1": "DI_INFO_DEPRECATED_1", + "2": "DI_INFO_DEPRECATED_2", + "3": "DI_INFO_DEPRECATED_3", + "4": "DI_INFO_DEPRECATED_4", + "5": "DI_INFO_DEPRECATED_5", + "6": "DI_INFO_DEPRECATED_6", + "7": "DI_INFO_DEPRECATED_7", + "8": "DI_INFO_DEPRECATED_8", + "9": "DI_INFO_DEPRECATED_9", + "10": "DI_INFO_BUILD_HWID_COMPONENTID", + "11": "DI_INFO_PCBAID_ASSYID_USAGEID", + "13": "DI_INFO_APP_CRC", + "14": "DI_INFO_BOOTLOADER_SVN", + "15": "DI_INFO_BOOTLOADER_CRC", + "16": "DI_INFO_SUBCOMPONENT", + "17": "DI_INFO_APP_GITHASH", + "18": "DI_INFO_BOOTLOADER_GITHASH", + "19": "DI_INFO_VERSION_DEPRECATED", + "20": "DI_INFO_UDS_PROTOCOL_BOOTCRC", + "23": "DI_INFO_SUBCOMPONENT2", + "31": "DI_INFO_SUBCOMPONENT_GITHASH", + "255": "DI_INFO_END" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_FPGA_version", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "254": "FPGA_VERSION_LOCAL_BUILD", + "255": "FPGA_VERSION_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_appGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_applicationCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_assemblyId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_bootGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_bootloaderCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_buildConfigurationId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_buildType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "INFO_UNKNOWN_BUILD", + "1": "INFO_PLATFORM_BUILD", + "2": "INFO_LOCAL_BUILD", + "3": "INFO_TRACEABLE_CI_BUILD", + "4": "INFO_MFG_BUILD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_componentId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "252", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_hardwareId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "252": "CONFIGURABLE_HWID_PLACEHOLDER" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_infoBootLdUdsProtocolVersion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_oilPumpAppCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_oilPumpBuildType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "INFO_UNKNOWN_BUILD", + "1": "INFO_PLATFORM_BUILD", + "2": "INFO_LOCAL_BUILD", + "3": "INFO_TRACEABLE_CI_BUILD", + "4": "INFO_MFG_BUILD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_pcbaId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_platformTyp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_subUsageId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 31, + "mux_value": 31, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_subcomponentGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "DIR_infoIndex", + "name": "DIR_usageId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 899, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID383VCRIGHT_thsStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1022", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_estimatedThsSolarLoad", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "unit": "W/m2", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_estimatedVehicleSituatio", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": { + "0": "VEHICLE_SITUATION_UNKNOWN", + "1": "VEHICLE_SITUATION_INDOOR", + "2": "VEHICLE_SITUATION_OUTDOOR" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_thsActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_thsHumidity", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "unit": "%", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1022", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_thsSolarLoadInfrared", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "unit": "W/m2", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1022", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_thsSolarLoadVisible", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "unit": "W/m2", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "150", + "min": "-40", + "mux_value": null, + "name": "VCRIGHT_thsTemperature", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "unit": "C", + "values": { + "128": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 947, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID3B3UI_vehicleControl2", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_PINToDriveEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_PINToDrivePassed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_UMCUpdateInhibit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_VCLEFTFeature1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_VCSECFeature1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_WCUpdateInhibit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_alarmTriggerRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_autoRollWindowsOnLockEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_autopilotPowerStateRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": { + "0": "AUTOPILOT_NOMINAL", + "1": "AUTOPILOT_SENTRY", + "2": "AUTOPILOT_SUSPEND" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_batteryPreconditioningRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 23, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_coastDownMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_conditionalLoggingEnabledVCSE", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_efuseMXResistanceEstArmed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_freeRollModeRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_gloveboxRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "UI_lightSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": { + "0": "LIGHT_SWITCH_AUTO", + "1": "LIGHT_SWITCH_ON", + "2": "LIGHT_SWITCH_PARKING", + "3": "LIGHT_SWITCH_OFF", + "4": "LIGHT_SWITCH_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_locksPanelActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_readyToAddKey", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_shorted12VCellTestMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "0": "SHORTED_CELL_TEST_MODE_DISABLED", + "1": "SHORTED_CELL_TEST_MODE_SHADOW", + "2": "SHORTED_CELL_TEST_MODE_ACTIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_soundHornOnLock", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_summonState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "SNA", + "1": "IDLE", + "2": "PRE_PRIMED", + "3": "ACTIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_trunkRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_userPresent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "UI_windowRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "WINDOW_REQUEST_IDLE", + "1": "WINDOW_REQUEST_GOTO_PERCENT", + "2": "WINDOW_REQUEST_GOTO_VENT", + "3": "WINDOW_REQUEST_GOTO_CLOSED", + "4": "WINDOW_REQUEST_GOTO_OPEN" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 963, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 7, + "mux_names": {}, + "name": "ID3C3VCRIGHT_switchStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_2RowSeatReclineSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowAutoDownRF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowAutoDownRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowAutoUpRF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowAutoUpRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowDownRF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowDownRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackAutoDwnLF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackAutoDwnLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackAutoDwnRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackAutoUpLF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackAutoUpLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackAutoUpRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackDownLF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackDownLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackDownRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackUpLF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackUpLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowSwPackUpRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowUpRF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_btnWindowUpRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontBuckleSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontOccupancySwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatBackrestBack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatBackrestForward", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatLiftDown", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatLiftUp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatLumbarDown", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatLumbarIn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatLumbarOut", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatLumbarUp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatTiltDown", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatTiltUp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatTrackBack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_frontSeatTrackForward", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_liftgateShutfaceSwitchPr", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearCenterBuckleSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearRightBuckleSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_trunkExtReleasePressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 995, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 2, + "mux_names": {}, + "name": "ID3E3VCRIGHT_lightStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_brakeLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_interiorTrunkLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearFogLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_reverseLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_tailLightStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_turnSignalStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "LIGHT_OFF", + "1": "LIGHT_ON", + "2": "LIGHT_FAULT", + "3": "LIGHT_SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1622, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID656FrontDIinfo", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "DIF_infoIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "DI_INFO_DEPRECATED_0", + "1": "DI_INFO_DEPRECATED_1", + "2": "DI_INFO_DEPRECATED_2", + "3": "DI_INFO_DEPRECATED_3", + "4": "DI_INFO_DEPRECATED_4", + "5": "DI_INFO_DEPRECATED_5", + "6": "DI_INFO_DEPRECATED_6", + "7": "DI_INFO_DEPRECATED_7", + "8": "DI_INFO_DEPRECATED_8", + "9": "DI_INFO_DEPRECATED_9", + "10": "DI_INFO_BUILD_HWID_COMPONENTID", + "11": "DI_INFO_PCBAID_ASSYID_USAGEID", + "13": "DI_INFO_APP_CRC", + "14": "DI_INFO_BOOTLOADER_SVN", + "15": "DI_INFO_BOOTLOADER_CRC", + "16": "DI_INFO_SUBCOMPONENT", + "17": "DI_INFO_APP_GITHASH", + "18": "DI_INFO_BOOTLOADER_GITHASH", + "19": "DI_INFO_VERSION_DEPRECATED", + "20": "DI_INFO_UDS_PROTOCOL_BOOTCRC", + "23": "DI_INFO_SUBCOMPONENT2", + "31": "DI_INFO_SUBCOMPONENT_GITHASH", + "255": "DI_INFO_END" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_FPGA_version", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "254": "FPGA_VERSION_LOCAL_BUILD", + "255": "FPGA_VERSION_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_appGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_applicationCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_assemblyId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_bootGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_bootloaderCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_buildConfigurationId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_buildType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "INFO_UNKNOWN_BUILD", + "1": "INFO_PLATFORM_BUILD", + "2": "INFO_LOCAL_BUILD", + "3": "INFO_TRACEABLE_CI_BUILD", + "4": "INFO_MFG_BUILD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_componentId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "252", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_hardwareId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "252": "CONFIGURABLE_HWID_PLACEHOLDER" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_infoBootLdUdsProtocolVersion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_oilPumpAppCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_oilPumpBuildType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "INFO_UNKNOWN_BUILD", + "1": "INFO_PLATFORM_BUILD", + "2": "INFO_LOCAL_BUILD", + "3": "INFO_TRACEABLE_CI_BUILD", + "4": "INFO_MFG_BUILD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_pcbaId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_platformTyp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_subUsageId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 31, + "mux_value": 31, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_subcomponentGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "DIF_infoIndex", + "name": "DIF_usageId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 768, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID300BMS_info", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "BMS_infoIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "INFO_DEPRECATED_0", + "1": "INFO_DEPRECATED_1", + "2": "INFO_DEPRECATED_2", + "3": "INFO_DEPRECATED_3", + "4": "INFO_DEPRECATED_4", + "5": "INFO_DEPRECATED_5", + "6": "INFO_DEPRECATED_6", + "7": "INFO_DEPRECATED_7", + "8": "INFO_DEPRECATED_8", + "9": "INFO_DEPRECATED_9", + "10": "INFO_BUILD_HWID_COMPONENTID", + "11": "INFO_PCBAID_ASSYID_USAGEID", + "13": "INFO_APP_CRC", + "14": "INFO_BOOTLOADER_SVN", + "15": "INFO_BOOTLOADER_CRC", + "16": "INFO_SUBCOMPONENT", + "17": "INFO_APP_GITHASH", + "18": "INFO_BOOTLOADER_GITHASH", + "19": "INFO_VERSION_DEPRECATED", + "20": "INFO_UDS_PROTOCOL_BOOTCRC", + "22": "INFO_VARIANTCRC", + "25": "INFO_PACKAGE_PN_1_7", + "26": "INFO_PACKAGE_PN_8_14", + "27": "INFO_PACKAGE_PN_15_20", + "29": "INFO_PACKAGE_SN_1_7", + "30": "INFO_PACKAGE_SN_8_14", + "31": "INFO_SUBCOMPONENT_GITHASH", + "255": "INFO_END" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_appCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_appGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_assemblyId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_bootCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_bootGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_bootUdsProtoVersion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_buildConfigId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_buildType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "INFO_UNKNOWN_BUILD", + "1": "INFO_PLATFORM_BUILD", + "2": "INFO_LOCAL_BUILD", + "3": "INFO_TRACEABLE_CI_BUILD", + "4": "INFO_MFG_BUILD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_componentId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_hardwareId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_pcbaId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_platformType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_subUsageId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "BMS_infoIndex", + "name": "BMS_usageId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "Cyclic", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 530, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID212BMS_status", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_activeHeatingWorthwhile", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_chargeRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "BMS_chargeRetryCount", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255.75", + "min": "0", + "mux_value": null, + "name": "BMS_chgPowerAvailable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kW", + "values": { + "2047": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "BMS_contactorState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "BMS_CTRSET_SNA", + "1": "BMS_CTRSET_OPEN", + "2": "BMS_CTRSET_OPENING", + "3": "BMS_CTRSET_CLOSING", + "4": "BMS_CTRSET_CLOSED", + "5": "BMS_CTRSET_WELDED", + "6": "BMS_CTRSET_BLOCKED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_cpMiaOnHvs", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_diLimpRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "LIMP_REQUEST_NONE", + "1": "LIMP_REQUEST_WELDED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "BMS_ecuLogUploadRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "REQUEST_PRIORITY_NONE", + "1": "REQUEST_PRIORITY_1", + "2": "REQUEST_PRIORITY_2", + "3": "REQUEST_PRIORITY_3" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "BMS_hvState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "HV_DOWN", + "1": "HV_COMING_UP", + "2": "HV_GOING_DOWN", + "3": "HV_UP_FOR_DRIVE", + "4": "HV_UP_FOR_CHARGE", + "5": "HV_UP_FOR_DC_CHARGE", + "6": "HV_UP" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_hvacPowerRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "mux_value": null, + "name": "BMS_isolationResistance", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "unit": "kOhm", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_keepWarmRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_notEnoughPowerForDrive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_notEnoughPowerForSupport", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_okToShipByAir", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_okToShipByLand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_pcsPwmEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_preconditionAllowed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "mux_value": null, + "name": "BMS_smStateRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "BMS_STANDBY", + "1": "BMS_DRIVE", + "2": "BMS_SUPPORT", + "3": "BMS_CHARGE", + "4": "BMS_FEIM", + "5": "BMS_CLEAR_FAULT", + "6": "BMS_FAULT", + "7": "BMS_WELD", + "8": "BMS_TEST", + "9": "BMS_SNA", + "10": "BMS_DIAG" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "mux_value": null, + "name": "BMS_state", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "BMS_STANDBY", + "1": "BMS_DRIVE", + "2": "BMS_SUPPORT", + "3": "BMS_CHARGE", + "4": "BMS_FEIM", + "5": "BMS_CLEAR_FAULT", + "6": "BMS_FAULT", + "7": "BMS_WELD", + "8": "BMS_TEST", + "9": "BMS_SNA", + "10": "BMS_DIAG" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "BMS_uiChargeStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "BMS_DISCONNECTED", + "1": "BMS_NO_POWER", + "2": "BMS_ABOUT_TO_CHARGE", + "3": "BMS_CHARGING", + "4": "BMS_CHARGE_COMPLETE", + "5": "BMS_CHARGE_STOPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_updateAllowed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 796, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID31CCC_chgStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127.5", + "min": "0", + "mux_value": null, + "name": "CC_currentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "A", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CC_deltaTransformer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "CC_gridGrounding", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "CC_GRID_GROUNDING_TN_TT", + "1": "CC_GRID_GROUNDING_IT_SplitPhase", + "2": "CC_GRID_GROUNDING_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "CC_line1Voltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": { + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "CC_line2Voltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "unit": "V", + "values": { + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "CC_line3Voltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "unit": "V", + "values": { + "511": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CC_numPhases", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "CC_numVehCharging", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CC_pilotState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "CC_PILOT_STATE_READY", + "1": "CC_PILOT_STATE_IDLE", + "2": "CC_PILOT_STATE_FAULTED", + "3": "CC_PILOT_STATE_SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 573, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID23DCP_chargeStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127.5", + "min": "0", + "mux_value": null, + "name": "CP_acChargeCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "CP_chargeShutdownRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "NO_SHUTDOWN_REQUESTED", + "1": "GRACEFUL_SHUTDOWN_REQUESTED", + "2": "EMERGENCY_SHUTDOWN_REQUESTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "CP_hvChargeStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "CP_CHARGE_INACTIVE", + "1": "CP_CHARGE_CONNECTED", + "2": "CP_CHARGE_STANDBY", + "3": "CP_EXT_EVSE_TEST_ACTIVE", + "4": "CP_EVSE_TEST_PASSED", + "5": "CP_CHARGE_ENABLED", + "6": "CP_CHARGE_FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.146502", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1200", + "min": "0", + "mux_value": null, + "name": "CP_internalMaxCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_vehicleIsoCheckRequired", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_vehiclePrechargeRequired", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 317, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 6, + "mux_names": {}, + "name": "ID13DCP_chargeStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127.5", + "min": "0", + "mux_value": null, + "name": "CP_acChargeCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "CP_chargeShutdownRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "NO_SHUTDOWN_REQUESTED", + "1": "GRACEFUL_SHUTDOWN_REQUESTED", + "2": "EMERGENCY_SHUTDOWN_REQUESTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "CP_evseChargeType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "NO_CHARGER_PRESENT", + "1": "DC_CHARGER_PRESENT", + "2": "AC_CHARGER_PRESENT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "CP_hvChargeStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "CP_CHARGE_INACTIVE", + "1": "CP_CHARGE_CONNECTED", + "2": "CP_CHARGE_STANDBY", + "3": "CP_EXT_EVSE_TEST_ACTIVE", + "4": "CP_EVSE_TEST_PASSED", + "5": "CP_CHARGE_ENABLED", + "6": "CP_CHARGE_FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127.5", + "min": "0", + "mux_value": null, + "name": "CP_internalMaxAcCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.146502", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1200", + "min": "0", + "mux_value": null, + "name": "CP_internalMaxDcCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_vehicleIsoCheckRequired", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_vehiclePrechargeRequired", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1085, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 6, + "mux_names": {}, + "name": "ID43DCP_chargeStatusLog", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127.5", + "min": "0", + "mux_value": null, + "name": "CP_acChargeCurrentLimit_log", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "CP_chargeShutdownRequest_log", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "NO_SHUTDOWN_REQUESTED", + "1": "GRACEFUL_SHUTDOWN_REQUESTED", + "2": "EMERGENCY_SHUTDOWN_REQUESTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "CP_evseChargeType_log", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "NO_CHARGER_PRESENT", + "1": "DC_CHARGER_PRESENT", + "2": "AC_CHARGER_PRESENT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "CP_hvChargeStatus_log", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "CP_CHARGE_INACTIVE", + "1": "CP_CHARGE_CONNECTED", + "2": "CP_CHARGE_STANDBY", + "3": "CP_EXT_EVSE_TEST_ACTIVE", + "4": "CP_EVSE_TEST_PASSED", + "5": "CP_CHARGE_ENABLED", + "6": "CP_CHARGE_FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127.5", + "min": "0", + "mux_value": null, + "name": "CP_internalMaxAcCurrentLimit_log", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.146502", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1200", + "min": "0", + "mux_value": null, + "name": "CP_internalMaxDcCurrentLimit_log", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_vehicleIsoCheckRequired_log", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_vehiclePrechargeRequired_log", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 541, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID21DCP_evseStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "CP_acChargeState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": { + "0": "AC_CHARGE_INACTIVE", + "1": "AC_CHARGE_CONNECTED_CHARGE_BLOCKED", + "2": "AC_CHARGE_STANDBY", + "3": "AC_CHARGE_ENABLED", + "4": "AC_CHARGE_ONBOARD_CHARGER_SHUTDOWN", + "5": "AC_CHARGE_VEH_SHUTDOWN", + "6": "AC_CHARGE_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CP_acNumRetries", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "mux_value": null, + "name": "CP_cableCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "CP_cableType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "CHG_CABLE_TYPE_IEC", + "1": "CHG_CABLE_TYPE_SAE", + "2": "CHG_CABLE_TYPE_GB_AC", + "3": "CHG_CABLE_TYPE_GB_DC", + "4": "CHG_CABLE_TYPE_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CP_digitalCommsAttempts", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_digitalCommsEstablished", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_evseAccept", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "CP_evseChargeType_UI", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "NO_CHARGER_PRESENT", + "1": "DC_CHARGER_PRESENT", + "2": "AC_CHARGER_PRESENT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CP_evseRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "CP_gbState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "GBDC_INACTIVE", + "1": "GBDC_WAIT_FOR_COMMS", + "2": "GBDC_COMMS_RECEIVED", + "3": "GBDC_HANDSHAKING_EXT_ISO", + "4": "GBDC_RECOGNITION", + "5": "GBDC_CHARGE_PARAM_CONFIG", + "6": "GBDC_VEH_PACK_PRECHARGE", + "7": "GBDC_READY_TO_CHARGE", + "8": "GBDC_CHARGING", + "9": "GBDC_STOP_CHARGE_REQUESTED", + "10": "GBDC_CHARGE_DISABLING", + "11": "GBDC_END_OF_CHARGE", + "12": "GBDC_ERROR_HANDLING", + "13": "GBDC_RETRY_CHARGE", + "14": "GBDC_FAULTED", + "15": "GBDC_TESTER_PRESENT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CP_gbdcChargeAttempts", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CP_gbdcFailureReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": { + "0": "GBDC_FAILURE_NONE", + "1": "GBDC_ATTEMPTS_EXPIRED", + "2": "GBDC_SHUTDOWN_FAILURE", + "3": "GBDC_CRITICAL_FAILURE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "CP_gbdcStopChargeReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "GBDC_STOP_REASON_NONE", + "1": "GBDC_VEH_REQUESTED", + "2": "GBDC_EVSE_REQUESTED", + "3": "GBDC_COMMS_TIMEOUT", + "4": "GBDC_EVSE_FAULT", + "5": "GBDC_EVSE_CRITICAL_FAULT", + "6": "GBDC_LIVE_DISCONNECT", + "7": "GBDC_SUPERCHARGER_COMMS_TIMEOUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "12", + "min": "0", + "mux_value": null, + "name": "CP_iecComboState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": { + "0": "IEC_COMBO_INACTIVE", + "1": "IEC_COMBO_CONNECTED", + "2": "IEC_COMBO_V2G_SESSION_SETUP", + "3": "IEC_COMBO_SERVICE_DISCOVERY", + "4": "IEC_COMBO_PAYMENT_SELECTION", + "5": "IEC_COMBO_CHARGE_PARAM_DISCOVERY", + "6": "IEC_COMBO_CABLE_CHECK", + "7": "IEC_COMBO_PRECHARGE", + "8": "IEC_COMBO_ENABLED", + "9": "IEC_COMBO_SHUTDOWN", + "10": "IEC_COMBO_END_OF_CHARGE", + "11": "IEC_COMBO_FAULT", + "12": "IEC_COMBO_WAIT_RESTART" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "CP_pilot", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "CHG_PILOT_NONE", + "1": "CHG_PILOT_FAULTED", + "2": "CHG_PILOT_LINE_CHARGE", + "3": "CHG_PILOT_FAST_CHARGE", + "4": "CHG_PILOT_IDLE", + "5": "CHG_PILOT_INVALID", + "6": "CHG_PILOT_UNUSED_6", + "7": "CHG_PILOT_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127.5", + "min": "0", + "mux_value": null, + "name": "CP_pilotCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CP_proximity", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "CHG_PROXIMITY_SNA", + "1": "CHG_PROXIMITY_DISCONNECTED", + "2": "CHG_PROXIMITY_UNLATCHED", + "3": "CHG_PROXIMITY_LATCHED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "mux_value": null, + "name": "CP_teslaDcState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "TESLA_DC_INACTIVE", + "1": "TESLA_DC_CONNECTED_CHARGE_BLOCKED", + "2": "TESLA_DC_STANDBY", + "3": "TESLA_DC_EXT_TESTS_ENABLED", + "4": "TESLA_DC_EXT_TEST_ACTIVE", + "5": "TESLA_DC_EXT_PRECHARGE_ACTIVE", + "6": "TESLA_DC_ENABLED", + "7": "TESLA_DC_EVSE_SHUTDOWN", + "8": "TESLA_DC_VEH_SHUTDOWN", + "9": "TESLA_DC_EMERGENCY_SHUTDOWN", + "10": "TESLA_DC_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "CP_teslaSwcanState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "TESLA_SWCAN_INACTIVE", + "1": "TESLA_SWCAN_ACCEPT", + "2": "TESLA_SWCAN_RECEIVE", + "3": "TESLA_SWCAN_ESTABLISHED", + "4": "TESLA_SWCAN_FAULT", + "5": "TESLA_SWCAN_GO_TO_SLEEP", + "6": "TESLA_SWCAN_OFFBOARD_UPDATE_IN_PROGRESS" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1859, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 1, + "mux_names": {}, + "name": "ID743VCRIGHT_recallStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_mirrorRecallStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "RECALL_SNA", + "1": "RECALL_IN_PROGRESS", + "2": "RECALL_COMPLETE", + "3": "RECALL_INTERRUPTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_seatRecallStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "RECALL_SNA", + "1": "RECALL_IN_PROGRESS", + "2": "RECALL_COMPLETE", + "3": "RECALL_INTERRUPTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_systemRecallStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "RECALL_SNA", + "1": "RECALL_IN_PROGRESS", + "2": "RECALL_COMPLETE", + "3": "RECALL_INTERRUPTED" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1885, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID75DCP_sensorData", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "12", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "CP_sensorDataSelect", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "CP_SENSOR_DOOR_COUNTS", + "1": "CP_SENSOR_PIN_TEMP", + "2": "CP_SENSOR_DOOR", + "3": "CP_SENSOR_LATCH", + "4": "CP_SENSOR_INDUCTIVE_DOOR", + "5": "CP_SENSOR_SAFETY", + "6": "CP_SENSOR_UHF", + "7": "CP_SENSOR_RAILS", + "8": "CP_SENSOR_PROX", + "9": "CP_SENSOR_PILOT", + "10": "CP_SENSOR_PILOT2", + "11": "CP_SENSOR_PROX_GB", + "12": "CP_SENSOR_INLET_HARNESS_ID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_UHF_chipState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_UHF_fifoData", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_UHF_rssi", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_UHF_rxNumBytes", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_UHF_rxOverflow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_UHF_selfTestRssi", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0015259", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_backCover2Counts", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0015259", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_backCoverCounts", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1.29412", + "initial_value": "0.47068", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "280", + "min": "-50", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_boardTemperature", + "offset": "-50", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0015259", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_doorCountsDebounced", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0015259", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_doorCountsFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.0025", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10.2375", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_doorI", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.0025", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10.2375", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_doorLastRequestMaxI", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_doorPot", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00114", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4.65524", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_faultLineV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "268435000", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_inductiveSensor_raw", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_inlet1HarnessIdState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "HARNESS_PEDIGREE_UNKNOWN_SNA", + "1": "HARNESS_PEDIGREE_INVALID", + "2": "HARNESS_PEDIGREE_VALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_inlet1HarnessIdValue", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "13.3", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_inlet1HarnessV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_inlet2HarnessIdState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": { + "0": "HARNESS_PEDIGREE_UNKNOWN_SNA", + "1": "HARNESS_PEDIGREE_INVALID", + "2": "HARNESS_PEDIGREE_VALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_inlet2HarnessIdValue", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "13.3", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_inlet2HarnessV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.0025", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10.2375", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_latch2I", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.0025", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10.2375", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_latchI", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20.47", + "min": "-20.48", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pilotHighValue", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20.47", + "min": "-20.48", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pilotHighValue_intervalMax10s", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20.47", + "min": "-20.48", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pilotHighValue_intervalMin10s", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20.47", + "min": "-20.48", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pilotLowValue", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20.47", + "min": "-20.48", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pilotLowValue_intervalMax10s", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20.47", + "min": "-20.48", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pilotLowValue_intervalMin10s", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4095", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pilotPeriod", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4095", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pilotPulseWidth", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.803922", + "initial_value": "-0.333304", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "149.99", + "min": "-55", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pinTemperature1", + "offset": "-55", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.803922", + "initial_value": "-0.333304", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "149.99", + "min": "-55", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pinTemperature2", + "offset": "-55", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.803922", + "initial_value": "-0.333304", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "149.99", + "min": "-55", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_pinTemperature3", + "offset": "-55", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_proxConn1Sense", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_proxEn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 57, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_proximityV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "13.3", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_proximityV_GBCC1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "13.3", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_proximityV_GBCC2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_proximityV_intervalMax10s", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_proximityV_intervalMin10s", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.00705882", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1.8", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "CP_sensorDataSelect", + "name": "CP_refVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "V", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 647, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID287PTCcabinHeatSensorStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Heater Left Current", + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "50", + "min": "0", + "mux_value": null, + "name": "PTC_leftCurrentHV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "200", + "min": "-40", + "mux_value": null, + "name": "PTC_leftTempIGBT", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Heater Right Current", + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "50", + "min": "0", + "mux_value": null, + "name": "PTC_rightCurrentHV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "200", + "min": "-40", + "mux_value": null, + "name": "PTC_rightTempIGBT", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "200", + "min": "-40", + "mux_value": null, + "name": "PTC_tempOCP", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "200", + "min": "-40", + "mux_value": null, + "name": "PTC_tempPCB", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "Heater Voltage", + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511.5", + "min": "0", + "mux_value": null, + "name": "PTC_voltageHV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "500", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 500, + "header_id": null, + "id": 819, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID333UI_chargeRequest", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": "UI Charge Current Limit", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "mux_value": null, + "name": "UI_acChargeCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_brickBalancingDisabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "FALSE", + "1": "TRUE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_brickVLoggingRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "FALSE", + "1": "TRUE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_chargeEnableRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "25.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "25", + "mux_value": null, + "name": "UI_chargeTerminationPct", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_closeChargePortDoorRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_openChargePortDoorRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_scheduledDepartureEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_smartAcChargingEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UI_cpInletHeaterRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UI_socSnapshotExpirationTime", + "offset": "2", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "weeks", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 820, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID334UI_powertrainControl", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_DIAppSliderDebug", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_limitMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "LIMIT_NORMAL", + "1": "LIMIT_VALET", + "2": "LIMIT_FACTORY", + "3": "LIMIT_SERVICE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_motorOnMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "MOTORONMODE_NORMAL", + "1": "MOTORONMODE_FRONT_ONLY", + "2": "MOTORONMODE_REAR_ONLY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_pedalMap", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "CHILL", + "1": "SPORT", + "2": "PERFORMANCE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "UI_powertrainControlChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "UI_powertrainControlCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "UI_regenTorqueMax", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "50", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "285", + "min": "50", + "mux_value": null, + "name": "UI_speedLimit", + "offset": "50", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kph", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_stoppingMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "STANDARD", + "1": "CREEP", + "2": "HOLD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "20", + "initial_value": "20", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "640", + "min": "20", + "mux_value": null, + "name": "UI_systemPowerLimit", + "offset": "20", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": { + "31": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "100", + "initial_value": "4000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10300", + "min": "4000", + "mux_value": null, + "name": "UI_systemTorqueLimit", + "offset": "4000", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "Nm", + "values": { + "63": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_wasteMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "WASTE_TYPE_NONE", + "1": "WASTE_TYPE_PARTIAL", + "2": "WASTE_TYPE_FULL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_wasteModeRegenLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "MAX_REGEN_CURRENT_MAX", + "1": "MAX_REGEN_CURRENT_30A", + "2": "MAX_REGEN_CURRENT_10A", + "3": "MAX_REGEN_CURRENT_0A" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_closureConfirmed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "CONFIRMED_NONE", + "1": "CONFIRMED_FRUNK", + "2": "CONFIRMED_PROX" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 826, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID33AUI_rangeSOC", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "mux_value": null, + "name": "UI_idealRange", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "mi", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "Range", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "mux_value": null, + "name": "UI_Range", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "mi", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": "State of Charge UI", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "mux_value": null, + "name": "UI_SOC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": "UI fine SOC", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "mux_value": null, + "name": "UI_uSOE", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "WHM Rating", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "mux_value": null, + "name": "UI_ratedWHpM", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "WHpM", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 577, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 7, + "mux_names": {}, + "name": "ID241VCFRONT_coolant", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "VCFRONT_coolantAirPurgeBatState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "AIR_PURGE_STATE_INACTIVE", + "1": "AIR_PURGE_STATE_ACTIVE", + "2": "AIR_PURGE_STATE_COMPLETE", + "3": "AIR_PURGE_STATE_INTERRUPTED", + "4": "AIR_PURGE_STATE_PENDING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Battery Coolant Flow", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "40", + "min": "0", + "mux_value": null, + "name": "VCFRONT_coolantFlowBatActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "14", + "min": "0", + "mux_value": null, + "name": "VCFRONT_coolantFlowBatReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "NONE", + "1": "COOLANT_AIR_PURGE", + "2": "NO_FLOW_REQ", + "3": "OVERRIDE_BATT", + "4": "ACTIVE_MANAGER_BATT", + "5": "PASSIVE_MANAGER_BATT", + "6": "BMS_FLOW_REQ", + "7": "DAS_FLOW_REQ", + "8": "OVERRIDE_PT", + "9": "ACTIVE_MANAGER_PT", + "10": "PASSIVE_MANAGER_PT", + "11": "PCS_FLOW_REQ", + "12": "DI_FLOW_REQ", + "13": "DIS_FLOW_REQ", + "14": "HP_FLOW_REQ" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "40", + "min": "0", + "mux_value": null, + "name": "VCFRONT_coolantFlowBatTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Powertrain Coolant Flow", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "40", + "min": "0", + "mux_value": null, + "name": "VCFRONT_coolantFlowPTActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "14", + "min": "0", + "mux_value": null, + "name": "VCFRONT_coolantFlowPTReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "NONE", + "1": "COOLANT_AIR_PURGE", + "2": "NO_FLOW_REQ", + "3": "OVERRIDE_BATT", + "4": "ACTIVE_MANAGER_BATT", + "5": "PASSIVE_MANAGER_BATT", + "6": "BMS_FLOW_REQ", + "7": "DAS_FLOW_REQ", + "8": "OVERRIDE_PT", + "9": "ACTIVE_MANAGER_PT", + "10": "PASSIVE_MANAGER_PT", + "11": "PCS_FLOW_REQ", + "12": "DI_FLOW_REQ", + "13": "DIS_FLOW_REQ", + "14": "HP_FLOW_REQ" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "40", + "min": "0", + "mux_value": null, + "name": "VCFRONT_coolantFlowPTTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_coolantHasBeenFilled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_radiatorIneffective", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_wasteHeatRequestType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "WASTE_TYPE_NONE", + "1": "WASTE_TYPE_PARTIAL", + "2": "WASTE_TYPE_FULL" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 955, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 2, + "mux_names": {}, + "name": "ID3BBUI_power", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "UI_powerExpected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "UI_powerIdeal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "kW", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1493, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID5D5RearDItemps", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DI_ph1Temp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DI_ph2Temp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DI_ph3Temp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "mux_value": null, + "name": "DI_pcbTemp2", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "200", + "min": "-40", + "mux_value": null, + "name": "DI_IGBTJunctTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": { + "255": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1366, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 7, + "mux_names": {}, + "name": "ID556FrontDItemps", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DIF_ph1Temp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DIF_ph2Temp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DIF_ph3Temp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "mux_value": null, + "name": "DIF_pcbTemp2", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "200", + "min": "-40", + "mux_value": null, + "name": "DIF_IGBTJunctTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.06", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "60", + "min": "0", + "mux_value": null, + "name": "DIF_lashAngle", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "Deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "63", + "min": "0", + "mux_value": null, + "name": "DIF_lashCheckCount", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "swapped with 5D7 in old firmware", + "cycle_time": 0, + "header_id": null, + "id": 1367, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID557FrontThermalControl", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DIS_activeInletTempReq", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "50", + "min": "0", + "mux_value": null, + "name": "DIS_coolantFlowReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.06", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DIS_oilFlowReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DIS_passiveInletTempReq", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "swapped with 557 in old firmware", + "cycle_time": 0, + "header_id": null, + "id": 1495, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID5D7RearThermalControl", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DI_activeInletTempReq", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "50", + "min": "0", + "mux_value": null, + "name": "DI_coolantFlowReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.06", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DI_oilFlowReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "mux_value": null, + "name": "DI_passiveInletTempReq", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "swapped with 757 in old firmware", + "cycle_time": 0, + "header_id": null, + "id": 2005, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID7D5DIR_debug", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "DIR_debugSelector", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_brakeSwitchNC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_brakeSwitchNO", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_busbarTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_controlStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu100HzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu100HzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu10HzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu10HzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu10msMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 128, + "mux_value": 128, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu1HzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 128, + "mux_value": 128, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu1HzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu1kHzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu1kHzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu20kHzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpu20kHzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 131, + "mux_value": 131, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpuIDWord0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 132, + "mux_value": 132, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpuIDWord1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 132, + "mux_value": 132, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpuIDWord2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 132, + "mux_value": 132, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_cpuIDWord3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 131, + "mux_value": 131, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_crc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 41, + "mux_value": 41, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_currentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 37, + "mux_value": 37, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_dcCableCurrentEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65.535", + "min": "0", + "multiplex": 47, + "mux_value": 47, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_dcCableHeat", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kA2s", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_dcCapTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_dcLinkCapTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_decodeHardwareStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "42949700000", + "min": "0", + "multiplex": 69, + "mux_value": 69, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_driveUnitOdometer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "rev", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_eepromStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_fluxState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "DI_FLUXSTATE_START", + "1": "DI_FLUXSTATE_TEST", + "2": "DI_FLUXSTATE_STANDBY", + "3": "DI_FLUXSTATE_FLUX_UP", + "4": "DI_FLUXSTATE_FLUX_DOWN", + "5": "DI_FLUXSTATE_ENABLED", + "6": "DI_FLUXSTATE_ICONTROL", + "7": "DI_FLUXSTATE_VCONTROL", + "9": "DI_FLUXSTATE_FAULT", + "10": "DI_FLUXSTATE_STATIONARY_WASTE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2.55", + "min": "0", + "multiplex": 37, + "mux_value": 37, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_gainScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 50, + "mux_value": 50, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_gateDriveState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "PSTG_GD_STATE_INIT", + "1": "PSTG_GD_STATE_SELFTEST", + "2": "PSTG_GD_STATE_CONFIGURING", + "3": "PSTG_GD_STATE_CONFIGURED", + "4": "PSTG_GD_STATE_NOT_CONFIGURED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 50, + "mux_value": 50, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_gateDriveSupplyState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "PSTG_GD_SUPPLY_DOWN", + "1": "PSTG_GD_SUPPLY_RISING", + "2": "PSTG_GD_SUPPLY_UP", + "3": "PSTG_GD_SUPPLY_FALLING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_hvDcCableTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "multiplex": 69, + "mux_value": 69, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_hwFaultCount", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_idleStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_immobilizerStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0003", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "multiplex": 37, + "mux_value": 37, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_internalAngleFilt", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "rad", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.015", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.825", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_llrScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.004", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1.02", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_llsScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.004", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1.02", + "min": "0", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_lmScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0003", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "4", + "min": "-4", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_loadAngle", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "rad", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0003", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "4", + "min": "-4", + "multiplex": 37, + "mux_value": 37, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_loadAngleMargin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "rad", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "180", + "min": "-40", + "multiplex": 47, + "mux_value": 47, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_magnetTempEst", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": { + "0": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_module10HzStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_motorIA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_motorIAavg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_motorIB", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_motorIBavg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_motorIC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "32", + "min": "0", + "multiplex": 128, + "mux_value": 128, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_motorType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "DI_MOTOR_SNA", + "1": "DI_MOTOR_ROADSTER_BASE", + "2": "DI_MOTOR_ROADSTER_SPORT", + "3": "DI_MOTOR_M7M3", + "4": "DI_MOTOR_M7M4", + "5": "DI_MOTOR_M7M5", + "6": "DI_MOTOR_M8A", + "7": "DI_MOTOR_M7M6", + "8": "DI_MOTOR_F1A", + "9": "DI_MOTOR_SSR1A", + "10": "DI_MOTOR_F1AC", + "11": "DI_MOTOR_F2AB", + "12": "DI_MOTOR_F2AC", + "13": "DI_MOTOR_F2AD", + "14": "DI_MOTOR_F2AE", + "15": "DI_MOTOR_F2APMSRM", + "16": "DI_MOTOR_PM216A", + "17": "DI_MOTOR_IM100A", + "18": "DI_MOTOR_PM216B", + "19": "DI_MOTOR_IM100B", + "20": "DI_MOTOR_IM216A", + "21": "DI_MOTOR_PM216C", + "22": "DI_MOTOR_IM130C", + "23": "DI_MOTOR_PM216D", + "24": "DI_MOTOR_IM130D", + "25": "DI_MOTOR_IM130D_AL", + "26": "DI_MOTOR_F2AE_AL", + "27": "DI_MOTOR_IM130D_AL_POSCO", + "28": "DI_MOTOR_PM275B", + "29": "DI_MOTOR_PM350B", + "30": "DI_MOTOR_PM216CSR", + "31": "DI_MOTOR_PM216CSR_N42", + "32": "DI_MOTOR_PM228B" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00002", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1.3107", + "min": "0", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_motorV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_negDcBusbarTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "12.7", + "min": "-12.8", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_offsetA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "12.7", + "min": "-12.8", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_offsetB", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "40", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10200", + "min": "0", + "multiplex": 46, + "mux_value": 46, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_oilPumpMotorSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "RPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.4", + "min": "0", + "multiplex": 46, + "mux_value": 46, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_oilPumpPhaseVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "multiplex": 46, + "mux_value": 46, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_oilPumpPressureEstimateMax", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kPa", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "multiplex": 46, + "mux_value": 46, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_oilPumpPressureExpectedMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kPa", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_pcsTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_peakFlux", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "Wb", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_peakIQref", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_phaseOutBusbarTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_phaseOutBusbarWeldTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_phaseOutLugTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_posDcBusbarTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 50, + "mux_value": 50, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_powerStageSafeState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "PSTG_SAFESTATE_NONE", + "1": "PSTG_SAFESTATE_ALL_OFF", + "2": "PSTG_SAFESTATE_3PS_HIGH", + "3": "PSTG_SAFESTATE_3PS_LOW" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 63, + "mux_value": 63, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_pwmState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "PWMSTATE_SVPWM", + "1": "PWMSTATE_DPWM2", + "2": "PWMSTATE_OPWM1", + "3": "PWMSTATE_OPWM2" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_pwrSatChargeCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_pwrSatDischargeCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_pwrSatMaxBusVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_pwrSatMaxDischargePower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_pwrSatMaxRegenPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_pwrSatMinBusVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverClaMIA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverCommonGain", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1", + "min": "-1", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverCosFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverCosRmsSquared", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverErrorRmsSquared", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverNoCarrier", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverNoPhaseLock", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.015", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.3", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverOffsetCos", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.015", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.3", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverOffsetSin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "7.5", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "32.5", + "min": "7.5", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverPhaseOffset", + "offset": "7.5", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "us", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverReady", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1", + "min": "-1", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverSinFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_resolverSinRmsSquared", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 47, + "mux_value": 47, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_rotorFlux", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "Wb", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 72, + "mux_value": 72, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_rotorMaxMagnetTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20", + "min": "-20", + "multiplex": 43, + "mux_value": 43, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_rotorOffsetEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 63, + "mux_value": 63, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_rotorOffsetLearningState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "ROL_STATE_INIT", + "1": "ROL_STATE_WAIT", + "2": "ROL_STATE_ACCELERATE", + "3": "ROL_STATE_SHIFT", + "4": "ROL_STATE_MEASURE", + "5": "ROL_STATE_CORRECT", + "6": "ROL_STATE_VERIFY", + "7": "ROL_STATE_WRITE", + "8": "ROL_STATE_DONE", + "9": "ROL_NUM_STATES" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20", + "min": "-20", + "multiplex": 43, + "mux_value": 43, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_rotorOffsetMean", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2.55", + "min": "0", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_rsScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "100", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553500", + "min": "0", + "multiplex": 49, + "mux_value": 49, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_soptMaxCurrentMagSqrd", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "A2", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.05", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 49, + "mux_value": 49, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_soptTimeToOff", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "ms", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.05", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "multiplex": 49, + "mux_value": 49, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_soptTimeToTrip", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "ms", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.05", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "multiplex": 49, + "mux_value": 49, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_soptTripDelay", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "ms", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_ssmState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "SSM_STATE_START", + "1": "SSM_STATE_UNAVAILABLE", + "2": "SSM_STATE_IDLE", + "3": "SSM_STATE_STANDBY", + "4": "SSM_STATE_ENABLE", + "5": "SSM_STATE_ABORT", + "6": "SSM_STATE_WAIT_FOR_RETRY", + "7": "SSM_STATE_RETRY", + "8": "SSM_STATE_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 72, + "mux_value": 72, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorEndWindingTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorFluxFdb", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "Wb", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorFluxRef", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "Wb", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorIDfdb", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorIDref", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorIQfdb", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorIQref", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorTemp1", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorTemp2", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00004", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.31068", + "min": "-1.31072", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorVD", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00004", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.31068", + "min": "-1.31072", + "multiplex": 63, + "mux_value": 63, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorVDFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00004", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.31068", + "min": "-1.31072", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorVQ", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00004", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.31068", + "min": "-1.31072", + "multiplex": 63, + "mux_value": 63, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_statorVQFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "multiplex": 50, + "mux_value": 50, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_sysHeatPowerOptimal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_systemStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.035", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1146.85", + "min": "-1146.88", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_systemTorqueCommand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "Nm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1275", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tcMaxRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "Nm", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1275", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tcMinRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "Nm", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_torquePerAmp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "Nm/A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tqSatMotorCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tqSatMotorVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tqSatThermal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tqSatUiDriveTorque", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tqSatUiRegenTorque", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tqScaleDifferential", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tqScaleMaxMotorSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_tqScaleShift", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_udsStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_usmState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "USM_STATE_START", + "1": "USM_STATE_STANDBY", + "2": "USM_STATE_RETRY", + "3": "USM_STATE_ABORT", + "4": "USM_STATE_ENABLE", + "5": "USM_STATE_FAULT", + "6": "USM_STATE_UNAVAILABLE", + "7": "USM_STATE_WAIT_FOR_RETRY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "1E-7", + "initial_value": "0.0001000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0.0005", + "min": "0.0001", + "multiplex": 41, + "mux_value": 41, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_veMassInvRaw", + "offset": "0.0001", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "1/kg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.0005", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.0235", + "min": "-1.024", + "multiplex": 41, + "mux_value": 41, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_veResForce", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "G", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 41, + "mux_value": 41, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_wasteCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIR_debugSelector", + "name": "DIR_xcpStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "swapped with 7D5 in old firmware", + "cycle_time": 0, + "header_id": null, + "id": 1879, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID757DIF_debug", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "DIF_debugSelector", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_brakeSwitchNC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_brakeSwitchNO", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_busbarTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_controlStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu100HzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu100HzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu10HzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu10HzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu10msMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 128, + "mux_value": 128, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu1HzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 128, + "mux_value": 128, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu1HzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu1kHzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu1kHzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu20kHzAvg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 67, + "mux_value": 67, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpu20kHzMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 131, + "mux_value": 131, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpuIDWord0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 132, + "mux_value": 132, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpuIDWord1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 132, + "mux_value": 132, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpuIDWord2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 132, + "mux_value": 132, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_cpuIDWord3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 131, + "mux_value": 131, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_crc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 41, + "mux_value": 41, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_currentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 37, + "mux_value": 37, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_dcCableCurrentEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65.535", + "min": "0", + "multiplex": 47, + "mux_value": 47, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_dcCableHeat", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kA2s", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_dcCapTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_dcLinkCapTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_decodeHardwareStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "42949700000", + "min": "0", + "multiplex": 69, + "mux_value": 69, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_driveUnitOdometer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "rev", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_eepromStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_fluxState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "DI_FLUXSTATE_START", + "1": "DI_FLUXSTATE_TEST", + "2": "DI_FLUXSTATE_STANDBY", + "3": "DI_FLUXSTATE_FLUX_UP", + "4": "DI_FLUXSTATE_FLUX_DOWN", + "5": "DI_FLUXSTATE_ENABLED", + "6": "DI_FLUXSTATE_ICONTROL", + "7": "DI_FLUXSTATE_VCONTROL", + "9": "DI_FLUXSTATE_FAULT", + "10": "DI_FLUXSTATE_STATIONARY_WASTE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2.55", + "min": "0", + "multiplex": 37, + "mux_value": 37, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_gainScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 50, + "mux_value": 50, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_gateDriveState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "PSTG_GD_STATE_INIT", + "1": "PSTG_GD_STATE_SELFTEST", + "2": "PSTG_GD_STATE_CONFIGURING", + "3": "PSTG_GD_STATE_CONFIGURED", + "4": "PSTG_GD_STATE_NOT_CONFIGURED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 50, + "mux_value": 50, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_gateDriveSupplyState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "PSTG_GD_SUPPLY_DOWN", + "1": "PSTG_GD_SUPPLY_RISING", + "2": "PSTG_GD_SUPPLY_UP", + "3": "PSTG_GD_SUPPLY_FALLING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_hvDcCableTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "multiplex": 69, + "mux_value": 69, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_hwFaultCount", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_idleStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_immobilizerStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0003", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "multiplex": 37, + "mux_value": 37, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_internalAngleFilt", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "rad", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.015", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.825", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_llrScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.004", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1.02", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_llsScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.004", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1.02", + "min": "0", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_lmScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0003", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "4", + "min": "-4", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_loadAngle", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "rad", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0003", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "4", + "min": "-4", + "multiplex": 37, + "mux_value": 37, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_loadAngleMargin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "rad", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "180", + "min": "-40", + "multiplex": 47, + "mux_value": 47, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_magnetTempEst", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": { + "0": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 66, + "mux_value": 66, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_module10HzStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_motorIA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_motorIAavg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_motorIB", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_motorIBavg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_motorIC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "32", + "min": "0", + "multiplex": 128, + "mux_value": 128, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_motorType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "DI_MOTOR_SNA", + "1": "DI_MOTOR_ROADSTER_BASE", + "2": "DI_MOTOR_ROADSTER_SPORT", + "3": "DI_MOTOR_M7M3", + "4": "DI_MOTOR_M7M4", + "5": "DI_MOTOR_M7M5", + "6": "DI_MOTOR_M8A", + "7": "DI_MOTOR_M7M6", + "8": "DI_MOTOR_F1A", + "9": "DI_MOTOR_SSR1A", + "10": "DI_MOTOR_F1AC", + "11": "DI_MOTOR_F2AB", + "12": "DI_MOTOR_F2AC", + "13": "DI_MOTOR_F2AD", + "14": "DI_MOTOR_F2AE", + "15": "DI_MOTOR_F2APMSRM", + "16": "DI_MOTOR_PM216A", + "17": "DI_MOTOR_IM100A", + "18": "DI_MOTOR_PM216B", + "19": "DI_MOTOR_IM100B", + "20": "DI_MOTOR_IM216A", + "21": "DI_MOTOR_PM216C", + "22": "DI_MOTOR_IM130C", + "23": "DI_MOTOR_PM216D", + "24": "DI_MOTOR_IM130D", + "25": "DI_MOTOR_IM130D_AL", + "26": "DI_MOTOR_F2AE_AL", + "27": "DI_MOTOR_IM130D_AL_POSCO", + "28": "DI_MOTOR_PM275B", + "29": "DI_MOTOR_PM350B", + "30": "DI_MOTOR_PM216CSR", + "31": "DI_MOTOR_PM216CSR_N42", + "32": "DI_MOTOR_PM228B" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00002", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1.3107", + "min": "0", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_motorV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_negDcBusbarTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "12.7", + "min": "-12.8", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_offsetA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "12.7", + "min": "-12.8", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_offsetB", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "40", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10200", + "min": "0", + "multiplex": 46, + "mux_value": 46, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_oilPumpMotorSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "RPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.4", + "min": "0", + "multiplex": 46, + "mux_value": 46, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_oilPumpPhaseVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "multiplex": 46, + "mux_value": 46, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_oilPumpPressureEstimateMax", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kPa", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "multiplex": 46, + "mux_value": 46, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_oilPumpPressureExpectedMin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kPa", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_pcsTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_peakFlux", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "Wb", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_peakIQref", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_phaseOutBusbarTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_phaseOutBusbarWeldTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_phaseOutLugTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 70, + "mux_value": 70, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_posDcBusbarTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 50, + "mux_value": 50, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_powerStageSafeState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "PSTG_SAFESTATE_NONE", + "1": "PSTG_SAFESTATE_ALL_OFF", + "2": "PSTG_SAFESTATE_3PS_HIGH", + "3": "PSTG_SAFESTATE_3PS_LOW" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 63, + "mux_value": 63, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_pwmState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "PWMSTATE_SVPWM", + "1": "PWMSTATE_DPWM2", + "2": "PWMSTATE_OPWM1", + "3": "PWMSTATE_OPWM2" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 42, + "mux_value": 42, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_pwrSatChargeCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_pwrSatDischargeCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_pwrSatMaxBusVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_pwrSatMaxDischargePower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_pwrSatMaxRegenPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_pwrSatMinBusVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverClaMIA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverCommonGain", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1", + "min": "-1", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverCosFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverCosRmsSquared", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverErrorRmsSquared", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverNoCarrier", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverNoPhaseLock", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.015", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.3", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverOffsetCos", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.015", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3.3", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverOffsetSin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "7.5", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "32.5", + "min": "7.5", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverPhaseOffset", + "offset": "7.5", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "us", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 48, + "mux_value": 48, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverReady", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1", + "min": "-1", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverSinFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 52, + "mux_value": 52, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_resolverSinRmsSquared", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "1", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 47, + "mux_value": 47, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_rotorFlux", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "Wb", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 72, + "mux_value": 72, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_rotorMaxMagnetTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20", + "min": "-20", + "multiplex": 43, + "mux_value": 43, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_rotorOffsetEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 63, + "mux_value": 63, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_rotorOffsetLearningState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "ROL_STATE_INIT", + "1": "ROL_STATE_WAIT", + "2": "ROL_STATE_ACCELERATE", + "3": "ROL_STATE_SHIFT", + "4": "ROL_STATE_MEASURE", + "5": "ROL_STATE_CORRECT", + "6": "ROL_STATE_VERIFY", + "7": "ROL_STATE_WRITE", + "8": "ROL_STATE_DONE", + "9": "ROL_NUM_STATES" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "20", + "min": "-20", + "multiplex": 43, + "mux_value": 43, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_rotorOffsetMean", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2.55", + "min": "0", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_rsScale", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "scale", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "100", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553500", + "min": "0", + "multiplex": 49, + "mux_value": 49, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_soptMaxCurrentMagSqrd", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "A2", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.05", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 49, + "mux_value": 49, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_soptTimeToOff", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "ms", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.05", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "multiplex": 49, + "mux_value": 49, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_soptTimeToTrip", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "ms", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.05", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "multiplex": 49, + "mux_value": 49, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_soptTripDelay", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "ms", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_ssmState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "SSM_STATE_START", + "1": "SSM_STATE_UNAVAILABLE", + "2": "SSM_STATE_IDLE", + "3": "SSM_STATE_STANDBY", + "4": "SSM_STATE_ENABLE", + "5": "SSM_STATE_ABORT", + "6": "SSM_STATE_WAIT_FOR_RETRY", + "7": "SSM_STATE_RETRY", + "8": "SSM_STATE_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 72, + "mux_value": 72, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorEndWindingTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorFluxFdb", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "Wb", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorFluxRef", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "Wb", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorIDfdb", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorIDref", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorIQfdb", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorIQref", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorTemp1", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "multiplex": 64, + "mux_value": 64, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorTemp2", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00004", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.31068", + "min": "-1.31072", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorVD", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00004", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.31068", + "min": "-1.31072", + "multiplex": 63, + "mux_value": 63, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorVDFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00004", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.31068", + "min": "-1.31072", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorVQ", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00004", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.31068", + "min": "-1.31072", + "multiplex": 63, + "mux_value": 63, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_statorVQFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "mindex", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "multiplex": 50, + "mux_value": 50, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_sysHeatPowerOptimal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_systemStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.035", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1146.85", + "min": "-1146.88", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_systemTorqueCommand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "Nm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1275", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tcMaxRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "Nm", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1275", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tcMinRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "Nm", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.5535", + "min": "0", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_torquePerAmp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "Nm/A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tqSatMotorCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tqSatMotorVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 39, + "mux_value": 39, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tqSatThermal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tqSatUiDriveTorque", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tqSatUiRegenTorque", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tqScaleDifferential", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tqScaleMaxMotorSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "multiplex": 40, + "mux_value": 40, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_tqScaleShift", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_udsStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 38, + "mux_value": 38, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_usmState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "USM_STATE_START", + "1": "USM_STATE_STANDBY", + "2": "USM_STATE_RETRY", + "3": "USM_STATE_ABORT", + "4": "USM_STATE_ENABLE", + "5": "USM_STATE_FAULT", + "6": "USM_STATE_UNAVAILABLE", + "7": "USM_STATE_WAIT_FOR_RETRY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "1E-7", + "initial_value": "0.0001000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0.0005", + "min": "0.0001", + "multiplex": 41, + "mux_value": 41, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_veMassInvRaw", + "offset": "0.0001", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "1/kg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.0005", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "1.0235", + "min": "-1.024", + "multiplex": 41, + "mux_value": 41, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_veResForce", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "G", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 41, + "mux_value": 41, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_wasteCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 68, + "mux_value": 68, + "muxer_for_signal": "DIF_debugSelector", + "name": "DIF_xcpStack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 694, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 2, + "mux_names": {}, + "name": "ID2B6DI_chassisControlStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_btcStateUI", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DI_ptcStateUI", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": { + "0": "FAULTED", + "1": "BACKUP", + "2": "ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_tcTelltaleFlash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_tcTelltaleOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "DI_tractionControlModeUI", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "NORMAL", + "1": "SLIP_START", + "2": "DEV_MODE_1", + "3": "DEV_MODE_2", + "4": "ROLLS_MODE", + "5": "DYNO_MODE", + "6": "OFFROAD_ASSIST" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_vdcTelltaleFlash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_vdcTelltaleOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_vehicleHoldTelltaleOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 644, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID284UIvehicleModes", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIfactoryMode284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIhomelinkV2Command0284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIhomelinkV2Command1284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIhomelinkV2Command2284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIserviceMode284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIshowroomMode284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UItransportMode284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 1, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIgameMode284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIisDelivered284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIcarWashModeRequest284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIvaletMode284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UIsentryMode284", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 545, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID221VCFRONT_LVPowerState", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCFRONT_LVPowerStateIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "Mux0", + "1": "Mux1" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_CMPDLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_amplifierLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_cpLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_das1HighCurrentLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_das2HighCurrentLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_difLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_dirLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_epasLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_espLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_hvacCompLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_hvcLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_iBoosterLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_ocsLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_oilPumpFrontLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_oilPumpRearLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_parkLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_pcsLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_ptcLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_radcLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_rcmLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_sccmLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_tasLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_tpmsLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_tunerLVRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_uiHiCurrentLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_vcleftHiCurrentLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_LVPowerStateIndex", + "name": "VCFRONT_vcrightHiCurrentLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 549, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 3, + "mux_names": {}, + "name": "ID225VCRIGHT_LVPowerState", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_amplifierLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_cntctrPwrState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_eFuseLockoutStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "EFUSE_LOCKOUT_STATUS_IDLE", + "1": "EFUSE_LOCKOUT_STATUS_PENDING", + "2": "EFUSE_LOCKOUT_STATUS_ACTIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_hvcLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_lumbarLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_ocsLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_ptcLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rcmLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_rearOilPumpLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_swEnStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_tunerLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_vehiclePowerStateDBG", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": { + "0": "VEHICLE_POWER_STATE_OFF", + "1": "VEHICLE_POWER_STATE_CONDITIONING", + "2": "VEHICLE_POWER_STATE_ACCESSORY", + "3": "VEHICLE_POWER_STATE_DRIVE" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 753, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID2F1VCFRONT_eFuseDebugStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "18", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCFRONT_eFuseDebugStatusIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "VCF_DBG_STS_VCRIGHT", + "1": "VCF_DBG_STS_VCLEFT", + "2": "VCF_DBG_STS_PCS", + "3": "VCF_DBG_STS_IBOOSTER", + "4": "VCF_DBG_STS_EPAS3P", + "5": "VCF_DBG_STS_EPAS3S", + "6": "VCF_DBG_STS_ESP_MOTOR", + "7": "VCF_DBG_STS_ESP_VALVE", + "8": "VCF_DBG_STS_AUTOPILOT_1", + "9": "VCF_DBG_STS_AUTOPILOT_2", + "10": "VCF_DBG_STS_SLEEP_BYPASS", + "11": "VCF_DBG_STS_UI", + "12": "VCF_DBG_STS_HEADLAMPS", + "13": "VCF_DBG_STS_VBAT_FUSED_HIGH_CURRENT", + "14": "VCF_DBG_STS_PUMPS", + "15": "VCF_DBG_STS_RAILS_A_B", + "16": "VCF_DBG_STS_MISC_RAILS", + "17": "VCF_DBG_STS_LV_BATTERY_DEBUG", + "18": "VCF_DBG_STS_INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "356.751", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ChargePumpVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3PCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3PFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3PSelfTestResult", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN", + "1": "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING", + "2": "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED", + "3": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE", + "4": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT", + "5": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON", + "6": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION", + "7": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN", + "8": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION", + "9": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW", + "10": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED", + "11": "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3PState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3PTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3PVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3SCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3SFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3SSelfTestResult", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN", + "1": "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING", + "2": "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED", + "3": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE", + "4": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT", + "5": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON", + "6": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION", + "7": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN", + "8": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION", + "9": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW", + "10": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED", + "11": "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3SState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3STemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_EPAS3SVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPMotorCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPMotorFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPMotorSelfTestResult", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN", + "1": "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING", + "2": "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED", + "3": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE", + "4": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT", + "5": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON", + "6": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION", + "7": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN", + "8": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION", + "9": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW", + "10": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED", + "11": "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPMotorState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPMotorTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPMotorVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPValveCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPValveFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPValveState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPValveTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_ESPValveVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "327.67", + "min": "-327.68", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_IBSUnfilteredTemperature", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_PCSCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_PCSFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_PCSState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_PCSTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_PCSVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot1Current", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot1Fault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot1State", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot1Temp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot1Voltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot2Current", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot2Fault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot2State", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot2Temp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_autopilot2Voltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_chargedIBSAmpHours", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "Ah", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_dischargedIBSAmpHours", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "Ah", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.2919", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_eFuseLockoutVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102.3", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampLeftCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampLeftFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampLeftState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "150", + "min": "-40", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampLeftTemperature", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.4", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampLeftVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "V", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102.3", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampRightCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampRightFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampRightState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "150", + "min": "-40", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampRightTemperature", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.4", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_headlampRightVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "V", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_iBoosterCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_iBoosterFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_iBoosterSelfTestResult", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN", + "1": "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING", + "2": "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED", + "3": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE", + "4": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT", + "5": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON", + "6": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION", + "7": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN", + "8": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION", + "9": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW", + "10": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED", + "11": "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_iBoosterState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_iBoosterTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_iBoosterVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_leftControllerCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_leftControllerFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_leftControllerState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_leftControllerTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_leftControllerVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_pcsSelfTestResult", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN", + "1": "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING", + "2": "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED", + "3": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE", + "4": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT", + "5": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON", + "6": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION", + "7": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN", + "8": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION", + "9": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW", + "10": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED", + "11": "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_pump1AndFanCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_pump1AndFanState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "409.5", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_pump1AndFanVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_pump2AndAirCompCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_pump2AndAirCompState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "409.5", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_pump2AndAirCompVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.2919", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_railA_12v", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.2919", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_railA_5v", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.2919", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_railB_12v", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.2919", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_railB_5v", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_rightControllerCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_rightControllerFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_rightControllerState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "EFUSE_STATE_OFF", + "1": "EFUSE_STATE_ON", + "2": "EFUSE_STATE_LOCKED_OUT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_rightControllerTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_rightControllerVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_sleepBypassCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_sleepBypassFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_sleepBypassState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_sleepBypassVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_uiAudioCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_uiAudioFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_uiAudioState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_uiCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_uiFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_uiState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_vbatFusedHighCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_vbatFusedHighFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_vbatFusedHighState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_vbatFusedHighTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553.5", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_vbatFusedHighVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_vbatFusedSelfTestResult", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN", + "1": "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING", + "2": "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED", + "3": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE", + "4": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT", + "5": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON", + "6": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION", + "7": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN", + "8": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION", + "9": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW", + "10": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED", + "11": "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_vcleftSelfTestResult", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN", + "1": "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING", + "2": "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED", + "3": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE", + "4": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT", + "5": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON", + "6": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION", + "7": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN", + "8": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION", + "9": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW", + "10": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED", + "11": "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_eFuseDebugStatusIndex", + "name": "VCFRONT_vcrightSelfTestResult", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "EFUSE_SELF_TEST_EFUSE_RESULT_NOT_RUN", + "1": "EFUSE_SELF_TEST_EFUSE_RESULT_RUNNING", + "2": "EFUSE_SELF_TEST_EFUSE_RESULT_PASSED", + "3": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_RAILS_UNSTABLE", + "4": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_EFUSE_OUTPUT_SHORT", + "5": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_STUCK_ON", + "6": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_LOW_MALFUNCTION", + "7": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_POWER_FET_CHANNEL_OPEN", + "8": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_ENABLE_HIGH_MALFUNCTION", + "9": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_TURN_OFF_PATH_TOO_SLOW", + "10": "EFUSE_SELF_TEST_EFUSE_RESULT_FAILED_NOT_LATCHED", + "11": "EFUSE_SELF_TEST_EFUSE_RESULT_SKIPPED" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 578, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 2, + "mux_names": {}, + "name": "ID242VCLEFT_LVPowerState", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_cpLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_diLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_lumbarLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_rcmLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_sccmLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_swcLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_tpmsLVState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "LV_OFF", + "1": "LV_ON", + "2": "LV_GOING_DOWN", + "3": "LV_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "VCLEFT_vehiclePowerStateDBG", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "VEHICLE_POWER_STATE_OFF", + "1": "VEHICLE_POWER_STATE_CONDITIONING", + "2": "VEHICLE_POWER_STATE_ACCESSORY", + "3": "VEHICLE_POWER_STATE_DRIVE" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 579, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID243VCRIGHT_hvacStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCRIGHT_hvacStatusIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "STATUS_UI", + "1": "STATUS_VCFRONT", + "2": "STATUS_VCFRONT2", + "3": "END" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacACRunning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "OFF", + "1": "ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacAirDistributionMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": { + "0": "NONE", + "1": "FLOOR", + "2": "PANEL", + "3": "PANEL_FLOOR", + "4": "DEFROST", + "5": "DEFROST_FLOOR", + "6": "DEFROST_PANEL", + "7": "DEFROST_PANEL_FLOOR" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacBlowerSegment", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "OFF", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "10", + "11": "11" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Cabin Temperature", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "164", + "min": "-40", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacCabinTempEst", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "80", + "min": "-40", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacDuctTargetLeft", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "80", + "min": "-40", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacDuctTargetRight", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.13", + "initial_value": "0.04", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "90", + "min": "-40", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacEvapInletTempEstimat", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "unit": "C", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "250", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacMassflowRefrigSystem", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "unit": "g/s", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacModelInitStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": { + "0": "NOT_INIT_WAIT_FOR_SENSORS", + "1": "NOT_INIT_WAIT_FOR_GTW", + "2": "INIT_FROM_SENSORS", + "3": "INIT_FROM_SENSORS_PREDICTION_ERROR", + "4": "INIT_FORWARD_CALC", + "5": "INIT_WAITING_FOR_SENSORS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacOverheatProtActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacPowerState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": { + "0": "OFF", + "1": "ON", + "2": "PRECONDITION", + "3": "OVERHEAT_PROTECT_FANONLY", + "4": "OVERHEAT_PROTECT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8191", + "min": "-8191", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacQdotLeft", + "offset": "-8191", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8191", + "min": "-8191", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacQdotRight", + "offset": "-8191", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacRecirc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "AUTO", + "1": "RECIRC", + "2": "FRESH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1.6", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacRecircDoorPercent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacSecondRowState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "AUTO", + "1": "OFF", + "2": "LOW", + "3": "MED", + "4": "HIGH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacSystemNominal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_hvacVentStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": { + "0": "BOTH", + "1": "LEFT", + "2": "RIGHT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "105", + "min": "-22", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_tempDuctLeft", + "offset": "-22", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "105", + "min": "-22", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_tempDuctLeftLower", + "offset": "-22", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "105", + "min": "-22", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_tempDuctLeftUpper", + "offset": "-22", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "105", + "min": "-22", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_tempDuctRight", + "offset": "-22", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "105", + "min": "-22", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_tempDuctRightLower", + "offset": "-22", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "105", + "min": "-22", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCRIGHT_hvacStatusIndex", + "name": "VCRIGHT_tempDuctRightUpper", + "offset": "-22", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "C", + "values": { + "255": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 524, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID20CVCRIGHT_hvacRequest", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_conditioningRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_evapPerformanceLow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5115", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_hvacBlowerSpeedRPMReq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "RPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_hvacEvapEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_hvacHeatingEnabledLeft", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_hvacHeatingEnabledRight", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_hvacPerfTestRunning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_hvacPerfTestState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": { + "0": "STOPPED", + "1": "WAITING", + "2": "BLOWING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_hvacUnavailable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "80", + "min": "-40", + "mux_value": null, + "name": "VCRIGHT_tempAmbientRaw", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "C", + "values": { + "0": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "105", + "min": "-40", + "mux_value": null, + "name": "VCRIGHT_tempEvaporator", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "unit": "C", + "values": { + "2047": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "50", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_tempEvaporatorTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Evaporator Power", + "comments": {}, + "factor": "5", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "mux_value": null, + "name": "VCRIGHT_wattsDemandEvap", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "W", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 737, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID2E1VCFRONT_status", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "6", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCFRONT_statusIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "VCF_STS_IDX_BODY_CONTROLS", + "1": "VCF_STS_IDX_VEHICLE_STATE", + "2": "VCF_STS_IDX_HOMELINK", + "3": "VCF_STS_IDX_REFRIGERANT_SYSTEM", + "4": "VCF_STS_IDX_LV_BATTERY", + "5": "VCF_STS_IDX_SYSTEM_HEALTH", + "6": "VCF_STS_IDX_INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_12VARailStable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_12VBRailStable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_12VOverchargeCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_5VARailStable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_5VBRailStable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.2864", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_AS8510Voltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "V", + "values": { + "4095": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_ChargePumpVoltageStable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_HSDInitCompleteU13", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_HSDInitCompleteU16", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_IBSFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_PCSMia", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_PEResetLineState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_airCompressorStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": { + "0": "VCFRONT_AIR_COMPRESSOR_STATUS_OFF", + "1": "VCFRONT_AIR_COMPRESSOR_STATUS_ON", + "2": "VCFRONT_AIR_COMPRESSOR_STATUS_TURNING_OFF", + "3": "VCFRONT_AIR_COMPRESSOR_STATUS_TURNING_ON", + "4": "VCFRONT_AIR_COMPRESSOR_STATUS_FAULT", + "5": "VCFRONT_AIR_COMPRESSOR_STATUS_RETRY_AVAILABLE", + "7": "VCFRONT_AIR_COMPRESSOR_STATUS_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_anyClosureOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_anyDoorOpen", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_batterySMState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "BATTERY_SM_STATE_INIT", + "1": "BATTERY_SM_STATE_CHARGE", + "2": "BATTERY_SM_STATE_DISCHARGE", + "3": "BATTERY_SM_STATE_STANDBY", + "4": "BATTERY_SM_STATE_RESISTANCE_ESTIMATION", + "5": "BATTERY_SM_STATE_OTA_STANDBY", + "6": "BATTERY_SM_STATE_DISCONNECTED_BATTERY_TEST", + "7": "BATTERY_SM_STATE_SHORTED_CELL_TEST", + "8": "BATTERY_SM_STATE_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_chargeNeeded", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_chillerDemandActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_compPerfRecoveryLimited", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_coolantFillRoutineStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "NOT_READY", + "1": "MOVING_TO_FILL_POSITION", + "2": "READY_TO_FILL", + "3": "FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_crashDetectedType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "CRASH_DETECTED_TYPE_NONE", + "1": "CRASH_DETECTED_TYPE_MINOR_1", + "2": "CRASH_DETECTED_TYPE_MINOR_2", + "3": "CRASH_DETECTED_TYPE_SEVERE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_crashState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "CRASH_STATE_IDLE", + "1": "CRASH_STATE_MINOR_1", + "2": "CRASH_STATE_MINOR_2", + "3": "CRASH_STATE_SEVERE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_crashUnlockOverrideSet", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_epasWakeLine", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_freezeEvapITerm", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_frunkAccessPost", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_frunkInteriorRelSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_frunkLatchStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "LATCH_SNA", + "1": "LATCH_OPENED", + "2": "LATCH_CLOSED", + "3": "LATCH_CLOSING", + "4": "LATCH_OPENING", + "5": "LATCH_AJAR", + "6": "LATCH_TIMEOUT", + "7": "LATCH_DEFAULT", + "8": "LATCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_frunkLatchType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "FRUNK_LATCH_TYPE_UNKNOWN", + "1": "FRUNK_LATCH_TYPE_DOUBLE_ACTUATOR", + "2": "FRUNK_LATCH_TYPE_DOUBLE_PULL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_hasLowRefrigerant", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_headlampLeftFanStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_headlampRightFanStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_headlightLeftVPosition", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_headlightRightVPosition", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_homelinkCommStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "HOMELINK_COMM_STATUS_SNA", + "1": "HOMELINK_COMM_STATUS_OFF", + "2": "HOMELINK_COMM_STATUS_ON", + "3": "HOMELINK_COMM_STATUS_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_homelinkV2Response0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_homelinkV2Response1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_homelinkV2Response2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_homelinkV2Response3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_homelinkV2Response4", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_hornOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_hvacModeNotAttainable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_hvacPerfTestCommand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "NOT_STARTED", + "1": "INIT", + "2": "BLOW", + "3": "STOP" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_iBoosterStateDBG", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "IBOOSTER_OFF", + "1": "IBOOSTER_ON", + "2": "IBOOSTER_GOING_DOWN", + "3": "IBOOSTER_WRITING_DATA_SHUTDOWN", + "4": "IBOOSTER_FORCE_OFF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_iBoosterWakeLine", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_isActiveHeatingBattery", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_isColdStartRunning", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_isEvapOperationAllowed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_isHeatPumpOilPurgeActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "65", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "16575", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_maxEvapHeatRejection", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2500", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_minEvapHeatRejection", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_passengerBuckleStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 57, + "values": { + "0": "UNBUCKLED", + "1": "BUCKLED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31.75", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_pressureRefrigDischarge", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "bar", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11.5", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_pressureRefrigSuction", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "bar", + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_radarHeaterState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "HEATER_STATE_SNA", + "1": "HEATER_STATE_ON", + "2": "HEATER_STATE_OFF", + "3": "HEATER_STATE_OFF_UNAVAILABLE", + "4": "HEATER_STATE_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_railAState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_railBState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_refrigFillRoutineStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "NOT_READY", + "1": "MOVING_TO_FILL_POSITION", + "2": "READY_TO_FILL", + "3": "FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_reverseBatteryFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_shortedCellFaultCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "-409.5", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_silentWakeIBSCurrent", + "offset": "-204.7", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "mA", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "-409.5", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_sleepCurrent", + "offset": "-204.7", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "mA", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "9.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "16", + "min": "9", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_tempCompTargetVoltage", + "offset": "9", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_timeSpentSleeping", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "s", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.2864", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_vbatMonitorVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": { + "4095": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.2919", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_vbatProt", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "17", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_vehicleStatusDBG", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "VEHICLE_STATUS_INIT", + "1": "VEHICLE_STATUS_LOW_POWER_STANDBY", + "2": "VEHICLE_STATUS_SILENT_WAKE", + "3": "VEHICLE_STATUS_BATTERY_POST_WAKE", + "4": "VEHICLE_STATUS_SYSTEM_CHECKS", + "5": "VEHICLE_STATUS_SLEEP_SHUTDOWN", + "6": "VEHICLE_STATUS_SLEEP_STANDBY", + "7": "VEHICLE_STATUS_LV_SHUTDOWN", + "8": "VEHICLE_STATUS_LV_AWAKE", + "9": "VEHICLE_STATUS_HV_UP_STANDBY", + "10": "VEHICLE_STATUS_ACCESSORY", + "11": "VEHICLE_STATUS_ACCESSORY_PLUS", + "12": "VEHICLE_STATUS_CONDITIONING", + "13": "VEHICLE_STATUS_DRIVE", + "14": "VEHICLE_STATUS_CRASH", + "15": "VEHICLE_STATUS_OTA", + "16": "VEHICLE_STATUS_TURN_ON_RAILS", + "17": "VEHICLE_STATUS_RESET" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_voltageDropCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_voltageFloorReachedCount", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_voltageProfile", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "VOLTAGE_PROFILE_CHARGE", + "1": "VOLTAGE_PROFILE_FLOAT", + "2": "VOLTAGE_PROFILE_REDUCED_FLOAT", + "3": "VOLTAGE_PROFILE_ALWAYS_CLOSED_CONTACTORS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_wiperPosition", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "WIPER_POSITION_SNA", + "1": "WIPER_POSITION_SERVICE", + "2": "WIPER_POSITION_DEPRESSED_PARK", + "3": "WIPER_POSITION_DELAYED_REST", + "4": "WIPER_POSITION_WIPING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_wiperSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "WIPER_SPEED_SNA", + "1": "WIPER_SPEED_OFF", + "2": "WIPER_SPEED_1", + "3": "WIPER_SPEED_2", + "4": "WIPER_SPEED_3", + "5": "WIPER_SPEED_4", + "6": "WIPER_SPEED_5", + "7": "WIPER_SPEED_LOW", + "8": "WIPER_SPEED_HIGH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "12", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_statusIndex", + "name": "VCFRONT_wiperState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "WIPER_STATE_SNA", + "1": "WIPER_STATE_SERVICE", + "2": "WIPER_STATE_FAULT", + "3": "WIPER_STATE_DELAYED_REST", + "4": "WIPER_STATE_PARK", + "5": "WIPER_STATE_WASH", + "6": "WIPER_STATE_MOMENTARY_WIPE", + "7": "WIPER_STATE_INTERMITTENT_HIGH", + "8": "WIPER_STATE_INTERMITTENT_LOW", + "9": "WIPER_STATE_CONT_FAST", + "10": "WIPER_STATE_CONT_SLOW", + "11": "WIPER_STATE_INT_AUTO_LOW", + "12": "WIPER_STATE_INT_AUTO_HIGH" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 897, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID381VCFRONT_logging1Hz", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "19", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCFRONT_logging1HzIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "COOLANT", + "1": "FAN_DEMAND_CONDENSER_AND_FET_TEMPS", + "2": "COOLANT_VALVE", + "3": "HCML_LED_TEMPS", + "4": "HCMR_LED_TEMPS", + "5": "HOMELINK", + "6": "HEADLAMP_AIM", + "7": "HP_EXV_RANGE", + "8": "HP_DATA_AND_ACCUMULATORS", + "9": "HP_CONTROL_LOOP_AND_STATE", + "10": "HP_CYCLE_MODEL", + "11": "HP_EXV_CALIBRATION", + "12": "HP_DISSIPATION_AND_POWER", + "13": "HP_TEMPS_AND_DEMANDS", + "14": "HP_PRESSURE_CONTROL", + "15": "HP_ARBITRATION", + "16": "HP_MODE_SELECT_AND_ESTIMATES", + "17": "HP_MODE_OPTIONS_AND_ESTIMATES", + "18": "BODY_CONTROL", + "19": "COOLANT_2", + "20": "END" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "80", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10100", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_CCQdotActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "80", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10100", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_CCQdotFdFrwrdTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "80", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "5000", + "min": "-5000", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_CCQdotFdbk", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "21", + "min": "-10", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_CMPDischargeSuperheat", + "offset": "6", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "80", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_DIQdotA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCML_bladeTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCML_diffuseTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCML_highBeamTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCML_lowBeamSpotTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCML_turnTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCMR_bladeTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCMR_diffuseTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCMR_highBeamTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCMR_lowBeamSpotTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "194", + "min": "-60", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_HCMR_turnTemp", + "offset": "67", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": { + "128": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_PDischargeControllerOutp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_PSuctionControllerOutput", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ambientColderThanBatt", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ambientSourcingAvailable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ambientSourcingDisabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "140", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "35000", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_battDissipation", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_battLoopWorthCooling", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_battOverStagUpperLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_battUnderStagUpperLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "150", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "19000", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_cabinHeatEnergyDuringDri", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "unit": "Wh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_calibratedPositionHCML", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "unit": "Steps", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_calibratedPositionHCMR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "Steps", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ccLeftExvCalibFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "510", + "min": "-510", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ccLeftExvCalibOffset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "3", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1500", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ccLeftExvRange", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ccRightExvCalibFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "510", + "min": "-510", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ccRightExvCalibOffset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "3", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1500", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ccRightExvRange", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_chillerExvCalibFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "510", + "min": "-510", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_chillerExvCalibOffset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "3", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1500", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_chillerExvRange", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "85", + "min": "-40", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_chillerInletTempEstimate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_chillerLiftDisabledLowPs", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "60", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "15000", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_chillerPassiveCoolPower", + "offset": "7560", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "150", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "19000", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_compEnergyDuringDrive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "unit": "Wh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "0.16", + "initial_value": "10.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "10", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_condenserPressureLimit", + "offset": "10", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantLevelVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 55, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "-127", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantValveAngleDrift", + "offset": "-127", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "unit": "degrees", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "375", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1375", + "min": "375", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantValveCountRange", + "offset": "375", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "ticks", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "20", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20000", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantValveDailyAngleTr", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "unit": "degrees", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "500", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500000", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantValveOdometer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "degrees", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantValveRadBypass", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantValveRecalCount", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantValveRecalReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "UNDEFINED", + "1": "MAX_TRAVEL", + "2": "GENERAL_FAULT", + "3": "CALIBRATION_FAULT_NO_TRAVEL", + "4": "SELF_TEST", + "5": "MOTOR_FEEDBACK_INTERRUPTED", + "6": "NVRAM_LOSS", + "7": "SYSTEM_LEVEL_FAULT_RESPONSE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "126", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantValveWindupEstL", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "126", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_coolantValveWindupEstR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_currentPositionHCML", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "unit": "Steps", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1023", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_currentPositionHCMR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "Steps", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_cycleModelConverged", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "80", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20000", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_diDissipation", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "26", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_dischargePressureLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "26", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_dischargePressureTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_drlMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "DRL_MODE_OFF", + "1": "DRL_MODE_POSITION", + "2": "DRL_MODE_DRL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "50", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "12750", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estCompPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "251", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estCompRefrigMassflow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "unit": "g/s", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "400", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25200", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estCompressorRpm", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "rpm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31.75", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estPressureDisch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31.75", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estPressureLiq", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11.5", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estPressureSuct", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "100", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "12700", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estQLift", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.8", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "170", + "min": "-34", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estTempDisch", + "offset": "68.8", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.8", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "170", + "min": "-34", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estTempLiq", + "offset": "68.8", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "33", + "min": "-30", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_estTempSuct", + "offset": "2", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_evapDisabledLowPsCutout", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_evapExvCalibFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 57, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "510", + "min": "-510", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_evapExvCalibOffset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "3", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1500", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_evapExvRange", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "80", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10100", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_evapFdFrwrdTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "80", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_evapFdFrwrdTargetMinimum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "80", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "5000", + "min": "-5000", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_evapFdbk", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_exteriorQuietModeAllowed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_exteriorQuietModeEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_fanControlFeedfwdActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_fanControlRadCanCool", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1.8", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "90", + "min": "-20", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_fanControlRadiatorInletT", + "offset": "36", + "receivers": [ + "Receiver" + ], + "start_bit": 57, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "8", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1000", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_fanControlRadiatorUa", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "unit": "W/C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_fanDemandCondenser", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_fanDemandRadiator", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "-100", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_feedBackDuctTempControll", + "offset": "-100", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "-", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0.5", + "min": "-0.5", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_feedBackEvapTempControll", + "offset": "-0.5", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "-", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_feedFwdFanDemand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_feedFwdMDotCabinCondense", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "-", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_feedFwdMDotEvaporator", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "-", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_feedFwdPumpDemand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_feedfwdLoadCoolingDomina", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_homelinkRegionCode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "HOMELINK_REGION_CODE_UNKNOWN", + "1": "HOMELINK_REGION_CODE_EUROPE", + "5": "HOMELINK_REGION_CODE_AMERICAS", + "8": "HOMELINK_REGION_CODE_REST_OF_WORLD", + "9": "HOMELINK_REGION_CODE_CHINA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpAmbientSource", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpAtSteadyState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpBattOverTempHvacDisabl", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "80", + "min": "-40", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpBattStagTarget", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpBatteryCool", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpBatteryCoolCabinConden", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpBatteryCoolCabinReheat", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpBatteryCoolEvaporator", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpBatteryHeatAmbientSour", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpBatteryHeatCOP1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCOP", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "unit": "-", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinCoolEvaporator", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinCoolEvaporatorReh", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinHeatAmbientSource", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinHeatBatteryCoolRe", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinHeatBatteryHeatRe", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinHeatBlend", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinHeatCOP1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinHeatReheatAmbient", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinHeatReheatScaveng", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCabinHeatScavengeOnly", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCompPowerIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "unit": "-", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "127", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpCompPowerIndexFiltered", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "-", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpDiagLouverCalib", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpForceScavenge", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpGeneral", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "19", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "NONE", + "1": "GENERAL", + "2": "AMBIENT_SOURCE", + "3": "CABIN_HEAT_SCAVENGE_ONLY", + "4": "CABIN_HEAT_AMBIENT_SOURCE", + "5": "CABIN_HEAT_REHEAT_SCAVENGE", + "6": "CABIN_HEAT_REHEAT_AMBIENT_SOURCE", + "7": "CABIN_HEAT_BLEND", + "8": "CABIN_HEAT_COP1", + "9": "CABIN_HEAT_BATTERY_HEAT_REHEAT_AMBIENT_SOURCE", + "10": "CABIN_HEAT_BATTERY_COOL_REHEAT", + "11": "CABIN_COOL_EVAPORATOR", + "12": "CABIN_COOL_EVAPORATOR_REHEAT", + "13": "BATTERY_HEAT_AMBIENT_SOURCE", + "14": "BATTERY_HEAT_COP1", + "15": "BATTERY_COOL", + "16": "BATTERY_COOL_CABIN_CONDENSER_REHEAT", + "17": "BATTERY_COOL_CABIN_CONDENSER", + "18": "BATTERY_COOL_CABIN_REHEAT", + "19": "BATTERY_COOL_EVAPORATOR" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpPotentialLowRefrig", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpRefrigerantPurgeState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": { + "0": "IDLE", + "1": "EVAP_PURGE", + "2": "COMPLETE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_hpSubcoolTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_lccActiveCoolTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_lccExvCalibFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "510", + "min": "-510", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_lccExvCalibOffset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "3", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1500", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_lccExvRange", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "85", + "min": "-40", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_lccInletTempEstimate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "60", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15000", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_lccPassiveHeatPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "150", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "19000", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_lowSideLiftEnergyDrive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "unit": "Wh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "60", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7600", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_lowSideWattsLift", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "40", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_maxAllowedEvapPowerInSer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "100", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20000", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_maxChillerCoolingPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "90", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11430", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_maxCompressorRPMAllowed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "rpm", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "40", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_minAllowedChillerPowerIn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.02", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2.5", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_minAllowedSuctionPressur", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_minFlowPDCont", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_modeDesired", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "SERIES", + "1": "PARALLEL", + "2": "BLEND", + "3": "AMBIENT_SOURCE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "40", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_modeTransitionID", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "PARALLEL_F1_noFlowRequest", + "1": "SERIES_F2_faultPumps", + "2": "SERIES_F3_faultTempSensors", + "3": "SERIES_1_drive_batteryWantsCool", + "4": "SERIES_2_drive_batteryNeedsHeat", + "5": "SERIES_3_drive_batteryWantsHeat", + "6": "PARALLEL_2_drive_batteryWantsHeat", + "7": "PARALLEL_3_drive_batteryWantsCool", + "8": "PARALLEL_4_drive_batteryNeedsCool", + "9": "SERIES_4_charge_batteryNeedsHeat", + "10": "SERIES_5_charge_batteryWantsHeat", + "11": "PARALLEL_5_charge_batteryWantsHeat", + "12": "PARALLEL_6_charge_batteryWantsCool", + "13": "SERIES_6_fastCharge_batteryNeedsHeat", + "14": "SERIES_7_fastCharge_batteryWantsCool", + "15": "PARALLEL_7_fastCharge_batteryWantsCool", + "16": "PARALLEL_8_fastCharge_batteryWantsHeat", + "17": "SERIES_8_preConditioning_batteryNeedsHeat", + "18": "SERIES_9_drive_driveUnitThermalLimiting", + "19": "PARALLEL_9_drive_batteryThermalLimiting", + "20": "INIT", + "21": "OVERRIDE", + "22": "UNDEFINED", + "23": "ENTER_AMBIENTSOURCE", + "24": "EXIT_AMBIENTSOURCE", + "25": "SER_1_drive_battNeedsActiveCooling_evapEnabled", + "26": "SER_2_drive_battBelowHotStagnationTemp", + "27": "SER_3_drive_chillerPassivelyCools", + "28": "SER_4_drive_radPassivelyCoolsBatt", + "29": "SER_5_FC_battHeatingNeeded", + "30": "SER_6_FC_battNeedsActiveCooling_evapDisabled", + "31": "SER_7_FC_battNeedsActiveCooling_evapEnabled", + "32": "SER_8_charge_battBelowPassiveTarget", + "33": "PAR_1_drive_battNeedsActiveCooling_evapDisabled", + "34": "PAR_2_drive_ptNeedsActiveCooling", + "35": "PAR_3_drive_chillerPassivelyCoolsBatt", + "36": "PAR_4_drive_cannotPassivelyCoolBatt", + "37": "PAR_5_drive_battAboveHotStagnationTemp", + "38": "PAR_6_FC_battNeedsActiveCooling_evapDisabled", + "39": "PAR_7_FC_battNeedsActiveCooling_evapEnabled", + "40": "PAR_8_charge_battAbovePassiveTarget" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_modelLoadCoolingDominant", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_passiveCoolingState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "ChillerCoolsSeriesLoop", + "1": "ChillerCoolsParallelBattLoop", + "2": "ChillerAndRadCoolSeriesLoop", + "3": "CannotCoolBattery" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_passiveDemandRadBypass", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_passiveSeriesRegOn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_pressureRefrigDischEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.12", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "14.36", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_pressureRefrigSuctionEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_ptLoopWorthCooling", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_pumpBatteryFETTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_pumpPowertrainFETTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 15, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "30000", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_radActiveRejectEstimate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15000", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_radPassiveRejectEstimate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_radiatorFanFETTemp", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_radiatorFanRunReason", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": { + "0": "NONE", + "1": "ACTIVE_MANAGER", + "2": "AMBIENT_SNIFF", + "3": "NVH_MASKING", + "4": "HEAT_PUMP", + "5": "COAST_MODE", + "6": "MIN_ON_GLOBAL", + "7": "MIN_ON_NVH", + "8": "UDS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_recircExvCalibFailed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "510", + "min": "-510", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_recircExvCalibOffset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "3", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1500", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_recircExvRange", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 23, + "unit": "ticks", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40", + "min": "-10", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_subcoolActual", + "offset": "15.2", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "0.15", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_suctionPressureTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "30", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_suctionSuperheatEstPsSNA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "30", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_suctionSuperheatEstTsSNA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_targetBatActiveCool", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "60", + "min": "-40", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_targetBatActiveHeat", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "80", + "min": "-20", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_targetBatPassive", + "offset": "-20", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_targetPTActiveCool", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "120", + "min": "-40", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_targetPTPassive", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "125", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_tempRefrigDischargeEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "85", + "min": "-40", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_tempRefrigSuction", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "C", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "63", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_tempRefrigSuctionEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_totalLoadCoolingDominant", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "100", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6553500", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "VCFRONT_logging1HzIndex", + "name": "VCFRONT_wiperCycles", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "Cycles", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 792, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID318SystemTimeUTC", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Year", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UTCyear318", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "yr", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Month", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UTCmonth318", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "mo", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Seconds", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UTCseconds318", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "sec", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Hour", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UTChour318", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "hr", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Day", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UTCday318", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "dy", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Minute", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "UTCminutes318", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "min", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1320, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID528UnixTime", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": "Unix Time", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": true, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "mux_value": null, + "name": "UnixTimeSeconds528", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "sec", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 553, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 3, + "mux_names": {}, + "name": "ID229GearLever", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "GearLeverPosition229", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "Center", + "1": "Half Down", + "2": "Full Down", + "3": "Half Up", + "4": "Full Up" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "GearLeverButton229", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 585, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID249SCCMLeftStalk", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "SCCM_highBeamStalkStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "IDLE", + "1": "PULL", + "2": "PUSH", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "SCCM_leftStalkCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "SCCM_leftStalkCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31", + "min": "0", + "mux_value": null, + "name": "SCCM_leftStalkReserved1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "mux_value": null, + "name": "SCCM_turnIndicatorStalkStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "IDLE", + "1": "UP_0_5", + "2": "UP_1", + "3": "UP_1_5", + "4": "UP_2", + "5": "DOWN_0_5", + "6": "DOWN_1", + "7": "DOWN_1_5", + "8": "DOWN_2", + "9": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "SCCM_washWipeButtonStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "NOT_PRESSED", + "1": "1ST_DETENT", + "2": "2ND_DETENT", + "3": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 390, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID186DIF_torque", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "Front Axle Speed", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "2750", + "min": "-2750", + "mux_value": null, + "name": "DIF_axleSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "RPM", + "values": { + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "DIF_slavePedalPos", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Front Axle Torque", + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "7500", + "min": "-7500", + "mux_value": null, + "name": "DIF_torqueActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "unit": "Nm", + "values": { + "4096": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "DIF_torqueChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Front Axle Torque Request", + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "7500", + "min": "-7500", + "mux_value": null, + "name": "DIF_torqueCommand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "unit": "Nm", + "values": { + "4096": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DIF_torqueCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DIF_axleSpeedQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "swapped with 395 in old firmware", + "cycle_time": 0, + "header_id": null, + "id": 918, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID396FrontOilPump", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "mux_value": null, + "name": "FrontOilPumpPressureExpected396", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "kPa", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.4", + "min": "0", + "mux_value": null, + "name": "FrontOilPumpPhaseCurrent396", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.06", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "FrontOilFlowActual396", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "FrontOilPumpDutyCycle396", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "214", + "min": "0", + "mux_value": null, + "name": "FrontOilPumpOilTempEst396", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "214", + "min": "0", + "mux_value": null, + "name": "FrontOilPumpFluidTemp396", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "FrontOilPumpState396", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "OIL_PUMP_STANDBY", + "1": "OIL_PUMP_ENABLE", + "2": "OIL_PUMP_COLD_STARTUP", + "6": "OIL_PUMP_FAULTED", + "7": "OIL_PUMP_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "mux_value": null, + "name": "FrontOilPumpPressureEstimate396", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kPa", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "FrontOilPumpOilTempEstConfident3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1.875", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "28.125", + "min": "0", + "mux_value": null, + "name": "FrontOilPumpLeadAngle396", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "unit": "deg", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "swapped with 396 in old firmware", + "cycle_time": 0, + "header_id": null, + "id": 917, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID395DIR_oilPump", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.06", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DIR_oilPumpFlowActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.06", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DIR_oilPumpFlowTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "214", + "min": "-40", + "mux_value": null, + "name": "DIR_oilPumpFluidT", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DIR_oilPumpFluidTQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "OIL_PUMP_FLUIDT_LOW_CONFIDENCE", + "1": "OIL_PUMP_FLUIDT_HIGH_CONFIDENCE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1.875", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "28.125", + "min": "0", + "mux_value": null, + "name": "DIR_oilPumpLeadAngle", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.4", + "min": "0", + "mux_value": null, + "name": "DIR_oilPumpPhaseCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "mux_value": null, + "name": "DIR_oilPumpPressureEstimate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kPa", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "mux_value": null, + "name": "DIR_oilPumpPressureExpected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "kPa", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "4", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "-500", + "mux_value": null, + "name": "DIR_oilPumpPressureResidual", + "offset": "-500", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "kPa", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DIR_oilPumpState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "OIL_PUMP_STANDBY", + "1": "OIL_PUMP_ENABLE", + "2": "OIL_PUMP_COLD_STARTUP", + "6": "OIL_PUMP_FAULTED", + "7": "OIL_PUMP_SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 472, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID1D8RearTorque", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "Checksum1D8", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "Counter1D8", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Rear Motor Torque Request", + "comments": {}, + "factor": "0.222", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "909.09", + "min": "-909.312", + "mux_value": null, + "name": "RearTorqueRequest1D8", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "NM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Rear Motor Torque", + "comments": {}, + "factor": "0.222", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "909.09", + "min": "-909.312", + "mux_value": null, + "name": "RearTorque1D8", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "unit": "NM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "Cyclic" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "TorqueFlags1D8", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 341, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID155WheelAngles", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1.40625", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "358.594", + "min": "0", + "mux_value": null, + "name": "WheelAngleTicsRR155", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1.40625", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "358.594", + "min": "0", + "mux_value": null, + "name": "WheelAngleTicsRL155", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1.40625", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "358.594", + "min": "0", + "mux_value": null, + "name": "WheelAngleTicsFR155", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1.40625", + "initial_value": "0.00000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "358.594", + "min": "0", + "mux_value": null, + "name": "WheelAngleTicsFL155", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_WheelRotationReR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "WR_FORWARD", + "1": "WR_BACKWARD", + "2": "WR_STANDSTILL", + "3": "WR_NOT_DEFINABLE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_WheelRotationReL", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "WR_FORWARD", + "1": "WR_BACKWARD", + "2": "WR_STANDSTILL", + "3": "WR_NOT_DEFINABLE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_WheelRotationFrR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "WR_FORWARD", + "1": "WR_BACKWARD", + "2": "WR_STANDSTILL", + "3": "WR_NOT_DEFINABLE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "ESP_WheelRotationFrL", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "WR_FORWARD", + "1": "WR_BACKWARD", + "2": "WR_STANDSTILL", + "3": "WR_NOT_DEFINABLE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_wheelSpeedsQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "ONE_OR_MORE_WSS_INVALID", + "1": "ALL_WSS_VALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_vehicleStandstillSts", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": { + "0": "NOT_STANDSTILL", + "1": "STANDSTILL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "ESP_vehicleSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "unit": "kph", + "values": { + "1023": "ESP_VEHICLE_SPEED_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "ESP_wheelRotationCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "ESP_wheelRotationChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 373, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID175WheelSpeed", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.04", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "327.64", + "min": "0", + "mux_value": null, + "name": "WheelSpeedRR175", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "unit": "KPH", + "values": { + "8191": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.04", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "327.64", + "min": "0", + "mux_value": null, + "name": "WheelSpeedRL175", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "unit": "KPH", + "values": { + "8191": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.04", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "327.64", + "min": "0", + "mux_value": null, + "name": "WheelSpeedFR175", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "unit": "KPH", + "values": { + "8191": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.04", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "327.64", + "min": "0", + "mux_value": null, + "name": "WheelSpeedFL175", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "KPH", + "values": { + "8191": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "ESP_wheelSpeedsCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "ESP_wheelSpeedsChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 389, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID185ESP_brakeTorque", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8190", + "min": "0", + "mux_value": null, + "name": "ESP_brakeTorqueFrL", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "Nm", + "values": { + "4095": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8190", + "min": "0", + "mux_value": null, + "name": "ESP_brakeTorqueFrR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "unit": "Nm", + "values": { + "4095": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8190", + "min": "0", + "mux_value": null, + "name": "ESP_brakeTorqueReL", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "Nm", + "values": { + "4095": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "8190", + "min": "0", + "mux_value": null, + "name": "ESP_brakeTorqueReR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "Nm", + "values": { + "4095": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "ESP_brakeTorqueQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "UNDEFINABLE_ACCURACY", + "1": "IN_SPEC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "ESP_brakeTorqueCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "ESP_brakeTorqueChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "10", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "Cyclic", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 10, + "header_id": null, + "id": 468, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID1D4FrontTorqueOld", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "Front Torque Old, Axle torque 2 with 9/1 gearing", + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "511.75", + "min": "-512", + "mux_value": null, + "name": "RAWTorqueFront1D4", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "NM", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 469, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID1D5FrontTorque", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Front Motor Torque Request", + "comments": {}, + "factor": "0.222", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "909.09", + "min": "-909.312", + "mux_value": null, + "name": "FrontTorqueRequest1D5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "NM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Front Motor Torque", + "comments": {}, + "factor": "0.222", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "909.09", + "min": "-909.312", + "mux_value": null, + "name": "FrontTorque1D5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "unit": "NM", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 641, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID281VCFRONT_CMPRequest", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "VCFRONT_CMPTargetDuty", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65534", + "min": "0", + "mux_value": null, + "name": "VCFRONT_CMPPowerLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "VCFRONT_CMPReset", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_CMPEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "50", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 50, + "header_id": null, + "id": 962, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID3C2VCLEFT_switchStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCLEFT_switchStatusIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "VCLEFT_SWITCH_STATUS_INDEX_0", + "1": "VCLEFT_SWITCH_STATUS_INDEX_1", + "2": "VCLEFT_SWITCH_STATUS_INDEX_INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_2RowSeatBothFoldFlatSwitc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_2RowSeatCenterSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_2RowSeatLeftFoldFlatSwitc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_2RowSeatReclineSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_2RowSeatRightFoldFlatSwit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_brakePressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_brakeSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowAutoDownLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowAutoUpLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowDownLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackAutoDownLF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackAutoDownLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackAutoDownRF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackAutoDownRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackAutoUpLF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackAutoUpLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackAutoUpRF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackAutoUpRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackDownLF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackDownLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackDownRF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackDownRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackUpLF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackUpLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackUpRF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowSwPackUpRR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_btnWindowUpLR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontBuckleSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontOccupancySwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatBackrestBack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatBackrestForward", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatLiftDown", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatLiftUp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatLumbarDown", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatLumbarIn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatLumbarOut", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatLumbarUp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatTiltDown", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatTiltUp", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatTrackBack", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_frontSeatTrackForward", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_hazardButtonPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_hornSwitchPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_rearCenterBuckleSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_rearCenterOccupancySwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_rearHVACButtonPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_rearLeftBuckleSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_rearLeftOccupancySwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_rearRightOccupancySwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 58, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_rightMirrorTilt", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "MIRROR_TILT_STOP", + "1": "MIRROR_TILT_DOWN", + "2": "MIRROR_TILT_UP", + "3": "MIRROR_TILT_RIGHT", + "4": "MIRROR_TILT_LEFT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcLeftDoublePress", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcLeftPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "31", + "min": "-32", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcLeftScrollTicks", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcLeftTiltLeft", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcLeftTiltRight", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcRightDoublePress", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcRightPressed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 6, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "31", + "min": "-32", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcRightScrollTicks", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcRightTiltLeft", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCLEFT_switchStatusIndex", + "name": "VCLEFT_swcRightTiltRight", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "SWITCH_SNA", + "1": "SWITCH_OFF", + "2": "SWITCH_ON", + "3": "SWITCH_FAULT" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 822, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID336MaxPowerRating", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Regen Rating", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "155", + "min": "-100", + "mux_value": null, + "name": "DriveRegenRating336", + "offset": "-100", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "Power Rating", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "600", + "min": "0", + "mux_value": null, + "name": "DrivePowerRating336", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "mux_value": null, + "name": "DI_performancePackage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "BASE", + "1": "PERFORMANCE", + "3": "BASE_PLUS", + "4": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "500", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 500, + "header_id": null, + "id": 659, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID293UI_chassisControl", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_accOvertakeEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "ACC_OVERTAKE_OFF", + "1": "ACC_OVERTAKE_ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_aebEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "AEB_OFF", + "1": "AEB_ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_aesEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "AES_OFF", + "1": "AES_ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_ahlbEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "AHLB_OFF", + "1": "AHLB_ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_autoLaneChangeEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "OFF", + "1": "ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "UI_autoParkRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "NONE", + "1": "PARK_LEFT_PARALLEL", + "2": "PARK_LEFT_CROSS", + "3": "PARK_RIGHT_PARALLEL", + "4": "PARK_RIGHT_CROSS", + "5": "PARALLEL_PULL_OUT_TO_LEFT", + "6": "PARALLEL_PULL_OUT_TO_RIGHT", + "7": "ABORT", + "8": "COMPLETE", + "9": "SEARCH", + "10": "PAUSE", + "11": "RESUME", + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_bsdEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "BSD_OFF", + "1": "BSD_ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "UI_chassisControlChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "UI_chassisControlCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_dasDebugEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_distanceUnits", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "DISTANCEUNITS_KM", + "1": "DISTANCEUNITS_MILES" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_fcwEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "FCW_OFF", + "1": "FCW_ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_fcwSensitivity", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "AEB_SENSITIVITY_EARLY", + "1": "AEB_SENSITIVITY_AVERAGE", + "2": "AEB_SENSITIVITY_LATE", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_latControlEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "LATERAL_CONTROL_OFF", + "1": "LATERAL_CONTROL_ON", + "2": "LATERAL_CONTROL_UNAVAILABLE", + "3": "LATERAL_CONTROL_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_ldwEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "NO_HAPTIC", + "1": "LDW_TRIGGERS_HAPTIC", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_narrowGarages", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_parkBrakeRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "PARK_BRAKE_REQUEST_IDLE", + "1": "PARK_BRAKE_REQUEST_PRESSED", + "3": "PARK_BRAKE_REQUEST_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_pedalSafetyEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "PEDAL_SAFETY_OFF", + "1": "PEDAL_SAFETY_ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_rebootAutopilot", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_redLightStopSignEnable", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "RLSSW_OFF", + "1": "RLSSW_ON", + "3": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "UI_selfParkTune", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "15": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_steeringTuneRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "STEERING_TUNE_COMFORT", + "1": "STEERING_TUNE_STANDARD", + "2": "STEERING_TUNE_SPORT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "UI_tractionControlMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "TC_NORMAL_SELECTED", + "1": "TC_SLIP_START_SELECTED", + "2": "TC_DEV_MODE_1_SELECTED", + "3": "TC_DEV_MODE_2_SELECTED", + "4": "TC_ROLLS_MODE_SELECTED", + "5": "TC_DYNO_MODE_SELECTED", + "6": "TC_OFFROAD_ASSIST_SELECTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "UI_trailerMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "TRAILER_MODE_OFF", + "1": "TRAILER_MODE_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "UI_winchModeRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "WINCH_MODE_IDLE", + "1": "WINCH_MODE_ENTER", + "2": "WINCH_MODE_EXIT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "UI_zeroSpeedConfirmed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "ZERO_SPEED_CANCELED", + "1": "ZERO_SPEED_CONFIRMED", + "2": "ZERO_SPEED_UNUSED", + "3": "ZERO_SPEED_SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 616, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID268SystemPower", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Max Regen Power", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "155", + "min": "-100", + "mux_value": null, + "name": "SystemRegenPowerMax268", + "offset": "-100", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "System Max Waste Heat Power", + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31875", + "min": "0", + "mux_value": null, + "name": "SystemHeatPowerMax268", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "System Waste Heat Power", + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31875", + "min": "0", + "mux_value": null, + "name": "SystemHeatPower268", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Max Drive Power", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "511", + "min": "0", + "mux_value": null, + "name": "SystemDrivePowerMax268", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_primaryUnitSiliconType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "MOSFET", + "1": "IGBT" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "Cyclic", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 79, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID04FGPSLatLong", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.2", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.2", + "min": "0", + "mux_value": null, + "name": "GPSAccuracy04F", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 57, + "unit": "m", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": "Longitude", + "comments": {}, + "factor": "0.000001", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "134.218", + "min": "-134.218", + "mux_value": null, + "name": "GPSLongitude04F", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "unit": "Deg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": "Latitude", + "comments": {}, + "factor": "0.000001", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "134.218", + "min": "-134.218", + "mux_value": null, + "name": "GPSLatitude04F", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "Deg", + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 978, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID3D2TotalChargeDischarge", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": "Lifetime Discharge", + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970", + "min": "0", + "mux_value": null, + "name": "TotalDischargeKWh3D2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": "Lifetime Charge", + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970", + "min": "0", + "mux_value": null, + "name": "TotalChargeKWh3D2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kWh", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1010, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID3F2BMSCounters", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "BMS_kwhCounter_Id", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhDcChargeTotalModule3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhChargeTotalModule2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhDcChargeTotalModule2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhChargeTotalModule4", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhDcChargeTotalModule4", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhDcChargeTotalModule1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhChargeTotalModule1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhChargeTotalModule3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhAcChargeTotalModule3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhDischargeTotalModule2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhAcChargeTotalModule2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhDischargeTotalModule4", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhAcChargeTotalModule4", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhAcChargeTotalModule1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhDriveDischargeTotal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_dcChargerKwhTotal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhDischargeTotalModule1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_acChargerKwhTotal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhRegenChargeTotal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 28, + "comment": null, + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "BMS_kwhCounter_Id", + "name": "BMS_kwhDischargeTotalModule3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "KWh", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 722, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID2D2BMSVAlimits", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "BMS Min Voltage", + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "430", + "min": "0", + "mux_value": null, + "name": "MinVoltage2D2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": "BMS Max Discharge Current", + "comments": {}, + "factor": "0.128", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2096.9", + "min": "0", + "mux_value": null, + "name": "MaxDischargeCurrent2D2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": "BMS Max Charge Current", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1638.2", + "min": "0", + "mux_value": null, + "name": "MaxChargeCurrent2D2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "BMS Max Voltage", + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "430", + "min": "0", + "mux_value": null, + "name": "MaxVoltage2D2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 1345, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID541FastChargeMaxLimits", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Supercharger Power Limit", + "comments": {}, + "factor": "0.062256", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "509.939", + "min": "0", + "mux_value": null, + "name": "FCMaxPowerLimit541", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Supercharger Current Limit", + "comments": {}, + "factor": "0.073242", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.925", + "min": "0", + "mux_value": null, + "name": "FCMaxCurrentLimit541", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 580, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID244FastChargeLimits", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Supercharger Min Voltage", + "comments": {}, + "factor": "0.073242", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.925", + "min": "0", + "mux_value": null, + "name": "FCMinVlimit244", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Supercharger Max Voltage", + "comments": {}, + "factor": "0.073242", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.925", + "min": "0", + "mux_value": null, + "name": "FCMaxVlimit244", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Supercharger Max Current", + "comments": {}, + "factor": "0.073242", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.925", + "min": "0", + "mux_value": null, + "name": "FCCurrentLimit244", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Supercharger Max Power", + "comments": {}, + "factor": "0.062256", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "509.939", + "min": "0", + "mux_value": null, + "name": "FCPowerLimit244", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 532, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID214FastChargeVA", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "FC_adapterLocked", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": null, + "comments": {}, + "factor": "0.0732422", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "599.927", + "min": "-600", + "mux_value": null, + "name": "FC_dcCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.0732422", + "initial_value": "0E-7", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "599.927", + "min": "0", + "mux_value": null, + "name": "FC_dcVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "FC_leakageTestNotSupported", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "600", + "min": "0", + "mux_value": null, + "name": "FC_minCurrentLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "FC_postID", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "FC_POST_MASTER", + "1": "FC_POST_SLAVE", + "2": "FC_POST_ID_2", + "3": "FC_POST_ID_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "FC_protocolVersion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "FC_statusCode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "FC_STATUS_NOTREADY_SNA", + "1": "FC_STATUS_READY", + "2": "FC_STATUS_UPDATE_IN_PROGRESS", + "3": "FC_STATUS_DEPRECATED_3", + "4": "FC_STATUS_DEPRECATED_4", + "5": "FC_STATUS_INT_ISOACTIVE", + "6": "FC_STATUS_EXT_ISOACTIVE", + "7": "FC_STATUS_POST_OUT_OF_SERVICE", + "13": "FC_STATUS_NOTCOMPATIBLE", + "14": "FC_STATUS_MALFUNCTION", + "15": "FC_STATUS_NODATA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "FC_type", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": { + "0": "FC_TYPE_SUPERCHARGER", + "1": "FC_TYPE_CHADEMO", + "2": "FC_TYPE_GB", + "3": "FC_TYPE_CC_EVSE", + "4": "FC_TYPE_COMBO", + "5": "FC_TYPE_MC_EVSE", + "6": "FC_TYPE_OTHER", + "7": "FC_TYPE_SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 533, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 1, + "mux_names": {}, + "name": "ID215FCisolation", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "40", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10200", + "min": "0", + "mux_value": null, + "name": "FCIsolation215", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kOhm", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 535, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID217FC_status3", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "FC_status3DataSelect", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "Mux0", + "1": "Mux1" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.015259", + "initial_value": "0.000000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1000", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "FC_status3DataSelect", + "name": "FC_billingEnergy", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "kWh", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "FC_status3DataSelect", + "name": "FC_brand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "FC_BRAND_SNA", + "1": "FC_BRAND_TESLA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "FC_status3DataSelect", + "name": "FC_class", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "FC_CLASS_SNA", + "1": "FC_CLASS_SUPERCHARGER", + "2": "FC_CLASS_URBANCHARGER" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "FC_status3DataSelect", + "name": "FC_coolingType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "FC_COOLING_TYPE_SNA", + "1": "FC_COOLING_TYPE_LIQUID", + "2": "FC_COOLING_TYPE_CONVECTION" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "FC_status3DataSelect", + "name": "FC_generation", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "GENERATION_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "FC_status3DummySig", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "FC_status3DataSelect", + "name": "FC_uiStopType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "FC_UI_STOP_TYPE_SNA", + "1": "FC_UI_STOP_TYPE_TOGGLE", + "2": "FC_UI_STOP_TYPE_MOMENTARY" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 801, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID321VCFRONT_sensors", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_battSensorIrrational", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_brakeFluidLevel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "SNA", + "1": "LOW", + "2": "NORMAL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_coolantLevel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": { + "0": "NOT_OK", + "1": "FILLED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "VCFRONT_ptSensorIrrational", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "80", + "min": "-40", + "mux_value": null, + "name": "VCFRONT_tempAmbient", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": { + "0": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Outside Temperature", + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "80", + "min": "-40", + "mux_value": null, + "name": "VCFRONT_tempAmbientFiltered", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": { + "0": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "Battery Coolant Temp", + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "85", + "min": "-40", + "mux_value": null, + "name": "VCFRONT_tempCoolantBatInlet", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Powertrain Coolant Temp", + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "200", + "min": "-40", + "mux_value": null, + "name": "VCFRONT_tempCoolantPTInlet", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "C", + "values": { + "2047": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "VCFRONT_washerFluidLevel", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "SNA", + "1": "LOW", + "2": "NORMAL" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 769, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID301VCFRONT_info", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCFRONT_infoIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "BC_INFO_DEPRECATED_0", + "1": "BC_INFO_DEPRECATED_1", + "2": "BC_INFO_DEPRECATED_2", + "3": "BC_INFO_DEPRECATED_3", + "4": "BC_INFO_DEPRECATED_4", + "5": "BC_INFO_DEPRECATED_5", + "6": "BC_INFO_DEPRECATED_6", + "7": "BC_INFO_DEPRECATED_7", + "8": "BC_INFO_DEPRECATED_8", + "9": "BC_INFO_DEPRECATED_9", + "10": "BC_INFO_BUILD_HWID_COMPONENTID", + "11": "BC_INFO_PCBAID_ASSYID_USAGEID", + "13": "BC_INFO_APP_CRC", + "14": "BC_INFO_BOOTLOADER_SVN", + "15": "BC_INFO_BOOTLOADER_CRC", + "16": "BC_INFO_SUBCOMPONENT1", + "17": "BC_INFO_APP_GITHASH", + "18": "BC_INFO_BOOTLOADER_GITHASH", + "19": "BC_INFO_VERSION_DEPRECATED", + "20": "BC_INFO_UDS_PROTOCOL_BOOTCRC", + "23": "BC_INFO_SUBCOMPONENT2", + "24": "BC_INFO_SUBCOMPONENT3", + "31": "BC_INFO_SUBCOMPONENT4", + "32": "BC_INFO_SUBCOMPONENT5", + "33": "BC_INFO_SUBCOMPONENT6", + "255": "BC_INFO_END" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_hcmlAppCRC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 23, + "mux_value": 23, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_hcmrAppCRC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoAppCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoAppGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoAssemblyId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "1": "ASSEMBLY1", + "255": "ASSEMBLY_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoBootCrc", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoBootGitHash", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoBootUdsProtoVersion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoBuildConfigId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoBuildType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "INFO_UNKNOWN_BUILD", + "1": "INFO_PLATFORM_BUILD", + "2": "INFO_LOCAL_BUILD", + "3": "INFO_TRACEABLE_CI_BUILD", + "4": "INFO_MFG_BUILD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoComponentId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoHardwareId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoPcbaId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoPlatformType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoSubUsageId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 24, + "mux_value": 24, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoSubcomponent3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 31, + "mux_value": 31, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoSubcomponent4", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoSubcomponent5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoSubcomponent6", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "VCFRONT_infoIndex", + "name": "VCFRONT_infoUsageId", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 513, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID201VCFRONT_loggingAndVitals10Hz", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "7", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCFRONT_loggingAndVitals10HzInde", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "TARGETS_AND_ACTUALS_0", + "1": "TARGETS_SENSORS_AND_ACTUALS_1", + "2": "STATES_AND_SENSORS", + "3": "EXV_FLOW", + "4": "HP_STATE", + "5": "EXV_FLOW_TARGET", + "6": "EXV_STATE", + "7": "END" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_activeLouverOpenPos", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_activeLouverOpenPosTarg", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_cclExvFlow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_cclExvFlowTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_cclExvState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "UNINIT", + "1": "INIT_OPEN", + "2": "INIT_CLOSE", + "3": "READY", + "4": "FAULTED", + "5": "WAIT", + "6": "OVERDRIVING_SHUT", + "7": "READY_SHUT", + "8": "CALIB_CLOSE", + "9": "CALIB_CLOSE_OVERDRIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_ccrExvFlow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_ccrExvFlowTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_ccrExvState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "UNINIT", + "1": "INIT_OPEN", + "2": "INIT_CLOSE", + "3": "READY", + "4": "FAULTED", + "5": "WAIT", + "6": "OVERDRIVING_SHUT", + "7": "READY_SHUT", + "8": "CALIB_CLOSE", + "9": "CALIB_CLOSE_OVERDRIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_chillerExvFlow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_chillerExvFlowTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_chillerExvState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "UNINIT", + "1": "INIT_OPEN", + "2": "INIT_CLOSE", + "3": "READY", + "4": "FAULTED", + "5": "WAIT", + "6": "OVERDRIVING_SHUT", + "7": "READY_SHUT", + "8": "CALIB_CLOSE", + "9": "CALIB_CLOSE_OVERDRIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_compDemandChiller", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_compDemandEvap", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_compressorState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "STANDBY", + "1": "READY", + "2": "RUNNING", + "3": "FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_coolantValveMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": { + "0": "SERIES", + "1": "PARALLEL", + "2": "BLEND", + "3": "AMBIENT_SOURCE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_evapExvFlow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_evapExvFlowTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_evapExvState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "UNINIT", + "1": "INIT_OPEN", + "2": "INIT_CLOSE", + "3": "READY", + "4": "FAULTED", + "5": "WAIT", + "6": "OVERDRIVING_SHUT", + "7": "READY_SHUT", + "8": "CALIB_CLOSE", + "9": "CALIB_CLOSE_OVERDRIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_exvFlowTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_exvState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": { + "0": "UNINIT", + "1": "INIT_OPEN", + "2": "INIT_CLOSE", + "3": "READY", + "4": "FAULTED", + "5": "WAIT", + "6": "OVERDRIVING_SHUT", + "7": "READY_SHUT", + "8": "CALIB_CLOSE", + "9": "CALIB_CLOSE_OVERDRIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_fanDemand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_hpBatteryLoadType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "NONE", + "1": "BATT_HEAT", + "2": "BATT_COOL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_hpBlendType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "HP_NONE", + "1": "HP_PARTIAL", + "2": "HP_FULL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_hpCabinLoadType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "NONE", + "1": "CC", + "2": "REHEAT", + "3": "EVAP" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_hpDominantLoad", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "NONE", + "1": "EVAP", + "2": "CHILLER", + "3": "LOW_BOTH", + "4": "LCC", + "5": "CC", + "6": "HIGH_BOTH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_hpHighSideHX", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": { + "0": "NONE", + "1": "LCC", + "2": "CC", + "3": "BOTH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_hpLowSideHX", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": { + "0": "NONE", + "1": "CHILLER", + "2": "EVAP", + "3": "BOTH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_hpQuietModeEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_hpReqCoolantMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "ANY", + "1": "SERIES_NO_BYPASS", + "2": "SERIES_BYPASS", + "3": "PARALLEL", + "4": "AMBIENT_SOURCE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_lccExvFlow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_lccExvFlowTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_lccExvState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "UNINIT", + "1": "INIT_OPEN", + "2": "INIT_CLOSE", + "3": "READY", + "4": "FAULTED", + "5": "WAIT", + "6": "OVERDRIVING_SHUT", + "7": "READY_SHUT", + "8": "CALIB_CLOSE", + "9": "CALIB_CLOSE_OVERDRIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31.75", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_pressureRefrigDischargeV", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "unit": "bar", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31.75", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_pressureRefrigLiquid", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "bar", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "11.5", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_pressureRefrigSuctionVit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "unit": "bar", + "values": { + "127": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_pumpBatteryRPMActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "unit": "rpm", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_pumpPowertrainRPMActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "unit": "rpm", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10000", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_radiatorFanRPMActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "rpm", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_recircExvFlow", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_recircExvFlowTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "9", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_recircExvState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "UNINIT", + "1": "INIT_OPEN", + "2": "INIT_CLOSE", + "3": "READY", + "4": "FAULTED", + "5": "WAIT", + "6": "OVERDRIVING_SHUT", + "7": "READY_SHUT", + "8": "CALIB_CLOSE", + "9": "CALIB_CLOSE_OVERDRIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_solenoidEvapState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": { + "0": "UNDEFINED", + "1": "OPENED", + "2": "CLOSED", + "3": "FAULTED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_tempRefrigDischarge", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "unit": "C", + "values": { + "2047": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "150", + "min": "-40", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_tempRefrigLiquid", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": { + "2047": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "58", + "min": "-5", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_tempSuperheatActFiltered", + "offset": "26.5", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "80", + "min": "-20", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_tempSuperheatActual", + "offset": "-20", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "unit": "C", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "60", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_loggingAndVitals10HzInde", + "name": "VCFRONT_tempSuperheatTarget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "C", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 984, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 2, + "mux_names": {}, + "name": "ID3D8Elevation", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": "Elevation", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "8191", + "min": "-8192", + "mux_value": null, + "name": "Elevation3D8", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "M", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 609, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID261_12vBattStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "VCFRONT_12VBatteryStatusChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "VCFRONT_12VBatteryStatusCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_LVBatteryDisconnected", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_LVBatterySupported", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_voltageFloorReachedCount", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_reverseBatteryFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "VCFRONT_LVLoadRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "VCFRONT_good12VforUpdate", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_firstChargePOR", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_chargeNeeded", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_firstChargeOTA", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_PCSMia", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "2.8421709430404E-14", + "min": "-409.5", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_silentWakeIBSCurrent", + "offset": "-204.7", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "mA", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "12V Battery Voltage", + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "22.2918696", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "v12vBattVoltage261", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "9.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "19.23", + "min": "9", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_12VBatteryTargetVoltage", + "offset": "9", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "12V Battery Current", + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "163.835", + "min": "-163.84", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "v12vBattCurrent261", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "163.835", + "min": "-163.84", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_IBSCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "12V Battery Temp", + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "327.67", + "min": "-327.68", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "v12vBattTemp261", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_shortedCellFaultCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_isVehicleSupported", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.125", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31.875", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_targetCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_voltageDropCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_batterySMState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": { + "0": "INIT", + "1": "CHARGE", + "2": "DISCHARGE", + "3": "STANDBY", + "4": "RESISTANCE_ESTIMATION", + "5": "OTA_STANDBY", + "6": "DISCONNECTED_BATTERY_TEST", + "7": "SHORTED_CELL_TEST", + "8": "FAULT", + "9": "RECOVERY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_12VOverchargeCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_batterySupportRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 3, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": "12V Battery Capacity", + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "40.955", + "min": "-40.96", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "v12vBattAH261", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "unit": "Ah", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_voltageProfile", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": { + "0": "CHARGE", + "1": "FLOAT", + "2": "REDUCED_FLOAT", + "3": "ALWAYS_CLOSED_CONTACTORS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "VCFRONT_12VBatteryStatusIndex", + "name": "VCFRONT_IBSFault", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "VCFRONT_12VBatteryStatusIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "10", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "Cyclic", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 10, + "header_id": null, + "id": 297, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID129SteeringAngle", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "SteeringSensorC129", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "SteeringSensorB129", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "SteeringSensorA129", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": "Steering Speed", + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4095.5", + "min": "-4096", + "mux_value": null, + "name": "SteeringSpeed129", + "offset": "-4096", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "D/S", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": "Steering Angle", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "819.1", + "min": "-819.2", + "mux_value": null, + "name": "SteeringAngle129", + "offset": "-819.2", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "Deg", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 612, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID264ChargeLineStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Charger Line Power", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.5", + "min": "0", + "mux_value": null, + "name": "ChargeLinePower264", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "Charge Connector Current Limit", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102.3", + "min": "0", + "mux_value": null, + "name": "ChargeLineCurrentLimit264", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 14, + "comment": "Charger Line Voltage", + "comments": {}, + "factor": "0.0333", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "545.554", + "min": "0", + "mux_value": null, + "name": "ChargeLineVoltage264", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Charger Line Current", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "51.1", + "min": "0", + "mux_value": null, + "name": "ChargeLineCurrent264", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "unit": "A", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 548, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID224PCSDCDCstatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDC12VSupportRtyCnt224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDC12VSupportStatus224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCDischargeRtyCnt224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCFaulted224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCHvBusDischargeStatus224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 4, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCInitialPrechargeSubState224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "DCDC Output Current", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "409.5", + "min": "0", + "mux_value": null, + "name": "DCDCoutputCurrent224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCstate224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 6, + "values": { + "0": "Idle", + "1": "12vChg", + "2": "PrechargeStart", + "3": "Precharge", + "4": "HVactive", + "5": "Shutdown", + "6": "Error" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "409.5", + "min": "0", + "mux_value": null, + "name": "DCDCoutputCurrentMax224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCOutputIsLimited224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCPrechargeRestartCnt224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCPrechargeRtyCnt224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCPrechargeStatus224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCPwmEnableLine224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCSubState224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "PWR_UP_INIT", + "1": "STANDBY", + "2": "12V_SUPPORT_ACTIVE", + "3": "DIS_HVBUS", + "4": "PCHG_FAST_DIS_HVBUS", + "5": "PCHG_SLOW_DIS_HVBUS", + "6": "PCHG_DWELL_CHARGE", + "7": "PCHG_DWELL_WAIT", + "8": "PCHG_DI_RECOVERY_WAIT", + "9": "PCHG_ACTIVE", + "10": "PCHG_FLT_FAST_DIS_HVBUS", + "11": "SHUTDOWN", + "12": "12V_SUPPORT_FAULTED", + "13": "DIS_HVBUS_FAULTED", + "14": "PCHG_FAULTED", + "15": "CLEAR_FAULTS", + "16": "FAULTED", + "17": "NUM" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DCDCSupportingFixedLvTarget224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "PCS_ecuLogUploadRequest224", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 551, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID227CMP_state", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_HVOverVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_HVUnderVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_VCFRONTCANTimeout", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_currentSensorCal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_failedStart", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "200", + "min": "-40", + "mux_value": null, + "name": "CMP_inverterTemperature", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_motorVoltageSat", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_overCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_overTemperature", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_ready", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_repeatOverCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_shortCircuit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "CMP_speedDuty", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65534", + "min": "0", + "mux_value": null, + "name": "CMP_speedRPM", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "RPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "CMP_state", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "CMP_STATE_NONE", + "1": "CMP_STATE_NORMAL", + "2": "CMP_STATE_WAIT", + "3": "CMP_STATE_FAULT", + "4": "CMP_STATE_SOFT_START", + "5": "CMP_STATE_SOFT_SHUTDOWN", + "15": "CMP_STATE_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMP_underTemperature", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "10", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "Cyclic", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 10, + "header_id": null, + "id": 280, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID118DriveSystemStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Pedal Position", + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "DI_accelPedalPos", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "%", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": "Brake Pedal", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DI_brakePedalState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 19, + "values": { + "0": "OFF", + "1": "ON", + "2": "INVALID" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DI_driveBlocked", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "DRIVE_BLOCKED_NONE", + "1": "DRIVE_BLOCKED_FRUNK", + "2": "DRIVE_BLOCKED_PROX" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DI_epbRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "values": { + "0": "DI_EPBREQUEST_NO_REQUEST", + "1": "DI_EPBREQUEST_PARK", + "2": "DI_EPBREQUEST_UNPARK" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": "Gear", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7", + "min": "0", + "mux_value": null, + "name": "DI_gear", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": { + "0": "DI_GEAR_INVALID", + "1": "DI_GEAR_P", + "2": "DI_GEAR_R", + "3": "DI_GEAR_N", + "4": "DI_GEAR_D", + "7": "DI_GEAR_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "DI_immobilizerState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "0": "DI_IMM_STATE_INIT_SNA", + "1": "DI_IMM_STATE_REQUEST", + "2": "DI_IMM_STATE_AUTHENTICATING", + "3": "DI_IMM_STATE_DISARMED", + "4": "DI_IMM_STATE_IDLE", + "5": "DI_IMM_STATE_RESET", + "6": "DI_IMM_STATE_FAULT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_keepDrivePowerStateRequest", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": { + "0": "NO_REQUEST", + "1": "KEEP_ALIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_proximity", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": "Regen Brake", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_regenLight", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "mux_value": null, + "name": "DI_systemState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "DI_SYS_UNAVAILABLE", + "1": "DI_SYS_IDLE", + "2": "DI_SYS_STANDBY", + "3": "DI_SYS_FAULT", + "4": "DI_SYS_ABORT", + "5": "DI_SYS_ENABLE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "DI_systemStatusChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DI_systemStatusCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "mux_value": null, + "name": "DI_trackModeState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "TRACK_MODE_UNAVAILABLE", + "1": "TRACK_MODE_AVAILABLE", + "2": "TRACK_MODE_ON" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": "Traction Control Mode", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "mux_value": null, + "name": "DI_tractionControlMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "Standard", + "1": "Slip Start", + "2": "Dev1", + "3": "Dev2", + "4": "Rolls Mode", + "5": "Dyno Mode", + "6": "Offroad Assist" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 850, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID352BMS_energyStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Battery Buffer kWh", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "25.4", + "min": "0", + "mux_value": null, + "name": "BMS_energyBuffer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 55, + "unit": "KWh", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Charge Remaining kWh", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "204.6", + "min": "0", + "mux_value": null, + "name": "BMS_energyToChargeComplete", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "KWh", + "values": { + "2047": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "204.6", + "min": "0", + "mux_value": null, + "name": "BMS_expectedEnergyRemaining", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "unit": "KWh", + "values": { + "2047": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": "Charge Complete", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_fullChargeComplete", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "204.6", + "min": "0", + "mux_value": null, + "name": "BMS_idealEnergyRemaining", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "unit": "KWh", + "values": { + "2047": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Batt Remaining kWh", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "204.6", + "min": "0", + "mux_value": null, + "name": "BMS_nominalEnergyRemaining", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "unit": "KWh", + "values": { + "2047": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Batt Full kWh", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "204.6", + "min": "0", + "mux_value": null, + "name": "BMS_nominalFullPackEnergy", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "KWh", + "values": { + "2047": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 893, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 7, + "mux_names": {}, + "name": "ID37DCP_thermalStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.803922", + "initial_value": "-0.333304", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "149.99", + "min": "-55", + "mux_value": null, + "name": "CP_acPinTemperature", + "offset": "-55", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "-10", + "mux_value": null, + "name": "CP_dTdt_dcPinActual", + "offset": "-10", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.005", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "-10", + "mux_value": null, + "name": "CP_dTdt_dcPinExpected", + "offset": "-10", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.803922", + "initial_value": "-0.333304", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "149.99", + "min": "-55", + "mux_value": null, + "name": "CP_dcPinTemperature", + "offset": "-55", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.803922", + "initial_value": "-0.333304", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "149.99", + "min": "-55", + "mux_value": null, + "name": "CP_dcPinTemperatureModeled", + "offset": "-55", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 914, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID392BMS_packConfig", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "BMS_packConfigMultiplexer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "0": "Mux0", + "1": "Mux1" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_packConfigMultiplexer", + "name": "BMS_moduleType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "UNKNOWN", + "1": "E3_NCT", + "2": "E1_NCT", + "3": "E3_CT", + "4": "E1_CT", + "5": "E1_CP" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "342", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "469", + "min": "342", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_packConfigMultiplexer", + "name": "BMS_packMass", + "offset": "300", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kg", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "31", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BMS_packConfigMultiplexer", + "name": "BMS_reservedConfig_0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "BMS_CONFIG_0", + "1": "BMS_CONFIG_1", + "2": "BMS_CONFIG_2", + "3": "BMS_CONFIG_3", + "4": "BMS_CONFIG_4", + "5": "BMS_CONFIG_5", + "6": "BMS_CONFIG_6", + "7": "BMS_CONFIG_7", + "8": "BMS_CONFIG_8", + "9": "BMS_CONFIG_9", + "10": "BMS_CONFIG_10", + "11": "BMS_CONFIG_11", + "12": "BMS_CONFIG_12", + "13": "BMS_CONFIG_13", + "14": "BMS_CONFIG_14", + "15": "BMS_CONFIG_15", + "16": "BMS_CONFIG_16", + "17": "BMS_CONFIG_17", + "18": "BMS_CONFIG_18", + "19": "BMS_CONFIG_19", + "20": "BMS_CONFIG_20", + "21": "BMS_CONFIG_21", + "22": "BMS_CONFIG_22", + "23": "BMS_CONFIG_23", + "24": "BMS_CONFIG_24", + "25": "BMS_CONFIG_25", + "26": "BMS_CONFIG_26", + "27": "BMS_CONFIG_27", + "28": "BMS_CONFIG_28", + "29": "BMS_CONFIG_29", + "30": "BMS_CONFIG_30", + "31": "BMS_CONFIG_31" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_packConfigMultiplexer", + "name": "BMS_platformMaxBusVoltage", + "offset": "375", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "V", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 594, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID252BMS_powerAvailable", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "BMS Max HVAC Power", + "comments": {}, + "factor": "0.02", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.46", + "min": "0", + "mux_value": null, + "name": "BMS_hvacPowerBudget", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "BMS Max Discharge Power", + "comments": {}, + "factor": "0.013", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "655.35", + "min": "0", + "mux_value": null, + "name": "BMS_maxDischargePower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "BMS Max Regen Power", + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "655.35", + "min": "0", + "mux_value": null, + "name": "BMS_maxRegenPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "BMS Max Waste Heat Power", + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10.23", + "min": "0", + "mux_value": null, + "name": "BMS_maxStationaryHeatPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_notEnoughPowerForHeatPump", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMS_powerLimitsState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "POWER_NOT_CALCULATED_FOR_DRIVE", + "1": "POWER_CALCULATED_FOR_DRIVE" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 786, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID312BMSthermal", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "Battery Dissipation", + "comments": {}, + "factor": "0.02", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "BMSdissipation312", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "0.3", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "30", + "min": "0", + "mux_value": null, + "name": "BMSflowRequest312", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "LPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Battery Cool Target", + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "-25", + "mux_value": null, + "name": "BMSinletActiveCoolTarget312", + "offset": "-25", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Battery Heat Target", + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "-25", + "mux_value": null, + "name": "BMSinletActiveHeatTarget312", + "offset": "-25", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "-25", + "mux_value": null, + "name": "BMSinletPassiveTarget312", + "offset": "-25", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMSnoFlowRequest312", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "BMSpcsNoFlowRequest312", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Max Battery Temp", + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "-25", + "mux_value": null, + "name": "BMSmaxPackTemperature", + "offset": "-25", + "receivers": [ + "Receiver" + ], + "start_bit": 53, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Min Battery Temp", + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "-25", + "mux_value": null, + "name": "BMSminPackTemperature", + "offset": "-25", + "receivers": [ + "Receiver" + ], + "start_bit": 44, + "unit": "C", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 658, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID292BMS_SOC", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "HV Battery Original Energy", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102.3", + "min": "0", + "mux_value": null, + "name": "BattBeginningOfLifeEnergy292", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kWh", + "values": { + "1023": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "BMS Max SOC", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102.3", + "min": "0", + "mux_value": null, + "name": "SOCmax292", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "BMS Ave SOC", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102.3", + "min": "0", + "mux_value": null, + "name": "SOCave292", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102.3", + "min": "0", + "mux_value": null, + "name": "SOCUI292", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "BMS Min SOC", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102.3", + "min": "0", + "mux_value": null, + "name": "SOCmin292", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "BMS_battTempPct", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 50, + "unit": "%", + "values": { + "255": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "20", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 20, + "header_id": null, + "id": 599, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID257DIspeed", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "DI_speedChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DI_speedCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "UI Speed", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "510", + "min": "0", + "mux_value": null, + "name": "DI_uiSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "511": "DI_UI_SPEED_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "510", + "min": "0", + "mux_value": null, + "name": "DI_uiSpeedHighSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "511": "DI_UI_HIGH_SPEED_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": "Speed Units, 0-mph 1-kph", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DI_uiSpeedUnits", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": { + "0": "DI_SPEED_MPH", + "1": "DI_SPEED_KPH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "Vehicle Speed, .05 -25 for mph", + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "285", + "min": "-40", + "mux_value": null, + "name": "DI_vehicleSpeed", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "unit": "kph", + "values": { + "4095": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 680, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID2A8CMPD_state", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "50", + "min": "0", + "mux_value": null, + "name": "CMPD_inputHVCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20000", + "min": "0", + "mux_value": null, + "name": "CMPD_inputHVPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "unit": "W", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1000", + "min": "0", + "mux_value": null, + "name": "CMPD_inputHVVoltage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 41, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMPD_powerLimitActive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 55, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMPD_powerLimitTooLowToStart", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 62, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "CMPD_ready", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "CMPD_speedDuty", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "10", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20000", + "min": "0", + "mux_value": null, + "name": "CMPD_speedRPM", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "RPM", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "CMPD_state", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "CMPD_STATE_INIT", + "1": "CMPD_STATE_RUNNING", + "2": "CMPD_STATE_STANDBY", + "3": "CMPD_STATE_FAULT", + "4": "CMPD_STATE_IDLE", + "15": "CMPD_STATE_SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "CMPD_wasteHeatState", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": { + "0": "CMPD_WASTE_HEAT_STATE_OFF", + "1": "CMPD_WASTE_HEAT_STATE_ACTIVE", + "2": "CMPD_WASTE_HEAT_STATE_NOT_AVAILABLE", + "3": "CMPD_WASTE_HEAT_STATE_UNUSED" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "205", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 205, + "header_id": null, + "id": 1029, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID405VIN", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": "VIN3, last 7 of VIN (ASCII)", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "mux405", + "name": "VINB405", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": "VIN2, part two of VIN (ASCII)", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "mux405", + "name": "VINC405", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": "VIN1, four zeros then first 3 characters of VIN", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "mux405", + "name": "VINA405", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "mux405", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1310, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID51EFC_info", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "FC_infoIndex", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoAppGitHashBytes", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoApplicationCRC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoAssemblyID", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoBootCRC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 56, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "7.20576E+16", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoBootGitHashBytes", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 24, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "16777200", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoBootSvnRev", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoBootUdsProtoVersion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoBranchOrigin", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoBuildConfigID", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoBuildType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoCPLDVersionMajor", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoCPLDVersionMinor", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoComponentID", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoHardwareID", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoHardwareRevision", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoMajorVersion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoMaturity", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoPcbaID", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoPlatformType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoSubUsageID", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoUsageID", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 22, + "mux_value": 22, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_infoVariantCRC", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar01", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar02", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar03", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar04", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar05", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar06", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar07", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar08", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar09", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar10", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar11", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar12", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar13", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar14", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 27, + "mux_value": 27, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar15", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 27, + "mux_value": 27, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar16", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 27, + "mux_value": 27, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar17", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 27, + "mux_value": 27, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar18", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 27, + "mux_value": 27, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar19", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 27, + "mux_value": 27, + "muxer_for_signal": "FC_infoIndex", + "name": "FC_partNumChar20", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 886, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID376FrontInverterTemps", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "TempInvPCB376", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "mux_value": null, + "name": "TempPctStator376", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "mux_value": null, + "name": "TempPctInverter376", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "TempInvCapbank376", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Front Stator Temp", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "TempStator376", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "TempInvHeatsink376", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "TempInverter376", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DIF_inverterTQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "INVERTERT_INIT", + "1": "INVERTERT_IRRATIONAL", + "2": "INVERTERT_RATIONAL", + "3": "INVERTERT_UNKNOWN" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 789, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID315RearInverterTemps", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "RearTempInvPCB315", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "mux_value": null, + "name": "RearTempPctStator315", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "102", + "min": "0", + "mux_value": null, + "name": "RearTempPctInverter315", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "%", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "RearTempInvCapbank315", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Rear Stator Temp", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "RearTempStator315", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "RearTempInvHeatsink315", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "RearTempInverter315", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "mux_value": null, + "name": "DIR_inverterTQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "INVERTERT_INIT", + "1": "INVERTERT_IRRATIONAL", + "2": "INVERTERT_RATIONAL", + "3": "INVERTERT_UNKNOWN" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "10", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "Cyclic", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 10, + "header_id": null, + "id": 340, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID154RearTorqueOld", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "Rear Torque Old, Axle torque 2 with 9/1 gearing", + "comments": {}, + "factor": "0.25", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "511.75", + "min": "-512", + "mux_value": null, + "name": "RAWTorqueRear154", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "NM", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 950, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 4, + "mux_names": {}, + "name": "ID3B6odometer", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": "Odometer", + "comments": {}, + "factor": "0.001", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970", + "min": "0", + "mux_value": null, + "name": "Odometer3B6", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "KM", + "values": { + "4294967": "SNA" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "10", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 10, + "header_id": null, + "id": 614, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID266RearInverterPower", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "RearHeatPowerMax266", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Rear Power Limit, approx offset Orig scale 1", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "400", + "min": "0", + "mux_value": null, + "name": "RearPowerLimit266", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Rear Waste Heat Power", + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "RearHeatPower266", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "RearHeatPowerOptimal266", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "RearExcessHeatCmd", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Rear Motor Power", + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "500", + "min": "-500", + "mux_value": null, + "name": "RearPower266", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 741, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID2E5FrontInverterPower", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "FrontHeatPowerOptimal2E5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Front Motor PowerFront Motor Power", + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "511.5", + "min": "-512", + "mux_value": null, + "name": "FrontPower2E5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "FrontHeatPowerMax2E5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": "Front Power Limit, approx offset Orig scale 1Front Power Limit, approx offset Orig scale 1", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "400", + "min": "0", + "mux_value": null, + "name": "FrontPowerLimit2E5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Front Waste Heat PowerFront Waste Heat Power", + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "FrontHeatPower2E5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "FrontExcessHeatCmd", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kW", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 742, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID2E6PlaidFrontPower", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "PFrontHeatPowerOptimal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "511.5", + "min": "-512", + "mux_value": null, + "name": "PFrontPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "PFrontHeatPowerMax", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "400", + "min": "0", + "mux_value": null, + "name": "PFrontPowerLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "PFrontHeatPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "PFrontExcessHeatCmd", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kW", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 617, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID269LeftRearPower", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "LeftRearHeatPowerOptimal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "511.5", + "min": "-512", + "mux_value": null, + "name": "LeftRearPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "LeftRearPowerMax", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "400", + "min": "0", + "mux_value": null, + "name": "LeftRearPowerLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "LeftRearHeatPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "LeftRearExcessHeatCmd", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kW", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 636, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID27CRightRearPower", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "RightRearHeatPowerOptimal", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "511.5", + "min": "-512", + "mux_value": null, + "name": "RightRearPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "RightRearHeatPowerMax", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 9, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "400", + "min": "0", + "mux_value": null, + "name": "RightRearPowerLimit", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20.4", + "min": "0", + "mux_value": null, + "name": "RightRearHeatPower", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "kW", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.08", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "RightRearExcessHeatCmd", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kW", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "10", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "Cyclic", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 10, + "header_id": null, + "id": 264, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID108DIR_torque", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "Rear Axle Speed", + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "2750", + "min": "-2750", + "mux_value": null, + "name": "DIR_axleSpeed", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "RPM", + "values": { + "32768": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.4", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "100", + "min": "0", + "mux_value": null, + "name": "DIR_slavePedalPos", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "%", + "values": { + "255": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Rear Axle Torque", + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "7500", + "min": "-7500", + "mux_value": null, + "name": "DIR_torqueActual", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "unit": "Nm", + "values": { + "4096": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "mux_value": null, + "name": "DIR_torqueChecksum", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 13, + "comment": "Rear Axle Torque Request", + "comments": {}, + "factor": "2", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "7500", + "min": "-7500", + "mux_value": null, + "name": "DIR_torqueCommand", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "unit": "Nm", + "values": { + "4096": "SNA" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "15", + "min": "0", + "mux_value": null, + "name": "DIR_torqueCounter", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DIR_axleSpeedQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 25, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "10", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "Cyclic", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 10, + "header_id": null, + "id": 306, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID132HVBattAmpVolt", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "Charge Time Remaining", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4095", + "min": "0", + "mux_value": null, + "name": "ChargeHoursRemaining132", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "Min", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "HV Battery Voltage", + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "655.35", + "min": "0", + "mux_value": null, + "name": "BattVoltage132", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "HV Raw Current, old offset 1000", + "comments": {}, + "factor": "-0.05", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "2138.4", + "min": "-1138.35", + "mux_value": null, + "name": "RawBattCurrent132", + "offset": "822", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": "HV Battery Current", + "comments": {}, + "factor": "-0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.7", + "mux_value": null, + "name": "SmoothBattCurrent132", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "A", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "Cyclic", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 294, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 7, + "mux_names": {}, + "name": "ID126RearHVStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "Rear Motor Voltage", + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "mux_value": null, + "name": "RearHighVoltage126", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Rear Motor Current", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2047", + "min": "0", + "mux_value": null, + "name": "RearMotorCurrent126", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "DIR_switchingFrequency", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kHz", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "mux_value": null, + "name": "DIR_dcCableCurrentEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "mux_value": null, + "name": "DIR_vBatQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "NOT_QUALIFIED", + "1": "QUALIFIED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DIR_targetFluxMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 421, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 7, + "mux_names": {}, + "name": "ID1A5FrontHVStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": "Front Motor Voltage", + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "500", + "min": "0", + "mux_value": null, + "name": "FrontHighVoltage1A5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": "Front Motor Current", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2047", + "min": "0", + "mux_value": null, + "name": "FrontMotorCurrent1A5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "mux_value": null, + "name": "DIF_switchingFrequency", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kHz", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "3276.7", + "min": "-3276.8", + "mux_value": null, + "name": "DIF_dcCableCurrentEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DIF_vBatQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "NOT_QUALIFIED", + "1": "QUALIFIED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "DIF_targetFluxMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 295, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 7, + "mux_names": {}, + "name": "ID127LeftRearHVStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "LeftRear_targetFluxMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "LeftRear_switchingFrequency", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kHz", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "mux_value": null, + "name": "LeftRear_dcCableCurrentEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "LeftRear_motorCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "LeftRear_vBatQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "LeftRear_vBat", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "V", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 298, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 7, + "mux_names": {}, + "name": "ID12ARightRearHVStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "RightRear_targetFluxMode", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "0.01", + "initial_value": "0.00", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "RightRear_switchingFrequency", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "kHz", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.1", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": true, + "max": "0", + "min": "0", + "mux_value": null, + "name": "RightRear_dcCableCurrentEst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 11, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "RightRear_motorCurrent", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "unit": "A", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "RightRear_vBatQF", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "RightRear_vBat", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "V", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 1000, + "header_id": null, + "id": 799, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID31FTPMSsensors", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.375", + "min": "0", + "mux_value": null, + "name": "TPMSFLpressure31F", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.375", + "min": "0", + "mux_value": null, + "name": "TPMSFRpressure31F", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.375", + "min": "0", + "mux_value": null, + "name": "TPMSRLpressure31F", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.025", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6.375", + "min": "0", + "mux_value": null, + "name": "TPMSRRpressure31F", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "bar", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "TPMSFLtemp31F", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "TPMSFRtemp31F", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "TPMSRLtemp31F", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "215", + "min": "-40", + "mux_value": null, + "name": "TPMSRRtemp31F", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "unit": "C", + "values": {} + } + ], + "transmitters": [ + "ChassisBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "1000", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "Brake Temps Estimated", + "cycle_time": 1000, + "header_id": null, + "id": 1022, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 5, + "mux_names": {}, + "name": "ID3FEbrakeTemps", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "BrakeTempFL3FE", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "BrakeTempFR3FE", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "BrakeTempRL3FE", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 10, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "BrakeTempRR3FE", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "unit": "C", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 552, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID228EPBrightStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBR12VFilt228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRcsmFaultReason228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRdisconnected228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRCDPQualified228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBResmCaliperRequest228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "1": "idle", + "2": "engaging", + "3": "disengaging" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBResmOperationTrigger228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "1": "ParkEngaged", + "6": "Released", + "22": "SuperPark" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRinternalCDPRequest228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRinternalStatusChecksum228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRinternalStatusCounter228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRlocalServiceModeActive228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRlockoutUnlockCount228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRsummonFaultReason228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRsummonState228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRunitFaultStatus228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBRunitStatus228", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "1": "DriveReleased", + "3": "ParkEngaged", + "8": "Engaging", + "10": "Disengaging" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 648, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID288EPBleftStatus", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": null, + "comments": {}, + "factor": "0.00544368", + "initial_value": "0E-8", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBL12VFilt288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLcsmFaultReason288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 21, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLdisconnected288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLCDPQualified288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 49, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLesmCaliperRequest288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "1": "idle", + "2": "engaging", + "3": "disengaging" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLesmOperationTrigger288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "1": "ParkEngaged", + "6": "Released", + "22": "SuperPark" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLinternalCDPRequest288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLinternalStatusChecksum288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLinternalStatusCounter288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLlocalServiceModeActive288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLlockoutUnlockCount288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLsummonFaultReason288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLsummonState288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 7, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLunitFaultStatus288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 5, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "EPBLunitStatus288", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": { + "1": "DriveReleased", + "3": "ParkEngaged", + "8": "Engaging", + "10": "Disengaging" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1834, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID72ABMS_serialNumber", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte01", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte02", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte03", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte04", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte05", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte06", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte07", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte08", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte09", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte10", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte11", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte12", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte13", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BMS_serialNumberMultiplexer", + "name": "BMS_packSerialNumberByte14", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "BMS_serialNumberMultiplexer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "100", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 100, + "header_id": null, + "id": 2047, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID7FFcarConfig", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "255", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "GTW_carConfigMultiplexer", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_activeHighBeam", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 34, + "values": { + "0": "NOT_ACTIVE", + "1": "ACTIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_airSuspension", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 22, + "values": { + "0": "NONE", + "1": "TESLA_STANDARD", + "2": "TESLA_ADAPTIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_airbagCutoffSwitch", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 35, + "values": { + "0": "CUTOFF_SWITCH_DISABLED", + "1": "CUTOFF_SWITCH_ENABLED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_audioType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 30, + "values": { + "0": "BASE", + "1": "PREMIUM", + "2": "BASE_WITH_PREMIUM200" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_autopilot", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "NONE", + "1": "HIGHWAY", + "2": "ENHANCED", + "3": "SELF_DRIVING", + "4": "BASIC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_autopilotCameraType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "RCCB_CAMERAS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_auxParkLamps", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 26, + "values": { + "0": "NA_BASE", + "1": "NA_PREMIUM", + "2": "EU", + "3": "NONE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_bPillarNFCParam", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "MODEL_3", + "1": "MODEL_Y" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 32, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4294970000", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_birthday", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_brakeHWType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 59, + "values": { + "0": "BREMBO_P42_MANDO_43MOC", + "1": "BREMBO_LARGE_P42_BREMBO_44MOC", + "2": "BREMBO_LARGE_P42_MANDO_43MOC", + "3": "BREMBO_LARGE_P42_BREMBO_LARGE_44MOC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_brakeLineSwitchType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": { + "0": "DI_VC_SHARED", + "1": "VC_ONLY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_cabinPTCHeaterType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 31, + "values": { + "0": "BORGWARNER", + "1": "NONE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": "Model", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_chassisType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "MODEL_S_CHASSIS", + "1": "MODEL_X_CHASSIS", + "2": "MODEL_3_CHASSIS", + "3": "MODEL_Y_CHASSIS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_compressorType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 46, + "values": { + "0": "HANON_33CC", + "1": "DENSO_41CC_8K", + "2": "DENSO_41CC_11K" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_connectivityPackage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 27, + "values": { + "0": "BASE", + "1": "PREMIUM" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_coolantPumpType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": { + "0": "DUAL", + "1": "SINGLE_PUMP_BATT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "65535", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_country", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "3", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "3", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_dasHw", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "3": "PARKER_PASCAL_2_5", + "4": "TESLA_AP3" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_deliveryStatus", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "NOT_DELIVERED", + "1": "DELIVERED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_drivetrainType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "RWD", + "1": "AWD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_eBuckConfig", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "NONE", + "1": "DEV_BUCK" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_eCallEnabled", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "DISABLED", + "1": "ENABLED_OHC_SOS", + "2": "ENABLED_UI_SOS" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "5", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_efficiencyPackage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "DEFAULT", + "1": "M3_SR_PLUS_2020", + "2": "M3_LR_2020", + "3": "M3_LR_PERFORMANCE_2020" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_epasType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": { + "0": "MANDO_VGR69_GEN3" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_espValveType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "UNKNOWN", + "1": "VALVE_TYPE_1", + "2": "VALVE_TYPE_2" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "6", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_exteriorColor", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "RED_MULTICOAT", + "1": "SOLID_BLACK", + "2": "SILVER_METALLIC", + "3": "MIDNIGHT_SILVER", + "5": "DEEP_BLUE", + "6": "PEARL_WHITE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_frontFogLamps", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 20, + "values": { + "0": "NOT_INSTALLED", + "1": "INSTALLED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_frontSeatHeaters", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 9, + "values": { + "0": "NONE", + "1": "KONGSBERG_LOW_POWER" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_frontSeatReclinerHardware", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": { + "0": "STANDARD_RANGE", + "1": "RIGHT_SEAT_REDUCED_RANGE", + "2": "LEFT_SEAT_REDUCED_RANGE", + "3": "LEFT_RIGHT_SEAT_REDUCED_RANGE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "4", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_frontSeatType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 60, + "values": { + "0": "BASE_TESLA", + "1": "PREMIUM_TESLA", + "2": "PREMIUM_L_YANFENG_R_TESLA", + "3": "PREMIUM_L_TESLA_R_YANFENG", + "4": "PREMIUM_YANFENG" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_headlamps", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "BASE", + "1": "PREMIUM" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_headlightLevelerType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 47, + "values": { + "0": "NONE", + "1": "GEN1" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_homelinkType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 13, + "values": { + "0": "NONE", + "1": "HOMELINK_V_OPT_2" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_hvacPanelVaneType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 29, + "values": { + "0": "PARALLEL_V1", + "1": "CONVERGENT_V1" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_immersiveAudio", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 56, + "values": { + "0": "DISABLED", + "1": "BASE", + "2": "PREMIUM" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_interiorLighting", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 57, + "values": { + "0": "BASE", + "1": "PREMIUM", + "2": "PREMIUM_NO_POCKET_LIGHT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_intrusionSensorType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 36, + "values": { + "0": "NOT_INSTALLED", + "1": "VODAFONE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_lumbarECUType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 23, + "values": { + "0": "NONE", + "1": "ALFMEIER" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "10", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_mapRegion", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": { + "0": "US", + "1": "EU", + "2": "NONE", + "3": "CN", + "4": "AU", + "5": "JP", + "6": "TW", + "7": "KR", + "8": "ME", + "9": "HK", + "10": "MO" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_memoryMirrors", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 17, + "values": { + "0": "NOT_INSTALLED", + "1": "SMR" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "2", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "2", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_numberHVILNodes", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 51, + "values": { + "0": "HVIL_NODES_0", + "1": "HVIL_NODES_1", + "2": "HVIL_NODES_2", + "3": "HVIL_NODES_3", + "4": "HVIL_NODES_4", + "5": "HVIL_NODES_5" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": "Battery Pack Size", + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_packEnergy", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "PACK_50_KWH", + "1": "PACK_74_KWH", + "2": "PACK_62_KWH", + "3": "PACK_100_KWH", + "4": "PACK_75_KWH" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_passengerAirbagType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 43, + "values": { + "0": "FULL_SUPPRESSION", + "1": "SAFETY_VENT", + "2": "EUROW" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_passengerOccupancySensorType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "values": { + "0": "OCS", + "1": "RESISTIVE_PAD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_pedestrianWarningSound", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 54, + "values": { + "0": "NONE", + "1": "SPEAKER" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "3", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_performancePackage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "BASE", + "1": "PERFORMANCE", + "2": "LUDICROUS", + "3": "BASE_PLUS", + "4": "BASE_PLUS_AWD" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_plcSupportType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 28, + "values": { + "0": "NONE", + "1": "ONBOARD_ADAPTER", + "2": "NATIVE_CHARGE_PORT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_powerSteeringColumn", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 18, + "values": { + "0": "NOT_INSTALLED", + "1": "TK" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_radarHeaterType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 55, + "values": { + "0": "NONE", + "1": "BECKER_THIN_3M" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_rearFogLamps", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 39, + "values": { + "0": "NOT_INSTALLED", + "1": "INSTALLED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_rearGlassType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 38, + "values": { + "0": "NX", + "1": "TSA5_NOPET" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_rearLightType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 12, + "values": { + "0": "NA", + "1": "EU_CN", + "2": "GLOBAL" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_rearSeatHeaters", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 10, + "values": { + "0": "NONE", + "1": "KONGSBERG_LOW_POWER" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_refrigerantType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": { + "0": "Default", + "1": "R134A", + "2": "R1234YF" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "21", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "163", + "min": "21", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_restraintsHardwareType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "21": "NA_M3", + "22": "EUROW_ECALL_M3", + "23": "EUROW_NO_ECALL_M3", + "31": "NA_MY_OLD", + "32": "NA_MY", + "33": "EUROW_ECALL_MY", + "34": "EUROW_NO_ECALL_MY" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_rightHandDrive", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "LEFT", + "1": "RIGHT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_roofGlassType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 61, + "values": { + "0": "TSA3_PET", + "1": "TSA5_NOPET" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "1", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "1", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_roofType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": { + "0": "METAL", + "1": "FIXED_GLASS", + "2": "PANORAMIC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 3, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_softRange", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 42, + "values": { + "0": "STANDARD", + "1": "RANGE_220_MILES", + "2": "RANGE_93_MILES" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_spoilerType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 37, + "values": { + "0": "NOT_INSTALLED", + "1": "PASSIVE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_steeringColumnMotorType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 52, + "values": { + "0": "BOSCH", + "1": "JE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_steeringColumnUJointType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 55, + "values": { + "0": "B_SAMPLE_PHASING", + "1": "C_SAMPLE_PHASING" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "2", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_superchargingAccess", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 45, + "values": { + "0": "NOT_ALLOWED", + "1": "ALLOWED", + "2": "PAY_AS_YOU_GO" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 5, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "21", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_tireType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": { + "0": "UNKNOWN", + "1": "MICHELIN_ALL_SEASON_18", + "2": "MICHELIN_SUMMER_18", + "3": "HANKOOK_SUMMER_19", + "4": "CONTI_ALL_SEASON_19", + "5": "MICHELIN_SUMMER_20", + "17": "GOODYEAR_ALL_SEASON_20", + "18": "PIRELLI_SUMMER_21", + "19": "MICHELIN_ALL_SEASON_21" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_towPackage", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": { + "0": "NONE", + "1": "TESLA_REV1" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_tpmsType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 11, + "values": { + "0": "CONTI_2", + "1": "TESLA_BLE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_twelveVBatteryType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 63, + "values": { + "0": "ATLASBX_B24_FLOODED", + "1": "CLARIOS_B24_FLOODED" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_vdcType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 14, + "values": { + "0": "BOSCH_VDC", + "1": "TESLA_VDC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "20", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_wheelType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "values": { + "0": "PINWHEEL_18", + "1": "STILETTO_19", + "2": "STILETTO_20", + "3": "STILETTO_20_DARK_STAGGERED", + "4": "GEMINI_19_SQUARE", + "5": "GEMINI_19_STAGGERED", + "14": "STILETTO_20_DARK_SQUARE", + "15": "INDUCTION_20_BLACK", + "16": "UBERTURBINE_21_BLACK", + "17": "APOLLO_19_SILVER", + "18": "PINWHEEL_18_CAP_KIT", + "19": "ZEROG_20_GUNPOWDER", + "20": "APOLLO_19_SILVER_CAP_KIT" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_windshieldType", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 33, + "values": { + "0": "SEKISUI_ACOUSTIC", + "1": "EASTMAN_ACOUSTIC" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_xcpESP", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "values": { + "0": "FALSE", + "1": "TRUE" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 1, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "1", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "GTW_carConfigMultiplexer", + "name": "GTW_xcpIbst", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 15, + "values": { + "0": "FALSE", + "1": "TRUE" + } + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 818, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 6, + "mux_names": {}, + "name": "ID332BattBrickMinMax", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 2, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "BattBrickMultiplexer332", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickempMaxNum332", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 4, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickTempMinNum332", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Max Batt Brick Temp", + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickTempMax332", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": "Min Batt Brick Temp", + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickTempMin332", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 24, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickModelTMax332", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "0.5", + "initial_value": "0.0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickModelTMin332", + "offset": "-40", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "unit": "C", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "Max Batt Brick V", + "comments": {}, + "factor": "0.002", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickVoltageMax332", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 2, + "unit": "V", + "values": { + "1": "test", + "2": "qqq" + } + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 12, + "comment": "Min Batt Brick V", + "comments": {}, + "factor": "0.002", + "initial_value": "0.000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickVoltageMin332", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickVoltageMaxNum332", + "offset": "1", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 7, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "BattBrickMultiplexer332", + "name": "BattBrickVoltageMinNum332", + "offset": "1", + "receivers": [ + "Receiver" + ], + "start_bit": 40, + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + }, + { + "attributes": { + "GenMsgAutoGenDsp": "", + "GenMsgAutoGenSnd": "", + "GenMsgBackgroundColor": "", + "GenMsgCycleTime": "0", + "GenMsgDelayTime": "0", + "GenMsgForegroundColor": "", + "GenMsgSendType": "", + "GenMsgTimeoutTime": "0", + "SystemMessageLongSymbol": "", + "filterlabeling": "0", + "matchingcriteria": "0" + }, + "comment": "", + "cycle_time": 0, + "header_id": null, + "id": 1025, + "is_complex_multiplexed": false, + "is_extended_frame": false, + "is_fd": false, + "is_j1939": false, + "length": 8, + "mux_names": {}, + "name": "ID401BrickVoltages", + "pdu_name": "", + "signals": [ + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": true, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": "Multiplexor", + "mux_value": null, + "name": "MultiplexSelector", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 0, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 8, + "comment": null, + "comments": {}, + "factor": "1", + "initial_value": "0", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "mux_value": null, + "name": "StatusFlags", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 8, + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick0", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick1", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 0, + "mux_value": 0, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick2", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick3", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick4", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 1, + "mux_value": 1, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick5", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick6", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick7", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 2, + "mux_value": 2, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick8", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick9", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick10", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 3, + "mux_value": 3, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick11", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick12", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick13", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 4, + "mux_value": 4, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick14", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick15", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick16", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 5, + "mux_value": 5, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick17", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick18", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick19", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 6, + "mux_value": 6, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick20", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick21", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick22", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 7, + "mux_value": 7, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick23", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick24", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick25", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 8, + "mux_value": 8, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick26", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick27", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick28", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 9, + "mux_value": 9, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick29", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick30", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick31", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 10, + "mux_value": 10, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick32", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick34", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick33", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 11, + "mux_value": 11, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick35", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick36", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick37", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 12, + "mux_value": 12, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick38", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick39", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick40", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 13, + "mux_value": 13, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick41", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick42", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick43", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 14, + "mux_value": 14, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick44", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick45", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick46", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 15, + "mux_value": 15, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick47", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick48", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick49", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 16, + "mux_value": 16, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick50", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick51", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick52", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 17, + "mux_value": 17, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick53", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick54", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick55", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 18, + "mux_value": 18, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick56", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick57", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick58", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 19, + "mux_value": 19, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick59", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick60", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick61", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 20, + "mux_value": 20, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick62", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 21, + "mux_value": 21, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick63", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 21, + "mux_value": 21, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick64", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 21, + "mux_value": 21, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick65", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 22, + "mux_value": 22, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick66", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 22, + "mux_value": 22, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick67", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 22, + "mux_value": 22, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick68", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 23, + "mux_value": 23, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick69", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 23, + "mux_value": 23, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick70", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 23, + "mux_value": 23, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick71", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 24, + "mux_value": 24, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick72", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 24, + "mux_value": 24, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick73", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 24, + "mux_value": 24, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick74", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick75", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick76", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 25, + "mux_value": 25, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick77", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick78", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick79", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 26, + "mux_value": 26, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick80", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 27, + "mux_value": 27, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick81", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 27, + "mux_value": 27, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick82", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 27, + "mux_value": 27, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick83", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 28, + "mux_value": 28, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick84", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 28, + "mux_value": 28, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick85", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 28, + "mux_value": 28, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick86", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 29, + "mux_value": 29, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick87", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 29, + "mux_value": 29, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick88", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 29, + "mux_value": 29, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick89", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 30, + "mux_value": 30, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick90", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 30, + "mux_value": 30, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick91", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 30, + "mux_value": 30, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick92", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 31, + "mux_value": 31, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick93", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 31, + "mux_value": 31, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick94", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 31, + "mux_value": 31, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick95", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick96", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick97", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 32, + "mux_value": 32, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick98", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick99", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick100", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 33, + "mux_value": 33, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick101", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick102", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick103", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 34, + "mux_value": 34, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick104", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick105", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick106", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 35, + "mux_value": 35, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick107", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick108", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 16, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick109", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 32, + "unit": "V", + "values": {} + }, + { + "attributes": { + "GenSigAutoGenDsp": "", + "GenSigAutoGenSnd": "", + "GenSigEVName": "", + "GenSigEnvVarType": "" + }, + "bit_length": 16, + "comment": null, + "comments": {}, + "factor": "0.0001", + "initial_value": "0.0000", + "is_big_endian": false, + "is_float": false, + "is_multiplexer": false, + "is_signed": false, + "max": "0", + "min": "0", + "multiplex": 36, + "mux_value": 36, + "muxer_for_signal": "MultiplexSelector", + "name": "Brick110", + "offset": "0", + "receivers": [ + "Receiver" + ], + "start_bit": 48, + "unit": "V", + "values": {} + } + ], + "transmitters": [ + "VehicleBus" + ] + } + ], + "signal_defines": [ + { + "default": "", + "define": "ENUM \"Cyclic\",\"SendType1\",\"SendType2\",\"SendType3\",\"SendType4\",\"SendType5\",\"SendType6\",\"SendType7\",\"SendType8\",\"SendType9\",\"No\",\"Yes\",\"No\",\"Yes\",\"No\",\"Yes\"", + "name": "GenSigAutoGenSnd", + "type": "ENUM" + }, + { + "default": "", + "define": "ENUM \"Cyclic\",\"SendType1\",\"SendType2\",\"SendType3\",\"SendType4\",\"SendType5\",\"SendType6\",\"SendType7\",\"SendType8\",\"SendType9\",\"No\",\"Yes\",\"No\",\"Yes\",\"No\",\"Yes\",\"No\",\"Yes\"", + "name": "GenSigAutoGenDsp", + "type": "ENUM" + }, + { + "default": "", + "define": "ENUM \"Cyclic\",\"SendType1\",\"SendType2\",\"SendType3\",\"SendType4\",\"SendType5\",\"SendType6\",\"SendType7\",\"SendType8\",\"SendType9\",\"No\",\"Yes\",\"No\",\"Yes\",\"No\",\"Yes\",\"No\",\"Yes\",\"int\",\"float\",\"undef\"", + "name": "GenSigEnvVarType", + "type": "ENUM" + }, + { + "default": "", + "define": "STRING", + "name": "GenSigEVName", + "type": "STRING" + } + ], + "value_tables": { + "New_Value_Table_931": { + "1": "test", + "2": "qqq" + } + } +} \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/SCU.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/SCU.dbc new file mode 100644 index 0000000..b4a85c0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/SCU.dbc @@ -0,0 +1,851 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: SCU Vector_XXX +VAL_TABLE_ NtrlPushImpmntSts 1 "SCU_N_push_implemented" 0 "SCU_N_push_not_implement" ; +VAL_TABLE_ FAULT_FLAG 1 "fault_confirmed" 0 "no_fault" ; + + +BO_ 119 EOL_Check_77: 4 Vector__XXX + SG_ Eol_KL30_ADC : 23|16@0+ (1,0) [0|4095] "" Vector__XXX + SG_ Eol_KL15_ADC : 7|16@0+ (1,0) [0|4095] "" Vector__XXX + +BO_ 102 EOL_Check_66: 8 Vector__XXX + SG_ Eol_Hall_Beta : 55|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ Eol_Pkey2_ADC : 11|12@0+ (1,0) [0|4095] "" Vector__XXX + SG_ Eol_Pkey1_ADC : 7|12@0+ (1,0) [0|4095] "" Vector__XXX + +BO_ 1794 DIAG_PTEXTCAN_DTCInfo_SCU: 7 SCU + SG_ DTCInfomationSCU : 7|56@0+ (1,0) [0|7.20575940379279E+016] "" Vector_XXX + +BO_ 1913 Diag_PTEXTCAN_PhyResp_SCU: 8 SCU + SG_ Diag_PTEXTCAN_PhyResp_SCU : 7|64@0+ (1,0) [0|0] "" Vector_XXX + +BO_ 157 SCU_PTEXCAN_FrP00: 8 SCU + SG_ NtrlPushImpmntSts : 51|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ SCU_010ms_PDU00_CRC : 7|8@0+ (1,0) [0|255] "" Vector_XXX + SG_ SCU_010ms_PDU00_RC : 11|4@0+ (1,0) [0|15] "" Vector_XXX + SG_ SCU_010ms_PDU00_Reserve01 : 15|4@0+ (1,0) [0|15] "" Vector_XXX + SG_ SCU_010ms_PDU00_Reserve02 : 17|2@0+ (1,0) [0|3] "" Vector_XXX + SG_ SCU_010ms_PDU00_Reserve03 : 47|4@0+ (1,0) [0|15] "" Vector_XXX + SG_ SCU_010ms_PDU00_Reserve04 : 53|2@0+ (1,0) [0|3] "" Vector_XXX + SG_ SCU_010ms_PDU00_Reserve05 : 63|8@0+ (1,0) [0|255] "" Vector_XXX + SG_ SCUActrMvmntSts : 43|2@0+ (1,0) [0|3] "" Vector_XXX + SG_ SCUExtdShifterFlr : 23|4@0+ (1,0) [0|15] "" Vector_XXX + SG_ SCUFltLvlWrnng : 19|2@0+ (1,0) [0|3] "" Vector_XXX + SG_ SCUParkLckReq : 41|2@0+ (1,0) [0|3] "" Vector_XXX + SG_ SCUParkLckReqEPMCU : 49|2@0+ (1,0) [0|3] "" Vector_XXX + SG_ SCUParkLckReqV : 55|1@0+ (1,0) [0|1] "" Vector_XXX + SG_ SCUParkLckReqVEPMCU : 50|1@0+ (1,0) [0|1] "" Vector_XXX + SG_ SCUShftLvrPosIncnstntFlag : 54|1@0+ (1,0) [0|1] "" Vector_XXX + SG_ SCUShftLvrPosTrgt : 31|4@0+ (1,0) [0|15] "" Vector_XXX + SG_ SCUShifterLvrPos : 27|4@0+ (1,0) [0|15] "" Vector_XXX + SG_ SCUShifterOpngRmndr : 39|4@0+ (1,0) [0|15] "" Vector_XXX + SG_ SCUShifterPosInvsn : 35|4@0+ (1,0) [0|15] "" Vector_XXX + +BO_ 1573 SCU_PTEXCAN_FrS04: 8 SCU + SG_ EvtPotclSigSCU : 7|64@0+ (1,0) [0|0] "" Vector_XXX + +BO_ 216 SCU_PTEXTCAN_FrP02: 7 SCU + SG_ plmlxspi_hall1_beta_angle_final : 55|16@0+ (0.02197265625,0) [0|1439.97802734375] "" Vector__XXX + SG_ plmlxspi_hall1_alpha_angle_final : 39|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ adc_test : 7|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ DrvrReqParkBtn : 19|2@0+ (1,0) [0|3] "" Vector_XXX + SG_ SCUShifterLvrRawPos : 31|3@0+ (1,0) [0|7] "" Vector_XXX + +BO_ 789 CCP_PTEXTCAN_CCU_FrP00: 8 Vector_XXX + SG_ CCUOnbdChrgrPlugOn : 43|4@0+ (1,0) [0|15] "" SCU + +BO_ 791 CCP_PTEXTCAN_CCU_FrP01: 8 Vector_XXX + SG_ CCUOffBdChrgrPlugOn : 50|2@0+ (1,0) [0|3] "" SCU + SG_ CCUOffBdChrgrPlugOnV : 48|1@0+ (1,0) [0|1] "" SCU + +BO_ 361 CCP_PTEXTCAN_FrP00: 8 Vector_XXX + SG_ ACAvlbly : 29|1@0+ (1,0) [0|1] "" SCU + SG_ ADASAvlbly : 21|1@0+ (1,0) [0|1] "" SCU + SG_ BCMAvlbly : 31|1@0+ (1,0) [0|1] "" SCU + SG_ BMSAvlbly : 22|1@0+ (1,0) [0|1] "" SCU + SG_ CCUAvlbly : 55|1@0+ (1,0) [0|1] "" SCU + SG_ DMSAvlbly : 18|1@0+ (1,0) [0|1] "" SCU + SG_ EPBAvlbly : 0|1@0+ (1,0) [0|1] "" SCU + SG_ EPSAvlbly : 1|1@0+ (1,0) [0|1] "" SCU + SG_ ESCLAvlbly : 54|1@0+ (1,0) [0|1] "" SCU + SG_ ESSPTCAvlbly : 14|1@0+ (1,0) [0|1] "" SCU + SG_ FICMAvlbly : 25|1@0+ (1,0) [0|1] "" SCU + SG_ FLSMAvlbly : 16|1@0+ (1,0) [0|1] "" SCU + SG_ IPKAvlbly : 30|1@0+ (1,0) [0|1] "" SCU + SG_ PLCMAvlbly : 9|1@0+ (1,0) [0|1] "" SCU + SG_ RDAAvlbly : 35|1@0+ (1,0) [0|1] "" SCU + SG_ SACAvlbly : 19|1@0+ (1,0) [0|1] "" SCU + SG_ SASAvlbly : 15|1@0+ (1,0) [0|1] "" SCU + SG_ SCSAvlbly : 4|1@0+ (1,0) [0|1] "" SCU + SG_ SCUAvlbly : 3|1@0+ (1,0) [0|1] "" SCU + SG_ SDMAvlbly : 5|1@0+ (1,0) [0|1] "" SCU + SG_ TBOXAvlbly : 26|1@0+ (1,0) [0|1] "" SCU + SG_ TDMAvlbly : 32|1@0+ (1,0) [0|1] "" SCU + SG_ TPMSAvlbly : 36|1@0+ (1,0) [0|1] "" SCU + SG_ VCUAvlbly : 12|1@0+ (1,0) [0|1] "" SCU + +BO_ 497 CCP_PTEXTCAN_FrP02: 8 Vector_XXX + SG_ BPwrMdMstrstrAvlbly : 27|1@0+ (1,0) [0|1] "" SCU + SG_ SysOpnlMd : 15|3@0+ (1,0) [0|7] "" SCU + SG_ SysPwrMd : 31|2@0+ (1,0) [0|3] "" SCU + SG_ SysPwrMdV : 26|1@0+ (1,0) [0|1] "" SCU + SG_ SysVol : 23|8@0+ (0.1,3) [3|28.5] "V" SCU + SG_ SysVolMd : 29|2@0+ (1,0) [0|3] "" SCU + SG_ SysVolMdV : 12|1@0+ (1,0) [0|1] "" SCU + SG_ SysVolV : 25|1@0+ (1,0) [0|1] "" SCU + +BO_ 872 CCP_PTEXTCAN_FrP06: 6 Vector_XXX + SG_ CCP_100ms_PDU06_CRC : 7|8@0+ (1,0) [0|255] "" SCU + SG_ CCP_100ms_PDU06_RC : 11|4@0+ (1,0) [0|15] "" SCU + SG_ CCP_100ms_PDU06_Reserve02 : 21|30@0+ (1,0) [0|1073741823] "" SCU + SG_ PwrMdMstrAccryWkupA : 12|1@0+ (1,0) [0|1] "" SCU + SG_ VehDrvngMd : 15|3@0+ (1,0) [0|7] "" SCU + SG_ VehDrvngMdRmndr : 23|2@0+ (1,0) [0|3] "" SCU + +BO_ 1344 CCP_PTEXTCAN_FrP14: 8 Vector_XXX + SG_ VehOdo : 23|24@0+ (1,0) [0|16777200] "" SCU + SG_ VehOdoV : 60|1@0+ (1,0) [0|1] "" SCU + +BO_ 243 CCP_PTEXTCAN_IBS_FrP17: 8 Vector_XXX + SG_ ActuOtptRodTrvl : 55|12@0+ (0.015625,-5) [-5|58.984375] "" SCU + SG_ ActuOtptRodTrvlSts : 59|2@0+ (1,0) [0|3] "" SCU + SG_ BrkPdlPos_IBS : 47|8@0+ (0.392157,0) [0|100.000035] "%" SCU + SG_ BrkPdlPosV_IBS : 33|1@0+ (1,0) [0|1] "" SCU + +BO_ 138 CCP_PTEXTCAN_IMCU_FrP00: 8 Vector_XXX + SG_ EPTRdy : 38|1@0+ (1,0) [0|1] "" SCU + SG_ EPTStCmdOn : 35|1@0+ (1,0) [0|1] "" SCU + +BO_ 1345 CCP_PTEXTCAN_IPK_FrP06: 8 Vector_XXX + SG_ CalendarDay : 20|5@0+ (1,0) [0|31] "days" SCU + SG_ CalendarMonth : 15|4@0+ (1,0) [0|15] "" SCU + SG_ CalendarYear : 31|8@0+ (1,2000) [2000|2255] "year" SCU + SG_ HourOfDay : 52|5@0+ (1,0) [0|23] "" SCU + SG_ MinuteOfHour : 37|6@0+ (1,0) [0|59] "" SCU + SG_ SecsOfMinute : 45|6@0+ (1,0) [0|59] "" SCU + SG_ TimeDspFmt : 46|1@0+ (1,0) [0|1] "" SCU + +BO_ 342 CCP_PTEXTCAN_SCS_FrP04: 8 Vector_XXX + SG_ EPBAppcnSts : 15|2@0+ (1,0) [0|3] "" SCU + SG_ EPBAppcnSts_M : 38|3@0+ (1,0) [0|7] "" SCU + SG_ EPBAvlblySts : 23|3@0+ (1,0) [0|7] "" SCU + SG_ EPBCCCanclReqd : 16|1@0+ (1,0) [0|1] "" SCU + SG_ EPBFlrSts : 39|1@0+ (1,0) [0|1] "" SCU + SG_ EPBSts : 13|2@0+ (1,0) [0|3] "" SCU + SG_ EPBSwSts : 20|2@0+ (1,0) [0|3] "" SCU + SG_ EPBSwStsV : 26|1@0+ (1,0) [0|1] "" SCU + SG_ EPBSysAudWrnngReq : 25|2@0+ (1,0) [0|3] "" SCU + SG_ EPBSysDspMsgReq : 31|3@0+ (1,0) [0|7] "" SCU + SG_ EPBSysStsIndReq : 18|2@0+ (1,0) [0|3] "" SCU + SG_ EPBSysWrnngIndReq : 28|2@0+ (1,0) [0|3] "" SCU + SG_ SCS_020ms_PDU04_CRC : 7|8@0+ (1,0) [0|255] "" SCU + SG_ SCS_020ms_PDU04_RC : 11|4@0+ (1,0) [0|15] "" SCU + SG_ SCS_020ms_PDU04_Reserve01 : 35|28@0+ (1,0) [0|268435455] "" SCU + +BO_ 381 CCP_PTEXTCAN_SCS_FrP06: 8 Vector_XXX + SG_ EPBLAppcnSts_S : 23|3@0+ (1,0) [0|7] "" SCU + SG_ SCS_020ms_PDU43_CRC : 7|8@0+ (1,0) [0|255] "" SCU + SG_ SCS_020ms_PDU43_RC : 11|4@0+ (1,0) [0|15] "" SCU + SG_ SCS_020ms_PDU43_Reserve01 : 15|4@0+ (1,0) [0|15] "" SCU + SG_ SCS_020ms_PDU43_Reserve02 : 20|21@0+ (1,0) [0|2097151] "" SCU + SG_ SCS_020ms_PDU43_Reserve03 : 47|24@0+ (1,0) [0|16777215] "" SCU + +BO_ 425 CCP_PTEXTCAN_SCS_FrP15: 8 Vector_XXX + SG_ SCS_020ms_PDU15_CRC : 7|8@0+ (1,0) [0|255] "" SCU + SG_ SCS_020ms_PDU15_RC : 11|4@0+ (1,0) [0|15] "" SCU + SG_ SCS_020ms_PDU15_Reserve01 : 14|3@0+ (1,0) [0|7] "" SCU + SG_ VehSpdAvg : 22|15@0+ (0.015625,0) [0|511.984375] "km/h" SCU + SG_ VehSpdAvgDrvn : 39|15@0+ (0.015625,0) [0|511.984375] "km/h" SCU + SG_ VehSpdAvgDrvnSrc : 55|1@0+ (1,0) [0|1] "" SCU + SG_ VehSpdAvgDrvnV : 40|1@0+ (1,0) [0|1] "" SCU + SG_ VehSpdAvgNonDrvn : 54|15@0+ (0.015625,0) [0|511.984375] "km/h" SCU + SG_ VehSpdAvgNonDrvnV : 15|1@0+ (1,0) [0|1] "" SCU + SG_ VehSpdAvgV : 23|1@0+ (1,0) [0|1] "" SCU + +BO_ 355 CCP_PTEXTCAN_SDM_FrP00: 8 Vector_XXX + SG_ DrvrSbltAtc : 23|1@0+ (1,0) [0|1] "" SCU + SG_ DrvrSbltAtcV : 22|1@0+ (1,0) [0|1] "" SCU + +BO_ 694 CCP_PTEXTCAN_SigGW_FrP15: 8 Vector_XXX + SG_ ScurtKeyInvd : 28|1@0+ (1,0) [0|1] "" SCU + SG_ SysBPM : 17|2@0+ (1,0) [0|3] "" SCU + SG_ SysBPMEnbd : 8|1@0+ (1,0) [0|1] "" SCU + +BO_ 854 CCP_PTEXTCAN_SigGW_FrP21: 8 Vector_XXX + SG_ DrvrDoorOpenSts : 23|2@0+ (1,0) [0|3] "" SCU + SG_ NtrlPushASts : 28|2@0+ (1,0) [0|3] "" SCU + SG_ VehSideLghtSts : 21|2@0+ (1,0) [0|3] "" SCU + +BO_ 819 CCP_PTEXTCAN_TBOX_FrP01: 8 Vector_XXX + SG_ FOTASts : 15|1@0+ (1,0) [0|1] "" SCU + SG_ FOTAStsV : 23|1@0+ (1,0) [0|1] "" SCU + +BO_ 2015 Diag_PTEXTCAN_FuncReq: 8 Vector_XXX + SG_ Diag_PTEXTCAN_FuncReq : 7|64@0+ (1,0) [0|0] "" SCU + +BO_ 1905 Diag_PTEXTCAN_PhyReq_SCU: 8 Vector_XXX + SG_ Diag_PTEXTCAN_PhyReq_SCU : 7|64@0+ (1,0) [0|0] "" SCU + +BO_ 246 EPMCU_PTEXTCAN_FrP01: 8 Vector_XXX + SG_ EPMCU_010_PDU01_CRC : 7|8@0+ (1,0) [0|255] "" SCU + SG_ EPMCU_010_PDU01_RC : 11|4@0+ (1,0) [0|15] "" SCU + SG_ EPMCU_010_PDU01_Reserve01 : 16|1@0+ (1,0) [0|1] "" SCU + SG_ EPMCU_010_PDU01_Reserve02 : 31|8@0+ (1,0) [0|255] "" SCU + SG_ EPMCU_010_PDU01_Reserve03 : 39|16@0+ (1,0) [0|65535] "" SCU + SG_ EPMCU_010_PDU01_Reserve04 : 55|16@0+ (1,0) [0|65535] "" SCU + SG_ EPMCUIMCUParkReqResp : 15|3@0+ (1,0) [0|7] "" SCU + SG_ EPMCUMotFltIO : 12|1@0+ (1,0) [0|1] "" SCU + SG_ EPMCUParkngSts : 18|2@0+ (1,0) [0|3] "" SCU + SG_ EPMCUSCUParkReqResp : 23|3@0+ (1,0) [0|7] "" SCU + SG_ EPMCUZeroPstnSelfLrnSts : 20|2@0+ (1,0) [0|3] "" SCU + +BO_ 71 IMCU_PTEXTCAN_FrP16: 8 Vector_XXX + SG_ EPTBrkPdlDscrtInptStsBkup : 56|1@0+ (1,0) [0|1] "" SCU + SG_ EPTBrkPdlDscrtInptStsVBkup : 13|1@0+ (1,0) [0|1] "" SCU + SG_ EPTStCmdOnBkup : 14|1@0+ (1,0) [0|1] "" SCU + SG_ EPTTrInptShaftSpdBkup : 39|16@0+ (1,-32767) [-32767|32768] "rpm" SCU + SG_ EPTTrInptShaftSpdVBkup : 15|1@0+ (1,0) [0|1] "" SCU + +BO_ 298 IMCU_PTEXTCAN_FrP45: 8 Vector_XXX + SG_ EPTRdyBkup : 60|1@0+ (1,0) [0|1] "" SCU + SG_ TrShftLvrPosBkup : 59|4@0+ (1,0) [0|15] "" SCU + SG_ TrShftLvrPosVBkup : 61|1@0+ (1,0) [0|1] "" SCU + + + +EV_ v_AutoShiftDisable: 0 [0|1] "" 0 1 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_AutoShiftEnable: 0 [0|1] "" 0 2 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_047_EPTBrkPdlDscrtInptStsBkup: 0 [0|1] "" 0 3 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_12A_TrShftLvrPosBkup: 0 [0|15] "" 0 4 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_12A_EPTRdyBkup: 0 [0|1] "" 1 5 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_12A_TrShftLvrPosVBkup: 0 [0|1] "" 0 6 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_047_EPTTrInptShaftSpdBkup: 1 [0|65535] "rpm" 0 7 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_047_EPTBrkPdlDscrtInptStsVBkup: 0 [0|1] "" 0 8 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_047_EPTStCmdOnBkup: 0 [0|1] "" 0 9 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_047_EPTTrInptShaftSpdVBkup: 0 [0|1] "" 0 10 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_0F6_EPMCUParkngSts: 0 [0|3] "" 0 11 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_356_VehSideLghtSts: 0 [0|3] "" 0 12 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_356_DrvrDoorOpenSts: 0 [0|3] "" 0 13 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_2B6_ScurtKeyInvd: 0 [0|1] "" 0 14 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_163_DrvrSbltAtcV: 0 [0|1] "" 0 15 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_163_DrvrSbltAtc: 0 [0|1] "" 1 16 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_1A9_VehSpdAvgDrvn: 1 [0|65535] "km/h" 0 17 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_1A9_VehSpdAvgDrvnV: 0 [0|1] "" 0 18 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_156_EPBAppcnSts: 0 [0|3] "" 0 19 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_08A_EPTStCmdOn: 0 [0|1] "" 1 20 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_08A_EPTRdy: 0 [0|1] "" 1 21 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_1F1_SysPwrMdV: 0 [0|1] "" 0 22 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_1F1_SysPwrMd: 0 [0|3] "" 2 23 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_1F1_SysOpnlMd: 0 [0|6] "" 0 24 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_317_CCUOffBdChrgrPlugOnV: 0 [0|1] "" 0 25 DUMMY_NODE_VECTOR0 Vector__XXX; + +EV_ v_317_CCUOffBdChrgrPlugOn: 0 [0|2] "" 0 26 DUMMY_NODE_VECTOR0 Vector__XXX; + +CM_ SG_ 157 SCU_010ms_PDU00_CRC "Wheel Ground Velocity Non Driven Checksum +Regarding high integrity requirement, a checksum signal is used for the bit field in same frame. The signal XOR operation is recommended for the calculation."; +CM_ SG_ 157 SCUParkLckReqEPMCU "Shifter Control Unit Park Lock Request For Epmcu"; +CM_ SG_ 157 SCUParkLckReqVEPMCU "Shifter Control Unit Park Lock Request Validity For Epmcu"; +CM_ SG_ 157 SCUShifterLvrPos "Shifter Control Unit Shifter Lever Position +"; +CM_ SG_ 157 SCUShifterPosInvsn "Shifter Control Unit Shifter Position Inversion +Checksum for Shifter position signal sending by SCU"; +CM_ SG_ 1573 EvtPotclSigSCU "Event Protocol Signal Scu"; +CM_ SG_ 216 plmlxspi_hall1_beta_angle_final "HALL1 beta ½ǶÈֵ"; +CM_ SG_ 216 plmlxspi_hall1_alpha_angle_final "HALL1 alpha ½ǶÈֵ"; +CM_ SG_ 216 adc_test "KL15 µçѹԭʼֵ"; +CM_ SG_ 216 DrvrReqParkBtn "Driver Request Park Button"; +CM_ SG_ 216 SCUShifterLvrRawPos "Shifter Control Unit Shifter Lever Raw Position"; +CM_ SG_ 791 CCUOffBdChrgrPlugOn "Combined Charging Unit Off Board Charger Plug On"; +CM_ SG_ 791 CCUOffBdChrgrPlugOnV "Combined Charging Unit Off Board Charger Plug On Validity"; +CM_ SG_ 361 ACAvlbly "AC Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 ADASAvlbly "FVCM Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 BCMAvlbly "BCM Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. +"; +CM_ SG_ 361 BMSAvlbly "BMS Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 EPBAvlbly "SCS Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 EPSAvlbly "EPS Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 ESCLAvlbly "ESCL Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 FICMAvlbly "BCM Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. +"; +CM_ SG_ 361 FLSMAvlbly "SCS Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 PLCMAvlbly "AC Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 RDAAvlbly "FVCM Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 SACAvlbly "SCS Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 SASAvlbly "SCS Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 SCSAvlbly "SCS Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 SCUAvlbly "SCU Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 SDMAvlbly "SDM Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 TBOXAvlbly "TBOX Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 TPMSAvlbly "AC Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 361 VCUAvlbly "AC Available + +Detect if specific ECU is available according to node missing strategy by gateway ECU. + +"; +CM_ SG_ 497 SysOpnlMd "System Operational Mode"; +CM_ SG_ 497 SysPwrMd "System Power Mode"; +CM_ SG_ 497 SysPwrMdV "System Power Mode Validity "; +CM_ SG_ 497 SysVol "Battery Voltage"; +CM_ SG_ 497 SysVolMd "System Voltage Mode "; +CM_ SG_ 497 SysVolMdV "System Voltage Mode Validity "; +CM_ SG_ 497 SysVolV "Battery Voltage Validity"; +CM_ SG_ 872 CCP_100ms_PDU06_CRC "Wheel Ground Velocity Non Driven Checksum +Regarding high integrity requirement, a checksum signal is used for the bit field in same frame. The signal XOR operation is recommended for the calculation."; +CM_ SG_ 872 PwrMdMstrAccryWkupA "Power Mode Master Accessory Wakeup Active"; +CM_ SG_ 1344 VehOdo "Vehicle Odometer"; +CM_ SG_ 1344 VehOdoV "Vehicle Odometer Validity"; +CM_ SG_ 243 ActuOtptRodTrvl "Actual Output Rod Travel"; +CM_ SG_ 243 ActuOtptRodTrvlSts "Actual Output Rod Travel Status"; +CM_ SG_ 243 BrkPdlPos_IBS "Brake Pedal Position"; +CM_ SG_ 243 BrkPdlPosV_IBS "Brake Pedal Position Validity"; +CM_ SG_ 138 EPTRdy "Electric Powertrain Ready"; +CM_ SG_ 138 EPTStCmdOn "Electric Powertrain Start Command On"; +CM_ SG_ 1345 CalendarDay "current day info."; +CM_ SG_ 1345 CalendarMonth "current month info."; +CM_ SG_ 1345 CalendarYear "current year info"; +CM_ SG_ 1345 HourOfDay "Hour Of Day. +current Hour info."; +CM_ SG_ 1345 MinuteOfHour "Minute Of Hour. +current Minute info."; +CM_ SG_ 1345 SecsOfMinute "Seconds Of Minute +current Second info."; +CM_ SG_ 1345 TimeDspFmt "Time Display Format +current Time format."; +CM_ SG_ 342 EPBAppcnSts "Electric Park Brake Application Status"; +CM_ SG_ 342 EPBAppcnSts_M "Epb Applicationstatus_m"; +CM_ SG_ 342 EPBAvlblySts "Electric Park Brake Availability Status"; +CM_ SG_ 342 EPBCCCanclReqd "Electric Park Brake Cruise Control Cancel Request"; +CM_ SG_ 342 EPBFlrSts "Electric Park Brake Failure Status"; +CM_ SG_ 342 EPBSts "Electric Park Brake Status"; +CM_ SG_ 342 EPBSwSts "Electric Park Brake Switch Status"; +CM_ SG_ 342 EPBSwStsV "Electric Park Brake Switch Status Validity"; +CM_ SG_ 342 EPBSysAudWrnngReq "Electric Park Brake System Audible Warning Request"; +CM_ SG_ 342 EPBSysDspMsgReq "Electric Park Brake System Display Message Request"; +CM_ SG_ 342 EPBSysStsIndReq "Electric Park Brake System Status Indication Request"; +CM_ SG_ 342 EPBSysWrnngIndReq "Electric Park Brake System Warning Indication Request"; +CM_ SG_ 342 SCS_020ms_PDU04_CRC "Wheel Ground Velocity Non Driven Checksum +Regarding high integrity requirement, a checksum signal is used for the bit field in same frame. The signal XOR operation is recommended for the calculation."; +CM_ SG_ 381 EPBLAppcnSts_S "Epb Applicationstatus_s"; +CM_ SG_ 425 SCS_020ms_PDU15_CRC "Wheel Ground Velocity Non Driven Checksum +Regarding high integrity requirement, a checksum signal is used for the bit field in same frame. The signal XOR operation is recommended for the calculation."; +CM_ SG_ 425 VehSpdAvg "Vehicle Speed Average"; +CM_ SG_ 425 VehSpdAvgDrvn "Vehicle Speed Average Driven"; +CM_ SG_ 425 VehSpdAvgDrvnSrc "Vehicle Speed Average Driven Source"; +CM_ SG_ 425 VehSpdAvgDrvnV "Vehicle Speed Average Driven Validity"; +CM_ SG_ 425 VehSpdAvgNonDrvn "Vehicle Speed Average Non Driven"; +CM_ SG_ 425 VehSpdAvgNonDrvnV "Vehicle Speed Average Non Driven Validity"; +CM_ SG_ 425 VehSpdAvgV "Vehicle Speed Average Validity"; +CM_ SG_ 355 DrvrSbltAtc "Driver Seatbelt Attached +indicate the driver has fasten seatbelt"; +CM_ SG_ 355 DrvrSbltAtcV "Driver Seatbelt Attached Validity"; +CM_ SG_ 694 ScurtKeyInvd "Security Key Invalid"; +CM_ SG_ 694 SysBPM "System Backup Power Mode"; +CM_ SG_ 694 SysBPMEnbd "System Backup Power Mode Enabled"; +CM_ SG_ 854 DrvrDoorOpenSts "Driver Door Open Status"; +CM_ SG_ 854 NtrlPushASts "Netual Push Active Status"; +CM_ SG_ 854 VehSideLghtSts "Vehicle Side Light Status"; +CM_ SG_ 819 FOTASts "Firmware Over The Air Status"; +CM_ SG_ 819 FOTAStsV "Firmware Over The Air Status Validity"; +CM_ SG_ 246 EPMCU_010_PDU01_CRC "Wheel Ground Velocity Non Driven Checksum +Regarding high integrity requirement, a checksum signal is used for the bit field in same frame. The signal XOR operation is recommended for the calculation."; +CM_ SG_ 246 EPMCUIMCUParkReqResp "Electric Park Motor Controller IMCU Park Rrequest Response"; +CM_ SG_ 246 EPMCUMotFltIO "Electric Park Motor Controller Fault Indication On"; +CM_ SG_ 246 EPMCUParkngSts "Electric Park Motor Controller Parking Status"; +CM_ SG_ 246 EPMCUSCUParkReqResp "Electric_Park_Motor_Controller_SCU_Park_Rrequest_Response"; +CM_ SG_ 246 EPMCUZeroPstnSelfLrnSts "Park Motor Controller Zero Position Self Learning Status"; +CM_ SG_ 71 EPTBrkPdlDscrtInptStsBkup "Electric Powertrain Brake Pedal Discrete Input Status"; +CM_ SG_ 71 EPTBrkPdlDscrtInptStsVBkup "Electric Powertrain Brake Pedal Discrete Input Status Validity"; +CM_ SG_ 71 EPTStCmdOnBkup "Electric Powertrain Start Command On"; +CM_ SG_ 71 EPTTrInptShaftSpdBkup "Electric Powertrain Transmission Input Shaft Speed"; +CM_ SG_ 71 EPTTrInptShaftSpdVBkup "Electric Powertrain Transmission Input Shaft Speed Validity Back Up"; +BA_DEF_ SG_ "GenSigSendType" ENUM "Cyclic","OnWrite","OnWriteWithRepetition","OnChange","OnChangeWithRepetition","IfActive","IfActiveWithRepetition","NoSigSendType"; +BA_DEF_ SG_ "GenSigStartValue" FLOAT -1.79769313486232E+308 1.84467440737096E+019; +BA_DEF_ BO_ "GenMsgSendType" ENUM "cyclic","spontaneous","cyclicIfActive","spontaneousWithDelay","cyclicAndSpontaneous","cyclicAndSpontaneousWithDelay","IfActive","NoMsgSendType"; +BA_DEF_ BO_ "GenMsgCycleTime" FLOAT 0 300000; +BA_DEF_ BO_ "GenMsgStartDelayTime" FLOAT 0 300000; +BA_DEF_ BO_ "GenMsgDelayTime" FLOAT 0 300000; +BA_DEF_ BO_ "GenMsgNrOfRepetition" INT 0 100000; +BA_DEF_ BO_ "GenMsgCycleTimeFast" FLOAT 0 300000; +BA_DEF_ BU_ "NmAsrNodeIdentifier" INT 0 255; +BA_DEF_ BU_ "NmAsrNode" ENUM "No","Yes"; +BA_DEF_ "Baudrate" FLOAT 1000 1000000; +BA_DEF_ "DBName" STRING ; +BA_DEF_ "BusType" STRING ; +BA_DEF_ "ProtocolType" STRING ; +BA_DEF_DEF_ "GenSigSendType" "Cyclic"; +BA_DEF_DEF_ "GenSigStartValue" 0; +BA_DEF_DEF_ "GenMsgSendType" ""; +BA_DEF_DEF_ "GenMsgCycleTime" 0; +BA_DEF_DEF_ "GenMsgStartDelayTime" 0; +BA_DEF_DEF_ "GenMsgDelayTime" 0; +BA_DEF_DEF_ "GenMsgNrOfRepetition" 0; +BA_DEF_DEF_ "GenMsgCycleTimeFast" 0; +BA_DEF_DEF_ "NmAsrNodeIdentifier" 0; +BA_DEF_DEF_ "NmAsrNode" "No"; +BA_DEF_DEF_ "Baudrate" 1000; +BA_DEF_DEF_ "DBName" ""; +BA_DEF_DEF_ "BusType" ""; +BA_DEF_DEF_ "ProtocolType" ""; +BA_ "ProtocolType" "CAN"; +BA_ "BusType" "CAN"; +BA_ "Baudrate" 500000; +BA_ "DBName" "SCU"; +BA_ "GenMsgDelayTime" BO_ 1794 95; +BA_ "GenMsgSendType" BO_ 1794 1; +BA_ "GenMsgDelayTime" BO_ 1913 5; +BA_ "GenMsgSendType" BO_ 1913 1; +BA_ "GenMsgStartDelayTime" BO_ 157 0; +BA_ "GenMsgCycleTime" BO_ 157 10; +BA_ "GenMsgSendType" BO_ 157 0; +BA_ "GenMsgDelayTime" BO_ 1573 5; +BA_ "GenMsgSendType" BO_ 1573 1; +BA_ "GenMsgStartDelayTime" BO_ 216 0; +BA_ "GenMsgCycleTime" BO_ 216 10; +BA_ "GenMsgSendType" BO_ 216 0; +BA_ "GenMsgDelayTime" BO_ 789 10; +BA_ "GenMsgSendType" BO_ 789 1; +BA_ "GenMsgDelayTime" BO_ 791 10; +BA_ "GenMsgSendType" BO_ 791 1; +BA_ "GenMsgStartDelayTime" BO_ 361 10; +BA_ "GenMsgCycleTime" BO_ 361 20; +BA_ "GenMsgSendType" BO_ 361 0; +BA_ "GenMsgStartDelayTime" BO_ 497 5; +BA_ "GenMsgCycleTime" BO_ 497 20; +BA_ "GenMsgSendType" BO_ 497 0; +BA_ "GenMsgStartDelayTime" BO_ 872 5; +BA_ "GenMsgCycleTime" BO_ 872 100; +BA_ "GenMsgSendType" BO_ 872 0; +BA_ "GenMsgStartDelayTime" BO_ 1344 10; +BA_ "GenMsgCycleTime" BO_ 1344 1000; +BA_ "GenMsgSendType" BO_ 1344 0; +BA_ "GenMsgDelayTime" BO_ 243 10; +BA_ "GenMsgSendType" BO_ 243 1; +BA_ "GenMsgDelayTime" BO_ 138 10; +BA_ "GenMsgSendType" BO_ 138 1; +BA_ "GenMsgDelayTime" BO_ 1345 200; +BA_ "GenMsgSendType" BO_ 1345 1; +BA_ "GenMsgDelayTime" BO_ 342 20; +BA_ "GenMsgSendType" BO_ 342 1; +BA_ "GenMsgDelayTime" BO_ 381 20; +BA_ "GenMsgSendType" BO_ 381 1; +BA_ "GenMsgDelayTime" BO_ 425 20; +BA_ "GenMsgSendType" BO_ 425 1; +BA_ "GenMsgDelayTime" BO_ 355 20; +BA_ "GenMsgSendType" BO_ 355 1; +BA_ "GenMsgStartDelayTime" BO_ 694 10; +BA_ "GenMsgCycleTime" BO_ 694 50; +BA_ "GenMsgSendType" BO_ 694 0; +BA_ "GenMsgStartDelayTime" BO_ 854 20; +BA_ "GenMsgCycleTime" BO_ 854 100; +BA_ "GenMsgSendType" BO_ 854 0; +BA_ "GenMsgDelayTime" BO_ 819 10; +BA_ "GenMsgSendType" BO_ 819 1; +BA_ "GenMsgDelayTime" BO_ 2015 20; +BA_ "GenMsgSendType" BO_ 2015 1; +BA_ "GenMsgDelayTime" BO_ 1905 20; +BA_ "GenMsgSendType" BO_ 1905 1; +BA_ "GenMsgStartDelayTime" BO_ 246 5; +BA_ "GenMsgCycleTime" BO_ 246 10; +BA_ "GenMsgSendType" BO_ 246 0; +BA_ "GenMsgStartDelayTime" BO_ 71 0; +BA_ "GenMsgCycleTime" BO_ 71 10; +BA_ "GenMsgSendType" BO_ 71 0; +BA_ "GenMsgStartDelayTime" BO_ 298 0; +BA_ "GenMsgCycleTime" BO_ 298 20; +BA_ "GenMsgSendType" BO_ 298 0; +BA_ "GenSigStartValue" SG_ 1794 DTCInfomationSCU 0; +BA_ "GenSigSendType" SG_ 1794 DTCInfomationSCU 1; +BA_ "GenSigStartValue" SG_ 157 SCU_010ms_PDU00_CRC 0; +BA_ "GenSigStartValue" SG_ 157 SCU_010ms_PDU00_RC 0; +BA_ "GenSigStartValue" SG_ 157 SCU_010ms_PDU00_Reserve01 15; +BA_ "GenSigStartValue" SG_ 157 SCU_010ms_PDU00_Reserve02 3; +BA_ "GenSigStartValue" SG_ 157 SCU_010ms_PDU00_Reserve03 15; +BA_ "GenSigStartValue" SG_ 157 SCU_010ms_PDU00_Reserve04 3; +BA_ "GenSigStartValue" SG_ 157 SCU_010ms_PDU00_Reserve05 255; +BA_ "GenSigStartValue" SG_ 157 SCUActrMvmntSts 0; +BA_ "GenSigStartValue" SG_ 157 SCUExtdShifterFlr 0; +BA_ "GenSigStartValue" SG_ 157 SCUFltLvlWrnng 0; +BA_ "GenSigStartValue" SG_ 157 SCUParkLckReq 0; +BA_ "GenSigStartValue" SG_ 157 SCUParkLckReqEPMCU 0; +BA_ "GenSigStartValue" SG_ 157 SCUParkLckReqV 1; +BA_ "GenSigStartValue" SG_ 157 SCUParkLckReqVEPMCU 1; +BA_ "GenSigStartValue" SG_ 157 SCUShftLvrPosIncnstntFlag 0; +BA_ "GenSigStartValue" SG_ 157 SCUShftLvrPosTrgt 0; +BA_ "GenSigStartValue" SG_ 157 SCUShifterLvrPos 0; +BA_ "GenSigStartValue" SG_ 157 SCUShifterOpngRmndr 0; +BA_ "GenSigStartValue" SG_ 157 SCUShifterPosInvsn 15; +BA_ "GenSigStartValue" SG_ 1573 EvtPotclSigSCU 0; +BA_ "GenSigSendType" SG_ 1573 EvtPotclSigSCU 1; +BA_ "GenSigStartValue" SG_ 216 DrvrReqParkBtn 0; +BA_ "GenSigStartValue" SG_ 216 SCUShifterLvrRawPos 2; +BA_ "GenSigStartValue" SG_ 789 CCUOnbdChrgrPlugOn 0; +BA_ "GenSigStartValue" SG_ 791 CCUOffBdChrgrPlugOn 0; +BA_ "GenSigStartValue" SG_ 791 CCUOffBdChrgrPlugOnV 1; +BA_ "GenSigStartValue" SG_ 361 ACAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 ADASAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 BCMAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 BMSAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 CCUAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 DMSAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 EPBAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 EPSAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 ESCLAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 ESSPTCAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 FICMAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 FLSMAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 IPKAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 PLCMAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 RDAAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 SACAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 SASAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 SCSAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 SCUAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 SDMAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 TBOXAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 TDMAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 TPMSAvlbly 0; +BA_ "GenSigStartValue" SG_ 361 VCUAvlbly 0; +BA_ "GenSigStartValue" SG_ 497 BPwrMdMstrstrAvlbly 0; +BA_ "GenSigStartValue" SG_ 497 SysOpnlMd 0; +BA_ "GenSigStartValue" SG_ 497 SysPwrMd 0; +BA_ "GenSigStartValue" SG_ 497 SysPwrMdV 0; +BA_ "GenSigStartValue" SG_ 497 SysVol 0; +BA_ "GenSigStartValue" SG_ 497 SysVolMd 0; +BA_ "GenSigStartValue" SG_ 497 SysVolMdV 0; +BA_ "GenSigStartValue" SG_ 497 SysVolV 0; +BA_ "GenSigStartValue" SG_ 872 CCP_100ms_PDU06_CRC 0; +BA_ "GenSigStartValue" SG_ 872 CCP_100ms_PDU06_RC 0; +BA_ "GenSigStartValue" SG_ 872 CCP_100ms_PDU06_Reserve02 1073741823; +BA_ "GenSigStartValue" SG_ 872 PwrMdMstrAccryWkupA 0; +BA_ "GenSigStartValue" SG_ 872 VehDrvngMd 0; +BA_ "GenSigStartValue" SG_ 872 VehDrvngMdRmndr 0; +BA_ "GenSigStartValue" SG_ 1344 VehOdo 0; +BA_ "GenSigStartValue" SG_ 1344 VehOdoV 0; +BA_ "GenSigStartValue" SG_ 243 ActuOtptRodTrvl 0; +BA_ "GenSigStartValue" SG_ 243 ActuOtptRodTrvlSts 0; +BA_ "GenSigStartValue" SG_ 243 BrkPdlPos_IBS 0; +BA_ "GenSigStartValue" SG_ 243 BrkPdlPosV_IBS 0; +BA_ "GenSigStartValue" SG_ 138 EPTRdy 0; +BA_ "GenSigStartValue" SG_ 138 EPTStCmdOn 0; +BA_ "GenSigStartValue" SG_ 1345 CalendarDay 0; +BA_ "GenSigStartValue" SG_ 1345 CalendarMonth 0; +BA_ "GenSigStartValue" SG_ 1345 CalendarYear 0; +BA_ "GenSigStartValue" SG_ 1345 HourOfDay 0; +BA_ "GenSigStartValue" SG_ 1345 MinuteOfHour 0; +BA_ "GenSigStartValue" SG_ 1345 SecsOfMinute 0; +BA_ "GenSigStartValue" SG_ 1345 TimeDspFmt 0; +BA_ "GenSigStartValue" SG_ 342 EPBAppcnSts 0; +BA_ "GenSigStartValue" SG_ 342 EPBAppcnSts_M 2; +BA_ "GenSigStartValue" SG_ 342 EPBAvlblySts 0; +BA_ "GenSigStartValue" SG_ 342 EPBCCCanclReqd 0; +BA_ "GenSigStartValue" SG_ 342 EPBFlrSts 0; +BA_ "GenSigStartValue" SG_ 342 EPBSts 0; +BA_ "GenSigStartValue" SG_ 342 EPBSwSts 0; +BA_ "GenSigStartValue" SG_ 342 EPBSwStsV 0; +BA_ "GenSigStartValue" SG_ 342 EPBSysAudWrnngReq 0; +BA_ "GenSigStartValue" SG_ 342 EPBSysDspMsgReq 0; +BA_ "GenSigStartValue" SG_ 342 EPBSysStsIndReq 0; +BA_ "GenSigStartValue" SG_ 342 EPBSysWrnngIndReq 0; +BA_ "GenSigStartValue" SG_ 342 SCS_020ms_PDU04_CRC 0; +BA_ "GenSigStartValue" SG_ 342 SCS_020ms_PDU04_RC 0; +BA_ "GenSigStartValue" SG_ 342 SCS_020ms_PDU04_Reserve01 268435455; +BA_ "GenSigStartValue" SG_ 381 EPBLAppcnSts_S 2; +BA_ "GenSigStartValue" SG_ 381 SCS_020ms_PDU43_CRC 0; +BA_ "GenSigStartValue" SG_ 381 SCS_020ms_PDU43_RC 0; +BA_ "GenSigStartValue" SG_ 381 SCS_020ms_PDU43_Reserve01 15; +BA_ "GenSigStartValue" SG_ 381 SCS_020ms_PDU43_Reserve02 2097151; +BA_ "GenSigStartValue" SG_ 381 SCS_020ms_PDU43_Reserve03 16777215; +BA_ "GenSigStartValue" SG_ 425 SCS_020ms_PDU15_CRC 0; +BA_ "GenSigStartValue" SG_ 425 SCS_020ms_PDU15_RC 0; +BA_ "GenSigStartValue" SG_ 425 SCS_020ms_PDU15_Reserve01 7; +BA_ "GenSigStartValue" SG_ 425 VehSpdAvg 0; +BA_ "GenSigStartValue" SG_ 425 VehSpdAvgDrvn 0; +BA_ "GenSigStartValue" SG_ 425 VehSpdAvgDrvnSrc 0; +BA_ "GenSigStartValue" SG_ 425 VehSpdAvgDrvnV 0; +BA_ "GenSigStartValue" SG_ 425 VehSpdAvgNonDrvn 0; +BA_ "GenSigStartValue" SG_ 425 VehSpdAvgNonDrvnV 0; +BA_ "GenSigStartValue" SG_ 425 VehSpdAvgV 0; +BA_ "GenSigStartValue" SG_ 355 DrvrSbltAtc 0; +BA_ "GenSigStartValue" SG_ 355 DrvrSbltAtcV 0; +BA_ "GenSigStartValue" SG_ 694 ScurtKeyInvd 1; +BA_ "GenSigStartValue" SG_ 694 SysBPM 0; +BA_ "GenSigStartValue" SG_ 694 SysBPMEnbd 0; +BA_ "GenSigStartValue" SG_ 854 DrvrDoorOpenSts 0; +BA_ "GenSigStartValue" SG_ 854 NtrlPushASts 0; +BA_ "GenSigStartValue" SG_ 854 VehSideLghtSts 0; +BA_ "GenSigStartValue" SG_ 819 FOTASts 0; +BA_ "GenSigStartValue" SG_ 819 FOTAStsV 0; +BA_ "GenSigStartValue" SG_ 246 EPMCU_010_PDU01_CRC 0; +BA_ "GenSigStartValue" SG_ 246 EPMCU_010_PDU01_RC 0; +BA_ "GenSigStartValue" SG_ 246 EPMCU_010_PDU01_Reserve01 1; +BA_ "GenSigStartValue" SG_ 246 EPMCU_010_PDU01_Reserve02 255; +BA_ "GenSigStartValue" SG_ 246 EPMCU_010_PDU01_Reserve03 65535; +BA_ "GenSigStartValue" SG_ 246 EPMCU_010_PDU01_Reserve04 65535; +BA_ "GenSigStartValue" SG_ 246 EPMCUIMCUParkReqResp 0; +BA_ "GenSigStartValue" SG_ 246 EPMCUMotFltIO 0; +BA_ "GenSigStartValue" SG_ 246 EPMCUParkngSts 0; +BA_ "GenSigStartValue" SG_ 246 EPMCUSCUParkReqResp 0; +BA_ "GenSigStartValue" SG_ 246 EPMCUZeroPstnSelfLrnSts 0; +BA_ "GenSigStartValue" SG_ 71 EPTBrkPdlDscrtInptStsBkup 0; +BA_ "GenSigStartValue" SG_ 71 EPTBrkPdlDscrtInptStsVBkup 0; +BA_ "GenSigStartValue" SG_ 71 EPTStCmdOnBkup 0; +BA_ "GenSigStartValue" SG_ 71 EPTTrInptShaftSpdBkup 32767; +BA_ "GenSigStartValue" SG_ 71 EPTTrInptShaftSpdVBkup 0; +BA_ "GenSigStartValue" SG_ 298 EPTRdyBkup 0; +BA_ "GenSigStartValue" SG_ 298 TrShftLvrPosBkup 0; +BA_ "GenSigStartValue" SG_ 298 TrShftLvrPosVBkup 0; +VAL_ 157 NtrlPushImpmntSts 1 "SCU_N_push_implemented" 0 "SCU_N_push_not_implement" ; +VAL_ 157 SCUActrMvmntSts 0 "SCUActrMvmntSts_Actuator_Stop" 1 "SCUActrMvmntSts_ActuatorGo_out_of_P" 2 "SCUActrMvmntSts_Actuator_Go_Into_P" 3 "SCUActrMvmntSts_3_Reserved" ; +VAL_ 157 SCUExtdShifterFlr 0 "SCUExtdShifterFlr_No_fail" 1 "SCUExtdShifterFlr_Mode_selector_sensor_fail" 2 "SCUExtdShifterFlr_Single_rotary_hall_sensor_fail" 3 "SCUExtdShifterFlr_CAN_Bus_communication_fail" 4 "SCUExtdShifterFlr_Single_P_button_sensor_fail" 5 "SCUExtdShifterFlr_All_rotary_hall_senso_fail" 6 "SCUExtdShifterFlr_All_P_button_sensor_fail" 7 "SCUExtdShifterFlr_SSU_fail" 8 "SCUExtdShifterFlr_Single_Unlock_button_fail" 9 "SCUExtdShifterFlr_All_unlock_button_fail" 10 "SCUExtdShifterFlr_Single_SENT_sensor_fail" 11 "SCUExtdShifterFlr_All_SENT_sensor_fail" 12 "SCUExtdShifterFlr_Motor_Stuck" 13 "SCUExtdShifterFlr_Motor_fail" ; +VAL_ 157 SCUFltLvlWrnng 0 "SCUFltLvlWrnng_No_Fault" 1 "SCUFltLvlWrnng_SCU_Limited_Fault" 2 "SCUFltLvlWrnng_SCU_Critical_Fault" 3 "SCUFltLvlWrnng_Transmission_Wrong_Gear_feedback" ; +VAL_ 157 SCUParkLckReq 0 "SCUParkLckReq_12_No_Request" 1 "SCUParkLckReq_24_Release_brake_request" 2 "SCUParkLckReq_12_Apply_brake_request" 3 "SCUParkLckReq_24_Reserved" ; +VAL_ 157 SCUParkLckReqEPMCU 0 "SCUParkLckReqEPMCU_0_12NoRequest" 1 "SCUParkLckReqEPMCU_1_24ReleaseBrakeRequest" 2 "SCUParkLckReqEPMCU_2_12ApplyBrakeRequest" 3 "SCUParkLckReqEPMCU_3_24Reserved" ; +VAL_ 157 SCUParkLckReqV 0 "SCUParkLckReqV_0_Valid" 1 "SCUParkLckReqV_1_Invalid" ; +VAL_ 157 SCUParkLckReqVEPMCU 0 "SCUParkLckReqVEPMCU_0_Valid" 1 "SCUParkLckReqVEPMCU_1_Invalid" ; +VAL_ 157 SCUShftLvrPosIncnstntFlag 0 "False" 1 "True" ; +VAL_ 157 SCUShftLvrPosTrgt 0 "SCU_initialization" 1 "SCUShftLvrPosTrgt_S_Sport_mode" 2 "SCUShftLvrPosTrgt_W_Winter_mode" 3 "SCUShftLvrPosTrgt_M_Manual_mode" 5 "SCUShftLvrPosTrgt_D_Drive" 6 "SCUShftLvrPosTrgt_N_Neutral" 7 "SCUShftLvrPosTrgt_R_Reverse" 8 "SCUShftLvrPosTrgt_P_Park" 9 "SCUShftLvrPosTrgt_In_learn_Process" 10 "SCUShftLvrPosTrgt_Error" ; +VAL_ 157 SCUShifterLvrPos 0 "SCUShifterLvrPos_SCU_Initialization" 1 "SCUShifterLvrPos_S_Sport_mode_" 2 "SCUShifterLvrPos_W_Winter_mode_" 3 "SCUShifterLvrPos_M_Manual_mode_" 5 "SCUShifterLvrPos_D_Drive_" 6 "SCUShifterLvrPos_N_Neutral_" 7 "SCUShifterLvrPos_R_Reverse_" 8 "SCUShifterLvrPos_P_Park_" 9 "SCUShifterLvrPos_In_Learn_Process" 10 "SCUShifterLvrPos_Error" ; +VAL_ 157 SCUShifterOpngRmndr 0 "SCUShifterOpngRmndr_0_No_Reminder_Request" 1 "SCUShifterOpngRmndr_1_Please_Press_The_Unlock_Button" 2 "SCUShifterOpngRmndr_2_Please_Slam_On_The__Brake_Pedal" 3 "SCUShifterOpngRmndr_3_Please_Press_The__Unlock_Button_And_Slam_On_The__Brake_Pedal" 4 "SCUShifterOpngRmndr_4_Speed_Too_High,Go_Into_P_not_allowed" 5 "SCUShifterOpngRmndr_5_Speed_Too_High,Go_Into_R_not_allowed" 6 "SCUShifterOpngRmndr_6_Security_condition_not_met" ; +VAL_ 157 SCUShifterPosInvsn 5 "SCUShifterPosInvsn_Error" 6 "SCUShifterPosInvsn_In_Learn_Process" 7 "SCUShifterPosInvsn_P_Park_" 8 "SCUShifterPosInvsn_R_Reverse_" 9 "SCUShifterPosInvsn_N_Neutral_" 10 "SCUShifterPosInvsn_D_Drive_" 11 "SCUShifterPosInvsn_11_Reserved" 12 "SCUShifterPosInvsn_M_Manual_mode_" 13 "SCUShifterPosInvsn_W_Winter_mode_" 14 "SCUShifterPosInvsn_S_Sport_mode_" 15 "SCUShifterPosInvsn_SCU_initialization" ; +VAL_ 216 DrvrReqParkBtn 0 "DrvrReqParkBtn_0_DrvrReqParkBtn_0_no_request" 1 "DrvrReqParkBtn_1_DrvrReqParkBtn_1_driver_request_park_button" 2 "DrvrReqParkBtn_2_DrvrReqParkBtn_2_Park_button_fault" 3 "DrvrReqParkBtn_3_DrvrReqParkBtn_3_reserved" ; +VAL_ 216 SCUShifterLvrRawPos 0 "SCUShifterLvrRawPos_0_Up2" 1 "SCUShifterLvrRawPos_1_Up1" 2 "SCUShifterLvrRawPos_2_Stable" 3 "SCUShifterLvrRawPos_3_Down1" 4 "SCUShifterLvrRawPos_4_Down2" 5 "SCUShifterLvrRawPos_5_Ptouch" 6 "SCUShifterLvrRawPos_6_Error" ; +VAL_ 789 CCUOnbdChrgrPlugOn 0 "CCUOnbdChrgrPlugOn_0_Disconnected" 1 "CCUOnbdChrgrPlugOn_1_Connected_Gun_is_63A" 2 "CCUOnbdChrgrPlugOn_2_Connected_Gun_is_32A" 3 "CCUOnbdChrgrPlugOn_3_Connected_Gun_is_16A" 4 "CCUOnbdChrgrPlugOn_4_Connected_Gun_is_10A" 5 "CCUOnbdChrgrPlugOn_5_Semi_connected" 6 "CCUOnbdChrgrPlugOn_6_Abnormal_Connected" 7 "CCUOnbdChrgrPlugOn_7_V2L_Connected" 8 "CCUOnbdChrgrPlugOn_8_V2G_Connected" 9 "CCUOnbdChrgrPlugOn_9_Unknow_Connected" ; +VAL_ 791 CCUOffBdChrgrPlugOn 0 "CCUOffBdChrgrPlugOn_0_Disconnected" 1 "CCUOffBdChrgrPlugOn_1_Connected" 2 "CCUOffBdChrgrPlugOn_2_Semi_connected" ; +VAL_ 791 CCUOffBdChrgrPlugOnV 0 "CCUOffBdChrgrPlugOnV_0_Valid" 1 "CCUOffBdChrgrPlugOnV_1_Invalid" ; +VAL_ 361 ACAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 ADASAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 BCMAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 BMSAvlbly 0 "False" 1 "True" ; +VAL_ 361 CCUAvlbly 0 "False" 1 "True" ; +VAL_ 361 DMSAvlbly 0 "False" 1 "True" ; +VAL_ 361 EPBAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 EPSAvlbly 0 "False" 1 "True" ; +VAL_ 361 ESCLAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 ESSPTCAvlbly 0 "False" 1 "True" ; +VAL_ 361 FICMAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 FLSMAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 IPKAvlbly 0 "False" 1 "True" ; +VAL_ 361 PLCMAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 RDAAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 SACAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 SASAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 SCSAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 SCUAvlbly 0 "False" 1 "True" ; +VAL_ 361 SDMAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 TBOXAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 TDMAvlbly 0 "False" 1 "True" ; +VAL_ 361 TPMSAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 361 VCUAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 497 BPwrMdMstrstrAvlbly 0 "FALSE" 1 "TRUE" ; +VAL_ 497 SysOpnlMd 0 "SysOpnlMd_Normal_Mode" 1 "SysOpnlMd_Manufacturing_Mode" 2 "SysOpnlMd_Transit_Mode" 3 "SysOpnlMd_Show_Room" 4 "SysOpnlMd_Storage_Mode" 5 "SysOpnlMd_Diagnosic_or_Reprogramming_Reserve_" 6 "SysOpnlMd_6_Service_mode" ; +VAL_ 497 SysPwrMd 0 "SysPwrMd_0_Off" 1 "SysPwrMd_1_ACC" 2 "SysPwrMd_2_Run" 3 "SysPwrMd_3_Crank_Request" ; +VAL_ 497 SysPwrMdV 0 "SysPwrMdV_Valid" 1 "SysPwrMdV_Invalid" ; +VAL_ 497 SysVolMd 0 "SysPwrMd_h5_Normal" 1 "SysVolMd_Low_System_Voltage" 2 "SysVolMd_High_System_Voltage" 3 "SysVolMd_Illegal_System_Voltage" ; +VAL_ 497 SysVolMdV 0 "SysVolMdV_0_Valid" 1 "SysVolMdV_1_Invalid" ; +VAL_ 497 SysVolV 0 "SysVolV_0_Valid" 1 "SysVolV_1_Invalid" ; +VAL_ 872 PwrMdMstrAccryWkupA 0 "FALSE" 1 "TRUE" ; +VAL_ 872 VehDrvngMd 0 "VehDrvngMdET_0_No_Driving_Mode" 1 "VehDrvngMdET_1_Super_ECO" 2 "VehDrvngMdET_2_ECO" 3 "VehDrvngMdET_3_Normal" 4 "VehDrvngMdET_4_Sport" 5 "VehDrvngMdET_5_Super_Sport" 6 "VehDrvngMdET_6_Reserved" 7 "VehDrvngMdET_7_Customization_Mode" ; +VAL_ 872 VehDrvngMdRmndr 0 "VehDrvngMdRmndr_0_No_Reminder" 1 "VehDrvngMdRmndr_1_Inhibit_Reminder" 2 "VehDrvngMdRmndr_2_Fault_Warning" 3 "VehDrvngMdRmndr_3_Reserved" ; +VAL_ 1344 VehOdoV 0 "Valid" 1 "Invalid" ; +VAL_ 243 ActuOtptRodTrvlSts 0 "ActuOtptRodTrvlSts_0_Init" 1 "ActuOtptRodTrvlSts_1_Normal" 2 "ActuOtptRodTrvlSts_2_Faulty" ; +VAL_ 243 BrkPdlPosV_IBS 0 "BrkPdlPosV_Valid" 1 "BrkPdlPosV_Invalid" ; +VAL_ 138 EPTRdy 0 "EPTRdy_0_NotReady" 1 "EPTRdy_1_Ready" ; +VAL_ 138 EPTStCmdOn 0 "EPTStCmdOn_0_False" 1 "EPTStCmdOn_1_True" ; +VAL_ 1345 CalendarMonth 0 "CalendarMonth_0_Unknown" 1 "CalendarMonth_1_January" 2 "CalendarMonth_2_February" 3 "CalendarMonth_3_March" 4 "CalendarMonth_4_April" 5 "CalendarMonth_5_May" 6 "CalendarMonth_6_June" 7 "CalendarMonth_7_July" 8 "CalendarMonth_8_August" 9 "CalendarMonth_9_September" 10 "CalendarMonth_10_October" 11 "CalendarMonth_11_November" 12 "CalendarMonth_12_December" ; +VAL_ 1345 TimeDspFmt 0 "TimeDspFmt_12_hour_mode" 1 "TimeDspFmt_24_hour_mode" ; +VAL_ 342 EPBAppcnSts 0 "EPBAppcnSts_Unknown" 1 "EPBAppcnSts_Park_Brake_Applied" 2 "EPBAppcnSts_Park_Brake_Released" 3 "EPBAppcnSts_Park_Brake_Application_in_Progress" ; +VAL_ 342 EPBAppcnSts_M 0 "EPBAppcnSts_M_0_ParkApplied" 1 "EPBAppcnSts_M_1_Released" 2 "EPBAppcnSts_M_2_Unknown" 3 "EPBAppcnSts_M_3_HoldApplied" 4 "EPBAppcnSts_M_4_CompletelyReleased" 5 "EPBAppcnSts_M_5_Applying" 6 "EPBAppcnSts_M_6_Releasing" ; +VAL_ 342 EPBAvlblySts 0 "EPBAvlblySts_Unavailable_Not_Failed" 1 "EPBAvlblySts_Available_Not_Failed" 2 "EPBAvlblySts_Unavailable_Failed_Applied" 3 "EPBAvlblySts_Unavailable_Failed_Released" 4 "EPBAvlblySts_Unavailable_Failed_other" 5 "EPBAvlblySts_Unused_and_Reserved_1" 6 "EPBAvlblySts_Unused_and_Reserved_2" 7 "EPBAvlblySts_Unused_and_Reserved_3" ; +VAL_ 342 EPBCCCanclReqd 0 "FALSE" 1 "TRUE" ; +VAL_ 342 EPBFlrSts 0 "EPBFlrSts_No_error_in_EPB" 1 "EPBFlrSts_Error_in_EPB" ; +VAL_ 342 EPBSts 0 "EPBSts_0_Released" 1 "EPBSts_1_Applied" 2 "EPBSts_2_Fault" ; +VAL_ 342 EPBSwSts 0 "EPBSwSts_0_NotActive" 1 "EPBSwSts_1_Release" 2 "EPBSwSts_2_Apply" ; +VAL_ 342 EPBSwStsV 0 "EPBSwStsV_0_Valid" 1 "EPBSwStsV_1_Invalid" ; +VAL_ 342 EPBSysAudWrnngReq 0 "EPBSysAudWrnngReq_Off" 1 "EPBSysAudWrnngReq_Warning_1" 2 "EPBSysAudWrnngReq_Warning_2" ; +VAL_ 342 EPBSysDspMsgReq 0 "EPBSysDspMsgReq_Off" 1 "EPBSysDspMsgReq_Message_1" 2 "EPBSysDspMsgReq_Message_2" 3 "EPBSysDspMsgReq_Message_3" 4 "EPBSysDspMsgReq_Message_4" 5 "EPBSysDspMsgReq_Message_5" 6 "EPBSysDspMsgReq_Message_6" 7 "EPBSysDspMsgReq_Message_7" ; +VAL_ 342 EPBSysStsIndReq 0 "EPBSysStsIndReq_No_Indication" 1 "EPBSysStsIndReq_Continuous_Indication" 2 "EPBSysStsIndReq_Flash_Rate_1_Indication" 3 "EPBSysStsIndReq_Flash_Rate_2_Indication" ; +VAL_ 342 EPBSysWrnngIndReq 0 "EPBSysWrnngIndReq_No_Indication" 1 "EPBSysWrnngIndReq_Continuous_Indication" 2 "EPBSysWrnngIndReq_Flash_Rate_1_Indication" 3 "EPBSysWrnngIndReq_Flash_Rate_2_Indication" ; +VAL_ 381 EPBLAppcnSts_S 0 "EPBLAppcnSts_S_0_ParkApplied" 1 "EPBLAppcnSts_S_1_Released" 2 "EPBLAppcnSts_S_2_Unknown" 3 "EPBLAppcnSts_S_3_HoldApplied" 4 "EPBLAppcnSts_S_4_CompletelyReleased" 5 "EPBLAppcnSts_S_5_Applying" 6 "EPBLAppcnSts_S_6_Releasing" ; +VAL_ 425 VehSpdAvgDrvnSrc 0 "VehSpdAvgDrvnSrc_Transmission_Output_Speed" 1 "VehSpdAvgDrvnSrc_Wheel_Speed" ; +VAL_ 425 VehSpdAvgDrvnV 0 "Valid" 1 "Invalid" ; +VAL_ 425 VehSpdAvgNonDrvnV 0 "Valid" 1 "Invalid" ; +VAL_ 425 VehSpdAvgV 0 "Valid" 1 "Invalid" ; +VAL_ 355 DrvrSbltAtc 0 "FALSE" 1 "TRUE" ; +VAL_ 355 DrvrSbltAtcV 0 "DrvrSbltAtcV_0_Valid" 1 "DrvrSbltAtcV_1_Invalid" ; +VAL_ 694 ScurtKeyInvd 0 "FALSE" 1 "TRUE" ; +VAL_ 694 SysBPM 0 "SysBPM_Off" 1 "SysBPM_ACC" 2 "SysBPM_Run" 3 "SysBPM_Crank_Request" ; +VAL_ 694 SysBPMEnbd 0 "FALSE" 1 "TRUE" ; +VAL_ 854 DrvrDoorOpenSts 0 "DrvrDoorOpenSts_Driver_Door_Closed" 1 "DrvrDoorOpenSts_Driver_Door_Open_For_latch_switch_can_t_detect_door_ajar_status_" 2 "DrvrDoorOpenSts_Driver_Door_Ajar" 3 "DrvrDoorOpenSts_Driver_Door_Full_Open" ; +VAL_ 854 NtrlPushASts 0 "NtrlPushASts_0_Norequest" 1 "NtrlPushASts_1_NoActive" 2 "NtrlPushASts_2_Active" ; +VAL_ 854 VehSideLghtSts 0 "VehSideLghtSts_No_side_light_on" 1 "VehSideLghtSts_Left_side_light_on_only" 2 "VehSideLghtSts_Right_side_light_on_only" 3 "VehSideLghtSts_All_side_light_and_license_plate_light_on" ; +VAL_ 819 FOTASts 0 "FOTASts_0_NoneFOTA" 1 "FOTASts_1_FOTA" ; +VAL_ 819 FOTAStsV 0 "FOTAStsV_0_invalid" 1 "FOTAStsV_1_valid" ; +VAL_ 246 EPMCUIMCUParkReqResp 0 "EPMCUIMCUParkReqResp_0_norequest" 1 "EPMCUIMCUParkReqResp_1_requesthornored" 2 "EPMCUIMCUParkReqResp_2_lostarbitration" 3 "EPMCUIMCUParkReqResp_3_controlrequestnotallowforerror" 4 "EPMCUIMCUParkReqResp_4_preconditionnotsatisfied" 5 "EPMCUIMCUParkReqResp_5_Reserved" 6 "EPMCUIMCUParkReqResp_6_Reserved" 7 "EPMCUIMCUParkReqResp_7_Reserved" ; +VAL_ 246 EPMCUMotFltIO 0 "EPMCUMotFltIO_0_False" 1 "EPMCUMotFltIO_1_True" ; +VAL_ 246 EPMCUParkngSts 0 "EPMCUParkngSts_0_Unknown" 1 "EPMCUParkngSts_1_ParkBrakeAppllied" 2 "EPMCUParkngSts_2_ParkBrakeRelease" 3 "EPMCUParkngSts_3_ParkBrakeAppllicationInProgress" ; +VAL_ 246 EPMCUSCUParkReqResp 0 "EPMCUSCUParkReqResp_0_NoRequest" 1 "EPMCUSCUParkReqResp_1_RequestHornored" 2 "EPMCUSCUParkReqResp_2_LostArbitration" 3 "EPMCUSCUParkReqResp_3_ControlRequestNotAllowForError" 4 "EPMCUSCUParkReqResp_4_PreconditionNotSatisfied" ; +VAL_ 246 EPMCUZeroPstnSelfLrnSts 0 "EPMCUZeroPstnSelfLrnSts_0_NoRequest" 1 "EPMCUZeroPstnSelfLrnSts_1_ZeropstnLearningSuccess" 2 "EPMCUZeroPstnSelfLrnSts_2_ZeropstnLearningFail" 3 "EPMCUZeroPstnSelfLrnSts_3_ZeropstnLearningInProgress" ; +VAL_ 71 EPTBrkPdlDscrtInptStsBkup 0 "EPTBrkPdlDscrtInptStsBkup_0_BrakeNotApplied" 1 "EPTBrkPdlDscrtInptStsBkup_1_BrakeApplied" ; +VAL_ 71 EPTBrkPdlDscrtInptStsVBkup 0 "EPTBrkPdlDscrtInptStsBkupV_0_Valid" 1 "EPTBrkPdlDscrtInptStsBkupV_1_Invalid" ; +VAL_ 71 EPTStCmdOnBkup 0 "EPTStCmdOnBkup_0_False" 1 "EPTStCmdOnBkup_1_True" ; +VAL_ 71 EPTTrInptShaftSpdVBkup 0 "EPTTrInptShaftSpdVBkup_0_Valid" 1 "EPTTrInptShaftSpdVBkup_1_Invalid" ; +VAL_ 298 EPTRdyBkup 0 "EPTRdyBkup_0_NotReady" 1 "EPTRdyBkup_1_Ready" ; +VAL_ 298 TrShftLvrPosBkup 0 "TrShftLvrPosBkup_0_BetweenRanges" 1 "TrShftLvrPosBkup_1_ParkRange" 2 "TrShftLvrPosBkup_2_ReverseRange" 3 "TrShftLvrPosBkup_3_NeutralRange" 4 "TrShftLvrPosBkup_4_ForwardRangeA" 5 "TrShftLvrPosBkup_5_ForwardRangeB" 6 "TrShftLvrPosBkup_6_ForwardRangeC" 7 "TrShftLvrPosBkup_7_ForwardRangeD" 8 "TrShftLvrPosBkup_8_ForwardRangeE" 9 "TrShftLvrPosBkup_9_ForwardRangeF" 10 "TrShftLvrPosBkup_10_ForwardRangeG" 11 "TrShftLvrPosBkup_11_ForwardRangeH" 15 "TrShftLvrPosBkup_15_LeverPositionUnknown" ; +VAL_ 298 TrShftLvrPosVBkup 0 "TrShftLvrPosVBkup_0_Valid" 1 "TrShftLvrPosVBkup_1_Invalid" ; +VAL_ v_047_EPTBrkPdlDscrtInptStsBkup 0 "EPTBrkPdlDscrtInptStsBkup_0_BrakeNotApplied" 1 "EPTBrkPdlDscrtInptStsBkup_1_BrakeApplied" ; +VAL_ v_12A_TrShftLvrPosBkup 0 "TrShftLvrPosBkup_0_BetweenRanges" 1 "TrShftLvrPosBkup_1_ParkRange" 2 "TrShftLvrPosBkup_2_ReverseRange" 3 "TrShftLvrPosBkup_3_NeutralRange" 4 "TrShftLvrPosBkup_4_ForwardRangeA" 5 "TrShftLvrPosBkup_5_ForwardRangeB" 6 "TrShftLvrPosBkup_6_ForwardRangeC" 7 "TrShftLvrPosBkup_7_ForwardRangeD" 8 "TrShftLvrPosBkup_8_ForwardRangeE" 9 "TrShftLvrPosBkup_9_ForwardRangeF" 10 "TrShftLvrPosBkup_10_ForwardRangeG" 11 "TrShftLvrPosBkup_11_ForwardRangeH" 15 "TrShftLvrPosBkup_15_LeverPositionUnknown" ; +VAL_ v_12A_EPTRdyBkup 0 "EPTRdyBkup_0_NotReady" 1 "EPTRdyBkup_1_Ready" ; +VAL_ v_12A_TrShftLvrPosVBkup 0 "TrShftLvrPosVBkup_0_Valid" 1 "TrShftLvrPosVBkup_1_Invalid" ; +VAL_ v_047_EPTBrkPdlDscrtInptStsVBkup 0 "EPTBrkPdlDscrtInptStsBkupV_0_Valid" 1 "EPTBrkPdlDscrtInptStsBkupV_1_Invalid" ; +VAL_ v_047_EPTStCmdOnBkup 0 "EPTStCmdOnBkup_0_False" 1 "EPTStCmdOnBkup_1_True" ; +VAL_ v_047_EPTTrInptShaftSpdVBkup 0 "EPTTrInptShaftSpdVBkup_0_Valid" 1 "EPTTrInptShaftSpdVBkup_1_Invalid" ; +VAL_ v_0F6_EPMCUParkngSts 0 "EPMCUParkngSts_0_Unknown" 1 "EPMCUParkngSts_1_ParkBrakeAppllied" 2 "EPMCUParkngSts_2_ParkBrakeRelease" 3 "EPMCUParkngSts_3_ParkBrakeAppllicationInProgress" ; +VAL_ v_356_VehSideLghtSts 0 "VehSideLghtSts_No_side_light_on" 1 "VehSideLghtSts_Left_side_light_on_only" 2 "VehSideLghtSts_Right_side_light_on_only" 3 "VehSideLghtSts_All_side_light_and_license_plate_light_on" ; +VAL_ v_356_DrvrDoorOpenSts 0 "DrvrDoorOpenSts_Driver_Door_Closed" 1 "DrvrDoorOpenSts_Driver_Door_Open_For_latch_switch_can_t_detect_door_ajar_status_" 2 "DrvrDoorOpenSts_Driver_Door_Ajar" 3 "DrvrDoorOpenSts_Driver_Door_Full_Open" ; +VAL_ v_2B6_ScurtKeyInvd 0 "FALSE" 1 "TRUE" ; +VAL_ v_163_DrvrSbltAtcV 0 "DrvrSbltAtcV_0_Valid" 1 "DrvrSbltAtcV_1_Invalid" ; +VAL_ v_163_DrvrSbltAtc 0 "FALSE" 1 "TRUE" ; +VAL_ v_1A9_VehSpdAvgDrvnV 0 "Valid" 1 "Invalid" ; +VAL_ v_156_EPBAppcnSts 0 "EPBAppcnSts_Unknown" 1 "EPBAppcnSts_Park_Brake_Applied" 2 "EPBAppcnSts_Park_Brake_Released" 3 "EPBAppcnSts_Park_Brake_Application_in_Progress" ; +VAL_ v_08A_EPTStCmdOn 0 "EPTStCmdOn_0_False" 1 "EPTStCmdOn_1_True" ; +VAL_ v_08A_EPTRdy 0 "EPTRdy_0_NotReady" 1 "EPTRdy_1_Ready" ; +VAL_ v_1F1_SysPwrMdV 0 "SysPwrMdV_Valid" 1 "SysPwrMdV_Invalid" ; +VAL_ v_1F1_SysPwrMd 0 "SysPwrMd_0_Off" 1 "SysPwrMd_1_ACC" 2 "SysPwrMd_2_Run" 3 "SysPwrMd_3_Crank_Request" ; +VAL_ v_1F1_SysOpnlMd 0 "SysOpnlMd_Normal_Mode" 1 "SysOpnlMd_Manufacturing_Mode" 2 "SysOpnlMd_Transit_Mode" 3 "SysOpnlMd_Show_Room" 4 "SysOpnlMd_Storage_Mode" 5 "SysOpnlMd_Diagnosic_or_Reprogramming_Reserve_" 6 "SysOpnlMd_6_Service_mode" ; +VAL_ v_317_CCUOffBdChrgrPlugOnV 0 "CCUOffBdChrgrPlugOnV_0_Valid" 1 "CCUOffBdChrgrPlugOnV_1_Invalid" ; +VAL_ v_317_CCUOffBdChrgrPlugOn 0 "CCUOffBdChrgrPlugOn_0_Disconnected" 1 "CCUOffBdChrgrPlugOn_1_Connected" 2 "CCUOffBdChrgrPlugOn_2_Semi_connected" ; +SIG_GROUP_ 157 SCU_010ms_PDU00 1 : SCU_010ms_PDU00_CRC SCU_010ms_PDU00_RC SCU_010ms_PDU00_Reserve01 SCU_010ms_PDU00_Reserve02 SCU_010ms_PDU00_Reserve03 SCU_010ms_PDU00_Reserve04 SCU_010ms_PDU00_Reserve05 SCUActrMvmntSts SCUExtdShifterFlr SCUFltLvlWrnng SCUParkLckReq SCUParkLckReqEPMCU SCUParkLckReqV SCUParkLckReqVEPMCU SCUShftLvrPosIncnstntFlag SCUShftLvrPosTrgt SCUShifterLvrPos SCUShifterOpngRmndr SCUShifterPosInvsn; +SIG_GROUP_ 361 CCP_020ms_PDU00 1 : ACAvlbly ADASAvlbly BCMAvlbly BMSAvlbly CCUAvlbly DMSAvlbly EPBAvlbly EPSAvlbly ESCLAvlbly ESSPTCAvlbly FICMAvlbly FLSMAvlbly IPKAvlbly PLCMAvlbly RDAAvlbly SACAvlbly SASAvlbly SCSAvlbly SCUAvlbly SDMAvlbly TBOXAvlbly TDMAvlbly TPMSAvlbly VCUAvlbly; +SIG_GROUP_ 872 CCP_100ms_PDU06 1 : CCP_100ms_PDU06_CRC CCP_100ms_PDU06_RC CCP_100ms_PDU06_Reserve02 PwrMdMstrAccryWkupA VehDrvngMd VehDrvngMdRmndr; +SIG_GROUP_ 342 SCS_020ms_PDU04 1 : EPBAppcnSts EPBAppcnSts_M EPBAvlblySts EPBCCCanclReqd EPBFlrSts EPBSts EPBSwSts EPBSwStsV EPBSysAudWrnngReq EPBSysDspMsgReq EPBSysStsIndReq EPBSysWrnngIndReq SCS_020ms_PDU04_CRC SCS_020ms_PDU04_RC SCS_020ms_PDU04_Reserve01; +SIG_GROUP_ 381 SCS_020ms_PDU43 1 : EPBLAppcnSts_S SCS_020ms_PDU43_CRC SCS_020ms_PDU43_RC SCS_020ms_PDU43_Reserve01 SCS_020ms_PDU43_Reserve02 SCS_020ms_PDU43_Reserve03; +SIG_GROUP_ 425 SCS_020ms_PDU15 1 : SCS_020ms_PDU15_CRC SCS_020ms_PDU15_RC SCS_020ms_PDU15_Reserve01 VehSpdAvg VehSpdAvgDrvn VehSpdAvgDrvnSrc VehSpdAvgDrvnV VehSpdAvgNonDrvn VehSpdAvgNonDrvnV VehSpdAvgV; +SIG_GROUP_ 246 EPMCU_010_PDU01 1 : EPMCU_010_PDU01_CRC EPMCU_010_PDU01_RC EPMCU_010_PDU01_Reserve01 EPMCU_010_PDU01_Reserve02 EPMCU_010_PDU01_Reserve03 EPMCU_010_PDU01_Reserve04 EPMCUIMCUParkReqResp EPMCUMotFltIO EPMCUParkngSts EPMCUSCUParkReqResp EPMCUZeroPstnSelfLrnSts; + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/TestDbc1.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/TestDbc1.dbc new file mode 100644 index 0000000..215b5a2 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/TestDbc1.dbc @@ -0,0 +1,221 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: MCU_F + + +BO_ 336 MCU_F_0x150: 8 MCU_F + SG_ MCU_F_150_CheckSum : 7|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ MCU_F_150_AliveCounter : 11|4@0+ (1,0) [0|15] "" Vector__XXX + SG_ MCU_F_CrtTqVld : 13|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ MCU_F_CrtRotDir : 15|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ MCU_F_CrtSpd : 23|16@0+ (1,-32768) [-32768|32767] "rpm" Vector__XXX + SG_ MCU_F_CrtTq : 39|16@0+ (0.1,-3276.8) [-3276.8|3276.7] "N��m" Vector__XXX + SG_ MCU_F_CrtMod : 51|4@0+ (1,0) [0|15] "" Vector__XXX + SG_ MCU_F_IninSts : 52|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ MCU_F_CrtSpdSigVld : 54|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ MCU_F_HVChkEndFlg : 55|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ MCU_F_HActvDchaSts : 57|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ MCU_F_LVPwrOffReqFlg : 58|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ MCU_F_CrtSts : 60|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ MCU_F_AlrmLamp_FS : 61|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ MCU_F_ASCFltFlg : 62|1@0+ (1,0) [0|1] "" Vector__XXX + + + +CM_ SG_ 336 MCU_F_150_CheckSum "ǰMCU_150_����У���(0x29)MCU_F_150_CheckSum"; +CM_ SG_ 336 MCU_F_150_AliveCounter "ǰMCU_150_���ļ�����MCU_F_150_AliveCounter"; +CM_ SG_ 336 MCU_F_CrtTqVld "ǰ���������ǰת����ЧλMotorFTorquevalidflag"; +CM_ SG_ 336 MCU_F_CrtRotDir "ǰ���������ǰ��ת����MotorFRotingdirection"; +CM_ SG_ 336 MCU_F_CrtSpd "ǰ���������ǰת��MotorFSpeed"; +CM_ SG_ 336 MCU_F_CrtTq "ǰ���������ǰת��MotorFTorque"; +CM_ SG_ 336 MCU_F_CrtMod "ǰ���������ǰ����ģʽMotorFworkingmode"; +CM_ SG_ 336 MCU_F_IninSts "ǰMCU��ʼ��״̬MCUFInitState"; +CM_ SG_ 336 MCU_F_CrtSpdSigVld "ǰ���������ǰת���ź���ЧλMotorFSpeedsignalvalidflag"; +CM_ SG_ 336 MCU_F_HVChkEndFlg "ǰMCU��ѹ�����ɱ�־λMCUFHVCheckStates"; +CM_ SG_ 336 MCU_F_HActvDchaSts "ǰMCU��ѹ�����ŵ�״̬HVActiveDischargeState"; +CM_ SG_ 336 MCU_F_LVPwrOffReqFlg "ǰMCU��ѹ�µ������־λMCUFLVPowerOffRequestFlag"; +CM_ SG_ 336 MCU_F_CrtSts "ǰ���������ǰ״̬MotorFState"; +CM_ SG_ 336 MCU_F_AlrmLamp_FS "������_ǰ�������(���ܰ�ȫ)"; +CM_ SG_ 336 MCU_F_ASCFltFlg "ǰMCU�����־λ��Inverter����������·״̬(ASC)"; +BA_DEF_ BO_ "NmMessage" ENUM "No","Yes"; +BA_DEF_ BO_ "DiagState" ENUM "No","Yes"; +BA_DEF_ BO_ "DiagRequest" ENUM "No","Yes"; +BA_DEF_ BO_ "DiagResponse" ENUM "No","Yes"; +BA_DEF_ BO_ "GenMsgSendType" ENUM "cyclic","NoMsgSendType","IfActive","Event","CA","CE"; +BA_DEF_ BO_ "GenMsgCycleTime" INT 0 0; +BA_DEF_ SG_ "GenSigSendType" ENUM "cyclic","OnChange","OnWrite","IfActive","OnChangeWithRepetition","OnWriteWithRepetition","IfActiveWithRepetition","CA","CE","Event"; +BA_DEF_ SG_ "GenSigStartValue" INT 0 0; +BA_DEF_ SG_ "GenSigInactiveValue" INT 0 0; +BA_DEF_ BO_ "GenMsgCycleTimeFast" INT 0 0; +BA_DEF_ BO_ "GenMsgNrOfRepetition" INT 0 0; +BA_DEF_ BO_ "GenMsgDelayTime" INT 0 0; +BA_DEF_ "DBName" STRING ; +BA_DEF_ BO_ "CANFD_BRS" ENUM "0","1"; +BA_DEF_ BO_ "VFrameFormat" ENUM "StandardCAN","ExtendedCAN","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","StandardCAN_FD","ExtendedCAN_FD"; +BA_DEF_ "BusBaudateData" INT 0 10000; +BA_DEF_ "BusBaudateOther" INT 0 10000; +BA_DEF_ SG_ "NWM-WakeupAllowed" ENUM "No","Yes"; +BA_DEF_ BO_ "GenMsgILSupport" ENUM "No","Yes"; +BA_DEF_ BO_ "GenMsgStartDelayTime" INT 0 65535; +BA_DEF_ BU_ "NmStationAddress" INT 0 63; +BA_DEF_ BU_ "NmNode" ENUM "no","yes"; +BA_DEF_ "NmBaseAddress" HEX 1024 1087; +BA_DEF_ "BusType" STRING ; +BA_DEF_ BU_ "NodeLayerModules" STRING ; +BA_DEF_ BU_ "ECU" STRING ; +BA_DEF_ BU_ "CANoeJitterMax" INT 0 0; +BA_DEF_ BU_ "CANoeJitterMin" INT 0 0; +BA_DEF_ BU_ "CANoeDrift" INT 0 0; +BA_DEF_ BU_ "CANoeStartDelay" INT 0 0; +BA_DEF_ SG_ "sigDespEng" STRING ; +BA_DEF_ SG_ "sigSecLevel" STRING ; +BA_DEF_ SG_ "sigConfig" STRING ; +BA_DEF_ SG_ "sigExplanation" STRING ; +BA_DEF_DEF_ "NmMessage" "No"; +BA_DEF_DEF_ "DiagState" "No"; +BA_DEF_DEF_ "DiagRequest" "No"; +BA_DEF_DEF_ "DiagResponse" "No"; +BA_DEF_DEF_ "GenMsgSendType" "cyclic"; +BA_DEF_DEF_ "GenMsgCycleTime" 0; +BA_DEF_DEF_ "GenSigSendType" "cyclic"; +BA_DEF_DEF_ "GenSigStartValue" 0; +BA_DEF_DEF_ "GenSigInactiveValue" 0; +BA_DEF_DEF_ "GenMsgCycleTimeFast" 0; +BA_DEF_DEF_ "GenMsgNrOfRepetition" 0; +BA_DEF_DEF_ "GenMsgDelayTime" 0; +BA_DEF_DEF_ "DBName" ""; +BA_DEF_DEF_ "CANFD_BRS" "1"; +BA_DEF_DEF_ "VFrameFormat" "StandardCAN"; +BA_DEF_DEF_ "BusBaudateData" 2; +BA_DEF_DEF_ "BusBaudateOther" 500; +BA_DEF_DEF_ "NWM-WakeupAllowed" ""; +BA_DEF_DEF_ "GenMsgILSupport" "Yes"; +BA_DEF_DEF_ "GenMsgStartDelayTime" 0; +BA_DEF_DEF_ "NmStationAddress" 0; +BA_DEF_DEF_ "NmNode" "no"; +BA_DEF_DEF_ "NmBaseAddress" 1024; +BA_DEF_DEF_ "BusType" "CAN FD"; +BA_DEF_DEF_ "NodeLayerModules" ""; +BA_DEF_DEF_ "ECU" ""; +BA_DEF_DEF_ "CANoeJitterMax" 0; +BA_DEF_DEF_ "CANoeJitterMin" 0; +BA_DEF_DEF_ "CANoeDrift" 0; +BA_DEF_DEF_ "CANoeStartDelay" 0; +BA_DEF_DEF_ "sigDespEng" ""; +BA_DEF_DEF_ "sigSecLevel" "QM"; +BA_DEF_DEF_ "sigConfig" ""; +BA_DEF_DEF_ "sigExplanation" ""; +BA_ "BusType" "CAN FD"; +BA_ "DBName" "TEST_DBC_EVBUS_Matrix_CANFD"; +BA_ "GenMsgCycleTime" BO_ 336 10; +BA_ "VFrameFormat" BO_ 336 14; +BA_ "sigExplanation" SG_ 336 MCU_F_150_CheckSum ""; +BA_ "sigConfig" SG_ 336 MCU_F_150_CheckSum ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_150_CheckSum ""; +BA_ "sigDespEng" SG_ 336 MCU_F_150_CheckSum ""; +BA_ "sigExplanation" SG_ 336 MCU_F_150_AliveCounter ""; +BA_ "sigConfig" SG_ 336 MCU_F_150_AliveCounter ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_150_AliveCounter ""; +BA_ "sigDespEng" SG_ 336 MCU_F_150_AliveCounter ""; +BA_ "sigExplanation" SG_ 336 MCU_F_CrtTqVld ""; +BA_ "sigConfig" SG_ 336 MCU_F_CrtTqVld ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_CrtTqVld ""; +BA_ "sigDespEng" SG_ 336 MCU_F_CrtTqVld ""; +BA_ "sigExplanation" SG_ 336 MCU_F_CrtRotDir ""; +BA_ "sigConfig" SG_ 336 MCU_F_CrtRotDir ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_CrtRotDir ""; +BA_ "sigDespEng" SG_ 336 MCU_F_CrtRotDir ""; +BA_ "sigExplanation" SG_ 336 MCU_F_CrtSpd ""; +BA_ "sigConfig" SG_ 336 MCU_F_CrtSpd ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_CrtSpd ""; +BA_ "sigDespEng" SG_ 336 MCU_F_CrtSpd ""; +BA_ "GenSigStartValue" SG_ 336 MCU_F_CrtSpd 32768; +BA_ "sigExplanation" SG_ 336 MCU_F_CrtTq ""; +BA_ "sigConfig" SG_ 336 MCU_F_CrtTq ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_CrtTq ""; +BA_ "sigDespEng" SG_ 336 MCU_F_CrtTq ""; +BA_ "GenSigStartValue" SG_ 336 MCU_F_CrtTq 32768; +BA_ "sigExplanation" SG_ 336 MCU_F_CrtMod ""; +BA_ "sigConfig" SG_ 336 MCU_F_CrtMod ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_CrtMod ""; +BA_ "sigDespEng" SG_ 336 MCU_F_CrtMod ""; +BA_ "GenSigStartValue" SG_ 336 MCU_F_CrtMod 15; +BA_ "sigExplanation" SG_ 336 MCU_F_IninSts ""; +BA_ "sigConfig" SG_ 336 MCU_F_IninSts ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_IninSts ""; +BA_ "sigDespEng" SG_ 336 MCU_F_IninSts ""; +BA_ "sigExplanation" SG_ 336 MCU_F_CrtSpdSigVld ""; +BA_ "sigConfig" SG_ 336 MCU_F_CrtSpdSigVld ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_CrtSpdSigVld ""; +BA_ "sigDespEng" SG_ 336 MCU_F_CrtSpdSigVld ""; +BA_ "sigExplanation" SG_ 336 MCU_F_HVChkEndFlg ""; +BA_ "sigConfig" SG_ 336 MCU_F_HVChkEndFlg ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_HVChkEndFlg ""; +BA_ "sigDespEng" SG_ 336 MCU_F_HVChkEndFlg ""; +BA_ "sigExplanation" SG_ 336 MCU_F_HActvDchaSts ""; +BA_ "sigConfig" SG_ 336 MCU_F_HActvDchaSts ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_HActvDchaSts ""; +BA_ "sigDespEng" SG_ 336 MCU_F_HActvDchaSts ""; +BA_ "sigExplanation" SG_ 336 MCU_F_LVPwrOffReqFlg ""; +BA_ "sigConfig" SG_ 336 MCU_F_LVPwrOffReqFlg ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_LVPwrOffReqFlg ""; +BA_ "sigDespEng" SG_ 336 MCU_F_LVPwrOffReqFlg ""; +BA_ "sigExplanation" SG_ 336 MCU_F_CrtSts ""; +BA_ "sigConfig" SG_ 336 MCU_F_CrtSts ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_CrtSts ""; +BA_ "sigDespEng" SG_ 336 MCU_F_CrtSts ""; +BA_ "sigExplanation" SG_ 336 MCU_F_AlrmLamp_FS ""; +BA_ "sigConfig" SG_ 336 MCU_F_AlrmLamp_FS ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_AlrmLamp_FS ""; +BA_ "sigDespEng" SG_ 336 MCU_F_AlrmLamp_FS ""; +BA_ "sigExplanation" SG_ 336 MCU_F_ASCFltFlg ""; +BA_ "sigConfig" SG_ 336 MCU_F_ASCFltFlg ""; +BA_ "sigSecLevel" SG_ 336 MCU_F_ASCFltFlg ""; +BA_ "sigDespEng" SG_ 336 MCU_F_ASCFltFlg ""; +VAL_ 336 MCU_F_CrtTqVld 3 "Reserved" 2 "Invalid" 1 "Valid" 0 "Initializing" ; +VAL_ 336 MCU_F_CrtRotDir 3 "Reserved" 2 "��ת(����ģʽ)" 1 "��ת(ǰ��ģʽ)" 0 "����״̬" ; +VAL_ 336 MCU_F_CrtSpd 65535 "Invalid" ; +VAL_ 336 MCU_F_CrtTq 65535 "Invalid" ; +VAL_ 336 MCU_F_CrtMod 15 "��ʼ��" 14 "Reserved" 13 "Reserved" 12 "Reserved" 11 "Reserved" 10 "Reserved" 9 "Reserved" 8 "SPO" 7 "Reserved" 6 "Calibration Of A New EM" 5 "�ڲ����������" 4 "Reserved" 3 "Reserved" 2 "�ٶȿ���(�ⲿ���ƻ�·)" 1 "ת��ģʽ" 0 "���� ASC" ; +VAL_ 336 MCU_F_IninSts 1 "��ʼ�������" 0 "��ʼ��δ���" ; +VAL_ 336 MCU_F_CrtSpdSigVld 3 "Reserved" 2 "Invalid" 1 "Valid" 0 "Initializing" ; +VAL_ 336 MCU_F_HVChkEndFlg 1 "�����" 0 "δ���" ; +VAL_ 336 MCU_F_HActvDchaSts 3 "�ŵ�ʧ��" 2 "�ŵ����" 1 "�ŵ���" 0 "δ�ŵ�" ; +VAL_ 336 MCU_F_LVPwrOffReqFlg 1 "�����" 0 "δ���" ; +VAL_ 336 MCU_F_CrtSts 3 "Reserved" 2 "����״̬" 1 "�綯״̬" 0 "����״̬" ; +VAL_ 336 MCU_F_AlrmLamp_FS 1 "Enable" 0 "Disable" ; +VAL_ 336 MCU_F_ASCFltFlg 1 "�쳣" 0 "����" ; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/can1-hyundai-kia-uds-v2.4.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/can1-hyundai-kia-uds-v2.4.dbc new file mode 100644 index 0000000..6e3fef4 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/can1-hyundai-kia-uds-v2.4.dbc @@ -0,0 +1,214 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: + + +BO_ 2028 Battery: 61 Vector__XXX + SG_ StateOfChargeBMS m257 : 63|8@0+ (0.5,3) [0|100] "%" Vector__XXX + SG_ R m98M : 15|16@0+ (1,0) [0|0] "unit" Vector__XXX + SG_ S M : 7|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ MinCellVoltage m257 : 231|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ MaxCellVoltage m257 : 215|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ StateOfChargeDisplay m261 : 279|8@0+ (0.5,3) [0|0] "%" Vector__XXX + SG_ BatteryTemperature1 m257 : 159|8@0- (1,0) [0|0] "degC" Vector__XXX + SG_ BatteryTemperature2 m257 : 167|8@0- (1,0) [0|0] "degC" Vector__XXX + SG_ BatteryTemperature3 m257 : 175|8@0- (1,0) [0|0] "degC" Vector__XXX + SG_ BatteryTemperature4 m257 : 183|8@0- (1,0) [0|0] "degC" Vector__XXX + SG_ BatteryMinTemperature m257 : 151|8@0- (1,0) [0|0] "degC" Vector__XXX + SG_ BatteryMaxTemperature m257 : 143|8@0- (1,0) [0|0] "degC" Vector__XXX + SG_ BatteryHeaterTemperature1 m261 : 215|8@0- (1,0) [0|0] "degC" Vector__XXX + SG_ BatteryVoltageAuxillary m257 : 263|8@0+ (0.1,0) [11|14.6] "V" Vector__XXX + SG_ BatteryTemperature5 m257 : 191|8@0- (1,0) [0|0.5] "V" Vector__XXX + SG_ BatteryFanFeedback m257 : 255|8@0+ (1,0) [0|120] "Hz" Vector__XXX + SG_ BatteryFanStatus m257 : 247|8@0+ (1,0) [0|9] "" Vector__XXX + SG_ NormalChargePort m257 : 101|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ RapidChargePort m257 : 102|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ OperatingTime m257 : 399|32@0+ (0.00027777777,0) [0|1000000] "hours" Vector__XXX + SG_ MinDeterioration m261 : 247|16@0+ (0.1,0) [0|100] "%" Vector__XXX + SG_ MinDeteriorationCellNo m261 : 271|8@0+ (1,0) [0|98] "" Vector__XXX + SG_ MinCellVoltageCellNo m257 : 239|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ MaxCellVoltageCellNo m257 : 223|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ Charging m257 : 103|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ CCC_CumulativeChargeCurrent m257 : 271|32@0+ (0.1,0) [0|1000000] "Ah" Vector__XXX + SG_ CDC_CumulativeDischargeCurrent m257 : 303|32@0+ (0.1,0) [0|1000000] "Ah" Vector__XXX + SG_ CEC_CumulativeEnergyCharged m257 : 335|32@0+ (0.1,0) [0|1000000] "kWh" Vector__XXX + SG_ CED_CumulativeEnergyDischarged m257 : 367|32@0+ (0.1,0) [0|1000000] "kWh" Vector__XXX + SG_ BMSMainRelay m257 : 96|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ BMSIgnition m257 : 426|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ BatteryDCVoltage m257 : 127|16@0+ (0.1,0) [0|0] "V" Vector__XXX + SG_ BatteryCurrent m257 : 111|16@0- (0.1,0) [-230|230] "A" Vector__XXX + SG_ BatteryAvailableChargePower m261 : 159|16@0+ (0.01,0) [0|270] "kW" Vector__XXX + SG_ BatteryAvailableDischargePower m261 : 175|16@0+ (0.01,0) [0|270] "kW" Vector__XXX + SG_ CellVoltage01 m258 : 63|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage02 m258 : 71|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage03 m258 : 79|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage04 m258 : 87|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage05 m258 : 95|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage06 m258 : 103|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage07 m258 : 111|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage08 m258 : 119|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage09 m258 : 127|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage10 m258 : 135|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage11 m258 : 143|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage12 m258 : 151|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage13 m258 : 159|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage14 m258 : 167|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage15 m258 : 175|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage16 m258 : 183|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage17 m258 : 191|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage18 m258 : 199|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage19 m258 : 207|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ CellVoltage20 m258 : 215|8@0+ (0.02,0) [2.8|4.2] "V" Vector__XXX + SG_ StateOfHealth m261 : 231|16@0+ (0.1,0) [0|100] "%" Vector__XXX + +BO_ 1979 TempAndSpeed: 53 Vector__XXX + SG_ IndoorTemperature m256 : 71|8@0+ (0.5,-40) [-50|50] "degC" Vector__XXX + SG_ R m98M : 15|16@0+ (1,0) [0|0] "unit" Vector__XXX + SG_ S M : 7|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ OutdoorTemperature m256 : 79|8@0+ (0.5,-40) [-50|50] "degC" Vector__XXX + SG_ VehicleSpeed m256 : 263|8@0+ (1,0) [0|200] "kmh" Vector__XXX + +BO_ 1960 Tire: 63 Vector__XXX + SG_ R m98M : 15|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ S M : 7|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ TirePressureFrontLeft m49163 : 63|8@0+ (0.2,0) [0|120] "psi" Vector__XXX + SG_ TirePressureFrontRight m49163 : 103|8@0+ (0.2,0) [0|120] "psi" Vector__XXX + SG_ TirePressureBackLeft m49163 : 143|8@0+ (0.2,0) [0|120] "psi" Vector__XXX + SG_ TirePressureBackRight m49163 : 183|8@0+ (0.2,0) [0|120] "psi" Vector__XXX + SG_ TireTemperatureFrontLeft m49163 : 71|8@0+ (1,-50) [-40|65] "degC" Vector__XXX + SG_ TireTemperatureFrontRight m49163 : 111|8@0+ (1,-50) [-40|65] "degC" Vector__XXX + SG_ TireTemperatureBackLeft m49163 : 151|8@0+ (1,-50) [-40|65] "degC" Vector__XXX + SG_ TireTemperatureBackRight m49163 : 191|8@0+ (1,-50) [-40|65] "degC" Vector__XXX + + + +BA_DEF_ SG_ "SignalIgnore" INT 0 1; +BA_DEF_ BO_ "VFrameFormat" ENUM "StandardCAN","ExtendedCAN","StandardCAN_FD","ExtendedCAN_FD","J1939PG"; +BA_DEF_ BO_ "MessageIgnore" INT 0 1; +BA_DEF_ BO_ "TransportProtocolType" STRING ; +BA_DEF_ "BusType" STRING ; +BA_DEF_ "ProtocolType" STRING ; +BA_DEF_ "DatabaseCompiler" STRING ; +BA_DEF_DEF_ "SignalIgnore" 0; +BA_DEF_DEF_ "VFrameFormat" ""; +BA_DEF_DEF_ "MessageIgnore" 0; +BA_DEF_DEF_ "TransportProtocolType" ""; +BA_DEF_DEF_ "BusType" ""; +BA_DEF_DEF_ "ProtocolType" ""; +BA_DEF_DEF_ "DatabaseCompiler" "CSS Electronics (wwww.csselectronics.com)"; +BA_ "BusType" "CAN"; +BA_ "ProtocolType" ""; +BA_ "VFrameFormat" BO_ 2028 0; +BA_ "SignalIgnore" SG_ 2028 R 1; +BA_ "SignalIgnore" SG_ 2028 S 1; +BA_ "SignalIgnore" SG_ 1979 R 1; +BA_ "SignalIgnore" SG_ 1979 S 1; +BA_ "VFrameFormat" BO_ 1960 0; +BA_ "SignalIgnore" SG_ 1960 R 1; +BA_ "SignalIgnore" SG_ 1960 S 1; +BA_ "TransportProtocolType" BO_ 1979 "ISOTP"; +BA_ "TransportProtocolType" BO_ 2028 "ISOTP"; +BA_ "TransportProtocolType" BO_ 1960 "ISOTP"; + +SG_MUL_VAL_ 2028 StateOfChargeBMS R 257-257; +SG_MUL_VAL_ 2028 R S 98-98; +SG_MUL_VAL_ 2028 MinCellVoltage R 257-257; +SG_MUL_VAL_ 2028 MaxCellVoltage R 257-257; +SG_MUL_VAL_ 2028 StateOfChargeDisplay R 261-261; +SG_MUL_VAL_ 2028 BatteryTemperature1 R 257-257; +SG_MUL_VAL_ 2028 BatteryTemperature2 R 257-257; +SG_MUL_VAL_ 2028 BatteryTemperature3 R 257-257; +SG_MUL_VAL_ 2028 BatteryTemperature4 R 257-257; +SG_MUL_VAL_ 2028 BatteryMinTemperature R 257-257; +SG_MUL_VAL_ 2028 BatteryMaxTemperature R 257-257; +SG_MUL_VAL_ 2028 BatteryHeaterTemperature1 R 261-261; +SG_MUL_VAL_ 2028 BatteryVoltageAuxillary R 257-257; +SG_MUL_VAL_ 2028 BatteryTemperature5 R 257-257; +SG_MUL_VAL_ 2028 BatteryFanFeedback R 257-257; +SG_MUL_VAL_ 2028 BatteryFanStatus R 257-257; +SG_MUL_VAL_ 2028 NormalChargePort R 257-257; +SG_MUL_VAL_ 2028 RapidChargePort R 257-257; +SG_MUL_VAL_ 2028 OperatingTime R 257-257; +SG_MUL_VAL_ 2028 MinDeterioration R 261-261; +SG_MUL_VAL_ 2028 MinDeteriorationCellNo R 261-261; +SG_MUL_VAL_ 2028 MinCellVoltageCellNo R 257-257; +SG_MUL_VAL_ 2028 MaxCellVoltageCellNo R 257-257; +SG_MUL_VAL_ 2028 Charging R 257-257; +SG_MUL_VAL_ 2028 CCC_CumulativeChargeCurrent R 257-257; +SG_MUL_VAL_ 2028 CDC_CumulativeDischargeCurrent R 257-257; +SG_MUL_VAL_ 2028 CEC_CumulativeEnergyCharged R 257-257; +SG_MUL_VAL_ 2028 CED_CumulativeEnergyDischarged R 257-257; +SG_MUL_VAL_ 2028 BMSMainRelay R 257-257; +SG_MUL_VAL_ 2028 BMSIgnition R 257-257; +SG_MUL_VAL_ 2028 BatteryDCVoltage R 257-257; +SG_MUL_VAL_ 2028 BatteryCurrent R 257-257; +SG_MUL_VAL_ 2028 BatteryAvailableChargePower R 261-261; +SG_MUL_VAL_ 2028 BatteryAvailableDischargePower R 261-261; +SG_MUL_VAL_ 2028 CellVoltage01 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage02 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage03 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage04 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage05 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage06 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage07 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage08 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage09 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage10 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage11 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage12 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage13 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage14 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage15 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage16 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage17 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage18 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage19 R 258-258; +SG_MUL_VAL_ 2028 CellVoltage20 R 258-258; +SG_MUL_VAL_ 2028 StateOfHealth R 261-261; +SG_MUL_VAL_ 1979 IndoorTemperature R 256-256; +SG_MUL_VAL_ 1979 R S 98-98; +SG_MUL_VAL_ 1979 OutdoorTemperature R 256-256; +SG_MUL_VAL_ 1979 VehicleSpeed R 256-256; +SG_MUL_VAL_ 1960 R S 98-98; +SG_MUL_VAL_ 1960 TirePressureFrontLeft R 49163-49163; +SG_MUL_VAL_ 1960 TirePressureFrontRight R 49163-49163; +SG_MUL_VAL_ 1960 TirePressureBackLeft R 49163-49163; +SG_MUL_VAL_ 1960 TirePressureBackRight R 49163-49163; +SG_MUL_VAL_ 1960 TireTemperatureFrontLeft R 49163-49163; +SG_MUL_VAL_ 1960 TireTemperatureFrontRight R 49163-49163; +SG_MUL_VAL_ 1960 TireTemperatureBackLeft R 49163-49163; +SG_MUL_VAL_ 1960 TireTemperatureBackRight R 49163-49163; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/can1-vw-skoda-audi-uds-v2.5.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/can1-vw-skoda-audi-uds-v2.5.dbc new file mode 100644 index 0000000..dd80327 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/can1-vw-skoda-audi-uds-v2.5.dbc @@ -0,0 +1,133 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: + + +BO_ 2550005883 Battery: 16 Vector__XXX + SG_ StateOfChargeBMS m652 : 31|8@0+ (0.4,0) [0|100] "%" Vector__XXX + SG_ R m98M : 15|16@0+ (1,0) [0|0] "unit" Vector__XXX + SG_ S M : 7|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ Speed m62477 : 31|8@0+ (1,0) [0|0] "km/h" Vector__XXX + SG_ BattTempMain m10763 : 31|8@0+ (0.5,-40) [0|0] "degC" Vector__XXX + SG_ BattTempMin m7951 : 31|16@0+ (0.015625,0) [0|0] "degC" Vector__XXX + SG_ BattTempMax m7950 : 31|16@0+ (0.015625,0) [0|0] "degC" Vector__XXX + SG_ BattCoolingLiquidInlet m6301 : 47|16@0+ (0.015625,0) [0|0] "degC" Vector__XXX + SG_ BattCoolingLiquidOutlet m6301 : 31|16@0+ (0.015625,0) [0|0] "degC" Vector__XXX + SG_ BatteryCurrentHV m7741 : 31|32@0+ (0.01,-1500) [0|0] "A" Vector__XXX + SG_ BatteryVoltageHV m7739 : 31|16@0+ (0.25,0) [0|0] "V" Vector__XXX + SG_ BatteryTotalChargeHV m7730 : 71|32@0+ (0.00011650841202,0) [0|0] "kWh" Vector__XXX + SG_ BatteryTotalDischargeHV m7730 : 103|32@0- (0.00011650841202,0) [0|0] "kWh" Vector__XXX + +BO_ 2550005945 VoltageCurrent: 5 Vector__XXX + SG_ Voltage m18013 : 31|16@0+ (0.001953125,0) [0|0] "V" Vector__XXX + SG_ R m98M : 15|16@0+ (1,0) [0|0] "unit" Vector__XXX + SG_ S M : 7|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ Current m18011 : 31|16@0+ (0.0625,0) [0|0] "A" Vector__XXX + +BO_ 2550005878 Odometer: 6 Vector__XXX + SG_ Odometer m10586 : 31|24@0+ (1,0) [0|0] "km" Vector__XXX + SG_ R m98M : 15|16@0+ (1,0) [0|0] "unit" Vector__XXX + SG_ S M : 7|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ AuxPowerConsumption m25091 : 31|16@0+ (0.1,0) [0|0] "kW" Vector__XXX + +BO_ 1968 Temperature: 5 Vector__XXX + SG_ OutdoorTemp m9737 : 31|8@0+ (0.5,-50) [0|0] "degC" Vector__XXX + SG_ R m98M : 15|16@0+ (1,0) [0|0] "unit" Vector__XXX + SG_ S M : 7|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ IndoorTemp m9747 : 31|16@0+ (0.2,-40) [0|0] "degC" Vector__XXX + SG_ AccelerationPedalPos m62537 : 31|8@0+ (0.39215686275,0) [0|0] "%" Vector__XXX + SG_ Co2ContentInterior m17115 : 39|8@0+ (100,0) [0|0] "ppm" Vector__XXX + + + +BA_DEF_ SG_ "SignalIgnore" INT 0 1; +BA_DEF_ BO_ "VFrameFormat" ENUM "StandardCAN","ExtendedCAN","StandardCAN_FD","ExtendedCAN_FD","J1939PG"; +BA_DEF_ BO_ "MessageIgnore" INT 0 1; +BA_DEF_ BO_ "TransportProtocolType" STRING ; +BA_DEF_ "BusType" STRING ; +BA_DEF_ "ProtocolType" STRING ; +BA_DEF_ "DatabaseCompiler" STRING ; +BA_DEF_DEF_ "SignalIgnore" 0; +BA_DEF_DEF_ "VFrameFormat" ""; +BA_DEF_DEF_ "MessageIgnore" 0; +BA_DEF_DEF_ "TransportProtocolType" ""; +BA_DEF_DEF_ "BusType" ""; +BA_DEF_DEF_ "ProtocolType" ""; +BA_DEF_DEF_ "DatabaseCompiler" "CSS Electronics (wwww.csselectronics.com)"; +BA_ "BusType" "CAN"; +BA_ "ProtocolType" "OBD"; +BA_ "VFrameFormat" BO_ 2550005883 1; +BA_ "TransportProtocolType" BO_ 2550005883 "ISOTP"; +BA_ "SignalIgnore" SG_ 2550005883 R 1; +BA_ "SignalIgnore" SG_ 2550005883 S 1; +BA_ "VFrameFormat" BO_ 2550005945 1; +BA_ "TransportProtocolType" BO_ 2550005945 "ISOTP"; +BA_ "SignalIgnore" SG_ 2550005945 R 1; +BA_ "SignalIgnore" SG_ 2550005945 S 1; +BA_ "VFrameFormat" BO_ 2550005878 1; +BA_ "TransportProtocolType" BO_ 2550005878 "ISOTP"; +BA_ "SignalIgnore" SG_ 2550005878 R 1; +BA_ "SignalIgnore" SG_ 2550005878 S 1; +BA_ "VFrameFormat" BO_ 1968 0; +BA_ "TransportProtocolType" BO_ 1968 "ISOTP"; +BA_ "SignalIgnore" SG_ 1968 R 1; +BA_ "SignalIgnore" SG_ 1968 S 1; + +SG_MUL_VAL_ 2550005883 StateOfChargeBMS R 652-652; +SG_MUL_VAL_ 2550005883 R S 98-98; +SG_MUL_VAL_ 2550005883 Speed R 62477-62477; +SG_MUL_VAL_ 2550005883 BattTempMain R 10763-10763; +SG_MUL_VAL_ 2550005883 BattTempMin R 7951-7951; +SG_MUL_VAL_ 2550005883 BattTempMax R 7950-7950; +SG_MUL_VAL_ 2550005883 BattCoolingLiquidInlet R 6301-6301; +SG_MUL_VAL_ 2550005883 BattCoolingLiquidOutlet R 6301-6301; +SG_MUL_VAL_ 2550005883 BatteryCurrentHV R 7741-7741; +SG_MUL_VAL_ 2550005883 BatteryVoltageHV R 7739-7739; +SG_MUL_VAL_ 2550005883 BatteryTotalChargeHV R 7730-7730; +SG_MUL_VAL_ 2550005883 BatteryTotalDischargeHV R 7730-7730; +SG_MUL_VAL_ 2550005945 Voltage R 18013-18013; +SG_MUL_VAL_ 2550005945 R S 98-98; +SG_MUL_VAL_ 2550005945 Current R 18011-18011; +SG_MUL_VAL_ 2550005878 Odometer R 10586-10586; +SG_MUL_VAL_ 2550005878 R S 98-98; +SG_MUL_VAL_ 2550005878 AuxPowerConsumption R 25091-25091; +SG_MUL_VAL_ 1968 OutdoorTemp R 9737-9737; +SG_MUL_VAL_ 1968 R S 98-98; +SG_MUL_VAL_ 1968 IndoorTemp R 9747-9747; +SG_MUL_VAL_ 1968 AccelerationPedalPos R 62537-62537; +SG_MUL_VAL_ 1968 Co2ContentInterior R 17115-17115; + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/dbc.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/dbc.test.ts new file mode 100644 index 0000000..f2f5e0f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/dbc.test.ts @@ -0,0 +1,388 @@ +import { beforeAll, describe, expect, test } from 'vitest' +import { parseFile } from 'src/main/canmartix' +import { updateSignalPhys } from 'src/renderer/src/database/dbc/calc' +import fs from 'fs' +import path from 'path' +import { CAN_ID_TYPE } from 'src/main/share/can' +import { + getMessageData, + updateSignalRaw, + writeMessageData +} from 'src/renderer/src/database/dbc/calc' +import { tmpdir } from 'os' +const outputJson = path.join(tmpdir(), 'testDBC.json') + +const parse = async (filePath: string) => { + const v = await parseFile(filePath, outputJson) + return v.data +} +describe('DBC Parser Tests', () => { + let dbcContentModel3: string + let dbcContentHyundaiKia: string + let dbcContentVwSkodaAudi: string + let dbcContentTest: string + let floatDbc: string + let evDbc: string + let sgDbc: string + let id200Dbc: string + let test1Dbc: string + let scuDbc: string + let testDbc1: string + let gbkDbc: string + beforeAll(() => { + dbcContentModel3 = path.join(__dirname, 'Model3CAN.dbc') + dbcContentHyundaiKia = path.join(__dirname, 'can1-hyundai-kia-uds-v2.4.dbc') + + dbcContentVwSkodaAudi = path.join(__dirname, 'can1-vw-skoda-audi-uds-v2.5.dbc') + dbcContentTest = path.join(__dirname, 'testdbc.dbc') + floatDbc = path.join(__dirname, 'float.dbc') + ;((evDbc = path.join(__dirname, 'ev.dbc')), 'utf-8') + sgDbc = path.join(__dirname, 'sig_group.dbc') + id200Dbc = path.join(__dirname, 'ID200.dbc') + test1Dbc = path.join(__dirname, 'test1.dbc') + scuDbc = path.join(__dirname, 'SCU.dbc') + testDbc1 = path.join(__dirname, 'TestDbc1.dbc') + gbkDbc = path.join(__dirname, 'gbk.dbc') + }) + test('scu', async () => { + const result = await parse(scuDbc) + + const msg = result.messages.find((m: any) => m.name === 'EOL_Check_77') + expect(msg).toBeDefined() + if (msg) { + expect(msg.signals.find((s) => s.name === 'Eol_KL30_ADC')?.name).toBe('Eol_KL30_ADC') + expect(msg.signals.find((s) => s.name === 'Eol_KL15_ADC')?.name).toBe('Eol_KL15_ADC') + } + }) + test('test1', async () => { + const result = await parse(test1Dbc) + const msg = result.messages.find((m) => m.name === 'InternalReader1_Flt_D_Stat') + expect(msg).toBeDefined() + if (msg) { + expect(msg.id).toBe(655) + expect(msg.signals.find((s) => s.name === 'INT1_VoltageFault')?.name).toBe( + 'INT1_VoltageFault' + ) + expect(msg.signals.find((s) => s.name === 'INT1_FaultStatus')?.name).toBe('INT1_FaultStatus') + expect(msg.signals.find((s) => s.name === 'INT1_AntennaFault')?.name).toBe( + 'INT1_AntennaFault' + ) + } + }) + test('id200', async () => { + const result = await parse(id200Dbc) + expect(result).toBeDefined() + + const msg = result.messages.find((m) => m.id === 0x200) + expect(msg).toBeDefined() + + expect(msg!.name).toBe('Message_200') + const s = msg!.signals.find((s) => s.name === 'HhBmIO') + const s1 = msg!.signals.find((s) => s.name === 'LwBmIO') + + s!.physValue = '1' + s1!.physValue = '1' + updateSignalPhys(s!, result) + updateSignalPhys(s1!, result) + + const buf = getMessageData(msg!) + expect(buf).toEqual(Buffer.from([0x81, 0, 0, 0, 0, 0, 0, 0])) + + const msg1 = result.messages.find((m) => m.id === 12) + expect(msg1).toBeDefined() + + const ns = msg1!.signals.find((s) => s.name === 'UI_audioActive') + const ns1 = msg1!.signals.find((s) => s.name === 'UI_cellVector__XXXPower') + + ns!.physValue = '1' + ns1!.physValue = '-116' + updateSignalPhys(ns!, result) + updateSignalPhys(ns1!, result) + + const buf1 = getMessageData(msg1!) + expect(buf1).toEqual(Buffer.from([0x2, 0, 0, 0xc, 0, 0, 0, 0])) + }) + test('dbc model3', async () => { + const result = await parse(dbcContentModel3) + // Add assertions to verify the parsed values for Model3CAN.dbc + expect(result).toBeDefined() + const msg113 = result.messages.find((m) => m.id === 0x113) + expect(msg113).toBeDefined() + if (msg113) { + expect(msg113.is_fd).toBe(false) + expect(msg113.is_extended_frame).toBe(true) + } + // Add more specific assertions based on the expected structure of Model3CAN.dbc + }) + test('dbc sig_group', async () => { + const result = await parse(sgDbc) + // Add assertions to verify the parsed values for Model3CAN.dbc + expect(result).toBeDefined() + + // Add more specific assertions based on the expected structure of Model3CAN.dbc + }) + + test('dbc can1-hyundai-kia-uds-v2.4', async () => { + const result = await parse(dbcContentHyundaiKia) + // Add assertions to verify the parsed values for can1-hyundai-kia-uds-v2.4.dbc + expect(result).toBeDefined() + // Add more specific assertions based on the expected structure of can1-hyundai-kia-uds-v2.4.dbc + }) + test('dbc testdbc', async () => { + const result = await parse(dbcContentTest) + // Add assertions to verify the parsed values for can1-hyundai-kia-uds-v2.4.dbc + expect(result).toBeDefined() + // Add more specific assertions based on the expected structure of can1-hyundai-kia-uds-v2.4.dbc + }) + test('dbc ev', async () => { + const result = await parse(evDbc) + // Add assertions to verify the parsed values for can1-hyundai-kia-uds-v2.4.dbc + expect(result).toBeDefined() + expect(result.env_vars['V2CTxTime']).toBeDefined() + + // Add more specific assertions based on the expected structure of can1-hyundai-kia-uds-v2.4.dbc + }) + test('float', async () => { + const result = await parse(floatDbc) + // Add assertions to verify the parsed values for can1-hyundai-kia-uds-v2.4.dbc + expect(result).toBeDefined() + const id = 0x12332 + const msg1 = result.messages.find((m) => m.id === id) + expect(msg1).toBeDefined() + const signal1 = msg1!.signals.find((s) => s.name === 'Binary32') + if (msg1) { + expect(signal1!.is_float).toBe(true) + } + + writeMessageData(msg1!, Buffer.from([0, 0, 0x80, 0x3f]), result) + expect(signal1!.physValue).toEqual('1.0') + updateSignalRaw(signal1!) + expect(signal1!.physValue).toEqual('1.0') + expect(getMessageData(msg1!)).toEqual(Buffer.from([0, 0, 0x80, 0x3f])) + + const msg = result.messages.find((m) => m.id === 326) + expect(msg!.name).toBe('ISGF_1') + writeMessageData(msg!, Buffer.from([0xa0, 0x08, 0x7f, 0xff, 0x0, 0x3f, 0xc7, 0xf8]), result) + const signal2 = msg!.signals.find((s) => s.name === 'ISGF_TorqMax_M146') + expect(signal2!.value).toBeDefined() + + writeMessageData(msg!, Buffer.from([0xb2, 0xab, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf8]), result) + expect(signal2!.value).toEqual('1023') + expect(signal2!.physValue).toEqual('Invalid') + + writeMessageData(msg!, Buffer.from([0xa0, 0x08, 0x7f, 0xff, 0x0, 0x3f, 0xc7, 0xf8]), result) + expect(signal2!.value).toEqual('0') + }) + test('dbc can1-vw-skoda-audi-uds-v2.5', async () => { + const result = await parse(dbcContentVwSkodaAudi) + // Add assertions to verify the parsed values for can1-vw-skoda-audi-uds-v2.5.dbc + expect(result).toBeDefined() + + const id = 2550005883 & 0x1fffffff + const msgBattery = result.messages.find((m: { id: number }) => m.id === id) + expect(msgBattery).toBeDefined() + expect(msgBattery!.name).toBe('Battery') + + expect( + msgBattery!.signals.find((s: { name: string }) => s.name === 'StateOfChargeBMS')! + .muxer_for_signal + ).toEqual('R') + expect( + msgBattery!.signals.find((s: { name: string }) => s.name === 'R')!.muxer_for_signal + ).toEqual('S') + + const msgTemp = result.messages.find((m: { id: number }) => m.id === 1968) + expect(msgTemp).toBeDefined() + expect(msgTemp!.name).toBe('Temperature') + expect( + msgTemp!.signals.find((s: { name: string }) => s.name === 'OutdoorTemp')!.muxer_for_signal + ).toEqual('R') + + // Add assertions for signal values + const sigStateOfChargeBMS = msgBattery!.signals.find( + (s: { name: string }) => s.name === 'StateOfChargeBMS' + ) + expect(sigStateOfChargeBMS!.factor).toBe('0.4') + expect(sigStateOfChargeBMS!.offset).toBe('0') + expect(sigStateOfChargeBMS!.min).toBe('0') + expect(sigStateOfChargeBMS!.max).toBe('100') + expect(sigStateOfChargeBMS!.unit).toBe('%') + + const id2 = 2550005945 & 0x1fffffff + const msgVoltage = result.messages.find((m: { id: number }) => m.id === id2) + expect(msgVoltage).toBeDefined() + const sigVoltage = msgVoltage!.signals.find((s: { name: string }) => s.name === 'Voltage') + expect(sigVoltage!.factor).toBe('0.001953125') + expect(sigVoltage!.offset).toBe('0') + expect(sigVoltage!.min).toBe('0') + expect(sigVoltage!.max).toBe('0') + expect(sigVoltage!.unit).toBe('V') + expect(msgVoltage!.name).toBe('VoltageCurrent') + expect(sigVoltage!.muxer_for_signal).toEqual('R') + const id3 = 2550005878 & 0x1fffffff + const msgOdometer = result.messages.find((m: { id: number }) => m.id === id3) + expect(msgOdometer).toBeDefined() + expect(msgOdometer!.name).toBe('Odometer') + const sigOdometer = msgOdometer!.signals.find((s: { name: string }) => s.name === 'Odometer') + expect(sigOdometer!.muxer_for_signal).toEqual('R') + expect(sigOdometer!.factor).toBe('1') + expect(sigOdometer!.offset).toBe('0') + expect(sigOdometer!.min).toBe('0') + expect(sigOdometer!.max).toBe('0') + expect(sigOdometer!.unit).toBe('km') + + const sigOutdoorTemp = msgTemp!.signals.find((s: { name: string }) => s.name === 'OutdoorTemp') + expect(sigOutdoorTemp!.factor).toBe('0.5') + expect(sigOutdoorTemp!.offset).toBe('-50') + expect(sigOutdoorTemp!.min).toBe('0') + expect(sigOutdoorTemp!.max).toBe('0') + expect(sigOutdoorTemp!.unit).toBe('degC') + + expect(msgTemp!.attributes['TransportProtocolType']).toBe('ISOTP') + + const signalIgnore = result.signal_defines.find((s) => s.name === 'SignalIgnore') + // Add assertions for BA_DEF_ and BA_DEF_DEF_ + expect(signalIgnore).toBeDefined() + expect(signalIgnore!.type).toBe('INT') + expect(signalIgnore!.define).toBe('INT 0 1') + expect(signalIgnore!.default).toBe('0') + + const frameDefine = result.frame_defines.find((s) => s.name === 'VFrameFormat') + expect(frameDefine).toBeDefined() + expect(frameDefine!.type).toBe('ENUM') + expect(frameDefine!.define).toEqual( + 'ENUM "StandardCAN","ExtendedCAN","StandardCAN_FD","ExtendedCAN_FD","J1939PG"' + ) + expect(frameDefine!.default).toBe('') + + const msg17fe = result.messages.find((m: { id: number }) => m.id === 0x17fe007b) + expect(msg17fe).toBeDefined() + expect(msg17fe!.signals.find((s: { name: string }) => s.name === 'S')!.start_bit).toBe(0) + expect(msg17fe!.signals.find((s: { name: string }) => s.name === 'R')!.start_bit).toBe(16) + expect( + msg17fe!.signals.find((s: { name: string }) => s.name === 'BattTempMain')!.start_bit + ).toBe(24) + expect(msg17fe!.signals.find((s: { name: string }) => s.name === 'Speed')!.start_bit).toBe(24) + expect( + msg17fe!.signals.find((s: { name: string }) => s.name === 'BatteryCurrentHV')!.start_bit + ).toBe(48) + expect( + msg17fe!.signals.find((s: { name: string }) => s.name === 'BatteryVoltageHV')!.start_bit + ).toBe(32) + expect( + msg17fe!.signals.find((s: { name: string }) => s.name === 'BatteryTotalChargeHV')!.start_bit + ).toBe(88) + expect( + msg17fe!.signals.find((s: { name: string }) => s.name === 'BatteryTotalDischargeHV')! + .start_bit + ).toBe(120) + }) + + test('id2001.dbc', async () => { + const id2001Dbc = path.join(__dirname, 'id2001.dbc') + const result = await parse(id2001Dbc) + expect(result).toBeDefined() + const msg = result.messages.find((m) => m.id === 0x200) + expect(msg!.name).toBe('Message_200') + //set signal value + const s = msg!.signals.find((s) => s.name === 'test') + expect(s).toBeDefined() + s!.value = '14' + updateSignalRaw(s!) + expect(s!.physValue).toBe('14') + const buf = getMessageData(msg!) + + expect(buf).toEqual(Buffer.from([0, 0, 0, 1, 0xc0, 0, 0, 0])) + writeMessageData(msg!, Buffer.from([0, 0, 0, 0xce, 0x80, 0, 0, 0]), result) + expect(s!.value).toBe('1652') + }) + + test('IP_CURRENT unsigned 32-bit 0x80000002 (prepare_c01.dbc)', async () => { + // Use DBC with IP_CURRENT at start_bit 0 (same scale/offset as prepare_c01.dbc) + const dbcPath = path.join(__dirname, 'ip_current_start0.dbc') + const result = await parse(dbcPath) + expect(result).toBeDefined() + const msg = result.messages.find((m) => m.id === 962) + expect(msg).toBeDefined() + const ipCurrent = msg!.signals.find((s) => s.name === 'IP_CURRENT') + expect(ipCurrent).toBeDefined() + expect(ipCurrent!.is_signed).toBe(false) + // Buffer for 0x80000002: bytes 0-3 = 0x02,0x00,0x00,0x80 (little endian) + writeMessageData(msg!, Buffer.from([0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00]), result) + expect(ipCurrent!.value).toBe('2147483650') + expect(ipCurrent!.physValue).toBe('2') + }) + + test('testDbc1.dbc', async () => { + const result = await parse(testDbc1) + expect(result).toBeDefined() + const msg = result.messages.find((m) => m.id === 0x150) + expect(msg).toBeDefined() + writeMessageData(msg!, Buffer.from([0xb7, 0x1b, 0x80, 0x02, 0x80, 0, 0xb5, 0xa0]), result) + const s = msg!.signals.find((s) => s.name === 'MCU_F_CrtSpd') + expect(s!.value).toBe('32770') + expect(s!.physValue).toBe('2') + + const buf = getMessageData(msg!) + // The original buffer has 0xA0 (10100000) at the end, but the DBC defines no signal for bit 63 (MSB). + // getMessageData reconstructs the buffer from signals, so the unmapped bit 63 becomes 0. + // Result is 0x20 (00100000). + expect(buf).toEqual(Buffer.from([0xb7, 0x1b, 0x80, 0x02, 0x80, 0, 0xb5, 0x20])) + + s!.physValue = '3' + updateSignalPhys(s!, result) + const buf1 = getMessageData(msg!) + expect(buf1).toEqual(Buffer.from([0xb7, 0x1b, 0x80, 0x03, 0x80, 0, 0xb5, 0x20])) + }) + + test('gbk.dbc - GBK-encoded Chinese strings are correctly decoded', async () => { + const result = await parse(gbkDbc) + expect(result).toBeDefined() + + // Enumerations: RelayStatus (VAL_TABLE) - 断开/闭合 + const relayStatus = result.enumerations?.RelayStatus + expect(relayStatus).toBeDefined() + expect(relayStatus!['0']).toBe('断开') + expect(relayStatus!['1']).toBe('闭合') + + // Enumerations: Communication_Status - 通讯正常 / 通讯指令超时或收到指令异常 + const commStatus = result.enumerations?.Communication_Status + expect(commStatus).toBeDefined() + expect(commStatus!['0']).toBe('通讯正常') + expect(commStatus!['1']).toContain('通讯') + + // Signal BMS_PowerOnReady values (VAL_ per message) + const msgBmsCts = result.messages.find( + (m: { name: string; id: number }) => m.name === 'BMS_CTS_1082F5F2' || m.id === 2424501746 + ) + expect(msgBmsCts).toBeDefined() + const powerOnReady = msgBmsCts!.signals.find( + (s: { name: string }) => s.name === 'BMS_PowerOnReady' + ) + expect(powerOnReady).toBeDefined() + expect(powerOnReady!.values).toBeDefined() + expect(powerOnReady!.values!['0']).toBe('未准备') + expect(powerOnReady!.values!['1']).toBe('准备') + expect(powerOnReady!.values!['2']).toBe('错误') + expect(powerOnReady!.values!['3']).toBe('保留') + + // Signal comment: BMS_NegativeInsulationResistance - 负绝缘电阻值 + const negInsul = msgBmsCts!.signals.find( + (s: { name: string }) => s.name === 'BMS_NegativeInsulationResistance' + ) + expect(negInsul).toBeDefined() + expect(negInsul!.comment).toBe('负极绝缘阻值') + + // Signal unit: BMS_CellPoleTempT1 - 度 (from VECTOR__INDEPENDENT_SIG_MSG) + const vectorMsg = result.messages.find( + (m: { name: string; id: number }) => + m.name === 'VECTOR__INDEPENDENT_SIG_MSG' || m.id === 3221225472 + ) + expect(vectorMsg).toBeDefined() + const cellPoleTemp = vectorMsg!.signals.find( + (s: { name: string }) => s.name === 'BMS_CellPoleTempT1' + ) + expect(cellPoleTemp).toBeDefined() + expect(cellPoleTemp!.unit).toBe('℃') + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ev.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ev.dbc new file mode 100644 index 0000000..be7d216 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ev.dbc @@ -0,0 +1,92 @@ +VERSION "0.1" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: Receiver ChassisBus VehicleBus V2C + + +BO_ 2 GPSLatLong: 8 ChassisBus + SG_ GPSAccuracy : 57|7@1+ (0.2,0) [0|25] "m" Receiver + SG_ GPSLongitude : 28|28@1- (1E-006,0) [-134.22|134.22] "Deg" Receiver + SG_ GPSLatitude : 0|28@1- (1E-006,0) [-134.22|134.22] "Deg" Receiver + +BO_ 3 GPSAltitude: 2 VehicleBus + SG_ GPSAltitude : 0|14@1- (1,0) [-1000|7000] "M" Receiver + +BO_ 4 SOC: 8 VehicleBus + SG_ SOCavg : 30|10@1+ (0.1,0) [0|100] "%" Receiver + +BO_ 5 GPSSpeed: 8 VehicleBus + SG_ GPSSpeed : 12|12@1+ (0.2,-10) [-50|300] "kph" Receiver + +BO_ 6 BatteryCurrent: 8 VehicleBus + SG_ RawBattCurrent : 32|16@1- (0.05,-800) [-1000|1000] "A" Receiver + SG_ SmoothBattCurrent : 16|16@1- (-0.5,0) [-1000|1000] "A" Receiver + SG_ BattVoltage : 0|16@1+ (0.1,0) [0|1000] "V" Receiver + +BO_ 7 PowerState: 2 VehicleBus + SG_ PowerState : 14|2@1+ (1,0) [0|3] "" Receiver + + + +EV_ V2CTxTime: 0 [0|60000] "ms" 2000 1 DUMMY_NODE_VECTOR1 V2C,VehicleBus; + +EV_ GPSGroupTxFreq: 0 [0|60000] "ms" 600 2 DUMMY_NODE_VECTOR1 V2C; + +EV_ EnergyGroupTxFreq: 0 [0|60000] "ms" 500 3 DUMMY_NODE_VECTOR0 V2C; + +BA_DEF_ BO_ "TxGroupFreq" STRING ; +BA_DEF_ SG_ "AggType" STRING ; +BA_DEF_ EV_ "V2CTxTime1" STRING ; +BA_DEF_DEF_ "TxGroupFreq" ""; +BA_DEF_DEF_ "AggType" ""; +BA_DEF_DEF_ "V2CTxTime1" ""; +BA_ "TxGroupFreq" BO_ 2 "GPSGroupTxFreq"; +BA_ "TxGroupFreq" BO_ 3 "GPSGroupTxFreq"; +BA_ "TxGroupFreq" BO_ 4 "EnergyGroupTxFreq"; +BA_ "TxGroupFreq" BO_ 5 "GPSGroupTxFreq"; +BA_ "TxGroupFreq" BO_ 6 "EnergyGroupTxFreq"; +BA_ "TxGroupFreq" BO_ 7 "GPSGroupTxFreq"; +BA_ "AggType" SG_ 2 GPSAccuracy "LAST"; +BA_ "AggType" SG_ 2 GPSLongitude "LAST"; +BA_ "AggType" SG_ 2 GPSLatitude "LAST"; +BA_ "AggType" SG_ 3 GPSAltitude "LAST"; +BA_ "AggType" SG_ 4 SOCavg "LAST"; +BA_ "AggType" SG_ 5 GPSSpeed "LAST"; +BA_ "AggType" SG_ 6 RawBattCurrent "AVG"; +BA_ "AggType" SG_ 6 SmoothBattCurrent "AVG"; +BA_ "AggType" SG_ 6 BattVoltage "AVG"; +BA_ "AggType" SG_ 7 PowerState "LAST"; + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/float.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/float.dbc new file mode 100644 index 0000000..73bf66b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/float.dbc @@ -0,0 +1,113 @@ +// A comment. + +VERSION "2.0" // Another comment. + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: FOO BAR FIE FUM +VAL_TABLE_ State 1 "Enabled" 0 "Disabled" ; + + +BO_ 2147558192 Foo: 8 FOO + SG_ Foo : 0|12@0- (0.01,250) [229.53|270.47] "degK" BAR + SG_ Bar : 24|32@0- (0.1,0) [0|5] "m" FOO + +BO_ 2147558193 Fum: 5 FOO + SG_ Fum : 0|12@1- (1,0) [0|10] "" BAR + SG_ Fam : 12|12@1- (1,0) [0|8] "" BAR + +BO_ 2147558194 Bar: 4 FOO + SG_ Binary32 : 0|32@1- (1,0) [0|0] "" FUM + +BO_ 2147558195 CanFd: 64 FOO + SG_ Fie : 0|64@1+ (1,0) [0|0] "" FUM + SG_ Fas : 64|64@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 326 ISGF_1: 8 PDC01 + SG_ ISGF_TorqAct_M146 : 51|11@0+ (0.25,-255) [-255|255] "Nm" Vector__XXX + SG_ ISGF_TorqMin_M146 : 45|10@0+ (0.25,-255) [-255|0] "Nm" Vector__XXX + SG_ ISGF_TorqMax_M146 : 39|10@0+ (0.25,0) [0|255] "Nm" Vector__XXX + SG_ ISGF_SpdAct_M146 : 23|16@0+ (1,-32767) [-32766|32767] "rpm" Vector__XXX + SG_ ISGF_1_RollgCntr1_M146 : 11|4@0+ (1,0) [0|14] "" Vector__XXX + SG_ ISGF_Modest_M146 : 15|4@0+ (1,0) [0|15] "" Vector__XXX + SG_ ISGF_1_CRC1_M146 : 7|8@0+ (1,0) [0|255] "" Vector__XXX + +BO_ 780 FOOBAR: 8 FIE + SG_ ACC_02_CRC : 0|12@1- (1,0) [0|1] "" BAR + + +CM_ "global comment/全局注释" +CM_ BU_ BAR "fam \"1\""; +CM_ BU_ BAR "dsdsd - qweqweqw"; +CM_ BO_ 2147558192 "Foo."; +CM_ SG_ 2147558192 Bar "Bar."; +BA_DEF_ "DBName" STRING ; +BA_DEF_ "Baudrate" INT 0 1000000; +BA_DEF_ "AFloat" FLOAT 0 100; +BA_DEF_ "BusType" STRING ; +BA_DEF_ BU_ "FOO" INT 0 100; +BA_DEF_ BU_ "BAR" STRING ; +BA_DEF_ BO_ "VFrameFormat" ENUM "StandardCAN","ExtendedCAN","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","StandardCAN_FD","ExtendedCAN_FD"; +BA_DEF_ BO_ "GenMsgStartValue" STRING ; +BA_DEF_ BO_ "GenMsgCycleTime" INT 0 1000; +BA_DEF_DEF_ "DBName" ""; +BA_DEF_DEF_ "Baudrate" 125000; +BA_DEF_DEF_ "AFloat" 0; +BA_DEF_DEF_ "BusType" ""; +BA_DEF_DEF_ "FOO" 0; +BA_DEF_DEF_ "BAR" ""; +BA_DEF_DEF_ "VFrameFormat" "ExtendedCAN_FD"; +BA_DEF_DEF_ "GenMsgStartValue" ""; +BA_DEF_DEF_ "GenMsgCycleTime" 100; +BA_ "DBName" "TheBusName"; +BA_ "Baudrate" 125000; +BA_ "AFloat" 33.5; +BA_ "BusType" "CAN FD"; +BA_ "BAR" BU_ FIE "FUM"; +BA_ "FOO" BU_ FIE 1; +BA_ "VFrameFormat" BO_ 2147558192 1; +BA_ "VFrameFormat" BO_ 2147558193 1; +BA_ "GenMsgCycleTime" BO_ 2147558193 1; +BA_ "VFrameFormat" BO_ 2147558194 1; +BA_ "VFrameFormat" BO_ 2147558195 15; +BA_ "VFrameFormat" BO_ 780 0; +VAL_ 2147558193 Fam 1 "Enabled" 0 "Disabled" ; +VAL_ 326 ISGF_TorqAct_M146 2047 "Invalid" ; +VAL_ 326 ISGF_TorqMin_M146 1023 "Invalid" ; +VAL_ 326 ISGF_TorqMax_M146 1023 "Invalid" ; +VAL_ 326 ISGF_SpdAct_M146 65535 "Invalid" ; + +SIG_VALTYPE_ 2147558192 Bar : 1; +SIG_VALTYPE_ 2147558194 Binary32 : 1; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/gbk.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/gbk.dbc new file mode 100644 index 0000000..ee6a7e8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/gbk.dbc @@ -0,0 +1,867 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: TMS BlackBox EVCC MCU CDU VCU UDAN BMS +VAL_TABLE_ OBC_WorkingEnable 3 "EndCharging" 2 "StopOutputting" 1 "StartCharging" ; +VAL_TABLE_ OBC_WorkingMode 1 "Heating" 0 "Charging" ; +VAL_TABLE_ CDU_DCDC_InputVoltage_Status 3 "NoInput" 2 "OverVoltage" 1 "UnderVoltage" 0 "Normal" ; +VAL_TABLE_ CDU_DCDC_Protect 1 "Protecting" 0 "Normal" ; +VAL_TABLE_ CDU_IGN 2 "Stop" 1 "Ignition" ; +VAL_TABLE_ TMS_HV_Status_FeedBack 2 "HighVoltagePowerOn" 1 "HighVoltagePowerOff" 0 "Invalid" ; +VAL_TABLE_ TMS_Status_FeedBack 3 "Self-CycleMode" 2 "HeatingMode" 1 "CoolingMode" 0 "shutdown" ; +VAL_TABLE_ TMS_Status 1 "PowerOff" 0 "PowerOn" ; +VAL_TABLE_ BMS_AlarmCode 255 "Invalid" 254 "Abnormal" 4 "Level_4_Fault" 3 "Level_3_Fault" 2 "Level_2_Fault" 1 "Level_1_Fault" 0 "No Fault" ; +VAL_TABLE_ EVCC_Error 1 "Fault" 0 " Normal" ; +VAL_TABLE_ ElectronicLockState 1 "lock" 0 "Unlock" ; +VAL_TABLE_ EVCC_CP_Status 6 "CP Fault" 5 "6V PWM" 4 "6V DC" 3 "9V PWM" 2 "9V DC" 1 "12V DC" 0 "Default" ; +VAL_TABLE_ EVCC_CC2_State 1 "Output" 0 "No output" ; +VAL_TABLE_ EVCC_APlus_State 1 "Output" 0 "No output" ; +VAL_TABLE_ EVCC_WorkingStatus 2 "Fault" 1 "Charging" 0 "Waiting" ; +VAL_TABLE_ EVCC_Charging_Mode 2 "AC Charging Mode" 1 "DC Charging Mode" 0 "No charge" ; +VAL_TABLE_ SocStartDia_FullCalib 8 "²ÎÊý¶Áȡʧ°Ü" 7 "У׼ÑÓʱÖÐ" 6 "ƽ¾ùµçѹ¹ýµÍ" 5 "ƽ¾ùµçѹ¹ý¸ß" 4 "SOC¹ýµÍ" 3 "SOC¹ý¸ß" 2 "У׼δÊͷÅ" 1 "У׼Õý³£" 0 "δ´¥·¢" ; +VAL_TABLE_ RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_TABLE_ RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_TABLE_ Communication_Status 1 "ͨѶָÁʱ»òÊյ½ָÁîÒ쳣" 0 "ͨѶÕý³£" ; +VAL_TABLE_ Start_Staus 1 "µç³صçѹÕý³£²»¿ÉÒÔÆô¶¯" 0 "µç³صçѹÕý³£¿ÉÒÔÆô¶¯" ; +VAL_TABLE_ Input_Voltage 1 "ÊäÈëµçѹ´íÎó³äµç»úͣ»ú" 0 "Õý³£" ; +VAL_TABLE_ OBC_Tempreture 1 "³äµç»úζȹý¸߱£»¤" 0 "Õý³£" ; +VAL_TABLE_ HardWare_Fault 1 "Ӳ¼þ¹ÊÕÏ" 0 "Õý³£" ; + + +BO_ 3221225472 VECTOR__INDEPENDENT_SIG_MSG: 0 Vector__XXX + SG_ New_Signal_215 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ BMS_CellPoleTempT6 : 0|8@0- (1,-50) [0|255] "¡æ" Vector__XXX + SG_ BMS_CellPoleTempT5 : 0|8@0- (1,-50) [0|255] "¡æ" Vector__XXX + SG_ BMS_CellPoleTempT4 : 0|8@0- (1,-50) [0|255] "¡æ" Vector__XXX + SG_ BMS_CellPoleTempT3 : 0|8@0- (1,-50) [0|255] "¡æ" Vector__XXX + SG_ BMS_CellPoleTempT2 : 0|8@0- (1,-50) [0|255] "¡æ" Vector__XXX + SG_ BMS_CellPoleTempT1 : 0|8@0- (1,-50) [0|255] "¡æ" Vector__XXX + SG_ BMS_CellPoleTempSartNum : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ BMS_PoleTempLTMaxNum : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ BMS_PoleTempLTMax : 0|8@0- (1,-50) [0|255] "" Vector__XXX + SG_ BMS_PoleTempHTMaxNum : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ BMS_PoleTempHTMax : 0|8@0- (1,-50) [0|255] "¡æ" Vector__XXX + SG_ CCS1_Retain : 0|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ CCS1_StartState : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ HeatCur : 0|16@0+ (0.1,0) [0|1000] "A" Vector__XXX + SG_ Statistic_CellLtMaxBmsIndex : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ Statistic_CellLtMaxBatIndex : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ Statistic_CellHtMaxBmsIndex : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ Statistic_CellHtMaxBatIndex : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ Statistic_CellLVMaxBmsIndex : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ Statistic_CellLVMaxBatIndex : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ Statistic_CellHVMaxBmsIndex : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ Statistic_CellHVMaxBatIndex : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ NO15_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO15_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO15_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO14_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO14_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO14_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO13_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO13_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO13_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO12_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO12_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO12_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO11_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO11_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO11_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO10_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO10_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO10_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO9_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO9_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO9_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO8_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO8_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO8_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO7_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO7_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO7_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO6_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO6_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO6_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO5_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO5_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO5_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO4_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO4_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO4_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO3_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO3_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO3_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO2_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO2_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO2_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO1_RelayIndex : 0|5@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO1_RelayFaultStatus : 0|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ NO1_RelayStatus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ RelayNum : 0|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ Communication_Status : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ Start_Staus : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ Input_Voltage : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ OBC_Tempreture : 0|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ HardWare_Fault : 0|1@0- (1,0) [0|0] "" Vector__XXX + SG_ OBC_Current : 0|16@0+ (0.1,0) [0|65535] "A" Vector__XXX + SG_ OBC_Voltage : 0|16@0+ (0.1,0) [0|6553.5] "V" Vector__XXX + SG_ NTC2_Temperature : 0|8@0- (1,-50) [0|0] "" Vector__XXX + SG_ NTC1_Temperature : 0|8@0- (1,-50) [0|0] "" Vector__XXX + SG_ BMS_HeatingTempLTMaxNum : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ BMS_HeatingTempLTMax : 0|8@0- (1,-50) [0|255] "¡æ" Vector__XXX + SG_ BMS_HeatingTempHTMaxNum : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ BMS_HeatingTempHTMax : 0|8@0- (1,-50) [0|255] "¡æ" Vector__XXX + SG_ OBC_Voltage : 0|16@0+ (0.1,0) [0|65535] "V" Vector__XXX + SG_ OBC_Temperature : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ OBC_StartStatus : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ OBC_OutputShortOut : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ OBC_InputVoltage : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ OBC_HardwareFault : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ OBC_Current : 0|16@0+ (0.1,0) [0|65535] "A" Vector__XXX + SG_ OBC_CommunicateStatus : 0|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 2550173648 CDU_DCDC_Status: 8 CDU + SG_ CDU_DCDC_InputVoltageStatus : 35|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ CDU_DCDC_OverTemperaturePotect : 33|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ CDU_DCDC_HardWarePotect : 32|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ CDU_DCDC_OuputCurrent : 23|16@0+ (0.1,0) [0|0] "A" Vector__XXX + SG_ CDU_DCDC_OuputVoltage : 7|16@0+ (0.1,0) [0|0] "V" Vector__XXX + +BO_ 2550255759 CDU_DCDC_IGNITION: 8 VCU + SG_ CDU_DCDC_IGN : 7|8@0+ (1,0) [0|0] "" Vector__XXX + +BO_ 2 New_Message_34: 8 Vector__XXX + SG_ New_Signal_279 : 16|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 1 New_Message_33: 8 Vector__XXX + SG_ New_Signal_278 : 32|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 0 New_Message_32: 8 Vector__XXX + SG_ New_Signal_277 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 2550264754 TMS_BMSStatus_1801F3B2: 7 TMS + SG_ TMS_TMUStatus : 40|1@0+ (1,0) [0|7] "" Vector__XXX + SG_ TMS_StatusFbk : 43|3@0+ (1,0) [0|3] "" Vector__XXX + SG_ TMS_OutletTemp : 15|8@0+ (1,40) [0|0] "" Vector__XXX + SG_ TMS_InletTemp : 23|8@0+ (1,40) [0|0] "" Vector__XXX + SG_ TMS_ID : 7|8@0+ (1,0) [0|0] "" BlackBox,BMS + SG_ TMS_HVStatus : 45|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ TMS_FaultLevel : 49|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ TMS_FaultCode : 55|6@0+ (1,0) [0|0] "" BlackBox,BMS + SG_ TMS_CoolantLevel : 31|8@0+ (1,0) [0|100] "%" BlackBox,BMS + SG_ TMS_CompLoadRate : 39|8@0+ (1,0) [0|100] "%" BlackBox,BMS + +BO_ 2550248179 BMS_TMS_1801B2F3: 8 BMS + SG_ BMS_TMS_SetTemp : 47|8@0+ (1,40) [0|0] "" Vector__XXX + SG_ BMS_TMS_Mode : 51|4@0+ (1,0) [0|5] "" Vector__XXX + SG_ BMS_TMS_MinTemp : 31|8@0+ (1,40) [0|0] "" Vector__XXX + SG_ BMS_TMS_MaxTemp : 23|8@0+ (1,40) [-40|215] "" BlackBox,TMS + SG_ BMS_TMS_Life : 63|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ BMS_TMS_HV : 53|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ BMS_TMS_AverageTemp : 39|8@0+ (1,40) [0|0] "" Vector__XXX + SG_ BMS_TMS_BatVol : 7|16@0+ (1,0) [0|1500] "" BlackBox,TMS + +BO_ 2633172212 BMS_VCU_1CF304F4: 8 Vector__XXX + SG_ BMS_SoftwareVersion : 39|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ BMS_PackSpe : 55|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ BMS_HardwareVersion : 23|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ BMS_BMSManIndex : 15|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ VCU_BatMaxSlowChgCurIndex : 7|8@0+ (1,0) [0|4] "" Vector__XXX + +BO_ 2633171956 VCU_BMS2_1CF303F4: 5 VCU + SG_ VCU_ConRequest1 : 7|24@0+ (1,0) [0|0] "" BMS + SG_ VCU_BatMaxSlowChgCurXor : 39|8@0+ (1,0) [0|0] "" BMS + SG_ VCU_BatMaxSlowChgCurIndex : 31|8@0+ (1,0) [0|4] "" Vector__XXX + +BO_ 2425026034 BMS_Info2_108AF5F2: 7 BMS + SG_ CCS1_S2SwitchStatus : 48|1@0+ (1,0) [0|3] "" VCU + SG_ BMS_Vol_KeyOn : 7|16@0- (0.1,0) [0|360] "V" VCU + SG_ BMS_Vol_K30 : 39|16@0- (0.1,0) [0|360] "" VCU + SG_ BMS_Vol_ChargerOn : 23|16@0- (0.1,0) [0|360] "" VCU + +BO_ 2566869221 CCS1_OBC_18FF50E5: 8 Vector__XXX + SG_ CCS1_PumpEn : 45|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ CCS1_InitStatus : 43|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ CCS1_FanEn : 44|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ CCS1_ChargerStatus : 42|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ CCS1_BatShort : 39|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ CCS1_BatOverCurrent : 38|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ CCS1_BatLow : 36|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ CCS1_BatHigh : 37|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ CCS1_ChgInterTemp : 63|8@0+ (1,-40) [-40|215] "¡æ" Vector__XXX + SG_ CCS1_CPStatusAlarm : 50|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ CCS1_CCStatusAlarm : 49|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ CCS1_ChgSocketOverTempAlarm : 51|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ CCS1_ElectLockStatus : 54|3@0+ (1,0) [0|0] "" Vector__XXX + SG_ CCS1_S2SwitchStatus : 55|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ CCS1_CommunicationStatus : 40|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ CCS1_InputVolt : 35|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ OBC_OverTemperatureProtection : 33|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ OBC_HardwareProtection : 32|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ OBC_OutputCurrent : 23|16@0+ (0.1,0) [0|6553.5] "A" Vector__XXX + SG_ OBC_OutputVolt : 7|16@0+ (0.1,0) [0|6553.5] "V" Vector__XXX + +BO_ 2550588916 BMS_OBCChgInfo: 8 BMS + SG_ BOCI_Reserved2 : 63|8@0+ (1,0) [0|0] "" CDU + SG_ BOCI_Reserved1 : 55|8@0+ (1,0) [0|0] "" CDU + SG_ BOCI_Mode : 47|8@0+ (1,0) [0|0] "" CDU + SG_ BOCI_ChgStartToReChg : 39|8@0+ (1,0) [0|0] "" CDU + SG_ BOCI_MaxAllowChargeCurr : 23|16@0+ (0.1,0) [0|6553.5] "A" CDU + SG_ BOCI_MaxAllowChargeEndVolt : 7|16@0+ (0.1,0) [0|6553.5] "V" CDU + +BO_ 2425943538 BMS_CumuTimeInfo_1098F5F2: 8 Vector__XXX + SG_ SOH : 55|16@0+ (0.1,0) [0|100] "%" Vector__XXX + SG_ Charge_Time : 39|16@0+ (1,0) [0|0] "min" Vector__XXX + SG_ Pack_LeftCap : 23|16@0+ (0.1,0) [0|6553.5] "AH" Vector__XXX + SG_ Pack_TotalCap : 7|16@0+ (0.1,0) [0|6553.5] "AH" Vector__XXX + +BO_ 2425878002 BMS_CumuTimeInfo2_1097F5F2: 8 Vector__XXX + SG_ CumuTime_All : 7|32@0+ (0.1,0) [0|4294967295] "Сʱ" Vector__XXX + +BO_ 2425812466 BMS_CumuTimeInfo1_1096F5F2: 8 Vector__XXX + SG_ CumuTime_Charge : 39|32@0+ (0.1,0) [0|4294967295] "Сʱ" Vector__XXX + SG_ CumuTime_Discharge : 7|32@0+ (0.1,0) [0|4294967295] "Сʱ" Vector__XXX + +BO_ 514 BMS_SystemTime202: 8 Vector__XXX + SG_ System_Seconds : 55|8@0+ (1,0) [0|0] "Ãë" Vector__XXX + SG_ System_Month : 23|8@0+ (1,0) [0|255] "ÔÂ" Vector__XXX + SG_ System_Minute : 47|8@0+ (1,0) [0|0] "·Ö" Vector__XXX + SG_ System_Hour : 39|8@0+ (1,0) [0|0] "ʱ" Vector__XXX + SG_ System_Day : 31|8@0+ (1,0) [0|0] "ÈÕ" Vector__XXX + SG_ System_Year : 7|16@0+ (1,0) [0|65535] "Äê" Vector__XXX + +BO_ 2425746930 BMS_OBC_1095F5F2: 8 BMS + SG_ CP_signal : 55|16@0+ (0.1,0) [0|100] "%" Vector__XXX + SG_ CC_resistance : 47|8@0+ (0.01,0) [0|100] "K¦¸" Vector__XXX + SG_ Charge_mode : 33|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ BMS_ChargeControl : 32|1@0+ (1,0) [0|1] "" UDAN + SG_ BMS_CurChargeMaxLimit : 23|16@0+ (0.1,0) [0|65535] "A" CDU + SG_ BMS_VolChargeMaxLimit : 7|16@0+ (0.1,0) [0|65535] "V" CDU + +BO_ 2425681394 BMS_CTS_1094F5F2: 8 BMS + SG_ BMS_HeatTemp_Number : 55|16@0+ (1,0) [0|65535] "" UDAN + SG_ BMS_PoleTempNumber : 39|16@0+ (1,0) [0|255] "" UDAN + SG_ BMS_CellTempNumber : 23|16@0- (1,0) [0|255] "" UDAN + SG_ BMS_CellNumber : 7|16@0+ (1,0) [0|65535] "" UDAN + +BO_ 2425615858 BMS_CTS_1093F5F2: 8 BMS + SG_ BMS_ChargeTimes : 55|16@0+ (1,0) [0|65535] "" UDAN + SG_ BMS_DeltaTemperature : 47|8@0+ (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_DeltaVoltage : 31|16@0+ (0.001,0) [0|65535] "V" UDAN + SG_ BMS_AverageTemperature : 23|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_AverageVoltage : 7|16@0+ (0.001,0) [0|65535] "V" UDAN + +BO_ 2425550322 BMS_CTS_1092F5F2: 8 BMS + SG_ BMS_CumuCapCharge : 39|32@0+ (1,0) [0|0] "AH" UDAN + SG_ BMS_CumuCapDischarge : 7|32@0+ (1,0) [0|0] "AH" UDAN + +BO_ 2425353714 BMS_CTS_108FF5F2: 8 BMS + SG_ OutWaterTemperatureNum : 39|16@0- (1,-50) [0|0] "" Vector__XXX + SG_ OutWaterTemperature : 31|8@0- (1,-50) [0|0] "" Vector__XXX + SG_ InletWaterTemperatureNum : 15|16@0- (1,0) [0|0] "" Vector__XXX + SG_ InletWaterTemperature : 7|8@0- (1,-50) [0|0] "" Vector__XXX + +BO_ 2425288178 BMS_CTS_108EF5F2: 8 BMS + SG_ BMS_PackTempT6_H6 : 55|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_PackTempT5_H5 : 47|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_PackTempT4_H4 : 39|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_PackTempT3_H3 : 31|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_PackTempT2_H2 : 23|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_PackTempT1_H1 : 15|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_PackTempOrHumidity : 7|8@0+ (1,0) [0|1] "" UDAN + +BO_ 2424960498 BMS_CTS_1089F5F2: 8 BMS + SG_ BMS_CellTemperatureT6 : 63|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_CellTemperatureT5 : 55|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_CellTemperatureT4 : 47|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_CellTemperatureT3 : 39|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_CellTemperatureT2 : 31|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_CellTemperatureT1 : 23|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_CellTempStartNum : 7|16@0+ (1,0) [0|65535] "" BlackBox + +BO_ 2424894962 BMS_CTS_1088F5F2: 8 BMS + SG_ BMS_CellVoltageV3 : 55|16@0+ (0.001,0) [0|65535] "mV" BlackBox + SG_ BMS_CellVoltageV2 : 39|16@0+ (0.001,0) [0|65535] "mV" BlackBox + SG_ BMS_CellVoltageV1 : 23|16@0+ (0.001,0) [0|65535] "mV" BlackBox + SG_ BMS_CellVoltageStartNum : 7|16@0+ (1,0) [0|65535] "" BlackBox + +BO_ 2550592465 EVCC_BMSVCU_1806F3D1: 8 EVCC + SG_ EVCC_ChgMode : 1|2@0+ (1,0) [0|0] "" BMS,VCU + SG_ EVCC_BMSVCU_S2Err : 44|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ EVCC_BMSVCU_PWM : 23|8@0+ (0.01,0) [0|100] "" Vector__XXX + SG_ EVCC_BMSVCU_PPErr : 45|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ EVCC_BMSVCU_PP : 31|16@0+ (1,0) [0|10000] "¦¸" BMS,VCU + SG_ EVCC_BMSVCU_LockErr : 43|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ EVCC_BMSVCU_Lock : 4|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ EVCC_BMSVCU_InVolOV : 40|1@0+ (1,0) [0|0] "" BMS,VCU + SG_ EVCC_BMSVCU_InVolLow : 41|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ EVCC_BMSVCU_CP : 10|3@0+ (1,0) [0|0] "" VCU,BMS + SG_ EVCC_BMSVCU_CommErr : 42|1@0+ (1,0) [0|0] "" VCU,BMS + SG_ EVCC_BMSVCU_ChgSts : 3|2@0+ (1,0) [0|0] "" VCU,BMS + SG_ EVCC_BMSVCU_CC2 : 6|1@0+ (1,0) [0|0] "" VCU,BMS + SG_ EVCC_BMSVCU_Aplus : 5|1@0+ (1,0) [0|0] "" VCU,BMS + +BO_ 2424763890 BMS_CTS_1086F5F2: 8 BMS + SG_ BMS_TemperatureLTMaxNum : 39|16@0+ (1,0) [0|65535] "" UDAN + SG_ BMS_TemperatureLTMax : 31|8@0- (1,-50) [0|255] "¡æ" UDAN + SG_ BMS_TemperatureHTMaxNum : 15|16@0+ (1,0) [0|65535] "" UDAN + SG_ BMS_TemperatureHTMax : 7|8@0- (1,-50) [0|255] "¡æ" BlackBox + +BO_ 2424829426 BMS_CTS_1087F5F2: 8 BMS + SG_ BMS_CellLVMaxNum : 55|16@0+ (1,0) [0|65535] "" BlackBox + SG_ BMS_CellLVMax : 39|16@0+ (0.001,0) [0|65535] "" BlackBox + SG_ BMS_CellHVMaxNum : 23|16@0+ (1,0) [0|65535] "" BlackBox + SG_ BMS_CellHVMax : 7|16@0+ (0.001,0) [0|65535] "" BlackBox + +BO_ 2425157106 BMS_RelayStatus: 8 BMS + SG_ BMS_Relay8FaultStatus : 23|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_Relay7FaultStatus : 21|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_Relay6FaultStatus : 19|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_Relay5FaultStatus : 17|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_Relay4NegFaultStatus : 15|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_Relay3ChgFaultStatus : 13|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_Relay2PrechargeFaultStatus : 11|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_Relay1DischgFaultStatus : 9|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_Relay8Status : 7|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_Relay7Status : 6|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_Relay6Status : 5|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_Relay5Status : 4|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_Relay4NegStatus : 3|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_Relay3ChgStatus : 2|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_Relay2PrechargeStatus : 1|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_Relay1DischgStatus : 0|1@0+ (1,0) [0|1] "" BlackBox,VCU + +BO_ 2424698354 BMS_CTS_1085F5F2: 6 BMS + SG_ BMS_BatteryPower : 39|16@0+ (0.01,-100) [0|20000] "kw" BlackBox,VCU + SG_ BMS_ChargeLeftTime : 23|16@0+ (1,0) [0|65535] "min" BlackBox,VCU + SG_ BMS_InsulationResistance : 7|16@0+ (1,0) [0|65535] "k¦¸" BlackBox,VCU + +BO_ 2424632818 BMS_CTSObcMcu_1084F5F2: 8 BMS + SG_ BMS_PowerChargeContinue : 55|16@0+ (0.1,0) [0|65535] "A" BlackBox,MCU,CDU + SG_ BMS_PowerChargePeak : 39|16@0+ (0.1,0) [0|65535] "A" BlackBox,CDU,MCU + SG_ BMS_PowerDisChargeContinue : 23|16@0+ (0.1,0) [0|65535] "A" BlackBox,MCU + SG_ BMS_PowerDisChargePeak : 7|16@0- (0.1,0) [0|65535] "A" BlackBox,MCU + +BO_ 2425091570 BMS_CTS_108BF5F2: 8 BMS + SG_ BMS_WarningLevel : 15|8@0+ (1,0) [0|255] "" BlackBox,VCU + SG_ BMS_WarningCode : 7|8@0+ (1,0) [0|254] "" BlackBox,VCU + +BO_ 2424501746 BMS_CTS_1082F5F2: 8 BMS + SG_ BMS_DcChgGunInStatus : 3|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_PowerOnReady : 49|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_NegativeInsulationResistance : 39|16@0+ (1,0) [0|65535] "kohm" BlackBox,VCU + SG_ BMS_PositiveInsulationResistance : 23|16@0+ (1,0) [0|65535] "kohm" BlackBox,VCU + SG_ BMS_HighVolLoopLockStatus : 15|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_RefrigerationStatus : 14|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_HeatingStatus : 13|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_BalanceStatus : 12|1@0+ (1,0) [0|1] "" BlackBox,VCU + SG_ BMS_SelfCheckStatus : 11|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_PerchargeStatus : 9|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_ChargeStatus : 7|2@0+ (1,0) [0|3] "" BlackBox,VCU + SG_ BMS_ChargeMode : 5|2@0+ (1,0) [0|3] "" BlackBox,VCU + +BO_ 2424567282 BMS_VCU_1083F5F2: 8 BMS + SG_ BMS_VolOutsideBat : 55|16@0+ (0.1,0) [0|800] "V" UDAN + SG_ BMS_SOC : 39|16@0+ (0.1,0) [0|6553.5] "%" VCU + SG_ BMS_CurBat : 23|16@0- (0.1,-1000) [0|1000] "A" VCU + SG_ BMS_VolBat : 7|16@0+ (0.1,0) [0|65535] "V" VCU + +BO_ 2355557619 VCU_BMS_0C66F4F3: 8 VCU + SG_ VCU_ChargeAllow : 3|2@0+ (1,0) [0|3] "" Vector__XXX + SG_ VCU_UrgencyCutOffPowerReq : 1|1@0+ (1,0) [0|1] "" BMS + SG_ VCU_PowerOnReq : 0|1@0+ (1,0) [0|1] "" BMS + + + +CM_ BO_ 3221225472 "This is a message for not used signals, created by Vector CANdb++ DBC OLE DB Provider."; +CM_ SG_ 3221225472 BMS_CellPoleTempT6 "Æðʼ¼«Öùζȴ®ºÅ+5ζÈֵ"; +CM_ SG_ 3221225472 BMS_CellPoleTempT5 "Æðʼ¼«Öùζȴ®ºÅ+4ζÈֵ"; +CM_ SG_ 3221225472 BMS_CellPoleTempT4 "Æðʼ¼«Öù´®ºÅζÈ+3ζÈֵ"; +CM_ SG_ 3221225472 BMS_CellPoleTempT3 "Æðʼ¼«Öùζȴ®ºÅ+2ζÈֵ +"; +CM_ SG_ 3221225472 BMS_CellPoleTempT2 "Æðʼ¼«Öùζȴ®ºÅ+1ζÈֵ"; +CM_ SG_ 3221225472 BMS_CellPoleTempT1 "Æðʼ¼«Öùζȴ®ºÅζÈֵ"; +CM_ SG_ 3221225472 BMS_CellPoleTempSartNum "Æðʼ¼«Öùζȴ®ºÅ"; +CM_ SG_ 3221225472 BMS_PoleTempLTMaxNum "¼«ÖùθÐ×îµÍζȱàºÅ"; +CM_ SG_ 3221225472 BMS_PoleTempLTMax "¼«ÖùθÐ×îµÍζÈ"; +CM_ SG_ 3221225472 BMS_PoleTempHTMaxNum "¼«ÖùθÐ×î¸ßζȱàºÅ"; +CM_ SG_ 3221225472 BMS_PoleTempHTMax "¼«ÖùθÐ×î¸ßζÈ"; +CM_ SG_ 3221225472 CCS1_Retain "±£Áô"; +CM_ SG_ 3221225472 CCS1_StartState "0_³äµçÆ÷¼ì²⵽µç³صçѹ½øÈëÆô¶¯״̬£¬1_¹رÕ"; +CM_ SG_ 3221225472 HeatCur "¼ÓÈȵçÁ÷£¨²ɼ¯£©"; +CM_ SG_ 3221225472 Statistic_CellLtMaxBmsIndex "µç³Ø×î×îµÍζȴӻúºÅ"; +CM_ SG_ 3221225472 Statistic_CellLtMaxBatIndex "µç³Ø×îµÍζȴӻú´®ºÅ"; +CM_ SG_ 3221225472 Statistic_CellHtMaxBmsIndex "µç³Ø×î¸ßζȴӻúºÅ"; +CM_ SG_ 3221225472 Statistic_CellHtMaxBatIndex "µç³Ø×î¸ßζȴӻú´®ºÅ"; +CM_ SG_ 3221225472 Statistic_CellLVMaxBmsIndex "µç³Ø×îµ͵¥Ìåµçѹ´ӻúºÅ"; +CM_ SG_ 3221225472 Statistic_CellLVMaxBatIndex "µç³Ø×îµ͵¥Ìåµçѹ´Ӵ®ºÅ"; +CM_ SG_ 3221225472 Statistic_CellHVMaxBmsIndex "µç³Ø×î¸ߵ¥Ìåµçѹ´ӻúºÅ"; +CM_ SG_ 3221225472 Statistic_CellHVMaxBatIndex "µç³Ø×î¸ߵ¥Ìåµçѹ´ӻú´®ºÅ"; +CM_ SG_ 3221225472 NO15_RelayStatus "15ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO15_RelayIndex "15ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO15_RelayFaultStatus "15ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO14_RelayStatus "14ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO14_RelayIndex "14ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO14_RelayFaultStatus "14ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO13_RelayStatus "13ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO13_RelayIndex "13ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO13_RelayFaultStatus "13ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO12_RelayStatus "12ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO12_RelayIndex "12ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO12_RelayFaultStatus "12ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO11_RelayStatus "11ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO11_RelayIndex "11ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO11_RelayFaultStatus "11ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO10_RelayStatus "10ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO10_RelayIndex "10ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO10_RelayFaultStatus "10ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO9_RelayStatus "9ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO9_RelayIndex "9ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO9_RelayFaultStatus "9ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO8_RelayStatus "8ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO8_RelayIndex "8ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO8_RelayFaultStatus "8ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO7_RelayIndex "7ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO7_RelayStatus "7ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO7_RelayFaultStatus "7ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO6_RelayStatus "6ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO6_RelayIndex "6ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO6_RelayFaultStatus "6ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO5_RelayStatus "5ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO5_RelayIndex "5ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO5_RelayFaultStatus "5ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO4_RelayStatus "4ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO4_RelayIndex "4ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO4_RelayFaultStatus "4ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO3_RelayStatus "3ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO3_RelayIndex "3ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO3_RelayFaultStatus "3ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO2_RelayStatus "2ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 NO2_RelayIndex "2ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO2_RelayFaultStatus "2ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO1_RelayIndex "1ºż̵çÆ÷Ë÷ÒýºÅ"; +CM_ SG_ 3221225472 NO1_RelayFaultStatus "1ºż̵çÆ÷¹ÊÕÏ״̬"; +CM_ SG_ 3221225472 NO1_RelayStatus "1ºż̵çÆ÷״̬"; +CM_ SG_ 3221225472 RelayNum "¼̵çÆ÷×ÜÊý"; +CM_ SG_ 3221225472 Communication_Status "ͨÐÅ״̬"; +CM_ SG_ 3221225472 Start_Staus "Æô¶¯״̬"; +CM_ SG_ 3221225472 Input_Voltage "ÊäÈëµçѹ"; +CM_ SG_ 3221225472 OBC_Tempreture "³äµç»úζÈ"; +CM_ SG_ 3221225472 HardWare_Fault "Ӳ¼þ¹ÊÕÏ"; +CM_ SG_ 3221225472 OBC_Current "OBCµ±ǰ³äµçµçÁ÷OBCµ±ǰ³äµçµçÁ÷"; +CM_ SG_ 3221225472 OBC_Voltage "µ±ǰ³äµçµçѹOBCµ±ǰ³äµçµçѹ"; +CM_ SG_ 3221225472 NTC2_Temperature "NTC2ζÈֵ"; +CM_ SG_ 3221225472 NTC1_Temperature "NTC1ζÈֵ"; +CM_ SG_ 3221225472 BMS_HeatingTempLTMaxNum "¼ÓÈÈθÐ×îµÍζȱàºÅ"; +CM_ SG_ 3221225472 BMS_HeatingTempLTMax "¼ÓÈÈθÐ×îµÍζÈ"; +CM_ SG_ 3221225472 BMS_HeatingTempHTMaxNum "¼ÓÈÈθÐ×î¸ßζȱàºÅ"; +CM_ SG_ 3221225472 BMS_HeatingTempHTMax "¼ÓÈÈθÐ×î¸ßζÈ"; +CM_ SG_ 3221225472 OBC_Temperature "³äµç»úζÈ"; +CM_ SG_ 3221225472 OBC_OutputShortOut "Êä³ö¶Ì·"; +CM_ SG_ 3221225472 OBC_InputVoltage "ÊäÈëµçѹ"; +CM_ SG_ 3221225472 OBC_HardwareFault "Ӳ¼þ¹ÊÕÏ"; +CM_ SG_ 3221225472 OBC_CommunicateStatus "ͨÐÅ״̬"; +CM_ SG_ 2633172212 BMS_PackSpe "0, 96VDC +1, 350VDC"; +CM_ SG_ 2633172212 VCU_BatMaxSlowChgCurIndex "0,2.2kw +1,3,3kw +2,4.4kw +3,5,5kw +4,6.6kw"; +CM_ SG_ 2633171956 VCU_ConRequest1 "0xAA, 0x55, 0xA5, Write the configuration +0x55,0xAA,0x5A Read the configuration"; +CM_ SG_ 2633171956 VCU_BatMaxSlowChgCurXor "X= Byte1 xor Byte2 xor Byte3 Xor Byte4"; +CM_ SG_ 2633171956 VCU_BatMaxSlowChgCurIndex "0,2.2kw +1,3,3kw +2,4.4kw +3,5,5kw +4,6.6kw"; +CM_ SG_ 2425026034 CCS1_S2SwitchStatus "0:S2???? +1:S2???? +0: The S2 switch is off +1: The S2 switch is turned on"; +CM_ SG_ 2566869221 CCS1_ChgInterTemp "³äµçÆ÷Äڲ¿Î¶È"; +CM_ SG_ 2566869221 CCS1_CPStatusAlarm "CP״̬±¨¾¯£¬0_Õý³££¬1_±¨¾¯"; +CM_ SG_ 2566869221 CCS1_CCStatusAlarm "CC״̬±¨¾¯£¬0_Õý³££¬1_±¨¾¯"; +CM_ SG_ 2566869221 CCS1_ChgSocketOverTempAlarm "³äµç²å×ùζȸ澯£¬0_Õý³££¬1_¸澯"; +CM_ SG_ 2566869221 CCS1_ElectLockStatus "µç×ÓËø״̬£¬0_½âËø£¬1_Ëø¶¨£¬2_¹ÊÕϣ¬3_Î޵ç×ÓËø"; +CM_ SG_ 2566869221 CCS1_S2SwitchStatus "0:S2???? +1:S2???? +0: The S2 switch is off +1: The S2 switch is turned on"; +CM_ SG_ 2566869221 CCS1_CommunicationStatus "0_ͨÐÅÕý³££¬1_ͨÐŽÓÊճ¬ʱ"; +CM_ SG_ 2566869221 CCS1_InputVolt "0_ÊäÈëµçѹÕý³££¬1_ÊäÈëµçѹ´íÎó£¬ֹͣ¹¤×÷"; +CM_ SG_ 2566869221 OBC_OverTemperatureProtection "0_Õý³££¬1_³äµçÆ÷ζȹý¸߱£»¤"; +CM_ SG_ 2566869221 OBC_HardwareProtection "0_Õý³££¬1_Ӳ¼þ¹ÊÕÏ"; +CM_ SG_ 2566869221 OBC_OutputCurrent "Êä³öµçÁ÷£¬0_³äµ磬1_±íʾ·ŵç"; +CM_ SG_ 2566869221 OBC_OutputVolt "Êä³öµçѹ"; +CM_ SG_ 2550588916 BOCI_Reserved2 "Reserved??"; +CM_ SG_ 2550588916 BOCI_Mode "0:????? +1:????? +???:?? +0: Charging mode. +1: Heating mode. +others: Invalid"; +CM_ SG_ 2550588916 BOCI_ChgStartToReChg "1:???????? +2:????,???????? +3: ?????????????????? +???:?? +1: The charger starts charging. +2: Battery protection, charger off output. +3: charging finished, Charger goes sleep after receiving this message. +others: Invalid"; +CM_ SG_ 2550588916 BOCI_MaxAllowChargeCurr "Max. Charging current"; +CM_ SG_ 2550588916 BOCI_MaxAllowChargeEndVolt "Max. charging voltage"; +CM_ SG_ 2425943538 SOH "SOH"; +CM_ SG_ 2425943538 Charge_Time "Òѳäµçʱ¼ä"; +CM_ SG_ 2425943538 Pack_LeftCap "µç³Ø×éʣÓàÈÝÁ¿"; +CM_ SG_ 2425943538 Pack_TotalCap "µç³Ø×ÜÈÝÁ¿"; +CM_ SG_ 2425878002 CumuTime_All "ÀۼÆ×ÜʹÓÃʱ¼ä"; +CM_ SG_ 2425812466 CumuTime_Charge "ÀۼÆ×ܳäµçʱ¼ä"; +CM_ SG_ 2425812466 CumuTime_Discharge "ÀۼÆ×ܷŵçʱ¼ä"; +CM_ SG_ 514 System_Seconds "Ãë"; +CM_ SG_ 514 System_Month "ÔÂ"; +CM_ SG_ 514 System_Minute "·Ö"; +CM_ SG_ 514 System_Hour "ʱ"; +CM_ SG_ 514 System_Day "ÈÕ"; +CM_ SG_ 514 System_Year "Äê"; +CM_ BO_ 2425746930 "BMS¶ÔOBCµÄÏÞÖƼ°³äµç¿ØÖÆ"; +CM_ SG_ 2425746930 CP_signal "CPÐźÅ"; +CM_ SG_ 2425746930 CC_resistance "CC-PE×èֵ"; +CM_ SG_ 2425746930 Charge_mode "³äµçģʽCharge mode"; +CM_ SG_ 2425746930 BMS_CurChargeMaxLimit "×î´óÔÊÐí³äµçµçÁ÷"; +CM_ SG_ 2425746930 BMS_VolChargeMaxLimit "×î´óÔÊÐí³äµçµçѹ"; +CM_ BO_ 2425681394 "BMSÏà¹ØÊýÁ¿ÐÅϢ"; +CM_ SG_ 2425681394 BMS_HeatTemp_Number "¼ÓÈÈθиöÊý"; +CM_ SG_ 2425681394 BMS_PoleTempNumber "¼«ÖùθиöÊý"; +CM_ SG_ 2425681394 BMS_CellTempNumber "µ¥ÌåθиöÊý"; +CM_ SG_ 2425681394 BMS_CellNumber "µ¥Ìåµç³ش®Êý"; +CM_ BO_ 2425615858 "µç³Ø×é²ÎÊýÐÅϢ"; +CM_ SG_ 2425615858 BMS_ChargeTimes "µç³Ø×é³ä·ŵç´ÎÊý"; +CM_ SG_ 2425615858 BMS_DeltaTemperature "µç³Ø×é×î´óβî"; +CM_ SG_ 2425615858 BMS_DeltaVoltage "µç³Ø×é×î´óѹ²î"; +CM_ SG_ 2425615858 BMS_AverageTemperature "µç³Ø×éƽ¾ùζÈ"; +CM_ SG_ 2425615858 BMS_AverageVoltage "µç³Ø×éƽ¾ùµçѹ"; +CM_ BO_ 2425550322 "ÀۼƳä·ŵçÈÝÁ¿"; +CM_ SG_ 2425550322 BMS_CumuCapCharge "ÀۼÆ×ܳäµçÈÝÁ¿"; +CM_ SG_ 2425550322 BMS_CumuCapDischarge "ÀۼÆ×ܷŵçÈÝÁ¿"; +CM_ BO_ 2425353714 "Æðʼ¼«Öùζȴ®ºż°Î¶Èֵ"; +CM_ SG_ 2425353714 OutWaterTemperatureNum "³öˮ¿ÚζȱàºÅ"; +CM_ SG_ 2425353714 OutWaterTemperature "³öˮ¿ÚθÐζÈ"; +CM_ SG_ 2425353714 InletWaterTemperatureNum "Èëˮ¿ÚζȱàºÅ"; +CM_ SG_ 2425353714 InletWaterTemperature "Èëˮ¿ÚθÐζÈ"; +CM_ BO_ 2425288178 "Æðʼ¼ÓÈÈζȴ®ºż°Î¶Èֵ"; +CM_ SG_ 2425288178 BMS_PackTempT6_H6 "Æðʼ¼ÓÈÈζȴ®ºÅ+5ζÈֵ"; +CM_ SG_ 2425288178 BMS_PackTempT5_H5 "Æðʼ¼ÓÈÈζȴ®ºÅ+4ζÈֵ"; +CM_ SG_ 2425288178 BMS_PackTempT4_H4 "Æðʼ¼ÓÈÈζȴ®ºÅ+4ζÈֵ"; +CM_ SG_ 2425288178 BMS_PackTempT3_H3 "Æðʼ¼ÓÈÈζȴ®ºÅ+2ζÈֵ"; +CM_ SG_ 2425288178 BMS_PackTempT2_H2 "Æðʼ¼ÓÈÈζȴ®ºÅ+1ζÈֵ"; +CM_ SG_ 2425288178 BMS_PackTempT1_H1 "Æðʼ¼ÓÈÈζȴ®ºÅζÈֵ"; +CM_ SG_ 2425288178 BMS_PackTempOrHumidity "????,????? +0,?? +1,?? +Read simultaneously, but send alternately +0,Temperature +1,Humidity"; +CM_ BO_ 2424960498 "Æðʼζȴ®ºż°Î¶Èֵ"; +CM_ SG_ 2424960498 BMS_CellTemperatureT6 "Æðʼζȴ®ºÅ+5ζÈֵ"; +CM_ SG_ 2424960498 BMS_CellTemperatureT5 "Æðʼζȴ®ºÅ+4ζÈֵ"; +CM_ SG_ 2424960498 BMS_CellTemperatureT4 "Æðʼζȴ®ºÅ+3ζÈֵ"; +CM_ SG_ 2424960498 BMS_CellTemperatureT3 "Æðʼζȴ®ºÅ+2ζÈֵ"; +CM_ SG_ 2424960498 BMS_CellTemperatureT2 "Æðʼζȴ®ºÅ+1ζÈֵ"; +CM_ SG_ 2424960498 BMS_CellTemperatureT1 "Æðʼζȴ®ºÅζÈֵ"; +CM_ SG_ 2424960498 BMS_CellTempStartNum "?1???Start at 1"; +CM_ BO_ 2424894962 "Æðʼµ¥Ìåµçѹֵ"; +CM_ SG_ 2424894962 BMS_CellVoltageV3 "Æðʼ´®ºÅ+2µ¥Ìåµçѹֵ"; +CM_ SG_ 2424894962 BMS_CellVoltageV2 "Æðʼ´®ºÅ+1µ¥Ìåµçѹֵ"; +CM_ SG_ 2424894962 BMS_CellVoltageV1 "Æðʼ´®ºŵ¥Ìåµçѹֵ"; +CM_ SG_ 2424894962 BMS_CellVoltageStartNum "Æðʼµ¥Ìåµçѹ´®ºÅ"; +CM_ BO_ 2550592465 "NTCζÈ"; +CM_ BO_ 2424763890 "µç³ØÎ¶È"; +CM_ SG_ 2424763890 BMS_TemperatureLTMaxNum "No. of the Min. Temp of the battery cells"; +CM_ SG_ 2424763890 BMS_TemperatureLTMax "Min. Temp of the battery cells"; +CM_ SG_ 2424763890 BMS_TemperatureHTMaxNum "No. of the Max. Temp. of the battery cells"; +CM_ SG_ 2424763890 BMS_TemperatureHTMax "Max. Temp. of the battery cells"; +CM_ BO_ 2424829426 "BMSµ¥ÌåµçѹÐÅϢ"; +CM_ SG_ 2424829426 BMS_CellLVMaxNum "No. of the Min voltage cell module"; +CM_ SG_ 2424829426 BMS_CellLVMax "Min.voltage of hte cells"; +CM_ SG_ 2424829426 BMS_CellHVMaxNum "No. of the max voltage of the cells"; +CM_ SG_ 2424829426 BMS_CellHVMax "max. voltage of the cells"; +CM_ BO_ 2425157106 "BMS¼̵çÆ÷״̬¹㲥֡"; +CM_ SG_ 2425157106 BMS_Relay8FaultStatus "0:?? +1:???? +2:???? +3:?????? +0: normal +1: adhesion failure +2: indicates an open-circuit fault +3: The drive circuit is faulty"; +CM_ SG_ 2425157106 BMS_Relay7FaultStatus "0:?? +1:???? +2:???? +3:?????? +0: normal +1: adhesion failure +2: indicates an open-circuit fault +3: The drive circuit is faulty"; +CM_ SG_ 2425157106 BMS_Relay6FaultStatus "0:?? +1:???? +2:???? +3:?????? +0: normal +1: adhesion failure +2: indicates an open-circuit fault +3: The drive circuit is faulty"; +CM_ SG_ 2425157106 BMS_Relay5FaultStatus "0:?? +1:???? +2:???? +3:?????? +0: normal +1: adhesion failure +2: indicates an open-circuit fault +3: The drive circuit is faulty"; +CM_ SG_ 2425157106 BMS_Relay4NegFaultStatus "0:?? +1:???? +2:???? +3:?????? +0: normal +1: adhesion failure +2: indicates an open-circuit fault +3: The drive circuit is faulty"; +CM_ SG_ 2425157106 BMS_Relay3ChgFaultStatus "0:?? +1:???? +2:???? +3:?????? +0: normal +1: adhesion failure +2: indicates an open-circuit fault +3: The drive circuit is faulty"; +CM_ SG_ 2425157106 BMS_Relay2PrechargeFaultStatus "0:?? +1:???? +2:???? +3:?????? +0: normal +1: adhesion failure +2: indicates an open-circuit fault +3: The drive circuit is faulty"; +CM_ SG_ 2425157106 BMS_Relay1DischgFaultStatus "0:?? +1:???? +2:???? +3:?????? +0: normal +1: adhesion failure +2: indicates an open-circuit fault +3: The drive circuit is faulty"; +CM_ SG_ 2425157106 BMS_Relay8Status "0:?? +1:?? +0: disconnect +1: indicates the conduction"; +CM_ SG_ 2425157106 BMS_Relay7Status "0:?? +1:?? +0: disconnect +1: indicates the conduction"; +CM_ SG_ 2425157106 BMS_Relay6Status "0:?? +1:?? +0: disconnect +1: indicates the conduction"; +CM_ SG_ 2425157106 BMS_Relay5Status "0:?? +1:?? +0: disconnect +1: indicates the conduction"; +CM_ SG_ 2425157106 BMS_Relay4NegStatus "0:?? +1:?? +0: disconnect +1: indicates the conduction"; +CM_ SG_ 2425157106 BMS_Relay3ChgStatus "0:?? +1:?? +0: disconnect +1: indicates the conduction"; +CM_ SG_ 2425157106 BMS_Relay2PrechargeStatus "0:?? +1:?? +0: disconnect +1: indicates the conduction"; +CM_ SG_ 2425157106 BMS_Relay1DischgStatus "0:?? +1:?? +0: disconnect +1: indicates the conduction"; +CM_ BO_ 2424698354 "BMSµçԴÐÅϢ"; +CM_ SG_ 2424698354 BMS_BatteryPower "µç³ع¦Âʣ¬Õý¹¦Âʱíʾ¶Եç³سäµ磬¸º¹¦Âʱíʾµç³طŵç"; +CM_ SG_ 2424698354 BMS_ChargeLeftTime "ʣÓà³äµçʱ¼ä"; +CM_ SG_ 2424698354 BMS_InsulationResistance "¾øԵµç×è"; +CM_ BO_ 2424632818 "BMSµçԴ¿ØÖÆ"; +CM_ SG_ 2424632818 BMS_PowerChargeContinue "³ÖÐø³äµçµçÁ÷"; +CM_ SG_ 2424632818 BMS_PowerChargePeak "·åֵ³äµçµçÁ÷"; +CM_ SG_ 2424632818 BMS_PowerDisChargeContinue "³ÖÐø·ŵçµçÁ÷"; +CM_ SG_ 2424632818 BMS_PowerDisChargePeak "·åֵ·ŵçµçÁ÷"; +CM_ BO_ 2425091570 "BMS¾¯¸æ״̬"; +CM_ SG_ 2425091570 BMS_WarningLevel "±¨¾¯µȼ¶"; +CM_ SG_ 2425091570 BMS_WarningCode "±¨¾¯Âë"; +CM_ BO_ 2424501746 "BMS״̬"; +CM_ SG_ 2424501746 BMS_DcChgGunInStatus "¿ì³äǹÁ¬½Ó״̬"; +CM_ SG_ 2424501746 BMS_PowerOnReady "BMSÉϵçReadyÐźÅ"; +CM_ SG_ 2424501746 BMS_NegativeInsulationResistance "¸º¼«¾øԵ×èֵ"; +CM_ SG_ 2424501746 BMS_PositiveInsulationResistance "Õý¼«¾øԵ×èֵ"; +CM_ SG_ 2424501746 BMS_HighVolLoopLockStatus "¸ßѹ»¥Ëø״̬"; +CM_ SG_ 2424501746 BMS_RefrigerationStatus "BMSÖÆÀä״̬"; +CM_ SG_ 2424501746 BMS_HeatingStatus "BMS¼ÓÈÈ״̬"; +CM_ SG_ 2424501746 BMS_BalanceStatus "BMS¾ùºâ״̬"; +CM_ SG_ 2424501746 BMS_SelfCheckStatus "BMS×Լì״̬"; +CM_ SG_ 2424501746 BMS_PerchargeStatus "BMSԤ³ä״̬"; +CM_ SG_ 2424501746 BMS_ChargeStatus "BMSµ±ǰ³äµç״̬"; +CM_ SG_ 2424501746 BMS_ChargeMode "BMSµ±ǰ³äµçģʽ"; +CM_ BO_ 2424567282 "µç³Ø×é״̬"; +CM_ SG_ 2424567282 BMS_VolOutsideBat "SOCÒDZíÏÔʾ"; +CM_ SG_ 2424567282 BMS_SOC "ºɵç״̬"; +CM_ SG_ 2424567282 BMS_CurBat "µç³Ø×é×ܵçÁ÷"; +CM_ SG_ 2424567282 BMS_VolBat "µç³Ø×é×ܵçѹ"; +CM_ BO_ 2355557619 "VCUÉϵçϵç֡"; +CM_ SG_ 2355557619 VCU_ChargeAllow "VCU³äµçָÁî +0x0:Not allow chargeing +0x1: allow charging +0x2: Reserved +0x3:Invalid"; +CM_ SG_ 2355557619 VCU_PowerOnReq "VCU¸ßѹÉϵç"; +BA_DEF_ BO_ "GenMsgCycleTime" INT 0 0; +BA_DEF_ BO_ "GenMsgSendType" ENUM "Cycle","Event","CE"; +BA_DEF_ "BusType" STRING ; +BA_DEF_DEF_ "GenMsgCycleTime" 0; +BA_DEF_DEF_ "GenMsgSendType" "Cycle"; +BA_DEF_DEF_ "BusType" "CAN"; +BA_ "GenMsgCycleTime" BO_ 2550255759 100; +BA_ "GenMsgSendType" BO_ 2633171956 1; +BA_ "GenMsgCycleTime" BO_ 2425026034 1000; +BA_ "GenMsgCycleTime" BO_ 2550588916 1000; +BA_ "GenMsgCycleTime" BO_ 2425288178 2500; +BA_ "GenMsgCycleTime" BO_ 2424960498 1000; +BA_ "GenMsgCycleTime" BO_ 2424894962 1000; +BA_ "GenMsgCycleTime" BO_ 2550592465 500; +BA_ "GenMsgCycleTime" BO_ 2424763890 200; +BA_ "GenMsgCycleTime" BO_ 2424829426 200; +BA_ "GenMsgCycleTime" BO_ 2425157106 100; +BA_ "GenMsgCycleTime" BO_ 2424698354 500; +BA_ "GenMsgCycleTime" BO_ 2424632818 100; +BA_ "GenMsgCycleTime" BO_ 2425091570 100; +BA_ "GenMsgCycleTime" BO_ 2424501746 100; +BA_ "GenMsgCycleTime" BO_ 2355557619 200; +VAL_ 3221225472 NO15_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO15_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO14_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO14_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO13_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO13_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO12_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO12_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO11_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO11_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO10_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO10_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO9_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO9_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO8_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO8_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO7_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO7_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO6_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO6_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO5_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO5_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO4_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO4_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO3_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO3_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO2_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 NO2_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO1_RelayFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 NO1_RelayStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 3221225472 Communication_Status 1 "ͨѶָÁʱ»òÊյ½ָÁîÒ쳣" 0 "ͨѶÕý³£" ; +VAL_ 3221225472 Start_Staus 1 "µç³صçѹÕý³£²»¿ÉÒÔÆô¶¯" 0 "µç³صçѹÕý³£¿ÉÒÔÆô¶¯" ; +VAL_ 3221225472 Input_Voltage 1 "ÊäÈëµçѹ´íÎó³äµç»úͣ»ú" 0 "Õý³£" ; +VAL_ 3221225472 OBC_Tempreture 1 "³äµç»úζȹý¸߱£»¤" 0 "Õý³£" ; +VAL_ 3221225472 HardWare_Fault 1 "Ӳ¼þ¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 OBC_Temperature 1 "³äµç»úζȹý¸߱£»¤" 0 "Õý³£" ; +VAL_ 3221225472 OBC_StartStatus 1 "µç³صçѹÒ쳣£¬²»ÔÊÐíÆô¶¯" 0 "µç³صçѹÕý³££¬¿ÉÒÔÆô¶¯" ; +VAL_ 3221225472 OBC_OutputShortOut 1 "Êä³ö¹ýÁ÷¡¢¶Ì·£¬³äµç»úֹͣ¹¤×÷" 0 "Õý³£" ; +VAL_ 3221225472 OBC_InputVoltage 1 "ÊäÈëµçѹ´íÎ󣬳äµç»úֹͣ¹¤×÷" 0 "Õý³£" ; +VAL_ 3221225472 OBC_HardwareFault 1 "Ӳ¼þ¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 3221225472 OBC_CommunicateStatus 1 "ͨѶָÁʱ»òÊյ½ָÁîÒ쳣" 0 "ͨÐÅÕý³£" ; +VAL_ 2550173648 CDU_DCDC_InputVoltageStatus 3 "NoInput" 2 "OverVoltage" 1 "UnderVoltage" 0 "Normal" ; +VAL_ 2550255759 CDU_DCDC_IGN 2 "Stop" 1 "Ignition" ; +VAL_ 2550264754 TMS_TMUStatus 1 "PowerOff" 0 "PowerOn" ; +VAL_ 2550264754 TMS_StatusFbk 3 "Self-CycleMode" 2 "HeatingMode" 1 "CoolingMode" 0 "shutdown" ; +VAL_ 2550264754 TMS_HVStatus 2 "HighVoltagePowerOn" 1 "HighVoltagePowerOff" 0 "Invalid" ; +VAL_ 2550588916 BOCI_Mode 1 "Heating" 0 "Charging" ; +VAL_ 2550588916 BOCI_ChgStartToReChg 3 "EndCharging" 2 "StopOutputting" 1 "StartCharging" ; +VAL_ 2425746930 BMS_ChargeControl 1 "½ûֹ³äµç" 0 "ÔÊÐí³äµç" ; +VAL_ 2550592465 EVCC_ChgMode 2 "AC Charging Mode" 1 "DC Charging Mode" 0 "No charge" ; +VAL_ 2550592465 EVCC_BMSVCU_S2Err 1 "Fault" 0 " Normal" ; +VAL_ 2550592465 EVCC_BMSVCU_PPErr 1 "Fault" 0 " Normal" ; +VAL_ 2550592465 EVCC_BMSVCU_LockErr 1 "Fault" 0 " Normal" ; +VAL_ 2550592465 EVCC_BMSVCU_Lock 1 "lock" 0 "Unlock" ; +VAL_ 2550592465 EVCC_BMSVCU_InVolOV 1 "Fault" 0 " Normal" ; +VAL_ 2550592465 EVCC_BMSVCU_InVolLow 1 "Fault" 0 " Normal" ; +VAL_ 2550592465 EVCC_BMSVCU_CP 6 "CP Fault" 5 "6V PWM" 4 "6V DC" 3 "9V PWM" 2 "9V DC" 1 "12V DC" 0 "Default" ; +VAL_ 2550592465 EVCC_BMSVCU_ChgSts 2 "Fault" 1 "Charging" 0 "Waiting" ; +VAL_ 2550592465 EVCC_BMSVCU_CC2 1 "Output" 0 "No output" ; +VAL_ 2550592465 EVCC_BMSVCU_Aplus 1 "Output" 0 "No output" ; +VAL_ 2425157106 BMS_Relay8FaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 2425157106 BMS_Relay7FaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 2425157106 BMS_Relay6FaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 2425157106 BMS_Relay5FaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 2425157106 BMS_Relay4NegFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 2425157106 BMS_Relay3ChgFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 2425157106 BMS_Relay2PrechargeFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 2425157106 BMS_Relay1DischgFaultStatus 3 "Çý¶¯µç·¹ÊÕÏ" 2 "¿ª·¹ÊÕÏ" 1 "ճÁ¬¹ÊÕÏ" 0 "Õý³£" ; +VAL_ 2425157106 BMS_Relay8Status 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 2425157106 BMS_Relay7Status 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 2425157106 BMS_Relay6Status 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 2425157106 BMS_Relay5Status 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 2425157106 BMS_Relay4NegStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 2425157106 BMS_Relay3ChgStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 2425157106 BMS_Relay2PrechargeStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 2425157106 BMS_Relay1DischgStatus 1 "±պÏ" 0 "¶Ͽª" ; +VAL_ 2425091570 BMS_WarningLevel 255 "ÎÞЧ" 254 "Ò쳣" 4 "4¼¶¹ÊÕÏ" 3 "3¼¶¹ÊÕÏ" 2 "2¼¶¹ÊÕÏ" 1 "1¼¶¹ÊÕÏ" 0 "Î޹ÊÕÏ" ; +VAL_ 2425091570 BMS_WarningCode 255 "Invalid" 254 "Abnormal" 4 "Level_4_Fault" 3 "Level_3_Fault" 2 "Level_2_Fault" 1 "Level_1_Fault" 0 "No Fault" ; +VAL_ 2424501746 BMS_PowerOnReady 3 "±£Áô" 2 "´íÎó" 1 "׼±¸" 0 "δ׼±¸" ; +VAL_ 2424501746 BMS_HighVolLoopLockStatus 1 "»¥ËøÖÐ" 0 "δ»¥Ëø" ; +VAL_ 2424501746 BMS_RefrigerationStatus 1 "ÖÆÀäÖÐ" 0 "δÖÆÀä" ; +VAL_ 2424501746 BMS_HeatingStatus 1 "¼ÓÈÈÖÐ" 0 "δ¼ÓÈÈ" ; +VAL_ 2424501746 BMS_BalanceStatus 1 "¾ùºâÖÐ" 0 "δ¾ùºâ" ; +VAL_ 2424501746 BMS_SelfCheckStatus 3 "±£Áô" 2 "×Լìʧ°Ü" 1 "×ԼìÍê³É" 0 "×ԼìÖÐ" ; +VAL_ 2424501746 BMS_PerchargeStatus 3 "Ԥ³äʧ°Ü" 2 "Ԥ³äÍê³É" 1 "Ԥ³äÖÐ" 0 "δԤ³ä" ; +VAL_ 2424501746 BMS_ChargeStatus 3 "±£Áô" 2 "³äµçÍê³É" 1 "³äµçÖÐ" 0 "δ³äµç" ; +VAL_ 2424501746 BMS_ChargeMode 3 "±£Áô" 2 "½»Á÷ģʽ" 1 "ֱÁ÷ģʽ" 0 "δ³äµç" ; +VAL_ 2355557619 VCU_UrgencyCutOffPowerReq 1 "ÇëÇóϸßѹ" 0 "δÇëÇó" ; +VAL_ 2355557619 VCU_PowerOnReq 1 "ÇëÇóÉϸßѹ" 0 "ÇëÇóϸßѹ" ; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ip_current_start0.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ip_current_start0.dbc new file mode 100644 index 0000000..3ac118e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/ip_current_start0.dbc @@ -0,0 +1,38 @@ +VERSION "" + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: Vector__XXX + +BO_ 962 IP_x02: 8 Vector__XXX + SG_ IP_CURRENT : 0|32@1+ (1,-2147483648) [-1050000|1050000] "mA" Vector__XXX diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/prepare_c01.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/prepare_c01.dbc new file mode 100644 index 0000000..732eb9e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/prepare_c01.dbc @@ -0,0 +1,258 @@ +VERSION "DNPBNNNYNNNNNNNNNNNNNNNNNNYYYNYNNNNNNNNNNN/4/%%%/4/'%**4NNN///" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: CAB1000_Sensor BMS_Master +VAL_TABLE_ IP_LOGIC -1 "Invalid" -2 "Init" ; +VAL_TABLE_ ERROR_Def 97 "Bootloader Error" 96 "Internal Common Error" 85 "Supply Overvoltage Error" 84 "Supply Undervoltage Error" 68 "Overtemperature Error" 65 "Overcurrent Error" 64 "Memory Error" ; +VAL_TABLE_ Range_Def 3 "High2" 2 "High" 1 "Middle" 0 "Low" ; +VAL_TABLE_ SystemMode_Def 9 "FLT_NO_RECOVERY" 8 "FLT_YES_FLUX_NO_DCDC" 7 "FLUX_CHECK" 6 "FLT_NO_FLUX_NO_DCDC" 5 "FLT_NO_COMM" 4 "FLT_NO_FLUX_YES_DCDC" 3 "CALIB" 2 "RUN" 1 "CHECK" 0 "INIT" ; +VAL_TABLE_ TempSource_Def 1 "MCU" 0 "NTC" ; +VAL_TABLE_ ClockSource_Def 1 "Internal" 0 "External" ; +VAL_TABLE_ FunctionStatus_Def 1 "Active" 0 "Inactive" ; +VAL_TABLE_ FaultStatus_Def 1 "Error" 0 "No Error" ; + + +BO_ 964 IP_x04: 8 Vector__XXX + SG_ SW_REV_MAJ : 63|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ SW_REV_MIN : 59|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ PRODUCT_NAME : 47|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INFORMATION : 39|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INDICATION : 32|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ IP_CURRENT : 7|32@0+ (1,-2147483648) [-1050000|1050000] "mA" Vector__XXX + +BO_ 963 IP_x03: 8 Vector__XXX + SG_ SW_REV_MAJ : 63|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ SW_REV_MIN : 59|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ PRODUCT_NAME : 47|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INFORMATION : 39|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INDICATION : 32|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ IP_CURRENT : 7|32@0+ (1,-2147483648) [-1050000|1050000] "mA" Vector__XXX + +BO_ 962 IP_x02: 8 Vector__XXX + SG_ SW_REV_MAJ : 63|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ SW_REV_MIN : 59|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ PRODUCT_NAME : 47|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INFORMATION : 39|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INDICATION : 32|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ IP_CURRENT : 7|32@0+ (1,-2147483648) [-1050000|1050000] "mA" Vector__XXX + +BO_ 961 IP_x01: 8 Vector__XXX + SG_ SW_REV_MAJ : 63|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ SW_REV_MIN : 59|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ PRODUCT_NAME : 47|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INFORMATION : 39|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INDICATION : 32|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ IP_CURRENT : 7|32@0+ (1,-2147483648) [-1050000|1050000] "mA" Vector__XXX + +BO_ 960 IP_x00: 8 Vector__XXX + SG_ SW_REV_MAJ : 63|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ SW_REV_MIN : 59|4@0+ (1,0) [0|0] "" Vector__XXX + SG_ PRODUCT_NAME : 47|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INFORMATION : 39|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ ERROR_INDICATION : 32|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ IP_CURRENT : 7|32@0+ (1,-2147483648) [-1050000|1050000] "mA" Vector__XXX + +BO_ 2026 LEM_ACurr_HrFlatCurr: 8 Vector__XXX + SG_ ACurr_HrOffFlatTail : 55|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ACurr_HrOffFlatHead : 39|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ACurr_HrOnFlatTail : 23|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ACurr_HrOnFlatHead : 7|16@0+ (1,0) [0|0] "" Vector__XXX + +BO_ 2028 LEM_ACurr_MrFlatCurr: 8 Vector__XXX + SG_ ACurr_MrOffFlatTail : 55|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ACurr_MrOffFlatHead : 39|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ACurr_MrOnFlatTail : 23|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ACurr_MrOnFlatHead : 7|16@0+ (1,0) [0|0] "" Vector__XXX + +BO_ 2030 LEM_ACurr_LrFlatCurr: 8 Vector__XXX + SG_ ACurr_LrOffFlatTail : 55|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ACurr_LrOffFlatHead : 39|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ACurr_LrOnFlatTail : 23|16@0+ (1,0) [0|0] "" Vector__XXX + SG_ ACurr_LrOnFlatHead : 7|16@0+ (1,0) [0|0] "" Vector__XXX + +BO_ 2024 LEM_System: 8 CAB1000_Sensor + SG_ Flt_AdcMux_Hw : 31|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ Flt_CfgPara_CRC : 32|1@0+ (1,0) [0|0] "" Vector__XXX + SG_ Sys_ACurrRange : 62|2@0+ (1,0) [0|0] "" Vector__XXX + SG_ Sys_TempSrc : 60|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Sys_ClkSrc : 59|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Sys_Alias : 58|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Sys_FluxStat : 57|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Sys_Dcdc : 56|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Sys_Mode : 55|8@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Hbridge_OC1 : 24|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Hbridge_OC2 : 25|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbridge_UV3 : 26|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbridge_OV3 : 27|1@0+ (1,0) [0|1] "" BMS_Master + SG_ Flt_Clk_Fail : 28|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Can_Busoff1 : 29|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Can_Busoff2 : 30|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Curr_LrOffset : 16|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Curr_HrOffset : 17|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Curr_MrOffset : 18|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Freq_OF : 19|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Freq_UF : 20|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Hbridge_Stop : 21|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Curr_Diff : 22|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Calib_Fail : 23|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_V5v_UV : 8|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_V5v_OV : 9|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Ntc_SC : 10|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Ntc_OL : 11|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Ntc_OT : 12|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Curr_PosOCD : 13|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Curr_NegOCD : 14|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbridge_OV2 : 7|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbridge_OV1 : 6|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbridge_UV2 : 5|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbridge_UV1 : 4|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbat_OV2 : 3|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbat_OV1 : 2|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbat_UV2 : 1|1@0+ (1,0) [0|0] "" BMS_Master + SG_ Flt_Vbat_UV1 : 0|1@0+ (1,0) [0|0] "" BMS_Master + +BO_ 2038 LEM_ACurr_HrCurr: 8 CAB1000_Sensor + SG_ ACurr_Hr2Current : 39|32@0- (1,0) [0|0] "mA" Vector__XXX + SG_ ACurr_HrCurrent : 7|32@0- (1,0) [0|0] "mA" BMS_Master + +BO_ 2040 LEM_ACurr_LrMrCurr: 8 CAB1000_Sensor + SG_ ACurr_MrCurrent : 39|32@0- (1,0) [0|0] "mA" BMS_Master + SG_ ACurr_LrCurrent : 7|32@0- (1,0) [0|0] "mA" BMS_Master + +BO_ 2042 LEM_ACurr_Offset: 6 CAB1000_Sensor + SG_ ACurr_HrOffset : 39|16@0+ (1,0) [0|0] "mV" BMS_Master + SG_ ACurr_MrOffset : 23|16@0+ (1,0) [0|0] "mV" BMS_Master + SG_ ACurr_LrOffset : 7|16@0+ (1,0) [0|0] "mV" BMS_Master + +BO_ 2032 LEM_Temperature: 6 CAB1000_Sensor + SG_ V_ProtBatt : 39|16@0+ (1,0) [0|0] "mV" Vector__XXX + SG_ T_Mcu : 23|16@0- (1,0) [0|0] "degC" BMS_Master + SG_ T_Ntc : 7|16@0- (1,0) [0|0] "degC" BMS_Master + +BO_ 2036 LEM_DCurr: 7 CAB1000_Sensor + SG_ DCurr_Freq : 39|16@0+ (1,0) [0|0] "Hz" BMS_Master + SG_ DCurr_DutyCycle : 55|8@0+ (1,0) [0|0] "%" BMS_Master + SG_ DCurr_FilterCurrent : 7|32@0- (1,0) [0|0] "mA" BMS_Master + +BO_ 2034 LEM_Voltage: 8 CAB1000_Sensor + SG_ V_3v3 : 55|16@0+ (1,0) [0|0] "mV" Vector__XXX + SG_ V_5v : 39|16@0+ (1,0) [0|0] "mV" BMS_Master + SG_ V_Batt : 7|16@0+ (1,0) [0|0] "mV" BMS_Master + SG_ V_Bridge : 23|16@0+ (1,0) [0|0] "mV" BMS_Master + +BO_ 1678 UDS_Server: 8 Vector__XXX + SG_ UDS_SERVER_7 : 63|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_SERVER_6 : 55|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_SERVER_5 : 47|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_SERVER_4 : 39|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_SERVER_3 : 31|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_SERVER_2 : 23|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_SERVER_1 : 15|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_SERVER_0 : 7|8@0+ (1,0) [0|0] "" Vector__XXX + +BO_ 1677 UDS_Client: 8 Vector__XXX + SG_ UDS_CLIENT_7 : 63|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_CLIENT_6 : 55|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_CLIENT_5 : 47|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_CLIENT_4 : 39|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_CLIENT_3 : 31|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_CLIENT_2 : 23|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_CLIENT_1 : 15|8@0+ (1,0) [0|0] "" Vector__XXX + SG_ UDS_CLIENT_0 : 7|8@0+ (1,0) [0|0] "" Vector__XXX + + + +BA_DEF_ "BusType" STRING ; +BA_DEF_ "Manufacturer" STRING ; +BA_DEF_ BO_ "CycleTime" INT 5 1000; +BA_DEF_DEF_ "BusType" ""; +BA_DEF_DEF_ "Manufacturer" "Mitsubishi"; +BA_DEF_DEF_ "CycleTime" 100; +BA_ "BusType" "CAN"; +VAL_ 964 ERROR_INFORMATION 97 "Bootloader Error" 96 "Internal Common Error" 85 "Supply Overvoltage Error" 84 "Supply Undervoltage Error" 68 "Overtemperature Error" 65 "Overcurrent Error" 64 "Memory Error" ; +VAL_ 964 ERROR_INDICATION 1 "Error" 0 "No Error" ; +VAL_ 964 IP_CURRENT -1 "Invalid" -2 "Init" ; +VAL_ 963 ERROR_INFORMATION 97 "Bootloader Error" 96 "Internal Common Error" 85 "Supply Overvoltage Error" 84 "Supply Undervoltage Error" 68 "Overtemperature Error" 65 "Overcurrent Error" 64 "Memory Error" ; +VAL_ 963 ERROR_INDICATION 1 "Error" 0 "No Error" ; +VAL_ 963 IP_CURRENT -1 "Invalid" -2 "Init" ; +VAL_ 962 ERROR_INFORMATION 97 "Bootloader Error" 96 "Internal Common Error" 85 "Supply Overvoltage Error" 84 "Supply Undervoltage Error" 68 "Overtemperature Error" 65 "Overcurrent Error" 64 "Memory Error" ; +VAL_ 962 ERROR_INDICATION 1 "Error" 0 "No Error" ; +VAL_ 962 IP_CURRENT -1 "Invalid" -2 "Init" ; +VAL_ 961 ERROR_INFORMATION 97 "Bootloader Error" 96 "Internal Common Error" 85 "Supply Overvoltage Error" 84 "Supply Undervoltage Error" 68 "Overtemperature Error" 65 "Overcurrent Error" 64 "Memory Error" ; +VAL_ 961 ERROR_INDICATION 1 "Error" 0 "No Error" ; +VAL_ 961 IP_CURRENT -1 "Invalid" -2 "Init" ; +VAL_ 960 ERROR_INFORMATION 97 "Bootloader Error" 96 "Internal Common Error" 85 "Supply Overvoltage Error" 84 "Supply Undervoltage Error" 68 "Overtemperature Error" 65 "Overcurrent Error" 64 "Memory Error" ; +VAL_ 960 ERROR_INDICATION 1 "Error" 0 "No Error" ; +VAL_ 960 IP_CURRENT -1 "Invalid" -2 "Init" ; +VAL_ 2024 Flt_AdcMux_Hw 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_CfgPara_CRC 1 "Error" 0 "No Error" ; +VAL_ 2024 Sys_ACurrRange 3 "High2" 2 "High" 1 "Middle" 0 "Low" ; +VAL_ 2024 Sys_TempSrc 1 "MCU" 0 "NTC" ; +VAL_ 2024 Sys_ClkSrc 1 "Internal" 0 "External" ; +VAL_ 2024 Sys_Alias 1 "Active" 0 "Inactive" ; +VAL_ 2024 Sys_FluxStat 1 "Active" 0 "Inactive" ; +VAL_ 2024 Sys_Dcdc 1 "Active" 0 "Inactive" ; +VAL_ 2024 Sys_Mode 9 "FLT_NO_RECOVERY" 8 "FLT_YES_FLUX_NO_DCDC" 7 "FLUX_CHECK" 6 "FLT_NO_FLUX_NO_DCDC" 5 "FLT_NO_COMM" 4 "FLT_NO_FLUX_YES_DCDC" 3 "CALIB" 2 "RUN" 1 "CHECK" 0 "INIT" ; +VAL_ 2024 Flt_Hbridge_OC1 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Hbridge_OC2 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbridge_UV3 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbridge_OV3 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Clk_Fail 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Can_Busoff1 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Can_Busoff2 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Curr_LrOffset 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Curr_HrOffset 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Curr_MrOffset 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Freq_OF 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Freq_UF 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Hbridge_Stop 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Curr_Diff 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Calib_Fail 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_V5v_UV 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_V5v_OV 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Ntc_SC 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Ntc_OL 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Ntc_OT 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Curr_PosOCD 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Curr_NegOCD 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbridge_OV2 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbridge_OV1 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbridge_UV2 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbridge_UV1 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbat_OV2 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbat_OV1 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbat_UV2 1 "Error" 0 "No Error" ; +VAL_ 2024 Flt_Vbat_UV1 1 "Error" 0 "No Error" ; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/sig_group.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/sig_group.dbc new file mode 100644 index 0000000..70395fa --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/sig_group.dbc @@ -0,0 +1,381 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: Tester ECU +VAL_TABLE_ CanNmPnFilterMaskByte_1 32 "ComMUser_PN29" ; +VAL_TABLE_ CanNmPnFilterMaskByte_0 2 "ComMUser_PN17" ; +VAL_TABLE_ TemperatureSensor 255 "SNA" ; + + +BO_ 624 CAN0_Rx_0x270_TSyn_Slave: 8 Tester + SG_ CAN_TSyn_Rx : 7|64@0+ (1,0) [0|1.84467440737096E+019] "" ECU + +BO_ 880 CAN0_Tx_0x370_TSyn_Master: 8 ECU + SG_ CAN_TSyn_Tx : 7|64@0+ (1,0) [0|1.84467440737096E+019] "" Tester + +BO_ 864 CAN0_Tx_0x360_E2E_P01: 8 ECU + SG_ CAN0_Tx_0x360_Sig_8_U8 : 63|8@0+ (1,0) [0|255] "" Tester + SG_ CAN0_Tx_0x360_Sig_7_U5 : 54|5@0+ (1,0) [0|31] "" Tester + SG_ CAN0_Tx_0x360_Sig_6_U2 : 49|2@0+ (1,0) [0|3] "" Tester + SG_ CAN0_Tx_0x360_Sig_5_U16 : 39|16@0+ (1,0) [0|65535] "" Tester + SG_ CAN0_Tx_0x360_Sig_4_U8 : 31|8@0+ (1,0) [0|255] "" Tester + SG_ CAN0_Tx_0x360_Sig_2_U3 : 19|3@0+ (1,0) [0|7] "" Tester + SG_ CAN0_Tx_0x360_Sig_3_U4 : 23|4@0+ (1,0) [0|15] "" Tester + SG_ CAN0_Tx_0x360_Sig_1_U1 : 16|1@0+ (1,0) [0|1] "" Tester + SG_ CAN0_Tx_0x360_Counter : 11|4@0+ (1,0) [0|15] "" Tester + SG_ CAN0_Tx_0x360_CRC : 7|8@0+ (1,0) [0|255] "" Tester + +BO_ 608 CAN0_Rx_0x260_E2E_P01: 8 Tester + SG_ CAN0_Rx_0x260_Sig_8_U8 : 63|8@0+ (1,0) [0|255] "" ECU + SG_ CAN0_Rx_0x260_Sig_7_U5 : 54|5@0+ (1,0) [0|31] "" ECU + SG_ CAN0_Rx_0x260_Sig_6_U2 : 49|2@0+ (1,0) [0|3] "" ECU + SG_ CAN0_Rx_0x260_Sig_5_U16 : 39|16@0+ (1,0) [0|65535] "" ECU + SG_ CAN0_Rx_0x260_Sig_4_U8 : 31|8@0+ (1,0) [0|255] "" ECU + SG_ CAN0_Rx_0x260_Sig_2_U3 : 19|3@0+ (1,0) [0|7] "" ECU + SG_ CAN0_Rx_0x260_Sig_3_U4 : 23|4@0+ (1,0) [0|15] "" ECU + SG_ CAN0_Rx_0x260_Sig_1_U1 : 16|1@0+ (1,0) [0|1] "" ECU + SG_ CAN0_Rx_0x260_Counter : 11|4@0+ (1,0) [0|15] "" ECU + SG_ CAN0_Rx_0x260_CRC : 7|8@0+ (1,0) [0|255] "" ECU + +BO_ 593 CAN0_Rx_0x251_Cyclic_PN29: 8 Tester + SG_ CAN0_Rx_0x251_Cyclic_PN29_Sig : 7|16@0+ (1,0) [0|65535] "" ECU + +BO_ 849 CAN0_Tx_0x351_Cyclic_PN29: 8 ECU + SG_ CAN0_Tx_0x351_Cyclic_PN29_Sig : 7|16@0+ (1,0) [0|65535] "" Tester + +BO_ 592 CAN0_Rx_0x250_Cyclic_PN17: 8 Tester + SG_ CAN0_Rx_0x250_Cyclic_PN17_Sig : 7|16@0+ (1,0) [0|65535] "" ECU + +BO_ 848 CAN0_Tx_0x350_Cyclic_PN17: 8 ECU + SG_ CAN0_Tx_0x350_Cyclic_PN17_Sig : 7|16@0+ (1,0) [0|65535] "" Tester + +BO_ 512 CAN0_Rx_0x200_Cyclic: 8 Tester + SG_ CAN0_Rx_0x200_Sig_4_U31 : 39|31@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x200_Sig_3_U15 : 23|15@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x200_Sig_2_U6 : 15|6@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x200_Sig_1_U4 : 7|4@0+ (1,0) [0|15] "" ECU + SG_ CAN0_Rx_0x200_Sig_4_U31_UB : 56|1@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x200_Sig_3_U15_UB : 24|1@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x200_Sig_2_U6_UB : 9|1@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x200_Sig_1_U4_UB : 3|1@0+ (1,0) [0|15] "" ECU + +BO_ 513 CAN0_Rx_0x201_Event: 8 Tester + SG_ CAN0_Rx_0x201_Sig_4_U32 : 39|32@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x201_Sig_3_U16 : 11|16@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x201_Sig_2_U8 : 3|8@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x201_Sig_1_U3 : 7|3@0+ (1,0) [0|15] "" ECU + +BO_ 514 CAN0_Rx_0x202_Mixed: 8 Tester + SG_ CAN0_Rx_0x202_Sig_7_U2 : 52|2@0+ (1,0) [0|15] "" ECU + SG_ CAN0_Rx_0x202_Sig_6_U1 : 11|1@0+ (1,0) [0|15] "" ECU + SG_ CAN0_Rx_0x202_Sig_4_U8 : 39|8@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x202_Sig_3_U16 : 23|16@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x202_Sig_2_U8 : 3|8@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x202_Sig_1_U4 : 7|4@0+ (1,0) [0|15] "" ECU + SG_ CAN0_Rx_0x202_Sig_5_U1 : 47|1@0+ (1,0) [0|15] "" ECU + +BO_ 515 CAN0_Rx_0x203_Cyclic_Counter: 8 Tester + SG_ CAN0_Rx_0x203_Sig_4_U32 : 39|32@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x203_Sig_3_U16 : 23|16@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x203_Sig_2_U8 : 3|8@0+ (1,0) [0|0] "" ECU + SG_ CAN0_Rx_0x203_Sig_1_U4 : 7|4@0+ (1,0) [0|15] "" ECU + SG_ CAN0_Rx_0x203_Sig_RollingCounter : 11|4@0+ (1,0) [0|15] "" ECU + +BO_ 768 CAN0_Tx_0x300_Cyclic: 8 ECU + SG_ CAN0_Tx_0x300_Sig_4_U31 : 39|31@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x300_Sig_3_U15 : 23|15@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x300_Sig_2_U6 : 15|6@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x300_Sig_1_U4 : 7|4@0+ (1,0) [0|15] "" Tester + SG_ CAN0_Tx_0x300_Sig_4_U31_UB : 56|1@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x300_Sig_3_U15_UB : 24|1@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x300_Sig_2_U6_UB : 9|1@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x300_Sig_1_U4_UB : 3|1@0+ (1,0) [0|15] "" Tester + +BO_ 769 CAN0_Tx_0x301_Event: 8 ECU + SG_ CAN0_Tx_0x301_Sig_4_U32 : 39|32@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x301_Sig_3_U16 : 11|16@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x301_Sig_2_U8 : 3|8@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x301_Sig_1_U3 : 7|3@0+ (1,0) [0|15] "" Tester + +BO_ 770 CAN0_Tx_0x302_Mixed: 8 ECU + SG_ CAN0_Tx_0x302_Sig_7_U2 : 52|2@0+ (1,0) [0|15] "" Tester + SG_ CAN0_Tx_0x302_Sig_6_U1 : 11|1@0+ (1,0) [0|15] "" Tester + SG_ CAN0_Tx_0x302_Sig_4_U8 : 39|8@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x302_Sig_3_U16 : 23|16@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x302_Sig_2_U8 : 3|8@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x302_Sig_1_U4 : 7|4@0+ (1,0) [0|15] "" Tester + SG_ CAN0_Tx_0x302_Sig_5_U1 : 47|1@0+ (1,0) [0|15] "" Tester + +BO_ 771 CAN0_Tx_0x303_Cyclic_Counter: 8 ECU + SG_ CAN0_Tx_0x303_Sig_4_U32 : 39|32@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x303_Sig_3_U16 : 23|16@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x303_Sig_2_U8 : 3|8@0+ (1,0) [0|0] "" Tester + SG_ CAN0_Tx_0x303_Sig_1_U4 : 7|4@0+ (1,0) [0|15] "" Tester + SG_ CAN0_Tx_0x303_Sig_RollingCounter : 11|4@0+ (1,0) [0|15] "" Tester + +BO_ 1551 CAN0_Tx_0x60F_XCP_Slave: 8 ECU + SG_ XCP_Slave : 7|64@0+ (1,0) [0|1.84467440737096E+019] "" Tester + +BO_ 1537 CAN0_Rx_0x601_XCP_Master: 8 Tester + SG_ XCP_Master : 7|64@0+ (1,0) [0|1.84467440737096E+019] "" ECU + +BO_ 1280 CAN0_Rx_0x5xx_NM_ECU: 8 Tester + SG_ NM_Signal_Tester_Byte5 : 63|8@0+ (1,0) [0|255] "" ECU + SG_ NM_Signal_Tester_Byte4 : 55|8@0+ (1,0) [0|255] "" ECU + SG_ NM_Signal_Tester_Byte3 : 47|8@0+ (1,0) [0|255] "" ECU + SG_ NM_Signal_Tester_Byte2 : 39|8@0+ (1,0) [0|255] "" ECU + SG_ NM_Signal_Tester_Byte1 : 31|8@0+ (1,0) [0|255] "" ECU + SG_ NM_Signal_Tester_Byte0 : 23|8@0+ (1,0) [0|255] "" ECU + SG_ NM_Signal_Tester_CBV : 15|8@0+ (1,0) [0|255] "" ECU + SG_ NM_Signal_Tester_SNI : 7|8@0+ (1,0) [0|255] "" ECU + +BO_ 1801 CAN0_Tx_0x709_Diag_Phy_Response: 8 ECU + SG_ Diag_Phy_Response : 7|64@0+ (1,0) [0|0] "" Tester + +BO_ 1281 CAN0_Tx_0x501_NM_ECU: 8 ECU + SG_ NM_Signal_ECU_Byte5 : 63|8@0+ (1,0) [0|255] "" Tester + SG_ NM_Signal_ECU_Byte4 : 55|8@0+ (1,0) [0|255] "" Tester + SG_ NM_Signal_ECU_Byte3 : 47|8@0+ (1,0) [0|255] "" Tester + SG_ NM_Signal_ECU_Byte2 : 39|8@0+ (1,0) [0|255] "" Tester + SG_ NM_Signal_ECU_Byte1 : 31|8@0+ (1,0) [0|255] "" Tester + SG_ NM_Signal_ECU_Byte0 : 23|8@0+ (1,0) [0|255] "" Tester + SG_ NM_Signal_ECU_CBV : 15|8@0+ (1,0) [0|255] "" Tester + SG_ NM_Signal_ECU_SNI : 7|8@0+ (1,0) [0|255] "" Tester + +BO_ 2015 CAN0_Rx_0x7df_Diag_Fun_Request: 8 Tester + SG_ Diag_Fun_Request : 7|64@0+ (1,0) [0|1.84467440737096E+019] "" ECU + +BO_ 1800 CAN0_Rx_0x708_Diag_Phy_Request: 8 Tester + SG_ Diag_Phy_Request : 7|64@0+ (1,0) [0|1.84467440737096E+019] "" ECU + + + +CM_ BO_ 864 "DATAID��0x1234"; +CM_ BO_ 608 "DATAID��0x1234"; +BA_DEF_ SG_ "GenSigTimeoutTime" INT 0 65535; +BA_DEF_ SG_ "GenSigSendType" ENUM "Cyclic","OnWrite","OnWriteWithRepetition","OnChange","OnChangeWithRepetition","NotUsed","NotUsed","NoSigSendType"; +BA_DEF_ "NmType" STRING ; +BA_DEF_ BO_ "NmMessage" ENUM "No","Yes"; +BA_DEF_ "NmAsrWaitBusSleepTime" INT 0 65535; +BA_DEF_ "NmAsrTimeoutTime" INT 1 65535; +BA_DEF_ "NmAsrRepeatMessageTime" INT 0 65535; +BA_DEF_ BU_ "NMAsrNodeIdentifier" HEX 0 255; +BA_DEF_ BU_ "NmAsrNode" ENUM "No","Yes"; +BA_DEF_ "NmAsrMessageCount" INT 1 256; +BA_DEF_ BO_ "NmAsrMessage" ENUM "No","Yes"; +BA_DEF_ BU_ "NmAsrCanMsgReducedTime" INT 0 65535; +BA_DEF_ "NmAsrCanMsgCycleTime" INT 1 65535; +BA_DEF_ BU_ "NmAsrCanMsgCycleOffset" INT 0 65535; +BA_DEF_ "NmAsrBaseAddress" HEX 0 2047; +BA_DEF_ "Manufacturer" STRING ; +BA_DEF_ BU_ "ILUsed" ENUM "No","Yes"; +BA_DEF_ SG_ "GenSigValidAfterKL15" ENUM "Y","N","Null"; +BA_DEF_ SG_ "GenSigUpdataPeriod" INT 0 300000; +BA_DEF_ SG_ "GenSigStartValue" INT 0 2147483647; +BA_DEF_ SG_ "GenSigNote" STRING ; +BA_DEF_ SG_ "GenSigInactiveValue" INT 0 2147483647; +BA_DEF_ SG_ "GenSigGWTimeoutValue" HEX 0 300000; +BA_DEF_ BO_ "GenMsgStartDelayTime" INT 0 65535; +BA_DEF_ BO_ "GenMsgInhibitTime" INT 0 300000; +BA_DEF_ BO_ "GenMsgILSupport" ENUM "No","Yes"; +BA_DEF_ BO_ "GenMsgDelayTime" INT 0 1000; +BA_DEF_ BO_ "GenMsgCycleTimeFast" INT 0 300000; +BA_DEF_ BO_ "GenMsgCycleTimeActive" INT 0 0; +BA_DEF_ BO_ "GenMsgCycleTime" INT 0 300000; +BA_DEF_ BU_ "DiagStationAddress" HEX 0 255; +BA_DEF_ BO_ "DiagState" ENUM "No","Yes"; +BA_DEF_ BO_ "DiagResponse" ENUM "No","Yes"; +BA_DEF_ BO_ "DiagRequest" ENUM "No","Yes"; +BA_DEF_ BO_ "GenMsgNrOfRepetition" INT 0 0; +BA_DEF_ BO_ "GenMsgSendType" ENUM "Cyclic","Event","Mixed"; +BA_DEF_ BO_ "CANFD_BRS" ENUM "0","1"; +BA_DEF_ "DBName" STRING ; +BA_DEF_ "BusType" STRING ; +BA_DEF_ BU_ "NodeLayerModules" STRING ; +BA_DEF_ BU_ "ECU" STRING ; +BA_DEF_ BU_ "CANoeJitterMax" INT 0 0; +BA_DEF_ BU_ "CANoeJitterMin" INT 0 0; +BA_DEF_ BU_ "CANoeDrift" INT 0 0; +BA_DEF_ BU_ "CANoeStartDelay" INT 0 0; +BA_DEF_ BO_ "VFrameFormat" ENUM "StandardCAN","ExtendedCAN","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","StandardCAN_FD","ExtendedCAN_FD"; +BA_DEF_DEF_ "GenSigTimeoutTime" 0; +BA_DEF_DEF_ "GenSigSendType" "Cyclic"; +BA_DEF_DEF_ "NmType" "NmAsr"; +BA_DEF_DEF_ "NmMessage" "No"; +BA_DEF_DEF_ "NmAsrWaitBusSleepTime" 1500; +BA_DEF_DEF_ "NmAsrTimeoutTime" 5000; +BA_DEF_DEF_ "NmAsrRepeatMessageTime" 500; +BA_DEF_DEF_ "NMAsrNodeIdentifier" 0; +BA_DEF_DEF_ "NmAsrNode" "No"; +BA_DEF_DEF_ "NmAsrMessageCount" 128; +BA_DEF_DEF_ "NmAsrMessage" "No"; +BA_DEF_DEF_ "NmAsrCanMsgReducedTime" 100; +BA_DEF_DEF_ "NmAsrCanMsgCycleTime" 200; +BA_DEF_DEF_ "NmAsrCanMsgCycleOffset" 0; +BA_DEF_DEF_ "NmAsrBaseAddress" 1280; +BA_DEF_DEF_ "Manufacturer" ""; +BA_DEF_DEF_ "ILUsed" "Yes"; +BA_DEF_DEF_ "GenSigValidAfterKL15" "Y"; +BA_DEF_DEF_ "GenSigUpdataPeriod" 0; +BA_DEF_DEF_ "GenSigStartValue" 0; +BA_DEF_DEF_ "GenSigNote" ""; +BA_DEF_DEF_ "GenSigInactiveValue" 0; +BA_DEF_DEF_ "GenSigGWTimeoutValue" 0; +BA_DEF_DEF_ "GenMsgStartDelayTime" 0; +BA_DEF_DEF_ "GenMsgInhibitTime" 0; +BA_DEF_DEF_ "GenMsgILSupport" "Yes"; +BA_DEF_DEF_ "GenMsgDelayTime" 0; +BA_DEF_DEF_ "GenMsgCycleTimeFast" 0; +BA_DEF_DEF_ "GenMsgCycleTimeActive" 0; +BA_DEF_DEF_ "GenMsgCycleTime" 0; +BA_DEF_DEF_ "DiagStationAddress" 0; +BA_DEF_DEF_ "DiagState" "No"; +BA_DEF_DEF_ "DiagResponse" "No"; +BA_DEF_DEF_ "DiagRequest" "No"; +BA_DEF_DEF_ "GenMsgNrOfRepetition" 0; +BA_DEF_DEF_ "GenMsgSendType" "Cyclic"; +BA_DEF_DEF_ "CANFD_BRS" "1"; +BA_DEF_DEF_ "DBName" ""; +BA_DEF_DEF_ "BusType" ""; +BA_DEF_DEF_ "NodeLayerModules" ""; +BA_DEF_DEF_ "ECU" ""; +BA_DEF_DEF_ "CANoeJitterMax" 0; +BA_DEF_DEF_ "CANoeJitterMin" 0; +BA_DEF_DEF_ "CANoeDrift" 0; +BA_DEF_DEF_ "CANoeStartDelay" 0; +BA_DEF_DEF_ "VFrameFormat" "StandardCAN"; +BA_ "BusType" "CAN"; +BA_ "NmAsrTimeoutTime" 3000; +BA_ "NmAsrRepeatMessageTime" 3000; +BA_ "NmAsrMessageCount" 256; +BA_ "NmAsrCanMsgCycleTime" 1000; +BA_ "DBName" "CAN_Demo"; +BA_ "NmAsrNode" BU_ Tester 1; +BA_ "NmAsrCanMsgReducedTime" BU_ Tester 600; +BA_ "NmAsrNode" BU_ ECU 1; +BA_ "NMAsrNodeIdentifier" BU_ ECU 1; +BA_ "NmAsrCanMsgReducedTime" BU_ ECU 500; +BA_ "GenMsgILSupport" BO_ 624 0; +BA_ "GenMsgCycleTime" BO_ 624 100; +BA_ "GenMsgILSupport" BO_ 880 0; +BA_ "GenMsgCycleTime" BO_ 880 100; +BA_ "GenMsgCycleTime" BO_ 864 100; +BA_ "GenMsgCycleTime" BO_ 608 100; +BA_ "GenMsgCycleTime" BO_ 593 100; +BA_ "GenMsgCycleTime" BO_ 849 100; +BA_ "GenMsgCycleTime" BO_ 592 100; +BA_ "GenMsgCycleTime" BO_ 848 100; +BA_ "GenMsgCycleTimeFast" BO_ 848 0; +BA_ "VFrameFormat" BO_ 512 0; +BA_ "GenMsgCycleTime" BO_ 512 100; +BA_ "VFrameFormat" BO_ 513 0; +BA_ "GenMsgSendType" BO_ 513 1; +BA_ "GenMsgNrOfRepetition" BO_ 513 3; +BA_ "VFrameFormat" BO_ 514 0; +BA_ "GenMsgCycleTime" BO_ 514 500; +BA_ "GenMsgCycleTimeFast" BO_ 514 50; +BA_ "GenMsgSendType" BO_ 514 2; +BA_ "GenMsgCycleTime" BO_ 515 50; +BA_ "VFrameFormat" BO_ 768 0; +BA_ "GenMsgCycleTime" BO_ 768 100; +BA_ "VFrameFormat" BO_ 769 0; +BA_ "GenMsgSendType" BO_ 769 1; +BA_ "GenMsgNrOfRepetition" BO_ 769 3; +BA_ "GenMsgCycleTimeFast" BO_ 769 50; +BA_ "GenMsgDelayTime" BO_ 769 10; +BA_ "VFrameFormat" BO_ 770 0; +BA_ "GenMsgSendType" BO_ 770 2; +BA_ "GenMsgNrOfRepetition" BO_ 770 3; +BA_ "GenMsgCycleTimeFast" BO_ 770 50; +BA_ "GenMsgCycleTime" BO_ 770 500; +BA_ "GenMsgDelayTime" BO_ 770 10; +BA_ "GenMsgCycleTime" BO_ 771 50; +BA_ "GenMsgILSupport" BO_ 1551 0; +BA_ "GenMsgSendType" BO_ 1551 1; +BA_ "GenMsgILSupport" BO_ 1537 0; +BA_ "GenMsgSendType" BO_ 1537 1; +BA_ "NmMessage" BO_ 1280 1; +BA_ "NmAsrMessage" BO_ 1280 1; +BA_ "GenMsgILSupport" BO_ 1280 0; +BA_ "DiagResponse" BO_ 1801 1; +BA_ "GenMsgILSupport" BO_ 1801 0; +BA_ "GenMsgSendType" BO_ 1801 1; +BA_ "NmMessage" BO_ 1281 1; +BA_ "NmAsrMessage" BO_ 1281 1; +BA_ "GenMsgILSupport" BO_ 1281 0; +BA_ "DiagState" BO_ 2015 1; +BA_ "VFrameFormat" BO_ 2015 0; +BA_ "GenMsgILSupport" BO_ 2015 0; +BA_ "GenMsgSendType" BO_ 2015 1; +BA_ "VFrameFormat" BO_ 1800 0; +BA_ "DiagRequest" BO_ 1800 1; +BA_ "GenMsgILSupport" BO_ 1800 0; +BA_ "GenMsgSendType" BO_ 1800 1; +BA_ "GenSigGWTimeoutValue" SG_ 849 CAN0_Tx_0x351_Cyclic_PN29_Sig 0; +BA_ "GenSigGWTimeoutValue" SG_ 848 CAN0_Tx_0x350_Cyclic_PN17_Sig 0; +BA_ "GenSigSendType" SG_ 512 CAN0_Rx_0x200_Sig_4_U31_UB 7; +BA_ "GenSigSendType" SG_ 512 CAN0_Rx_0x200_Sig_3_U15_UB 7; +BA_ "GenSigSendType" SG_ 512 CAN0_Rx_0x200_Sig_2_U6_UB 7; +BA_ "GenSigSendType" SG_ 512 CAN0_Rx_0x200_Sig_1_U4_UB 7; +BA_ "GenSigInactiveValue" SG_ 513 CAN0_Rx_0x201_Sig_2_U8 255; +BA_ "GenSigTimeoutTime" SG_ 514 CAN0_Rx_0x202_Sig_7_U2 2500; +BA_ "GenSigSendType" SG_ 768 CAN0_Tx_0x300_Sig_4_U31_UB 7; +BA_ "GenSigSendType" SG_ 768 CAN0_Tx_0x300_Sig_3_U15_UB 7; +BA_ "GenSigSendType" SG_ 768 CAN0_Tx_0x300_Sig_2_U6_UB 7; +BA_ "GenSigSendType" SG_ 768 CAN0_Tx_0x300_Sig_1_U4_UB 7; +BA_ "GenSigSendType" SG_ 769 CAN0_Tx_0x301_Sig_4_U32 1; +BA_ "GenSigSendType" SG_ 769 CAN0_Tx_0x301_Sig_3_U16 1; +BA_ "GenSigSendType" SG_ 769 CAN0_Tx_0x301_Sig_2_U8 1; +BA_ "GenSigSendType" SG_ 769 CAN0_Tx_0x301_Sig_1_U3 1; +BA_ "GenSigSendType" SG_ 770 CAN0_Tx_0x302_Sig_7_U2 2; +BA_ "GenSigSendType" SG_ 770 CAN0_Tx_0x302_Sig_6_U1 2; +BA_ "GenSigSendType" SG_ 770 CAN0_Tx_0x302_Sig_4_U8 2; +BA_ "GenSigSendType" SG_ 770 CAN0_Tx_0x302_Sig_3_U16 2; +BA_ "GenSigSendType" SG_ 770 CAN0_Tx_0x302_Sig_2_U8 2; +BA_ "GenSigSendType" SG_ 770 CAN0_Tx_0x302_Sig_1_U4 2; +BA_ "GenSigSendType" SG_ 770 CAN0_Tx_0x302_Sig_5_U1 2; +BA_ "GenSigValidAfterKL15" SG_ 1551 XCP_Slave 2; +BA_ "GenSigValidAfterKL15" SG_ 1537 XCP_Master 2; +BA_ "GenSigStartValue" SG_ 2015 Diag_Fun_Request 0; +BA_ "GenSigStartValue" SG_ 1800 Diag_Phy_Request 0; +VAL_ 513 CAN0_Rx_0x201_Sig_2_U8 255 "SNA" ; +VAL_ 1280 NM_Signal_Tester_Byte1 32 "ComMUser_PN29" ; +VAL_ 1280 NM_Signal_Tester_Byte0 2 "ComMUser_PN17" ; +VAL_ 1281 NM_Signal_ECU_Byte1 32 "ComMUser_PN29" ; +VAL_ 1281 NM_Signal_ECU_Byte0 2 "ComMUser_PN17" ; +SIG_GROUP_ 864 Tx_0x360_E2E_P01 1 : CAN0_Tx_0x360_Sig_8_U8 CAN0_Tx_0x360_Sig_7_U5; +SIG_GROUP_ 608 Rx_0x260_E2E_P01 1 : CAN0_Rx_0x260_Sig_8_U8 CAN0_Rx_0x260_Sig_7_U5 CAN0_Rx_0x260_Sig_6_U2 CAN0_Rx_0x260_Sig_5_U16 CAN0_Rx_0x260_Sig_4_U8 CAN0_Rx_0x260_Sig_3_U4 CAN0_Rx_0x260_Sig_2_U3 CAN0_Rx_0x260_Sig_1_U1 CAN0_Rx_0x260_Counter CAN0_Rx_0x260_CRC; + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/test1.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/test1.dbc new file mode 100644 index 0000000..fe8c8b0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/test1.dbc @@ -0,0 +1,46 @@ +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: Receiver ChassisBus VehicleBus PartyBus +VAL_TABLE_ New_Value_Table_931 2 "qqq" 1 "test" ; + + +BO_ 655 InternalReader1_Flt_D_Stat: 8 NFCR_INT_1 +SG_ INT1_VoltageFault : 5|2@0+ (1,0) [0|3] "" RFA_BUNSG +SG_ INT1_FaultStatus : 3|2@0+ (1,0) [0|3] "" RFA_BUN +SG_ INT1_AntennaFault : 7|2@0+ (1,0) [0|3] "" RFA_BUN + + + +BA_DEF_REL_ BU_SG_REL_ "GenSigTimeoutTime" INT 0 65535; +BA_DEF_DEF_ "ReleaseVersionNumber" "V0.30.0"; +BA_DEF_DEF_REL_ "AFloat2" 0; diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/testdbc.dbc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/testdbc.dbc new file mode 100644 index 0000000..e615f5b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dbc/testdbc.dbc @@ -0,0 +1,251 @@ +VERSION "EOPC" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: MCU eModule + + +BO_ 257 Debug: 8 Vector__XXX + SG_ Data4 : 55|16@0+ (1,-32767) [-32767|32768] "" Vector__XXX + SG_ Data3 : 39|16@0+ (1,-32767) [-32767|32768] "" Vector__XXX + SG_ Data2 : 23|16@0+ (1,-32767) [-32767|32768] "" Vector__XXX + SG_ Data1 : 7|16@0+ (1,-32767) [-32767|32768] "" Vector__XXX + +BO_ 2015 EOP_Func_Diag_Rx: 8 MCU + SG_ EOP_Func_Diag_Request : 7|64@0+ (1,0) [0|0] "" eModule + +BO_ 1932 EOP_Phys_Diag_Rx: 8 MCU + SG_ EOP_Phys_Diag_Request : 7|64@0+ (1,0) [0|0] "" eModule + +BO_ 1996 EOP_Diag_Tx: 8 eModule + SG_ EOP_Diag_Response : 7|64@0+ (1,0) [0|0] "" MCU + +BO_ 433 EOP_RSP02: 8 eModule + SG_ MotorPWMDuty : 33|7@0+ (1,0) [0|100] "%" MCU + SG_ SW_Version_Minor : 63|8@0+ (1,0) [0|255] "" MCU + SG_ SW_Version_Major : 55|8@0+ (1,0) [0|255] "" MCU + SG_ Motor_PhaseCurrent : 19|10@0+ (0.5,0) [0|200] "A" MCU + SG_ DC_Current : 13|10@0+ (0.1,0) [0|100] "A" MCU + SG_ PCB_temperature : 25|8@0+ (1,-50) [-50|205] "C" MCU + SG_ DC_Voltage : 7|10@0+ (0.1,0) [0|102.3] "V" MCU + +BO_ 432 EOP_RSP01: 8 eModule + SG_ VDDESupplyUnderError : 19|1@0+ (1,0) [0|1] "" MCU + SG_ VDDESupplyOverError : 18|1@0+ (1,0) [0|1] "" MCU + SG_ GDU_UnderVoltageIrrational : 29|1@0+ (1,0) [0|1] "" MCU + SG_ GDU_OverVoltageIrrational : 40|1@0+ (1,0) [0|1] "" MCU + SG_ EVDDOverCurrentError : 17|1@0+ (1,0) [0|1] "" MCU + SG_ ZeroPositionError : 31|1@0+ (1,0) [0|1] "" MCU + SG_ ResolverSigIrrational : 30|1@0+ (1,0) [0|1] "" MCU + SG_ UnderspeedError : 16|1@0+ (1,0) [0|1] "" MCU + SG_ OverCurrentError : 39|1@0+ (1,0) [0|1] "" MCU + SG_ SpeedIrrationalityError : 37|1@0+ (1,0) [0|1] "" MCU + SG_ CurrentOffsetError : 36|1@0+ (1,0) [0|1] "" MCU + SG_ Checksum_Error : 38|1@0+ (1,0) [0|1] "" MCU + SG_ WatchdogError : 48|1@0+ (1,0) [0|1] "" MCU + SG_ Error_Level : 23|3@0+ (1,0) [0|7] "" MCU + SG_ EOP_CheckSum : 63|8@0+ (1,0) [0|255] "" MCU + SG_ UnderVoltageDetn : 45|1@0+ (1,0) [0|1] "" MCU + SG_ TemperatureSensorUnderVDetn : 43|1@0+ (1,0) [0|1] "" MCU + SG_ TemperatureSensorOverVDetn : 44|1@0+ (1,0) [0|1] "" MCU + SG_ ROM_FailureDetn : 50|1@0+ (1,0) [0|1] "" MCU + SG_ ResolverSensorUnderVFaultDetn : 41|1@0+ (1,0) [0|1] "" MCU + SG_ ResolverSensorOverVDetn : 42|1@0+ (1,0) [0|1] "" MCU + SG_ RAM_FailureDetn : 51|1@0+ (1,0) [0|1] "" MCU + SG_ PowerStageFailureDetn : 55|1@0+ (1,0) [0|1] "" MCU + SG_ PCB_OverTemperatureDetn : 47|1@0+ (1,0) [0|1] "" MCU + SG_ OverVoltageDetn : 46|1@0+ (1,0) [0|1] "" MCU + SG_ E2PROM_FailureDetn : 49|1@0+ (1,0) [0|1] "" MCU + SG_ DryRunDetn : 53|1@0+ (1,0) [0|1] "" MCU + SG_ CommunicationFailureDetn : 52|1@0+ (1,0) [0|1] "" MCU + SG_ MotorBlockedPermanentDetn : 54|1@0+ (1,0) [0|1] "" MCU + SG_ De_ratingFlag : 28|1@0+ (1,0) [0|1] "" MCU + SG_ RollingCounter : 35|4@0+ (1,0) [0|15] "" MCU + SG_ MotorSpeed : 5|14@0+ (1,-8191) [-8191|8192] "rpm" MCU + SG_ eModuleOperationMode : 27|4@0+ (1,0) [0|15] "" MCU + +BO_ 415 EOP_CMD: 8 MCU + SG_ eModule_CheckSum_Cmd : 63|8@0+ (1,0) [0|255] "" eModule + SG_ eModule_SleepReq : 1|1@0+ (1,0) [0|1] "" eModule + SG_ eModule_OilTemperature : 31|8@0+ (1,-50) [-50|205] "" eModule + SG_ eModule_RollingCounter : 51|4@0+ (1,0) [0|15] "" eModule + SG_ eModule_MotorEnable : 0|1@0+ (1,0) [0|1] "" eModule + SG_ eModule_MotorSpeedReq : 13|14@0+ (1,-8191) [-8191|8192] "rpm" eModule + + + +CM_ SG_ 433 MotorPWMDuty "The duty cycle of the voltage PWM"; +CM_ SG_ 433 SW_Version_Minor "SW Version: Major Version,Minor Version; +eg. V1.2 : Major Version-1, Minor Version-2 ;"; +CM_ SG_ 433 SW_Version_Major "SW Version: Major Version,Minor Version; +eg. V1.2 : Major Version-1, Minor Version-2 ;"; +CM_ SG_ 433 Motor_PhaseCurrent "The motor phase current"; +CM_ SG_ 433 DC_Current "The value of DC current"; +CM_ SG_ 433 PCB_temperature "The detection PCB board temperature"; +CM_ SG_ 433 DC_Voltage "The detection voltage value of power supply"; +CM_ SG_ 432 VDDESupplyUnderError "The undervoltage error of VDDE voltage "; +CM_ SG_ 432 VDDESupplyOverError "The over voltage error of VDDE voltage "; +CM_ SG_ 432 GDU_UnderVoltageIrrational "GDU Low VLS voltage error"; +CM_ SG_ 432 GDU_OverVoltageIrrational "GDU High HD Supply Voltage error"; +CM_ SG_ 432 EVDDOverCurrentError "The overcurrent error of the EVDD supply"; +CM_ SG_ 432 ZeroPositionError "The error status of zero position data, report failure when any of the following malfunction detected +? Incorrect +? No zero position calibration"; +CM_ SG_ 432 ResolverSigIrrational "The error status of resolver signal rationality,report failure when the resolver signal is Irrational"; +CM_ SG_ 432 UnderspeedError "The underspeed failure of electronic oil pump"; +CM_ SG_ 432 OverCurrentError "The error status of over phase current malfunction, report failure when detect the shortcut of HW"; +CM_ SG_ 432 SpeedIrrationalityError "The error status of motor speed rationality, report failure when the motor speed is Irrational"; +CM_ SG_ 432 CurrentOffsetError "Pre-driver Circuit Failure Status"; +CM_ SG_ 432 Checksum_Error "Bus active state: Checksum error in command message data"; +CM_ SG_ 432 WatchdogError "The error status of watchdog, report failure when detecting the watchdog abnormal"; +CM_ SG_ 432 EOP_CheckSum "CRC8 Check_SAE_J1850_2001,the polynomial used X8+X4+X3+X2+1"; +CM_ SG_ 432 UnderVoltageDetn "The detection of under voltage error"; +CM_ SG_ 432 TemperatureSensorUnderVDetn "The detection of temperature sensor under voltage error"; +CM_ SG_ 432 TemperatureSensorOverVDetn "The detection of temperature sensor over voltage error"; +CM_ SG_ 432 ROM_FailureDetn "The detection of Rom failure error"; +CM_ SG_ 432 ResolverSensorUnderVFaultDetn "The detection of resolver sensor under voltage error"; +CM_ SG_ 432 ResolverSensorOverVDetn "The detection of resolver sensor over voltage error"; +CM_ SG_ 432 RAM_FailureDetn "The detection of RAM failure error"; +CM_ SG_ 432 PowerStageFailureDetn "The detection of power stage failure error(GDU Desaturation Error)"; +CM_ SG_ 432 PCB_OverTemperatureDetn "The detection of PCB over temperature error"; +CM_ SG_ 432 OverVoltageDetn "The detection of over voltage error"; +CM_ SG_ 432 E2PROM_FailureDetn "The detection of Zero position data OK or E2PROM error"; +CM_ SG_ 432 DryRunDetn "The detection of dry run error"; +CM_ SG_ 432 CommunicationFailureDetn "The detection of communication failure error"; +CM_ SG_ 432 MotorBlockedPermanentDetn "The detection of motor permanent blocked error"; +CM_ SG_ 432 De_ratingFlag "The e-Module works in the De-rating mode"; +CM_ SG_ 432 RollingCounter "Rolling counter"; +CM_ SG_ 432 MotorSpeed "The actual speed of motor"; +CM_ SG_ 432 eModuleOperationMode "The e-Module system status"; +CM_ SG_ 415 eModule_CheckSum_Cmd "CRC8 Check_SAE_J1850_2001,the polynomial used X8+X4+X3+X2+1"; +CM_ SG_ 415 eModule_SleepReq "The sleep request from the vehicle ECU +0 -Disable +1 -Enable +"; +CM_ SG_ 415 eModule_OilTemperature "The oil temperature from the vehicle ECU"; +CM_ SG_ 415 eModule_RollingCounter "Rolling counter"; +CM_ SG_ 415 eModule_MotorEnable "The Motor Control enable command from vehicle ECU +0 -Disable +1 -Enable +"; +CM_ SG_ 415 eModule_MotorSpeedReq "The reference speed from the vehicle ECU"; +BA_DEF_ "Baudrate" FLOAT 1000 1000000; +BA_DEF_ BO_ "GenMsgSendType" ENUM "cyclic","spontaneous","cyclicIfActive","spontaneousWithDelay","cyclicAndSpontaneous","cyclicAndSpontaneousWithDelay","IfActive","NoMsgSendType"; +BA_DEF_ BO_ "GenMsgCycleTime" FLOAT 0 300000; +BA_DEF_ BO_ "GenMsgStartDelayTime" FLOAT 0 300000; +BA_DEF_ BO_ "GenMsgDelayTime" FLOAT 0 300000; +BA_DEF_ SG_ "GenSigSendType" ENUM "Cyclic","OnWrite","OnWriteWithRepetition","OnChange","OnChangeWithRepetition","IfActive","IfActiveWithRepetition","NoSigSendType"; +BA_DEF_ SG_ "GenSigStartValue" FLOAT -1.79769313486232E+308 1.84467440737096E+019; +BA_DEF_ BU_ "NmAsrNodeIdentifier" INT 1 60; +BA_DEF_ BO_ "GenMsgNrOfRepetition" INT 0 100000; +BA_DEF_ BO_ "GenMsgCycleTimeFast" FLOAT 0 300000; +BA_DEF_ "DBName" STRING ; +BA_DEF_ "BusType" STRING ; +BA_DEF_ "ProtocolType" STRING ; +BA_DEF_DEF_ "Baudrate" 1000; +BA_DEF_DEF_ "GenMsgSendType" ""; +BA_DEF_DEF_ "GenMsgCycleTime" 0; +BA_DEF_DEF_ "GenMsgStartDelayTime" 0; +BA_DEF_DEF_ "GenMsgDelayTime" 0; +BA_DEF_DEF_ "GenSigSendType" "Cyclic"; +BA_DEF_DEF_ "GenSigStartValue" 0; +BA_DEF_DEF_ "NmAsrNodeIdentifier" 1; +BA_DEF_DEF_ "GenMsgNrOfRepetition" 0; +BA_DEF_DEF_ "GenMsgCycleTimeFast" 0; +BA_DEF_DEF_ "DBName" ""; +BA_DEF_DEF_ "BusType" ""; +BA_DEF_DEF_ "ProtocolType" ""; +BA_ "Baudrate" 500000; +BA_ "ProtocolType" "CAN"; +BA_ "BusType" "CAN"; +BA_ "DBName" "eCoolingPlatform"; +BA_ "GenMsgStartDelayTime" BO_ 2015 0; +BA_ "GenMsgStartDelayTime" BO_ 1932 0; +BA_ "GenMsgStartDelayTime" BO_ 1996 0; +BA_ "GenMsgCycleTime" BO_ 433 10; +BA_ "GenMsgSendType" BO_ 433 0; +BA_ "GenMsgStartDelayTime" BO_ 432 0; +BA_ "GenMsgCycleTime" BO_ 432 10; +BA_ "GenMsgSendType" BO_ 432 0; +BA_ "GenMsgStartDelayTime" BO_ 415 0; +BA_ "GenMsgCycleTime" BO_ 415 20; +BA_ "GenMsgSendType" BO_ 415 0; +BA_ "GenSigStartValue" SG_ 257 Data4 32767; +BA_ "GenSigStartValue" SG_ 257 Data3 32767; +BA_ "GenSigStartValue" SG_ 257 Data2 32767; +BA_ "GenSigStartValue" SG_ 257 Data1 32767; +BA_ "GenSigStartValue" SG_ 433 PCB_temperature 50; +BA_ "GenSigStartValue" SG_ 433 DC_Voltage 0; +BA_ "GenSigStartValue" SG_ 432 UnderVoltageDetn 0; +BA_ "GenSigStartValue" SG_ 432 TemperatureSensorUnderVDetn 0; +BA_ "GenSigStartValue" SG_ 432 TemperatureSensorOverVDetn 0; +BA_ "GenSigStartValue" SG_ 432 ROM_FailureDetn 0; +BA_ "GenSigStartValue" SG_ 432 ResolverSensorUnderVFaultDetn 0; +BA_ "GenSigStartValue" SG_ 432 ResolverSensorOverVDetn 0; +BA_ "GenSigStartValue" SG_ 432 RAM_FailureDetn 0; +BA_ "GenSigStartValue" SG_ 432 PowerStageFailureDetn 0; +BA_ "GenSigStartValue" SG_ 432 PCB_OverTemperatureDetn 0; +BA_ "GenSigStartValue" SG_ 432 OverVoltageDetn 0; +BA_ "GenSigStartValue" SG_ 432 E2PROM_FailureDetn 0; +BA_ "GenSigStartValue" SG_ 432 DryRunDetn 0; +BA_ "GenSigStartValue" SG_ 432 CommunicationFailureDetn 0; +BA_ "GenSigStartValue" SG_ 432 MotorBlockedPermanentDetn 0; +BA_ "GenSigStartValue" SG_ 432 De_ratingFlag 0; +BA_ "GenSigStartValue" SG_ 432 RollingCounter 0; +BA_ "GenSigStartValue" SG_ 432 MotorSpeed 8191; +BA_ "GenSigStartValue" SG_ 432 eModuleOperationMode 0; +BA_ "GenSigStartValue" SG_ 415 eModule_SleepReq 0; +BA_ "GenSigStartValue" SG_ 415 eModule_OilTemperature 50; +BA_ "GenSigStartValue" SG_ 415 eModule_RollingCounter 0; +BA_ "GenSigStartValue" SG_ 415 eModule_MotorEnable 0; +BA_ "GenSigStartValue" SG_ 415 eModule_MotorSpeedReq 8191; +VAL_ 432 Error_Level 4 "Long Time Stop" 3 "Short Time Stop " 2 "Derating Power Flag " 1 "Warning " 0 "Normal" ; +VAL_ 432 UnderVoltageDetn 1 "under voltage error" 0 "no error" ; +VAL_ 432 TemperatureSensorUnderVDetn 1 "temperature sensor underV error" 0 "no error" ; +VAL_ 432 TemperatureSensorOverVDetn 1 "Temperature sensor overV error" 0 "No error" ; +VAL_ 432 ROM_FailureDetn 1 "ROM Failure error" 0 "no error" ; +VAL_ 432 ResolverSensorUnderVFaultDetn 1 "reslover sensor underV error" 0 "No error" ; +VAL_ 432 ResolverSensorOverVDetn 1 "reslover sensor overV error" 0 "No error" ; +VAL_ 432 RAM_FailureDetn 1 "RAM Failure error" 0 "no error" ; +VAL_ 432 PowerStageFailureDetn 1 "power stage erroe" 0 "no error" ; +VAL_ 432 PCB_OverTemperatureDetn 1 "PCB over temperature error" 0 "No error" ; +VAL_ 432 OverVoltageDetn 1 "Over Voltage error" 0 "No error" ; +VAL_ 432 E2PROM_FailureDetn 1 "E2PROM Failure error" 0 "no error" ; +VAL_ 432 DryRunDetn 1 "dry run error" 0 "no error" ; +VAL_ 432 CommunicationFailureDetn 1 "Communication Failure error" 0 "no error" ; +VAL_ 432 MotorBlockedPermanentDetn 1 "motor permanent blocked error" 0 "No error" ; +VAL_ 432 De_ratingFlag 1 "De_rating Flag" 0 "No De_rating Flag" ; +VAL_ 432 eModuleOperationMode 3 "Failure" 2 "Failsafe Running" 1 "Speed Control Running" 0 "Idle" ; + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/candle.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/candle.test.ts new file mode 100644 index 0000000..4ea888d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/candle.test.ts @@ -0,0 +1,159 @@ +import { Candle_CAN } from '../../src/main/docan/candle' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { + addrToId, + CAN_ADDR_FORMAT, + CAN_ADDR_TYPE, + CAN_ERROR_ID, + CAN_ID_TYPE, + CanAddr, + getTsUs, + swapAddr +} from '../../src/main/share/can' +import { CanTp } from 'src/main/docan/cantp' + +test('Candle scan device', () => { + const devices = Candle_CAN.getValidDevices() + console.log(devices) +}) + +//fw info + +test('Candle fw info', () => { + const v = Candle_CAN.getLibVersion() + if (v) { + console.log(v) + } +}) +describe.skip('candel test', () => { + let client!: Candle_CAN + beforeAll(async () => { + client = new Candle_CAN({ + name: 'Candle Device 0', + id: 'Candle_0', + handle: 1, + vendor: 'candle', + canfd: true, + bitrate: { + sjw: 1, + timeSeg1: 13, + timeSeg2: 2, + preScaler: 10, + freq: 500000, + clock: '80' + }, + bitratefd: { + sjw: 1, + timeSeg1: 7, + timeSeg2: 2, + preScaler: 4, + freq: 2000000, + clock: '80' + }, + candleRes: true + }) + + ///print cap + console.log(client.target.bt_const.tseg1_min) + console.log(client.target.bt_const.tseg1_max) + console.log(client.target.bt_const.tseg2_min) + console.log(client.target.bt_const.tseg2_max) + console.log(client.target.bt_const.sjw_max) + console.log(client.target.bt_const.brp_min) + console.log(client.target.bt_const.brp_max) + console.log(client.target.bt_const.brp_inc) + console.log('xxxx') + console.log(client.target.data_bt_const.tseg1_min) + console.log(client.target.data_bt_const.tseg1_max) + console.log(client.target.data_bt_const.tseg2_min) + console.log(client.target.data_bt_const.tseg2_max) + console.log(client.target.data_bt_const.sjw_max) + console.log(client.target.data_bt_const.brp_min) + console.log(client.target.data_bt_const.brp_max) + console.log(client.target.data_bt_const.brp_inc) + }) + + test('write multi frame', async () => { + const list = [] + for (let i = 0; i < 2; i++) { + list.push( + client.writeBase( + i + 1, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, //false true + remote: false + }, + Buffer.alloc(8, 5 * i) + ) + ) + } + const r = await Promise.all(list) + + console.log(r) + }) + test.skip('write frame can-fd', async () => { + await client.writeBase( + 31, + { + idType: CAN_ID_TYPE.EXTENDED, + brs: true, + canfd: true, //false true + remote: false + }, + Buffer.alloc(11, 31) + ) + await client.writeBase( + 31, + { + idType: CAN_ID_TYPE.STANDARD, + brs: true, + canfd: true, //false true + remote: false + }, + Buffer.alloc(33, 31) + ) + }) + test.skip('read frame', async () => { + const r = await client.readBase( + 0xa2, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, //false true + remote: false + }, + 5000 * 1000 + ) + console.log(r) + const r1 = await client.readBase( + 0x1, + { + idType: CAN_ID_TYPE.EXTENDED, + brs: false, + canfd: true, //false true + remote: false + }, + 5000 * 1000 + ) + console.log(r1) + const r2 = await client.readBase( + 0x7e1, + { + idType: CAN_ID_TYPE.EXTENDED, + brs: false, + canfd: true, //false true + remote: false + }, + 5000 * 1000 + ) + console.log(r2) + }) + + afterAll(() => { + client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/cantp.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/cantp.test.ts new file mode 100644 index 0000000..5ebcf50 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/cantp.test.ts @@ -0,0 +1,512 @@ +import { PEAK_TP } from '../../src/main/docan/peak' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { + addrToId, + CAN_ADDR_FORMAT, + CAN_ADDR_TYPE, + CAN_ID_TYPE, + CanAddr, + swapAddr +} from '../../src/main/share/can' +import { CAN_TP, CAN_TP_SOCKET, CanTp } from 'src/main/docan/cantp' +import { ZLG_CAN } from 'src/main/docan/zlg' +import { KVASER_CAN } from 'src/main/docan/kvaser' +import { TOOMOSS_CAN } from 'src/main/docan/toomoss' + +const dllPath = path.join(__dirname, '../../resources/lib') +PEAK_TP.loadDllPath(dllPath) +ZLG_CAN.loadDllPath(dllPath) +KVASER_CAN.loadDllPath(dllPath) +TOOMOSS_CAN.loadDllPath(dllPath) +function createIncrementArray(length: number, start = 0) { + const array: number[] = [] + for (let i = 0; i < length; i++) { + array.push(start + i) + } + return array +} + +const normalAddr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + name: 'normalAddr', + canfd: false, + brs: false, + remote: false, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 16, + maxWTF: 0, + dlc: 8, + padding: false, + paddingValue: '' +} +const normalAddrExt: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'normalAddrExt', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 16, + maxWTF: 0, + dlc: 8, + padding: false, + paddingValue: '' +} +const fixedNormalAddr: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.FIXED_NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'fixedNormalAddr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 16, + maxWTF: 0, + dlc: 8, + padding: false, + paddingValue: '' +} +const extendAddr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.EXTENDED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'extendAddr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 0, + maxWTF: 0, + dlc: 8, + padding: false, + paddingValue: '' +} +const extendAddrExt: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.EXTENDED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'extendAddrExt', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 16, + maxWTF: 0, + dlc: 8, + padding: false, + paddingValue: '' +} +const mixedAddr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.MIXED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'mixedAddr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 16, + maxWTF: 0, + dlc: 8, + padding: false, + paddingValue: '' +} +const mixedAddrExt: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.MIXED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'mixedAddrExt', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 16, + maxWTF: 0, + dlc: 8, + padding: false, + paddingValue: '' +} +const addrList = [ + normalAddr + // normalAddrExt, + // fixedNormalAddr, + // extendAddr, + // extendAddrExt, + // mixedAddr, + // mixedAddrExt +] +const dataList = [ + // Buffer.from([1]), + // Buffer.from(createIncrementArray(5)), + // Buffer.from(createIncrementArray(6)), + // Buffer.from(createIncrementArray(7)), + // Buffer.from(createIncrementArray(8)), + Buffer.from(createIncrementArray(64)), + Buffer.from(createIncrementArray(61)), + Buffer.from(createIncrementArray(62)), + Buffer.from(createIncrementArray(63)), + Buffer.from(createIncrementArray(2048)) +] + +describe('peak cantp', () => { + let client!: CanTp + let server!: CanTp + beforeAll(() => { + server = new CAN_TP( + new PEAK_TP({ + handle: 81, + name: 'test', + + vendor: 'peak', + canfd: false, + bitrate: { + preScaler: 80, + timeSeg1: 2, + timeSeg2: 1, + sjw: 1, + freq: 250000, + clock: '80' + }, + bitratefd: { + preScaler: 8, + timeSeg1: 3, + timeSeg2: 1, + sjw: 1, + freq: 2000000 + }, + id: 'peak0' + }) + ) + client = new CAN_TP( + new PEAK_TP({ + handle: 82, + name: 'test', + id: 'peak1', + vendor: 'peak', + canfd: false, + bitrate: { + preScaler: 80, + timeSeg1: 2, + timeSeg2: 1, + sjw: 1, + freq: 250000, + clock: '80' + }, + bitratefd: { + preScaler: 8, + timeSeg1: 3, + timeSeg2: 1, + sjw: 1, + freq: 2000000 + } + }) + ) + }) + dataList.forEach((data) => { + addrList.forEach((addr) => { + it(`write ${data.length} bytes data to ${addr.name}`, async () => { + const clientSocket = new CAN_TP_SOCKET(client, addr) + const serverSocket = new CAN_TP_SOCKET(server, swapAddr(addr)) + await clientSocket.write(data) + const result = await serverSocket.read(1000) + deepEqual(result.data, data) + clientSocket.close() + serverSocket.close() + }) + }) + }) + afterAll(() => { + client.close() + server.close() + }) +}) + +describe('zlg cantp', () => { + let client!: CanTp + let server!: CanTp + beforeAll(() => { + server = new CAN_TP( + new ZLG_CAN({ + handle: '41_0_0', + name: 'test', + vendor: 'zlg', + canfd: false, + bitrate: { + freq: 500000, + preScaler: 1, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11 + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + id: 'zlg0' + }) + ) + client = new CAN_TP( + new ZLG_CAN({ + handle: '41_0_1', + name: 'test', + vendor: 'zlg', + canfd: false, + bitrate: { + freq: 500000, + preScaler: 1, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11 + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + id: 'zlg1' + }) + ) + }) + dataList.forEach((data) => { + addrList.forEach((addr) => { + it(`write ${data.length} bytes data to ${addr.name}`, async () => { + const clientSocket = new CAN_TP_SOCKET(client, addr) + const serverSocket = new CAN_TP_SOCKET(server, swapAddr(addr)) + await clientSocket.write(data) + const result = await serverSocket.read(1000) + deepEqual(result.data, data) + clientSocket.close() + serverSocket.close() + }) + }) + }) + afterAll(() => { + // client.close() + // server.close() + }) +}) + +describe('kvaser cantp', () => { + let client!: CanTp + let server!: CanTp + beforeAll(() => { + server = new CAN_TP( + new KVASER_CAN({ + handle: 0, + name: 'test', + + vendor: 'kvaser', + canfd: false, + bitrate: { + freq: 500000, + preScaler: 1, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11 + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + id: 'kvaser0' + }) + ) + client = new CAN_TP( + new KVASER_CAN({ + handle: 1, + name: 'test', + + vendor: 'kvaser', + canfd: false, + bitrate: { + freq: 500000, + preScaler: 1, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11 + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + id: 'kvaser1' + }) + ) + }) + + dataList.forEach((data) => { + addrList.forEach((addr) => { + it(`write ${data.length} bytes data to ${addr.name}`, async () => { + const clientSocket = new CAN_TP_SOCKET(client, addr) + const serverSocket = new CAN_TP_SOCKET(server, swapAddr(addr)) + await clientSocket.write(data) + const result = await serverSocket.read(1000) + deepEqual(result.data, data) + clientSocket.close() + serverSocket.close() + }) + }) + }) + afterAll(() => { + // client.close() + // server.close() + }) +}) + +describe('toomoss cantp', () => { + let client!: CanTp + let server!: CanTp + beforeAll(() => { + server = new CAN_TP( + new TOOMOSS_CAN({ + handle: '1417675180:0', + name: 'server', + vendor: 'toomoss', + canfd: true, + + bitrate: { + freq: 500000, + preScaler: 1, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11 + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + id: 'toomoss0', + toomossRes: true + }) + ) + + client = new CAN_TP( + new TOOMOSS_CAN({ + handle: '1417675180:1', + name: 'client', + vendor: 'toomoss', + canfd: true, + + bitrate: { + freq: 500000, + preScaler: 1, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11 + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + id: 'toomoss1', + toomossRes: true + }) + ) + }) + + dataList.forEach((data) => { + addrList.forEach((addr) => { + it(`write ${data.length} bytes data to ${addr.name}`, async () => { + const clientSocket = new CAN_TP_SOCKET(client, addr) + const serverSocket = new CAN_TP_SOCKET(server, swapAddr(addr)) + await clientSocket.write(data) + const result = await serverSocket.read(1000) + console.log('result', result) + deepEqual(result.data, data) + clientSocket.close() + serverSocket.close() + }) + }) + }) + afterAll(() => { + client.close() + server.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/kvaser.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/kvaser.test.ts new file mode 100644 index 0000000..e086779 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/kvaser.test.ts @@ -0,0 +1,87 @@ +import { KVASER_CAN } from '../../src/main/docan/kvaser' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { + addrToId, + CAN_ADDR_FORMAT, + CAN_ADDR_TYPE, + CAN_ID_TYPE, + CanAddr, + swapAddr +} from '../../src/main/share/can' +import { CanTp } from 'src/main/docan/cantp' + +const dllPath = path.join(__dirname, '../../resources/lib') +KVASER_CAN.loadDllPath(dllPath) + +describe('kvaser test', () => { + let client!: KVASER_CAN + beforeAll(() => { + client = new KVASER_CAN({ + handle: 0, + name: 'test', + id: 'kvaser', + vendor: 'kvaser', + canfd: false, + bitrate: { + freq: 250000, + preScaler: 2, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11 + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + } + }) + }) + test('write multi frame', async () => { + const list = [] + for (let i = 0; i < 10; i++) { + list.push( + client.writeBase( + 3, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, + remote: false + }, + Buffer.alloc(8, i) + ) + ) + } + const r = await Promise.all(list) + console.log(r) + }) + test('period send', async () => { + const taskId = client.startPeriodSend( + { + id: 0x100, + msgType: { idType: CAN_ID_TYPE.STANDARD, brs: false, canfd: false, remote: false }, + data: Buffer.alloc(8, 0), + dir: 'OUT' + }, + 100 + ) + const delay = (ms: number) => + new Promise((resolve) => { + setTimeout(() => { + resolve(true) + }, ms) + }) + await delay(1000) + client.changePeriodData(taskId, Buffer.from([1, 2, 3, 4, 5, 6, 7, 8])) + await delay(1000) + + client.stopPeriodSend(taskId) + }) + afterAll(() => { + client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/peak.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/peak.test.ts new file mode 100644 index 0000000..9dc5461 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/peak.test.ts @@ -0,0 +1,66 @@ +import { PEAK_TP } from '../../src/main/docan/peak' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { + addrToId, + CAN_ADDR_FORMAT, + CAN_ADDR_TYPE, + CAN_ID_TYPE, + CanAddr, + swapAddr +} from '../../src/main/share/can' +import { CanTp } from 'src/main/docan/cantp' + +const dllPath = path.join(__dirname, '../../resources/lib') +PEAK_TP.loadDllPath(dllPath) + +describe('peak test', () => { + let client!: PEAK_TP + beforeAll(() => { + client = new PEAK_TP({ + handle: 81, + name: 'test', + id: 'peak', + vendor: 'peak', + canfd: false, + bitrate: { + preScaler: 80, + timeSeg1: 2, + timeSeg2: 1, + sjw: 1, + freq: 250000, + clock: '80' + }, + bitratefd: { + preScaler: 8, + timeSeg1: 3, + timeSeg2: 1, + sjw: 1, + freq: 2000000 + } + }) + }) + test('write multi frame', async () => { + const list = [] + for (let i = 0; i < 400; i++) { + list.push( + client.writeBase( + 3, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, + remote: false + }, + Buffer.alloc(8, i) + ) + ) + } + const r = await Promise.all(list) + console.log(r) + }) + afterAll(() => { + client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/peakHelpers.spec.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/peakHelpers.spec.ts new file mode 100644 index 0000000..3bf06d2 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/peakHelpers.spec.ts @@ -0,0 +1,93 @@ +import { describe, expect, it } from 'vitest' +import { + isPeakLoopback, + isPeakReadEmpty, + isTransientPeakWriteStatus, + mapPeakNetStatusToTpError, + shouldEmitTpRead, + shouldResolveTpWriteOnLoopback, + writePeakMessageWithRetry +} from '../../src/main/docan/peak/helpers' + +const peakStatus = { + PCANTP_STATUS_QUEUE_TX_FULL: 0x20, + PCANTP_STATUS_LOCK_TIMEOUT: 0x21, + PCANTP_STATUS_NO_MESSAGE: 0x08 +} + +const peakFlags = { + PCANTP_MSGFLAG_LOOPBACK: 1 +} + +const peakNet = { + PCANTP_NETSTATUS_OK: 0x00, + PCANTP_NETSTATUS_TIMEOUT_A: 0x01, + PCANTP_NETSTATUS_TIMEOUT_Bs: 0x02, + PCANTP_NETSTATUS_TIMEOUT_Cr: 0x03, + PCANTP_NETSTATUS_WRONG_SN: 0x04, + PCANTP_NETSTATUS_INVALID_FS: 0x05, + PCANTP_NETSTATUS_BUFFER_OVFLW: 0x08 +} + +describe('peak helpers', () => { + it('detects transient write statuses', () => { + expect(isTransientPeakWriteStatus(peakStatus.PCANTP_STATUS_QUEUE_TX_FULL, peakStatus)).toBe( + true + ) + expect(isTransientPeakWriteStatus(peakStatus.PCANTP_STATUS_LOCK_TIMEOUT, peakStatus)).toBe(true) + expect(isTransientPeakWriteStatus(0, peakStatus)).toBe(false) + }) + + it('detects empty read queue', () => { + expect(isPeakReadEmpty(peakStatus.PCANTP_STATUS_NO_MESSAGE, peakStatus)).toBe(true) + expect(isPeakReadEmpty(0, peakStatus)).toBe(false) + }) + + it('detects loopback when OR-ed with other msg flags', () => { + expect(isPeakLoopback(peakFlags.PCANTP_MSGFLAG_LOOPBACK, peakFlags)).toBe(true) + // LOOPBACK | ISOTP_FRAME + expect(isPeakLoopback(peakFlags.PCANTP_MSGFLAG_LOOPBACK | 2, peakFlags)).toBe(true) + expect(isPeakLoopback(0, peakFlags)).toBe(false) + expect(isPeakLoopback(2, peakFlags)).toBe(false) + }) + + it('resolves tp writes only after multi-frame completion', () => { + expect(shouldResolveTpWriteOnLoopback(true, false)).toBe(false) + expect(shouldResolveTpWriteOnLoopback(true, true)).toBe(true) + expect(shouldResolveTpWriteOnLoopback(false, false)).toBe(true) + }) + + it('emits tp reads only for non-indication (complete) messages', () => { + expect(shouldEmitTpRead(true)).toBe(false) + expect(shouldEmitTpRead(false)).toBe(true) + }) + + it('maps Peak network status to TP errors', () => { + expect(mapPeakNetStatusToTpError(peakNet.PCANTP_NETSTATUS_OK, peakNet)).toBeNull() + expect(mapPeakNetStatusToTpError(peakNet.PCANTP_NETSTATUS_TIMEOUT_Bs, peakNet)).toBe( + 'TP_TIMEOUT_BS' + ) + expect(mapPeakNetStatusToTpError(peakNet.PCANTP_NETSTATUS_TIMEOUT_Cr, peakNet)).toBe( + 'TP_TIMEOUT_CR' + ) + expect(mapPeakNetStatusToTpError(peakNet.PCANTP_NETSTATUS_WRONG_SN, peakNet)).toBe( + 'TP_WRONG_SN' + ) + }) + + it('retries transient write failures before returning', () => { + let attempts = 0 + const res = writePeakMessageWithRetry( + () => { + attempts++ + return attempts < 3 ? peakStatus.PCANTP_STATUS_QUEUE_TX_FULL : 0 + }, + peakStatus, + 10, + 0 + ) + + expect(res).toBe(0) + expect(attempts).toBe(3) + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/simulate.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/simulate.test.ts new file mode 100644 index 0000000..cf64981 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/simulate.test.ts @@ -0,0 +1,1154 @@ +import { SIMULATE_CAN } from '../../src/main/docan/simulate' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll } from 'vitest' +import * as path from 'path' +import { + addrToId, + CAN_ADDR_FORMAT, + CAN_ADDR_TYPE, + CAN_ID_TYPE, + CanAddr, + swapAddr +} from '../../src/main/share/can' +import { CAN_TP, CAN_TP_SOCKET, CanTp, TP_ERROR_ID, TpError } from '../../src/main/docan/cantp' +import { CAN_SOCKET } from 'src/main/docan/base' + +function createIncrementArray(length: number, start = 0) { + const array: number[] = [] + for (let i = 0; i < length; i++) { + array.push(start + i) + } + return array +} +describe('simulate can-tp test', () => { + const normalAddr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + name: 'normalAddr', + canfd: false, + brs: false, + remote: false, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + dlc: 0, + paddingValue: '' + } + const normalAddrExt: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'normalAddrExt', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const fixedNormalAddr: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.FIXED_NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'fixedNormalAddr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const extendAddr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.EXTENDED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'extendAddr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const extendAddrExt: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.EXTENDED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'extendAddrExt', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const mixedAddr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.MIXED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'mixedAddr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const mixedAddrExt: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.MIXED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'mixedAddrExt', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const addrList = [ + normalAddr, + normalAddrExt, + fixedNormalAddr, + extendAddr, + extendAddrExt, + mixedAddr, + mixedAddrExt + ] + const dataList = [ + Buffer.from([1]), + Buffer.from(createIncrementArray(5)), + Buffer.from(createIncrementArray(6)), + Buffer.from(createIncrementArray(7)), + Buffer.from(createIncrementArray(8)), + Buffer.from(createIncrementArray(60)), + Buffer.from(createIncrementArray(61)), + // Buffer.from(createIncrementArray(62)), + // Buffer.from(createIncrementArray(63)), + // Buffer.from(createIncrementArray(64)), + Buffer.from(createIncrementArray(220)) + ] + let client!: CanTp + let server!: CanTp + describe('dual self tp', () => { + beforeAll(() => { + server = new CAN_TP( + new SIMULATE_CAN({ + handle: 0, + name: 'test', + + vendor: 'simulate', + canfd: false, + bitrate: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + bitratefd: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + id: '1' + }) + ) + client = new CAN_TP( + new SIMULATE_CAN({ + handle: 1, + name: 'test', + + vendor: 'simulate', + canfd: false, + bitrate: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + bitratefd: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + id: '1' + }) + ) + }) + dataList.forEach((data) => { + addrList.forEach((addr) => { + it(`write ${data.length} bytes data to ${addr.name}`, async () => { + const clientSocket = new CAN_TP_SOCKET(client, addr) + const serverSocket = new CAN_TP_SOCKET(server, swapAddr(addr)) + await clientSocket.write(data) + const result = await serverSocket.read(1000) + deepEqual(result.data, data) + clientSocket.close() + serverSocket.close() + }) + }) + }) + afterAll(() => { + client.close() + server.close() + equal(client.event.eventNames().length, 0) + equal(server.event.eventNames().length, 0) + }) + }) + describe('dual self tp error check client', () => { + beforeAll(() => { + server = new CAN_TP( + new SIMULATE_CAN({ + handle: 0, + name: 'test', + + vendor: 'simulate', + canfd: false, + bitrate: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + bitratefd: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + id: '1' + }) + ) + client = new CAN_TP( + new SIMULATE_CAN({ + handle: 1, + name: 'test', + + vendor: 'simulate', + canfd: false, + bitrate: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + bitratefd: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + id: '1' + }) + ) + }) + it('write without fc', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const clientSocket = new CAN_TP_SOCKET(client, addr) + try { + await clientSocket.write( + Buffer.from([ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10 + ]) + ) + equal(true, false) + } catch (e: any) { + equal(e.errorId, TP_ERROR_ID.TP_TIMEOUT_BS) + } + clientSocket.close() + }) + it('read and close', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + // server.addMapping(addr) + const clientSocket = new CAN_TP_SOCKET(client, addr) + try { + setTimeout(() => { + clientSocket.close() + }, 100) + await clientSocket.read(2000) + equal(true, false) + } catch (e: any) { + equal(e.errorId, TP_ERROR_ID.TP_BUS_CLOSED) + } + clientSocket.close() + }) + it('read and N_CR timeout', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + // server.addMapping(addr) + const clientSocket = new CAN_TP_SOCKET(client, addr) + try { + setTimeout(() => { + const servers = server as CAN_TP + const recvId = addrToId(swapAddr(addr)) + const canSocket = new CAN_SOCKET(servers.base, recvId, addr) + canSocket.write(Buffer.from([0x12, 0x58, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05])) + setTimeout(() => { + canSocket.write(Buffer.from([0x21, 0x58, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05])) + }, 100) + }, 100) + const d = await clientSocket.read(2000) + equal(true, false) + } catch (e: any) { + equal(e.errorId, TP_ERROR_ID.TP_TIMEOUT_CR) + } + clientSocket.close() + }) + it('write has first fc without next fc', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const data = Buffer.from(createIncrementArray(600)) + // server.addMapping(addr) + try { + const servers = server as CAN_TP + setTimeout(() => { + if (addr.bs > 0) { + servers.sendFC(swapAddr(addr), 0, false) + } + }, 100) + + await client.writeTp(addr, data) + + equal(true, false) + } catch (e: any) { + // console.log(e) + equal(e.errorId, TP_ERROR_ID.TP_TIMEOUT_BS) + // client.close() + } + }) + it('write and close', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: false, + brs: false, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const data = Buffer.from([ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10 + ]) + // server.addMapping(addr) + try { + setTimeout(() => { + client.close() + }, 10) + await client.writeTp(addr, data) + equal(true, false) + } catch (e: any) { + // console.log(e) + equal(e.errorId, TP_ERROR_ID.TP_BUS_CLOSED) + client.close() + } + }) + + afterAll(() => { + client.close() + server.close() + equal(client.event.eventNames().length, 0) + equal(server.event.eventNames().length, 0) + }) + }) +}) + +describe('simulate canfd can-tp test', () => { + const normalAddr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + name: 'normalAddr', + canfd: true, + brs: true, + remote: false, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: true, + paddingValue: '', + dlc: 10 + } + const normalAddrExt: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'normalAddrExt', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 10 + } + const fixedNormalAddr: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.FIXED_NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'fixedNormalAddr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const extendAddr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.EXTENDED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'extendAddr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const extendAddrExt: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.EXTENDED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'extendAddrExt', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const mixedAddr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.MIXED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'mixedAddr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 15 + } + const mixedAddrExt: CanAddr = { + idType: CAN_ID_TYPE.EXTENDED, + addrFormat: CAN_ADDR_FORMAT.MIXED, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7e8', + canIdRx: '0x7df', + name: 'mixedAddrExt', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const addrList = [ + normalAddr, + normalAddrExt, + fixedNormalAddr, + extendAddr, + extendAddrExt, + mixedAddr, + mixedAddrExt + ] + const dataList = [ + // Buffer.from(createIncrementArray(13)), + Buffer.from(createIncrementArray(17)), + Buffer.from(createIncrementArray(18)), + Buffer.from(createIncrementArray(19)), + // Buffer.from(createIncrementArray(20)), + // Buffer.from(createIncrementArray(21)), + // Buffer.from(createIncrementArray(63)), + // Buffer.from(createIncrementArray(64)), + Buffer.from(createIncrementArray(220)) + ] + let client!: CanTp + let server!: CanTp + describe('dual self tp', () => { + beforeAll(() => { + server = new CAN_TP( + new SIMULATE_CAN({ + handle: 0, + name: 'test', + + vendor: 'simulate', + canfd: true, + bitrate: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + bitratefd: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + id: '1' + }) + ) + client = new CAN_TP( + new SIMULATE_CAN({ + handle: 1, + name: 'test', + + vendor: 'simulate', + canfd: true, + bitrate: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + bitratefd: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + id: '2' + }) + ) + }) + dataList.forEach((data) => { + addrList.forEach((addr) => { + it(`write ${data.length} bytes data to ${addr.name}`, async () => { + const clientSocket = new CAN_TP_SOCKET(client, addr) + const serverSocket = new CAN_TP_SOCKET(server, swapAddr(addr)) + await clientSocket.write(data) + const result = await serverSocket.read(1000) + deepEqual(result.data, data) + clientSocket.close() + serverSocket.close() + }) + }) + }) + afterAll(() => { + client.close() + server.close() + equal(client.event.eventNames().length, 0) + equal(server.event.eventNames().length, 0) + }) + }) + describe('dual self tp error check client', () => { + beforeAll(() => { + server = new CAN_TP( + new SIMULATE_CAN({ + handle: 0, + name: 'test', + + vendor: 'simulate', + canfd: true, + bitrate: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + bitratefd: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + id: '1' + }) + ) + client = new CAN_TP( + new SIMULATE_CAN({ + handle: 1, + name: 'test', + id: '1', + vendor: 'simulate', + canfd: true, + bitrate: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + }, + bitratefd: { + freq: 500000, + timeSeg1: 0x0f, + timeSeg2: 0x04, + sjw: 0x01, + preScaler: 0x01 + } + }) + ) + }) + + it('write without fc', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const clientSocket = new CAN_TP_SOCKET(client, addr) + try { + await clientSocket.write(Buffer.from(createIncrementArray(600))) + equal(true, false) + } catch (e: any) { + equal(e.errorId, TP_ERROR_ID.TP_TIMEOUT_BS) + } + clientSocket.close() + }) + it('error sf', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const clientSocket = new CAN_TP_SOCKET(client, addr) + const servers = server as CAN_TP + const recvId = addrToId(swapAddr(addr)) + const canSocket = new CAN_SOCKET(servers.base, recvId, addr) + canSocket.write(Buffer.from('0013000102030405060708090a0b0c0d0e0f1011', 'hex')) + + try { + await clientSocket.read(1000) + equal(true, false) + } catch (e: any) { + equal(e.errorId, TP_ERROR_ID.TP_TIMEOUT_UPPER_READ) + } + clientSocket.close() + }) + it('error ff', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const clientSocket = new CAN_TP_SOCKET(client, addr) + const servers = server as CAN_TP + const recvId = addrToId(swapAddr(addr)) + const canSocket = new CAN_SOCKET(servers.base, recvId, addr) + canSocket.write(Buffer.from('1003000102030405060708090A0B0C0D0E0F', 'hex')) + + try { + await clientSocket.read(1000) + equal(true, false) + } catch (e: any) { + equal(e.errorId, TP_ERROR_ID.TP_TIMEOUT_UPPER_READ) + } + clientSocket.close() + }) + it('read and close', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + + // server.addMapping(addr) + const clientSocket = new CAN_TP_SOCKET(client, addr) + try { + setTimeout(() => { + clientSocket.close() + }, 100) + await clientSocket.read(2000) + equal(true, false) + } catch (e: any) { + equal(e.errorId, TP_ERROR_ID.TP_BUS_CLOSED) + } + clientSocket.close() + }) + it('read and N_CR timeout', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + // server.addMapping(addr) + const clientSocket = new CAN_TP_SOCKET(client, addr) + try { + setTimeout(() => { + const servers = server as CAN_TP + const recvId = addrToId(swapAddr(addr)) + const canSocket = new CAN_SOCKET(servers.base, recvId, addr) + canSocket.write(Buffer.from('10DC000102030405060708090A0B0C0D0E0F1011', 'hex')) + setTimeout(() => { + canSocket.write(Buffer.from('211213141516171091A1B1C1D1E1F2021222324', 'hex')) + }, 100) + }, 100) + await clientSocket.read(2000) + equal(true, false) + } catch (e: any) { + equal(e.errorId, TP_ERROR_ID.TP_TIMEOUT_CR) + } + clientSocket.close() + }) + it('write has first fc without next fc', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const data = Buffer.from(createIncrementArray(600)) + // server.addMapping(addr) + try { + const servers = server as CAN_TP + setTimeout(() => { + servers.sendFC(swapAddr(addr), 0, false) + }, 100) + + await client.writeTp(addr, data) + + equal(true, false) + } catch (e: any) { + equal(e.errorId, TP_ERROR_ID.TP_TIMEOUT_BS) + // client.close() + } + }) + it('write and close', async () => { + const addr: CanAddr = { + idType: CAN_ID_TYPE.STANDARD, + addrFormat: CAN_ADDR_FORMAT.NORMAL, + addrType: CAN_ADDR_TYPE.PHYSICAL, + SA: '01', + TA: '02', + AE: '03', + canIdTx: '0x7df', + canIdRx: '0x7e8', + name: 'addr', + canfd: true, + brs: true, + remote: false, + nAs: 1000, + nAr: 1000, + nBs: 1000, + nCr: 1000, + stMin: 0, + bs: 1, + maxWTF: 0, + padding: false, + paddingValue: '', + dlc: 8 + } + const data = Buffer.from(createIncrementArray(600)) + // server.addMapping(addr) + try { + setTimeout(() => { + client.close() + }, 10) + await client.writeTp(addr, data) + equal(true, false) + } catch (e: any) { + // console.log(e) + equal(e.errorId, TP_ERROR_ID.TP_BUS_CLOSED) + client.close() + } + }) + + afterAll(() => { + client.close() + server.close() + equal(client.event.eventNames().length, 0) + equal(server.event.eventNames().length, 0) + }) + }) +}) + +//error SF: 0013000102030405060708090a0b0c0d0e0f1011 +//error FF: 1011000102030405060708090A0B0C0D0E0F10 diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/slcan.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/slcan.test.ts new file mode 100644 index 0000000..9a76970 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/slcan.test.ts @@ -0,0 +1,179 @@ +import { SLCAN_CAN } from '../../src/main/docan/slcan' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { + addrToId, + CAN_ADDR_FORMAT, + CAN_ADDR_TYPE, + CAN_ERROR_ID, + CAN_ID_TYPE, + CanAddr, + getTsUs, + swapAddr +} from '../../src/main/share/can' +import { CanTp } from 'src/main/docan/cantp' + +test('SLCAN scan device', async () => { + const devices = await SLCAN_CAN.getValidDevices() + console.log(devices) +}) + +function delay(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)) +} + +describe('slcan test', () => { + let client!: SLCAN_CAN + beforeAll(async () => { + client = new SLCAN_CAN({ + handle: 'COM4', + name: 'test', + id: 'COM4', + vendor: 'slcan', + canfd: true, + bitrate: { + sjw: 1, + timeSeg1: 13, + timeSeg2: 2, + preScaler: 10, + freq: 500000, + clock: '80' + }, + bitratefd: { + sjw: 1, + timeSeg1: 7, + timeSeg2: 2, + preScaler: 4, + freq: 2000000, + clock: '80' + } + }) + //delay + await delay(1000) + }) + + test('write multi frame', async () => { + const list = [] + for (let i = 0; i < 10; i++) { + list.push( + client.writeBase( + i + 1, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, //false true + remote: false + }, + Buffer.alloc(8, i) + ) + ) + } + const r = await Promise.all(list) + + console.log(r) + }) + test.skip('read frame', async () => { + const r = await client.readBase( + 0xa2, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, //false true + remote: false + }, + 5000 * 1000 + ) + console.log(r) + const r1 = await client.readBase( + 0x1, + { + idType: CAN_ID_TYPE.EXTENDED, + brs: true, + canfd: true, //false true + remote: false + }, + 5000 * 1000 + ) + console.log(r1) + const r2 = await client.readBase( + 0x7e1, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, //false true + remote: false + }, + 5000 * 1000 + ) + console.log(r2) + }) + test('write frame can-fd', async () => { + await client.writeBase( + 31, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, //false true + remote: false + }, + Buffer.alloc(8, 31) + ) + + await client.writeBase( + 32, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, //false true + remote: false + }, + Buffer.alloc(8, 32) + ) + await client.writeBase( + 33, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, //false true + remote: false + }, + Buffer.alloc(63, 1) + ) + await client.writeBase( + 34, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, //false true + remote: false + }, + Buffer.alloc(63, 1) + ) + await client.writeBase( + 35, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, //false true + remote: false + }, + Buffer.alloc(63, 1) + ) + + await client.writeBase( + 32, + { + idType: CAN_ID_TYPE.EXTENDED, + brs: true, + canfd: true, //false true + remote: false + }, + Buffer.alloc(33, 1) + ) + }) + + afterAll(() => { + client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/toomoss.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/toomoss.test.ts new file mode 100644 index 0000000..1b79402 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/toomoss.test.ts @@ -0,0 +1,372 @@ +import { TOOMOSS_CAN } from '../../src/main/docan/toomoss' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { + addrToId, + CAN_ADDR_FORMAT, + CAN_ADDR_TYPE, + CAN_ERROR_ID, + CAN_ID_TYPE, + CanAddr, + getTsUs, + swapAddr +} from '../../src/main/share/can' +import { CanTp } from 'src/main/docan/cantp' + +const dllPath = path.join(__dirname, '../../resources/lib') +TOOMOSS_CAN.loadDllPath(dllPath) + +test('toomoss scan device', () => { + const devices = TOOMOSS_CAN.getValidDevices() + console.log(devices) +}) + +const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) +describe.skip('toomoss test bus error can', () => { + let client!: TOOMOSS_CAN + let client2!: TOOMOSS_CAN + beforeAll(() => { + client = new TOOMOSS_CAN({ + handle: '1417675180:0', + name: 'test', + id: 'toomoss', + vendor: 'toomoss', + canfd: false, + bitrate: { + freq: 250000, + preScaler: 2, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11, + clock: '40M' + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + database: '' + }) + client2 = new TOOMOSS_CAN({ + handle: '1417675180:1', + name: 'test2', + id: 'toomoss', + vendor: 'toomoss', + canfd: false, + bitrate: { + freq: 500000, + preScaler: 1, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11, + clock: '40M' + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + database: '' + }) + }) + test('write frame', async () => { + const list = [] + for (let i = 0; i < 1; i++) { + list.push( + client.writeBase( + 3 + i, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, + remote: false + }, + Buffer.alloc(8, 0x33) + ) + ) + } + try { + await Promise.all(list) + equal(true, false) + } catch (err: any) { + console.log(err) + equal(err.errorId, CAN_ERROR_ID.CAN_INTERNAL_ERROR) + } + //reopen client2 with correct bitrate + client2.close() + client2 = new TOOMOSS_CAN({ + handle: '1417675180:1', + name: 'test2', + id: 'toomoss', + vendor: 'toomoss', + canfd: false, + bitrate: { + freq: 250000, + preScaler: 2, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11, + clock: '40M' + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + database: '' + }) + //write frame again + await client.writeBase( + 4, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, + remote: false + }, + Buffer.alloc(8, 0x33) + ) + }) + + afterAll(async () => { + client.close() + client2.close() + }) +}) + +describe('toomoss test bus error canfd', () => { + let client!: TOOMOSS_CAN + let client2!: TOOMOSS_CAN + beforeAll(() => { + client = new TOOMOSS_CAN({ + handle: '1417675180:0', + name: 'test', + id: 'toomoss', + vendor: 'toomoss', + canfd: true, + bitrate: { + freq: 250000, + preScaler: 2, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11, + clock: '40M' + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + database: '' + }) + client2 = new TOOMOSS_CAN({ + handle: '1417675180:1', + name: 'test2', + id: 'toomoss', + vendor: 'toomoss', + canfd: true, + bitrate: { + freq: 500000, + preScaler: 1, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11, + clock: '40M' + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + database: '' + }) + }) + test('write frame', async () => { + const list = [] + for (let i = 0; i < 1; i++) { + list.push( + client.writeBase( + 3 + i, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, + remote: false + }, + Buffer.alloc(64, 0x33) + ) + ) + } + + try { + await Promise.all(list) + equal(true, false) + } catch (err: any) { + console.log(err) + equal(err.errorId, CAN_ERROR_ID.CAN_INTERNAL_ERROR) + } + //reopen client2 with correct bitrate + client2.close() + client2 = new TOOMOSS_CAN({ + handle: '1417675180:1', + name: 'test2', + id: 'toomoss', + vendor: 'toomoss', + canfd: true, + bitrate: { + freq: 250000, + preScaler: 2, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11, + clock: '40M' + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + }, + database: '' + }) + // //write frame again + const t1 = await client.writeBase( + 4, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, + remote: false + }, + Buffer.alloc(64, 0x33) + ) + console.log('timestamp1', t1) + const t2 = await client.writeBase( + 4, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, + remote: false + }, + Buffer.alloc(64, 0x33) + ) + console.log('timestamp2', t2) + }) + afterAll(async () => { + client.close() + client2.close() + // await delay(1000) + }) +}) + +describe('toomoss multi send canfd', () => { + let client!: TOOMOSS_CAN + let client2!: TOOMOSS_CAN + beforeAll(() => { + client = new TOOMOSS_CAN({ + handle: '1417675180:0', + name: 'test', + id: 'toomoss', + vendor: 'toomoss', + canfd: true, + bitrate: { + freq: 250000, + preScaler: 2, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11, + clock: '40M' + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 29, + timeSeg2: 10, + sjw: 2 + }, + database: '', + toomossRes: true + }) + client2 = new TOOMOSS_CAN({ + handle: '1417675180:1', + name: 'test2', + id: 'toomoss', + vendor: 'toomoss', + canfd: true, + + bitrate: { + freq: 250000, + preScaler: 2, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11, + clock: '40M' + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 29, + timeSeg2: 10, + sjw: 2 + }, + database: '', + toomossRes: true + }) + }) + test.skip('write multi frame #1', async () => { + for (let i = 0; i < 50; i++) { + const t1 = getTsUs() + await client.writeBase( + 3 + i, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, + remote: false + }, + Buffer.alloc(64, 0x33) + ) + const t2 = getTsUs() + console.log('offset', i, t2 - t1) + } + }) + test('write multi frame #2', async () => { + const list = [] + for (let i = 0; i < 20; i++) { + list.push( + client.writeBase( + 3 + i, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, + remote: false + }, + Buffer.alloc(64, 0x33) + ) + ) + } + + await Promise.all(list) + }) + afterAll(async () => { + console.log('close client') + client.close() + client2.close() + + // await delay(1000) + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/vector.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/vector.test.ts new file mode 100644 index 0000000..e3352c7 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/vector.test.ts @@ -0,0 +1,154 @@ +import { VECTOR_CAN } from '../../src/main/docan/vector' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { + addrToId, + CAN_ADDR_FORMAT, + CAN_ADDR_TYPE, + CAN_ID_TYPE, + CanAddr, + swapAddr +} from '../../src/main/share/can' +import { CanTp } from 'src/main/docan/cantp' + +const dllPath = path.join(__dirname, '../../resources/lib') +VECTOR_CAN.loadDllPath(dllPath) +console.log(VECTOR_CAN.getLibVersion()) +console.log(VECTOR_CAN.getValidDevices()) +// test('vector devices', () => { +// const devices = VECTOR_CAN.getValidDevices() +// console.log(devices) +// }) + +describe('vector test', () => { + let client!: VECTOR_CAN + beforeAll(() => { + client = new VECTOR_CAN({ + handle: '3:3', + name: 'test', + id: 'VECTOR_3_#CAN', + vendor: 'vector', + canfd: true, + bitrate: { + sjw: 1, + timeSeg1: 13, + timeSeg2: 2, + preScaler: 10, + freq: 500000, + clock: '80' + }, + bitratefd: { + sjw: 1, + timeSeg1: 7, + timeSeg2: 2, + preScaler: 4, + freq: 2000000, + clock: '80' + } + }) + }) + + test.skip('write multi frame', async () => { + const list = [] + for (let i = 0; i < 10; i++) { + list.push( + client.writeBase( + 3, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, //false true + remote: false + }, + Buffer.alloc(8, i) + ) + ) + } + const r = await Promise.all(list) + + console.log(r) + }) + test('read frame', async () => { + const r = await client.readBase( + 0xa2, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, //false true + remote: false + }, + 5000 * 1000 + ) + console.log(r) + // const r1 = await client.readBase( + // 0x0, + // { + // idType: CAN_ID_TYPE.STANDARD, + // brs: true, + // canfd: true, //false true + // remote: false + // }, + // 5000 * 1000 + // ) + // console.log(r1) + }) + test('write frame can-fd', async () => { + await client.writeBase( + 3, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, //false true + remote: false + }, + Buffer.alloc(63, 1) + ) + + await client.writeBase( + 3, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: true, //false true + remote: false + }, + Buffer.alloc(33, 1) + ) + }) + test.skip('write error frame can', async () => { + try { + await client.writeBase( + 3, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, //false true + remote: false + }, + Buffer.alloc(8, 1) + ) + } catch (e) { + console.log(e) + } + + try { + await client.writeBase( + 3, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, //false true + remote: false + }, + Buffer.alloc(8, 1) + ) + } catch (e) { + // console.log(e) + } + }) + afterAll(() => { + console.log('close') + client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/zlg.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/zlg.test.ts new file mode 100644 index 0000000..f4323a8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/docan/zlg.test.ts @@ -0,0 +1,97 @@ +import { ZLG_CAN } from '../../src/main/docan/zlg' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { + addrToId, + CAN_ADDR_FORMAT, + CAN_ADDR_TYPE, + CAN_ID_TYPE, + CanAddr, + swapAddr +} from '../../src/main/share/can' +import { CanTp } from 'src/main/docan/cantp' + +const dllPath = path.join(__dirname, '../../resources/lib') +ZLG_CAN.loadDllPath(dllPath) + +describe('zlg device availability test', () => { + test('should include USBCANFD-400U devices', () => { + const devices = ZLG_CAN.getValidDevices() + const usbcanfd400u = devices.filter((d) => d.label.includes('USBCANFD_400U')) + // USBCANFD-400U has 4 channels × 2 device indexes = 8 devices + equal( + usbcanfd400u.length, + 8, + 'USBCANFD-400U should have 8 device entries (4 channels × 2 indexes)' + ) + }) + + test('should include USBCAN2 (USBCAN-II) devices', () => { + const devices = ZLG_CAN.getValidDevices() + const usbcan2 = devices.filter((d) => d.label.includes('USBCAN2')) + // USBCAN2 has 2 channels × 2 device indexes = 4 devices + equal(usbcan2.length, 4, 'USBCAN2 should have 4 device entries (2 channels × 2 indexes)') + }) + + test('should include USBCAN-2E-U devices', () => { + const devices = ZLG_CAN.getValidDevices() + const usbcan2eu = devices.filter((d) => d.label.includes('USBCAN_2E_U')) + // USBCAN-2E-U has 2 channels × 2 device indexes = 4 devices + equal(usbcan2eu.length, 4, 'USBCAN-2E-U should have 4 device entries (2 channels × 2 indexes)') + }) +}) + +describe('zlg test', () => { + let client!: ZLG_CAN + beforeAll(() => { + client = new ZLG_CAN({ + handle: '41_0_0', + name: 'test', + vendor: 'zlg', + id: 'zlg', + canfd: false, + bitrate: { + freq: 250000, + preScaler: 1, + timeSeg1: 68, + timeSeg2: 11, + sjw: 11 + }, + bitratefd: { + freq: 1000000, + preScaler: 1, + timeSeg1: 20, + timeSeg2: 19, + sjw: 19 + } + }) + }) + test('write multi frame', async () => { + // await client.writeBase(3, { + // idType: CAN_ID_TYPE.STANDARD, + // brs: false, + // canfd: false, + // remote: false + // }, Buffer.alloc(8, 0x5a)) + const list = [] + for (let i = 0; i < 19; i++) { + list.push( + client.writeBase( + 3, + { + idType: CAN_ID_TYPE.STANDARD, + brs: false, + canfd: false, + remote: false + }, + Buffer.alloc(8, i) + ) + ) + } + const r = await Promise.all(list) + }) + afterAll(() => { + // client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/2.1.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/2.1.ldf new file mode 100644 index 0000000..251c09b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/2.1.ldf @@ -0,0 +1,182 @@ +/*************************************************************************************/ + +// + +// Description: LIN Description file created using Vector's DaVinci Network Designer + +// Created: 07 Sep 2007 14:37:29 + +// Author: Vector Informatik GmbH + +// Version: 0.1 + +// + +/*************************************************************************************/ + +LIN_description_file; +LIN_protocol_version = "2.1"; +LIN_language_version = "2.1"; +LIN_speed = 19.2 kbps; + +Nodes { + Master: SeatECU, 5 ms, 0.1 ms ; + Slaves: Motor1, Motor2 ; +} + +Signals { + Motor1ErrorCode: 8, 5, Motor1, SeatECU ; + Motor1ErrorValue: 8, 1, Motor1, SeatECU ; + Motor1LinError: 1, 0, Motor1, SeatECU ; + Motor1Position: 32, {0, 0, 0, 0}, Motor1, SeatECU ; + Motor1Selection: 2, 0, SeatECU, Motor1 ; + Motor1Temp: 8, 5, Motor1, SeatECU ; + Motor2ErrorCode: 8, 2, Motor2, SeatECU ; + Motor2ErrorValue: 8, 4, Motor2, SeatECU ; + Motor2LinError: 1, 0, Motor2, SeatECU ; + Motor2Position: 32, {0, 0, 0, 0}, Motor2, SeatECU ; + Motor2Selection: 2, 0, SeatECU, Motor2 ; + Motor2Temp: 8, 0, Motor2, SeatECU ; + MotorDirection: 2, 0, SeatECU, Motor1, Motor2 ; + MotorSpeed: 10, 0, SeatECU, Motor1, Motor2 ; +} + +Diagnostic_signals { + MasterReqB0: 8, 0 ; + MasterReqB1: 8, 0 ; + MasterReqB2: 8, 0 ; + MasterReqB3: 8, 0 ; + MasterReqB4: 8, 0 ; + MasterReqB5: 8, 0 ; + MasterReqB6: 8, 0 ; + MasterReqB7: 8, 0 ; + SlaveRespB0: 8, 0 ; + SlaveRespB1: 8, 0 ; + SlaveRespB2: 8, 0 ; + SlaveRespB3: 8, 0 ; + SlaveRespB4: 8, 0 ; + SlaveRespB5: 8, 0 ; + SlaveRespB6: 8, 0 ; + SlaveRespB7: 8, 0 ; +} + + + +Frames { + Motor1Control: 48, SeatECU, 1 { + Motor1Selection, 0 ; + } + Motor1State_Cycl: 51, Motor1, 6 { + Motor1Temp, 0 ; + Motor1Position, 8 ; + Motor1LinError, 40 ; + } + Motor1State_Event: 54, Motor1, 3 { + Motor1ErrorCode, 8 ; + Motor1ErrorValue, 16 ; + } + Motor2Control: 49, SeatECU, 1 { + Motor2Selection, 0 ; + } + Motor2State_Cycl: 52, Motor2, 6 { + Motor2Temp, 0 ; + Motor2Position, 8 ; + Motor2LinError, 40 ; + } + Motor2State_Event: 55, Motor2, 3 { + Motor2ErrorCode, 8 ; + Motor2ErrorValue, 16 ; + } + MotorsControl: 45, SeatECU, 2 { + MotorDirection, 0 ; + MotorSpeed, 2 ; + } +} + + + +Diagnostic_frames { + MasterReq: 0x3c { + MasterReqB0, 0 ; + MasterReqB1, 8 ; + MasterReqB2, 16 ; + MasterReqB3, 24 ; + MasterReqB4, 32 ; + MasterReqB5, 40 ; + MasterReqB6, 48 ; + MasterReqB7, 56 ; + } + SlaveResp: 0x3d { + SlaveRespB0, 0 ; + SlaveRespB1, 8 ; + SlaveRespB2, 16 ; + SlaveRespB3, 24 ; + SlaveRespB4, 32 ; + SlaveRespB5, 40 ; + SlaveRespB6, 48 ; + SlaveRespB7, 56 ; + } +} + +Node_attributes { + Motor1{ + LIN_protocol = "2.1" ; + configured_NAD = 0x2 ; + initial_NAD = 0xA ; + product_id = 0x1E, 0x1, 0 ; + response_error = Motor1LinError ; + fault_state_signals = Motor1ErrorValue, Motor1ErrorCode ; + P2_min = 100 ms ; + ST_min = 20 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + MotorsControl ; + Motor1Control ; + Motor1State_Cycl ; + Motor1State_Event ; + } + } + Motor2{ + LIN_protocol = "2.1" ; + configured_NAD = 0x3 ; + initial_NAD = 0xC ; + product_id = 0x2E, 0xB, 1 ; + response_error = Motor2LinError ; + fault_state_signals = Motor2ErrorValue, Motor2ErrorCode ; + P2_min = 50 ms ; + ST_min = 0 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + MotorsControl ; + Motor2Control ; + Motor2State_Cycl ; + Motor2State_Event ; + } + } +} + +Schedule_tables { + NormalTable { + MotorsControl delay 10 ms ; + Motor1State_Cycl delay 10 ms ; + Motor2State_Cycl delay 10 ms ; + } + Motor1Table { + Motor1Control delay 5 ms ; + Motor1State_Event delay 10 ms ; + } +} + + +Signal_encoding_types { + encTemperature { + physical_value, 0, 80, 0.5, -20, "Degree" ; + } +} + +Signal_representation { + encTemperature: Motor1Temp, Motor2Temp ; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/2.2.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/2.2.ldf new file mode 100644 index 0000000..6ebfe49 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/2.2.ldf @@ -0,0 +1,219 @@ +/*************************************************************************************/ + +// + +// Description: LIN Description file created using Vector's DaVinci Network Designer + +// Created: 25 Oct 2007 15:32:29 + +// Author: Vector Informatik GmbH + +// Version: 0.1 + +// + +/*************************************************************************************/ + +LIN_description_file; +LIN_protocol_version = "2.2"; +LIN_language_version = "2.2"; +LIN_speed = 19.2 kbps; + +Nodes { + Master : SeatECU, 5 ms, 0.1 ms ; + Slaves : Motor1, Motor2 ; +} + +Signals { + Motor1_Dynamic_Sig: 8, 7, Motor1, SeatECU ; + Motor1ErrorCode: 8, 5, Motor1, SeatECU ; + Motor1ErrorValue: 8, 1, Motor1, SeatECU ; + Motor1LinError: 1, 0, Motor1, SeatECU ; + Motor1Position: 32, {0, 0, 0, 0}, Motor1, SeatECU ; + Motor1Temp: 7, 5, Motor1, SeatECU ; + Motor2_Dynamic_Sig: 8, 8, Motor2, SeatECU ; + Motor2ErrorCode: 8, 2, Motor2, SeatECU ; + Motor2ErrorValue: 8, 4, Motor2, SeatECU ; + Motor2LinError: 1, 0, Motor2, SeatECU ; + Motor2Position: 32, {0, 0, 0, 0}, Motor2, SeatECU ; + Motor2Temp: 8, 0, Motor2, SeatECU ; + MotorDirection: 2, 0, SeatECU, Motor1, Motor2 ; + MotorSelection: 4, 0, SeatECU, Motor1, Motor2 ; + MotorSpeed: 10, 0, SeatECU, Motor1, Motor2 ; +} + +Diagnostic_signals { + MasterReqB0: 8, 0 ; + MasterReqB1: 8, 0 ; + MasterReqB2: 8, 0 ; + MasterReqB3: 8, 0 ; + MasterReqB4: 8, 0 ; + MasterReqB5: 8, 0 ; + MasterReqB6: 8, 0 ; + MasterReqB7: 8, 0 ; + SlaveRespB0: 8, 0 ; + SlaveRespB1: 8, 0 ; + SlaveRespB2: 8, 0 ; + SlaveRespB3: 8, 0 ; + SlaveRespB4: 8, 0 ; + SlaveRespB5: 8, 0 ; + SlaveRespB6: 8, 0 ; + SlaveRespB7: 8, 0 ; +} + + + +Frames { + Motor1_Dynamic: 53, Motor1, 1 { + Motor1_Dynamic_Sig, 0 ; + } + Motor1State_Cycl: 51, Motor1, 6 { + Motor1Temp, 0 ; + Motor1Position, 7 ; + Motor1LinError, 40 ; + } + Motor1State_Event: 54, Motor1, 3 { + Motor1ErrorCode, 8 ; + Motor1ErrorValue, 16 ; + } + Motor2_Dynamic: 44, Motor2, 1 { + Motor2_Dynamic_Sig, 0 ; + } + Motor2State_Cycl: 52, Motor2, 6 { + Motor2Temp, 0 ; + Motor2Position, 8 ; + Motor2LinError, 40 ; + } + Motor2State_Event: 55, Motor2, 3 { + Motor2ErrorCode, 8 ; + Motor2ErrorValue, 16 ; + } + MotorControl: 45, SeatECU, 2 { + MotorDirection, 0 ; + MotorSpeed, 2 ; + MotorSelection, 12 ; + } +} + + +Event_triggered_frames { + ETF_MotorStates: ETF_CollisionResolving, 58, Motor1State_Event, Motor2State_Event ; +} + +Diagnostic_frames { + MasterReq: 0x3c { + MasterReqB0, 0 ; + MasterReqB1, 8 ; + MasterReqB2, 16 ; + MasterReqB3, 24 ; + MasterReqB4, 32 ; + MasterReqB5, 40 ; + MasterReqB6, 48 ; + MasterReqB7, 56 ; + } + SlaveResp: 0x3d { + SlaveRespB0, 0 ; + SlaveRespB1, 8 ; + SlaveRespB2, 16 ; + SlaveRespB3, 24 ; + SlaveRespB4, 32 ; + SlaveRespB5, 40 ; + SlaveRespB6, 48 ; + SlaveRespB7, 56 ; + } +} + +Node_attributes { + Motor1{ + LIN_protocol = "2.2" ; + configured_NAD = 0x2 ; + initial_NAD = 0x2 ; + product_id = 0x1E, 0x1, 0 ; + response_error = Motor1LinError ; + P2_min = 100 ms ; + ST_min = 20 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + MotorControl ; + Motor1State_Cycl ; + Motor1State_Event ; + ETF_MotorStates ; + Motor1_Dynamic ; + } + } + Motor2{ + LIN_protocol = "2.2" ; + configured_NAD = 0x3 ; + initial_NAD = 0x3 ; + product_id = 0x1E, 0x1, 0 ; + response_error = Motor2LinError ; + P2_min = 100 ms ; + ST_min = 20 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + MotorControl ; + Motor2State_Cycl ; + Motor2State_Event ; + ETF_MotorStates ; + Motor2_Dynamic ; + } + } +} + +Schedule_tables { + NormalTable { + MotorControl delay 50 ms ; + Motor1State_Cycl delay 50 ms ; + Motor2State_Cycl delay 50 ms ; + } + DynamicTable { + Motor1_Dynamic delay 100 ms ; + Motor2_Dynamic delay 5 ms ; + } + NormalTableEvent { + MotorControl delay 50 ms ; + Motor1State_Cycl delay 50 ms ; + Motor2State_Cycl delay 50 ms ; + ETF_MotorStates delay 50 ms ; + } + InitTable { + AssignFrameId { Motor1, Motor1State_Cycl } delay 10 ms ; + AssignFrameId { Motor2, Motor2State_Cycl } delay 10 ms ; + AssignFrameId { Motor1, Motor1State_Event } delay 10 ms ; + AssignFrameId { Motor2, Motor2State_Event } delay 10 ms ; + AssignFrameId { Motor1, Motor1_Dynamic } delay 10 ms ; + AssignFrameId { Motor1, ETF_MotorStates } delay 10 ms ; + AssignFrameId { Motor2, ETF_MotorStates } delay 10 ms ; + AssignFrameId { Motor1, MotorControl } delay 10 ms ; + AssignFrameId { Motor2, MotorControl } delay 10 ms ; + } + ETF_CollisionResolving { + Motor2State_Event delay 10 ms ; + Motor1State_Event delay 10 ms ; + } +} + + +Signal_encoding_types { + MotorSpeed { + physical_value, 0, 0, 1, 0, "rpm" ; + } + encTemperature { + physical_value, 0, 80, 0.5, -20, "Degree" ; + logical_value, 0, "Initial" ; + logical_value, 1, "LON" ; + logical_value, 2, "NORMAL" ; + logical_value, 3, "HIGH" ; + logical_value, 4, "Reserved" ; + logical_value, 5, "Reserved" ; + logical_value, 6, "Reserved" ; + logical_value, 7, "Invalid" ; + } +} + +Signal_representation { + MotorSpeed: MotorSpeed ; + encTemperature: Motor1Temp, Motor2Temp ; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/20250109.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/20250109.ldf new file mode 100644 index 0000000..02035c3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/20250109.ldf @@ -0,0 +1,109 @@ +LIN_description_file ; +LIN_protocol_version = "2.1" ; +LIN_language_version = "2.1" ; +LIN_speed = 19.200 kbps ; +Nodes { + Master:BCM,1.0000 ms,0.1000 ms ; + Slaves:Fragrance; +} +Signals { + BCM_FragranceFunctionReq:2,0x0,BCM,Fragrance; + BCM_FragranceTypeReq:2,0x0,BCM,Fragrance; + BCM_PreparationChangeCmd_Type1:1,0x0,BCM,Fragrance; + FragranceFunctionStatus:1,0x0,Fragrance,BCM; + BCM_FragranceType:3,0x0,Fragrance,BCM; + FragranceConcentration:3,0x0,Fragrance,BCM; + FragranceErrorSt:1,0x0,Fragrance,BCM; + FragrancePreparationLack_Type1:1,0x0,Fragrance,BCM; + FragrancePreparationLack_Type2:1,0x0,Fragrance,BCM; + LINError:1,0x0,Fragrance,BCM; + Fragrance_CommunicationError:1,0x0,Fragrance,BCM; + Fragrance_LowVoltageError:1,0x0,Fragrance,BCM; + Fragrance_OverVoltageError:1,0x0,Fragrance,BCM; + Fragrance_FanError:1,0x0,Fragrance,BCM; + Fragrance_InternalSwitchError:1,0x0,Fragrance,BCM; + BCM_FragranceConcentrationReq:2,0x0,BCM,Fragrance; +} +Diagnostic_signals { + MasterReqB0:8,0; + MasterReqB1:8,0; + MasterReqB2:8,0; + MasterReqB3:8,0; + MasterReqB4:8,0; + MasterReqB5:8,0; + MasterReqB6:8,0; + MasterReqB7:8,0; + SlaveRespB0:8,0; + SlaveRespB1:8,0; + SlaveRespB2:8,0; + SlaveRespB3:8,0; + SlaveRespB4:8,0; + SlaveRespB5:8,0; + SlaveRespB6:8,0; + SlaveRespB7:8,0; +} +Frames { + BCM_Fragrance:0x32,BCM,8{ + BCM_FragranceFunctionReq,0; + BCM_FragranceTypeReq,10; + BCM_FragranceConcentrationReq,12; + } + Fragrance_1:0x38,Fragrance,8{ + Fragrance_InternalSwitchError,52; + Fragrance_OverVoltageError,50; + Fragrance_LowVoltageError,49; + LINError,24; + FragranceFunctionStatus,0; + Fragrance_CommunicationError,48; + BCM_FragranceType,1; + FragrancePreparationLack_Type1,8; + FragranceErrorSt,7; + Fragrance_FanError,51; + FragranceConcentration,4; + FragrancePreparationLack_Type2,9; + } +} +Diagnostic_frames { + MasterReq : 60 { + MasterReqB0,0; + MasterReqB1,8; + MasterReqB2,16; + MasterReqB3,24; + MasterReqB4,32; + MasterReqB5,40; + MasterReqB6,48; + MasterReqB7,56; + } + SlaveResp : 61 { + SlaveRespB0,0; + SlaveRespB1,8; + SlaveRespB2,16; + SlaveRespB3,24; + SlaveRespB4,32; + SlaveRespB5,40; + SlaveRespB6,48; + SlaveRespB7,56; + } +} +Node_attributes { + Fragrance { + LIN_protocol = 2.1 ; + configured_NAD = 0x7f ; + initial_NAD = 0x7f ; + product_id = 0x003c, 0x003b, 10 ; + P2_min = 50.0000 ms ; + N_As_timeout = 1000.0000 ms ; + N_Cr_timeout = 1000.0000 ms ; + configurable_frames { + BCM_Fragrance; + Fragrance_1; + } + } +} +Schedule_tables { + Sh345 { + BCM_Fragrance delay 100.0000 ms ; + Fragrance_1 delay 100.0000 ms ; + } +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/BYD_HT&SZ.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/BYD_HT&SZ.ldf new file mode 100644 index 0000000..5bd886c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/BYD_HT&SZ.ldf @@ -0,0 +1,870 @@ +/****************************************************************************/ +/* */ +/* Description: LIN Description file */ +/* Created: 03.02.2022 */ +/* Author: NIDS System */ +/* Version: 22.03.02 */ +/* Project: LIN_BDC_OMU */ +/* */ +/****************************************************************************/ + + +// Global Definitions + +LIN_description_file; +LIN_protocol_version = "2.1"; +LIN_language_version = "2.1"; +LIN_speed = 19.2 kbps; + +Nodes { + Master: BDC, 5 ms, 0 ms ; + Slaves: MRR_CTRL_LH, MRR_CTRL_RH, GlassPanel ; +} + +Signals { + Power_Status: 2, 0, BDC, MRR_CTRL_LH, MRR_CTRL_RH ; + Vehicle_Speed: 12, 0, BDC, MRR_CTRL_LH, MRR_CTRL_RH ; + HSI_Command: 2, 0, BDC, MRR_CTRL_LH, MRR_CTRL_RH ; + Right_SFE_Command: 2, 0, BDC, MRR_CTRL_LH, MRR_CTRL_RH ; + In_Car_Temperature: 8, 0, BDC, GlassPanel ; + LIN_SunroofEnable: 1, 0, BDC ; + Operation_Glass: 3, 0, BDC ; + Operation_R_Blind: 2, 0, BDC ; + VehicleSpeed: 8, 0, BDC ; + LIN_SunBlindLINCMD_RR_ATS: 2, 0, BDC ; + LIN_SunBlindLINCMD_RR_Voice: 2, 0, BDC ; + ECU_Initialization_State: 1, 0, MRR_CTRL_LH, BDC ; + Sunblind_Current_Movement_State: 2, 0, MRR_CTRL_LH, BDC ; + Sunblind_Position: 2, 0, MRR_CTRL_LH, BDC ; + Thermal_Protection_State: 1, 0, MRR_CTRL_LH, BDC ; + LIN_Communication_Failure_State: 1, 0, MRR_CTRL_LH, BDC ; + ECU_Diagnostic_Issue: 1, 0, MRR_CTRL_LH, BDC ; + LIN_Position_Percent_State: 8, 0, MRR_CTRL_LH, BDC ; + Motor_Cycle_Number: 16, 0, MRR_CTRL_LH, BDC ; + RF_Learning_State: 2, 0, MRR_CTRL_LH, BDC ; + LIN_LH_MRROUT_STATUS: 3, 0, MRR_CTRL_LH ; + R_ECU_Initialization_State: 1, 0, MRR_CTRL_RH, BDC ; + R_Sunblind_Current_Movement_State: 2, 0, MRR_CTRL_RH, BDC ; + R_Sunblind_Position: 2, 0, MRR_CTRL_RH, BDC ; + R_Thermal_Protection_State: 1, 0, MRR_CTRL_RH, BDC ; + R_LIN_Communication_Failure_State: 1, 0, MRR_CTRL_RH, BDC ; + R_ECU_Diagnostic_Issue: 1, 0, MRR_CTRL_RH, BDC ; + R_LIN_Position_Percent_State: 8, 0, MRR_CTRL_RH, BDC ; + R_Motor_Cycle_Number: 16, 0, MRR_CTRL_RH, BDC ; + R_RF_Learning_State: 2, 0, MRR_CTRL_RH, BDC ; + LIN_RH_MRROUT_STATUS: 3, 0, MRR_CTRL_RH ; + ECU_Initialization_State1: 1, 0, GlassPanel, BDC ; + Sunblind_Current_Movement_State1: 2, 0, GlassPanel, BDC ; + Sunblind_Position1: 2, 0, GlassPanel, BDC ; + Thermal_Protection_State1: 1, 0, GlassPanel, BDC ; + LIN_Communication_Failure_State1: 1, 0, GlassPanel, BDC ; + ECU_Diagnostic_Issue1: 1, 0, GlassPanel, BDC ; + LIN_Position_Percent_State1: 8, 0, GlassPanel, BDC ; + Motor_Cycle_Number1: 16, 0, GlassPanel, BDC ; + RF_Learning_State1: 2, 0, GlassPanel, BDC ; + GlassPanel_RespSyncCounter: 4, 0, GlassPanel ; + GlassPanel_Result: 3, 0, GlassPanel ; + GlassPanel_MotionAttributes: 8, 0, GlassPanel ; + Command_Authorization: 1, 0, BDC, MRR_CTRL_LH, MRR_CTRL_RH ; + HSI_KEY_Command: 2, 0, BDC, MRR_CTRL_LH, MRR_CTRL_RH ; + In_Car_temperature: 8, 0, BDC, MRR_CTRL_LH, MRR_CTRL_RH ; +} + +Diagnostic_signals { + MasterReqB0: 8, 0 ; + MasterReqB1: 8, 0 ; + MasterReqB2: 8, 0 ; + MasterReqB3: 8, 0 ; + MasterReqB4: 8, 0 ; + MasterReqB5: 8, 0 ; + MasterReqB6: 8, 0 ; + MasterReqB7: 8, 0 ; + SlaveRespB0: 8, 0 ; + SlaveRespB1: 8, 0 ; + SlaveRespB2: 8, 0 ; + SlaveRespB3: 8, 0 ; + SlaveRespB4: 8, 0 ; + SlaveRespB5: 8, 0 ; + SlaveRespB6: 8, 0 ; + SlaveRespB7: 8, 0 ; +} + + + +Frames { + Status_0x15: 21, BDC, 8 { + Power_Status, 0 ; + Vehicle_Speed, 8 ; + HSI_Command, 60 ; + Right_SFE_Command, 62 ; + Command_Authorization, 3 ; + HSI_KEY_Command, 30 ; + In_Car_temperature, 48 ; + } + BDC_Temperature_0x14: 20, BDC, 8 { + In_Car_Temperature, 56 ; + } + L_SunShade_0x1D: 29, MRR_CTRL_LH, 8 { + ECU_Initialization_State, 0 ; + Sunblind_Current_Movement_State, 1 ; + Sunblind_Position, 3 ; + Thermal_Protection_State, 5 ; + LIN_Communication_Failure_State, 6 ; + ECU_Diagnostic_Issue, 7 ; + LIN_Position_Percent_State, 8 ; + Motor_Cycle_Number, 16 ; + RF_Learning_State, 32 ; + } + R_SunShade_0x1E: 30, MRR_CTRL_RH, 8 { + R_ECU_Initialization_State, 0 ; + R_Sunblind_Current_Movement_State, 1 ; + R_Sunblind_Position, 3 ; + R_Thermal_Protection_State, 5 ; + R_LIN_Communication_Failure_State, 6 ; + R_ECU_Diagnostic_Issue, 7 ; + R_LIN_Position_Percent_State, 8 ; + R_Motor_Cycle_Number, 16 ; + R_RF_Learning_State, 32 ; + } + Rear_SunShade_0x1F: 31, GlassPanel, 8 { + ECU_Initialization_State1, 0 ; + Sunblind_Current_Movement_State1, 1 ; + Sunblind_Position1, 3 ; + Thermal_Protection_State1, 5 ; + LIN_Communication_Failure_State1, 6 ; + ECU_Diagnostic_Issue1, 7 ; + LIN_Position_Percent_State1, 8 ; + Motor_Cycle_Number1, 16 ; + RF_Learning_State1, 32 ; + } +} + + + +Diagnostic_frames { + MasterReq: 0x3c { + MasterReqB0, 0 ; + MasterReqB1, 8 ; + MasterReqB2, 16 ; + MasterReqB3, 24 ; + MasterReqB4, 32 ; + MasterReqB5, 40 ; + MasterReqB6, 48 ; + MasterReqB7, 56 ; + } + SlaveResp: 0x3d { + SlaveRespB0, 0 ; + SlaveRespB1, 8 ; + SlaveRespB2, 16 ; + SlaveRespB3, 24 ; + SlaveRespB4, 32 ; + SlaveRespB5, 40 ; + SlaveRespB6, 48 ; + SlaveRespB7, 56 ; + } +} + +Node_attributes { + MRR_CTRL_LH{ + LIN_protocol = "2.1" ; + configured_NAD = 0x4 ; + initial_NAD = 0x4 ; + product_id = 0x0, 0xFFFE, 1 ; + response_error = Thermal_Protection_State ; + P2_min = 0 ms ; + ST_min = 0 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + L_SunShade_0x1D ; + Status_0x15 ; + } + } + MRR_CTRL_RH{ + LIN_protocol = "2.1" ; + configured_NAD = 0x6 ; + initial_NAD = 0x6 ; + product_id = 0x0, 0xFFFE, 1 ; + response_error = R_Thermal_Protection_State ; + P2_min = 0 ms ; + ST_min = 0 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + R_SunShade_0x1E ; + Status_0x15 ; + } + } + GlassPanel{ + LIN_protocol = "2.1" ; + configured_NAD = 0xD ; + initial_NAD = 0xD ; + product_id = 0x0, 0xFFFE, 1 ; + response_error = R_Thermal_Protection_State ; + P2_min = 0 ms ; + ST_min = 0 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + Rear_SunShade_0x1F ; + BDC_Temperature_0x14 ; + } + } +} + +Schedule_tables { + BDC_OMU { + BDC_Temperature_0x14 delay 10 ms ; + L_SunShade_0x1D delay 10 ms ; + R_SunShade_0x1E delay 10 ms ; + Rear_SunShade_0x1F delay 10 ms ; + Status_0x15 delay 10 ms ; + } + Diag_request { + MasterReq delay 10 ms ; + } + Diag_response { + SlaveResp delay 10 ms ; + } +} + + +Signal_encoding_types { + ERR_RESP_MRR_CTRL_LH_Encoding { + logical_value, 0, "Invalid" ; + logical_value, 1, "GO Up" ; + logical_value, 2, "Go Down" ; + logical_value, 3, "Reserved" ; + } + ERR_RESP_MRR_CTRL_RH_Encoding { + logical_value, 208, "??????" ; + logical_value, 216, "??????" ; + logical_value, 255, "??" ; + } + ECU_Initialization_State { + logical_value, 0, "Initialized" ; + logical_value, 1, "UnInitialized" ; + } + Sunblind_Current_Movement_State { + logical_value, 0, "Invalid" ; + logical_value, 1, "Go Up" ; + logical_value, 2, "Go Down" ; + logical_value, 3, "Anti-pinch Reversing" ; + } + Sunblind_Position { + logical_value, 0, "Invalid" ; + logical_value, 1, "Full Up" ; + logical_value, 2, "Full Down" ; + logical_value, 3, "Middle Position" ; + } + Thermal_Protection_State { + logical_value, 0, "Yes" ; + logical_value, 1, "No" ; + } + LIN_Communication_Failure_State { + logical_value, 0, "Normal" ; + logical_value, 1, "Issue" ; + } + LIN_Position_Percent_State { + logical_value, 0, "Init" ; + logical_value, 255, "Invalid" ; + } + RF_Learning_State { + physical_value, 0, 15, 1, 0, "null" ; + logical_value, 0, "Invalid" ; + logical_value, 1, "Learned" ; + logical_value, 2, "Not Learned" ; + logical_value, 3, "Reserved" ; + } + GlassPanel_RequestedMotionDirection_Encoding { + logical_value, 0, "MOTION_DIR_NONE" ; + logical_value, 1, "MOTION_DIR_CLOSE" ; + logical_value, 2, "MOTION_DIR_OPEN" ; + logical_value, 3, "MOTION_DIR_UNKNOWN" ; + } + GlassPanel_RespSyncCounter_Encoding { + physical_value, 0, 15, 1, 0, "null" ; + } + GlassPanel_Result_Encoding { + logical_value, 0, "MC_REQ_RESULT_NONE" ; + logical_value, 1, "MC_REQ_RESULT_SUCCESSFUL" ; + logical_value, 2, "MC_REQ_RESULT_RESERVAL_DURING_FORWARD_MOVEMENT" ; + logical_value, 3, "MC_REQ_RESULT_REVERSAL_DURING_BACKWARD_MOVEMENT" ; + logical_value, 4, "MC_REQ_RESULT_ABORTED" ; + logical_value, 5, "0x5~0x7:Reserved" ; + logical_value, 7, "0x5~0x7:Reserved" ; + } + GlassPanel_RoofArea_Encoding { + logical_value, 0, "GLASS_TILT_UP" ; + logical_value, 1, "GLASS_VENT_AREA" ; + logical_value, 2, "GLASS_ANTIPINCH_IN_VENT" ; + logical_value, 3, "GLASS_FULLY_CLOSE" ; + logical_value, 4, "GLASS_ANTIPINCH_IN_PARTLY_SLIDE" ; + logical_value, 5, "GLASS_PARTLY_SLIDE" ; + logical_value, 6, "GLASS_FULLY_OPEN" ; + logical_value, 7, "GLASS_UNINITIALIZED" ; + } + Glass_Error_Encoding { + logical_value, 0, "NoError" ; + logical_value, 1, "Thermal_Protection_Active" ; + logical_value, 2, "Initialized_Status" ; + logical_value, 3, "UndefinedECU_Error" ; + logical_value, 4, "Switch_Error" ; + logical_value, 5, "Voltage_Error" ; + logical_value, 6, "Complex_Error" ; + logical_value, 7, "Reserved" ; + } + LIN_BCM_DrvTyp_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "ACC" ; + logical_value, 2, "ON" ; + logical_value, 3, "Reserved" ; + } + LIN_Defog_DfgrRlySta_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "ON" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_IMS_LHOSMirPlyBckSta_Encoding { + logical_value, 0, "STOP" ; + logical_value, 1, "PLAY1" ; + logical_value, 2, "PLAY2" ; + logical_value, 3, "PLAY3" ; + logical_value, 4, "SmartIMS" ; + logical_value, 5, "Profile1" ; + logical_value, 6, "Profile2" ; + logical_value, 7, "Guest" ; + logical_value, 8, "0x8~0xE:Reseved" ; + logical_value, 14, "0x8~0xE:Reseved" ; + logical_value, 15, "Error Indicator" ; + } + LIN_IMS_RHOSMirPlyBckSta_Encoding { + logical_value, 0, "STOP" ; + logical_value, 1, "PLAY1" ; + logical_value, 2, "PLAY2" ; + logical_value, 3, "PLAY3" ; + logical_value, 4, "SmartIMS" ; + logical_value, 5, "Profile1" ; + logical_value, 6, "Profile2" ; + logical_value, 7, "Guest" ; + logical_value, 8, "0x8~0xE:Reseved" ; + logical_value, 14, "0x8~0xE:Reseved" ; + logical_value, 15, "Error Indicator" ; + } + ECU_Diagnostic_Issue { + physical_value, 0, 255, 1, 0, "null" ; + logical_value, 0, "Normal" ; + logical_value, 1, "Issue" ; + } + Motor_Cycle_Number { + logical_value, 65535, "??????" ; + } + LIN_LH_MRROUT_STATUS_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "UP" ; + logical_value, 2, "DOWN" ; + logical_value, 3, "LEFT" ; + logical_value, 4, "RIGHT" ; + logical_value, 5, "0x5~0x7:Reserved" ; + logical_value, 7, "0x5~0x7:Reserved" ; + } + LIN_LH_MRR_CTRL_NOL_Encoding { + logical_value, 0, "SLEEP" ; + logical_value, 1, "NORMAL_MODE" ; + } + LIN_LH_VERTICAL_POSITION_Encoding { + physical_value, 0, 255, 1, 0, "null" ; + } + LIN_LH_VERT_FAIL_Encoding { + logical_value, 0, "No fail" ; + logical_value, 1, "fail" ; + } + LIN_Mirror_LHOMUOSMirFldCtrlSta_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "Folding" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_Mirror_LHOMUOSMirUnFldCtrlSta_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "Unfolding" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_Mirror_OSMirFldReq_Encoding { + physical_value, 0, 0, 1, 0 ; + } + LIN_Mirror_OSMirPosMnlCmd_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "UP" ; + logical_value, 2, "DOWN" ; + logical_value, 3, "LEFT" ; + logical_value, 4, "RIGHT" ; + logical_value, 5, "Reserved" ; + logical_value, 6, "Not Used" ; + logical_value, 7, "Error Indicator" ; + } + LIN_Mirror_RHOMUOSMirFldCtrlSta_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "Folding" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_Mirror_RHOMUOSMirUnFldCtrlSta_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "Unfolding" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_RH_HORIZONTAL_POSITION_Encoding { + physical_value, 0, 255, 1, 0, "null" ; + } + LIN_RH_HORI_FAIL_Encoding { + logical_value, 0, "No fail" ; + logical_value, 1, "fail" ; + } + LIN_RH_MRROUT_STATUS_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "UP" ; + logical_value, 2, "DOWN" ; + logical_value, 3, "LEFT" ; + logical_value, 4, "RIGHT" ; + logical_value, 5, "0x5~0x7:Reserved" ; + logical_value, 7, "0x5~0x7:Reserved" ; + } + LIN_RH_MRR_CNTRL_NOL_Encoding { + logical_value, 0, "SLEEP" ; + logical_value, 1, "NORMAL_MODE" ; + } + LIN_RH_VERTICAL_POSITION_Encoding { + physical_value, 0, 255, 1, 0, "null" ; + } + LIN_RH_VERT_FAIL_Encoding { + logical_value, 0, "No fail" ; + logical_value, 1, "fail" ; + } + LIN_SunBlindLINCMD_RR_ATS_Encoding { + logical_value, 0, "NoAction" ; + logical_value, 1, "Open" ; + logical_value, 2, "Close" ; + logical_value, 3, "Stop" ; + } + LIN_SunBlindLINCMD_RR_Voice_Encoding { + logical_value, 0, "NoAction" ; + logical_value, 1, "Open" ; + logical_value, 2, "Close" ; + logical_value, 3, "Stop" ; + } + LIN_SunroofEnable_Encoding { + logical_value, 0, "Off" ; + logical_value, 1, "On" ; + } + LIN_WindowLock_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "RR_Lock" ; + } + Operation_Glass_Encoding { + logical_value, 0, "No Action" ; + logical_value, 1, "Glass Auto Open" ; + logical_value, 2, "Glass Auto Close" ; + logical_value, 3, "Glass Auto Tilt Up" ; + logical_value, 4, "Stop" ; + } + Operation_R_Blind_Encoding { + logical_value, 0, "No Action" ; + logical_value, 1, "R/Blind Auto Open" ; + logical_value, 2, "R/Blind Auto Close" ; + logical_value, 3, "Stop" ; + } + VehicleSpeed_Encoding { + physical_value, 0, 254, 1, 0, "null" ; + logical_value, 255, "Error" ; + } + GlassPanel_AutoInitialCompleteStatus_Encoding { + logical_value, 0, "Not_Achieve" ; + logical_value, 1, "Completion" ; + } + GlassPanel_CmdSrc_Encoding { + logical_value, 0, "Reserved" ; + logical_value, 1, "CMD_SOURCE_LOCAL_PANEL_SWITCH" ; + logical_value, 2, "Reserved" ; + logical_value, 3, "CMD_SOURCE_REMOTE_PANEL_SWITCH" ; + logical_value, 4, "CMD_SOURCE_REMOTE_BLIND_SWITCH" ; + logical_value, 5, "Reserved" ; + logical_value, 6, "Reserved" ; + logical_value, 7, "CMD_SOURCE_DIAGNOSTIC_REQUEST_PANEL" ; + logical_value, 8, "CMD_SOURCE_DIAGNOSTIC_REQUEST_BLIND" ; + logical_value, 9, "CMD_SOURCE_COMFORT_OPERATION" ; + logical_value, 10, "Reserved" ; + logical_value, 11, "CMD_SOURCE_IN_PLANT_LEARN" ; + logical_value, 12, "CMD_SOURCE_UNKNOWN" ; + logical_value, 13, "CMD_SOURCE_MULTIPLE_SOURCES_ACTIVE" ; + logical_value, 14, "CMD_SOURCE_REMOTE_MOTION_CONTROLLER" ; + logical_value, 15, "CMD_SOURCE_NUMBER_OF_VALID_SOURCES" ; + } + GlassPanel_CtrlLogic_Encoding { + logical_value, 0, "CONTROL_LOGIC_NONE" ; + logical_value, 1, "CONTROL_LOGIC_COMMAND_HANDLER" ; + logical_value, 2, "CONTROL_LOGIC_REMOTE_MC" ; + logical_value, 3, "CONTROL_LOGIC_SWITCH" ; + logical_value, 4, "CONTROL_LOGIC_LIMPHOME" ; + logical_value, 5, "CONTROL_LOGIC_INIT_BY_SWITCH" ; + logical_value, 6, "CONTROL_LOGIC_INIT_BY_IPL_TRIGGER" ; + logical_value, 7, "CONTROL_LOGIC_DIAGNOSTICS" ; + logical_value, 8, "0x8~0xF:Reserved" ; + logical_value, 15, "0x8~0xF:Reserved" ; + } + GlassPanel_IsAntiPinchFullyInitialized_Encoding { + logical_value, 0, "Not_Initialized" ; + logical_value, 1, "Initilized" ; + } + GlassPanel_IsAutoPending_Encoding { + logical_value, 0, "Automatic_movement_not_pressed" ; + logical_value, 1, "Automatic_movement_pressed" ; + } + GlassPanel_IsCmdBusy_Encoding { + logical_value, 0, "Command_Empty" ; + logical_value, 1, "Command_Occupied" ; + } + GlassPanel_IsMechRefLearningAllowed_Encoding { + logical_value, 0, "RFLearning_Not_Allowed" ; + logical_value, 1, "RFLearning_Allowed" ; + } + GlassPanel_IsMotorCtrlHwFailure_Encoding { + logical_value, 0, "MotorHW_OK" ; + logical_value, 1, "MotorHW_Defect" ; + } + GlassPanel_LinRespError_Encoding { + logical_value, 0, "LIN_Ok" ; + logical_value, 1, "LIN_Error" ; + } + GlassPanel_SharedStatus_Encoding { + logical_value, 0, "ROOF_STATUS_SHARED_NO_PLAY_PROT_RESTRICTION" ; + logical_value, 1, "ROOF_STATUS_SHARED_PLAY_PROT_RESTRICTION_ACTIVE" ; + logical_value, 2, "ROOF_STATUS_SHARED_PLAY_PROT_NO_MOVE_ACTIVE" ; + logical_value, 3, "ROOF_STATUS_SHARED_PLAY_PROT_RESTRICTION_NO_MOVE_ACTIVE" ; + } + GlassPanel_Status_Encoding { + logical_value, 0, "MC_REQ_STATUS_DONE" ; + logical_value, 1, "MC_REQ_STATUS_PENDING" ; + logical_value, 2, "MC_REQ_STATUS_ONGOING" ; + logical_value, 3, "MC_REQ_STATUS_REVERSING" ; + } + GlassPanel_StopOrDeleteReason_Encoding { + logical_value, 0, "STOP_REASON_DO_NOT_STOP" ; + logical_value, 1, "STOP_REASON_PAUSE_MOVEMENT" ; + logical_value, 2, "STOP_REASON_ABORT_BY_COMMAND_HANDLER" ; + logical_value, 3, "STOP_REASON_INVALID_MOTION_CTRL_REQUEST" ; + logical_value, 4, "0x4~0xC9:Reserved" ; + logical_value, 201, "0x4~0xC9:Reserved" ; + logical_value, 202, "STOP_REASON_APMD_TARGET_REACHED" ; + logical_value, 203, "0xCB~0xFF:Reserved" ; + logical_value, 255, "0xCB~0xFF:Reserved" ; + } + LIN_BCM_AccInSta_Encoding { + logical_value, 0, "ACC Off" ; + logical_value, 1, "ACC On" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_BCM_Ign1InSta_Encoding { + logical_value, 0, "IGN1 Off" ; + logical_value, 1, "IGN1 On" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_BCM_Ign2InSta_Encoding { + logical_value, 0, "IGN2 Off" ; + logical_value, 1, "IGN2 On" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_BCM_RegionType_Encoding { + logical_value, 0, "Dom" ; + logical_value, 1, "General" ; + logical_value, 2, "MiddleEast" ; + logical_value, 3, "Europe" ; + logical_value, 4, "Australia" ; + logical_value, 5, "Canada" ; + logical_value, 6, "USA" ; + logical_value, 7, "China" ; + logical_value, 8, "India" ; + logical_value, 9, "Mexico" ; + logical_value, 10, "Brazil" ; + logical_value, 11, "Russia" ; + logical_value, 12, "0xC~0xE:Reserved" ; + logical_value, 14, "0xC~0xE:Reserved" ; + logical_value, 15, "Error Indicator" ; + } + LIN_CF_AVN_ProfileIDRValue_Encoding { + logical_value, 0, "Default" ; + logical_value, 1, "Guest" ; + logical_value, 2, "Profile1" ; + logical_value, 3, "Profile2" ; + logical_value, 4, "0x04~0x0E:Reserved" ; + logical_value, 14, "0x04~0x0E:Reserved" ; + logical_value, 15, "Error Indicator" ; + } + LIN_Drv_PSMIMSReq_Encoding { + logical_value, 0, "None" ; + logical_value, 1, "Replay1" ; + logical_value, 2, "Replay2" ; + logical_value, 3, "Replay3" ; + logical_value, 4, "Memory1" ; + logical_value, 5, "Memory2" ; + logical_value, 6, "Memory3" ; + logical_value, 7, "Stop" ; + logical_value, 8, "0x8~0xE:Reseved" ; + logical_value, 14, "0x8~0xE:Reseved" ; + logical_value, 15, "Error Indicator" ; + } + LIN_IAU_ProfileIDRVal_Encoding { + logical_value, 0, "Default" ; + logical_value, 1, "Guest" ; + logical_value, 2, "Profile1" ; + logical_value, 3, "Profile2" ; + logical_value, 4, "0x04~0x0E:Reserved" ; + logical_value, 14, "0x04~0x0E:Reserved" ; + logical_value, 15, "Error Indicator" ; + } + LIN_IMS_GearPosRConfirmSta_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "ON(R position)" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_Lamp_PuddleLmpOnReq_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "ON" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + LIN_Mirror_OSMirSelSwSta_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "Left" ; + logical_value, 2, "Neutral" ; + logical_value, 3, "Right" ; + logical_value, 4, "0x4~0x6:Not Used" ; + logical_value, 6, "0x4~0x6:Not Used" ; + logical_value, 7, "Error Indicator" ; + } + LIN_SmrtIMS_PlyBckStpReq_Encoding { + logical_value, 0, "OFF" ; + logical_value, 1, "ON" ; + logical_value, 2, "Not Used" ; + logical_value, 3, "Error Indicator" ; + } + R_Blind_Error_Encoding { + logical_value, 0, "NoError" ; + logical_value, 1, "ThermalProtection_Active" ; + logical_value, 2, "InitializedStatus" ; + logical_value, 3, "UndefinedECU_Error" ; + logical_value, 4, "Switch_Error" ; + logical_value, 5, "Voltage_Error" ; + logical_value, 6, "Complex_Error" ; + logical_value, 7, "Reserved" ; + } + SunBlind_CmdSrc_Encoding { + logical_value, 0, "Enable" ; + logical_value, 1, "Disable" ; + } + SunBlind_CtrlLogic_Encoding { + logical_value, 0, "CONTROL_LOGIC_NONE" ; + logical_value, 1, "CONTROL_LOGIC_COMMAND_HANDLER" ; + logical_value, 2, "CONTROL_LOGIC_REMOTE_MC" ; + logical_value, 3, "CONTROL_LOGIC_SWITCH" ; + logical_value, 4, "CONTROL_LOGIC_LIMPHOME" ; + logical_value, 5, "CONTROL_LOGIC_INIT_BY_SWITCH" ; + logical_value, 6, "CONTROL_LOGIC_INIT_BY_IPL_TRIGGER" ; + logical_value, 7, "CONTROL_LOGIC_DIAGNOSTICS" ; + logical_value, 8, "0x8~0xF:Reserved" ; + logical_value, 15, "0x8~0xF:Reserved" ; + } + SunBlind_IsAntiPinchFullyInitialized_Encoding { + logical_value, 0, "Not_Initialized" ; + logical_value, 1, "Initilized" ; + } + SunBlind_IsAutoActive_Encoding { + logical_value, 0, "Automatic_Movement_Empty" ; + logical_value, 1, "Automatic_Movement_Ongoing" ; + } + SunBlind_IsAutoPending_Encoding { + logical_value, 0, "Automatic_Movement_Not_Pressed" ; + logical_value, 1, "Automatic_Movement_Pressed" ; + } + SunBlind_IsBeforeAntiBoomingPos_Encoding { + logical_value, 0, "After_Antibooming_Pos" ; + logical_value, 1, "Before_Antibooming_Pos" ; + } + SunBlind_IsCmdBusy_Encoding { + logical_value, 0, "Command_Empty" ; + logical_value, 1, "Command_Occupied" ; + } + SunBlind_IsMechRefLearningAllowed_Encoding { + logical_value, 0, "RFLearning_Not_Allowed" ; + logical_value, 1, "RFLearning_Allowed" ; + } + SunBlind_IsMotorCtrlHwFailure_Encoding { + logical_value, 0, "Hardware_Failure" ; + logical_value, 1, "Hardware_OK" ; + } + SunBlind_IsPositionMonitoringPossible_Encoding { + logical_value, 0, "Position_Monitoring_Not_Possible" ; + logical_value, 1, "Position_Monitoring_Possible" ; + } + SunBlind_LinRespError_Encoding { + logical_value, 0, "LIN_Ok" ; + logical_value, 1, "LIN_Error" ; + } + SunBlind_MotionAttributes_Encoding { + logical_value, 0, "MOTION_ATTRIBUTE_NONE" ; + logical_value, 1, "MOTION_ATTRIBUTE_SINGLE_STEP_FOR_TIME" ; + logical_value, 2, "Reserved" ; + logical_value, 3, "MOTION_ATTRIBUTE_SINGLE_STEP_FOR_POS" ; + logical_value, 4, "Reserved" ; + logical_value, 5, "MOTION_ATTRIBUTE_REPATED_STEP_FOR_TIME" ; + logical_value, 6, "0x6~0xFF:Reserved" ; + logical_value, 255, "0x6~0xFF:Reserved" ; + } + SunBlind_MotionState_Encoding { + logical_value, 0, "MOTION_STATE_NONE" ; + logical_value, 1, "MOTION_STATE_ACTIVE_MANUAL" ; + logical_value, 2, "MOTION_STATE_ACTIVE_AUTO" ; + logical_value, 3, "MOTION_STATE_ACTIVE_ANTIPINCH_REVERSE" ; + } + SunBlind_Rear_Error_Encoding { + logical_value, 0, "NoError" ; + logical_value, 1, "ThermalProtection_Active" ; + logical_value, 2, "InitializedStatus" ; + logical_value, 3, "UndefinedECU_Error" ; + logical_value, 4, "Switch_Error" ; + logical_value, 5, "Voltage_Error" ; + logical_value, 6, "Complex_Error" ; + logical_value, 7, "Reserved" ; + } + SunBlind_Rear_RoofArea_Encoding { + logical_value, 0, "BLIND_HALF_OPEN" ; + logical_value, 1, "BLIND_LESS_THEN_HALF_OPEN" ; + logical_value, 2, "BLIND_ANTIPINCH_LESS_THAN_HALF_OPEN" ; + logical_value, 3, "BLIND_FULLY_CLOSE" ; + logical_value, 4, "BLIND_ANTIPINCH_MORE_THAN_HALF_OPEN" ; + logical_value, 5, "BLIND_MORE_THAN_HALF_OPEN" ; + logical_value, 6, "BLIND_FULLY_OPEN" ; + logical_value, 7, "BLIND_UNINITIALIZED" ; + } + SunBlind_ReqId_Encoding { + logical_value, 0, "MC_REQ_ID_NONE" ; + logical_value, 1, "MC_REQ_ID_STOP" ; + logical_value, 2, "MC_REQ_ID_MOVE_TO_FULL_OPEN" ; + logical_value, 3, "MC_REQ_ID_MOVE_TO_FULL_CLOSE" ; + logical_value, 4, "MC_REQ_ID_MOVE_TO_FULL_TILT" ; + logical_value, 5, "MC_REQ_ID_MOVE_TO_HALF_OPEN" ; + logical_value, 6, "MC_REQ_ID_MOVE_TO_ANTIBOOM" ; + logical_value, 7, "MC_REQ_ID_FORWARD" ; + logical_value, 8, "MC_REQ_ID_BACKWARD" ; + logical_value, 9, "MC_REQ_ID_REVERSE_FORWARD" ; + logical_value, 10, "MC_REQ_ID_REVERSE_BACKWARD" ; + logical_value, 11, "MC_REQ_ID_DELETE_RP" ; + logical_value, 12, "MC_REQ_ID_DELETE_MR_FWD" ; + logical_value, 13, "MC_REQ_ID_DELETE_MR_BWD" ; + logical_value, 14, "MC_REQ_ID_DELETE_MR_ALL" ; + logical_value, 15, "MC_REQ_ID_DELETE_RP_AND_MR_ALL" ; + } + SunBlind_RequestedMotionDirection_Encoding { + logical_value, 0, "MOTION_DIR_NONE" ; + logical_value, 1, "MOTION_DIR_CLOSE" ; + logical_value, 2, "MOTION_DIR_OPEN" ; + logical_value, 3, "MOTION_DIR_UNKNOWN" ; + } + SunBlind_Result_Encoding { + logical_value, 0, "MC_REQ_RESULT_NONE" ; + logical_value, 1, "MC_REQ_RESULT_SUCCESSFUL" ; + logical_value, 2, "MC_REQ_RESULT_RESERVAL_DURING_FORWARD_MOVEMENT" ; + logical_value, 3, "MC_REQ_RESULT_REVERSAL_DURING_BACKWARD_MOVEMENT" ; + logical_value, 4, "MC_REQ_RESULT_ABORTED" ; + logical_value, 5, "0x5~0x7:Reserved" ; + logical_value, 7, "0x5~0x7:Reserved" ; + } + SunBlind_RoofArea_Encoding { + logical_value, 0, "BLIND_HALF_OPEN" ; + logical_value, 1, "BLIND_LESS_THEN_HALF_OPEN" ; + logical_value, 2, "BLIND_ANTIPINCH_LESS_THAN_HALF_OPEN" ; + logical_value, 3, "BLIND_FULLY_CLOSE" ; + logical_value, 4, "BLIND_ANTIPINCH_MORE_THAN_HALF_OPEN" ; + logical_value, 5, "BLIND_MORE_THAN_HALF_OPEN" ; + logical_value, 6, "BLIND_FULLY_OPEN" ; + logical_value, 7, "BLIND_UNINITIALIZED" ; + } + SunBlind_SharedStatus_Encoding { + logical_value, 0, "ROOF_STATUS_SHARED_PLAY_PROT_RESTRICTION_ACTIVE" ; + logical_value, 1, "ROOF_STATUS_SHARED_PLAY_PROT_NO_MOVE_ACTIVE" ; + logical_value, 2, "Reserved" ; + logical_value, 3, "Reserved" ; + } + SunBlind_Status_Encoding { + logical_value, 0, "MC_REQ_STATUS_DONE" ; + logical_value, 1, "MC_REQ_STATUS_PENDING" ; + logical_value, 2, "MC_REQ_STATUS_ONGOING" ; + logical_value, 3, "MC_REQ_STATUS_REVERSING" ; + } + SunBlind_StopOrDeleteReason_Encoding { + logical_value, 0, "STOP_REASON_DO_NOT_STOP" ; + logical_value, 1, "STOP_REASON_PAUSE_MOVEMENT" ; + logical_value, 2, "STOP_REASON_ABORT_BY_COMMAND_HANDLER" ; + logical_value, 3, "STOP_REASON_INVALID_MOTION_CTRL_REQUEST" ; + logical_value, 4, "0x4~0xC9:Reserved" ; + logical_value, 201, "0x4~0xC9:Reserved" ; + logical_value, 202, "STOP_REASON_APMD_TARGET_REACHED" ; + logical_value, 203, "0xCB~0xFF:Reserved" ; + logical_value, 255, "0xCB~0xFF:Reserved" ; + } + SunRoof_RearBlindOprSta_Encoding { + logical_value, 0, "NoAction" ; + logical_value, 1, "FullOpen" ; + logical_value, 2, "FullClose" ; + logical_value, 3, "PartiallyOpen" ; + logical_value, 4, "Opening" ; + logical_value, 5, "Closing" ; + logical_value, 6, "0x6~0xE:Reserved" ; + logical_value, 14, "0x6~0xE:Reserved" ; + logical_value, 15, "invalid" ; + } + LIN_SmrtIMS_PlyBckReq_DB_Encoding { + physical_value, 0, 4095, 1, 0, "null" ; + } + SunBlind_ReqSyncCounter_Encoding { + physical_value, 0, 15, 1, 0, "null" ; + } + SunBlind_RespSyncCounter_Encoding { + physical_value, 0, 15, 1, 0, "null" ; + } +} + +Signal_representation { + ECU_Diagnostic_Issue: ECU_Diagnostic_Issue, R_ECU_Diagnostic_Issue, ECU_Diagnostic_Issue1 ; + ECU_Initialization_State: ECU_Initialization_State, R_ECU_Initialization_State, ECU_Initialization_State1 ; + ERR_RESP_MRR_CTRL_LH_Encoding: HSI_Command, Right_SFE_Command, HSI_KEY_Command ; + ERR_RESP_MRR_CTRL_RH_Encoding: In_Car_temperature, In_Car_Temperature ; + GlassPanel_RespSyncCounter_Encoding: GlassPanel_RespSyncCounter ; + GlassPanel_Result_Encoding: GlassPanel_Result ; + LIN_BCM_DrvTyp_Encoding: Power_Status ; + LIN_Communication_Failure_State: LIN_Communication_Failure_State, R_LIN_Communication_Failure_State, LIN_Communication_Failure_State1 ; + LIN_LH_MRROUT_STATUS_Encoding: LIN_LH_MRROUT_STATUS ; + LIN_Mirror_OSMirFldReq_Encoding: Vehicle_Speed ; + LIN_Position_Percent_State: LIN_Position_Percent_State1, LIN_Position_Percent_State, R_LIN_Position_Percent_State ; + LIN_RH_MRROUT_STATUS_Encoding: LIN_RH_MRROUT_STATUS ; + LIN_SunBlindLINCMD_RR_ATS_Encoding: LIN_SunBlindLINCMD_RR_ATS ; + LIN_SunBlindLINCMD_RR_Voice_Encoding: LIN_SunBlindLINCMD_RR_Voice ; + LIN_SunroofEnable_Encoding: LIN_SunroofEnable ; + Motor_Cycle_Number: Motor_Cycle_Number, R_Motor_Cycle_Number, Motor_Cycle_Number1 ; + Operation_Glass_Encoding: Operation_Glass ; + Operation_R_Blind_Encoding: Operation_R_Blind ; + RF_Learning_State: RF_Learning_State, R_RF_Learning_State, RF_Learning_State1 ; + SunBlind_CmdSrc_Encoding: Command_Authorization ; + Sunblind_Current_Movement_State: Sunblind_Current_Movement_State, R_Sunblind_Current_Movement_State, Sunblind_Current_Movement_State1 ; + Sunblind_Position: Sunblind_Position, R_Sunblind_Position, Sunblind_Position1 ; + Thermal_Protection_State: GlassPanel_MotionAttributes, Thermal_Protection_State, R_Thermal_Protection_State, Thermal_Protection_State1 ; + VehicleSpeed_Encoding: VehicleSpeed ; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/CHANGAN_WLK151Z_LIN_1.1.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/CHANGAN_WLK151Z_LIN_1.1.ldf new file mode 100644 index 0000000..92fc39d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/CHANGAN_WLK151Z_LIN_1.1.ldf @@ -0,0 +1,166 @@ +LIN_description_file ; +LIN_protocol_version = "2.1" ; +LIN_language_version = "2.1" ; +LIN_speed = 19.200 kbps ; +Nodes { + Master:VCU_ECU,1.0000 ms,0.0000 ms ; + Slaves:FAN; +} +Signals { + TMS_EF_SpeedSet:8,0x00,VCU_ECU,FAN; + EF_RPMTarget:8,0x00,FAN,VCU_ECU; + EF_ActSpeed:8,0x00,FAN,VCU_ECU; + EF_voltage:8,0x00,FAN,VCU_ECU; + EF_temperature:8,0x00,FAN,VCU_ECU; + EF_current:8,0x00,FAN,VCU_ECU; + EF_OverTempError:2,0x0,FAN,VCU_ECU; + EF_OvercurrentError:2,0x0,FAN,VCU_ECU; + EF_OvervoltageError:2,0x0,FAN,VCU_ECU; + EF_undervoltageError:2,0x0,FAN,VCU_ECU; + EF_BlockError:2,0x0,FAN,VCU_ECU; + EF_RsErr:1,0x0,FAN,VCU_ECU; +} +Diagnostic_signals { + MasterReqB0:8,0; + MasterReqB1:8,0; + MasterReqB2:8,0; + MasterReqB3:8,0; + MasterReqB4:8,0; + MasterReqB5:8,0; + MasterReqB6:8,0; + MasterReqB7:8,0; + SlaveRespB0:8,0; + SlaveRespB1:8,0; + SlaveRespB2:8,0; + SlaveRespB3:8,0; + SlaveRespB4:8,0; + SlaveRespB5:8,0; + SlaveRespB6:8,0; + SlaveRespB7:8,0; +} +Frames { + EF_PCmd:0x2E,VCU_ECU,8{ + TMS_EF_SpeedSet,0; + } + EF_PRsp:0x2F,FAN,8{ + EF_RPMTarget,0; + EF_ActSpeed,8; + EF_voltage,16; + EF_temperature,24; + EF_current,32; + EF_OverTempError,40; + EF_OvercurrentError,42; + EF_OvervoltageError,44; + EF_undervoltageError,46; + EF_BlockError,48; + EF_RsErr,50; + } +} +Diagnostic_frames { + MasterReq : 60 { + MasterReqB0,0; + MasterReqB1,8; + MasterReqB2,16; + MasterReqB3,24; + MasterReqB4,32; + MasterReqB5,40; + MasterReqB6,48; + MasterReqB7,56; + } + SlaveResp : 61 { + SlaveRespB0,0; + SlaveRespB1,8; + SlaveRespB2,16; + SlaveRespB3,24; + SlaveRespB4,32; + SlaveRespB5,40; + SlaveRespB6,48; + SlaveRespB7,56; + } +} +Node_attributes { + FAN { + LIN_protocol = 2.1 ; + configured_NAD = 0x7f ; + initial_NAD = 0x7f ; + product_id = 0x0000, 0x0000, 255 ; + response_error = EF_RsErr ; + P2_min = 50.0000 ms ; + N_As_timeout = 1000.0000 ms ; + N_Cr_timeout = 1000.0000 ms ; + configurable_frames { + EF_PCmd; + EF_PRsp; + } + } +} +Schedule_tables { + CFC1885_LIN { + EF_PRsp delay 10.0000 ms ; + EF_PCmd delay 10.0000 ms ; + } +} +Signal_encoding_types { + EF_ActSpeed_Encoding { + physical_value,0,2800,11.2000,0.0000,"Rpm" ; + } + EF_BlockError_Encoding { + logical_value,0x00,"NO ERROR" ; + logical_value,0x01,"ERROR" ; + logical_value,0x02,"SNA" ; + } + EF_OverTempError_Encoding { + logical_value,0x00,"NO ERROR" ; + logical_value,0x01,"ERROR" ; + logical_value,0x02,"SNA" ; + } + EF_OvercurrentError_Encoding { + logical_value,0x00,"NO ERROR " ; + logical_value,0x01,"ERROR " ; + logical_value,0x02,"SNA" ; + } + EF_OvervoltageError_Encoding { + logical_value,0x00,"NO ERROR" ; + logical_value,0x01,"ERROR" ; + logical_value,0x02,"SNA" ; + } + EF_RPMTarget_Encoding { + physical_value,0,2800,11.2000,0.0000,"Rpm" ; + } + EF_RsErr_Encoding { + logical_value,0x00,"NO ERROR" ; + logical_value,0x01,"ERROR" ; + } + EF_current_Encoding { + physical_value,0,254,0.2000,0.0000,"A" ; + } + EF_temperature_Encoding { + physical_value,0,254,1.0000,-50.0000,"T" ; + } + EF_undervoltageError_Encoding { + logical_value,0x00,"NO ERROR" ; + logical_value,0x01,"ERROR" ; + logical_value,0x02,"SNA" ; + } + EF_voltage_Encoding { + physical_value,0,254,0.1000,0.0000,"V" ; + } + TMS_EF_SpeedSet_Encoding { + physical_value,0,2800,11.2000,0.0000,"Rpm" ; + } +} +Signal_representation { + EF_ActSpeed_Encoding:EF_ActSpeed; + EF_BlockError_Encoding:EF_BlockError; + EF_OverTempError_Encoding:EF_OverTempError; + EF_OvercurrentError_Encoding:EF_OvercurrentError; + EF_OvervoltageError_Encoding:EF_OvervoltageError; + EF_RPMTarget_Encoding:EF_RPMTarget; + EF_RsErr_Encoding:EF_RsErr; + EF_current_Encoding:EF_current; + EF_temperature_Encoding:EF_temperature; + EF_undervoltageError_Encoding:EF_undervoltageError; + EF_voltage_Encoding:EF_voltage; + TMS_EF_SpeedSet_Encoding:TMS_EF_SpeedSet; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/Door.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/Door.ldf new file mode 100644 index 0000000..357fcd0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/Door.ldf @@ -0,0 +1,265 @@ +/*************************************************************************************/ +// +// Description: LIN Description file created using Vector's DaVinci Network Designer +// Created: 12 Oct 2007 10:43:53 +// Author: Vector Informatik GmbH +// Version: 0.1 +// +/*************************************************************************************/ + +LIN_description_file; +LIN_protocol_version = "2.2"; +LIN_language_version = "2.2"; +LIN_speed = 19.2 kbps; + +Nodes { + Master: GWI, 1 ms, 0 ms ; + Slaves: DWF_Left, DWF_Right, DWR_Left, DWR_Right, RVM_Left, RVM_Right ; +} + + +Signals { + CLSStatusLeft: 1, 0, GWI, DWR_Left, DWF_Left ; + CLSStatusRight: 1, 0, GWI, DWF_Right ; + DWFL_ResponseError: 1, 0, DWF_Left, GWI ; + DWFL_WinPos: 8, 0, DWF_Left, GWI ; + DWFR_ResponseError: 1, 0, DWF_Right, GWI ; + DWFR_WinPos: 8, 0, DWF_Right, GWI ; + DWRL_ResponseError: 1, 0, DWR_Left, GWI ; + DWRL_WinPos: 8, 0, DWR_Left, GWI ; + DWRR_ResponseError: 1, 0, DWR_Right, GWI ; + DWRR_WinPos: 8, 0, DWR_Right, GWI ; + GWI_FrontWindowsLeft: 2, 1, GWI, DWF_Left ; + GWI_FrontWindowsRight: 2, 1, GWI, DWF_Right ; + GWI_MirrorCommandLeft: 4, 0, GWI, RVM_Left ; + GWI_MirrorCommandRight: 4, 0, GWI, RVM_Right ; + GWI_RearWindowsLeft: 2, 1, GWI, DWR_Left ; + GWI_RearWindowsRight: 2, 1, GWI, DWR_Right ; + RVML_MirrorPosition: 8, 0, RVM_Left, GWI ; + RVML_ResponseError: 1, 0, RVM_Left, GWI ; + RVMR_MirrorPosition: 8, 0, RVM_Right, GWI ; + RVMR_ResponseError: 1, 0, RVM_Right, GWI ; +} + +Diagnostic_signals { + MasterReqB0: 8, 0 ; + MasterReqB1: 8, 0 ; + MasterReqB2: 8, 0 ; + MasterReqB3: 8, 0 ; + MasterReqB4: 8, 0 ; + MasterReqB5: 8, 0 ; + MasterReqB6: 8, 0 ; + MasterReqB7: 8, 0 ; + SlaveRespB0: 8, 0 ; + SlaveRespB1: 8, 0 ; + SlaveRespB2: 8, 0 ; + SlaveRespB3: 8, 0 ; + SlaveRespB4: 8, 0 ; + SlaveRespB5: 8, 0 ; + SlaveRespB6: 8, 0 ; + SlaveRespB7: 8, 0 ; +} + + + +Frames { + DWFL_01: 3, DWF_Left, 2 { + DWFL_WinPos, 0 ; + DWFL_ResponseError, 8 ; + } + DWFR_01: 0, DWF_Right, 2 { + DWFR_ResponseError, 0 ; + DWFR_WinPos, 8 ; + } + DWRL_01: 2, DWR_Left, 2 { + DWRL_WinPos, 0 ; + DWRL_ResponseError, 8 ; + } + DWRR_01: 7, DWR_Right, 2 { + DWRR_ResponseError, 0 ; + DWRR_WinPos, 8 ; + } + GWI_01: 1, GWI, 1 { + GWI_FrontWindowsRight, 0 ; + GWI_RearWindowsLeft, 2 ; + GWI_RearWindowsRight, 4 ; + GWI_FrontWindowsLeft, 6 ; + } + GWI_02: 4, GWI, 1 { + CLSStatusLeft, 0 ; + CLSStatusRight, 1 ; + } + GWI_03: 5, GWI, 1 { + GWI_MirrorCommandLeft, 0 ; + GWI_MirrorCommandRight, 4 ; + } + RVML_01: 6, RVM_Left, 2 { + RVML_MirrorPosition, 0 ; + RVML_ResponseError, 8 ; + } + RVMR_01: 8, RVM_Right, 2 { + RVMR_ResponseError, 0 ; + RVMR_MirrorPosition, 8 ; + } +} + + + +Diagnostic_frames { + MasterReq: 0x3c { + MasterReqB0, 0 ; + MasterReqB1, 8 ; + MasterReqB2, 16 ; + MasterReqB3, 24 ; + MasterReqB4, 32 ; + MasterReqB5, 40 ; + MasterReqB6, 48 ; + MasterReqB7, 56 ; + } + SlaveResp: 0x3d { + SlaveRespB0, 0 ; + SlaveRespB1, 8 ; + SlaveRespB2, 16 ; + SlaveRespB3, 24 ; + SlaveRespB4, 32 ; + SlaveRespB5, 40 ; + SlaveRespB6, 48 ; + SlaveRespB7, 56 ; + } +} + +Node_attributes { + DWF_Left{ + LIN_protocol = "2.2" ; + configured_NAD = 0x1 ; + initial_NAD = 0x1 ; + product_id = 0x1e, 0x1, 1 ; + response_error = DWFL_ResponseError ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + DWFL_01 ; + GWI_01 ; + GWI_02 ; + } + } + DWF_Right{ + LIN_protocol = "2.1" ; + configured_NAD = 0x6 ; + initial_NAD = 0x6 ; + product_id = 0x1e, 0x1, 1 ; + response_error = DWFR_ResponseError ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + DWFR_01 ; + GWI_01 ; + GWI_02 ; + } + } + DWR_Left{ + LIN_protocol = "2.1" ; + configured_NAD = 0x2 ; + initial_NAD = 0x2 ; + product_id = 0x1e, 0x1, 1 ; + response_error = DWRL_ResponseError ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + DWRL_01 ; + GWI_01 ; + GWI_02 ; + } + } + DWR_Right{ + LIN_protocol = "2.1" ; + configured_NAD = 0x5 ; + initial_NAD = 0x5 ; + product_id = 0x1e, 0x1, 1 ; + response_error = DWRR_ResponseError ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + DWRR_01 ; + GWI_01 ; + } + } + RVM_Left{ + LIN_protocol = "2.1" ; + configured_NAD = 0x3 ; + initial_NAD = 0x3 ; + product_id = 0x1e, 0x1, 1 ; + response_error = RVML_ResponseError ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + GWI_03 ; + RVML_01 ; + } + } + RVM_Right{ + LIN_protocol = "2.1" ; + configured_NAD = 0x4 ; + initial_NAD = 0x4 ; + product_id = 0x1e, 0x1, 1 ; + response_error = RVMR_ResponseError ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + RVMR_01 ; + GWI_03 ; + } + } +} + +Schedule_tables { + Table0 { + MasterReq delay 10 ms ; + SlaveResp delay 10 ms ; + } + Table1 { + DWRR_01 delay 5 ms ; + DWFL_01 delay 5 ms ; + DWFR_01 delay 5 ms ; + DWRL_01 delay 5 ms ; + GWI_01 delay 4 ms ; + GWI_02 delay 4 ms ; + GWI_03 delay 4 ms ; + RVML_01 delay 5 ms ; + RVMR_01 delay 5 ms ; + } +} + + +Signal_encoding_types { + Enc_CLSStatus { + logical_value, 0, "Close" ; + logical_value, 1, "Open" ; + } + Enc_GWI_FrontWindows { + logical_value, 0, "Down" ; + logical_value, 1, "Halt" ; + logical_value, 2, "Up" ; + } + Enc_GWI_MirrorCommand { + logical_value, 0, "Don't move" ; + logical_value, 1, "Move left" ; + logical_value, 2, "Move Up" ; + logical_value, 3, "Move Right" ; + logical_value, 4, "Move Down" ; + } + Enc_GWI_RearWindows { + logical_value, 0, "Down" ; + logical_value, 1, "Halt" ; + logical_value, 2, "Up" ; + } +} + +Signal_representation { + Enc_CLSStatus: CLSStatusLeft, CLSStatusRight ; + Enc_GWI_FrontWindows: GWI_FrontWindowsLeft, GWI_FrontWindowsRight ; + Enc_GWI_MirrorCommand: GWI_MirrorCommandLeft, GWI_MirrorCommandRight ; + Enc_GWI_RearWindows: GWI_RearWindowsLeft, GWI_RearWindowsRight ; +} + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/OpenError.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/OpenError.ldf new file mode 100644 index 0000000..d35f101 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/OpenError.ldf @@ -0,0 +1,173 @@ +/*---------GLOBAL DEFINITIONS-----------*/ + +LIN_description_file; +LIN_protocol_version = "2.1"; +LIN_language_version = "2.1"; +LIN_speed = 19.2 kbps; + +Nodes { + Master: LIN4, 5 ms, 0.1 ms ; + Slaves: MFS, HOD ; +} + +Signals { + MFS_Left_switch_Left_signal: 2, 0, MFS, LIN4 ; + MFS_Left_switch_Right_signal: 2, 0, MFS, LIN4 ; + MFS_Left_switch_Up_signal: 2, 0, MFS, LIN4 ; + MFS_Left_switch_Down_signal: 2, 0, MFS, LIN4 ; + MFS_Left_switch_OK_signal: 2, 0, MFS, LIN4 ; + MFS_Left_switch_Left_One_signal: 2, 0, MFS, LIN4 ; + MFS_Left_switch_Left_Two_signal: 2, 0, MFS, LIN4 ; + MFS_Right_switch_Left_signal: 2, 0, MFS, LIN4 ; + MFS_Right_switch_Right_signal: 2, 0, MFS, LIN4 ; + MFS_Right_switch_Up_signal: 2, 0, MFS, LIN4 ; + MFS_Right_switch_Down_signal: 2, 0, MFS, LIN4 ; + MFS_Right_switch_OK_signal: 2, 0, MFS, LIN4 ; + MFS_Right_switch_Right_One_signal: 2, 0, MFS, LIN4 ; + MFS_Right_switch_Right_Two_signal: 2, 0, MFS, LIN4 ; + MFS_DiagInfoSW: 3, 0, MFS, LIN4 ; + MFS_RsErr: 1, 0, MFS, LIN4 ; + MFS_RollingCounter: 4, 0, MFS, LIN4 ; + MFS_Left_switch_Down_counter: 6, 0, MFS, LIN4 ; + MFS_Right_switch_Down_counter: 6, 0, MFS, LIN4 ; + MFS_CheckSum: 8, 0, MFS, LIN4 ; + HOD_handsoffDetectResult: 3, 0, HOD, LIN4 ; + HOD_handsoffAbilityDetect: 3, 0, HOD, LIN4 ; + HOD_SystemStatus: 3, 0, HOD, LIN4 ; + HOD_SenserStatus: 1, 0, HOD, LIN4 ; + HOD_AppStatus: 1, 0, HOD, LIN4 ; + HOD_LinStatus: 1, 0, HOD, LIN4 ; + HOD_CalibratedStatus: 1, 1, HOD, LIN4 ; + HODRollingCounter: 4, 0, HOD, LIN4 ; + HODCheckSum: 8, 0, HOD, LIN4 ; +} + +Diagnostic_signals { + MasterReqB0: 8, 0 ; + MasterReqB1: 8, 0 ; + MasterReqB2: 8, 0 ; + MasterReqB3: 8, 0 ; + MasterReqB4: 8, 0 ; + MasterReqB5: 8, 0 ; + MasterReqB6: 8, 0 ; + MasterReqB7: 8, 0 ; + SlaveRespB0: 8, 0 ; + SlaveRespB1: 8, 0 ; + SlaveRespB2: 8, 0 ; + SlaveRespB3: 8, 0 ; + SlaveRespB4: 8, 0 ; + SlaveRespB5: 8, 0 ; + SlaveRespB6: 8, 0 ; + SlaveRespB7: 8, 0 ; +} + + + +Frames { + MFS_0x19: 25, MFS, 8 { + MFS_Left_switch_Left_signal, 0 ; + MFS_Left_switch_Right_signal, 2 ; + MFS_Left_switch_Up_signal, 4 ; + MFS_Left_switch_Down_signal, 6 ; + MFS_Left_switch_OK_signal, 8 ; + MFS_Left_switch_Left_One_signal, 10 ; + MFS_Left_switch_Left_Two_signal, 12 ; + MFS_Right_switch_Left_signal, 16 ; + MFS_Right_switch_Right_signal, 18 ; + MFS_Right_switch_Up_signal, 20 ; + MFS_Right_switch_Down_signal, 22 ; + MFS_Right_switch_OK_signal, 24 ; + MFS_Right_switch_Right_One_signal, 26 ; + MFS_Right_switch_Right_Two_signal, 28 ; + MFS_DiagInfoSW, 32 ; + MFS_RsErr, 35 ; + MFS_RollingCounter, 36 ; + MFS_Left_switch_Down_counter, 40 ; + MFS_Right_switch_Down_counter, 48 ; + MFS_CheckSum, 56 ; + } + HOD_0x1D: 29, HOD, 8 { + HOD_handsoffDetectResult, 2 ; + HOD_handsoffAbilityDetect, 5 ; + HOD_SystemStatus, 8 ; + HOD_SenserStatus, 11 ; + HOD_AppStatus, 12 ; + HOD_LinStatus, 13 ; + HOD_CalibratedStatus, 14 ; + HODRollingCounter, 52 ; + HODCheckSum, 56 ; + } + BDC_0x10:16,LIN4,8{ + } + BDC_0x20:32,LIN4,8{ + } +} + + + +Diagnostic_frames { + MasterReq: 0x3c { + MasterReqB0, 0 ; + MasterReqB1, 8 ; + MasterReqB2, 16 ; + MasterReqB3, 24 ; + MasterReqB4, 32 ; + MasterReqB5, 40 ; + MasterReqB6, 48 ; + MasterReqB7, 56 ; + } + SlaveResp: 0x3d { + SlaveRespB0, 0 ; + SlaveRespB1, 8 ; + SlaveRespB2, 16 ; + SlaveRespB3, 24 ; + SlaveRespB4, 32 ; + SlaveRespB5, 40 ; + SlaveRespB6, 48 ; + SlaveRespB7, 56 ; + } +} + +Node_attributes { + MFS{ + LIN_protocol = "2.1" ; + configured_NAD = 0x13 ; + initial_NAD = 0x13 ; + product_id = 0x0, 0x0, 0 ; + response_error = MFS_RsErr ; + P2_min = 50 ms ; + ST_min = 0 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + MFS_0x19 ; + } + } + HOD{ + LIN_protocol = "2.1" ; + configured_NAD = 0x11 ; + initial_NAD = 0x11 ; + product_id = 0x0, 0x0, 0 ; + response_error = HOD_LinStatus ; + P2_min = 50 ms ; + ST_min = 0 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + HOD_0x1D ; + } + } +} + +Schedule_tables { + Schedule1 { + BDC_0x10 delay 10 ms ; + BDC_0x20 delay 10 ms ; + MFS_0x19 delay 10 ms ; + HOD_0x1D delay 10 ms ; + } +} + + + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/Test.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/Test.ldf new file mode 100644 index 0000000..edfc4ce --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/Test.ldf @@ -0,0 +1,170 @@ + + +LIN_description_file; +LIN_protocol_version = "J2602_1_1.0"; +LIN_language_version = "J2602_3_1.0"; +LIN_speed = 19.2 kbps; + +Nodes { + Master: BMS, 10 ms, 0.5 ms, 48 bits, 40 %; + Slaves: BPS_VICM_LIN7_connector, BPS2_VICM_LIN7_connector ; +} + +Signals { + BPS_Pressure: 14, 0, BPS_VICM_LIN7_connector, BMS ; + BPS2_Pressure: 14, 0, BPS2_VICM_LIN7_connector, BMS ; + BPS_ARC: 2, 0, BPS_VICM_LIN7_connector, BMS ; + BPS2_ARC: 2, 0, BPS2_VICM_LIN7_connector, BMS ; + BPS_CommErr: 3, 0, BPS_VICM_LIN7_connector, BMS ; + BPS2_CommErr: 3, 0, BPS2_VICM_LIN7_connector, BMS ; + back0: 16, 0, BPS_VICM_LIN7_connector, BMS ; + back1: 16, 0, BPS_VICM_LIN7_connector, BMS ; + back2: 8, 0, BPS_VICM_LIN7_connector, BMS ; + back4: 3, 0, BPS_VICM_LIN7_connector, BMS ; + back3: 2, 0, BPS_VICM_LIN7_connector, BMS ; + back5: 2, 0, BPS2_VICM_LIN7_connector, BMS ; + back6: 16, 0, BPS2_VICM_LIN7_connector, BMS ; + back7: 16, 0, BPS2_VICM_LIN7_connector, BMS ; + back8: 8, 0, BPS2_VICM_LIN7_connector, BMS ; + back9: 3, 0, BPS2_VICM_LIN7_connector, BMS ; +} + +Diagnostic_signals { + MasterReqB0: 8, 0 ; + MasterReqB1: 8, 0 ; + MasterReqB2: 8, 0 ; + MasterReqB3: 8, 0 ; + MasterReqB4: 8, 0 ; + MasterReqB5: 8, 0 ; + MasterReqB6: 8, 0 ; + MasterReqB7: 8, 0 ; + SlaveRespB0: 8, 0 ; + SlaveRespB1: 8, 0 ; + SlaveRespB2: 8, 0 ; + SlaveRespB3: 8, 0 ; + SlaveRespB4: 8, 0 ; + SlaveRespB5: 8, 0 ; + SlaveRespB6: 8, 0 ; + SlaveRespB7: 8, 0 ; +} + + + +Frames { + VICM_LIN7_BPS_Rsp_MSG: 0, BPS_VICM_LIN7_connector, 8 { + BPS_Pressure, 8 ; + BPS_ARC, 0 ; + BPS_CommErr, 5 ; + back0, 24 ; + back1, 40 ; + back2, 56 ; + back4, 2 ; + back3, 22 ; + } + VICM_LIN7_BPS2_Rsp_MSG: 32, BPS2_VICM_LIN7_connector, 8 { + BPS2_Pressure, 8 ; + BPS2_ARC, 0 ; + BPS2_CommErr, 5 ; + back5, 22 ; + back6, 24 ; + back7, 40 ; + back8, 56 ; + back9, 2 ; + } +} + + + +Diagnostic_frames { + MasterReq: 0x3c { + MasterReqB0, 0 ; + MasterReqB1, 8 ; + MasterReqB2, 16 ; + MasterReqB3, 24 ; + MasterReqB4, 32 ; + MasterReqB5, 40 ; + MasterReqB6, 48 ; + MasterReqB7, 56 ; + } + SlaveResp: 0x3d { + SlaveRespB0, 0 ; + SlaveRespB1, 8 ; + SlaveRespB2, 16 ; + SlaveRespB3, 24 ; + SlaveRespB4, 32 ; + SlaveRespB5, 40 ; + SlaveRespB6, 48 ; + SlaveRespB7, 56 ; + } +} + +Node_attributes { + BPS_VICM_LIN7_connector{ + LIN_protocol = "J2602_1_1.0" ; + configured_NAD = 0x60 ; + product_id = 0x100E, 0x1, 1 ; + response_error = BPS_CommErr ; + P2_min = 0 ms ; + ST_min = 0 ms ; + configurable_frames { + VICM_LIN7_BPS_Rsp_MSG = 0x0 ; + } + response_tolerance = 40 % ; + wakeup_time = 100 ms; + poweron_time = 200 ms; + } + BPS2_VICM_LIN7_connector{ + LIN_protocol = "J2602_1_1.0" ; + configured_NAD = 0x68 ; + product_id = 0x100E, 0x2, 1 ; + response_error = BPS2_CommErr ; + P2_min = 0 ms ; + ST_min = 0 ms ; + configurable_frames { + VICM_LIN7_BPS2_Rsp_MSG = 0x20 ; + } + response_tolerance = 40 % ; + wakeup_time = 100 ms; + poweron_time = 200 ms; + } +} + +Schedule_tables { + Cycle { + VICM_LIN7_BPS2_Rsp_MSG delay 50 ms ; + VICM_LIN7_BPS_Rsp_MSG delay 50 ms ; + } +} + + +Signal_encoding_types { + BPS1_Pressure_Encoding { + physical_value, 0, 16383, 0.018174327, -12.75, "kPa" ; + logical_value, 1, "Over Voltage" ; + logical_value, 2, "ASIC Fail" ; + } + BPS2_Pressure_Encoding { + physical_value, 0, 16383, 0.018174327, -12.75, "kPa" ; + logical_value, 1, "Over Voltage" ; + logical_value, 2, "Asic fail" ; + } + BPS_CommErr_Encoding { + logical_value, 0, "New Value Description" ; + logical_value, 1, "New Value Description" ; + logical_value, 2, "New Value Description" ; + logical_value, 3, "New Value Description" ; + logical_value, 4, "New Value Description" ; + logical_value, 5, "New Value Description" ; + logical_value, 6, "New Value Description" ; + logical_value, 7, "New Value Description" ; + } + Vol_Encoding { + physical_value, 0, 0, 0.001, 0, "V" ; + } +} + +Signal_representation { + BPS1_Pressure_Encoding: BPS_Pressure ; + BPS2_Pressure_Encoding: BPS2_Pressure ; + BPS_CommErr_Encoding: BPS_CommErr, BPS2_CommErr ; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/dataParse.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/dataParse.test.ts new file mode 100644 index 0000000..2752427 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/dataParse.test.ts @@ -0,0 +1,110 @@ +import { describe, test, expect, beforeAll } from 'vitest' +import { parseLinData, initDataBase } from 'src/renderer/src/worker/dataParse' +import parse from 'src/renderer/src/database/ldfParse' +import fs from 'fs' +import path from 'path' +import { LinChecksumType, LinDirection, LinMsg } from 'src/main/share/lin' + +describe('LIN Signal Parse', () => { + beforeAll(() => { + // Load and initialize test database + const ldfStr = fs.readFileSync(path.join(__dirname, '2.2.ldf'), 'utf-8') + const ldf = parse(ldfStr) + ldf.name = 'test.ldf' + initDataBase({ + lin: { + 'test.ldf': ldf + }, + can: {}, + orti: {} + }) + }) + + test('parse scalar signal - Motor1Temp', () => { + const msg: LinMsg = { + name: 'Motor1State_Cycl', + frameId: 51, // Motor1State_Cycl frame + data: Buffer.from([5, 0x2, 0x80, 0xf8, 0x7a, 1]), // Temperature value 40 + direction: LinDirection.RECV, + database: 'test.ldf', + checksumType: LinChecksumType.CLASSIC + } + + const result = parseLinData([msg]) + console.log(result) + expect(result['lin.test.ldf.signals.Motor1LinError']).toBeDefined() + expect(result['lin.test.ldf.signals.Motor1LinError'][0][1]).toBe(1) + const buf = Buffer.from([0xf5, 0xf1, 0, 4]).readUInt32BE() + expect(result['lin.test.ldf.signals.Motor1Position'][0][1]).toBe(buf) + }) + + test('parse byte array signal - Motor1Position', () => { + const msg: LinMsg = { + name: 'MotorControl', + frameId: 51, // Motor1State_Cycl frame + data: Buffer.from([1, 0]), + direction: LinDirection.RECV, + database: 'test.ldf', + checksumType: LinChecksumType.CLASSIC + } + + const result = parseLinData([msg]) + expect(result['lin.test.ldf.signals.MotorDirection']).toBeDefined() + expect(result['lin.test.ldf.signals.MotorDirection'][0][1]).toBe(1) + }) + + test('parse bit signal - Motor1LinError', () => { + const msg: LinMsg = { + name: 'MotorControl', + frameId: 51, // Motor1State_Cycl frame + data: Buffer.from([0, 0xd0]), // Error bit set + direction: LinDirection.RECV, + database: 'test.ldf', + checksumType: LinChecksumType.CLASSIC + } + + const result = parseLinData([msg]) + expect(result['lin.test.ldf.signals.MotorSelection']).toBeDefined() + expect(result['lin.test.ldf.signals.MotorSelection'][0][1]).toBe(0xd) + expect(result['lin.test.ldf.signals.MotorDirection']).toBeDefined() + expect(result['lin.test.ldf.signals.MotorDirection'][0][1]).toBe(0) + }) + + // test('parse multiple signals from one frame', () => { + // const msg: LinMsg = { + // frameId: 51, // Motor1State_Cycl frame + // data: Buffer.from([0x28, 0x12, 0x34, 0x56, 0x78, 0x01]), + // direction: LinDirection.RECV, + // database: 'test.ldf', + // checksumType: LinChecksumType.CLASSIC + // } + + // const result = parseLinData([msg]) + + // // Check temperature + // expect(result['lin.test.ldf.signals.Motor1Temp'][0].val).toBe(0x28) + + // // Check position + // expect(result['lin.test.ldf.signals.Motor1Position'][0].val).toBe(0x78563412) + + // // Check error bit + // expect(result['lin.test.ldf.signals.Motor1LinError'][0].val).toBe(1) + // }) + + // test('parse signals with non-byte-aligned offsets', () => { + // // Test using MotorControl frame which has signals with various bit offsets + // const msg: LinMsg = { + // frameId: 45, // MotorControl frame + // data: Buffer.from([0x05, 0x20]), // Direction=1, Speed=2, Selection=2 + // direction: LinDirection.RECV, + // database: 'test.ldf', + // checksumType: LinChecksumType.CLASSIC + // } + + // const result = parseLinData([msg]) + + // expect(result['lin.test.ldf.signals.MotorDirection'][0].val).toBe(1) + // expect(result['lin.test.ldf.signals.MotorSpeed'][0].val).toBe(2) + // expect(result['lin.test.ldf.signals.MotorSelection'][0].val).toBe(2) + // }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/file1.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/file1.ldf new file mode 100644 index 0000000..c01a5ea --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/file1.ldf @@ -0,0 +1,140 @@ +/*******************************************************/ +/* This is the example LDF from LIN 2.2A specification */ +/*******************************************************/ + +// Source: https://lin-cia.org/fileadmin/microsites/lin-cia.org/resources/documents/LIN_2.2A.pdf + +LIN_description_file; +LIN_protocol_version = "2.2"; +LIN_language_version = "2.2"; +LIN_speed = 19.2 kbps; +Channel_name = "DB"; + +Nodes { + Master: CEM, 5 ms, 0.1 ms; + Slaves: LSM, RSM; +} + +Signals { + InternalLightsRequest: 2, 0, CEM, LSM, RSM; + RightIntLightsSwitch: 8, 0, RSM, CEM; + LeftIntLightsSwitch: 8, 0, LSM, CEM; + LSMerror: 1, 0, LSM, CEM; + RSMerror: 1, 0, RSM, CEM; + IntTest: 2, 0, LSM, CEM; +} + +Frames { + CEM_Frm1: 0x01, CEM, 1 { + InternalLightsRequest, 0; + } + LSM_Frm1: 0x02, LSM, 2 { + LeftIntLightsSwitch, 8; + } + LSM_Frm2: 0x03, LSM, 1 { + LSMerror, 0; + IntTest, 1; + } + RSM_Frm1: 0x04, RSM, 2 { + RightIntLightsSwitch, 8; + } + RSM_Frm2: 0x05, RSM, 1 { + RSMerror, 0; + } +} + +Event_triggered_frames { + Node_Status_Event : Collision_resolver, 0x06, RSM_Frm1, LSM_Frm1; +} + +Node_attributes { + RSM { + LIN_protocol = "2.0"; + configured_NAD = 0x20; + product_id = 0x4E4E, 0x4553, 1; + response_error = RSMerror; + P2_min = 150 ms; + ST_min = 50 ms; + configurable_frames { + Node_Status_Event=0x000; CEM_Frm1 = 0x0001; RSM_Frm1 = 0x0002; + RSM_Frm2 = 0x0003; + } + } + LSM { + LIN_protocol = "2.2"; + configured_NAD = 0x21; + initial_NAD = 0x01; + product_id = 0x4A4F, 0x4841; + response_error = LSMerror; + fault_state_signals = IntTest; + P2_min = 150 ms; + ST_min = 50 ms; + configurable_frames { + Node_Status_Event; + CEM_Frm1; + LSM_Frm1; + LSM_Frm2; + } + } +} + +Schedule_tables { + Configuration_Schedule { + AssignNAD {LSM} delay 15 ms; + AssignFrameIdRange {LSM, 0} delay 15 ms; + AssignFrameId {RSM, CEM_Frm1} delay 15 ms; + AssignFrameId {RSM, RSM_Frm1} delay 15 ms; + AssignFrameId {RSM, RSM_Frm2} delay 15 ms; + } + Normal_Schedule { + CEM_Frm1 delay 15 ms; + LSM_Frm2 delay 15 ms; + RSM_Frm2 delay 15 ms; + Node_Status_Event delay 10 ms; + } + MRF_schedule { + MasterReq delay 10 ms; + } + SRF_schedule { + SlaveResp delay 10 ms; + } + Collision_resolver { // Keep timing of other frames if collision + CEM_Frm1 delay 15 ms; + LSM_Frm2 delay 15 ms; + RSM_Frm2 delay 15 ms; + RSM_Frm1 delay 10 ms; // Poll the RSM node + CEM_Frm1 delay 15 ms; + LSM_Frm2 delay 15 ms; + RSM_Frm2 delay 15 ms; + LSM_Frm1 delay 10 ms; // Poll the LSM node + } +} + +Signal_encoding_types { + Dig2Bit { + logical_value, 0, "off"; + logical_value, 1, "on"; + logical_value, 2, "error"; + logical_value, 3, "void"; + } + ErrorEncoding { + logical_value, 0, "OK"; + logical_value, 1, "error"; + } + FaultStateEncoding { + logical_value, 0, "No test result"; + logical_value, 1, "failed"; + logical_value, 2, "passed"; + logical_value, 3, "not used"; + } + LightEncoding { + logical_value, 0, "Off"; + physical_value, 1, 254, 1, 100, "lux"; + logical_value, 255, "error"; + } +} +Signal_representation { + Dig2Bit: InternalLightsRequest; + ErrorEncoding: RSMerror, LSMerror; + LightEncoding: RightIntLightsSwitch, LeftIntLightsSwitch; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/file2.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/file2.ldf new file mode 100644 index 0000000..a0523a0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/file2.ldf @@ -0,0 +1,152 @@ +/*---------GLOBAL DEFINITIONS-----------*/ +LIN_description_file; +LIN_protocol_version = "2.1"; +LIN_language_version = "2.1"; +LIN_speed = 19.2 kbps; +/* ----------NODE DEFINITIONS---------- */ +Nodes { + Master: + Masterboard, /* Master node name */ + 1 ms, /* Time base */ + 0.1 ms; /* Jitter */ + Slaves: + NSUC1500_LIN_HV_LV_LED_DEMO_NODE; +} +/* ----------SIGNAL DEFINITIONS---------- */ +Signals { + /* Signal_name : Size, Init, Publisher, Subscriber(s) */ + s_CtrlMode : 8, 0x40, Masterboard, NSUC1500_LIN_HV_LV_LED_DEMO_NODE; + s_ERR0 : 8, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_ERR1 : 8, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_VDD : 16, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_RED_PN : 16, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_GREEN_PN : 16, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_BLUE_PN : 16, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_HVTempSensor : 16, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_Vcore : 16, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_Vsup : 16, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_LVTempSensor : 16, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_LRE : 1, 0x00, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, Masterboard; + s_ClearErr : 1, 0x00, Masterboard, NSUC1500_LIN_HV_LV_LED_DEMO_NODE; + s_R : 8, 0x00, Masterboard, NSUC1500_LIN_HV_LV_LED_DEMO_NODE; + s_G : 8, 0x00, Masterboard, NSUC1500_LIN_HV_LV_LED_DEMO_NODE; + s_B : 8, 0x00, Masterboard, NSUC1500_LIN_HV_LV_LED_DEMO_NODE; + s_intensity : 8, 0x00, Masterboard, NSUC1500_LIN_HV_LV_LED_DEMO_NODE; + s_NAD : 8, 0x7F, Masterboard, NSUC1500_LIN_HV_LV_LED_DEMO_NODE; +} +/* ----------DIAGNOSTIC SIGNAL DEFINITIONS---------- */ +Diagnostic_signals { + /* MasterReq Reserved Signals */ + MasterReqB0 : 8, 0; + MasterReqB1 : 8, 0; + MasterReqB2 : 8, 0; + MasterReqB3 : 8, 0; + MasterReqB4 : 8, 0; + MasterReqB5 : 8, 0; + MasterReqB6 : 8, 0; + MasterReqB7 : 8, 0; + /* SlaveResp Reserved Signals */ + SlaveRespB0 : 8, 0; + SlaveRespB1 : 8, 0; + SlaveRespB2 : 8, 0; + SlaveRespB3 : 8, 0; + SlaveRespB4 : 8, 0; + SlaveRespB5 : 8, 0; + SlaveRespB6 : 8, 0; + SlaveRespB7 : 8, 0; +} +/* ----------UNCONDITIONAL FRAME DEFINITIONS---------- */ +Frames { + f_Read_1 : 0x01, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, 8 { + s_ERR0 , 0; + s_ERR1 , 8; + s_Vsup , 16; + } + f_Write_2 : 0x02, Masterboard , 8 { + s_ClearErr , 0; + } + f_Write_3 : 0x14, Masterboard , 8 { + s_NAD , 0; + s_CtrlMode , 8; + s_R , 16; + s_G , 24; + s_B , 32; + s_intensity , 40; + } + f_Read_4 : 0x04, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, 8 { + s_HVTempSensor , 0; + s_RED_PN , 16; + s_GREEN_PN , 32; + s_BLUE_PN , 48; + } + f_Read_5 : 0x05, NSUC1500_LIN_HV_LV_LED_DEMO_NODE, 8 { + s_LRE , 0; + s_VDD , 8; + s_LVTempSensor , 24; + s_Vcore , 40; + } +} +/* ----------DIAGNOSTIC FRAME DEFINITIONS---------- */ +Diagnostic_frames { + MasterReq : 0x3C { + MasterReqB0 , 0; + MasterReqB1 , 8; + MasterReqB2 , 16; + MasterReqB3 , 24; + MasterReqB4 , 32; + MasterReqB5 , 40; + MasterReqB6 , 48; + MasterReqB7 , 56; + } + SlaveResp : 0x3D { + SlaveRespB0 , 0; + SlaveRespB1 , 8; + SlaveRespB2 , 16; + SlaveRespB3 , 24; + SlaveRespB4 , 32; + SlaveRespB5 , 40; + SlaveRespB6 , 48; + SlaveRespB7 , 56; + } +} +/* ----------NODE ATTRIBUTE DEFINITIONS---------- */ +Node_attributes { + NSUC1500_LIN_HV_LV_LED_DEMO_NODE { + LIN_protocol = "2.2"; /* Node protocol version */ + configured_NAD = 0x01; /* configured NAD of node */ + initial_NAD = 0x01; /* initial NAD of node */ + product_id = 0x41, 0x2345, 0xAB; /* Product id */ + response_error = s_LRE; /* Response error signal */ + P2_min = 50 ms; /* P2_min */ + ST_min = 0 ms; /* ST_min */ + N_As_timeout = 1000 ms; /* N_As_timeout */ + N_Cr_timeout = 1000 ms; /* N_As_timeout */ + configurable_frames { + f_Read_1; + f_Write_2; + f_Write_3; + f_Read_4; + f_Read_5; + } + } +} +/* ----------SCHEDULE TABLE DEFINITIONS---------- */ +Schedule_tables { + st_all { + f_Read_1 delay 10 ms; + f_Write_2 delay 10 ms; + f_Write_3 delay 10 ms; + f_Read_4 delay 10 ms; + f_Read_5 delay 10 ms; + } + st_test { + f_Read_1 delay 10 ms; + f_Read_4 delay 10 ms; + f_Read_5 delay 10 ms; + } + st_pwm_test { + f_Write_3 delay 10 ms; + } +} + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/kvaser.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/kvaser.test.ts new file mode 100644 index 0000000..2630922 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/kvaser.test.ts @@ -0,0 +1,65 @@ +import { KvaserLin } from '../../src/main/dolin/kvaser' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { LinChecksumType, LinDirection, LinMode } from 'src/main/share/lin' + +const dllPath = path.join(__dirname, '../../resources/lib') +KvaserLin.loadDllPath(dllPath) + +test('kvaser lin get device', () => { + const v = KvaserLin.getValidDevices() + console.log(v) + // equal(v.length, 4) +}) +test('kvaser lin get version', () => { + const v = KvaserLin.getLibVersion() + equal(v, '8.45.724') +}) +describe('toomoss lin master', () => { + let client!: KvaserLin + beforeAll(async () => { + client = new KvaserLin({ + device: { + handle: 0, + label: 'lin1', + id: 'lin1' + }, + id: 'lin1', + vendor: 'kvaser', + name: 'lin1', + baudRate: 19200, + mode: LinMode.MASTER + }) + }) + + test('write frames', async () => { + const w1 = await client.write({ + frameId: 0x2, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + const w2 = client.write({ + frameId: 0x3, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + const w3 = client.write({ + frameId: 0x4, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.RECV, + checksumType: LinChecksumType.CLASSIC + }) + await Promise.all([w1, w2]) + try { + await w3 + } catch (e) { + console.log(e) + } + }) + afterAll(() => { + client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/ldf.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/ldf.test.ts new file mode 100644 index 0000000..f01d69d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/ldf.test.ts @@ -0,0 +1,164 @@ +import { beforeAll, describe, test, expect, it } from 'vitest' +import parse, { LDF } from 'src/renderer/src/database/ldfParse' +import fs from 'fs' +import path from 'path' +import { getFrameData } from 'src/main/share/lin' + +test('ldf parse 2.2', () => { + const ldf = fs.readFileSync(path.join(__dirname, '2.2.ldf'), 'utf-8') + const r = parse(ldf) +}) + +test('ldf parse 2.1', () => { + const ldf = fs.readFileSync(path.join(__dirname, '2.1.ldf'), 'utf-8') + const r = parse(ldf) +}) + +test('ldf parse optional channel name before sections', () => { + const ldf = ` +LIN_description_file; +LIN_protocol_version = "2.1"; +LIN_language_version = "2.1"; +LIN_speed = 19.2 kbps; +Channel_name = "LIN1"; + +Nodes { + Master: MasterNode, 5 ms, 0.1 ms ; + Slaves: SlaveNode ; +} +` + const r = parse(ldf) + expect(r.global.Channel_name).toEqual('LIN1') + expect(r.node.master.nodeName).toEqual('MasterNode') + expect(r.node.salveNode).toEqual(['SlaveNode']) +}) + +test('ldf file1', () => { + const ldf = fs.readFileSync(path.join(__dirname, 'file1.ldf'), 'utf-8') + const r = parse(ldf) + // console.log(r) +}) +test('ldf door', () => { + const ldf = fs.readFileSync(path.join(__dirname, 'Door.ldf'), 'utf-8') + const r = parse(ldf) + // console.log(r) +}) +test('test (2).ldf', () => { + const ldf = fs.readFileSync(path.join(__dirname, 'test (2).ldf'), 'utf-8') + const r = parse(ldf) + // console.log(r) +}) + +test('ldf OpenError', () => { + const ldf = fs.readFileSync(path.join(__dirname, 'OpenError.ldf'), 'utf-8') + const r = parse(ldf) + // console.log(r) +}) +test('BYD_HT&SZ.ldf', () => { + const ldf = fs.readFileSync(path.join(__dirname, 'BYD_HT&SZ.ldf'), 'utf-8') + const r = parse(ldf) + // console.log(r) +}) +test.skip('J2602', () => { + const ldf = fs.readFileSync(path.join(__dirname, 'test.ldf'), 'utf-8') + const r = parse(ldf) + // console.log(r) +}) + +test('ldf CHANGAN_WLK151Z_LIN_1.1', () => { + const ldf = fs.readFileSync(path.join(__dirname, 'CHANGAN_WLK151Z_LIN_1.1.ldf'), 'utf-8') + const r = parse(ldf) + expect(r.signalEncodeTypes['EF_temperature_Encoding'].encodingTypes[0].type).toEqual( + 'physicalValue' + ) + expect( + r.signalEncodeTypes['EF_temperature_Encoding'].encodingTypes[0].physicalValue?.minValue + ).toEqual(0) + expect( + r.signalEncodeTypes['EF_temperature_Encoding'].encodingTypes[0].physicalValue?.maxValue + ).toEqual(254) + expect( + r.signalEncodeTypes['EF_temperature_Encoding'].encodingTypes[0].physicalValue?.scale + ).toEqual(1) + expect( + r.signalEncodeTypes['EF_temperature_Encoding'].encodingTypes[0].physicalValue?.offset + ).toEqual(-50) + expect( + r.signalEncodeTypes['EF_temperature_Encoding'].encodingTypes[0].physicalValue?.textInfo + ).toEqual('T') + + expect(r.signalEncodeTypes['EF_undervoltageError_Encoding'].encodingTypes[0].type).toEqual( + 'logicalValue' + ) + expect( + r.signalEncodeTypes['EF_undervoltageError_Encoding'].encodingTypes[0].logicalValue?.signalValue + ).toEqual(0) + expect( + r.signalEncodeTypes['EF_undervoltageError_Encoding'].encodingTypes[0].logicalValue?.textInfo + ).toEqual('NO ERROR') + + expect(r.signalEncodeTypes['EF_undervoltageError_Encoding'].encodingTypes[1].type).toEqual( + 'logicalValue' + ) + expect( + r.signalEncodeTypes['EF_undervoltageError_Encoding'].encodingTypes[1].logicalValue?.signalValue + ).toEqual(1) + expect( + r.signalEncodeTypes['EF_undervoltageError_Encoding'].encodingTypes[1].logicalValue?.textInfo + ).toEqual('ERROR') + + expect(r.signalEncodeTypes['EF_undervoltageError_Encoding'].encodingTypes[2].type).toEqual( + 'logicalValue' + ) + expect( + r.signalEncodeTypes['EF_undervoltageError_Encoding'].encodingTypes[2].logicalValue?.signalValue + ).toEqual(2) + expect( + r.signalEncodeTypes['EF_undervoltageError_Encoding'].encodingTypes[2].logicalValue?.textInfo + ).toEqual('SNA') +}) + +test('ldf t1', () => { + test + const ldf = fs.readFileSync(path.join(__dirname, 't1.ldf'), 'utf-8') + const r = parse(ldf) + // console.log(r) +}) + +test('ldf 2025', () => { + const ldf = fs.readFileSync(path.join(__dirname, '20250109.ldf'), 'utf-8') + const r = parse(ldf) + // console.log(r) +}) + +describe('signal update', () => { + let ldf: LDF + beforeAll(() => { + const ldfStr = fs.readFileSync(path.join(__dirname, '2.2.ldf'), 'utf-8') + ldf = parse(ldfStr) + }) + it('MotorControl-MotorDirection', () => { + ldf.signals['MotorDirection'].value = 1 + const val = getFrameData(ldf, ldf.frames['MotorControl']) + expect(val).toEqual(Buffer.from([1, 0])) + }) + it('MotorControl-MotorDirection', () => { + ldf.signals['MotorDirection'].value = 0 + ldf.signals['MotorSelection'].value = 0x0d + const val = getFrameData(ldf, ldf.frames['MotorControl']) + expect(val).toEqual(Buffer.from([0, 0xd0])) + }) + it('Motor1State_Cycl', () => { + ldf.signals['Motor1Position'].value = [0xf5, 0xf1, 0, 4] + ldf.signals['Motor1LinError'].value = 1 + const val = getFrameData(ldf, ldf.frames['Motor1State_Cycl']) + + expect(val).toEqual(Buffer.from([5, 0x2, 0x80, 0xf8, 0x7a, 1])) + }) +}) + +test('ldf file2', () => { + const ldf = fs.readFileSync(path.join(__dirname, 'file2.ldf'), 'utf-8') + const r = parse(ldf) + // console.log(r) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/lincable.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/lincable.test.ts new file mode 100644 index 0000000..e8f89d0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/lincable.test.ts @@ -0,0 +1,116 @@ +import { LinCable } from '../../src/main/dolin/ecubus' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test, expect } from 'vitest' +import * as path from 'path' +import { LinChecksumType, LinDirection, LinMode } from 'src/main/share/lin' + +test('lincable get device', async () => { + const v = await LinCable.getValidDevices() + console.log(v) + equal(v.length, 1) +}) + +const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) +describe.skip('lincable lin master', () => { + let client!: LinCable + beforeAll(async () => { + client = new LinCable({ + device: { + handle: 'COM8', + label: 'lin1', + id: 'lin1' + }, + id: 'lin1', + vendor: 'peak', + name: 'lin1', + baudRate: 19200, + mode: LinMode.MASTER + }) + await delay(2000) + }) + test.skip('write frame', async () => { + const t1 = Date.now() + const w1 = await client.write({ + frameId: 0x2, + data: Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + await client.write({ + frameId: 0x3, + data: Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + const t2 = Date.now() + console.log(`write frame time: ${t2 - t1}ms`) + }) + test('read frame', async () => { + const t1 = Date.now() + + const w1 = await client.write({ + frameId: 8, + data: Buffer.from([0x01, 0x02, 0x03, 0x04, 0x5]), + direction: LinDirection.RECV, + checksumType: LinChecksumType.CLASSIC + }) + const t2 = Date.now() + console.log(`read frame time: ${t2 - t1}ms`) + expect(client.read(8)?.data).deep.equal(Buffer.from([0x11, 0x22, 0x33, 0x44, 0x55])) + }) + test.skip('write frames', async () => { + const w1 = client.write({ + frameId: 0x2, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + const w2 = client.write({ + frameId: 0x3, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + await Promise.all([w1, w2]) + console.log(client.read(3)) + }) + afterAll(() => { + client.close() + }) +}) + +describe('lincable lin slave', () => { + let client!: LinCable + beforeAll(async () => { + client = new LinCable({ + device: { + handle: 'COM12', + label: 'lin1', + id: 'lin1' + }, + id: 'lin1', + vendor: 'peak', + name: 'lin1', + baudRate: 19200, + mode: LinMode.SLAVE + }) + await delay(2000) + }) + test('read frame', async () => { + console.log('read frame') + client.setEntry( + 3, + 4, + LinDirection.SEND, + LinChecksumType.ENHANCED, + Buffer.from([0x01, 0x02, 0x03, 0x04]), + 0 + ) + + // await delay(3000) + }) + + afterAll(() => { + // client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/peak.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/peak.test.ts new file mode 100644 index 0000000..e5c618b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/peak.test.ts @@ -0,0 +1,53 @@ +import { PeakLin } from '../../src/main/dolin/peak' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { LinChecksumType, LinDirection, LinMode } from 'src/main/share/lin' + +const dllPath = path.join(__dirname, '../../resources/lib') +PeakLin.loadDllPath(dllPath) + +test('peak lin get device', () => { + const v = PeakLin.getValidDevices() + console.log(v) + equal(v.length, 2) +}) + +const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) +describe('peak lin master', () => { + let client!: PeakLin + beforeAll(async () => { + client = new PeakLin({ + device: { + handle: 1, + label: 'lin1', + id: 'lin1' + }, + id: 'lin1', + vendor: 'peak', + name: 'lin1', + baudRate: 19200, + mode: LinMode.MASTER + }) + }) + + test('write frames', async () => { + const w1 = client.write({ + frameId: 0x2, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + const w2 = client.write({ + frameId: 0x3, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + await Promise.all([w1, w2]) + console.log(client.read(3)) + }) + afterAll(() => { + client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/t1.ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/t1.ldf new file mode 100644 index 0000000..c87c3a7 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/t1.ldf @@ -0,0 +1,142 @@ +// LIN Description File + + + + +LIN_description_file; +LIN_protocol_version = "2.1" ; +LIN_language_version = "2.1" ; +LIN_speed = 19.2 kbps ; + +Nodes{ + Master:AMP,10.0000 ms, 0.1000 ms ; + Slaves:EXV ; +} + +Signals{ + AMP_EXV_PositionRequest: 16, 0, AMP, EXV ; + AMP_EXV_EnableRequest: 1, 0, AMP, EXV ; + AMP_EXV_initRequest: 4, 0, AMP, EXV ; + EXV_ResponseError: 1, 0, EXV, AMP ; + EXV_CurrentInitState: 2, 0, EXV, AMP ; + EXV_RunState: 1, 0, EXV, AMP ; + EXV_FaultState: 5, 0, EXV, AMP ; + EXV_VoltageState: 2, 0, EXV, AMP ; + EXV_CurrentPosition: 16, 0, EXV, AMP ; + EXV_Temperator: 8, 40, EXV, AMP ; + EXV_Voltage: 16, 0, EXV, AMP ; + EXV_Version: 8, 0, EXV, AMP ; +} + +Frames{ + AMP_EXV: 4, AMP, 4{ + AMP_EXV_PositionRequest, 0; + AMP_EXV_EnableRequest, 16; + AMP_EXV_initRequest, 24; + } + EXV_AMP: 3, EXV, 8{ + EXV_ResponseError, 0; + EXV_CurrentInitState, 2; + EXV_RunState, 4; + EXV_FaultState, 8; + EXV_VoltageState, 13; + EXV_CurrentPosition, 16; + EXV_Temperator, 32; + EXV_Voltage, 40; + EXV_Version, 56; + } +} + + + + +Node_attributes { + EXV{ + LIN_protocol = "2.1" ; + configured_NAD = 0x1 ; + initial_NAD = 0x1 ; + product_id = 0x0, 0x0, 0x28 ; + P2_min = 50 ms ; + ST_min = 0 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames{ + EXV_AMP ; + } + } +} + +Schedule_tables { + schedule{ + AMP_EXV delay 40 ms ; + EXV_AMP delay 100 ms ; + } +} +Signal_encoding_types { + AMP_EXV_PositionRequest{ + physical_value, 0, 500, 1, 0, "Step" ; + } + AMP_EXV_EnableRequest{ + logical_value, 0, "EXV_OFF" ; + logical_value, 1, "EXV_ON" ; + } + AMP_EXV_initRequest{ + logical_value, 0, "NO_RQ" ; + logical_value, 1, "START_INIT_SQC" ; + } + EXV_ResponseError{ + logical_value, 0, "No Comm Error" ; + logical_value, 1, "Comm Error Active" ; + } + EXV_CurrentInitState{ + logical_value, 0, "NO_INIT" ; + logical_value, 1, "INIT_IN_PROCESS" ; + logical_value, 2, "INIT_READY" ; + logical_value, 3, "INIT_Error" ; + } + EXV_RunState{ + logical_value, 0, "NO_MOVEMENT" ; + logical_value, 1, "ACT_MOVING" ; + } + EXV_FaultState{ + logical_value, 0, "No Fault" ; + logical_value, 1, "COIL_SHRT" ; + logical_value, 2, "COIL_OPN" ; + logical_value, 3, "OVR_TMP_SHUTDWN" ; + logical_value, 4, "STAT_INDET" ; + logical_value, 5, "Temperature warning" ; + logical_value, 6, "Reserved" ; + } + EXV_VoltageState{ + logical_value, 0, "Voltage Range OK" ; + logical_value, 1, "Over Voltage" ; + logical_value, 2, "Under Voltage" ; + } + EXV_CurrentPosition{ + physical_value, 0, 500, 1, 0, "Step" ; + } + EXV_Temper{ + physical_value, 0, 240, 1, -40, "℃" ; + } + EXV_Volt{ + physical_value, 0, 3000, 0.01, 0, "V" ; + } + + EXV_Version{ + physical_value, 0, 300, 0.01, 0 ; + } +} +Signal_representation { + AMP_EXV_PositionRequest: AMP_EXV_PositionRequest ; + AMP_EXV_EnableRequest: AMP_EXV_EnableRequest ; + AMP_EXV_initRequest: AMP_EXV_initRequest ; + EXV_ResponseError: EXV_ResponseError ; + EXV_CurrentInitState: EXV_CurrentInitState ; + EXV_RunState: EXV_RunState ; + EXV_FaultState: EXV_FaultState ; + EXV_VoltageState: EXV_VoltageState ; + EXV_CurrentPosition: EXV_CurrentPosition ; + EXV_Temper: EXV_Temperator ; + EXV_Volt: EXV_Voltage ; + EXV_Version: EXV_Version ; +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/test (2).ldf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/test (2).ldf new file mode 100644 index 0000000..4059781 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/test (2).ldf @@ -0,0 +1,234 @@ + + +LIN_description_file; +LIN_protocol_version = "2.2"; +LIN_language_version = "2.2"; +LIN_speed = 19.2 kbps; + +Nodes { + Master: DDB, 1 ms, 0 ms ; + Slaves: DDL, TBD ; +} + +Signals { + g01A: 1, 0, DDB, DDL ; + g02A: 1, 0, DDB, DDL ; + g03A: 1, 0, DDB, DDL ; + g04A: 1, 0, DDB, DDL ; + g05A: 1, 0, DDB, DDL ; + g06A: 1, 0, DDB, DDL ; + g07A: 1, 0, DDB, DDL ; + g08A: 1, 0, DDB, DDL ; + g09A: 1, 0, DDB, DDL ; + g10A: 1, 0, DDB, DDL ; + g11A: 1, 0, DDB, DDL ; + g12A: 1, 0, DDB, DDL ; + g13A: 1, 0, DDB, DDL ; + g14A: 1, 0, DDB, DDL ; + gB: 8, 0, DDB, DDL ; + gC: 8, 0, DDB, DDL ; + g01F: 1, 0, DDB, DDL ; + g02F: 1, 0, DDB, DDL ; + g03F: 1, 0, DDB, DDL ; + g04F: 1, 0, DDB, DDL ; + g05F: 1, 0, DDB, DDL ; + g06F: 1, 0, DDB, DDL ; + g07F: 1, 0, DDB, DDL ; + g08F: 1, 0, DDB, DDL ; + g09F: 1, 0, DDB, DDL ; + g10F: 1, 0, DDB, DDL ; + g11F: 1, 0, DDB, DDL ; + g12F: 1, 0, DDB, DDL ; + g13F: 1, 0, DDB, DDL ; + g14F: 1, 0, DDB, DDL ; + gFad: 7, 0, DDB, DDL ; + g12F: 1, 0, DDB, DDL ; + g13F: 1, 0, DDB, DDL ; + g14F: 1, 0, DDB, DDL ; + gFlngM: 3, 0, DDB, DDL ; + gMus: 4, 0, DDB ; +} + +Diagnostic_signals { + MasterReqB0: 8, 0 ; + MasterReqB1: 8, 0 ; + MasterReqB2: 8, 0 ; + MasterReqB3: 8, 0 ; + MasterReqB4: 8, 0 ; + MasterReqB5: 8, 0 ; + MasterReqB6: 8, 0 ; + MasterReqB7: 8, 0 ; + SlaveRespB0: 8, 0 ; + SlaveRespB1: 8, 0 ; + SlaveRespB2: 8, 0 ; + SlaveRespB3: 8, 0 ; + SlaveRespB4: 8, 0 ; + SlaveRespB5: 8, 0 ; + SlaveRespB6: 8, 0 ; + SlaveRespB7: 8, 0 ; +} + + + +Frames { + DDB_DDL: 42, DDB, 8 { + g01A, 0 ; + g02A, 1 ; + g03A, 2 ; + g04A, 3 ; + g05A, 4 ; + g06A, 5 ; + g07A, 6 ; + g08A, 7 ; + g09A, 8 ; + g10A, 9 ; + g11A, 10 ; + g12A, 11 ; + g13A, 12 ; + g14A, 13 ; + gB, 16 ; + gC, 24 ; + g01F, 32 ; + g02F, 33 ; + g03F, 34 ; + g04F, 35 ; + g05F, 36 ; + g06F, 37 ; + g07F, 38 ; + g08F, 39 ; + g09F, 40 ; + g10F, 41 ; + g11F, 42 ; + g12F, 43 ; + g13F, 44 ; + g14F, 45 ; + gFad, 46 ; + g12F, 53 ; + g13F, 54 ; + g14F, 55 ; + gFlngM, 56 ; + } + TBD: 2, DDB, 8 { + } +} + + + +Diagnostic_frames { + MasterReq: 0x3c { + MasterReqB0, 0 ; + MasterReqB1, 8 ; + MasterReqB2, 16 ; + MasterReqB3, 24 ; + MasterReqB4, 32 ; + MasterReqB5, 40 ; + MasterReqB6, 48 ; + MasterReqB7, 56 ; + } + SlaveResp: 0x3d { + SlaveRespB0, 0 ; + SlaveRespB1, 8 ; + SlaveRespB2, 16 ; + SlaveRespB3, 24 ; + SlaveRespB4, 32 ; + SlaveRespB5, 40 ; + SlaveRespB6, 48 ; + SlaveRespB7, 56 ; + } +} + +Node_attributes { + DDL{ + LIN_protocol = "2.2" ; + configured_NAD = 0xFF ; + initial_NAD = 0xFF ; + product_id = 0x0, 0x0, 255 ; + P2_min = 50 ms ; + ST_min = 0 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + configurable_frames { + DDB_DDL ; + } + } + TBD{ + LIN_protocol = "2.2" ; + configured_NAD = 0xFF ; + initial_NAD = 0xFF ; + product_id = 0x0, 0x0, 255 ; + P2_min = 50 ms ; + ST_min = 0 ms ; + N_As_timeout = 1000 ms ; + N_Cr_timeout = 1000 ms ; + } +} + +Schedule_tables { + New_ScheduleTable { + DDB_DDL delay 10 ms ; + TBD delay 10 ms ; + DDB_DDL delay 10 ms ; + TBD delay 10 ms ; + DDB_DDL delay 10 ms ; + TBD delay 10 ms ; + DDB_DDL delay 10 ms ; + TBD delay 10 ms ; + DDB_DDL delay 10 ms ; + TBD delay 10 ms ; + } +} + + +Signal_encoding_types { + gB_Encoding { + physical_value, 0, 100, 1, 0, "%" ; + } + gC_Encoding { + physical_value, 0, 255, 1, 0 ; + } + gFlngM_Encoding { + logical_value, 0, "Nt" ; + logical_value, 1, "m1" ; + logical_value, 2, "m2" ; + logical_value, 3, "m3" ; + logical_value, 4, "m4" ; + logical_value, 5, "m5" ; + logical_value, 6, "m6" ; + logical_value, 7, "m7" ; + } + gFlngM_Encoding { + logical_value, 0, "inactive" ; + logical_value, 1, "0%" ; + logical_value, 2, "10%" ; + logical_value, 3, "20%" ; + logical_value, 4, "30%" ; + logical_value, 5, "40%" ; + logical_value, 6, "50%" ; + logical_value, 7, "60%" ; + logical_value, 8, " 70%" ; + logical_value, 9, "80%" ; + logical_value, 10, "90%" ; + logical_value, 11, "100%" ; + logical_value, 12, "Reserved" ; + logical_value, 13, "Reserved" ; + logical_value, 14, "Reserved" ; + logical_value, 15, "Reserved" ; + } + YGHE { + physical_value, 0, 127, 1, 0 ; + } + notACTIVE { + logical_value, 0, "Nt" ; + logical_value, 1, "A" ; + } +} + +Signal_representation { + gB_Encoding: gB ; + gC_Encoding: gC ; + gFlngM_Encoding: gFlngM ; + gMus_Encoding: gMus ; + YGHE: gFad ; + notACTIVE: g01A, g02A, g03A, g04A, g05A, g06A, g07A, g08A, g09A, g10A, g11A, g12A, g13Au, g14A, g01F, g02F, g03F, g04F, g05F, g06F, g07Fa, g08F, g09F, g10F, g11F, g12F, g13F, g14F, g12F, g13F, g14F ; +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/testLinTmp.txt b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/testLinTmp.txt new file mode 100644 index 0000000..1321d39 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/testLinTmp.txt @@ -0,0 +1,78 @@ +/* COPY to index.ts */ +/* eslint-disable no-var */ +import { Command, program } from 'commander' +import { version } from '../../package.json' +import seqMain from './seq' +import path from 'path' +import fsP from 'fs/promises' +import fs from 'fs' +import { DataSet } from 'src/preload/data' +import { Logger, transports } from 'winston' +import { exit } from 'process' +import { format } from 'winston' +import { createLogs } from 'src/main/log' +import Transport from 'winston-transport' +import colors from 'colors' +import { CanMessage } from 'src/main/share/can' +import { ServiceItem } from 'src/main/share/uds' +import vm from 'vm' +import pnpmScript from '../../resources/bin/pnpm/pnpm.cjs?asset&asarUnpack' +import glob from 'glob' +import testMain from './test' +import { TestEvent } from 'node:test/reporters' +import { ToomossLin } from 'src/main/dolin/toomoss' +import { LinChecksumType, LinDirection, LinMode } from 'src/main/share/lin' +import 'src/main/dolin' + + + +const client= new ToomossLin({ + device: { + handle: '1417675180:0', + label: 'lin1', + id: 'lin1' + }, + id: 'lin1', + vendor: 'toomoss', + name: 'lin1', + baudRate: 19200, + mode: LinMode.MASTER +}) + + + + +async function test(){ + // await client.write({ + // frameId: 0x0, + // data: Buffer.from([0x01, 0x22, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]), + // direction: LinDirection.SEND, + // checksumType: LinChecksumType.CLASSIC + // }) + for(let i = 0; i < 10; i++){ + await client.write({ + frameId: 0x3, + data: Buffer.from([0x01, 0x22, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + } + await client.write({ + frameId: 0x4, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.RECV, + checksumType: LinChecksumType.CLASSIC + }) + // return new Promise((resolve, reject) => { + // setTimeout(() => { + // resolve(null) + // }, 5000) + // }) +} + +test().catch((e)=>{ + console.log(e) +}).finally(()=>{ + client.close() + exit(0) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/toomoss.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/toomoss.test.ts new file mode 100644 index 0000000..0e882b7 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/toomoss.test.ts @@ -0,0 +1,50 @@ +import { ToomossLin } from '../../src/main/dolin/toomoss' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { LinChecksumType, LinDirection, LinMode } from 'src/main/share/lin' + +const dllPath = path.join(__dirname, '../../resources/lib') +ToomossLin.loadDllPath(dllPath) + +test('toomoss lin get device', () => { + const v = ToomossLin.getValidDevices() + equal(v.length, 4) +}) + +describe('toomoss lin master', () => { + let client!: ToomossLin + beforeAll(async () => { + client = new ToomossLin({ + device: { + handle: 1, + label: 'lin1', + id: 'lin1' + }, + id: 'lin1', + vendor: 'peak', + name: 'lin1', + baudRate: 19200, + mode: LinMode.MASTER + }) + }) + + test('write frames', async () => { + const w1 = await client.write({ + frameId: 0x2, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + const w2 = client.write({ + frameId: 0x3, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + await Promise.all([w1, w2]) + }) + afterAll(() => { + client.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/vector.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/vector.test.ts new file mode 100644 index 0000000..752c0b8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/dolin/vector.test.ts @@ -0,0 +1,61 @@ +import { VectorLin } from '../../src/main/dolin/vector' +import { equal, deepEqual } from 'assert' +import { describe, it, beforeAll, afterAll, test } from 'vitest' +import * as path from 'path' +import { LinChecksumType, LinDirection, LinMode } from 'src/main/share/lin' + +const dllPath = path.join(__dirname, '../../resources/lib') +VectorLin.loadDllPath(dllPath) + +test('vector lin get device', () => { + const v = VectorLin.getValidDevices() + // equal(v.length, 4) + console.log(v) +}) + +describe('vector lin master', () => { + let client!: VectorLin + beforeAll(async () => { + client = new VectorLin({ + device: { + handle: '0:0', + label: 'VN1640A Channel 1#LIN', + id: 'VECTOR_0_#LIN' + }, + id: 'lin1', + vendor: 'vector', + name: 'lin1', + baudRate: 19200, + mode: LinMode.MASTER //SLAVE MASTER + }) + }) + + test('write frames', async () => { + const w1 = client.write({ + frameId: 0x2, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.CLASSIC + }) + const w2 = client.write({ + frameId: 0x3, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.SEND, + checksumType: LinChecksumType.ENHANCED + }) + await Promise.all([w1, w2]) + console.log(client.read(0x2)) + console.log(client.read(0x3)) + }) + test('read frame', async () => { + const w1 = client.write({ + frameId: 0x5, + data: Buffer.from([0x01, 0x11, 0x03, 0x04]), + direction: LinDirection.RECV, + checksumType: LinChecksumType.ENHANCED + }) + + await Promise.all([w1]) + // console.log(client.read(3)) + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/encoding/encoding.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/encoding/encoding.test.ts new file mode 100644 index 0000000..c3786e8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/encoding/encoding.test.ts @@ -0,0 +1,199 @@ +import { describe, test, expect } from 'vitest' +import fs from 'fs' +import path from 'path' +import iconv from 'iconv-lite' + +/** + * Check if a buffer contains valid UTF-8 encoded text + */ +function isValidUtf8(buffer: Buffer): boolean { + try { + const text = buffer.toString('utf-8') + // Check for replacement character which indicates invalid UTF-8 + if (text.includes('\uFFFD')) { + return false + } + // Re-encode and compare to detect invalid sequences + const reEncoded = Buffer.from(text, 'utf-8') + return buffer.equals(reEncoded) + } catch { + return false + } +} + +/** + * Detect and decode file content with proper encoding + * Tries UTF-8 first, then falls back to GBK/GB2312 for Chinese encoding + */ +function decodeFileContent(buffer: Buffer): string { + // Check for BOM markers + if (buffer[0] === 0xef && buffer[1] === 0xbb && buffer[2] === 0xbf) { + // UTF-8 BOM + return buffer.toString('utf-8') + } + if (buffer[0] === 0xff && buffer[1] === 0xfe) { + // UTF-16 LE BOM + return iconv.decode(buffer, 'utf-16le') + } + if (buffer[0] === 0xfe && buffer[1] === 0xff) { + // UTF-16 BE BOM + return iconv.decode(buffer, 'utf-16be') + } + + // Try UTF-8 first + if (isValidUtf8(buffer)) { + return buffer.toString('utf-8') + } + + // Fall back to GBK (which is a superset of GB2312) for Chinese encoding + return iconv.decode(buffer, 'gbk') +} + +describe('Encoding Detection Tests', () => { + const testDir = path.join(__dirname) + + // Sample DBC content with Chinese characters + const dbcContent = `VERSION "" + +NS_ : + +BS_: + +BU_: 发动机控制单元 变速箱控制单元 + +BO_ 256 发动机状态: 8 发动机控制单元 + SG_ 发动机转速 : 0|16@1+ (0.25,0) [0|16383.5] "rpm" Vector__XXX + SG_ 冷却液温度 : 16|8@1+ (1,-40) [-40|215] "°C" Vector__XXX + +CM_ BU_ 发动机控制单元 "这是发动机控制单元的描述"; +CM_ BO_ 256 "发动机状态消息"; +CM_ SG_ 256 发动机转速 "发动机转速信号"; +` + + test('should correctly decode UTF-8 encoded file', () => { + // Create UTF-8 encoded buffer + const utf8Buffer = Buffer.from(dbcContent, 'utf-8') + + const decoded = decodeFileContent(utf8Buffer) + expect(decoded).toContain('发动机控制单元') + expect(decoded).toContain('变速箱控制单元') + expect(decoded).toContain('发动机转速') + expect(decoded).toContain('冷却液温度') + }) + + test('should correctly decode GBK encoded file', () => { + // Create GBK encoded buffer + const gbkBuffer = iconv.encode(dbcContent, 'gbk') + + const decoded = decodeFileContent(gbkBuffer) + expect(decoded).toContain('发动机控制单元') + expect(decoded).toContain('变速箱控制单元') + expect(decoded).toContain('发动机转速') + expect(decoded).toContain('冷却液温度') + }) + + test('should correctly decode GB2312 encoded file', () => { + // Create GB2312 encoded buffer (subset of GBK) + const gb2312Buffer = iconv.encode(dbcContent, 'gb2312') + + const decoded = decodeFileContent(gb2312Buffer) + expect(decoded).toContain('发动机控制单元') + expect(decoded).toContain('变速箱控制单元') + expect(decoded).toContain('发动机转速') + expect(decoded).toContain('冷却液温度') + }) + + test('should correctly decode UTF-8 with BOM', () => { + // Create UTF-8 with BOM + const bom = Buffer.from([0xef, 0xbb, 0xbf]) + const content = Buffer.from(dbcContent, 'utf-8') + const utf8BomBuffer = Buffer.concat([bom, content]) + + const decoded = decodeFileContent(utf8BomBuffer) + expect(decoded).toContain('发动机控制单元') + }) + + test('should correctly decode UTF-16 LE with BOM', () => { + // Create UTF-16 LE with BOM (manually add BOM as iconv-lite doesn't add it) + const bom = Buffer.from([0xff, 0xfe]) + const content = iconv.encode(dbcContent, 'utf-16le') + const utf16leBuffer = Buffer.concat([bom, content]) + + const decoded = decodeFileContent(utf16leBuffer) + expect(decoded).toContain('发动机控制单元') + }) + + test('should correctly decode ASCII-only content', () => { + const asciiContent = `VERSION "" +NS_ : +BS_: +BU_: ECU1 ECU2 +BO_ 256 EngineStatus: 8 ECU1 + SG_ EngineRPM : 0|16@1+ (0.25,0) [0|16383.5] "rpm" Vector__XXX +` + const asciiBuffer = Buffer.from(asciiContent, 'utf-8') + + const decoded = decodeFileContent(asciiBuffer) + expect(decoded).toContain('ECU1') + expect(decoded).toContain('EngineRPM') + }) + + test('isValidUtf8 should return true for valid UTF-8', () => { + const validUtf8 = Buffer.from('Hello 世界', 'utf-8') + expect(isValidUtf8(validUtf8)).toBe(true) + }) + + test('isValidUtf8 should return false for GBK encoded Chinese', () => { + const gbkBuffer = iconv.encode('Hello 世界', 'gbk') + expect(isValidUtf8(gbkBuffer)).toBe(false) + }) + + test('should handle mixed content with special characters', () => { + const mixedContent = `VERSION "" +CM_ "温度单位: °C, 压力单位: kPa, 电压: μV"; +` + // Test UTF-8 + const utf8Buffer = Buffer.from(mixedContent, 'utf-8') + let decoded = decodeFileContent(utf8Buffer) + expect(decoded).toContain('温度单位') + expect(decoded).toContain('°C') + + // Test GBK + const gbkBuffer = iconv.encode(mixedContent, 'gbk') + decoded = decodeFileContent(gbkBuffer) + expect(decoded).toContain('温度单位') + }) + + test('should read and decode GBK test file', () => { + // Create a GBK encoded test file + const gbkFilePath = path.join(testDir, 'test_gbk.dbc') + const gbkBuffer = iconv.encode(dbcContent, 'gbk') + fs.writeFileSync(gbkFilePath, gbkBuffer) + + // Read and decode + const fileBuffer = fs.readFileSync(gbkFilePath) + const decoded = decodeFileContent(fileBuffer) + + expect(decoded).toContain('发动机控制单元') + expect(decoded).toContain('冷却液温度') + + // Cleanup + fs.unlinkSync(gbkFilePath) + }) + + test('should read and decode UTF-8 test file', () => { + // Create a UTF-8 encoded test file + const utf8FilePath = path.join(testDir, 'test_utf8.dbc') + fs.writeFileSync(utf8FilePath, dbcContent, 'utf-8') + + // Read and decode + const fileBuffer = fs.readFileSync(utf8FilePath) + const decoded = decodeFileContent(fileBuffer) + + expect(decoded).toContain('发动机控制单元') + expect(decoded).toContain('冷却液温度') + + // Cleanup + fs.unlinkSync(utf8FilePath) + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/ldf/syncNodeProtocol.spec.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/ldf/syncNodeProtocol.spec.ts new file mode 100644 index 0000000..9822e30 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/ldf/syncNodeProtocol.spec.ts @@ -0,0 +1,68 @@ +import { describe, expect, it } from 'vitest' +import { LDF, NodeAttrDef } from '../../src/renderer/src/database/ldfParse' +import { + getNodeProtocolSyncDecision, + getNodesNeedingProtocolSync, + hasCustomNodeProtocols, + syncAllNodeProtocols +} from '../../src/renderer/src/database/ldf/syncNodeProtocol' + +function makeLdf(protocols: Record): LDF { + const nodeAttrs: Record = {} + for (const [name, LIN_protocol] of Object.entries(protocols)) { + nodeAttrs[name] = { LIN_protocol } as NodeAttrDef + } + return { nodeAttrs } as LDF +} + +describe('syncNodeProtocol', () => { + it('lists nodes whose Protocol differs from the target version', () => { + const ldf = makeLdf({ Motor1: '2.1', Motor2: '2.2', Motor3: '' }) + expect(getNodesNeedingProtocolSync(ldf, '2.2').sort()).toEqual(['Motor1', 'Motor3']) + expect(getNodesNeedingProtocolSync(ldf, '2.1')).toEqual(['Motor2', 'Motor3']) + }) + + it('treats empty nodeAttrs as nothing to sync', () => { + expect(getNodesNeedingProtocolSync({ nodeAttrs: {} } as LDF, '2.2')).toEqual([]) + expect(getNodeProtocolSyncDecision({ nodeAttrs: {} } as LDF, '2.2', '2.1')).toBe('none') + }) + + it('detects nodes customized away from the previous global version', () => { + expect(hasCustomNodeProtocols(makeLdf({ Motor1: '2.1', Motor2: '2.1' }), '2.1')).toBe(false) + expect(hasCustomNodeProtocols(makeLdf({ Motor1: '2.1', Motor2: '' }), '2.1')).toBe(false) + expect(hasCustomNodeProtocols(makeLdf({ Motor1: '2.1', Motor2: '2.2' }), '2.1')).toBe(true) + }) + + it('auto-syncs when every node still follows the previous global version', () => { + const ldf = makeLdf({ Motor1: '2.1', Motor2: '2.1' }) + expect(getNodeProtocolSyncDecision(ldf, '2.2', '2.1')).toBe('auto') + }) + + it('auto-syncs empty Protocol values together with matching nodes', () => { + const ldf = makeLdf({ Motor1: '2.1', Motor2: '' }) + expect(getNodeProtocolSyncDecision(ldf, '2.2', '2.1')).toBe('auto') + }) + + it('asks for confirmation when a node Protocol was customized', () => { + const ldf = makeLdf({ Motor1: '2.1', Motor2: '2.0' }) + expect(getNodeProtocolSyncDecision(ldf, '2.2', '2.1')).toBe('confirm') + }) + + it('does nothing when every node already matches the new version', () => { + const ldf = makeLdf({ Motor1: '2.2', Motor2: '2.2' }) + expect(getNodeProtocolSyncDecision(ldf, '2.2', '2.1')).toBe('none') + }) + + it('does nothing when the new version is empty', () => { + const ldf = makeLdf({ Motor1: '2.1' }) + expect(getNodeProtocolSyncDecision(ldf, '', '2.1')).toBe('none') + }) + + it('writes the new version onto every node Protocol', () => { + const ldf = makeLdf({ Motor1: '2.1', Motor2: '2.0', Motor3: '' }) + syncAllNodeProtocols(ldf, '2.2') + expect(ldf.nodeAttrs.Motor1.LIN_protocol).toBe('2.2') + expect(ldf.nodeAttrs.Motor2.LIN_protocol).toBe('2.2') + expect(ldf.nodeAttrs.Motor3.LIN_protocol).toBe('2.2') + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1.pdx b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1.pdx new file mode 100644 index 0000000..0b0d845 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1.pdx differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/Ecu.jpg b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/Ecu.jpg new file mode 100644 index 0000000..2af0ed3 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/Ecu.jpg differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/IEEE_802_3_DIS_2015.odx-cs b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/IEEE_802_3_DIS_2015.odx-cs new file mode 100644 index 0000000..fe806e9 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/IEEE_802_3_DIS_2015.odx-cs @@ -0,0 +1,40 @@ + + + + IEEE_802_3_DIS_2015 + IEEE 802.3 (DIS 2015) + +

Physical Layer

+

Based on ISO 22900-2 DIS dated 2015-06-16

+
+ + en-US + + + + 1.0.0 + release + 2016-04-19T09:43:10+02:00 + MDF2ODX 1.0 2016-03-02 + + + Initial generation from MDF + + + + + + + + Vector_Informatik + Vector Informatik + + + Generator + PDG + + + + +
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_11898_2_DWCAN.odx-cs b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_11898_2_DWCAN.odx-cs new file mode 100644 index 0000000..4ac3b40 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_11898_2_DWCAN.odx-cs @@ -0,0 +1,307 @@ + + + + ISO_11898_2_DWCAN + ISO 11898-2 DWCAN + + en-UK + + + + 1.0.0 + Release + 2009-04-17T00:00:00 + + + No changes + Official version + + + + + + + + ISO + International Organization for Standardization (ISO) + + + Joint_COMPARAM_Group + Joint COMPARAM-Group +
Arnikastrasse 2
+ 85635 + Hoehenkirchen + +49 8102 895317 + +49 8102 895310 + info@asam.net +
+
+ + + + + ISO_22900_2 + ISO 22900-2 + 2.2.0 + Release + 2009-01-27T00:00:00 + ISO + + + + + ISO_22901_1 + ISO 22901-1 + 2.2.0 + Release + 2008-11-06T00:00:00 + ISO + + + + +
+
+ + + CP_Baudrate + CP_Baudrate + +

Represents the desired baud rate.

+

If the desired baud rate cannot be achieved within the tolerance of the protocol, the interface will remain at the previous baud rate.

+
+ 500000 + +
+ + CP_BitSamplePoint + CP_BitSamplePoint + +

This sets the desired bit sample point as a percentage of the bit time.

+
+ 80 + +
+ + CP_CanBaudrateRecord + CP_CanBaudrateRecord + +

List of baud rates to use during an OBD CAN initialization sequence

+
+ 0007A1200003D090 + +
+ + CP_ListenOnly + CP_ListenOnly + +

Enable a Listen Only mode on the Com Logical Link

+

This will cause the link to no longer acknowledge received frames on the CAN Network.

+
+ Disabled + +
+ + CP_SamplesPerBit + CP_SamplesPerBit + +

Number of samples per bit

+
+ 1-Sample + +
+ + CP_SyncJumpWidth + CP_SyncJumpWidth + +

This sets the desired synchronization jump width as a percentage of the bit time.

+
+ 15 + +
+ + CP_TerminationType + CP_TerminationType + +

CAN termination settings

+

This ComParam can be used to manually change the termination being used on the vehicle bus line.

+
+ No termination + +
+
+ + + IDENTICAL_BYTEFIELD_0_48_END_OF_PDU + IDENTICAL_BYTEFIELD_0_48_END_OF_PDU + + IDENTICAL + + + 48 + 0 + + + + + IDENTICAL_UINT32_Baud + IDENTICAL_UINT32_Baud + + IDENTICAL + + + 32 + + + + + + IDENTICAL_UINT7_0_100_PerCent + IDENTICAL_UINT7_0_100_PerCent + + IDENTICAL + + + 32 + + + + 0 + 100 + + + + + TEXTTABLE_UINT1_Disabled_Enabled + TEXTTABLE_UINT1_Disabled_Enabled + + TEXTTABLE + + + + 0 + + Disabled + + + + 1 + + Enabled + + + + + + + 32 + + + + 0 + 1 + + + + TEXTTABLE_UINT1_SamplesPerBit + TEXTTABLE_UINT1_SamplesPerBit + + TEXTTABLE + + + + +

1 sample per bit

+
+ 0 + + 1-Sample + +
+ + +

3 samples per bit

+
+ 1 + + 3-Sample + +
+
+
+
+ + 32 + + + + 0 + 1 + +
+ + TEXTTABLE_UINT3_0_4_TerminationType + TEXTTABLE_UINT3_0_4_TerminationType + + TEXTTABLE + + + + 0 + + No termination + + + + 1 + + AC termination + + + + 2 + + 60 Ohm termination + + + + 3 + + 120 Ohm termination + + + + 4 + + SWCAN termination + + + + + + + 32 + + + + 0 + 4 + + +
+ + + + Baud + Baud + Bd + + + PerCent + Per Cent + % + + + +
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_11898_3_DWFTCAN.odx-cs b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_11898_3_DWFTCAN.odx-cs new file mode 100644 index 0000000..4bef59b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_11898_3_DWFTCAN.odx-cs @@ -0,0 +1,286 @@ + + + + ISO_11898_3_DWFTCAN + ISO 11898-3 DWFTCAN + + en-UK + + + + 1.0.0 + Release + 2009-04-17T00:00:00 + + + No changes + Official version + + + + + + + + ISO + International Organization for Standardization (ISO) + + + Joint_COMPARAM_Group + Joint COMPARAM-Group +
Arnikastrasse 2
+ 85635 + Hoehenkirchen + +49 8102 895317 + +49 8102 895310 + info@asam.net +
+
+ + + + + ISO_22900_2 + ISO 22900-2 + 2.2.0 + Release + 2009-01-27T00:00:00 + ISO + + + + + ISO_22901_1 + ISO 22901-1 + 2.2.0 + Release + 2008-11-06T00:00:00 + ISO + + + + +
+
+ + + CP_Baudrate + CP_Baudrate + +

Represents the desired baud rate.

+

If the desired baud rate cannot be achieved within the tolerance of the protocol, the interface will remain at the previous baud rate.

+
+ 125000 + +
+ + CP_BitSamplePoint + CP_BitSamplePoint + +

This sets the desired bit sample point as a percentage of the bit time.

+
+ 80 + +
+ + CP_ListenOnly + CP_ListenOnly + +

Enable a Listen Only mode on the Com Logical Link

+

This will cause the link to no longer acknowledge received frames on the CAN Network.

+
+ Disabled + +
+ + CP_SamplesPerBit + CP_SamplesPerBit + +

Number of samples per bit

+
+ 1-Sample + +
+ + CP_SyncJumpWidth + CP_SyncJumpWidth + +

This sets the desired synchronization jump width as a percentage of the bit time.

+
+ 15 + +
+ + CP_TerminationType + CP_TerminationType + +

CAN termination settings

+

This ComParam can be used to manually change the termination being used on the vehicle bus line.

+
+ No termination + +
+
+ + + IDENTICAL_UINT32_Baud + IDENTICAL_UINT32_Baud + + IDENTICAL + + + 32 + + + + + + IDENTICAL_UINT7_0_100_PerCent + IDENTICAL_UINT7_0_100_PerCent + + IDENTICAL + + + 32 + + + + 0 + 100 + + + + + TEXTTABLE_UINT1_Disabled_Enabled + TEXTTABLE_UINT1_Disabled_Enabled + + TEXTTABLE + + + + 0 + + Disabled + + + + 1 + + Enabled + + + + + + + 32 + + + + 0 + 1 + + + + TEXTTABLE_UINT1_SamplesPerBit + TEXTTABLE_UINT1_SamplesPerBit + + TEXTTABLE + + + + +

1 sample per bit

+
+ 0 + + 1-Sample + +
+ + +

3 samples per bit

+
+ 1 + + 3-Sample + +
+
+
+
+ + 32 + + + + 0 + 1 + +
+ + TEXTTABLE_UINT3_0_4_TerminationType + TEXTTABLE_UINT3_0_4_TerminationType + + TEXTTABLE + + + + 0 + + No termination + + + + 1 + + AC termination + + + + 2 + + 60 Ohm termination + + + + 3 + + 120 Ohm termination + + + + 4 + + SWCAN termination + + + + + + + 32 + + + + 0 + 4 + + +
+ + + + Baud + Baud + Bd + + + PerCent + Per Cent + % + + + +
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_13400_2_DIS_2015.odx-cs b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_13400_2_DIS_2015.odx-cs new file mode 100644 index 0000000..62b80da --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_13400_2_DIS_2015.odx-cs @@ -0,0 +1,313 @@ + + + + ISO_13400_2_DIS_2015 + ISO 13400-2 (DIS 2015) + +

Transport Layer

+

Based on ISO 22900-2 DIS dated 2015-06-16

+
+ + en-US + + + + 1.0.0 + release + 2016-04-18T16:37:38+02:00 + MDF2ODX 1.0 2016-03-02 + + + Initial generation from MDF + + + + + + + + Vector_Informatik + Vector Informatik + + + Generator + PDG + + + + + + + CP_DoIPLogicalGatewayAddress + CP_DoIPLogicalGatewayAddress + +

The logical address of the DoIP gateway or the DoIP node. For a DoIP gateway, this address has to be used to reach the target addressed in CP_DoIPLogicalEcuAddress or CP_DoIPLogicalFunctionalAddress. For a DoIP node, the values for CP_DoIPLogicalGatewayAddress and CP_DoIPLogicalEcuAddress are identical. Note: for a DoIP Node, CP_DoIPLogicalGatewayAddress and CP_DoIPLogicalEcuAddress shall be identical.

+
+ 1 + +
+ + CP_DoIPLogicalTesterAddress + CP_DoIPLogicalTesterAddress + +

The logical source address of the Tester.

+
+ 3584 + +
+ + CP_DoIPLogicalFunctionalAddress + CP_DoIPLogicalFunctionalAddress + +

The logical functional target address to address multiple ECUs behind a DoIP gateway. Note: Functional addressing is only possible on a single LogicalLink, which leads to the restriction, that functional addressing is not possible over multiple DoIP gateways or DoIP nodes.

+
+ 58368 + +
+ + CP_DoIPNumberOfRetries + CP_DoIPNumberOfRetries + +

The number of retries to be performed when a certain NACK condition is encountered.

+
+ 0 + +
+ + CP_DoIPDiagnosticAckTimeout + CP_DoIPDiagnosticAckTimeout + +

This timeout specifies the maximum time that the test equipment waits for a confirmation ACK or NACK from the DoIP entity after the last byte of a DoIP Diagnostic request message has been sent. After the timeout has elapsed the request must be considered lost and the request may be repeated (see CP_RepeatReqCountTrans). (Corresponds to A_DoIP_Diagnostic_Message).

+
+ 2000000 + +
+ + CP_DoIPRetryPeriod + CP_DoIPRetryPeriod + +

The period between retries, performed when a certain NACK condition is encountered.

+
+ 1000000 + +
+ + CP_DoIPRoutingActivationTimeout + CP_DoIPRoutingActivationTimeout + +

This ComParam is used to configure the timeout value for a DoIP Routing Activation request. NOTE: This timing parameter is based on the time it takes for a DoIP entity to perform an alive check on all its open DoIP sockets. It takes into account the Routing Activation timing, but not the MVCI TCP/IP stack related timings, which heavily depend on the underlying operating system and are out of control of the MVCI in regard of their timing behaviour (such as the Windows TCP/IP stack).

+
+ 1000000 + +
+ + CP_DoIPRoutingActivationType + CP_DoIPRoutingActivationType + +

Specifies the Activation Type sent in the DoIP Routing Activation request. Note: TCP connections shall be shared by multiple ComLogicalLinks that share the same value of CP_DoIPRoutingActivationType. For all ComLogicalLinks with differing values of CP_DoIPRoutingActivationType separate TCP connections (including separate Routing Activations) shall be used.

+
+ 0 + +
+ + CP_RepeatReqCountTrans + CP_RepeatReqCountTrans + +

This ComParam contains a counter to enable a re-transmission of the last request when either a transmit, a receive error, or transport layer timeout is detected. This applies to the transport layer only.

+
+ 0 + +
+ + CP_RequestAddrMode + CP_RequestAddrMode + +

Addressing Mode, physical or functional, to be used for sending a ComPrimitive.

+
+ Physical + +
+
+ + + CP_UniqueRespIdTable + CP_UniqueRespIdTable + +

The purpose of this communication parameter is to provide a table that allows the D-server to map the ECU responses to functional requests to their physical source ECUs.

+
+ + CP_DoIPLogicalEcuAddress + CP_DoIPLogicalEcuAddress + +

The logical target address of the ECU to communicate with.

+
+ 1 + +
+ + CP_DoIPSecondaryLogicalECUResponseAddress + CP_DoIPSecondaryLogicalECUResponseAddress + +

Secondary logical ECU address delivered with ECU responses corresponding to CAN UUDT addressed responses. The special value of 0 is used to indicate that UUDT responses are not used.

+
+ 0 + +
+ + CP_ECULayerShortName + CP_ECULayerShortName + +

This communication parameter is needed by the D-server to set up the correct Access Keys for every received response.

+
+ None + +
+
+
+ + + IDENTICAL_A_UINT32_0x0000_0xFFFF + IDENTICAL_A_UINT32_0x0000_0xFFFF + + IDENTICAL + + + 32 + + + + 0 + 65535 + + + + IDENTICAL_A_UINT32_0x00000000_0xFFFFFFFF + IDENTICAL_A_UINT32_0x00000000_0xFFFFFFFF + + IDENTICAL + + + 32 + + + + 0 + 4294967295 + + + + IDENTICAL_A_UINT32_0x00000000_0xFFFFFFFF_MicroSecond + IDENTICAL_A_UINT32_0x00000000_0xFFFFFFFF_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 4294967295 + + + + + IDENTICAL_A_UINT32_0_255 + IDENTICAL_A_UINT32_0_255 + + IDENTICAL + + + 32 + + + + 0 + 255 + + + + TEXTTABLE_UNIT32_RequestAddrMode + TEXTTABLE_UNIT32_RequestAddrMode + +

+ + + TEXTTABLE + + + + +

Use Physical Addressing for the request

+
+ 1 + + 1 + + + Physical + + + + +

Use Functional Addressing for the request

+
+ 2 + + 2 + + + Functional + +
+ + + + + 32 + + + + + + 0 + 0 + + + 3 + 4294967295 + + + +
+ + IDENTICAL_ASCII_1_128_END_OF_PDU + IDENTICAL_ASCII_1_128_END_OF_PDU + + IDENTICAL + + + 128 + 1 + + + +
+ + + + MicroSecond + Micro-Second + µs + + + + + Time + Time + 1 + + + +
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_14229_5_DIS_2015.odx-cs b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_14229_5_DIS_2015.odx-cs new file mode 100644 index 0000000..dd52fcf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_14229_5_DIS_2015.odx-cs @@ -0,0 +1,1327 @@ + + + + ISO_14229_5_DIS_2015 + ISO 14229-5 (DIS 2015) + +

Application Layer

+

Based on ISO 22900-2 DIS dated 2015-06-16

+
+ + en-US + + + + 1.0.0 + release + 2016-03-02T13:46:57+01:00 + MDF2ODX 1.0 2016-03-01 + + + Initial generation from MDF + + + + + + + + Vector_Informatik + Vector Informatik + + + Generator + PDG + + + + + + + CP_CyclicRespTimeout + CP_CyclicRespTimeout + +

This ComParam is used for ComPrimitives that have a NumRecvCycles set to IS-CYCLIC (-1, infinite). The timer is enabled after the first positive response is received from an ECU. If CP_CyclicRespTimeout = 0, there is no receive timing enabled for the infinite receive ComPrimitive.

+
+ 0 + +
+ + CP_DoIPConnectionCloseDelay + CP_DoIPConnectionCloseDelay + +

Delay time before the Tester closes a TCP connection to a DoIP entity after the last logical link that uses this TCP connection has been disconnected via PDUDisconnect. Note: The Tester will close the TCP connection immediately, if PDUModuleDisconnect is called for a DoIP module using this TCP connection.

+
+ 0 + +
+ + CP_EnablePerformanceTest + CP_EnablePerformanceTest + +

This ComParam (when enabled) will place the tester into a performance measurement mode. Measurements will be collected during a normal ComPrimitive communications session. ComParams such as P1Min, P2Min, Br, Cs will be tested in this mode. Once the testing is disabled, results of the testing will be returned to the client application.

+
+ Disabled + +
+ + CP_Loopback + CP_Loopback + +

Echo Transmitted messages in the receive queue, including periodic messages. Loopback messages shall only be sent after successful transmission of a message. Loopback frames are not subject to message filtering.

+
+ Off + +
+ + CP_ModifyTiming + CP_ModifyTiming + +

This parameter signals the D-PDU API to automatically modify timing parameters based on a response from the ECU. For ISO 14230-2 this would apply to service 0x83/0xC3 with TPI of 1, 2 or 3. For ISO 15765-3 this would apply to service 0x10/0x50. For functional addressing mode, the worst case timing parameter returned by the responding ECUs shall be used. Based on the protocol, the following parameters are modified when a positive ECU response is received: + - CP_P2Max + - CP_P2Min + - CP_P2Star + - CP_P3Min + - CP_P4Min + NOTE: The values returned by an ECU are in a different time resolution than the ComParams to be automatically modified. The values will be reinterpreted from the protocol specified time resolution to the 1us resolution specified in the D-PDU API.

+
+ Disabled + +
+ + CP_NetworkTransmissionTime + CP_NetworkTransmissionTime + +

If the timeout values are used which have been received by the ECU via session control response (0x50), the Network transmission time has to be added to the timeout values. P6 = received P2 + NetworkTransmissionTime (contains delay for both transmission directions). Note: This ComParam is relevant for all protocols except those on CAN (especially Ethernet). For CAN protocols, the ComParam CP_CanTransmissionTime is relevant instead.

+
+ 100000 + +
+ + CP_P2Max_Ecu + CP_P2Max_Ecu + +

Performance requirement for the server to start with the response message after the reception of a request message (indicated via N_USData.ind). This is a performance requirement ComParam.

+
+ 50000 + +
+ + CP_P2Min + CP_P2Min + +

This sets the minimum time between tester request and ECU responses, or two ECU responses. After the request, the interface shall be capable of handling an immediate response (P2_min=0). For subsequent responses, a byte received after P1_MAX shall be considered as the start of the subsequent response. This is a performance requirement ComParam.

+
+ 0 + +
+ + CP_P2Star_Ecu + CP_P2Star_Ecu + +

Performance requirement for the server to start with the response message after the transmission of a negative response message (indicated via N_USData.con) with response code 0x78 (enhanced response timing). This is a performance requirement ComParam.

+
+ 5000000 + +
+ + CP_P3Func + CP_P3Func + +

Minimum time for the client to wait, after the successful transmission of a functionally addressed request message (indicated via N_USData.con), before it can transmit the next functionally addressed request message, in case no response is required, or the requested data is only supported by a subset of the functionally addressed servers.

+
+ 50000 + +
+ + CP_P3Phys + CP_P3Phys + +

Minimum time for the client to wait after the successful transmission of a physically addressed request message (indicated via N_USData.con) with no response required before it can transmit the next physically-addressed request message.

+
+ 50000 + +
+ + CP_P6Max + CP_P6Max + +

Timeout for the client to wait after the successful transmission of a request message (indicated via T_Data.con) for the complete reception of the corresponding response message (indicated via T_Data.ind). If the transport/network layer doesn't support the T_DataSOM.ind interface (e.g. ISO 13400 DoIP), this ComParam shall be used instead of CP_P2Max.

+
+ 1000000 + +
+ + CP_P6Star + CP_P6Star + +

Enhanced timeout for the client to wait after the reception of a negative response message with negative response code 0x78 (indicated via T_Data.ind) for the complete reception of the corresponding response messages (indicated via T_Data.ind). If the transport/network layer doesn't support the T_DataSOM.ind interface (e.g. ISO 13400 DoIP), this ComParam shall be used instead of CP_P2Star.

+
+ 10000000 + +
+ + CP_RC21CompletionTimeout + CP_RC21CompletionTimeout + +

Time period the tester accepts repeated negative responses with response code 0x21 and repeats the same request. Timer is started after reception of first negative response.

+
+ 1300000 + +
+ + CP_RC21Handling + CP_RC21Handling + +

Repetition mode in case of response code 0x7F XX 0x21.

+
+ Disabled + +
+ + CP_RC21RequestTime + CP_RC21RequestTime + +

Time between negative response with response code 0x21 and the retransmission of the same request. If CP_P3Min is greater than CP_RC21RequestTime, the time delay prior to the retransmission of the same request will be CP_P3Min.

+
+ 200000 + +
+ + CP_RC23CompletionTimeout + CP_RC23CompletionTimeout + +

Time period the tester accepts repeated negative responses with response code 0x23 and repeats the same request.

+
+ 0 + +
+ + CP_RC23Handling + CP_RC23Handling + +

Repetition mode in case of response code 0x7F XX 0x23

+
+ Disabled + +
+ + CP_RC23RequestTime + CP_RC23RequestTime + +

Time between negative response with response code 0x23 and the retransmission of the same request.

+
+ 200000 + +
+ + CP_RC78CompletionTimeout + CP_RC78CompletionTimeout + +

Time period the tester accepts repeated negative responses with response code 0x78 and waits for a positive response further on.

+
+ 25000000 + +
+ + CP_RC78Handling + CP_RC78Handling + +

Handling of 0x7F XX 0x78 ResponseTimeout and 0x78 Repetitions. The receive timeout value will be CP_P2Star. This timer will be reset on each consecutive reception of the 0x7F 0x78 response.

+
+ Continue unlimited + +
+ + CP_RCByteOffset + CP_RCByteOffset + +

This parameter is used by the MVCI Protocol Handlers to offset into the received negative response message (0x7F) to retrieve the response code byte. Most protocols as a default place the response code as the last byte of the message. There are some protocols which place the response code after the Service Id (offset = 1). A range is provided to allow for different negative response configurations.

+
+ Last byte + +
+ + CP_RepeatReqCountApp + CP_RepeatReqCountApp + +

This ComParam contains a counter to enable a re-transmission of the last request when either a transmit, receive error, or timeout with no response is detected. This only applies to the application layer.

+
+ 0 + +
+ + CP_SuspendQueueOnError + CP_SuspendQueueOnError + +

This ComParam is used as a temporary ComParam, for services that require a positive response before any further Com Primitives can be executed.

+
+ Do not suspend + +
+ + CP_TesterPresentAddrMode + CP_TesterPresentAddrMode + +

Addressing Mode to be used for periodic Tester Present messages. Uses the PhysReqxxx or FuncReqxxx ComParams. NOTE 1 If the CLL is in the PDU_CLLST_COMM_STARTED state and tester present handling is enabled (see CP_TesterPresentHandling) any changes to one of the tester present ComParms will cause the tester present message to be sent immediately, prior to the initial tester present cyclic time. NOTE 2 Protocol handler must always wait the proper P3Min time before allowing any transmit. See CP_P3Min, CP_P3Func, CP_P3Phys.

+
+ Functional + +
+ + CP_TesterPresentExpPosResp + CP_TesterPresentExpPosResp + +

Define the expected ECU positive response to a Tester Present Message.

+

This is only applicable if CP_TesterPresentReqRsp is set to 1 (ECU responses are expected on a Tester Present Message).

+

No header bytes or checksum bytes are included. Only the ParamActLen bytes in the array will be compared to the received ECU data.

+
+ + +
+ + CP_TesterPresentExpNegResp + CP_TesterPresentExpNegResp + +

Define the expected ECU negative response to a Tester Present Message.

+

This is only applicable if CP_TesterPresentReqRsp is set to 1 (ECU responses are expected on a Tester Present Message).

+

No header bytes or checksum bytes are included.

+

When a negative response is received to a tester present message, which cannot be handled by the MVCI Protocol module (See RC 21, RC 23 and RC 78), the MVCI protocol module should report a Tester Present Error, but continue sending Tester Present Messages. (See PDU_ERR_EVT_TESTER_PRESENT_ERROR)

+
+ + +
+ + CP_TesterPresentHandling + CP_TesterPresentHandling + +

Define Tester Present message generation settings. The ComLogicaLink must be in the state PDU_CLLST_COMM_STARTED to enable tester present message handling. (See PDU_COPT_STARTCOMM ComPrimitive). NOTE 1 If the CLL is in the PDU_CLLST_COMM_STARTED state and tester present handling is enabled any changes to one of the tester present ComParms will cause the tester present message to be sent immediately, prior to the initial tester present cyclic time. NOTE 2 Protocol handler must always wait the proper P3Min time before allowing any transmit. See CP_P3Min, CP_P3Func, CP_P3Phys.

+
+ Enabled + +
+ + CP_TesterPresentMessage + CP_TesterPresentMessage + +

Define the Tester Present Message

+

This message data does not include any header bytes or checksum information.

+
+ 3E80 + +
+ + CP_TesterPresentReqRsp + CP_TesterPresentReqRsp + +

Define settings for handling Tester Present ECU responses. NOTE 1 If the CLL is in the PDU_CLLST_COMM_STARTED state and tester present handling is enabled (see CP_TesterPresentHandling) any changes to one of the tester present ComParms will cause the tester present message to be sent immediately, prior to the initial tester present cyclic time. NOTE 2 Protocol handler must always wait the proper P3Min time before allowing any transmit. See CP_P3Min, CP_P3Func, CP_P3Phys.

+
+ No response + +
+ + CP_TesterPresentSendType + CP_TesterPresentSendType + +

Define settings for the type of tester present transmits. NOTE 1 If the CLL is in the PDU_CLLST_COMM_STARTED state and tester present handling is enabled (see CP_TesterPresentHandling) any changes to one of the tester present ComParms will cause the tester present message to be sent immediately, prior to the initial tester present cyclic time. NOTE 2 Protocol handler must always wait the proper P3Min time before allowing any transmit. See CP_P3Min, CP_P3Func, CP_P3Phys.

+
+ Periodic + +
+ + CP_TesterPresentTime + CP_TesterPresentTime + +

Time between Tester Present messages, or Time bus must be idle before transmitting a Tester Present Message. NOTE 1 If the CLL is in the PDU_CLLST_COMM_STARTED state and tester present handling is enabled (see CP_TesterPresentHandling) any changes to one of the tester present ComParms will cause the tester present message to be sent immediately, prior to the initial tester present cyclic time. NOTE 2 Protocol handler must always wait the proper P3Min time before allowing any transmit. See CP_P3Min, CP_P3Func, CP_P3Phys.

+
+ 2000000 + +
+ + CP_TesterPresentTime_Ecu + CP_TesterPresentTime_Ecu + +

Time for the server to keep a diagnostic session (other than the default session) active while not receiving any diagnostic request message.

+
+ 5000000 + +
+ + CP_TransmitIndEnable + CP_TransmitIndEnable + +

Transmit Indication Enable. On completion of a transmit message by the protocol, an indication will be set in the RX_FLAG result item. No data bytes will accompany the result item.

+
+ Disabled + +
+
+ + + CP_SessionTiming_Ecu + CP_SessionTiming_Ecu + +

Description: Timing parameters to be used by different sessions for the ECU protocol application layer ISO15765_3 in response to a service 0x10 (Set Diagnostic Session). The ECU returns the session timing information on a positive response to the service. If CP_ModifyTiming is enabled, the MVCI protocol module will interpret the positive response from the ECU and set the appropriate timing ComParams. => Parameter muessen dem Gateway uebergeben werden.

+
+ + CP_SessionTiming_Ecu_SessionNumber + CP_SessionTiming_Ecu_SessionNumber + +

Session Number, for the diagnostic session of ISO 15765-3

+
+ 0 + +
+ + CP_SessionTiming_Ecu_P2Max_High + CP_SessionTiming_Ecu_P2Max High + +

Default P2Can_Server_max timing supported by the server for the activated diagnostic session. Used for ComParam CP_P2Max.

+
+ 0 + +
+ + CP_SessionTiming_Ecu_P2Max_Low + CP_SessionTiming_Ecu_P2Max Low + +

Used for ComParam CP_P2Min.

+
+ 0 + +
+ + CP_SessionTiming_Ecu_P2Star_High + CP_SessionTiming_Ecu_P2Star High + +

Enhanced (NRC 78 hex) P2Can_Server_max supported by the server for the activated diagnostic session. Used for ComParam CP_P2Star.

+
+ 0 + +
+ + CP_SessionTiming_Ecu_P2Star_Low + CP_SessionTiming_Ecu_P2Star Low + +

Used for internal ECU use only.

+
+ 0 + +
+
+ + CP_SessionTimingOverride + CP_SessionTimingOverride + +

This parameter signals the D-PDU API to override the response from any ECUs to a Session Timing request (See CP_SessionTiming_Ecu and CP_ModifyTiming).

+

The timing parameters are to be used for the ECU protocol application layer ISO15765_3 in response to a service 0x10 (Set Diagnostic Session).

+

The ECU returns the session timing information on a positive response to the service.

+

If CP_ModifyTiming is enabled and CP_SessionTimingOverride is not empty (ParamActEntries != 0), then the MVCI protocol module will use data in this ComParam instead of the data returned in a positive reponse from the ECUs.

+
+ + CP_SessionTimingOverride_P2Max_High + CP_SessionTimingOverride_P2Max_High + +

1 ms resolution

+

High byte of the default P2Can_Server_max timing supported by the server for the activated diagnostic session

+

Used for ComParam CP_P2Max

+
+ 0 + +
+ + CP_SessionTimingOverride_P2Max_Low + CP_SessionTimingOverride_P2Max_Low + +

1 ms resolution

+

Low byte of the default P2Can_Server_max timing supported by the server for the activated diagnostic session

+

Used for ComParam CP_P2Max

+
+ 0 + +
+ + CP_SessionTimingOverride_P2Star_High + CP_SessionTimingOverride_P2Star_High + +

10 ms resolution

+

High byte of the enhanced (NRC 78 hex) P2Can_Server_max supported by theserver for the activated diagnostic session

+

Used for ComParam CP_P2Star

+
+ 0 + +
+ + CP_SessionTimingOverride_P2Star_Low + CP_SessionTimingOverride_P2Star_Low + +

10 ms resolution

+

Low byte of the enhanced (NRC 78 hex) P2Can_Server_max supported by theserver for the activated diagnostic session

+

Used for ComParam CP_P2Star

+
+ 0 + +
+ + CP_SessionTimingOverride_SessionNumber + CP_SessionTimingOverride_SessionNumber + +

Session Number, for the diagnostic session of ISO 15765-3

+
+ 0 + +
+
+
+ + + IDENTICAL_A_UINT32_0x00_0xFFFFFFFF_MicroSecond + IDENTICAL_A_UINT32_0x00_0xFFFFFFFF_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 4294967295 + + + + + IDENTICAL_A_UINT32_0x00000000_0xFFFFFFFF_MicroSecond + IDENTICAL_A_UINT32_0x00000000_0xFFFFFFFF_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 4294967295 + + + + + IDENTICAL_A_UINT32_0_1 + IDENTICAL_A_UINT32_0_1 + + IDENTICAL + + + 32 + + + + 0 + 1 + + + + TEXTTABLE_UINT32_Off_On + TEXTTABLE_UINT32_Off/On + +

+ + + TEXTTABLE + + + + 0 + + 0 + + + Off + + + + 1 + + 1 + + + On + + + + + + + 32 + + + + + + 2 + 4294967295 + + + + + + TEXTTABLE_UINT32_Disabled_Enabled + TEXTTABLE_UINT32_Disabled/Enabled + +

+ + + TEXTTABLE + + + + 0 + + 0 + + + Disabled + + + + 1 + + 1 + + + Enabled + + + + + + + 32 + + + + + + 2 + 4294967295 + + + + + + IDENTICAL_A_UINT32_0_100000000_MicroSecond + IDENTICAL_A_UINT32_0_100000000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 100000000 + + + + + IDENTICAL_A_UINT32_0_250000_MicroSecond + IDENTICAL_A_UINT32_0_250000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 250000 + + + + + IDENTICAL_A_UINT32_0_655350000_MicroSecond + IDENTICAL_A_UINT32_0_655350000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 655350000 + + + + + IDENTICAL_A_UINT32_0_125000000_MicroSecond + IDENTICAL_A_UINT32_0_125000000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 125000000 + + + + + IDENTICAL_A_UINT32_0_4294967295 + IDENTICAL_A_UINT32_0_4294967295 + + IDENTICAL + + + 32 + + + + 0 + 4294967295 + + + + TEXTTABLE_UNIT32_RC21Handling + TEXTTABLE_UNIT32_RC21Handling + +

+ + + TEXTTABLE + + + + 0 + + 0 + + + Disabled + + + + +

Continue handling negative responses until CP_RC21CompletionTimeout

+
+ 1 + + 1 + + + Continue until RC21 timeout + + + + +

Continue handling unlimited (until disabled)

+
+ 2 + + 2 + + + Continue unlimited + +
+ + + + + 32 + + + + + + 3 + 4294967295 + + + +
+ + IDENTICAL_A_UINT32_0_4294967295_MicroSecond + IDENTICAL_A_UINT32_0_4294967295_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 4294967295 + + + + + TEXTTABLE_UNIT32_RC23Handling + TEXTTABLE_UNIT32_RC23Handling + +

+ + + TEXTTABLE + + + + 0 + + 0 + + + Disabled + + + + +

Continue handling negative responses until CP_RC23CompletionTimeout

+
+ 1 + + 1 + + + Continue until RC23 timeout + + + + +

Continue handling unlimited (until disabled)

+
+ 2 + + 2 + + + Continue unlimited + +
+ + + + + 32 + + + + + + 3 + 4294967295 + + + +
+ + TEXTTABLE_UNIT32_RC78Handling + TEXTTABLE_UNIT32_RC78Handling + +

+ + + TEXTTABLE + + + + 0 + + 0 + + + Disabled + + + + +

Continue handling negative responses until CP_RC78CompletionTimeout

+
+ 1 + + 1 + + + Continue until RC78 timeout + + + + +

Continue handling unlimited (until disabled)

+
+ 2 + + 2 + + + Continue unlimited + +
+ + + + + 32 + + + + + + 3 + 4294967295 + + + +
+ + TEXTTABLE_UNIT32_RCByteOffset + TEXTTABLE_UNIT32_RCByteOffset + +

+ + + TEXTTABLE + + + + +

first byte after the Service Id byte (0x7F)

+
+ 1 + + 1 + + + First byte + + + + +

last byte in message (not including checksum bytes)

+
+ 4294967295 + + 4294967295 + + + Last byte + +
+ + 0 + + 0 + + + invalid value + + + + + + + 32 + + + + + + 2 + 4294967294 + + + +
+ + IDENTICAL_A_UINT32_0_127500 + IDENTICAL_A_UINT32_0_127500 + + IDENTICAL + + + 32 + + + + 0 + 127500 + + + + IDENTICAL_UINT7_HEX + IDENTICAL_UINT7_HEX + + IDENTICAL + + + 16 + + + + 0 + 127 + + + + LINEAR_UINT8_UINT32_256000x_MicroSecond + LINEAR_UINT8_UINT32_256000x_MicroSecond + + LINEAR + + + + + + 0 + 256000 + + + 1 + + + + + + + + 8 + + + + + + LINEAR_UINT8_UINT32_1000x_MicroSecond + LINEAR_UINT8_UINT32_1000x_MicroSecond + + LINEAR + + + + + + 0 + 1000 + + + 1 + + + + + + + + 8 + + + + + + LINEAR_UINT8_UINT32_2560000x_MicroSecond + LINEAR_UINT8_UINT32_2560000x_MicroSecond + + LINEAR + + + + + + 0 + 2560000 + + + 1 + + + + + + + + 8 + + + + + + LINEAR_UINT8_UINT32_10000x_MicroSecond + LINEAR_UINT8_UINT32_10000x_MicroSecond + + LINEAR + + + + + + 0 + 10000 + + + 1 + + + + + + + + 8 + + + + + + TEXTTABLE_UNIT32_SuspendQueueOnError + TEXTTABLE_UNIT32_SuspendQueueOnError + +

+ + + TEXTTABLE + + + + +

Do not suspend ComPrimitive Transmit Queue

+
+ 0 + + 0 + + + Do not suspend + + + + +

Suspend ComPrimitive Transmit Queue on a Timeout Error or on a non-handled 0x7F error (not an enabled protocol ComParam)

+
+ 1 + + 1 + + + Suspend + +
+ + + + + 32 + + + + + + 2 + 4294967295 + + + +
+ + TEXTTABLE_UNIT32_TesterPresentAddrMode + TEXTTABLE_UNIT32_TesterPresentAddrMode + +

+ + + TEXTTABLE + + + + +

Use Physical Addressing for the Tester Present message

+
+ 0 + + 0 + + + Physical + + + + +

Use Functional Addressing for the Tester Present message

+
+ 1 + + 1 + + + Functional + +
+ + + + + 32 + + + + + + 2 + 4294967295 + + + +
+ + IDENTICAL_BYTEFIELD_0_12_END_OF_PDU + IDENTICAL_BYTEFIELD_0_12_END_OF_PDU + + IDENTICAL + + + 12 + 0 + + + + + TEXTTABLE_UNIT32_TesterPresentReqRsp + TEXTTABLE_UNIT32_TesterPresentReqRsp + +

+ + + TEXTTABLE + + + + +

No response returned by an ECU on a Tester Present message

+
+ 0 + + 0 + + + No response + + + + +

An ECU response is expected from a Tester Present message. The response message will be discarded by the MVCI Protocol Module.

+
+ 1 + + 1 + + + Response expected + +
+ + + + + 32 + + + + + + 2 + 4294967295 + + + +
+ + TEXTTABLE_UNIT32_TesterPresentSendType + TEXTTABLE_UNIT32_TesterPresentSendType + +

+ + + TEXTTABLE + + + + +

Send on periodic interval defined by CP_TesterPresentTime

+
+ 0 + + 0 + + + Periodic + + + + +

Send when bus has been idle for CP_TesterPresentTime

+
+ 1 + + 1 + + + On idle + +
+ + + + + 32 + + + + + + 2 + 4294967295 + + + +
+ + IDENTICAL_A_UINT32_0_30000000_MicroSecond + IDENTICAL_A_UINT32_0_30000000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 30000000 + + + +
+ + + + MicroSecond + Micro-Second + µs + + + + + Time + Time + 1 + + + +
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_14229_5_on_ISO_13400_2_DIS_2015.odx-c b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_14229_5_on_ISO_13400_2_DIS_2015.odx-c new file mode 100644 index 0000000..1396749 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_14229_5_on_ISO_13400_2_DIS_2015.odx-c @@ -0,0 +1,55 @@ + + + + ISO_14229_5_on_ISO_13400_2 + ISO 14229-5 on ISO 13400-2 (DIS 2015) + +

Based on ISO 22900-2 DIS dated 2015-06-16

+
+ + en-US + + + + 1.0.0 + release + 2016-04-19T09:43:10+02:00 + MDF2ODX 1.0 2016-03-02 + + + Initial generation from MDF + + + + + + + + Vector_Informatik + Vector Informatik + + + Generator + PDG + + + + + + + ISO_14229_5_on_ISO_13400_2_DIS_2015_PROT_STACK + ISO 14229-5 on ISO 13400-2 DIS 2015 PROT STACK + +

ISO UDS on IP (DoIP) protocol

+
+ ISO_14229_5_on_ISO_13400_2 + IEEE_802_3 + + + + + +
+
+
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_15765_2.odx-cs b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_15765_2.odx-cs new file mode 100644 index 0000000..69344e0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_15765_2.odx-cs @@ -0,0 +1,1547 @@ + + + + ISO_15765_2 + ISO 15765-2 + + en-UK + + + + 1.0.0 + Release + 2009-06-29T00:00:00 + + + No changes + Official version + + + + + + + + ISO + International Organization for Standardization (ISO) + + + Joint_COMPARAM_Group + Joint COMPARAM-Group +
Arnikastrasse 2
+ 85635 + Hoehenkirchen + +49 8102 895317 + +49 8102 895310 + info@asam.net +
+
+ + + + + ISO_22900_2 + ISO 22900-2 + 2.2.0 + Release + 2009-01-27T00:00:00 + ISO + + + + + ISO_22901_1 + ISO 22901-1 + 2.2.0 + Release + 2008-11-06T00:00:00 + ISO + + + + +
+
+ + + CP_Ar + CP_Ar + +

Time for transmission of the CAN frame (any N_PDU) on the receiver side

+
+ 1000000 + +
+ + CP_As + CP_As + +

Time for transmission of the CAN frame (any N_PDU) on the sender side

+
+ 1000000 + +
+ + CP_BlockSize + CP_BlockSize + +

This sets the block size that the interface should report to the vehicle for receiving segmented transfers in a Transmit Flow Control Message.

+
+ 0 + +
+ + CP_BlockSizeOverride + CP_BlockSizeOverride + +

This sets the block size that the interface should use to send segmented messages to the vehicle.

+

The flow control value reported by the vehicle should be ignored.

+
+ 65535 + +
+ + CP_Br + CP_Br + +

Time until transmission of the next FlowControl

+

This is equivalent to Th in J1939-21.

+

For ISO 15765-2 and ISO 15765-4, this value is a performance requirement ComParam and should not be used as a timeout value by the tester.

+
+ 10000 + +
+ + CP_Bs + CP_Bs + +

Timeout until reception of the next FlowControl

+

This is equivalent to T4 in J1939-21.

+
+ 1000000 + +
+ + CP_CanDataSizeOffset + CP_CanDataSizeOffset + +

Offset subtracted from the total number of expected bytes received/transmitted in a first frame message

+
+ 0 + +
+ + CP_CanFillerByte + CP_CanFillerByte + +

Padding data byte to be used to pad all USDT type transmits frames (SF, FC, and last CF)

+

NOTE: The padding data byte value is typically 0x00, 0x55, or 0xAA.

+
+ 85 + +
+ + CP_CanFillerByteHandling + CP_CanFillerByteHandling + +

Enable Padding, forcing the DLC of a CAN frame to always be 8

+
+ Enabled + +
+ + CP_CanFirstConsecutiveFrameValue + CP_CanFirstConsecutiveFrameValue + +

First consecutive frame number to be transmitted/received on a multi-segment transfer

+

Used to override the normal first consecutive frame value of 1.

+
+ 1 + +
+ + CP_CanFuncReqExtAddr + CP_CanFuncReqExtAddr + +

Address extension for enhanced diagnostics

+

The first byte of the requested CAN frame data contains the N_AE/N_TA byte followed by the correct number of PCI bytes.

+

This ComParam is used for all transmitted CAN Frames that have the "Can Address Extension" bit set in the CanIdFormat.

+
+ 0 + +
+ + CP_CanFuncReqFormat + CP_CanFuncReqFormat + +

CAN Format used for a functional address transmit

+

See TEXTTABLE_UINT6_CanReqFormat

+
+ normal segmented 11-bit transmit with FC + +
+ + CP_CanFuncReqId + CP_CanFuncReqId + +

CAN ID used for a functional address transmit

+
+ 2015 + +
+ + CP_CanMaxNumWaitFrames + CP_CanMaxNumWaitFrames + +

The maximum number of WAIT flow control frames allowed during a multi-segment transfer

+

For SAE J1939, this is the maximum number of allowed CTS frames.

+
+ 255 + +
+ + CP_Cr + CP_Cr + +

Timeout for reception of the next ConsecutiveFrame

+

For SAE J1939-21, this is equivalent to T1.

+
+ 1000000 + +
+ + CP_Cs + CP_Cs + +

Time until transmission of the next Consecutive Frame

+

(This is used if FC is not enabled or if the STmin value in the FC=0 and STminOverride=0xFFFF.) See ISO 15765-2.

+

For ISO 15765-2 and ISO 15765-4, this is a performance requirement ComParam and should not be used as a timeout value by the tester.

+

For SAE J1939, this is equivalent to the time between sending packets in a multi-packet broadcast and a multi-packet destination-specific message. From text in SAE J1939-21:2006, 5.12.3.

+
+ 10000 + +
+ + CP_RepeatReqCountTrans + CP_RepeatReqCountTrans + +

This ComParam contains a counter to enable a re-transmission of the last request when either a transmit, a receive error, or transport layer timeout is detected.

+

This applies to the transport layer only.

+
+ 0 + +
+ + CP_RequestAddrMode + CP_RequestAddrMode + +

Addressing Mode to be used for the Com Primitive

+
+ Physical + +
+ + CP_SendRemoteFrame + CP_SendRemoteFrame + +

This ComParam is used for CAN remote frame handling.

+

(No data bytes are transmitted. Just the CAN ID. The first byte of the PDU Data shall contain the Data Length Code.)

+
+ No remote frame + +
+ + CP_StMin + CP_StMin + +

This sets the separation time the interface should report to the vehicle for receiving segmented transfers in a Transmit Flow Control Message.

+
+ 0 + +
+ + CP_StMinOverride + CP_StMinOverride + +

This sets the separation time the interface should use to transmit segmented messages to the vehicle.

+

The flow control value reported by the vehicle should be ignored.

+
+ 4294967295 + +
+
+ + + CP_UniqueRespIdTable + CP_UniqueRespIdTable + +

The purpose of this communication parameter is to provide a table that allows the D-server to map the ECU responses to functional requests to their physical source ECUs.

+
+ + CP_CanPhysReqExtAddr + CP_CanPhysReqExtAddr + +

Address extension for enhanced diagnostics

+

The first byte of the requested CAN frame data contains the N_AE/N_TA byte followed by the correct number of PCI bytes.

+

This ComParam is used for all transmitted CAN Frames that have the "Can Address Extension" bit set in the CanIdFormat.

+
+ 0 + +
+ + CP_CanPhysReqFormat + CP_CanPhysReqFormat + +

CAN Format used for a physical address transmit

+

See TEXTTABLE_UINT6_CanReqFormat

+
+ normal segmented 11-bit transmit with FC + +
+ + CP_CanPhysReqId + CP_CanPhysReqId + +

CAN ID used for a physical address transmit

+
+ 2016 + +
+ + CP_CanRespUSDTExtAddr + CP_CanRespUSDTExtAddr + +

Extended Address used for a USDT response from an ECU if the CAN Format indicates address extension

+
+ 0 + +
+ + CP_CanRespUSDTFormat + CP_CanRespUSDTFormat + +

CAN Format for the USDT CAN ID received from an ECU (Segment type Bit must = 1)

+

See TEXTTABLE_UINT4_4_15_CanRespUSDTFormat

+
+ normal segmented 11-bit receive with FC + +
+ + CP_CanRespUSDTId + CP_CanRespUSDTId + +

Received USDT CAN ID from an ECU

+

NOTE: 0xFFFFFFFF indicates that the ComParam is not used. This ComParam is used in the Unique Response Identifier Table for CAN protocols.

+
+ 2024 + +
+ + CP_CanRespUUDTExtAddr + CP_CanRespUUDTExtAddr + +

Extended Address used for UUDT response if the CAN Format indicates address extension

+
+ 0 + +
+ + CP_CanRespUUDTFormat + CP_CanRespUUDTFormat + +

Received CAN Format for CAN ID without segmentation (Segment Type Bit must = 0)

+

See TEXTTABLE_UINT4_0_10_CanRespUUDTFormat

+
+ normal unsegmented 11-bit receive + +
+ + CP_CanRespUUDTId + CP_CanRespUUDTId + +

Received UUDT CAN ID from an ECU

+

NOTE: 0xFFFFFFFF indicates that the ComParam is not used. This ComParam is used in the Unique Response Identifier Table for CAN protocols.

+
+ 4294967295 + +
+ + CP_ECULayerShortName + CP_ECULayerShortName + +

This communication parameter is needed by the D-server to set up the correct Access Keys for every received response.

+
+ None + +
+
+
+ + + IDENTICAL_ASCII_1_128_END_OF_PDU + IDENTICAL_ASCII_1_128_END_OF_PDU + + IDENTICAL + + + 128 + 1 + + + + + IDENTICAL_UINT11_0_1027 + IDENTICAL_UINT11_0_1027 + + IDENTICAL + + + 32 + + + + 0 + 1027 + + + + IDENTICAL_UINT16_BlockSizeOverride + IDENTICAL_UINT16_BlockSizeOverride + +

65535 = Use the value reported by the vehicle

+
+ + IDENTICAL + + + 32 + + + + 0 + 65535 + +
+ + IDENTICAL_UINT25_0_20000000_MicroSecond + IDENTICAL_UINT25_0_20000000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 20000000 + + + + + IDENTICAL_UINT29_HEX + IDENTICAL_UINT29_HEX + + IDENTICAL + + + 32 + + + + 0 + 536870911 + + + + IDENTICAL_UINT32_HEX_CanRespId + IDENTICAL_UINT32_HEX_CanRespId + +

0xFFFFFFFF = indicates that the ComParam is not used.

+

This ComParam is used in the Unique Response Identifier Table for CAN protocols

+
+ + IDENTICAL + + + 32 + + + + + + 536870912 + 4294967294 + + + +
+ + IDENTICAL_UINT4_0_8 + IDENTICAL_UINT4_0_8 + + IDENTICAL + + + 32 + + + + 0 + 8 + + + + IDENTICAL_UINT4_HEX + IDENTICAL_UINT4_HEX + + IDENTICAL + + + 32 + + + + 0 + 15 + + + + IDENTICAL_UINT8 + IDENTICAL_UINT8 + + IDENTICAL + + + 32 + + + + 0 + 255 + + + + IDENTICAL_UINT8_HEX + IDENTICAL_UINT8_HEX + + IDENTICAL + + + 32 + + + + 0 + 255 + + + + IDENTICAL_UINT32_MicroSecond_StMinOverride + IDENTICAL_UINT32_MicroSecond_StMinOverride + +

0xFFFFFFFF = Use the value reported by the vehicle

+
+ + IDENTICAL + + + 32 + + + + + + 2147483648 + 4294967294 + + + + +
+ + SCALE_LINEAR_UINT8_INT32_MicroSecond_StMin + SCALE_LINEAR_UINT8_INT32_MicroSecond_StMin + +

0x00-0x7F: 0 µs-127.000 µs Resolution = 1 ms

+

0xF1-0xF9: 100µs - 900µs Resolution = 100 µs

+

use 3 COMPU-SCALEs for invertible linear computation between physical and internal value without overlapping ranges of physical value and domain A_INT32 with unit [µs]

+
+ + SCALE-LINEAR + + + + +

physical value 0 µs, internal value 0x00

+
+ 0 + + + 0 + 1000 + + + 1 + + +
+ + +

physical value range 1000 ... 127000 µs, internal value range 0x01 ... 0x7F

+
+ 1 + 127 + + + 0 + 1000 + + + 1 + + +
+ + +

physical value 100..900 µs, internal value 0xF1..0xF9

+
+ 241 + 249 + + + -24000 + 100 + + + 1 + + +
+
+
+
+ + 32 + + + + 0 + 249 + + + 128 + 240 + + + + +
+ + TEXTTABLE_UINT1_Disabled_Enabled + TEXTTABLE_UINT1_Disabled_Enabled + + TEXTTABLE + + + + 0 + + Disabled + + + + 1 + + Enabled + + + + + + + 32 + + + + 0 + 1 + + + + TEXTTABLE_UINT1_SendRemoteFrame + TEXTTABLE_UINT1_SendRemoteFrame + + TEXTTABLE + + + + +

No Remote Frame Transmit

+
+ 0 + + No remote frame + +
+ + +

Transmit a Remote Frame using the DLC in the PDU Data

+
+ 1 + + Transmit remote frame + +
+
+
+
+ + 32 + + + + 0 + 1 + +
+ + TEXTTABLE_UINT2_1_2_RequestAddrMode + TEXTTABLE_UINT2_1_2_RequestAddrMode + + TEXTTABLE + + + + +

Use Physical Addressing for the request

+
+ 1 + + Physical + +
+ + +

Use Functional Addressing for the request

+
+ 2 + + Functional + +
+
+
+
+ + 32 + + + + 1 + 2 + +
+ + TEXTTABLE_UINT4_0_10_CanRespUUDTFormat + TEXTTABLE_UINT4_0_10_CanRespUUDTFormat + + TEXTTABLE + + + + 0x0 + +

- Normal addressing for Target (ECU)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 11-bit CAN ID Size

+

- UUDT Message Receive (No Flow Control)

+
+ 0 + + normal unsegmented 11-bit receive + +
+ + 0x2 + +

- Normal addressing for Target (ECU)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 29-bit CAN ID Size

+

- UUDT Message Receive (No Flow Control)

+
+ 2 + + normal unsegmented 29-bit receive + +
+ + 0x8 + +

- Extended addressing for Target (ECU)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 11-bit CAN ID Size

+

- UUDT Message Receive (No Flow Control)

+
+ 8 + + extended unsegmented 11-bit receive + +
+ + 0xA + +

- Extended addressing for Target (ECU)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 29-bit CAN ID Size

+

- UUDT Message Receive (No Flow Control)

+
+ 10 + + extended unsegmented 29-bit receive + +
+
+
+
+ + 32 + + + + 0 + 10 + + + 1 + 1 + + + 3 + 7 + + + 9 + 9 + + + +
+ + TEXTTABLE_UINT4_4_15_CanRespUSDTFormat + TEXTTABLE_UINT4_4_15_CanRespUSDTFormat + + TEXTTABLE + + + + 0x4 + +

- Normal addressing for Target (ECU)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- No Flow Control is sent when a First Frame is received

+
+ 4 + + normal segmented 11-bit receive w/o FC + +
+ + 0x5 + +

- Normal addressing for Target (ECU)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- Flow Control is sent when a First Frame is received

+
+ 5 + + normal segmented 11-bit receive with FC + +
+ + 0x6 + +

- Normal addressing for Target (ECU)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- No Flow Control is sent when a First Frame is received

+
+ 6 + + normal segmented 29-bit receive w/o FC + +
+ + 0x7 + +

- Normal addressing for Target (ECU)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- Flow Control is sent when a First Frame is received

+
+ 7 + + normal segmented 29-bit receive with FC + +
+ + 0xC + +

- Extended addressing for Target (ECU)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- No Flow Control is sent when a First Frame is received

+
+ 12 + + extended segmented 11-bit receive w/o FC + +
+ + 0xD + +

- Extended addressing for Target (ECU)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- Flow Control is sent when a First Frame is received

+
+ 13 + + extended segmented 11-bit receive with FC + +
+ + 0xE + +

- Extended addressing for Target (ECU)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- No Flow Control is sent when a First Frame is received

+
+ 14 + + extended segmented 29-bit receive w/o FC + +
+ + 0xF + +

- Extended addressing for Target (ECU)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- Flow Control is sent when a First Frame is received

+
+ 15 + + extended segmented 29-bit receive with FC + +
+
+
+
+ + 32 + + + + 4 + 15 + + + 8 + 11 + + + +
+ + TEXTTABLE_UINT6_CanReqFormat + TEXTTABLE_UINT6_CanReqFormat + + TEXTTABLE + + + + 0x00 + +

- Use CP_CanFillerByteHandling for padding control

+

- Normal addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 0 + + normal unsegmented 11-bit transmit + +
+ + 0x02 + +

- Use CP_CanFillerByteHandling for padding control

+

- Normal addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 2 + + normal unsegmented 29-bit transmit + +
+ + 0x04 + +

- Use CP_CanFillerByteHandling for padding control

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 4 + + normal segmented 11-bit transmit w/o FC + +
+ + 0x05 + +

- Use CP_CanFillerByteHandling for padding control

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 5 + + normal segmented 11-bit transmit with FC + +
+ + 0x06 + +

- Use CP_CanFillerByteHandling for padding control

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 6 + + normal segmented 29-bit transmit w/o FC + +
+ + 0x07 + +

- Use CP_CanFillerByteHandling for padding control

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 7 + + normal segmented 29-bit transmit with FC + +
+ + 0x08 + +

- Use CP_CanFillerByteHandling for padding control

+

- Extended addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 8 + + extended unsegmented 11-bit transmit + +
+ + 0x0A + +

- Use CP_CanFillerByteHandling for padding control

+

- Extended addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 10 + + extended unsegmented 29-bit transmit + +
+ + 0x0C + +

- Use CP_CanFillerByteHandling for padding control

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 12 + + extended segmented 11-bit transmit w/o FC + +
+ + 0x0D + +

- Use CP_CanFillerByteHandling for padding control

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 13 + + extended segmented 11-bit transmit with FC + +
+ + 0x0E + +

- Use CP_CanFillerByteHandling for padding control

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 14 + + extended segmented 29-bit transmit w/o FC + +
+ + 0x0F + +

- Use CP_CanFillerByteHandling for padding control

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 15 + + extended segmented 29-bit transmit with FC + +
+ + 0x20 + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 32 + + normal unsegmented 11-bit transmit with padding disabled + +
+ + 0x22 + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 34 + + normal unsegmented 29-bit transmit with padding disabled + +
+ + 0x24 + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 36 + + normal segmented 11-bit transmit w/o FC and padding disabled + +
+ + 0x25 + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 37 + + normal segmented 11-bit transmit with FC and padding disabled + +
+ + 0x26 + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 38 + + normal segmented 29-bit transmit w/o FC and padding disabled + +
+ + 0x27 + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 39 + + normal segmented 29-bit transmit with FC and padding disabled + +
+ + 0x28 + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 40 + + extended unsegmented 11-bit transmit with padding disabled + +
+ + 0x2A + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 42 + + extended unsegmented 29-bit transmit with padding disabled + +
+ + 0x2C + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 44 + + extended segmented 11-bit transmit w/o FC and padding disabled + +
+ + 0x2D + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 45 + + extended segmented 11-bit transmit with FC and padding disabled + +
+ + 0x2E + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 46 + + extended segmented 29-bit transmit w/o FC and padding disabled + +
+ + 0x2F + +

- Padding explicitly disabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 47 + + extended segmented 29-bit transmit with FC and padding disabled + +
+ + 0x30 + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 48 + + normal unsegmented 11-bit transmit with padding enabled + +
+ + 0x32 + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 50 + + normal unsegmented 29-bit transmit with padding enabled + +
+ + 0x34 + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 52 + + normal segmented 11-bit transmit w/o FC and padding enabled + +
+ + 0x35 + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 53 + + normal segmented 11-bit transmit with FC and padding enabled + +
+ + 0x36 + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 54 + + normal segmented 29-bit transmit w/o FC and padding enabled + +
+ + 0x37 + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Normal addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 55 + + normal segmented 29-bit transmit with FC and padding enabled + +
+ + 0x38 + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 56 + + extended unsegmented 11-bit transmit with padding enabled + +
+ + 0x3A + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- UUDT Message Transmit (No PCI Bytes)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 58 + + extended unsegmented 29-bit transmit with padding enabled + +
+ + 0x3C + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 60 + + extended segmented 11-bit transmit w/o FC and padding enabled + +
+ + 0x3D + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 11-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 61 + + extended segmented 11-bit transmit with FC and padding enabled + +
+ + 0x3E + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- No Flow Control frames are expected from Target (ECU)

+
+ 62 + + extended segmented 29-bit transmit w/o FC and padding enabled + +
+ + 0x3F + +

- Padding explicitly enabled for this CAN Id (overwrite CP_CanFillerByteHandling)

+

- Extended addressing for Source (Tester)

+

- USDT Message Transmit (Segmented transmits)

+

- 29-bit CAN ID Size

+

- Flow Control frames are expected from Target (ECU)

+
+ 63 + + extended segmented 29-bit transmit with FC and padding enabled + +
+
+
+
+ + 32 + + + + 0 + 63 + + + 1 + 1 + + + 3 + 3 + + + 9 + 9 + + + 11 + 11 + + + 16 + 31 + + + 33 + 33 + + + 35 + 35 + + + 41 + 41 + + + 43 + 43 + + + 49 + 49 + + + 51 + 51 + + + 57 + 57 + + + 59 + 59 + + + +
+
+ + + + MicroSecond + Micro-Second + µs + + + +
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_15765_3.odx-cs b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_15765_3.odx-cs new file mode 100644 index 0000000..998189a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_15765_3.odx-cs @@ -0,0 +1,1289 @@ + + + + ISO_15765_3 + ISO 15765-3 + + en-UK + + + + 1.0.0 + Release + 2009-04-24T00:00:00 + + + No changes + Official version + + + + + + + + ISO + International Organization for Standardization (ISO) + + + Joint_COMPARAM_Group + Joint COMPARAM-Group +
Arnikastrasse 2
+ 85635 + Hoehenkirchen + +49 8102 895317 + +49 8102 895310 + info@asam.net +
+
+ + + + + ISO_22900_2 + ISO 22900-2 + 2.2.0 + Release + 2009-01-27T00:00:00 + ISO + + + + + ISO_22901_1 + ISO 22901-1 + 2.2.0 + Release + 2008-11-06T00:00:00 + ISO + + + + +
+
+ + + CP_CanTransmissionTime + CP_CanTransmissionTime + +

If the timeout values are used which have been received by the ECU via session control response (0x50), the Can transmission time has to be added to the timeout values.

+

P2 = received P2 + CanTransmissionTime (contains delay for both transmission directions)

+
+ 100000 + +
+ + CP_ChangeSpeedCtrl + CP_ChangeSpeedCtrl + +

Control the behaviour of the MVCI protocol module in processing speed change messages.

+

When this ComParam is enabled, the speed rate change will be activated on a successful Send or SendRecv ComPrimitive when the transmitted or received message matches the CP_ChangeSpeedMessage (baud rate as specified in CP_ChangeSpeedRate and termination resistor as specified in CP_ChangeSpeedResCtrl).

+

In the case of monitoring mode, when a receive PDU is bound to a Receive Only ComPrimitive, and this ComParam is enabled, the speed rate change will also be activated and the corresponding ComParams will be interpreted accordingly

+
+ Disabled + +
+ + CP_ChangeSpeedMessage + CP_ChangeSpeedMessage + +

Switch Speed Message

+

The message is monitored for transmit and receive. When this message is detected on the vehicle bus, the CP_ChangeSpeedRate and CP_ChangeSpeedResCtrl ComParams are processed.

+

NOTE: CP_ChangeSpeedCtrl is enabled for this ComParam to be active.

+
+ + +
+ + CP_ChangeSpeedRate + CP_ChangeSpeedRate + +

The data rate to be used when switching speed rates

+

When changed, this value is copied to CP_Baudrate ComParam.

+
+ 0 + +
+ + CP_ChangeSpeedResCtrl + CP_ChangeSpeedResCtrl + +

This ComParam is used in conjunction with CP_ChangeSpeedCtrl.

+

This ComParam is used to control automatic loading or unloading of the physical resource resistor when a change speed message has been transmitted or received.

+

NOTE: For AUTO_UNLOAD_RESISTOR, it is intended that CP_TerminationType be set to the initial value configured at the time of a PDUConnect.

+
+ Not used + +
+ + CP_ChangeSpeedTxDelay + CP_ChangeSpeedTxDelay + +

Minimum amount of time to wait before allowing the next transmit message on the Vehicle Bus after the successful transmission of a baud rate change message

+
+ 0 + +
+ + CP_CyclicRespTimeout + CP_CyclicRespTimeout + +

This ComParam is used for ComPrimitives that have a NumRecvCycles set to IS-CYCLIC (-1, infinite).

+

The timer is enabled after the first positive response is received from an ECU. If CP_CyclicRespTimeout = 0, there is no receive timing enabled for the infinite receive ComPrimitive.

+
+ 0 + +
+ + CP_EnablePerformanceTest + CP_EnablePerformanceTest + +

This ComParam (when enabled) will place the tester into a performance measurement mode.

+

Measurements will be collected during a normal ComPrimitive communications session.

+

ComParams such as P1Min, P2Min, Br, Cs will be tested in this mode. Once the testing is disabled, results of the testing will be returned to the client application.

+
+ Disabled + +
+ + CP_Loopback + CP_Loopback + +

Echo Transmitted messages in the receive queue, including periodic messages.

+

Loopback messages shall only be sent after successful transmission of a message.

+

Loopback frames are not subject to message filtering.

+
+ Off + +
+ + CP_ModifyTiming + CP_ModifyTiming + +

This parameter signals the D-PDU API to automatically modify timing parameters based on a response from the ECU.

+

For ISO 14230-2 this would apply to service 0x83/0xC3 with TPI of 1, 2 or 3.

+

For ISO 15765-3 this would apply to service 0x10/0x50. For functional addressing mode, the worst case timing parameter returned by the responding ECUs shall be used.

+

Based on the protocol, the following parameters are modified when a positive ECU response is received:

+

- CP_P2Max

+

- CP_P2Min

+

- CP_P2Star

+

- CP_P3Min

+

- CP_P4Min

+

NOTE: The values returned by an ECU are in a different time resolution than the ComParams to be automatically modified. The values will be reinterpreted from the protocol specified time resolution to the 1us resolution specified in the D-PDU API.

+
+ Disabled + +
+ + CP_P2Max + CP_P2Max + +

Timeout in receiving an expected frame +after a successful transmit complete

+

Also used for +multiple ECU responses

+
+ 150000 + +
+ + CP_P2Min + CP_P2Min + +

This sets the minimum time between tester request and ECU responses, or two ECU responses.

+

After the request, the interface shall be capable of handling an immediate response (P2_min=0). For subsequent responses, a byte received after P1_MAX shall be considered as the start of the subsequent response.

+

This is a performance requirement ComParam.

+
+ 0 + +
+ + CP_P2Star + CP_P2Star + +

Timeout for the client to expect the start of the response message after the reception of a negative response message (indicated via N_USData.ind) with response code 0x78 (enhanced response timing)

+

See CP_RC78Handling for details describing 0x78 0x7F handling.

+

This parameter is used for all protocols that support the negative response code 0x78. For some protocols it is used instead of the recommended P3Max parameter.

+
+ 5050000 + +
+ + CP_P3Func + CP_P3Func + +

Minimum time for the client to wait after the successful transmission of a functionally addressed request message (indicated via N_USData.con), before it can transmit the next functionally addressed request message, in case no response is required, or the requested data is only supported by a subset of thefunctionally addressed servers

+
+ 50000 + +
+ + CP_P3Phys + CP_P3Phys + +

Minimum time for the client to wait after the successful transmission of a physically addressed request message (indicated via N_USData.con) with no response required before it can transmit the next physically-addressed request message

+
+ 50000 + +
+ + CP_RC21CompletionTimeout + CP_RC21CompletionTimeout + +

Time period the tester accepts repeated negative responses with response code 0x21 and repeats the same request

+

Timer is started after reception of first negative response.

+
+ 1300000 + +
+ + CP_RC21Handling + CP_RC21Handling + +

Repetition mode in case of response code 0x7F XX 0x21

+
+ Disabled + +
+ + CP_RC21RequestTime + CP_RC21RequestTime + +

Time between negative response with response code 0x21 and the retransmission of the same request

+

If CP_P3Min is greater than CP_RC21RequestTime, the time delay prior to the retransmission of the same request will be CP_P3Min.

+
+ 200000 + +
+ + CP_RC23CompletionTimeout + CP_RC23CompletionTimeout + +

Time period the tester accepts repeated negative responses with response code 0x23 and repeats the same request

+
+ 0 + +
+ + CP_RC23Handling + CP_RC23Handling + +

Repetition mode in case of response code 0x7F XX 0x23

+
+ Disabled + +
+ + CP_RC23RequestTime + CP_RC23RequestTime + +

The time the D-PDU API waits to re-request the message when receiving a negative response code 0x23

+

For some protocols (SAE_J1850_VPW) it is possible to get a positive response after receiving a negative response code 0x23, so the D-PDU API uses this ComParam as the time to receive a possible positive response before making the re-request.

+

On a positive response within this time, the re-request is cancelled. The D-PDU API postpones the re-request until the timeout of CP_RC23RequestTime (or a CP_P3Min timeout, in case CP_P3Min is greater than CP_RC23RequestTime).

+

For ISO 14230-3, there will be no positive response following a RC23 therefore the D-PDU API is expected to always make a re-request if enabled (CP_RC23Handling != 0).

+

The cycle of receiving negative response code 0x23 and retransmitting the request continues until CP_RC23CompletionTimeout expires (applicable only if CP_RC23Handling is set to 1).

+
+ 200000 + +
+ + CP_RC78CompletionTimeout + CP_RC78CompletionTimeout + +

Time period the tester accepts repeated negative responses with response code 0x78 and waits for a positive response further on

+
+ 25000000 + +
+ + CP_RC78Handling + CP_RC78Handling + +

Handling of 0x7F XX 0x78 ResponseTimeout and 0x78 Repetitions

+

The receive timeout value will be CP_P2Star. This timer will be reset on each consecutive reception of the 0x7F 0x78 response.

+
+ Continue unlimited + +
+ + CP_RCByteOffset + CP_RCByteOffset + +

This parameter is used by the MVCI Protocol Handlers to offset into the received negative response message (0x7F) to retrieve the response code byte.

+

Most protocols as a default place the response code as the last byte of the message. There are some protocols which place the response code after the Service Id (offset = 1).

+

A range is provided to allow for different negative response configurations

+
+ Last byte + +
+ + CP_RepeatReqCountApp + CP_RepeatReqCountApp + +

This ComParam contains a counter to enable a re-transmission of the last request when either a transmit, receive error, or timeout with no response is detected.

+

This only applies to the application layer.

+
+ 0 + +
+ + CP_StartMsgIndEnable + CP_StartMsgIndEnable + +

Start Message Indication Enable

+

Upon receiving a first frame of a multi-frame message (ISO 15765), or upon receiving a first byte of a UART message, an indication will be set in the RX result item.

+

No data bytes will accompany the result item.

+
+ Disabled + +
+ + CP_SuspendQueueOnError + CP_SuspendQueueOnError + +

This ComParam is used as a temporary ComParam for services that require a positive response before any further Com Primitives can be executed.

+
+ Do not suspend + +
+ + CP_SwCan_HighVoltage + CP_SwCan_HighVoltage + +

Indicates that the Single Wire CAN message should be transmitted as a High-Voltage Message.

+

Simultaneously transmitting in high voltage and high speed mode will result in undefined behaviour.

+

This ComParam is only applicable when the Bus Type selected is SAE_J2411_SWCAN.

+
+ Normal + +
+ + CP_TesterPresentAddrMode + CP_TesterPresentAddrMode + +

Addressing Mode to be used for periodic Tester Present messages

+

Uses the PhysReqxxx or FuncReqxxx ComParams.

+
+ Functional + +
+ + CP_TesterPresentExpPosResp + CP_TesterPresentExpPosResp + +

Define the expected ECU positive response to a Tester Present Message.

+

This is only applicable if CP_TesterPresentReqRsp is set to 1 (ECU responses are expected on a Tester Present Message).

+

No header bytes or checksum bytes are included. Only the ParamActLen bytes in the array will be compared to the received ECU data.

+
+ + +
+ + CP_TesterPresentExpNegResp + CP_TesterPresentExpNegResp + +

Define the expected ECU negative response to a Tester Present Message.

+

This is only applicable if CP_TesterPresentReqRsp is set to 1 (ECU responses are expected on a Tester Present Message).

+

No header bytes or checksum bytes are included.

+

When a negative response is received to a tester present message, which cannot be handled by the MVCI Protocol module (See RC 21, RC 23 and RC 78), the MVCI protocol module should report a Tester Present Error, but continue sending Tester Present Messages. (See PDU_ERR_EVT_TESTER_PRESENT_ERROR)

+
+ + +
+ + CP_TesterPresentHandling + CP_TesterPresentHandling + +

Define Tester Present message generation settings

+
+ Enabled + +
+ + CP_TesterPresentMessage + CP_TesterPresentMessage + +

Define the Tester Present Message

+

This message data does not include any header bytes or checksum information.

+
+ 3E80 + +
+ + CP_TesterPresentReqRsp + CP_TesterPresentReqRsp + +

Define settings for handling Tester Present ECU responses

+
+ No response + +
+ + CP_TesterPresentSendType + CP_TesterPresentSendType + +

Define settings for the type of tester present transmits

+
+ Periodic + +
+ + CP_TesterPresentTime + CP_TesterPresentTime + +

Time between Tester Present messages, or Time bus shall be idle before transmitting a Tester Present Message

+
+ 2000000 + +
+ + CP_TransmitIndEnable + CP_TransmitIndEnable + +

Transmit Indication Enable

+

On completion of a transmit message by the protocol, an indication will be set in the RX_FLAG result item.

+

No data bytes will accompany the result item.

+
+ Disabled + +
+
+ + + CP_SessionTimingOverride + CP_SessionTimingOverride + +

This parameter signals the D-PDU API to override the response from any ECUs to a Session Timing request (See CP_SessionTiming_Ecu and CP_ModifyTiming).

+

The timing parameters are to be used for the ECU protocol application layer ISO15765_3 in response to a service 0x10 (Set Diagnostic Session).

+

The ECU returns the session timing information on a positive response to the service.

+

If CP_ModifyTiming is enabled and CP_SessionTimingOverride is not empty (ParamActEntries != 0), then the MVCI protocol module will use data in this ComParam instead of the data returned in a positive reponse from the ECUs.

+
+ + CP_SessionTimingOverride_P2Max_High + CP_SessionTimingOverride_P2Max_High + +

1 ms resolution

+

High byte of the default P2Can_Server_max timing supported by the server for the activated diagnostic session

+

Used for ComParam CP_P2Max

+
+ 0 + +
+ + CP_SessionTimingOverride_P2Max_Low + CP_SessionTimingOverride_P2Max_Low + +

1 ms resolution

+

Low byte of the default P2Can_Server_max timing supported by the server for the activated diagnostic session

+

Used for ComParam CP_P2Max

+
+ 0 + +
+ + CP_SessionTimingOverride_P2Star_High + CP_SessionTimingOverride_P2Star_High + +

10 ms resolution

+

High byte of the enhanced (NRC 78 hex) P2Can_Server_max supported by the +server for the activated diagnostic session

+

Used for ComParam CP_P2Star

+
+ 0 + +
+ + CP_SessionTimingOverride_P2Star_Low + CP_SessionTimingOverride_P2Star_Low + +

10 ms resolution

+

Low byte of the enhanced (NRC 78 hex) P2Can_Server_max supported by the +server for the activated diagnostic session

+

Used for ComParam CP_P2Star

+
+ 0 + +
+ + CP_SessionTimingOverride_SessionNumber + CP_SessionTimingOverride_SessionNumber + +

Session Number, for the diagnostic session of ISO 15765-3

+
+ 0 + +
+ +
+
+ + + IDENTICAL_BYTEFIELD_0_12_END_OF_PDU + IDENTICAL_BYTEFIELD_0_12_END_OF_PDU + + IDENTICAL + + + 12 + 0 + + + + + IDENTICAL_UINT17_0_127500 + IDENTICAL_UINT17_0_127500 + + IDENTICAL + + + 32 + + + + 0 + 127500 + + + + IDENTICAL_UINT18_0_250000_MicroSecond + IDENTICAL_UINT18_0_250000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 250000 + + + + + IDENTICAL_UINT25_0_30000000_MicroSecond + IDENTICAL_UINT25_0_30000000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 30000000 + + + + + IDENTICAL_UINT27_0_100000000_MicroSecond + IDENTICAL_UINT27_0_100000000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 100000000 + + + + + IDENTICAL_UINT27_0_125000000_MicroSecond + IDENTICAL_UINT27_0_125000000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 125000000 + + + + + IDENTICAL_UINT30_0_655350000_MicroSecond + IDENTICAL_UINT30_0_655350000_MicroSecond + + IDENTICAL + + + 32 + + + + 0 + 655350000 + + + + + IDENTICAL_UINT32_Baud + IDENTICAL_UINT32_Baud + + IDENTICAL + + + 32 + + + + + + IDENTICAL_UINT32_MicroSecond + IDENTICAL_UINT32_MicroSecond + + IDENTICAL + + + 32 + + + + + + IDENTICAL_UINT7_HEX + IDENTICAL_UINT7_HEX + + IDENTICAL + + + 16 + + + + 0 + 127 + + + + LINEAR_UINT8_UINT32_10000x_MicroSecond + LINEAR_UINT8_UINT32_10000x_MicroSecond + + LINEAR + + + + + + 0 + 10000 + + + 1 + + + + + + + + 8 + + + + + + LINEAR_UINT8_UINT32_1000x_MicroSecond + LINEAR_UINT8_UINT32_1000x_MicroSecond + + LINEAR + + + + + + 0 + 1000 + + + 1 + + + + + + + + 8 + + + + + + LINEAR_UINT8_UINT32_2560000x_MicroSecond + LINEAR_UINT8_UINT32_2560000x_MicroSecond + + LINEAR + + + + + + 0 + 2560000 + + + 1 + + + + + + + + 8 + + + + + + LINEAR_UINT8_UINT32_256000x_MicroSecond + LINEAR_UINT8_UINT32_256000x_MicroSecond + + LINEAR + + + + + + 0 + 256000 + + + 1 + + + + + + + + 8 + + + + + + TEXTTABLE_UINT1_Disabled_Enabled + TEXTTABLE_UINT1_Disabled_Enabled + + TEXTTABLE + + + + 0 + + Disabled + + + + 1 + + Enabled + + + + + + + 32 + + + + 0 + 1 + + + + TEXTTABLE_UINT1_Off_On + TEXTTABLE_UINT1_Off_On + + TEXTTABLE + + + + 0 + + Off + + + + 1 + + On + + + + + + + 32 + + + + 0 + 1 + + + + TEXTTABLE_UINT1_SuspendQueueOnError + TEXTTABLE_UINT1_SuspendQueueOnError + + TEXTTABLE + + + + +

Do not suspend ComPrimitive Transmit Queue

+
+ 0 + + Do not suspend + +
+ + +

Suspend ComPrimitive Transmit Queue on a Timeout Error or on a non-handled 0x7F error (not an enabled protocol ComParam)

+
+ 1 + + Suspend + +
+
+
+
+ + 32 + + + + 0 + 1 + +
+ + TEXTTABLE_UINT1_SwCan_HighVoltage + TEXTTABLE_UINT1_SwCan_HighVoltage + + TEXTTABLE + + + + +

Normal Message

+
+ 0 + + Normal + +
+ + +

High-Voltage Message

+
+ 1 + + High voltage + +
+
+
+
+ + 32 + + + + 0 + 1 + +
+ + TEXTTABLE_UINT1_TesterPresentAddrMode + TEXTTABLE_UINT1_TesterPresentAddrMode + + TEXTTABLE + + + + +

Use Physical Addressing for the Tester Present message

+
+ 0 + + Physical + +
+ + +

Use Functional Addressing for the Tester Present message

+
+ 1 + + Functional + +
+
+
+
+ + 32 + + + + 0 + 1 + +
+ + TEXTTABLE_UINT1_TesterPresentReqRsp + TEXTTABLE_UINT1_TesterPresentReqRsp + + TEXTTABLE + + + + +

No response returned by an ECU on a Tester Present message

+
+ 0 + + No response + +
+ + +

An ECU response is expected from a Tester Present message. The response message will be discarded by the MVCI Protocol Module.

+
+ 1 + + Response expected + +
+
+
+
+ + 32 + + + + 0 + 1 + +
+ + TEXTTABLE_UINT1_TesterPresentSendType + TEXTTABLE_UINT1_TesterPresentSendType + + TEXTTABLE + + + + +

Send on periodic interval defined by CP_TesterPresentTime

+
+ 0 + + Periodic + +
+ + +

Send when bus has been idle for CP_TesterPresentTime

+
+ 1 + + On idle + +
+
+
+
+ + 32 + + + + 0 + 1 + +
+ + TEXTTABLE_UINT2_0_2_RC21Handling + TEXTTABLE_UINT2_0_2_RC21Handling + + TEXTTABLE + + + + 0 + + Disabled + + + + +

Continue handling negative responses until CP_RC21CompletionTimeout

+
+ 1 + + Continue until RC21 timeout + +
+ + +

Continue handling unlimited (until disabled)

+
+ 2 + + Continue unlimited + +
+
+
+
+ + 32 + + + + 0 + 2 + +
+ + TEXTTABLE_UINT2_0_2_RC23Handling + TEXTTABLE_UINT2_0_2_RC23Handling + + TEXTTABLE + + + + 0 + + Disabled + + + + +

Continue handling negative responses until CP_RC23CompletionTimeout

+
+ 1 + + Continue until RC23 timeout + +
+ + +

Continue handling unlimited (until disabled)

+
+ 2 + + Continue unlimited + +
+
+
+
+ + 32 + + + + 0 + 2 + +
+ + TEXTTABLE_UINT2_0_2_RC78Handling + TEXTTABLE_UINT2_0_2_RC78Handling + + TEXTTABLE + + + + 0 + + Disabled + + + + +

Continue handling negative responses until CP_RC78CompletionTimeout

+
+ 1 + + Continue until RC78 timeout + +
+ + +

Continue handling unlimited (until disabled)

+
+ 2 + + Continue unlimited + +
+
+
+
+ + 32 + + + + 0 + 2 + +
+ + TEXTTABLE_UINT32_1_4294967295_RCByteOffset + TEXTTABLE_UINT32_1_4294967295_RCByteOffset + + TEXTTABLE + + + + +

first byte after the Service Id byte (0x7F)

+
+ 1 + + First byte + +
+ + +

last byte in message (not including checksum bytes)

+
+ 4294967295 + + Last byte + +
+
+
+
+ + 32 + + + + 1 + 4294967295 + + + 2 + 4294967294 + + + +
+ + TEXTTABLE_UINT8_ChangeSpeedResCtrl + TEXTTABLE_UINT8_ChangeSpeedResCtrl + + TEXTTABLE + + + + +

DISABLE_AUTO_RESISTOR

+
+ 0 + + Not used + +
+ + +

AUTO_LOAD_AC_RESISTOR

+
+ 1 + + AC load resistor + +
+ + +

AUTO_LOAD_60OHM_RESISTOR

+
+ 2 + + 60 Ohm load resistor + +
+ + +

AUTO_LOAD_120OHM_RESISTOR

+
+ 3 + + 120 Ohm load resistor + +
+ + +

AUTO_LOAD_SWCAN_RESISTOR

+
+ 4 + + SWCAN load resistor + +
+ + +

AUTO_UNLOAD_RESISTOR

+
+ 128 + + Unload resistor + +
+
+
+
+ + 32 + + + + 0 + 128 + + + 5 + 127 + + + +
+
+ + + + Baud + Baud + Bd + + + MicroSecond + Micro-Second + µs + + + +
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_15765_3_on_ISO_15765_2.odx-c b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_15765_3_on_ISO_15765_2.odx-c new file mode 100644 index 0000000..42aa99f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/ISO_15765_3_on_ISO_15765_2.odx-c @@ -0,0 +1,122 @@ + + + + ISO_15765_3_on_ISO_15765_2 + ISO 15765-3 on ISO 15765-2 + +

ISO UDS on CAN

+
+ + en-UK + + + + 1.0.0 + Release + 2009-04-17T00:00:00 + + + No changes + Official version + + + + + + + + ISO + International Organization for Standardization (ISO) + + + Joint_COMPARAM_Group + Joint COMPARAM-Group +
Arnikastrasse 2
+ 85635 + Hoehenkirchen + +49 8102 895317 + +49 8102 895310 + info@asam.net +
+
+ + + + + ISO_22900_2 + ISO 22900-2 + 2.2.0 + Release + 2009-01-27T00:00:00 + ISO + + + + + ISO_22901_1 + ISO 22901-1 + 2.2.0 + Release + 2008-11-06T00:00:00 + ISO + + + + +
+
+ + + ISO_15765_3_on_ISO_15765_2_on_ISO_11898_2_DWCAN + ISO 15765-3 on ISO 15765-2 on ISO 11898-2 DWCAN + +

protocol ISO_15765_3_on_ISO_15765_2 on physical layer ISO_11898_2_DWCAN

+
+ ISO_15765_3_on_ISO_15765_2 + ISO_11898_2_DWCAN + + + + + + + + +
+ + ISO_15765_3_on_ISO_15765_2_on_ISO_11898_3_DWFTCAN + ISO 15765-3 on ISO 15765-2 on ISO 11898-3 DWFTCAN + +

protocol ISO_15765_3_on_ISO_15765_2 on physical layer ISO_11898_3_DWFTCAN

+
+ ISO_15765_3_on_ISO_15765_2 + ISO_11898_3_DWFTCAN + + + + + + + + +
+ + ISO_15765_3_on_ISO_15765_2_on_SAE_J2411_SWCAN + ISO 15765-3 on ISO 15765-2 on SAE J2411 SWCAN + +

protocol ISO_15765_3_on_ISO_15765_2 on physical layer SAE_J2411_SWCAN

+
+ ISO_15765_3_on_ISO_15765_2 + SAE_J2411_SWCAN + + + + + + + + +
+
+
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/SAE_J2411_SWCAN.odx-cs b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/SAE_J2411_SWCAN.odx-cs new file mode 100644 index 0000000..e99c0fd --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/SAE_J2411_SWCAN.odx-cs @@ -0,0 +1,286 @@ + + + + SAE_J2411_SWCAN + SAE J2411 SWCAN + + en-UK + + + + 1.0.0 + Release + 2009-04-17T00:00:00 + + + No changes + Official version + + + + + + + + ISO + International Organization for Standardization (ISO) + + + Joint_COMPARAM_Group + Joint COMPARAM-Group +
Arnikastrasse 2
+ 85635 + Hoehenkirchen + +49 8102 895317 + +49 8102 895310 + info@asam.net +
+
+ + + + + ISO_22900_2 + ISO 22900-2 + 2.2.0 + Release + 2009-01-27T00:00:00 + ISO + + + + + ISO_22901_1 + ISO 22901-1 + 2.2.0 + Release + 2008-11-06T00:00:00 + ISO + + + + +
+
+ + + CP_Baudrate + CP_Baudrate + +

Represents the desired baud rate.

+

If the desired baud rate cannot be achieved within the tolerance of the protocol, the interface will remain at the previous baud rate.

+
+ 125000 + +
+ + CP_BitSamplePoint + CP_BitSamplePoint + +

This sets the desired bit sample point as a percentage of the bit time.

+
+ 80 + +
+ + CP_ListenOnly + CP_ListenOnly + +

Enable a Listen Only mode on the Com Logical Link

+

This will cause the link to no longer acknowledge received frames on the CAN Network.

+
+ Disabled + +
+ + CP_SamplesPerBit + CP_SamplesPerBit + +

Number of samples per bit

+
+ 1-Sample + +
+ + CP_SyncJumpWidth + CP_SyncJumpWidth + +

This sets the desired synchronization jump width as a percentage of the bit time.

+
+ 15 + +
+ + CP_TerminationType + CP_TerminationType + +

CAN termination settings

+

This ComParam can be used to manually change the termination being used on the vehicle bus line.

+
+ No termination + +
+
+ + + IDENTICAL_UINT32_Baud + IDENTICAL_UINT32_Baud + + IDENTICAL + + + 32 + + + + + + IDENTICAL_UINT7_0_100_PerCent + IDENTICAL_UINT7_0_100_PerCent + + IDENTICAL + + + 32 + + + + 0 + 100 + + + + + TEXTTABLE_UINT1_Disabled_Enabled + TEXTTABLE_UINT1_Disabled_Enabled + + TEXTTABLE + + + + 0 + + Disabled + + + + 1 + + Enabled + + + + + + + 32 + + + + 0 + 1 + + + + TEXTTABLE_UINT1_SamplesPerBit + TEXTTABLE_UINT1_SamplesPerBit + + TEXTTABLE + + + + +

1 sample per bit

+
+ 0 + + 1-Sample + +
+ + +

3 samples per bit

+
+ 1 + + 3-Sample + +
+
+
+
+ + 32 + + + + 0 + 1 + +
+ + TEXTTABLE_UINT3_0_4_TerminationType + TEXTTABLE_UINT3_0_4_TerminationType + + TEXTTABLE + + + + 0 + + No termination + + + + 1 + + AC termination + + + + 2 + + 60 Ohm termination + + + + 3 + + 120 Ohm termination + + + + 4 + + SWCAN termination + + + + + + + 32 + + + + 0 + 4 + + +
+ + + + Baud + Baud + Bd + + + PerCent + Per Cent + % + + + +
+
diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/UDS-ExampleEcu-5.2.0.odx-d b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/UDS-ExampleEcu-5.2.0.odx-d new file mode 100644 index 0000000..69b2519 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/UDS-ExampleEcu-5.2.0.odx-d @@ -0,0 +1,23520 @@ + + + + + + + + + Door + Door + +

+ + + +
+ + en-US + + + + CAN + CAN + + + + + FlexRay_ISO + FlexRay (ISO10681 TP) + +

Communication interface for FlexRay protocol. Based on the specification: ISO10681-2 "Road vehicles — Communication on FlexRay — Part 2: Communication Layer services". ISO document date 2009-10-23.

+
+ + +
+ + FlexRay_Autosar2x + FlexRay (Autosar2x TP) + +

Communication interface for FlexRay protocol. Based on the Autosar2x specific transport protocol.

+
+ + +
+ + Diagnostic_DoIP_ISO13400_2012 + Diagnostic DoIP (ISO13400:2012) + +

Communication interface for Diagnostics over IP (DoIP) protocol. Based on the specification: ISO13400-2:2012 "Road vehicles — Diagnostic communication over Internet Protocol(DoIP) — Part 2: Network and transport layer requirements and services" and the referenced ISO22900-2 (D-PDU API) for ComParam qualifiers.

+
+ + +
+
+ + + Door + Door + + + Sessions + Sessions + +

This Diagnostic Class is describing the use case of the Session Management.

+
+
+ + Ecu_Reset + Ecu Reset + + + SecurityAccess + Security Access + + + Authentication + Authentication + + + Communication_Control + Communication Control + + + TesterPresent + Tester Present + + + ControlDTCSetting + Control DTC Setting + + + ECU_Identification + ECU Identification + + + Variant_Coding + Variant Coding + + + Stored_Data + Stored Data + + + Dynamic_Data + Dynamic Data + + + Periodic_Data + Periodic Data + + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + + + IOControl + IO Control + + + Routine_Control + Routine Control + + + FaultMemory + Fault Memory + + + Upload_Download + Upload/Download + +
+ + + + RecordDataType + RecordDataType + + 24 + + + + IDENTICAL + + + + DTC01 + 1 + P000001 + Voltage too low + + + + SetCondition + Set Condition + + Voltage < 10V, t > 1s + + + + ResetCondition + Reset condition & self healing + + U_BAT (of EZS) for t > 15s; Self healing after 100 trips without occurence. + + + + CorrectiveAction + Corrective action + + No known corrective action + + + + DTC_OPERATION_CYCLE + Operation Cycle + +

Kind of operation cycle for the event storage(e.g. power cycle, driving cycle, ...)

+
+
+ DEM_POWER +
+ + + NUMBER_OF_TRIPS_ACTIVE + Number of Trips - Active + +

Number of operation cycles needed to confirm the event + +The value 0 is the standard UDS behavior of confirming the event (ConfirmedDTC status bit becomes set) with the first qualified FAILED result. A value of 1 means the event becomes confirmed if it fails again in the next operation cycle. +Larger values represent confirmation in the n-th cycle e.g. 2 is confirmation in cycle after the next cycle, etc.

+
+
+ 0 +
+ + + DTC_AGING_SUPPORTED + Self Healing (Aging) + +

Supported: Aging/ unlearning of the event is supported +Not Supported: Aging/ unlearning of the event is not supported

+
+
+ supported +
+ + + DTC_AGING_CYCLE + Healing Cycle + + DEM_POWER + + + + DTC_AGING_COUNTER + Healing Cycles + +

Cycles necessary to heal/erase event. +Note: Activate 'Self Healing (Aging)' when using this item

+
+
+ 0 +
+ + + DTC_INIT_MONITOR_REQUIRED + Monitor Initialization Function + +

Monitor initialization function is (not) required for this event

+
+
+ not required +
+ + + DTC_PRIORITY_VALUE + DTC Priority + +

Priority of an event, in view of full event buffer (ref. to Dem104)

+
+
+ 0 +
+ + + DTC_SEVERITY_VALUE + DTC Severity + +

Reports the recommended action to be taken by the system (e.g. vehicle) operator

+
+
+ noSeverity +
+ + + DTC_DEBOUNCING_ALGORITHM + Pre-Debounce Algorithm + +

Selects a Predebounce Algorithm

+
+
+ Counter based +
+ + + DTC_STEP_SIZE_PREFAILED + Count-In step size + +

Defines the Step size for incrementation (PREFAILED). Range: 0 - 127

+
+
+ 0 +
+ + + DTC_STEP_SIZE_PREPASSED + Count-out step size + +

Defines the Step size for decrementation (PREPASSED). Range 0 - 127

+
+
+ 0 +
+ + + DTC_JUMP_UP_PREFAILED + Use Jump-Up (Prefailed) + +

Switch for the activation of Jump-UP: +Jump to Zero upon a change of the reported result (i.e. when after a sequence of 'prepassed' the result changes to 'prefailed')

+
+
+ Yes +
+ + + DTC_JUMP_DOWN_PREPASSED + Use Jump-Down (Prepassed) + +

Switch for the activation of Jump-Down – only in combination with Jump-UP activation: +Jump to Zero upon a change of the reported result (i.e. when after a sequence of 'prefailed' the result changes to 'prepassed')

+
+
+ No +
+ + + DTC_WARNING_INDICATOR_FLAG + Set WarningIndicatorBit at fault + +

Yes - the warningIndicatorRequested bit (bit 7) will be set at the same time as the confirmedDTC bit (bit 3) is set. +No - the warningIndicatorRequested bit (bit 7) is 0 at all times.

+
+
+ supported +
+ + + DTC_FUNCTIONAL_UNIT_VALUE + Functional Unit + +

Can be used to identify the corresponding basic vehicle / system function which monitors this DTC.

+
+
+ 0xFF +
+ + + DTC_TIMEOUT_VALUE_PREFAILED + DTC Debounce Failed Timeout Value + +

This parameter defines the time [ms] for event failed qualification of the DTC specific time based debouncing.

+
+
+ 0 +
+ + + DTC_TIMEOUT_VALUE_PREPASSED + DTC Debounce Passed Timeout Value + +

This parameter defines the time [ms] for event passed qualification of the DTC specific time based debouncing.

+
+
+ 0 +
+
+
+ + DTC02 + 2 + P000002 + Voltage too high + + + + Voltage > 14V, t > 1s + + + + U_BAT (of EZS) for t > 15s; Self healing after 100 trips without occurence. + + + + No known corrective action + + + + DEM_POWER + + + + 0 + + + + supported + + + + DEM_POWER + + + + 0 + + + + not required + + + + 0 + + + + noSeverity + + + + Counter based + + + + 0 + + + + 0 + + + + Yes + + + + No + + + + supported + + + + 0xFF + + + + 0 + + + + 0 + + + + + DTC800001 + 8388609 + B000001 + Failure in door contact front left + + + + t > 2s + + + + ECU Reset (new wake up phase); Self healing after 100 trips without occurence. + + + + No known corrective action + + + + DEM_POWER + + + + 0 + + + + supported + + + + DEM_POWER + + + + 0 + + + + not required + + + + 0 + + + + noSeverity + + + + Counter based + + + + 0 + + + + 0 + + + + Yes + + + + No + + + + supported + + + + 0xFF + + + + 0 + + + + 0 + + + + + DTC800002 + 8388610 + B000002 + Failure in door contact front right + + + + t > 2s + + + + ECU Reset (new wake up phase); Self healing after 100 trips without occurence. + + + + No known corrective action + + + + DEM_POWER + + + + 0 + + + + supported + + + + DEM_POWER + + + + 0 + + + + not required + + + + 0 + + + + noSeverity + + + + Counter based + + + + 0 + + + + 0 + + + + Yes + + + + No + + + + supported + + + + 0xFF + + + + 0 + + + + 0 + + + + + DTC800003 + 8388611 + B000003 + Failure in door contact rear left + + + + t > 2s + + + + ECU Reset (new wake up phase); Self healing after 100 trips without occurence. + + + + No known corrective action + + + + DEM_POWER + + + + 0 + + + + supported + + + + DEM_POWER + + + + 0 + + + + not required + + + + 0 + + + + noSeverity + + + + Counter based + + + + 0 + + + + 0 + + + + Yes + + + + No + + + + supported + + + + 0xFF + + + + 0 + + + + 0 + + + + + DTC800004 + 8388612 + B000004 + Failure in door contact rear right + + + + t > 2s + + + + ECU Reset (new wake up phase); Self healing after 100 trips without occurence. + + + + No known corrective action + + + + DEM_POWER + + + + 0 + + + + supported + + + + DEM_POWER + + + + 0 + + + + not required + + + + 0 + + + + noSeverity + + + + Counter based + + + + 0 + + + + 0 + + + + Yes + + + + No + + + + supported + + + + 0xFF + + + + 0 + + + + 0 + + + +
+
+
+ + + DTCSnapshotRecordData + DTCSnapshotRecordData + + + + + + + + + HexDump_1Byte + HexDump (1 Byte) + + IDENTICAL + + + 8 + + + + + HexDump_2Byte + HexDump (2 Byte) + + IDENTICAL + + + 16 + + + + + HexDump_4Byte + HexDump (4 Byte) + + IDENTICAL + + + 32 + + + + + DTCStatusByte + DTC Status Byte + + IDENTICAL + + + 8 + + + + + TestFailed + Test failed + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + TestFailedThisMonitoringCycle + Test failed this monitoring cycle + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + PendingDtc + Pending DTC + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + ConfirmedDtc + Confirmed DTC + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + TestNotCompletedSinceLastClear + Test not completed since last clear + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + TestFailedSinceLastClear + Test failed since last clear + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + TestNotCompletedThisMonitoringCycle + Test not completed this monitoring cycle + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + WarningIndicatorRequested + Warning indicator requested + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + DtcGroups + DTC Groups + + TEXTTABLE + + + + 0 + 0 + + Emission-related systems + + + + 1048576 + 1048576 + + Powertrain group + + + + 4194304 + 4194304 + + Chassis group + + + + 8388608 + 8388608 + + Body group + + + + 12582912 + 12582912 + + Network communication group + + + + 16777215 + 16777215 + + All groups + + + + + + + 24 + + + + + + 1 + 1048575 + + + 1048577 + 4194303 + + + 4194305 + 8388607 + + + 8388609 + 12582911 + + + 12582913 + 16777214 + + + + + + offOn_1Bit + off/on (1 Bit) + +

0=off; 1=on

+
+ + TEXTTABLE + + + + 0 + 0 + + off + + + + 1 + 1 + + on + + + + + + + 1 + + +
+ + Bcd_2_Byte + Bcd (2 Byte) + + IDENTICAL + + + 16 + + + + + PartNumberSize13 + Part Number ASCII (13 Byte) + + IDENTICAL + + + 104 + + + + + ExtendedDataRecordNumber + ExtendedDataRecordNumber + + TEXTTABLE + + + + Counts the number of times the DTC have been set. + 1 + 1 + + OccurrenceCounter + + + + + + + 8 + + + + + + 0 + 0 + + + 2 + 255 + + + + + + SID_RQ_NR + SID-RQ-NR + + TEXTTABLE + + + + 0 + 255 + + 0 + + + Generic Range + + + + + + + 8 + + + + + Short_Identifier + Short Identifier + + TEXTTABLE + + + + 0 + 255 + + 0 + + + Generic Range + + + + + + + 8 + + + + + DTC_AllSupportedSnapshotRecordNumbers + DTC AllSupportedSnapshotRecordNumbers + + TEXTTABLE + + + + 1 + 1 + + Snapshot + + + + + + + 8 + + + + + + 0 + 0 + + + 2 + 255 + + + + + + DTCCount + DTCCount + + IDENTICAL + + + 16 + + + + + P2 + P2 + + IDENTICAL + + + 16 + + + + + + P2Ex + P2Ex + + LINEAR + + + + + + 0 + 10 + + + + + + + + 16 + + + + + + Serial_Number_4_Byte + Serial Number (4 Byte) + + IDENTICAL + + + 32 + + + + + VIN_17_Byte + VIN (17 Byte) + + IDENTICAL + + + 136 + + + + + CommunicationTypeNetworks + CommunicationTypeNetworks + + TEXTTABLE + + + + 0 + 0 + + allNetworks + + + + 15 + 15 + + receivingNetworks + + + + + + + 4 + + + + + + 1 + 14 + + + + + + DataIdentifier + DataIdentifier + + TEXTTABLE + + + + 1 + 61439 + + 1 + + + VehicleManufacturerSpecific + + + + 61440 + 61455 + + 61440 + + + networkConfigurationDataForTractorTrailerApplicationDataIdentifier + + + + 61456 + 61695 + + 61456 + + + vehicleManufacturerSpecific + + + + 61696 + 61823 + + 61696 + + + identificationOptionVehicleManufacturerSpecificDataIdentifier + + + + 61824 + 61824 + + BootSoftwareIdentificationDataIdentifier + + + + 61825 + 61825 + + applicationSoftwareIdentificationDataIdentifier + + + + 61826 + 61826 + + applicationDataIdentificationDataIdentifier + + + + 61827 + 61827 + + bootSoftwareFingerprintDataIdentifier + + + + 61828 + 61828 + + applicationSoftwareFingerprintDataIdentifier + + + + 61829 + 61829 + + applicationDataFingerprintDataIdentifier + + + + 61830 + 61830 + + ActiveDiagnosticSessionDataIdentifier + + + + 61831 + 61831 + + vehicleManufacturerSparePartNumberDataIdentifier + + + + 61832 + 61832 + + vehicleManufacturerECUSoftwareNumberDataIdentifier + + + + 61833 + 61833 + + vehicleManufacturerECUSoftwareVersionNumberDataIdentifier + + + + 61834 + 61834 + + systemSupplierIdentifierDataIdentifier + + + + 61835 + 61835 + + ECUManufacturingDateDataIdentifier + + + + 61836 + 61836 + + ECUSerialNumberDataIdentifier + + + + 61837 + 61837 + + supportedFunctionalUnitsDataIdentifier + + + + 61838 + 61838 + + VehicleManufacturerKitAssemblyPartNumberDataIdentifier + + + + 61840 + 61840 + + VINDataIdentifier + + + + 61841 + 61841 + + vehicleManufacturerECUHardwareNumberDataIdentifier + + + + 61842 + 61842 + + systemSupplierECUHardwareNumberDataIdentifier + + + + 61843 + 61843 + + systemSupplierECUHardwareVersionNumberDataIdentifier + + + + 61844 + 61844 + + systemSupplierECUSoftwareNumberDataIdentifier + + + + 61845 + 61845 + + systemSupplierECUSoftwareVersionNumberDataIdentifier + + + + 61846 + 61846 + + exhaustRegulationOrTypeApprovalNumberDataIdentifier + + + + 61847 + 61847 + + systemNameOrEngineTypeDataIdentifier + + + + 61848 + 61848 + + repairShopCodeOrTesterSerialNumberDataIdentifier + + + + 61849 + 61849 + + programmingDateDataIdentifier + + + + 61850 + 61850 + + calibrationRepairShopCodeOrCalibrationEquipmentSerialNumberDataIdentifier + + + + 61851 + 61851 + + calibrationDateDataIdentifier + + + + 61852 + 61852 + + calibrationEquipmentSoftwareNumberDataIdentifier + + + + 61853 + 61853 + + ECUInstallationDateDataIdentifier + + + + 61854 + 61854 + + ODXFileDataIdentifier + + + + 61855 + 61855 + + EntityDataIdentifier + + + + 61856 + 61935 + + 61856 + + + identificationOptionVehicleManufacturerSpecific + + + + 61936 + 61951 + + 61936 + + + identificationOptionSystemSupplierSpecific + + + + 61952 + 62207 + + 61952 + + + periodicDataIdentifier + + + + 62208 + 62463 + + 62208 + + + DynamicallyDefinedDataIdentifier + + + + 62464 + 62719 + + 62464 + + + OBDDataIdentifier + + + + 62720 + 62975 + + 62464 + + + OBDDataIdentifier + + + + 62976 + 63231 + + 62976 + + + OBDMonitorDataIdentifier + + + + 63232 + 63487 + + 62976 + + + OBDMonitorDataIdentifier + + + + 63488 + 63743 + + 63488 + + + OBDInfoTypeDataIdentifier + + + + 63744 + 63999 + + 63744 + + + TachographDataIdentifier + + + + 64000 + 64015 + + 64000 + + + AirbagDeploymentDataIdentifier + + + + 64016 + 64255 + + 64016 + + + SafetySystemDataIdentifier + + + + 64256 + 64767 + + 64256 + + + ReservedForLegislativeUse + + + + 64768 + 65279 + + 64768 + + + SystemSupplierSpecific + + + + + + + 16 + + + + + + 0 + 0 + + + 61839 + 61839 + + + 65280 + 65535 + + + + + + Subfunction_CommunicationControl + Subfunction CommunicationControl + + TEXTTABLE + + + + 0 + 0 + + enableRxAndTx + + + + 1 + 1 + + enableRxAndDisableTx + + + + 2 + 2 + + disableRxAndEnableTx + + + + 3 + 3 + + disableRxAndTx + + + + 64 + 95 + + 64 + + + vehicleManufacturerSpecific + + + + 96 + 126 + + 96 + + + systemSupplierSpecific + + + + + + + 8 + + + + + + 4 + 63 + + + 127 + 255 + + + + + + Subfunction_DiagnosticSessionControl + Subfunction DiagnosticSessionControl + + TEXTTABLE + + + + 1 + 1 + + defaultSession + + + + 2 + 2 + + programmingSession + + + + 3 + 3 + + extendedDiagnosticSession + + + + 4 + 4 + + safetySystemDiagnosticSession + + + + 64 + 95 + + 64 + + + vehicleManufacturerSpecific + + + + 96 + 126 + + 96 + + + systemSupplierSpecific + + + + + + + 8 + + + + + + 0 + 0 + + + 5 + 63 + + + 127 + 255 + + + + + + Subfunction_EcuReset + Subfunction EcuReset + + TEXTTABLE + + + + 1 + 1 + + hardReset + + + + 2 + 2 + + keyOffOnReset + + + + 3 + 3 + + softReset + + + + 4 + 4 + + enableRapidPowerShutDown + + + + 5 + 5 + + disableRapidPowerShutDown + + + + 64 + 95 + + 64 + + + vehicleManufacturerSpecific + + + + 96 + 126 + + 96 + + + systemSupplierSpecific + + + + + + + 8 + + + + + + 0 + 0 + + + 6 + 63 + + + 127 + 255 + + + + + + Subfunction_SecurityAccess + Subfunction SecurityAccess + + TEXTTABLE + + + + 1 + 1 + + requestSeed + + + + 2 + 2 + + sendKey + + + + 3 + 3 + + 1 + + + requestSeed + + + + 4 + 4 + + 2 + + + sendKey + + + + 5 + 5 + + 1 + + + requestSeed + + + + 6 + 6 + + 2 + + + sendKey + + + + 17 + 17 + + 1 + + + requestSeed + + + + 18 + 18 + + 2 + + + sendKey + + + + 95 + 95 + + ISOSAEReserved requestSeed values + + + + 96 + 96 + + ISOSAEReserved sendKey values + + + + 97 + 126 + + 97 + + + systemSupplierSpecific + + + + + + + 8 + + + + + + 0 + 0 + + + 7 + 16 + + + 19 + 94 + + + 127 + 255 + + + + + + AddressAndLengthFormatIdentifier + Address and Length Format Identifier + +

Examples for addressAndLengthFormatIdentifier parameter values regarding to ISO 14229-1 Annex G.1

+
+ + TEXTTABLE + + + + 17 + 17 + + Length: memoryAddress 1 byte, memorySize 1 byte + + + + 18 + 18 + + Length: memoryAddress 2 byte, memorySize 1 byte + + + + 19 + 19 + + Length: memoryAddress 3 byte, memorySize 1 byte + + + + 20 + 20 + + Length: memoryAddress 4 byte, memorySize 1 byte + + + + 33 + 33 + + Length: memoryAddress 1 byte, memorySize 2 byte + + + + 34 + 34 + + Length: memoryAddress 2 byte, memorySize 2 byte + + + + 35 + 35 + + Length: memoryAddress 3 byte, memorySize 2 byte + + + + 36 + 36 + + Length: memoryAddress 4 byte, memorySize 2 byte + + + + 49 + 49 + + Length: memoryAddress 1 byte, memorySize 3 byte + + + + 50 + 50 + + Length: memoryAddress 2 byte, memorySize 3 byte + + + + 51 + 51 + + Length: memoryAddress 3 byte, memorySize 3 byte + + + + 52 + 52 + + Length: memoryAddress 4 byte, memorySize 3 byte + + + + 65 + 65 + + Length: memoryAddress 1 byte, memorySize 4 byte + + + + 66 + 66 + + Length: memoryAddress 2 byte, memorySize 4 byte + + + + 67 + 67 + + Length: memoryAddress 3 byte, memorySize 4 byte + + + + 68 + 68 + + Length: memoryAddress 4 byte, memorySize 4 byte + + + + 69 + 69 + + Length: memoryAddress 5 byte, memorySize 4 byte + + + + + + + 8 + + + + + + 0 + 16 + + + 21 + 32 + + + 37 + 48 + + + 53 + 64 + + + 70 + 255 + + + +
+ + HexDump_3Byte + HexDump (3 Byte) + + IDENTICAL + + + 24 + + + + + Memory_1_Byte_Size_Info + Memory (1 Byte Size Info) + + IDENTICAL + + + 8 + + + + + Memory_2_Byte_Size_Info + Memory (2 Byte Size Info) + + IDENTICAL + + + 16 + + + + + Memory_3_Byte_Size_Info + Memory (3 Byte Size Info) + + IDENTICAL + + + 24 + + + + + Subfunction_EventType_Set_up + Subfunction EventType (Set up) + + TEXTTABLE + + + + 1 + 1 + + OnDTCStatusChange (do not store event) + + + + 2 + 2 + + OnTimerInterrupt + + + + 3 + 3 + + OnChangeOfDataIdentifier + + + + 7 + 7 + + OnComparisonOfValues + + + + 32 + 47 + + 32 + + + VehicleManufacturerSpecific + + + + 48 + 62 + + 48 + + + SystemSupplierSpecific + + + + 65 + 65 + + OnDTCStatusChange (storeEvent) + + + + 66 + 66 + + OnTimerInterrupt (storeEvent) + + + + 67 + 67 + + OnChangeOfDataIdentifier (storeEvent) + + + + 71 + 71 + + OnComparisonOfValues (storeEvent) + + + + 96 + 111 + + 96 + + + VehicleManufacturerSpecific (storeEvent) + + + + 112 + 126 + + 112 + + + SystemSupplierSpecific (storeEvent) + + + + + + + 8 + + + + + + 0 + 0 + + + 4 + 6 + + + 8 + 31 + + + 63 + 64 + + + 68 + 70 + + + 72 + 95 + + + 127 + 255 + + + + + + DTC_AllSupportedSnapshotRecordNumbers_with_FF + DTC AllSupportedSnapshotRecordNumbers with FF + + TEXTTABLE + + + + 1 + 1 + + Snapshot + + + + 255 + 255 + + All Records (0xFF) + + + + + + + 8 + + + + + + 0 + 0 + + + 2 + 254 + + + + + + SnapshotRecordNumber_00_and_10 + SnapshotRecordNumber 00 and 10 + + TEXTTABLE + + + + 0 + 0 + + FreezeFrame + + + + 16 + 16 + + Snapshot Record 10 + + + + + + + 8 + + + + + + + 1 + 15 + + + + 17 + 254 + + + 255 + 255 + + + + + + SnapshotRecordNumber_10_and_20 + SnapshotRecordNumber 10 and 20 + + TEXTTABLE + + + + 16 + 16 + + Snapshot Record 10 + + + + 32 + 32 + + Snapshot Record 20 + + + + + + + 8 + + + + + + + 0 + 15 + + + + 17 + 31 + + + + 33 + 255 + + + + + + DTCFormatIdentifier + DTCFormatIdentifier + + TEXTTABLE + + + + 0 + 0 + + SAE_J2012-DA_DTCFormat + + + + 1 + 1 + + ISO_14229-1DTCFormat + + + + 2 + 2 + + SAE_J1939-73_DTCFormat + + + + 3 + 3 + + ISO_11992-4_DTCFormat + + + + 4 + 4 + + SAE_J2012-DA_WWHOBD_DTCFormat + + + + + + + 8 + + + + + + 5 + 255 + + + + + + FunctionalGroupID + FunctionalGroupID + + TEXTTABLE + + + + 51 + 51 + + Emission-system group + + + + 254 + 254 + + V-OBD system + + + + 255 + 255 + + All functional system groups + + + + + + + 8 + + + + + + 0 + 50 + + + 52 + 253 + + + + + + Hex_Dump_1_65536_Bytes + Hex Dump (1..65536 Bytes) + + IDENTICAL + + + 65536 + 1 + + + + + DTCSeverity_maintenanceOnly_Bit_5 + DTCSeverity-maintenanceOnly (Bit 5) + + TEXTTABLE + + + + 0 + 0 + + no maintenanceOnly severity + + + + 1 + 1 + + maintenanceOnly severity + + + + + + + 1 + + + + + DTCSeverity_checkAtNextHalt_Bit_6 + DTCSeverity-checkAtNextHalt (Bit 6) + + TEXTTABLE + + + + 0 + 0 + + do not checkAtNextHalt + + + + 1 + 1 + + checkAtNextHalt + + + + + + + 1 + + + + + DTCSeverity_checkImmediately_Bit_7 + DTCSeverity-checkImmediately (Bit 7) + + TEXTTABLE + + + + 0 + 0 + + do not checkImmediately + + + + 1 + 1 + + checkImmediately + + + + + + + 1 + + + + + DTCSeverity_DTC_Class_0_Bit_0 + DTCSeverity-DTC Class_0 (Bit 0) + + IDENTICAL + + + 1 + + + + + DTCSeverity_DTC_Class_1_Bit_1 + DTCSeverity-DTC Class_1 (Bit 1) + + IDENTICAL + + + 1 + + + + + DTCSeverity_DTC_Class_3_Bit_3 + DTCSeverity-DTC Class_3 (Bit 3) + + IDENTICAL + + + 1 + + + + + DTCSeverity_DTC_Class_2_Bit_2 + DTCSeverity-DTC Class_2 (Bit 2) + + IDENTICAL + + + 1 + + + + + DTCSeverity_DTC_Class_4_Bit_4 + DTCSeverity-DTC Class_4 (Bit 4) + + IDENTICAL + + + 1 + + + + + RoutineIdentifier + RoutineIdentifier + + TEXTTABLE + + + + 256 + 511 + + 256 + + + TachographTestIds + + + + 512 + 57343 + + 512 + + + vehicleManufacturerSpecific + + + + 57344 + 57855 + + 57344 + + + OBDTestIds + + + + 57856 + 57856 + + DeployLoopRoutineID + + + + 57857 + 58111 + + 57857 + + + SafetySystemsRoutineIDs + + + + 61440 + 65279 + + 61440 + + + systemSupplierSpecific + + + + 65280 + 65280 + + eraseMemory + + + + 65281 + 65281 + + checkProgrammingDependencies + + + + 65282 + 65282 + + eraseMemoryDTCs + + + + + + + 16 + + + + + + 0 + 255 + + + 58112 + 61439 + + + 65283 + 65535 + + + + + + EventWindowTime + EventWindowTime + + IDENTICAL + + + 8 + + + + + OccurrenceCounter + DTC OccurrenceCounter + + IDENTICAL + + + 8 + + + + + DTC_SnapshotRecordNumbers_only_FF + DTC SnapshotRecordNumbers only FF + + TEXTTABLE + + + + 255 + 255 + + All Records (0xFF) + + + + + + + 8 + + + + + + 0 + 254 + + + + + + HexDump_5_Byte + HexDump (5 Byte) + + IDENTICAL + + + 40 + + + + + Memory_4_Byte_Size_Info + Memory (4 Byte Size Info) + + IDENTICAL + + + 32 + + + + + ExtendedDataRecordNumber_with_FF + ExtendedDataRecordNumber with FF + + TEXTTABLE + + + + Counts the number of times the DTC have been set. + 1 + 1 + + OccurrenceCounter + + + + 255 + 255 + + ReadAllRecords + + + + + + + 8 + + + + + + 0 + 0 + + + 2 + 254 + + + + + + ExtendedDataRecordNumber_Group_A + ExtendedDataRecordNumber Group A + + TEXTTABLE + + + + Counts the number of times the DTC have been set. + 1 + 1 + + OccurrenceCounter + + + + 255 + 255 + + All Records + + + + + + + 8 + + + + + + 0 + 0 + + + 2 + 254 + + + + + + RecordDataIdentifier + Identifier + + TEXTTABLE + + + + 0 + 65535 + + 0 + + + Generic Range + + + + + + + 16 + + + + + ResponseOnEvent_EventWindowTime + ResponseOnEvent - EventWindowTime + + TEXTTABLE + + + + 2 + 2 + + InfiniteTimeToResponse + + + + 3 + 3 + + 30 Seconds + + + + 4 + 4 + + 40 Seconds + + + + 5 + 5 + + 50 Seconds + + + + 6 + 6 + + 60 Seconds + + + + 7 + 7 + + 70 Seconds + + + + 8 + 8 + + 80 Seconds + + + + 9 + 9 + + 90 Seconds + + + + 10 + 10 + + 100 Seconds + + + + 11 + 11 + + 110 Seconds + + + + 12 + 12 + + 120 Seconds + + + + 13 + 13 + + 130 Seconds + + + + 14 + 14 + + 140 Seconds + + + + 15 + 15 + + 150 Seconds + + + + 16 + 16 + + 160 Seconds + + + + 17 + 17 + + 170 Seconds + + + + 18 + 18 + + 180 Seconds + + + + 19 + 19 + + 190 Seconds + + + + 20 + 20 + + 200 Seconds + + + + 21 + 21 + + 210 Seconds + + + + 22 + 22 + + 220 Seconds + + + + 23 + 23 + + 230 Seconds + + + + 24 + 24 + + 240 Seconds + + + + 25 + 25 + + 250 Seconds + + + + 26 + 26 + + 260 Seconds + + + + 27 + 27 + + 270 Seconds + + + + 28 + 28 + + 280 Seconds + + + + 29 + 29 + + 290 Seconds + + + + 30 + 30 + + 300 Seconds + + + + 31 + 31 + + 310 Seconds + + + + 32 + 32 + + 320 Seconds + + + + 33 + 33 + + 330 Seconds + + + + 34 + 34 + + 340 Seconds + + + + 35 + 35 + + 350 Seconds + + + + 36 + 36 + + 360 Seconds + + + + 37 + 37 + + 370 Seconds + + + + 38 + 38 + + 380 Seconds + + + + 39 + 39 + + 390 Seconds + + + + 40 + 40 + + 400 Seconds + + + + 41 + 41 + + 410 Seconds + + + + 42 + 42 + + 420 Seconds + + + + 43 + 43 + + 430 Seconds + + + + 44 + 44 + + 440 Seconds + + + + 45 + 45 + + 450 Seconds + + + + 46 + 46 + + 460 Seconds + + + + 47 + 47 + + 470 Seconds + + + + 48 + 48 + + 480 Seconds + + + + 49 + 49 + + 490 Seconds + + + + 50 + 50 + + 500 Seconds + + + + 51 + 51 + + 510 Seconds + + + + 52 + 52 + + 520 Seconds + + + + 53 + 53 + + 530 Seconds + + + + 54 + 54 + + 540 Seconds + + + + 55 + 55 + + 550 Seconds + + + + 56 + 56 + + 560 Seconds + + + + 57 + 57 + + 570 Seconds + + + + 58 + 58 + + 580 Seconds + + + + 59 + 59 + + 590 Seconds + + + + 60 + 60 + + 600 Seconds + + + + 61 + 61 + + 610 Seconds + + + + 62 + 62 + + 620 Seconds + + + + 63 + 63 + + 630 Seconds + + + + 64 + 64 + + 640 Seconds + + + + 65 + 65 + + 650 Seconds + + + + 66 + 66 + + 660 Seconds + + + + 67 + 67 + + 670 Seconds + + + + 68 + 68 + + 680 Seconds + + + + 69 + 69 + + 690 Seconds + + + + 70 + 70 + + 700 Seconds + + + + 71 + 71 + + 710 Seconds + + + + 72 + 72 + + 720 Seconds + + + + 73 + 73 + + 730 Seconds + + + + 74 + 74 + + 740 Seconds + + + + 75 + 75 + + 750 Seconds + + + + 76 + 76 + + 760 Seconds + + + + 77 + 77 + + 770 Seconds + + + + 78 + 78 + + 780 Seconds + + + + 79 + 79 + + 790 Seconds + + + + 80 + 80 + + 800 Seconds + + + + 81 + 81 + + 810 Seconds + + + + 82 + 82 + + 820 Seconds + + + + 83 + 83 + + 830 Seconds + + + + 84 + 84 + + 840 Seconds + + + + 85 + 85 + + 850 Seconds + + + + 86 + 86 + + 860 Seconds + + + + 87 + 87 + + 870 Seconds + + + + 88 + 88 + + 880 Seconds + + + + 89 + 89 + + 890 Seconds + + + + 90 + 90 + + 900 Seconds + + + + 91 + 91 + + 910 Seconds + + + + 92 + 92 + + 920 Seconds + + + + 93 + 93 + + 930 Seconds + + + + 94 + 94 + + 940 Seconds + + + + 95 + 95 + + 950 Seconds + + + + 96 + 96 + + 960 Seconds + + + + 97 + 97 + + 970 Seconds + + + + 98 + 98 + + 980 Seconds + + + + 99 + 99 + + 990 Seconds + + + + 100 + 100 + + 1000 Seconds + + + + 101 + 101 + + 1010 Seconds + + + + 102 + 102 + + 1020 Seconds + + + + 103 + 103 + + 1030 Seconds + + + + 104 + 104 + + 1040 Seconds + + + + 105 + 105 + + 1050 Seconds + + + + 106 + 106 + + 1060 Seconds + + + + 107 + 107 + + 1070 Seconds + + + + 108 + 108 + + 1080 Seconds + + + + 109 + 109 + + 1090 Seconds + + + + 110 + 110 + + 1100 Seconds + + + + 111 + 111 + + 1110 Seconds + + + + 112 + 112 + + 1120 Seconds + + + + 113 + 113 + + 1130 Seconds + + + + 114 + 114 + + 1140 Seconds + + + + 115 + 115 + + 1150 Seconds + + + + 116 + 116 + + 1160 Seconds + + + + 117 + 117 + + 1170 Seconds + + + + 118 + 118 + + 1180 Seconds + + + + 119 + 119 + + 1190 Seconds + + + + 120 + 120 + + 1200 Seconds + + + + 121 + 121 + + 1210 Seconds + + + + 122 + 122 + + 1220 Seconds + + + + 123 + 123 + + 1230 Seconds + + + + 124 + 124 + + 1240 Seconds + + + + 125 + 125 + + 1250 Seconds + + + + 126 + 126 + + 1260 Seconds + + + + 127 + 127 + + 1270 Seconds + + + + + + + 8 + + + + + + + 0 + 0 + + + + 1 + 1 + + + + 128 + 255 + + + + + + LinkControl_Supported_Baudrates + LinkControl Supported Baudrates + + TEXTTABLE + + + + 17 + 17 + + CAN250000Baud + + + + 18 + 18 + + CAN500000Baud + + + + 19 + 19 + + CAN1000000Baud + + + + + + + 8 + + + + + + 0 + 16 + + + 20 + 255 + + + + + + MemoryOverflowIndication + MemoryOverflowIndication + + TEXTTABLE + + + + 0 + 0 + + No Memory Overflow + + + + 1 + 1 + + Memory Overflow detected + + + + + + + 8 + + + + + + Invalid + 2 + 255 + + + + + + DTC_Significance + DTC Significance + + TEXTTABLE + + + + 0 + 0 + + Fault + + + + 1 + 1 + + Occurrence + + + + + + + 8 + + + + + + Reserved + 2 + 255 + + + + + + DTC_Static_Priority + DTC Static Priority + + IDENTICAL + + + 8 + + + + + DTC_Aging_Counter_Counting_Upwards + DTC Aging Counter (Counting Upwards) + + IDENTICAL + + + 8 + + + + + DTC_Aging_Counter_Counting_Downwards + DTC Aging Counter (Counting Downwards) + + IDENTICAL + + + 8 + + + + + DTC_FaultDetectionCounter + DTC FaultDetectionCounter + + TEXTTABLE + + + + -128 + -128 + + Test Passed + + + + -127 + -1 + + -127 + + + Unqualified (passing) + + + + 0 + 0 + + Unqualified + + + + 1 + 126 + + 1 + + + Unqualified (failing) + + + + 127 + 127 + + Test Failed + + + + + + + 8 + + + + + DTC_FaultDetectionCounter_Maximum_since_last_DTC_clear + DTC FaultDetectionCounter - Maximum since last DTC clear + + TEXTTABLE + + + + -128 + -128 + + Test passed since last DTC clear + + + + -127 + -1 + + -127 + + + Test never completed - was passing + + + + 0 + 0 + + Test never run + + + + 1 + 126 + + 1 + + + Test never completed - was failing + + + + 127 + 127 + + Test failed since last DTC clear + + + + + + + 8 + + + + + DTC_FaultDetectionCounter_Maximum_this_Operation_Cycle + DTC FaultDetectionCounter - Maximum this Operation Cycle + + TEXTTABLE + + + + -128 + -128 + + Test passed this operation cycle + + + + -127 + -1 + + -127 + + + Test never completed - was passing + + + + 0 + 0 + + Test never run + + + + 1 + 126 + + 1 + + + Test never completed - was failing + + + + 127 + 127 + + Test failed this operation cycle + + + + + + + 8 + + + + + DTC_Number_of_Operation_Cycles_since_first_Fail + DTC Number of Operation Cycles since first Fail + + IDENTICAL + + + 8 + + + + + DTC_Number_of_Operation_Cycles_since_last_Fail + DTC Number of Operation Cycles since last Fail + + IDENTICAL + + + 8 + + + + + DTC_Number_of_Operation_Cycles_with_Failed_Test + DTC Number of Operation Cycles with Failed Test + + IDENTICAL + + + 8 + + + + + Subfunction_CommunicationControl_EnhancedAddressInformation + Subfunction CommunicationControl EnhancedAddressInformation + + TEXTTABLE + + + + 4 + 4 + + EnableRxAndDisableTxWithEnhancedAddressInformation + + + + 5 + 5 + + EnableRxAndTxWithEnhancedAddressInformation + + + + + + + 8 + + + + + + 0 + 3 + + + 6 + 255 + + + + + + SID_RQ + SID-RQ + + TEXTTABLE + + + + 0 + 255 + + 0 + + + Generic Range + + + + + + + 8 + + + + + DTC_OccurrenceCounter_2_Byte + DTC OccurrenceCounter (2 Byte) + + IDENTICAL + + + 16 + + + + + DTC_Number_of_Consecutive_Operation_Cycles_with_Failed_Test + DTC Number of Consecutive Operation Cycles with Failed Test + + IDENTICAL + + + 8 + + + + + DTC_Number_of_Tested_Operation_Cycles_since_first_Fail + DTC Number of Tested Operation Cycles since first Fail + + IDENTICAL + + + 8 + + + + + DTC_Root_Cause_EventId + DTC Root Cause EventId + + IDENTICAL + + + 16 + + + + + DTC_OBD + DTC OBD + + IDENTICAL + + + 16 + + + + + TestFailed_1Bit + TestFailed (1Bit) + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + TestFailedThisOperationCycle + TestFailedThisOperationCycle (1Bit) + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + PendingDTC + Pending DTC (1Bit) + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + ConfirmedDTC + Confirmed DTC (1Bit) + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + Test_not_completed_since_last_clear_1Bit + Test not completed since last clear (1Bit) + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + Test_failed_since_last_clear_1Bit + Test failed since last clear (1Bit) + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + TestNotCompletedThisOperationCycle + Test not completed this operation cycle (1Bit) + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + Warning_indicator_requested_1Bit + Warning indicator requested (1Bit) + + TEXTTABLE + + + + 0 + 0 + + false + + + + 1 + 1 + + true + + + + + + + 1 + + + + + OdometerValue_4_Byte + OdometerValue (4 Byte) + + LINEAR + + + + + + 0 + 1 + + + + + + + + 32 + + + + + + Odometer value too high + 1000000 + 4294967295 + + + + + + + transmissionMode + transmissionMode + + TEXTTABLE + + + + 0 + 0 + + SendOnce + + + + 1 + 1 + + SendAtSlowRate + + + + 2 + 2 + + SendAtMediumRate + + + + 3 + 3 + + SendAtFastRate + + + + 4 + 4 + + StopSending + + + + + + + 8 + + + + + + Invalid Value + 5 + 255 + + + + + + PeriodicDID + PeriodicDID + + TEXTTABLE + + + + 0 + 0 + + ECU Voltage Periodic DID + + + + 1 + 1 + + Odometer Value Periodic DID + + + + + + + 8 + + + + + + Invalid value + 2 + 255 + + + + + + NormalizedWaveformSigned + NormalizedWaveformSigned + + LINEAR + + + + + + 0 + 1 + + + 2147483647 + + + + + + + + 32 + + + 3 + + + + Voltage + Voltage (1 Byte) + + LINEAR + + + + + + 0 + 0.1 + + + + + + + + 8 + + + 1 + + + + + Unsigned_2Byte + Unsigned (2 Byte) + + IDENTICAL + + + 16 + + + + + CountryCode + Country Code (4 Bit) + + TEXTTABLE + + + + 0 + 0 + + (not defined) + + + + 1 + 1 + + Europe + + + + 2 + 2 + + USA + + + + 3 + 3 + + Japan + + + + 4 + 4 + + (others) + + + + 5 + 15 + + 5 + + + reserved + + + + + + + 4 + + + + + VehicleType + Vehicle type (4 Bit) + + TEXTTABLE + + + + 0 + 0 + + (not defined) + + + + 1 + 1 + + Coupe + + + + 2 + 2 + + Sedan + + + + 3 + 3 + + Transporter + + + + 4 + 15 + + 4 + + + (reserved) + + + + + + + 4 + + + + + closedOpen_1Bit + closed/open (1 Bit) + +

0=closed; 1=open

+
+ + TEXTTABLE + + + + 0 + 0 + + closed + + + + 1 + 1 + + open + + + + + + + 1 + + +
+ + Unsigned_4Bit + Unsigned (4 Bit) + + IDENTICAL + + + 4 + + + + + SevenBitValue_7_Bit + SevenBitValue (7 Bit) + + IDENTICAL + + + 7 + + + + + + WindowLiftRoughPosition_1_Byte + WindowLiftRoughPosition (1 Byte) + + TEXTTABLE + + + + 0 + 0 + + 0,00% + + + + 1 + 1 + + 6,25% + + + + 2 + 2 + + 12,50% + + + + 3 + 3 + + 18,75% + + + + 4 + 4 + + 25,00% + + + + 5 + 5 + + 31,25% + + + + 6 + 6 + + 37,50% + + + + 7 + 7 + + 43,75% + + + + 8 + 8 + + 50,00% + + + + 9 + 9 + + 56,25% + + + + 10 + 10 + + 62,50% + + + + 11 + 11 + + 68,75% + + + + 12 + 12 + + 75,00% + + + + 13 + 13 + + 81,25% + + + + 14 + 14 + + 87,50% + + + + 15 + 15 + + 93,75% + + + + 16 + 16 + + 100,00% + + + + + + + 8 + + + + + + Undefined window position + 17 + 255 + + + + + + NormalizedWaveformUnsigned + NormalizedWaveformUnsigned + + LINEAR + + + + + + 0 + 1 + + + 65535 + + + + + + + + 16 + + + 3 + + + + TestDatatypeMuxValues + TestDatatypeMuxValues + + TEXTTABLE + + + + 0 + 0 + + Mux_Identity + + + + 1 + 1 + + Mux_Texttable + + + + 2 + 2 + + Mux_Linear + + + + 3 + 3 + + Mux_CharacteristicCurve + + + + 4 + 4 + + Mux_PartlyLinear + + + + 7 + 7 + + Mux_Substructure_L1 + + + + 8 + 8 + + Mux_Substructure_L2 + + + + 9 + 9 + + Mux_Substructure_L3 + + + + + + + 8 + + + + + + Not implemented Mux value + 5 + 6 + + + Undefined Mux value + 16 + 255 + + + 10 + 15 + + + + + + TestDatatypeCharacteristicCurve + TestDatatypeCharacteristicCurve + + TAB-INTP + + + + 0 + + 0 + + + + 1 + + 1 + + + + 4 + + 2 + + + + 9 + + 3 + + + + 16 + + 4 + + + + 25 + + 5 + + + + 36 + + 6 + + + + 49 + + 7 + + + + 64 + + 8 + + + + 81 + + 9 + + + + 100 + + 10 + + + + + + + 8 + + + 1 + + + + + Undefined value + 101 + 255 + + + + + + TestDatatypePiecewiseLinear + TestDatatypePiecewiseLinear + + SCALE-LINEAR + + + + 0 + 16 + + + 0 + 1 + + + + + 17 + 32 + + + -9 + 1.5 + + + + + 33 + 48 + + + -26 + 2 + + + + + 49 + 64 + + + -52 + 2.5 + + + + + 65 + 80 + + + -86 + 3 + + + + + 81 + 96 + + + -129 + 3.5 + + + + + 97 + 112 + + + -180 + 4 + + + + + 113 + 128 + + + -240 + 4.5 + + + + + + + + 8 + + + 0 + + + + + Undefined value + 129 + 255 + + + + + + VehicleSpeed + Vehicle Speed (4 Byte) + + LINEAR + + + + -300 + 3000 + + + 0 + 1 + + + 10 + + + + + + + + 32 + + + + + + + -300 + + + 3000 + + + + + + + + Authentication_Return_Parameter + Authentication Return Parameter + + TEXTTABLE + + + + 0 + 0 + + Request accepted + + + + 1 + 1 + + General reject + + + + 2 + 2 + + Authentication Configuration APCE + + + + 3 + 3 + + Authentication Configuration ACR with asymmetric cryptography + + + + 4 + 4 + + Authentication Configuration ACR with symmetric cryptography + + + + 16 + 16 + + DeAuthentication successful + + + + 17 + 17 + + Certificate verified, Ownership verification necessary + + + + 18 + 18 + + Ownership verified, Authentication complete + + + + 19 + 19 + + Certificate verified + + + + + + + 8 + + + + + + 5 + 15 + + + 20 + 255 + + + + + + Motor_calibration_data + Motor calibration data + + IDENTICAL + + + 240 + + + + + Power + Power + + IDENTICAL + + + 8 + + + + + + Force + Force + + IDENTICAL + + + 8 + + + + + + Distance + Distance + + IDENTICAL + + + 16 + + + + + + DTCSnapshotRecordNumberRq + DTCSnapshotRecordNumberRq + + TEXTTABLE + + + + 1 + 1 + + Snapshot Record first ocurrance + + + + 2 + 2 + + Snapshot Record last ocurrance + + + + 255 + 255 + + All + + + + + + + 8 + + + + + + 0 + 0 + + + 3 + 254 + + + + + + DTCSnapshotRecordNumberPR + DTCSnapshotRecordNumberPR + + TEXTTABLE + + + + 1 + 1 + + Snapshot Record first ocurrance + + + + 2 + 2 + + Snapshot Record last ocurrance + + + + + + + 8 + + + + + + 0 + 0 + + + 3 + 255 + + + + + + DTCExtendedDataRecordNumbers_All + DTCExtendedDataRecordNumbers All + + TEXTTABLE + + + + 1 + 1 + + Extended Data Record 0x01 + + + + 255 + 255 + + All + + + + + + + 8 + + + + + + 0 + 0 + + + 2 + 254 + + + + + + DTCExtendedDataRecordNumbers_All_except_FF + DTCExtendedDataRecordNumbers All, except FF + + TEXTTABLE + + + + #DemExtendedDataRecordTrigger=testFailed#DemExtendedDataRecordUpdate=false# + 1 + 1 + + Extended Data Record 0x01 + + + + + + + 8 + + + + + + 0 + 0 + + + 2 + 255 + + + + + + Start_NR_DOP + Start NR_DOP + + TEXTTABLE + + + + 34 + 34 + + Conditions not correct + + + + + + + 8 + + + + + + 0 + 33 + + + 35 + 255 + + + + + + Start_NR_DOP_1 + Start NR_DOP + + TEXTTABLE + + + + 34 + 34 + + Conditions not correct + + + + 126 + 126 + + Subfunction not supported in active session + + + + + + + 8 + + + + + + 0 + 33 + + + 35 + 125 + + + 127 + 255 + + + + + + Reset_DOP + Reset_DOP + + TEXTTABLE + + + + 18 + 18 + + Subfunction not supported + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 51 + 51 + + Security access denied + + + + + + + 8 + + + + + + 0 + 17 + + + 20 + 33 + + + 35 + 50 + + + 52 + 255 + + + + + + Request_DOP + Anfordern_DOP + + TEXTTABLE + + + + 18 + 18 + + Subfunction not supported + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 36 + 36 + + Request sequence error + + + + 49 + 49 + + Request out of range + + + + 53 + 53 + + Invalid key + + + + 54 + 54 + + Exceed number of attempts + + + + 55 + 55 + + Required time delay not expired + + + + 126 + 126 + + Subfunction not supported in active session + + + + + + + 8 + + + + + + 0 + 17 + + + 20 + 33 + + + 35 + 35 + + + 37 + 48 + + + 50 + 52 + + + 56 + 125 + + + 127 + 255 + + + + + + CommunicationConfiguration + CommunicationConfiguration + + IDENTICAL + + + 8 + + + + + Data + Data + + IDENTICAL + + + 4 + + + + + Data_1 + Data + + IDENTICAL + + + 4 + + + + + Data_2 + Data + + IDENTICAL + + + 4 + + + + + Data_3 + Data + + IDENTICAL + + + 2 + + + + + Data_4 + Data + + IDENTICAL + + + 2 + + + + + CommunicationConfiguration_1 + CommunicationConfiguration + + IDENTICAL + + + 8 + + + + + AlgorithmIndicator + AlgorithmIndicator + + IDENTICAL + + + 128 + + + + + AlgorithmIndicator_1 + AlgorithmIndicator + + IDENTICAL + + + 128 + + + + + Data_5 + Data + + IDENTICAL + + + 4 + + + + + AlgorithmIndicator_2 + AlgorithmIndicator + + IDENTICAL + + + 128 + + + + + Data_6 + Data + + IDENTICAL + + + 6 + + + + + AlgorithmIndicator_3 + AlgorithmIndicator + + IDENTICAL + + + 128 + + + + + Data_7 + Data + + IDENTICAL + + + 2 + + + + + AlgorithmIndicator_4 + AlgorithmIndicator + + IDENTICAL + + + 128 + + + + + Data_8 + Data + + IDENTICAL + + + 6 + + + + + AlgorithmIndicator_5 + AlgorithmIndicator + + IDENTICAL + + + 128 + + + + + Data_9 + Data + + IDENTICAL + + + 4 + + + + + Verify_Certificate_Unidirectional_DOP + Verify Certificate Unidirectional_DOP + + TEXTTABLE + + + + 16 + 16 + + General reject + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 36 + 36 + + Request sequence error + + + + 80 + 80 + + Certificate verification failed - Invalid Time Period + + + + 81 + 81 + + Certificate verification failed - Invalid Signature + + + + 82 + 82 + + Certificate verification failed - Invalid Chain of Trust + + + + 83 + 83 + + Certificate verification failed - Invalid Type + + + + 84 + 84 + + Certificate verification failed - Invalid Format + + + + 85 + 85 + + Certificate verification failed - Invalid Content + + + + 86 + 86 + + Certificate verification failed - Invalid Scope + + + + 87 + 87 + + Certificate verification failed - Invalid Certificate (revoked) + + + + 88 + 88 + + Ownership verification failed + + + + 89 + 89 + + Challenge calculation failed + + + + 90 + 90 + + Setting Access Rights failed + + + + 91 + 91 + + Session key creation/derivation failed + + + + 92 + 92 + + Configuration data usage failed + + + + 93 + 93 + + DeAuthentication failed + + + + + + + 8 + + + + + + 0 + 15 + + + 17 + 18 + + + 20 + 33 + + + 35 + 35 + + + 37 + 79 + + + 94 + 255 + + + + + + Write_DOP + Write_DOP + + TEXTTABLE + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 49 + 49 + + Request out of range + + + + 51 + 51 + + Security access denied + + + + 114 + 114 + + General programming failure + + + + + + + 8 + + + + + + 0 + 18 + + + 20 + 33 + + + 35 + 48 + + + 50 + 50 + + + 52 + 113 + + + 115 + 255 + + + + + + Read_DOP + Read_DOP + + TEXTTABLE + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 49 + 49 + + Request out of range + + + + 51 + 51 + + Security access denied + + + + + + + 8 + + + + + + 0 + 18 + + + 20 + 33 + + + 35 + 48 + + + 50 + 50 + + + 52 + 255 + + + + + + Get_Scaling_DOP + Get Scaling_DOP + + TEXTTABLE + + + + 34 + 34 + + Conditions not correct + + + + 49 + 49 + + Request out of range + + + + 51 + 51 + + Security access denied + + + + + + + 8 + + + + + + 0 + 33 + + + 35 + 48 + + + 50 + 50 + + + 52 + 255 + + + + + + Send_slow_DOP + Send slow_DOP + + TEXTTABLE + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 49 + 49 + + Request out of range + + + + 51 + 51 + + Security access denied + + + + 126 + 126 + + Subfunction not supported in active session + + + + + + + 8 + + + + + + 0 + 18 + + + 20 + 33 + + + 35 + 48 + + + 50 + 50 + + + 52 + 125 + + + 127 + 255 + + + + + + Data_10 + Data + + IDENTICAL + + + 1 + + + + + MemoryAddressAndSize + MemoryAddressAndSize + + IDENTICAL + + + 9 + 1 + + + + + Data_11 + Data + + IDENTICAL + + + 1 + + + + + Data_12 + Data + + IDENTICAL + + + 1 + + + + + Data_13 + Data + + IDENTICAL + + + 1 + + + + + Define_By_Address_DOP + Define By Address_DOP + + TEXTTABLE + + + + 18 + 18 + + Subfunction not supported + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 49 + 49 + + Request out of range + + + + 51 + 51 + + Security access denied + + + + + + + 8 + + + + + + 0 + 17 + + + 20 + 33 + + + 35 + 48 + + + 50 + 50 + + + 52 + 255 + + + + + + Start_NR_DOP_2 + Start NR_DOP + + TEXTTABLE + + + + 18 + 18 + + Subfunction not supported + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 36 + 36 + + Request sequence error + + + + 49 + 49 + + Request out of range + + + + 51 + 51 + + Security access denied + + + + 114 + 114 + + General programming failure + + + + 126 + 126 + + Subfunction not supported in active session + + + + + + + 8 + + + + + + 0 + 17 + + + 20 + 33 + + + 35 + 35 + + + 37 + 48 + + + 50 + 50 + + + 52 + 113 + + + 115 + 125 + + + 127 + 255 + + + + + + DTCSnapshotRecordNumberOfIdentifiers + DTCSnapshotRecordNumberOfIdentifiers + + IDENTICAL + + + 8 + + + + + TextTable_DTC + Text Table DTC + + TEXTTABLE + + + + 1 + 1 + + 0x1_Voltage too low + + + + 2 + 2 + + 0x2_Voltage too high + + + + 8388609 + 8388609 + + 0x800001_Failure in door contact front left + + + + 8388610 + 8388610 + + 0x800002_Failure in door contact front right + + + + 8388611 + 8388611 + + 0x800003_Failure in door contact rear left + + + + 8388612 + 8388612 + + 0x800004_Failure in door contact rear right + + + + + + + 24 + + + + + + 0 + 0 + + + 3 + 8388608 + + + 8388613 + 16777215 + + + + + + LocalTable + LocalTable + + TEXTTABLE + + + + 16777215 + 16777215 + + All groups + + + + + + + 24 + + + + + + 0 + 16777214 + + + + + + ReadNumber_DOP + Read (number)_DOP + + TEXTTABLE + + + + 18 + 18 + + Subfunction not supported + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 49 + 49 + + Request out of range + + + + + + + 8 + + + + + + 0 + 17 + + + 20 + 48 + + + 50 + 255 + + + + + + RC_DOP + RESPONSE CODE_DOP + + TEXTTABLE + + + + 18 + 18 + + Subfunction not supported + + + + 19 + 19 + + Incorrect message length or invalid format + + + + + + + 8 + + + + + + 0 + 17 + + + 20 + 255 + + + + + + Clear_DOP + Clear (all errors)_DOP + + TEXTTABLE + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 49 + 49 + + Request out of range + + + + + + + 8 + + + + + + 0 + 18 + + + 20 + 33 + + + 35 + 48 + + + 50 + 255 + + + + + + transferRequestParameterRecord + transferRequestParameterRecord + + IDENTICAL + + + 0 + + + + + transferRequestParameterRecord_1 + transferRequestParameterRecord + + IDENTICAL + + + 1 + + + + + Request_DOP_1 + Request_DOP + + TEXTTABLE + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 49 + 49 + + Request out of range + + + + 51 + 51 + + Security access denied + + + + 112 + 112 + + Upload / Download not accepted + + + + 126 + 126 + + Subfunction not supported in active session + + + + + + + 8 + + + + + + 0 + 18 + + + 20 + 33 + + + 35 + 48 + + + 50 + 50 + + + 52 + 111 + + + 113 + 125 + + + 127 + 255 + + + + + + RequestUpload_DOP + RequestUpload_DOP + + TEXTTABLE + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 49 + 49 + + Request out of range + + + + 51 + 51 + + Security access denied + + + + 112 + 112 + + Upload / Download not accepted + + + + + + + 8 + + + + + + 0 + 18 + + + 20 + 33 + + + 35 + 48 + + + 50 + 50 + + + 52 + 111 + + + 113 + 255 + + + + + + Transmit_DOP + Transmit_DOP + + TEXTTABLE + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 36 + 36 + + Request sequence error + + + + 49 + 49 + + Request out of range + + + + 113 + 113 + + Transfer data suspended + + + + 114 + 114 + + General programming failure + + + + 115 + 115 + + Wrong block sequence counter + + + + 126 + 126 + + Subfunction not supported in active session + + + + 146 + 146 + + Voltage too high + + + + 147 + 147 + + Voltage too low + + + + + + + 8 + + + + + + 0 + 18 + + + 20 + 33 + + + 35 + 35 + + + 37 + 48 + + + 50 + 112 + + + 116 + 125 + + + 127 + 145 + + + 148 + 255 + + + + + + Stop_DOP + Stop_DOP + + TEXTTABLE + + + + 19 + 19 + + Incorrect message length or invalid format + + + + 34 + 34 + + Conditions not correct + + + + 36 + 36 + + Request sequence error + + + + 126 + 126 + + Subfunction not supported in active session + + + + + + + 8 + + + + + + 0 + 18 + + + 20 + 33 + + + 35 + 35 + + + 37 + 125 + + + 127 + 255 + + + + + + NRC_DOP + NEGATIVE RESPONSE CODES_DOP + + TEXTTABLE + + + + 17 + 17 + + Service not supported + + + + 18 + 18 + + Subfunction not supported + + + + 49 + 49 + + Request out of range + + + + + + + 8 + + + + + + 0 + 16 + + + 19 + 48 + + + 50 + 255 + + + + +
+ + + Communication_Type + Communication Type + 1 + + + Communication_Type_STRUCTURE + Communication Type + 0 + + + + + + Communication_Type_1 + Communication Type + 1 + + + normalCommunicationMessages + normalCommunicationMessages + 0 + on + + + + networkManagementCommunicationMessages + networkManagementCommunicationMessages + 0 + 1 + on + + + + _reserved_BF_0 + (reserved) + 0 + 2 + 2 + + + communicationTypeNetworks + communicationTypeNetworks + 0 + 4 + allNetworks + + + + + + DID_0xF410 + DID 0xF410 + 2 + + + DID_Data + DID Data + 0 + + + + + + DID_0xF412 + DID 0xF412 + 2 + + + DID_Data + DID Data + 0 + + + + + + DID_0xF413 + DID 0xF413 + 2 + + + DID_Data + DID Data + 0 + + + + + + DID_0xF411 + DID 0xF411 + 2 + + + DID_Data + DID Data + 0 + + + + + + DID_0xF414 + DID 0xF414 + 2 + + + DID_Data + DID Data + 0 + + + + + + TestDatatypeStructureLevel1 + TestDatatypeStructureLevel1 + 6 + + + Strukturinhalt0 + StructureContents0 + 0 + + + + Strukturinhalt2 + StructureContents2 + 2 + + + + Strukturinhalt4 + StructureContents4 + 4 + + + + + + TestDatatypeStructureLevel2 + TestDatatypeStructureLevel2 + 8 + + + Strukturinhalt0 + StructureContents0 + 0 + + + + Strukturinhalt1 + StuctureContents1 + 1 + + + + Strukturinhalt7 + StuctureContents7 + 7 + + + + + + TestDatatypeStructureLevel3 + TestDatatypeStructureLevel3 + 14 + + + SubstrukturInhalt0 + SubStuctureContents0 + 0 + + + + SubstrukturInhalt5 + SubStuctureContents5 + 5 + + + + SubstrukturInhalt13 + SubStuctureContents13 + 13 + + + + + + Door_Contact + Door Contact + 1 + + + Door_contact_front_left + Door contact (front left) + 0 + + + + Door_contact_front_right + Door contact (front right) + 0 + 1 + + + + Door_contact_rear_left + Door contact (rear left) + 0 + 2 + + + + Door_contact_rear_right + Door contact (rear right) + 0 + 3 + + + + reserved + reserved + 0 + 4 + + + + + + DID_Door_Contact + DID Door Contact + 1 + + + Door_Contact_STRUCTURE + Door Contact + 0 + + + + + + DID_Voltage + DID Voltage + 2 + + + SupplyVoltage + SupplyVoltage + 0 + + + + InternalVoltage + InternalVoltage + 1 + + + + + + DID_Odometer_Value + DID Odometer Value + 4 + + + OdometerValue + OdometerValue + 0 + + + + + + DID_WindowLiftRoughPosition + DID WindowLiftRoughPosition + 1 + + + WindowLiftRoughPosition + WindowLiftRoughPosition + 0 + + + + + + DID_Fingerprint + DID Fingerprint + + + Fingerprint + Fingerprint + 0 + + + + + + STRUC + + + Identitaet + Identity + 0 + + + + + + STRUC_1 + + + Texttabelle + Text table + 0 + + + + + + STRUC_2 + + + Linear + Linear + 0 + + + + + + STRUC_3 + + + Kennlinie + Characteristic Curve + 0 + + + + + + STRUC_4 + + + StueckweiseLinear + Piecewise linear + 0 + + + + + + STRUC_5 + + + StrukturL1 + StructureL1 + 0 + + + + + + STRUC_6 + + + StrukturL2 + StructureL2 + 0 + + + + + + STRUC_7 + + + StrukturL3 + StructureL3 + 0 + + + + + + DID_MuxedTestData + DID MuxedTestData + + + Selector + Selector + 0 + + + + MuxedTestData + MuxedTestData + 0 + + + + + + DID_SineWave + DID SineWave + 4 + + + SineValue + Sine value + 0 + + + + + + DID_Sawtooth + DID Sawtooth + 2 + + + SawtoothValue + Sawtooth value + 0 + + + + + + Codingstring_STRUCTURE + Coding string + 2 + + + CountryType + Country code + 1 + Europe + + + + VehicleType + Vehicle type + 1 + 4 + Sedan + + + + VehicleSpeedToLockDoor + VehicleSpeedToLockDoor + 0 + 20 + + + + WindowLift_Support + WindowLift Support + 0 + 7 + on + + + + + + Availability + Availability + 1 + + + Heating + Heating + 0 + on + + + + Folding_mirror + Folding mirror + 0 + 1 + on + + + + _reserved_BF_1 + (reserved) + 0 + 2 + 6 + + + + + Availability_1 + Availability + 1 + + + Child_protection + Child protection + 0 + on + + + + _reserved_BF_2 + (reserved) + 0 + 1 + 7 + + + + + ListOfParameter + ListOfParameter + + + SourceDID + SourceDID + 0 + + + + PositionInSourceDID + PositionInSourceDID + 2 + + + + MemorySize + MemorySize + 3 + + + + + + ListOfParameters + ListOfParameters + + + MemoryAddressAndSize + MemoryAddressAndSize + 0 + + + + + + DtcStatusbyte + DTC Statusbyte + 1 + + + TestFailed + Test failed + 0 + + + + TestFailedThisMonitoringCycle + Test failed this monitoring cycle + 0 + 1 + 1 + + + PendingDtc + Pending DTC + 0 + 2 + 1 + + + ConfirmedDtc + Confirmed DTC + 0 + 3 + + + + TestNotCompletedSinceLastClear + Test not completed since last clear + 0 + 4 + + + + TestFailedSinceLastClear + Test failed since last clear + 0 + 5 + + + + TestNotCompletedThisMonitoringCycle + Test not completed this monitoring cycle + 0 + 6 + + + + WarningIndicatorRequested + Warning indicator requested + 0 + 7 + 1 + + + + + ListOfDTC + ListOfDTC + + + DTC + DTC + 0 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + + + DTCAndDTCSnapshotRecordNumber + DTCAndDTCSnapshotRecordNumber + + + DTC + DTC + 0 + + + + SnapshotRecordNumber + SnapshotRecordNumber + 3 + + + + + + ListOfDTCSnapshotRecord + ListOfDTCSnapshotRecord + + + Record_Numbers + Record Numbers + 0 + + + + DTCSnapshotRecordNumberOfIdentifiers + DTCSnapshotRecordNumberOfIdentifiers + 1 + + + + DTCSnapshotRecordData + DTCSnapshotRecordData + 2 + + + + + + STRUC_0x1 + + + Record_Numbers + Record Numbers + 0 + + + + + + STRUC_8 + + + ExtendedDataRecord + ExtendedDataRecord + 0 + + + + + + STRUC_9 + + + ExtDataVoltage + ExtDataVoltage + 0 + + + + ExtDataOdometerValue + ExtDataOdometerValue + 1 + + + + + + ListOfDTCExtendedDataRecord + ListOfDTCExtendedDataRecord + + + Record_Numbers + Record Numbers + 0 + + + + DTCExtendedDataRecordData + DTCExtendedDataRecordData + 0 + + + + + + DTC_Severity + DTC Severity + 1 + + + DTC_GTR_Class_0 + DTC GTR Class 0 + 0 + + + + DTC_GTR_Class_1 + DTC GTR Class 1 + 0 + 1 + + + + DTC_GTR_Class_2 + DTC GTR Class 2 + 0 + 2 + + + + DTC_GTR_Class_3 + DTC GTR Class 3 + 0 + 3 + + + + DTC_GTR_Class_4 + DTC GTR Class 4 + 0 + 4 + + + + maintenanceOnly + maintenanceOnly + 0 + 5 + + + + checkAtNextHalt + checkAtNextHalt + 0 + 6 + + + + checkImmediately + checkImmediately + 0 + 7 + + + + + + DTC_Severity_1 + DTC Severity + 1 + + + DTC_GTR_Class_0 + DTC GTR Class 0 + 0 + + + + DTC_GTR_Class_1 + DTC GTR Class 1 + 0 + 1 + + + + DTC_GTR_Class_2 + DTC GTR Class 2 + 0 + 2 + + + + DTC_GTR_Class_3 + DTC GTR Class 3 + 0 + 3 + + + + DTC_GTR_Class_4 + DTC GTR Class 4 + 0 + 4 + + + + maintenanceOnly + maintenanceOnly + 0 + 5 + + + + checkAtNextHalt + checkAtNextHalt + 0 + 6 + + + + checkImmediately + checkImmediately + 0 + 7 + + + + + + ListOfData + ListOfData + + + DTC_Severity_STRUCTURE + DTC Severity + 0 + + + + DTC_Severity + DTC Severity + 0 + + + + DTCFunctionalUnit + DTCFunctionalUnit + 1 + + + + DTC + DTC + 2 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 5 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 5 + + + + + + ListOfData_2 + ListOfData + + + DTC_Severity_STRUCTURE + DTC Severity + 0 + + + + DTC_Severity + DTC Severity + 0 + + + + DTCFunctionalUnit + DTCFunctionalUnit + 1 + + + + DTC + DTC + 2 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 5 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 5 + + + + + + ListOfDTCAndStatus + ListOfDTCAndStatus + + + DTC + DTC + 0 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + + + ListOfDTC_2 + ListOfDTC + + + DTC + DTC + 0 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + + + ListOfDTC_4 + ListOfDTC + + + DTC + DTC + 0 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + + + ListOfDTCAndStatusRecord + ListOfDTCAndStatusRecord + + + DTC + DTC + 0 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + + + ListOfDTC_6 + ListOfDTC + + + DTC + DTC + 0 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 3 + + + + + + DTCFaultDetectionCounterRecord + DTCFaultDetectionCounterRecord + + + DTC + DTC + 0 + + + + DTCFaultDetectionCounter + DTCFaultDetectionCounter + 3 + + + + + + STRUC_Length_memoryAddress_1_byte_memorySize_1_byte + + + Address + Address + 0 + + + + Size + Size + 1 + + + + + + STRUC_Length_memoryAddress_2_byte_memorySize_1_byte + + + Address + Address + 0 + + + + Size + Size + 2 + + + + + + STRUC_Length_memoryAddress_3_byte_memorySize_1_byte + + + Address + Address + 0 + + + + Size + Size + 3 + + + + + + STRUC_Length_memoryAddress_4_byte_memorySize_1_byte + + + Address + Address + 0 + + + + Size + Size + 4 + + + + + + STRUC_Length_memoryAddress_1_byte_memorySize_2_byte + + + Address + Address + 0 + + + + Size + Size + 1 + + + + + + STRUC_Length_memoryAddress_2_byte_memorySize_2_byte + + + Address + Address + 0 + + + + Size + Size + 2 + + + + + + STRUC_Length_memoryAddress_3_byte_memorySize_2_byte + + + Address + Address + 0 + + + + Size + Size + 3 + + + + + + STRUC_Length_memoryAddress_4_byte_memorySize_2_byte + + + Address + Address + 0 + + + + Size + Size + 4 + + + + + + STRUC_Length_memoryAddress_1_byte_memorySize_3_byte + + + Address + Address + 0 + + + + Size + Size + 1 + + + + + + STRUC_Length_memoryAddress_2_byte_memorySize_3_byte + + + Address + Address + 0 + + + + Size + Size + 2 + + + + + + STRUC_Length_memoryAddress_3_byte_memorySize_3_byte + + + Address + Address + 0 + + + + Size + Size + 3 + + + + + + STRUC_Length_memoryAddress_4_byte_memorySize_3_byte + + + Address + Address + 0 + + + + Size + Size + 4 + + + + + + STRUC_Length_memoryAddress_1_byte_memorySize_4_byte + + + Address + Address + 0 + + + + Size + Size + 1 + + + + + + STRUC_Length_memoryAddress_2_byte_memorySize_4_byte + + + Address + Address + 0 + + + + Size + Size + 2 + + + + + + STRUC_Length_memoryAddress_3_byte_memorySize_4_byte + + + Address + Address + 0 + + + + Size + Size + 3 + + + + + + STRUC_Length_memoryAddress_4_byte_memorySize_4_byte + + + Address + Address + 0 + + + + Size + Size + 4 + + + + + + STRUC_Length_memoryAddress_5_byte_memorySize_4_byte + + + Address + Address + 0 + + + + Size + Size + 5 + + + + + + + + ListOfParameter_1 + ListOfParameter + + + + ListOfParameters_1 + ListOfParameters + + + + ListOfDTC_1 + ListOfDTC + + + + DTCAndDTCSnapshotRecordNumber_1 + DTCAndDTCSnapshotRecordNumber + + + + ListOfDTCSnapshotRecord_1 + ListOfDTCSnapshotRecord + + + + ListOfDTCExtendedDataRecord_1 + ListOfDTCExtendedDataRecord + + + + ListOfData_1 + ListOfData + + + + ListOfData_3 + ListOfData + + + + ListOfDTCAndStatus_1 + ListOfDTCAndStatus + + + + ListOfDTC_3 + ListOfDTC + + 1 + + + ListOfDTC_5 + ListOfDTC + + 1 + + + ListOfDTCAndStatusRecord_1 + ListOfDTCAndStatusRecord + + 1 + + + ListOfDTC_7 + ListOfDTC + + 1 + + + DTCFaultDetectionCounterRecord_1 + DTCFaultDetectionCounterRecord + + + + + + TestDatatype + TestDatatype + 1 + + 0 + + + + Case_Default + + + + Case_0x0 + + Mux_Identity + Mux_Identity + + + Case_0x1 + + Mux_Texttable + Mux_Texttable + + + Case_0x2 + + Mux_Linear + Mux_Linear + + + Case_0x3 + + Mux_CharacteristicCurve + Mux_CharacteristicCurve + + + Case_0x4 + + Mux_PartlyLinear + Mux_PartlyLinear + + + Case_0x7 + + Mux_Substructure_L1 + Mux_Substructure_L1 + + + Case_0x8 + + Mux_Substructure_L2 + Mux_Substructure_L2 + + + Case_0x9 + + Mux_Substructure_L3 + Mux_Substructure_L3 + + + + + DTCExtendedDataRecordData + DTCExtendedDataRecordData + 1 + + 0 + + + + Case_Default + + + + + Case_0x1 + + Extended Data Record 0x01 + Extended Data Record 0x01 + + + + + + + ENVDATA_ALLDTCS + ENVDATA_ALLDTCS + + + DID_Voltage_ID + DID Voltage ID + 0 + 263 + + + + DID_Voltage + DID Voltage + 2 + + + + DID_Odometer_Value_ID + DID Odometer Value ID + 4 + 264 + + + + DID_Odometer_Value + DID Odometer Value + 6 + + + + + + + + + + ms + ms + + + km + km + + + V + V + + + km_h + km/h + + + W + W + + + N + N + + + mm + mm + + + + + + DTCExtendedDataRecordNumber + DTCExtendedDataRecordNumber + + + TR_0x1 + 0x1_Voltage too low + 0x1_Voltage too low + + + + + IsDefaultCase + + Yes + + + + + TR_0x2 + 0x2_Voltage too high + 0x2_Voltage too high + + + + + IsDefaultCase + + Yes + + + + + TR_0x800001 + 0x800001_Failure in door contact front left + 0x800001_Failure in door contact front left + + + + + IsDefaultCase + + Yes + + + + + TR_0x800002 + 0x800002_Failure in door contact front right + 0x800002_Failure in door contact front right + + + + + IsDefaultCase + + Yes + + + + + TR_0x800003 + 0x800003_Failure in door contact rear left + 0x800003_Failure in door contact rear left + + + + + IsDefaultCase + + Yes + + + + + TR_0x800004 + 0x800004_Failure in door contact rear right + 0x800004_Failure in door contact rear right + + + + + IsDefaultCase + + Yes + + + +
+ + Memory_Address_and_Size + Memory Address and Size + + + TR_0x11 + Length: memoryAddress 1 byte, memorySize 1 byte + Length: memoryAddress 1 byte, memorySize 1 byte + + + + TR_0x12 + Length: memoryAddress 2 byte, memorySize 1 byte + Length: memoryAddress 2 byte, memorySize 1 byte + + + + TR_0x13 + Length: memoryAddress 3 byte, memorySize 1 byte + Length: memoryAddress 3 byte, memorySize 1 byte + + + + TR_0x14 + Length: memoryAddress 4 byte, memorySize 1 byte + Length: memoryAddress 4 byte, memorySize 1 byte + + + + TR_0x21 + Length: memoryAddress 1 byte, memorySize 2 byte + Length: memoryAddress 1 byte, memorySize 2 byte + + + + TR_0x22 + Length: memoryAddress 2 byte, memorySize 2 byte + Length: memoryAddress 2 byte, memorySize 2 byte + + + + TR_0x23 + Length: memoryAddress 3 byte, memorySize 2 byte + Length: memoryAddress 3 byte, memorySize 2 byte + + + + TR_0x24 + Length: memoryAddress 4 byte, memorySize 2 byte + Length: memoryAddress 4 byte, memorySize 2 byte + + + + TR_0x31 + Length: memoryAddress 1 byte, memorySize 3 byte + Length: memoryAddress 1 byte, memorySize 3 byte + + + + TR_0x32 + Length: memoryAddress 2 byte, memorySize 3 byte + Length: memoryAddress 2 byte, memorySize 3 byte + + + + TR_0x33 + Length: memoryAddress 3 byte, memorySize 3 byte + Length: memoryAddress 3 byte, memorySize 3 byte + + + + TR_0x34 + Length: memoryAddress 4 byte, memorySize 3 byte + Length: memoryAddress 4 byte, memorySize 3 byte + + + + TR_0x41 + Length: memoryAddress 1 byte, memorySize 4 byte + Length: memoryAddress 1 byte, memorySize 4 byte + + + + TR_0x42 + Length: memoryAddress 2 byte, memorySize 4 byte + Length: memoryAddress 2 byte, memorySize 4 byte + + + + TR_0x43 + Length: memoryAddress 3 byte, memorySize 4 byte + Length: memoryAddress 3 byte, memorySize 4 byte + + + + TR_0x44 + Length: memoryAddress 4 byte, memorySize 4 byte + Length: memoryAddress 4 byte, memorySize 4 byte + + + + TR_0x45 + Length: memoryAddress 5 byte, memorySize 4 byte + Length: memoryAddress 5 byte, memorySize 4 byte + + +
+
+
+ + + DefaultSession_Start + Default Session Start + + + + CANdelaServiceInformation + + DefaultSession + Default Session + Start + Start + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + ProgrammingSession_Start + Programming Session Start + + + + CANdelaServiceInformation + + ProgrammingSession + Programming Session + Start + Start + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + ExtendedDiagnosticSession_Start + Extended Diagnostic Session Start + + + + CANdelaServiceInformation + + ExtendedDiagnosticSession + Extended Diagnostic Session + Start + Start + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Hard_Reset_Reset + Hard Reset Reset + + + + CANdelaServiceInformation + + Hard_Reset + Hard Reset + Reset + Reset + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Soft_Reset_Reset + Soft Reset Reset + + + + CANdelaServiceInformation + + Soft_Reset + Soft Reset + Reset + Reset + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + SeedLevel_0x01_Request + RequestSeed 0x01 Request + + + + CANdelaServiceInformation + + SeedLevel_0x01 + RequestSeed 0x01 + Request + Request + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + KeyLevel_0x01_Send + SendKey 0x01 Send + + + + CANdelaServiceInformation + + KeyLevel_0x01 + SendKey 0x01 + Send + Send + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + SeedLevel_0x11_Request + RequestSeed 0x11 Request + + + + CANdelaServiceInformation + + SeedLevel_0x11 + RequestSeed 0x11 + Request + Request + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + KeyLevel_0x11_Send + SendKey 0x11 Send + + + + CANdelaServiceInformation + + KeyLevel_0x11 + SendKey 0x11 + Send + Send + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Authentication_Verify_Certificate_Unidirectional + Authentication Verify Certificate Unidirectional + + + + CANdelaServiceInformation + + Authentication + Authentication + Verify_Certificate_Unidirectional + Verify Certificate Unidirectional + no + + + + + + + + + + + + + + + + + + + + Authentication_Proof_Of_Ownership + Authentication Proof Of Ownership + + + + CANdelaServiceInformation + + Authentication + Authentication + Proof_Of_Ownership + Proof Of Ownership + no + + + + + + + + + + + + + + + + + + + + Authentication_Transmit_Certificate + Authentication Transmit Certificate + + + + CANdelaServiceInformation + + Authentication + Authentication + Transmit_Certificate + Transmit Certificate + no + + + + + + + + + + + + + + + + + + + + Authentication_Request_Challenge + Authentication Request Challenge + + + + CANdelaServiceInformation + + Authentication + Authentication + Request_Challenge + Request Challenge + no + + + + + + + + + + + + + + + + + + + + Authentication_Verify_Proof_of_Ownership_Unidirectional + Authentication Verify Proof of Ownership Unidirectional + + + + CANdelaServiceInformation + + Authentication + Authentication + Verify_Proof_of_Ownership_Unidirectional + Verify Proof of Ownership Unidirectional + no + + + + + + + + + + + + + + + + + + + + Authentication_Verify_Proof_of_Ownership_Bidirectional + Authentication Verify Proof of Ownership Bidirectional + + + + CANdelaServiceInformation + + Authentication + Authentication + Verify_Proof_of_Ownership_Bidirectional + Verify Proof of Ownership Bidirectional + no + + + + + + + + + + + + + + + + + + + + Authentication_Deauthenticate + Authentication Deauthenticate + + + + CANdelaServiceInformation + + Authentication + Authentication + Deauthenticate + Deauthenticate + no + + + + + + + + + + + + + + + + + + + + Authentication_Configure + Authentication Configure + + + + CANdelaServiceInformation + + Authentication + Authentication + Configure + Configure + no + + + + + + + + + + + + + + + + + + + + EnableRxAndEnableTx_Control + EnableRxAndEnableTx Control + + + + CANdelaServiceInformation + + EnableRxAndEnableTx + EnableRxAndEnableTx + Control + Control + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + EnableRxAndDisableTx_Control + EnableRxAndDisableTx Control + + + + CANdelaServiceInformation + + EnableRxAndDisableTx + EnableRxAndDisableTx + Control + Control + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + TesterPresent_Send + Tester Present Send + + + + CANdelaServiceInformation + + TesterPresent + Tester Present + Send + Send + no + + + + + + + + + + + + + + + + + + + 80 + + + + + ControlDTCSetting_On + Control DTC Setting On + + + + CANdelaServiceInformation + + ControlDTCSetting + Control DTC Setting + On + On + no + + + + + + + + + + + + + + + + + + + 80 + + + + + ControlDTCSetting_Off + Control DTC Setting Off + + + + CANdelaServiceInformation + + ControlDTCSetting + Control DTC Setting + Off + Off + no + + + + + + + + + + + + + + + + + + + 80 + + + + + DevelopmentData_Read + Development Data Read + + + + CANdelaServiceInformation + + DevelopmentData + Development Data + Read + Read + no + + + + + + + + + + + + + + + + + + + + SerialNumber_Read + Serial Number Read + + + + CANdelaServiceInformation + + SerialNumber + Serial Number + Read + Read + no + + + + + + + + + + + + + + + + + + + + SerialNumber_Write + Serial Number Write + + + + CANdelaServiceInformation + + SerialNumber + Serial Number + Write + Write + no + + + + + + + + + + + + + + + + + + + + EcuIdentification_Read + Ecu Identification Read + + + + CANdelaServiceInformation + + EcuIdentification + Ecu Identification + Read + Read + no + + + + + + + + + + + + + + + + + + + + EcuIdentification_Write + Ecu Identification Write + + + + CANdelaServiceInformation + + EcuIdentification + Ecu Identification + Write + Write + no + + + + + + + + + + + + + + + + + + + + User_Interface_Settings_Read + User Interface Settings Read + + + + CANdelaServiceInformation + + User_Interface_Settings + User Interface Settings + Read + Read + no + + + + + + + + + + + + + + + + + + + + User_Interface_Settings_Write + User Interface Settings Write + + + + CANdelaServiceInformation + + User_Interface_Settings + User Interface Settings + Write + Write + no + + + + + + + + + + + + + + + + + + + + Variant_Coding_Read + Variant Coding Read + + + + CANdelaServiceInformation + + Variant_Coding + Variant Coding + Read + Read + no + + + + + + + + + + + + + + + + + + + + + + + + + Variant_Coding_Write + Variant Coding Write + + + + CANdelaServiceInformation + + Variant_Coding + Variant Coding + Write + Write + no + + + + + + + + + + + + + + + + + + + + + + + + + Mirror_Settings_Read + Mirror Settings Read + + + + CANdelaServiceInformation + + Mirror_Settings + Mirror Settings + Read + Read + no + + + + + + + + + + + + + + + + + + + + Mirror_Settings_Write + Mirror Settings Write + + + + CANdelaServiceInformation + + Mirror_Settings + Mirror Settings + Write + Write + no + + + + + + + + + + + + + + + + + + + + Window_Lift_Settings_Read + Window Lift Settings Read + + + + CANdelaServiceInformation + + Window_Lift_Settings + Window Lift Settings + Read + Read + no + + + + + + + + + + + + + + + + + + + + Window_Lift_Settings_Write + Window Lift Settings Write + + + + CANdelaServiceInformation + + Window_Lift_Settings + Window Lift Settings + Write + Write + no + + + + + + + + + + + + + + + + + + + + DID_WindowLiftRoughPosition_Read + DID WindowLiftRoughPosition Read + + + + CANdelaServiceInformation + + DID_WindowLiftRoughPosition + DID WindowLiftRoughPosition + Read + Read + no + + + + + + + + + + + + + + + + + + + + DID_WindowLiftRoughPosition_Write + DID WindowLiftRoughPosition Write + + + + CANdelaServiceInformation + + DID_WindowLiftRoughPosition + DID WindowLiftRoughPosition + Write + Write + no + + + + + + + + + + + + + + + + + + + + DID_Fingerprint_Read + DID Fingerprint Read + + + + CANdelaServiceInformation + + DID_Fingerprint + DID Fingerprint + Read + Read + no + + + + + + + + + + + + + + + + DID_Fingerprint_Write + DID Fingerprint Write + + + + CANdelaServiceInformation + + DID_Fingerprint + DID Fingerprint + Write + Write + no + + + + + + + + + + + + + + + + DID_OdometerValue_Read + DID OdometerValue Read + + + + CANdelaServiceInformation + + DID_OdometerValue + DID OdometerValue + Read + Read + no + + + + + + + + + + + + + + + + + + + + DID_Voltage_Read + DID Voltage Read + + + + CANdelaServiceInformation + + DID_Voltage + DID Voltage + Read + Read + no + + + + + + + + + + + + + + + + + + + + DID_SineWave_Read + DID SineWave Read + + + + CANdelaServiceInformation + + DID_SineWave + DID SineWave + Read + Read + no + + + + + + + + + + + + + + + + + + + + DID_Sawtooth_Read + DID Sawtooth Read + + + + CANdelaServiceInformation + + DID_Sawtooth + DID Sawtooth + Read + Read + no + + + + + + + + + + + + + + + + + + + + SineWave_Send_once + SineWave Send once + + + + CANdelaServiceInformation + + SineWave + SineWave + Send_once + Send once + no + + + + + + + + + + + + + + + + + + + + SineWave_Send_slow + SineWave Send slow + + + + CANdelaServiceInformation + + SineWave + SineWave + Send_slow + Send slow + no + + + + + + + + + + + + + + + + + + + + + SineWave_Send_medium + SineWave Send medium + + + + CANdelaServiceInformation + + SineWave + SineWave + Send_medium + Send medium + no + + + + + + + + + + + + + + + + + + + + + SineWave_Send_fast + SineWave Send fast + + + + CANdelaServiceInformation + + SineWave + SineWave + Send_fast + Send fast + no + + + + + + + + + + + + + + + + + + + + + SineWave_Stop + SineWave Stop + + + + CANdelaServiceInformation + + SineWave + SineWave + Stop + Stop + no + + + + + + + + + + + + + + + + + + + + SineWave_Stop_all + SineWave Stop all + + + + CANdelaServiceInformation + + SineWave + SineWave + Stop_all + Stop all + no + + + + + + + + + + + + + + + + + + + + Sawtooth_Send_once + Sawtooth Send once + + + + CANdelaServiceInformation + + Sawtooth + Sawtooth + Send_once + Send once + no + + + + + + + + + + + + + + + + + + + + Sawtooth_Send_slow + Sawtooth Send slow + + + + CANdelaServiceInformation + + Sawtooth + Sawtooth + Send_slow + Send slow + no + + + + + + + + + + + + + + + + + + + + + Sawtooth_Send_medium + Sawtooth Send medium + + + + CANdelaServiceInformation + + Sawtooth + Sawtooth + Send_medium + Send medium + no + + + + + + + + + + + + + + + + + + + + + Sawtooth_Send_fast + Sawtooth Send fast + + + + CANdelaServiceInformation + + Sawtooth + Sawtooth + Send_fast + Send fast + no + + + + + + + + + + + + + + + + + + + + + Sawtooth_Stop + Sawtooth Stop + + + + CANdelaServiceInformation + + Sawtooth + Sawtooth + Stop + Stop + no + + + + + + + + + + + + + + + + + + + + Sawtooth_Stop_all + Sawtooth Stop all + + + + CANdelaServiceInformation + + Sawtooth + Sawtooth + Stop_all + Stop all + no + + + + + + + + + + + + + + + + + + + + Dynamically_Define_Periodic_Data_Read + Dynamically Define Periodic Data Read + + + + CANdelaServiceInformation + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + Read + Read + no + + + + + + + + + + + + + + + + + + + + Dynamically_Define_Periodic_Data_Define_By_Identifier + Dynamically Define Periodic Data Define By Identifier + + + + CANdelaServiceInformation + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + Define_By_Identifier + Define By Identifier + no + + + + + + + + + + + + + + + + + + + 80 + + + + + Dynamically_Define_Periodic_Data_Clear + Dynamically Define Periodic Data Clear + + + + CANdelaServiceInformation + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + Clear + Clear + no + + + + + + + + + + + + + + + + + + + 80 + + + + + Dynamically_Define_Periodic_Data_ClearAll + Dynamically Define Periodic Data ClearAll + + + + CANdelaServiceInformation + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + ClearAll + ClearAll + no + + + + + + + + + + + + + + + + + + + 80 + + + + + Dynamically_Define_Periodic_Data_Send_slow + Dynamically Define Periodic Data Send slow + + + + CANdelaServiceInformation + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + Send_slow + Send slow + no + + + + + + + + + + + + + + + + + + + + + Dynamically_Define_Periodic_Data_Send_medium + Dynamically Define Periodic Data Send medium + + + + CANdelaServiceInformation + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + Send_medium + Send medium + no + + + + + + + + + + + + + + + + + + + + + Dynamically_Define_Periodic_Data_Send_fast + Dynamically Define Periodic Data Send fast + + + + CANdelaServiceInformation + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + Send_fast + Send fast + no + + + + + + + + + + + + + + + + + + + + + Dynamically_Define_Periodic_Data_Stop + Dynamically Define Periodic Data Stop + + + + CANdelaServiceInformation + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + Stop + Stop + no + + + + + + + + + + + + + + + + + + + + Dynamically_Define_Periodic_Data_Stop_all + Dynamically Define Periodic Data Stop all + + + + CANdelaServiceInformation + + Dynamically_Define_Periodic_Data + Dynamically Define Periodic Data + Stop_all + Stop all + no + + + + + + + + + + + + + + + + + + + + Door_Status_Read + Door Status Read + + + + CANdelaServiceInformation + + Door_Status + Door Status + Read + Read + no + + + + + + + + + + + + + + + + + + + + Door_Status_ReturnControl + Door Status ReturnControl + + + + CANdelaServiceInformation + + Door_Status + Door Status + ReturnControl + ReturnControl + no + + + + + + + + + + + + + + + + + + + + + + + Door_Status_Reset + Door Status Reset + + + + CANdelaServiceInformation + + Door_Status + Door Status + Reset + Reset + no + + + + + + + + + + + + + + + + + + + + + + + Door_Status_Freeze + Door Status Freeze + + + + CANdelaServiceInformation + + Door_Status + Door Status + Freeze + Freeze + no + + + + + + + + + + + + + + + + + + + + + + + Door_Status_Control + Door Status Control + + + + CANdelaServiceInformation + + Door_Status + Door Status + Control + Control + no + + + + + + + + + + + + + + + + + + + + + + + Routine_Control_Flash1_Start + Routine Control Flash1 Start + + + + CANdelaServiceInformation + + Routine_Control_Flash1 + Routine Control Flash1 + Start + Start + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Routine_Control_Flash1_Stop + Routine Control Flash1 Stop + + + + CANdelaServiceInformation + + Routine_Control_Flash1 + Routine Control Flash1 + Stop + Stop + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Routine_Control_Flash2_Start + Routine Control Flash2 Start + + + + CANdelaServiceInformation + + Routine_Control_Flash2 + Routine Control Flash2 + Start + Start + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Routine_Control_Flash2_Stop + Routine Control Flash2 Stop + + + + CANdelaServiceInformation + + Routine_Control_Flash2 + Routine Control Flash2 + Stop + Stop + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Routine_Control_Flash2_1_Start + Routine Control Flash3 Start + + + + CANdelaServiceInformation + + Routine_Control_Flash2_1 + Routine Control Flash3 + Start + Start + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Routine_Control_Flash2_1_Stop + Routine Control Flash3 Stop + + + + CANdelaServiceInformation + + Routine_Control_Flash2_1 + Routine Control Flash3 + Stop + Stop + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Routine_Control_Flash4_Start + Routine Control Flash4 Start + + + + CANdelaServiceInformation + + Routine_Control_Flash4 + Routine Control Flash4 + Start + Start + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + Routine_Control_Flash4_Stop + Routine Control Flash4 Stop + + + + CANdelaServiceInformation + + Routine_Control_Flash4 + Routine Control Flash4 + Stop + Stop + no + + + + + + + + + + + + + + + + + + + + + + + 80 + + + + + FaultMemory_ReadNumber + Fault Memory Read (Number) + + + + CANdelaServiceInformation + + FaultMemory + Fault Memory + ReadNumber + Read - number of DTCs + no + + + + + + + + + + + + + + + + + + + 80 + + + + + FaultMemory_ReadAllIdentified + Fault Memory Read (all identified) + + + + CANdelaServiceInformation + + FaultMemory + Fault Memory + ReadAllIdentified + Read - DTCs by status mask + no + + + + + + + + + + + + + + + + + + + 80 + + + + + FaultMemory_Read_snapshot_by_DTC + Fault Memory Read - snapshot by DTC + + + + CANdelaServiceInformation + + FaultMemory + Fault Memory + Read_snapshot_by_DTC + Read - snapshot by DTC + no + + + + + + + + + + + + + + + + + + + + FaultMemory_Read_extended_data_record + Fault Memory Read - extended data record + + + + CANdelaServiceInformation + + FaultMemory + Fault Memory + Read_extended_data_record + Read - extended data record + no + + + + + + + + + + + + + + + + + + + + FaultMemory_ReadAllSupported + Fault Memory Read (supported errors) + + + + CANdelaServiceInformation + + FaultMemory + Fault Memory + ReadAllSupported + Read - supported DTCs + no + + + + + + + + + + + + + + + + + + + 80 + + + + + FaultMemory_Clear + Fault Memory Clear (all errors) + + + + CANdelaServiceInformation + + FaultMemory + Fault Memory + Clear + Clear DTC + no + + + + + + + + + + + + + + + + + + + + Download_Request + Download Request + + + + CANdelaServiceInformation + + Upload_Download + Upload/Download + RequestDownload + RequestDownload + no + + + + + + + + + + + + + + + + + + + + + + + + Download_Transmit + Download Transmit + + + + CANdelaServiceInformation + + Upload_Download + Upload/Download + Transmit + Transmit + no + + + + + + + + + + + + + + + + + + + + + + + + Download_Stop + Download Stop + + + + CANdelaServiceInformation + + Upload_Download + Upload/Download + Stop + Stop + no + + + + + + + + + + + + + + + + + + + + + + + + + + RQ_DefaultSession_Start + RQ Default Session Start + + + SID_RQ + SID-RQ + 0 + 16 + + 8 + + + + DiagSessionType + Type + 1 + 1 + + 8 + + + + + + RQ_DefaultSession_Start_NoResponse + RQ Default Session Start_NoResponse + + + SID_RQ + SID-RQ + 0 + 16 + + 8 + + + + DiagSessionType + Type + 1 + 129 + + 8 + + + + + + RQ_ProgrammingSession_Start + RQ Programming Session Start + + + SID_RQ + SID-RQ + 0 + 16 + + 8 + + + + DiagSessionType + Type + 1 + 2 + + 8 + + + + + + RQ_ProgrammingSession_Start_NoResponse + RQ Programming Session Start_NoResponse + + + SID_RQ + SID-RQ + 0 + 16 + + 8 + + + + DiagSessionType + Type + 1 + 130 + + 8 + + + + + + RQ_ExtendedDiagnosticSession_Start + RQ Extended Diagnostic Session Start + + + SID_RQ + SID-RQ + 0 + 16 + + 8 + + + + DiagSessionType + Type + 1 + 3 + + 8 + + + + + + RQ_ExtendedDiagnosticSession_Start_NoResponse + RQ Extended Diagnostic Session Start_NoResponse + + + SID_RQ + SID-RQ + 0 + 16 + + 8 + + + + DiagSessionType + Type + 1 + 131 + + 8 + + + + + + RQ_Hard_Reset_Reset + RQ Hard Reset Reset + + + SID_RQ + SID-RQ + 0 + 17 + + 8 + + + + ResetType + Type + 1 + 1 + + 8 + + + + + + RQ_Hard_Reset_Reset_NoResponse + RQ Hard Reset Reset_NoResponse + + + SID_RQ + SID-RQ + 0 + 17 + + 8 + + + + ResetType + Type + 1 + 129 + + 8 + + + + + + RQ_Soft_Reset_Reset + RQ Soft Reset Reset + + + SID_RQ + SID-RQ + 0 + 17 + + 8 + + + + ResetType + Type + 1 + 3 + + 8 + + + + + + RQ_Soft_Reset_Reset_NoResponse + RQ Soft Reset Reset_NoResponse + + + SID_RQ + SID-RQ + 0 + 17 + + 8 + + + + ResetType + Type + 1 + 131 + + 8 + + + + + + RQ_SeedLevel_0x01_Request + RQ RequestSeed 0x01 Request + + + SID_RQ + SID-RQ + 0 + 39 + + 8 + + + + SecurityAccessType + Type + 1 + 1 + + 8 + + + + + + RQ_SeedLevel_0x01_Request_NoResponse + RQ RequestSeed 0x01 Request_NoResponse + + + SID_RQ + SID-RQ + 0 + 39 + + 8 + + + + SecurityAccessType + Type + 1 + 129 + + 8 + + + + + + RQ_KeyLevel_0x01_Send + RQ SendKey 0x01 Send + + + SID_RQ + SID-RQ + 0 + 39 + + 8 + + + + SecurityAccessType + Type + 1 + 2 + + 8 + + + + SecurityKey + SecurityKey + 2 + + + + + + RQ_KeyLevel_0x01_Send_NoResponse + RQ SendKey 0x01 Send_NoResponse + + + SID_RQ + SID-RQ + 0 + 39 + + 8 + + + + SecurityAccessType + Type + 1 + 130 + + 8 + + + + SecurityKey + SecurityKey + 2 + + + + + + RQ_SeedLevel_0x11_Request + RQ RequestSeed 0x11 Request + + + SID_RQ + SID-RQ + 0 + 39 + + 8 + + + + SecurityAccessType + Type + 1 + 17 + + 8 + + + + + + RQ_SeedLevel_0x11_Request_NoResponse + RQ RequestSeed 0x11 Request_NoResponse + + + SID_RQ + SID-RQ + 0 + 39 + + 8 + + + + SecurityAccessType + Type + 1 + 145 + + 8 + + + + + + RQ_KeyLevel_0x11_Send + RQ SendKey 0x11 Send + + + SID_RQ + SID-RQ + 0 + 39 + + 8 + + + + SecurityAccessType + Type + 1 + 18 + + 8 + + + + SecurityKey + SecurityKey + 2 + + + + + + RQ_KeyLevel_0x11_Send_NoResponse + RQ SendKey 0x11 Send_NoResponse + + + SID_RQ + SID-RQ + 0 + 39 + + 8 + + + + SecurityAccessType + Type + 1 + 146 + + 8 + + + + SecurityKey + SecurityKey + 2 + + + + + + RQ_Authentication_Verify_Certificate_Unidirectional + RQ Authentication Verify Certificate Unidirectional + + + SID_RQ + SID-RQ + 0 + 41 + + 8 + + + + VerifyCertificateUnidirectional + VerifyCertificateUnidirectional + 1 + 1 + + 8 + + + + CommunicationConfiguration + CommunicationConfiguration + 2 + + + + Data + Data + 3 + + + + + + RQ_Authentication_Proof_Of_Ownership + RQ Authentication Proof Of Ownership + + + SID_RQ + SID-RQ + 0 + 41 + + 8 + + + + ProofOfOwnership + ProofOfOwnership + 1 + 3 + + 8 + + + + Data + Data + 2 + + + + + + RQ_Authentication_Transmit_Certificate + RQ Authentication Transmit Certificate + + + SID_RQ + SID-RQ + 0 + 41 + + 8 + + + + TransmitCertificate + TransmitCertificate + 1 + 4 + + 8 + + + + Data + Data + 2 + + + + + + RQ_Authentication_Request_Challenge + RQ Authentication Request Challenge + + + SID_RQ + SID-RQ + 0 + 41 + + 8 + + + + RequestChallengeForAuthentication + RequestChallengeForAuthentication + 1 + 5 + + 8 + + + + CommunicationConfiguration + CommunicationConfiguration + 2 + + + + AlgorithmIndicator + AlgorithmIndicator + 3 + + + + + + RQ_Authentication_Verify_Proof_of_Ownership_Unidirectional + RQ Authentication Verify Proof of Ownership Unidirectional + + + SID_RQ + SID-RQ + 0 + 41 + + 8 + + + + VerifyProofOfOwnershipUnidirectional + VerifyProofOfOwnershipUnidirectional + 1 + 6 + + 8 + + + + AlgorithmIndicator + AlgorithmIndicator + 2 + + + + Data + Data + 18 + + + + + + RQ_Authentication_Verify_Proof_of_Ownership_Bidirectional + RQ Authentication Verify Proof of Ownership Bidirectional + + + SID_RQ + SID-RQ + 0 + 41 + + 8 + + + + VerifyProofOfOwnershipBidirectional + VerifyProofOfOwnershipBidirectional + 1 + 7 + + 8 + + + + AlgorithmIndicator + AlgorithmIndicator + 2 + + + + Data + Data + 18 + + + + + + RQ_Authentication_Deauthenticate + RQ Authentication Deauthenticate + + + SID_RQ + SID-RQ + 0 + 41 + + 8 + + + + DeAuthenticate + DeAuthenticate + 1 + 0 + + 8 + + + + + + RQ_Authentication_Configure + RQ Authentication Configure + + + SID_RQ + SID-RQ + 0 + 41 + + 8 + + + + AuthenticationConfiguration + AuthenticationConfiguration + 1 + 8 + + 8 + + + + + + RQ_EnableRxAndEnableTx_Control + RQ EnableRxAndEnableTx Control + + + SID_RQ + SID-RQ + 0 + 40 + + 8 + + + + ControlType + Type + 1 + 0 + + 8 + + + + CommunicationType + CommunicationType + 2 + + + + + + RQ_EnableRxAndEnableTx_Control_NoResponse + RQ EnableRxAndEnableTx Control_NoResponse + + + SID_RQ + SID-RQ + 0 + 40 + + 8 + + + + ControlType + Type + 1 + 128 + + 8 + + + + CommunicationType + CommunicationType + 2 + + + + + + RQ_EnableRxAndDisableTx_Control + RQ EnableRxAndDisableTx Control + + + SID_RQ + SID-RQ + 0 + 40 + + 8 + + + + ControlType + Type + 1 + 1 + + 8 + + + + CommunicationType + CommunicationType + 2 + + + + + + RQ_EnableRxAndDisableTx_Control_NoResponse + RQ EnableRxAndDisableTx Control_NoResponse + + + SID_RQ + SID-RQ + 0 + 40 + + 8 + + + + ControlType + Type + 1 + 129 + + 8 + + + + CommunicationType + CommunicationType + 2 + + + + + + RQ_TesterPresent_Send + RQ Tester Present Send + + + SID_RQ + SID-RQ + 0 + 62 + + 8 + + + + ZeroSubfunction + ZeroSubfunction + 1 + 0 + + 8 + + + + + + RQ_TesterPresent_Send_NoResponse + RQ Tester Present Send_NoResponse + + + SID_RQ + SID-RQ + 0 + 62 + + 8 + + + + ZeroSubfunction + ZeroSubfunction + 1 + 128 + + 8 + + + + + + RQ_ControlDTCSetting_On + RQ Control DTC Setting On + + + SID_RQ + SID-RQ + 0 + 133 + + 8 + + + + DTCSettingType + DTCSettingType + 1 + 1 + + 8 + + + + + + RQ_ControlDTCSetting_On_NoResponse + RQ Control DTC Setting On_NoResponse + + + SID_RQ + SID-RQ + 0 + 133 + + 8 + + + + DTCSettingType + DTCSettingType + 1 + 129 + + 8 + + + + + + RQ_ControlDTCSetting_Off + RQ Control DTC Setting Off + + + SID_RQ + SID-RQ + 0 + 133 + + 8 + + + + DTCSettingType + DTCSettingType + 1 + 2 + + 8 + + + + + + RQ_ControlDTCSetting_Off_NoResponse + RQ Control DTC Setting Off_NoResponse + + + SID_RQ + SID-RQ + 0 + 133 + + 8 + + + + DTCSettingType + DTCSettingType + 1 + 130 + + 8 + + + + + + RQ_DevelopmentData_Read + RQ Development Data Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 256 + + 16 + + + + + + RQ_SerialNumber_Read + RQ Serial Number Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61836 + + 16 + + + + + + RQ_SerialNumber_Write + RQ Serial Number Write + + + SID_RQ + SID-RQ + 0 + 46 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61836 + + 16 + + + + SerialNumber + SerialNumber + 3 + + + + + + RQ_EcuIdentification_Read + RQ Ecu Identification Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61833 + + 16 + + + + + + RQ_EcuIdentification_Write + RQ Ecu Identification Write + + + SID_RQ + SID-RQ + 0 + 46 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61833 + + 16 + + + + Part_Number + Part Number + 3 + + + + + + RQ_User_Interface_Settings_Read + RQ User Interface Settings Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 163 + + 16 + + + + + + RQ_User_Interface_Settings_Write + RQ User Interface Settings Write + + + SID_RQ + SID-RQ + 0 + 46 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 163 + + 16 + + + + LED_colour_Red + LED colour Red + 3 + 245 + + + + LED_colour_Green + LED colour Green + 4 + 0 + + + + LED_colour_Blue + LED colour Blue + 5 + 66 + + + + LED_Brightness + LED Brightness + 6 + 255 + + + + + + RQ_Variant_Coding_Read + RQ Variant Coding Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 160 + + 16 + + + + + + RQ_Variant_Coding_Write + RQ Variant Coding Write + + + SID_RQ + SID-RQ + 0 + 46 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 160 + + 16 + + + + Codingstring + Coding string + 3 + + + + + + RQ_Mirror_Settings_Read + RQ Mirror Settings Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 161 + + 16 + + + + + + RQ_Mirror_Settings_Write + RQ Mirror Settings Write + + + SID_RQ + SID-RQ + 0 + 46 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 161 + + 16 + + + + Availability_STRUCTURE + Availability + 3 + + + + Maximum_heating_power + Maximum heating power + 4 + 15 + + + + Motor_calibration + Motor calibration + 5 + 0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E + + + + + + RQ_Window_Lift_Settings_Read + RQ Window Lift Settings Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 162 + + 16 + + + + + + RQ_Window_Lift_Settings_Write + RQ Window Lift Settings Write + + + SID_RQ + SID-RQ + 0 + 46 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 162 + + 16 + + + + Availability_STRUCTURE + Availability + 3 + + + + Anti_pinch_max_force + Anti pinch max force + 4 + 20 + + + + Anti_pinch_reversing_gap + Anti pinch reversing gap + 5 + 30 + + + + Motor_calibration + Motor calibration + 7 + 0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E + + + + + + RQ_DID_WindowLiftRoughPosition_Read + RQ DID WindowLiftRoughPosition Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 513 + + 16 + + + + + + RQ_DID_WindowLiftRoughPosition_Write + RQ DID WindowLiftRoughPosition Write + + + SID_RQ + SID-RQ + 0 + 46 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 513 + + 16 + + + + DID_WindowLiftRoughPosition + DID WindowLiftRoughPosition + 3 + + + + + + RQ_DID_Fingerprint_Read + RQ DID Fingerprint Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61786 + + 16 + + + + + + RQ_DID_Fingerprint_Write + RQ DID Fingerprint Write + + + SID_RQ + SID-RQ + 0 + 46 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61786 + + 16 + + + + DID_Fingerprint + DID Fingerprint + 3 + + + + + + RQ_DID_OdometerValue_Read + RQ DID OdometerValue Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 264 + + 16 + + + + + + RQ_DID_Voltage_Read + RQ DID Voltage Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 263 + + 16 + + + + + + RQ_DID_SineWave_Read + RQ DID SineWave Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 1 + + 16 + + + + + + RQ_DID_Sawtooth_Read + RQ DID Sawtooth Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 2 + + 16 + + + + + + RQ_SineWave_Send_once + RQ SineWave Send once + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 242 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 0 + + 8 + + + + + + RQ_SineWave_Send_slow + RQ SineWave Send slow + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 1 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 0 + + 8 + + + + + + RQ_SineWave_Send_medium + RQ SineWave Send medium + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 2 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 0 + + 8 + + + + + + RQ_SineWave_Send_fast + RQ SineWave Send fast + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 3 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 0 + + 8 + + + + + + RQ_SineWave_Stop + RQ SineWave Stop + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 4 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 0 + + 8 + + + + + + RQ_SineWave_Stop_all + RQ SineWave Stop all + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 4 + + 8 + + + + + + RQ_Sawtooth_Send_once + RQ Sawtooth Send once + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 242 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 1 + + 8 + + + + + + RQ_Sawtooth_Send_slow + RQ Sawtooth Send slow + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 1 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 1 + + 8 + + + + + + RQ_Sawtooth_Send_medium + RQ Sawtooth Send medium + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 2 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 1 + + 8 + + + + + + RQ_Sawtooth_Send_fast + RQ Sawtooth Send fast + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 3 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 1 + + 8 + + + + + + RQ_Sawtooth_Stop + RQ Sawtooth Stop + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 4 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 1 + + 8 + + + + + + RQ_Sawtooth_Stop_all + RQ Sawtooth Stop all + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 4 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_Read + RQ Dynamically Define Periodic Data Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + F2 + F2 + 1 + 242 + + 8 + + + + Identifier + Identifier + 2 + 240 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_Define_By_Identifier + RQ Dynamically Define Periodic Data Define By Identifier + + + SID_RQ + SID-RQ + 0 + 44 + + 8 + + + + DefinitionType_Define + DefinitionType - Define + 1 + 1 + + 8 + + + + F2 + F2 + 2 + 242 + + 8 + + + + DynamicallyDefinedIdentifier + DynamicallyDefinedIdentifier + 3 + 240 + + 8 + + + + ListOfParameter + ListOfParameter + 4 + + + + + + RQ_Dynamically_Define_Periodic_Data_Define_By_Identifier_NoResponse + RQ Dynamically Define Periodic Data Define By Identifier_NoResponse + + + SID_RQ + SID-RQ + 0 + 44 + + 8 + + + + DefinitionType_Define + DefinitionType - Define + 1 + 129 + + 8 + + + + F2 + F2 + 2 + 242 + + 8 + + + + DynamicallyDefinedIdentifier + DynamicallyDefinedIdentifier + 3 + 240 + + 8 + + + + ListOfParameter + ListOfParameter + 4 + + + + + + RQ_Dynamically_Define_Periodic_Data_Clear + RQ Dynamically Define Periodic Data Clear + + + SID_RQ + SID-RQ + 0 + 44 + + 8 + + + + DefinitionType_Clear + DefinitionType - Clear + 1 + 3 + + 8 + + + + F2 + F2 + 2 + 242 + + 8 + + + + DynamicallyDefinedIdentifier + DynamicallyDefinedIdentifier + 3 + 240 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_Clear_NoResponse + RQ Dynamically Define Periodic Data Clear_NoResponse + + + SID_RQ + SID-RQ + 0 + 44 + + 8 + + + + DefinitionType_Clear + DefinitionType - Clear + 1 + 131 + + 8 + + + + F2 + F2 + 2 + 242 + + 8 + + + + DynamicallyDefinedIdentifier + DynamicallyDefinedIdentifier + 3 + 240 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_ClearAll + RQ Dynamically Define Periodic Data ClearAll + + + SID_RQ + SID-RQ + 0 + 44 + + 8 + + + + DefinitionType_ClearAll + DefinitionType - ClearAll + 1 + 3 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_ClearAll_NoResponse + RQ Dynamically Define Periodic Data ClearAll_NoResponse + + + SID_RQ + SID-RQ + 0 + 44 + + 8 + + + + DefinitionType_ClearAll + DefinitionType - ClearAll + 1 + 131 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_Send_slow + RQ Dynamically Define Periodic Data Send slow + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 1 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 240 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_Send_medium + RQ Dynamically Define Periodic Data Send medium + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 2 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 240 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_Send_fast + RQ Dynamically Define Periodic Data Send fast + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 3 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 240 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_Stop + RQ Dynamically Define Periodic Data Stop + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 4 + + 8 + + + + DataIdentifier + DataIdentifier + 2 + 240 + + 8 + + + + + + RQ_Dynamically_Define_Periodic_Data_Stop_all + RQ Dynamically Define Periodic Data Stop all + + + SID_RQ + SID-RQ + 0 + 42 + + 8 + + + + TransmissionMode + TransmissionMode + 1 + 4 + + 8 + + + + + + RQ_Door_Status_Read + RQ Door Status Read + + + SID_RQ + SID-RQ + 0 + 34 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 16 + + 16 + + + + + + RQ_Door_Status_ReturnControl + RQ Door Status ReturnControl + + + SID_RQ + SID-RQ + 0 + 47 + + 8 + + + + DataIdentifier + Identifier + 1 + 16 + + 16 + + + + ControlOptionRecord_InputOutputControlParameter + ControlOptionRecord_InputOutputControlParameter + 3 + 0 + + 8 + + + + + + RQ_Door_Status_Reset + RQ Door Status Reset + + + SID_RQ + SID-RQ + 0 + 47 + + 8 + + + + DataIdentifier + Identifier + 1 + 16 + + 16 + + + + ControlOptionRecord_InputOutputControlParameter + ControlOptionRecord_InputOutputControlParameter + 3 + 1 + + 8 + + + + + + RQ_Door_Status_Freeze + RQ Door Status Freeze + + + SID_RQ + SID-RQ + 0 + 47 + + 8 + + + + DataIdentifier + Identifier + 1 + 16 + + 16 + + + + ControlOptionRecord_InputOutputControlParameter + ControlOptionRecord_InputOutputControlParameter + 3 + 2 + + 8 + + + + + + RQ_Door_Status_Control + RQ Door Status Control + + + SID_RQ + SID-RQ + 0 + 47 + + 8 + + + + DataIdentifier + Identifier + 1 + 16 + + 16 + + + + ControlOptionRecord_InputOutputControlParameter + ControlOptionRecord_InputOutputControlParameter + 3 + 3 + + 8 + + + + Door_Contact + Door Contact + 4 + + + + + + RQ_Routine_Control_Flash1_Start + RQ Routine Control Flash1 Start + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 1 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 515 + + 16 + + + + ControlOptions + ControlOptions + 4 + + + + + + RQ_Routine_Control_Flash1_Start_NoResponse + RQ Routine Control Flash1 Start_NoResponse + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 129 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 515 + + 16 + + + + ControlOptions + ControlOptions + 4 + + + + + + RQ_Routine_Control_Flash1_Stop + RQ Routine Control Flash1 Stop + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 2 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 515 + + 16 + + + + + + RQ_Routine_Control_Flash1_Stop_NoResponse + RQ Routine Control Flash1 Stop_NoResponse + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 130 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 515 + + 16 + + + + + + RQ_Routine_Control_Flash2_Start + RQ Routine Control Flash2 Start + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 1 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 514 + + 16 + + + + + + RQ_Routine_Control_Flash2_Start_NoResponse + RQ Routine Control Flash2 Start_NoResponse + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 129 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 514 + + 16 + + + + + + RQ_Routine_Control_Flash2_Stop + RQ Routine Control Flash2 Stop + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 2 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 514 + + 16 + + + + + + RQ_Routine_Control_Flash2_Stop_NoResponse + RQ Routine Control Flash2 Stop_NoResponse + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 130 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 514 + + 16 + + + + + + RQ_Routine_Control_Flash2_1_Start + RQ Routine Control Flash3 Start + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 1 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65280 + + 16 + + + + + + RQ_Routine_Control_Flash2_1_Start_NoResponse + RQ Routine Control Flash3 Start_NoResponse + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 129 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65280 + + 16 + + + + + + RQ_Routine_Control_Flash2_1_Stop + RQ Routine Control Flash3 Stop + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 2 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65280 + + 16 + + + + + + RQ_Routine_Control_Flash2_1_Stop_NoResponse + RQ Routine Control Flash3 Stop_NoResponse + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 130 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65280 + + 16 + + + + + + RQ_Routine_Control_Flash4_Start + RQ Routine Control Flash4 Start + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 1 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65281 + + 16 + + + + + + RQ_Routine_Control_Flash4_Start_NoResponse + RQ Routine Control Flash4 Start_NoResponse + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 129 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65281 + + 16 + + + + + + RQ_Routine_Control_Flash4_Stop + RQ Routine Control Flash4 Stop + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 2 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65281 + + 16 + + + + + + RQ_Routine_Control_Flash4_Stop_NoResponse + RQ Routine Control Flash4 Stop_NoResponse + + + SID_RQ + SID-RQ + 0 + 49 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 130 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65281 + + 16 + + + + + + RQ_FaultMemory_ReadNumber + RQ Fault Memory Read (Number) + + + SID_RQ + SID-RQ + 0 + 25 + + 8 + + + + ReportNumberOfDtcByStatusMask + ReportNumberOfDtcByStatusMask + 1 + 1 + + 8 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 2 + + + + + + RQ_FaultMemory_ReadNumber_NoResponse + RQ Fault Memory Read (Number)_NoResponse + + + SID_RQ + SID-RQ + 0 + 25 + + 8 + + + + ReportNumberOfDtcByStatusMask + ReportNumberOfDtcByStatusMask + 1 + 129 + + 8 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 2 + + + + + + RQ_FaultMemory_ReadAllIdentified + RQ Fault Memory Read (all identified) + + + SID_RQ + SID-RQ + 0 + 25 + + 8 + + + + ReportDtcByStatusMask + ReportDtcByStatusMask + 1 + 2 + + 8 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + 2 + + + + + + RQ_FaultMemory_ReadAllIdentified_NoResponse + RQ Fault Memory Read (all identified)_NoResponse + + + SID_RQ + SID-RQ + 0 + 25 + + 8 + + + + ReportDtcByStatusMask + ReportDtcByStatusMask + 1 + 130 + + 8 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 2 + + + + + + RQ_FaultMemory_Read_snapshot_by_DTC + RQ Fault Memory Read - snapshot by DTC + + + SID_RQ + SID-RQ + 0 + 25 + + 8 + + + + ReportDTCSnapshotRecordByDTCNumber + ReportDTCSnapshotRecordByDTCNumber + 1 + 4 + + 8 + + + + DTC + DTC + 2 + + + + Record_Numbers + Record Numbers + 5 + + + + + + RQ_FaultMemory_Read_extended_data_record + RQ Fault Memory Read - extended data record + + + SID_RQ + SID-RQ + 0 + 25 + + 8 + + + + ReportDTCExtendedDataRecordByDtcNumber + ReportDTCExtendedDataRecordByDtcNumber + 1 + 6 + + 8 + + + + + DTC + DTC + 2 + + + + DTCExtendedDataRecordNumber + DTCExtendedDataRecordNumber + 5 + + + + + + RQ_FaultMemory_ReadAllSupported + RQ Fault Memory Read (supported errors) + + + SID_RQ + SID-RQ + 0 + 25 + + 8 + + + + ReportSupportedDTC + ReportSupportedDTC + 1 + 10 + + 8 + + + + + + RQ_FaultMemory_ReadAllSupported_NoResponse + RQ Fault Memory Read (supported errors)_NoResponse + + + SID_RQ + SID-RQ + 0 + 25 + + 8 + + + + ReportSupportedDTC + ReportSupportedDTC + 1 + 138 + + 8 + + + + + + RQ_FaultMemory_Clear + RQ Fault Memory Clear (all errors) + + + SID_RQ + SID-RQ + 0 + 20 + + 8 + + + + GroupOfDtc + GroupOfDtc + 1 + All groups + + + + + + RQ_Download_Request + RQ Download Request + + + SID_RQ + SID-RQ + 0 + 52 + + 8 + + + + DFI + DataFormatIdentifier + 1 + + + + + ALFID + Address and Length Format Identifier + 2 + + + + MA_MS + Address and Size + 3 + + + + + + RQ_Download_Transmit + RQ Download Transmit + + + SID_RQ + SID-RQ + 0 + 54 + + 8 + + + + blockSequenceCounter + blockSequenceCounter + 1 + + + + transferRequestParameterRecord + transferRequestParameterRecord + 2 + + + + + + RQ_Download_Stop + RQ Download Stop + + + SID_RQ + SID-RQ + 0 + 55 + + 8 + + + + + + + + PR_DefaultSession_Start + PR Default Session Start + + + SID_PR + SID-PR + 0 + 80 + + 8 + + + + DiagSessionType + Type + 1 + 1 + + 8 + + + + P2 + P2 + 2 + + + + P2Ex + P2Ex + 4 + + + + + + PR_ProgrammingSession_Start + PR Programming Session Start + + + SID_PR + SID-PR + 0 + 80 + + 8 + + + + DiagSessionType + Type + 1 + 2 + + 8 + + + + P2 + P2 + 2 + + + + P2Ex + P2Ex + 4 + + + + + + PR_ExtendedDiagnosticSession_Start + PR Extended Diagnostic Session Start + + + SID_PR + SID-PR + 0 + 80 + + 8 + + + + DiagSessionType + Type + 1 + 3 + + 8 + + + + P2 + P2 + 2 + + + + P2Ex + P2Ex + 4 + + + + + + PR_Hard_Reset_Reset + PR Hard Reset Reset + + + SID_PR + SID-PR + 0 + 81 + + 8 + + + + ResetType + Type + 1 + 1 + + 8 + + + + + + PR_Soft_Reset_Reset + PR Soft Reset Reset + + + SID_PR + SID-PR + 0 + 81 + + 8 + + + + ResetType + Type + 1 + 3 + + 8 + + + + + + PR_SeedLevel_0x01_Request + PR RequestSeed 0x01 Request + + + SID_PR + SID-PR + 0 + 103 + + 8 + + + + SecurityAccessType + Type + 1 + 1 + + 8 + + + + SecuritySeed + SecuritySeed + 2 + + + + + + PR_KeyLevel_0x01_Send + PR SendKey 0x01 Send + + + SID_PR + SID-PR + 0 + 103 + + 8 + + + + SecurityAccessType + Type + 1 + 2 + + 8 + + + + + + PR_SeedLevel_0x11_Request + PR RequestSeed 0x11 Request + + + SID_PR + SID-PR + 0 + 103 + + 8 + + + + SecurityAccessType + Type + 1 + 17 + + 8 + + + + SecuritySeed + SecuritySeed + 2 + + + + + + PR_KeyLevel_0x11_Send + PR SendKey 0x11 Send + + + SID_PR + SID-PR + 0 + 103 + + 8 + + + + SecurityAccessType + Type + 1 + 18 + + 8 + + + + + + PR_Authentication_Verify_Certificate_Unidirectional + PR Authentication Verify Certificate Unidirectional + + + SID_PR + SID-PR + 0 + 105 + + 8 + + + + VerifyCertificateUnidirectional + VerifyCertificateUnidirectional + 1 + 1 + + 8 + + + + AuthenticationReturnParameter + AuthenticationReturnParameter + 2 + + + + Data + Data + 3 + + + + + + PR_Authentication_Proof_Of_Ownership + PR Authentication Proof Of Ownership + + + SID_PR + SID-PR + 0 + 105 + + 8 + + + + ProofOfOwnership + ProofOfOwnership + 1 + 3 + + 8 + + + + AuthenticationReturnParameter + AuthenticationReturnParameter + 2 + + + + Data + Data + 3 + + + + + + PR_Authentication_Transmit_Certificate + PR Authentication Transmit Certificate + + + SID_PR + SID-PR + 0 + 105 + + 8 + + + + TransmitCertificate + TransmitCertificate + 1 + 4 + + 8 + + + + AuthenticationReturnParameter + AuthenticationReturnParameter + 2 + + + + + + PR_Authentication_Request_Challenge + PR Authentication Request Challenge + + + SID_PR + SID-PR + 0 + 105 + + 8 + + + + RequestChallengeForAuthentication + RequestChallengeForAuthentication + 1 + 5 + + 8 + + + + AuthenticationReturnParameter + AuthenticationReturnParameter + 2 + + + + AlgorithmIndicator + AlgorithmIndicator + 3 + + + + Data + Data + 19 + + + + + + PR_Authentication_Verify_Proof_of_Ownership_Unidirectional + PR Authentication Verify Proof of Ownership Unidirectional + + + SID_PR + SID-PR + 0 + 105 + + 8 + + + + VerifyProofOfOwnershipUnidirectional + VerifyProofOfOwnershipUnidirectional + 1 + 6 + + 8 + + + + AuthenticationReturnParameter + AuthenticationReturnParameter + 2 + + + + AlgorithmIndicator + AlgorithmIndicator + 3 + + + + Data + Data + 19 + + + + + + PR_Authentication_Verify_Proof_of_Ownership_Bidirectional + PR Authentication Verify Proof of Ownership Bidirectional + + + SID_PR + SID-PR + 0 + 105 + + 8 + + + + VerifyProofOfOwnershipBidirectional + VerifyProofOfOwnershipBidirectional + 1 + 7 + + 8 + + + + AuthenticationReturnParameter + AuthenticationReturnParameter + 2 + + + + AlgorithmIndicator + AlgorithmIndicator + 3 + + + + Data + Data + 19 + + + + + + PR_Authentication_Deauthenticate + PR Authentication Deauthenticate + + + SID_PR + SID-PR + 0 + 105 + + 8 + + + + DeAuthenticate + DeAuthenticate + 1 + 0 + + 8 + + + + AuthenticationReturnParameter + AuthenticationReturnParameter + 2 + + + + + + PR_Authentication_Configure + PR Authentication Configure + + + SID_PR + SID-PR + 0 + 105 + + 8 + + + + AuthenticationConfiguration + AuthenticationConfiguration + 1 + 8 + + 8 + + + + AuthenticationReturnParameter + AuthenticationReturnParameter + 2 + Authentication Configuration APCE + + + + + + PR_EnableRxAndEnableTx_Control + PR EnableRxAndEnableTx Control + + + SID_PR + SID-PR + 0 + 104 + + 8 + + + + ControlType + Type + 1 + 0 + + 8 + + + + + + PR_EnableRxAndDisableTx_Control + PR EnableRxAndDisableTx Control + + + SID_PR + SID-PR + 0 + 104 + + 8 + + + + ControlType + Type + 1 + 1 + + 8 + + + + + + PR_TesterPresent_Send + PR Tester Present Send + + + SID_PR + SID-PR + 0 + 126 + + 8 + + + + ZeroSubfunction + ZeroSubfunction + 1 + 0 + + 8 + + + + + + PR_ControlDTCSetting_On + PR Control DTC Setting On + + + SID_PR + SID-PR + 0 + 197 + + 8 + + + + DTCSTP + DTCSettingType + 1 + 1 + + 8 + + + + + + PR_ControlDTCSetting_Off + PR Control DTC Setting Off + + + SID_PR + SID-PR + 0 + 197 + + 8 + + + + DTCSTP + DTCSettingType + 1 + 2 + + 8 + + + + + + PR_DevelopmentData_Read + PR Development Data Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 256 + + 16 + + + + OperatingSystemVersion + Operating System (Version) + 3 + + + + CanDriverVersion + CAN Driver (Version) + 5 + + + + NmVersion + NM (Version) + 7 + + + + DiagnosticModuleVersion + Diagnostic Module (Version) + 9 + + + + TransportLayerVersion + Transport Layer (Version) + 11 + + + + + + PR_SerialNumber_Read + PR Serial Number Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61836 + + 16 + + + + SerialNumber + SerialNumber + 3 + + + + + + PR_SerialNumber_Write + PR Serial Number Write + + + SID_PR + SID-PR + 0 + 110 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61836 + + 16 + + + + + + PR_EcuIdentification_Read + PR Ecu Identification Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61833 + + 16 + + + + Part_Number + Part Number + 3 + + + + + + PR_EcuIdentification_Write + PR Ecu Identification Write + + + SID_PR + SID-PR + 0 + 110 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61833 + + 16 + + + + + + PR_User_Interface_Settings_Read + PR User Interface Settings Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 163 + + 16 + + + + LED_colour_Red + LED colour Red + 3 + 245 + + + + LED_colour_Green + LED colour Green + 4 + 0 + + + + LED_colour_Blue + LED colour Blue + 5 + 66 + + + + LED_Brightness + LED Brightness + 6 + 255 + + + + + + PR_User_Interface_Settings_Write + PR User Interface Settings Write + + + SID_PR + SID-PR + 0 + 110 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 163 + + 16 + + + + + + PR_Variant_Coding_Read + PR Variant Coding Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 160 + + 16 + + + + Codingstring + Coding string + 3 + + + + + + PR_Variant_Coding_Write + PR Variant Coding Write + + + SID_PR + SID-PR + 0 + 110 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 160 + + 16 + + + + + + PR_Mirror_Settings_Read + PR Mirror Settings Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 161 + + 16 + + + + Availability_STRUCTURE + Availability + 3 + + + + Availability + Availability + 3 + + + + Maximum_heating_power + Maximum heating power + 4 + 15 + + + + Motor_calibration + Motor calibration + 5 + 0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E + + + + + + PR_Mirror_Settings_Write + PR Mirror Settings Write + + + SID_PR + SID-PR + 0 + 110 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 161 + + 16 + + + + + + PR_Window_Lift_Settings_Read + PR Window Lift Settings Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 162 + + 16 + + + + Availability_STRUCTURE + Availability + 3 + + + + Availability + Availability + 3 + + + + Anti_pinch_max_force + Anti pinch max force + 4 + 20 + + + + Anti_pinch_reversing_gap + Anti pinch reversing gap + 5 + 30 + + + + Motor_calibration + Motor calibration + 7 + 0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E + + + + + + PR_Window_Lift_Settings_Write + PR Window Lift Settings Write + + + SID_PR + SID-PR + 0 + 110 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 162 + + 16 + + + + + + PR_DID_WindowLiftRoughPosition_Read + PR DID WindowLiftRoughPosition Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 513 + + 16 + + + + DID_WindowLiftRoughPosition + DID WindowLiftRoughPosition + 3 + + + + + + PR_DID_WindowLiftRoughPosition_Write + PR DID WindowLiftRoughPosition Write + + + SID_PR + SID-PR + 0 + 110 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 513 + + 16 + + + + + + PR_DID_Fingerprint_Read + PR DID Fingerprint Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61786 + + 16 + + + + DID_Fingerprint + DID Fingerprint + 3 + + + + + + PR_DID_Fingerprint_Write + PR DID Fingerprint Write + + + SID_PR + SID-PR + 0 + 110 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 61786 + + 16 + + + + + + PR_DID_OdometerValue_Read + PR DID OdometerValue Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 264 + + 16 + + + + DID_OdometerValue + DID OdometerValue + 3 + + + + + + PR_DID_Voltage_Read + PR DID Voltage Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 263 + + 16 + + + + DID + DID Voltage + 3 + + + + + + PR_DID_SineWave_Read + PR DID SineWave Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 1 + + 16 + + + + DID_SineWave + DID SineWave + 3 + + + + + + PR_DID_Sawtooth_Read + PR DID Sawtooth Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 2 + + 16 + + + + DID_Sawtooth + DID Sawtooth + 3 + + + + + + PR_SineWave_Send_once + PR SineWave Send once + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + F2 + F2 + 1 + 242 + + 8 + + + + Identifier + Identifier + 2 + 0 + + 8 + + + + SineValue + SineValue + 3 + + + + + + PR_SineWave_Send_slow + PR SineWave Send slow + + + PeriodicDataIdentifier + PeriodicDataIdentifier + 0 + 0 + + 8 + + + + SineValue + SineValue + 1 + + + + + + SineWave_Send_slow_initial_response + SineWave Send slow initial response + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_SineWave_Send_medium + PR SineWave Send medium + + + PeriodicDataIdentifier + PeriodicDataIdentifier + 0 + 0 + + 8 + + + + SineValue + SineValue + 1 + + + + + + SineWave_Send_medium_initial_response + SineWave Send medium initial response + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_SineWave_Send_fast + PR SineWave Send fast + + + PeriodicDataIdentifier + PeriodicDataIdentifier + 0 + 0 + + 8 + + + + SineValue + SineValue + 1 + + + + + + SineWave_Send_fast_initial_response + SineWave Send fast initial response + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_SineWave_Stop + PR SineWave Stop + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_SineWave_Stop_all + PR SineWave Stop all + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Sawtooth_Send_once + PR Sawtooth Send once + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + F2 + F2 + 1 + 242 + + 8 + + + + Identifier + Identifier + 2 + 1 + + 8 + + + + SawtoothValue + SawtoothValue + 3 + + + + + + PR_Sawtooth_Send_slow + PR Sawtooth Send slow + + + PeriodicDataIdentifier + PeriodicDataIdentifier + 0 + 1 + + 8 + + + + SawtoothValue + SawtoothValue + 1 + + + + + + Sawtooth_Send_slow_initial_response + Sawtooth Send slow initial response + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Sawtooth_Send_medium + PR Sawtooth Send medium + + + PeriodicDataIdentifier + PeriodicDataIdentifier + 0 + 1 + + 8 + + + + SawtoothValue + SawtoothValue + 1 + + + + + + Sawtooth_Send_medium_initial_response + Sawtooth Send medium initial response + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Sawtooth_Send_fast + PR Sawtooth Send fast + + + PeriodicDataIdentifier + PeriodicDataIdentifier + 0 + 1 + + 8 + + + + SawtoothValue + SawtoothValue + 1 + + + + + + Sawtooth_Send_fast_initial_response + Sawtooth Send fast initial response + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Sawtooth_Stop + PR Sawtooth Stop + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Sawtooth_Stop_all + PR Sawtooth Stop all + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Dynamically_Define_Periodic_Data_Read + PR Dynamically Define Periodic Data Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + F2 + F2 + 1 + 242 + + 8 + + + + Identifier + Identifier + 2 + 240 + + 8 + + + + Data + Data + 3 + + + + + + PR_Dynamically_Define_Periodic_Data_Define_By_Identifier + PR Dynamically Define Periodic Data Define By Identifier + + + SID_PR + SID-PR + 0 + 108 + + 8 + + + + DefinitionType_Define + DefinitionType - Define + 1 + 1 + + 8 + + + + F2 + F2 + 2 + 242 + + 8 + + + + DynamicallyDefinedIdentifier + DynamicallyDefinedIdentifier + 3 + 240 + + 8 + + + + + + PR_Dynamically_Define_Periodic_Data_Clear + PR Dynamically Define Periodic Data Clear + + + SID_PR + SID-PR + 0 + 108 + + 8 + + + + DefinitionType_Clear + DefinitionType - Clear + 1 + 3 + + 8 + + + + F2 + F2 + 2 + 242 + + 8 + + + + DynamicallyDefinedIdentifier + DynamicallyDefinedIdentifier + 3 + 240 + + 8 + + + + + + PR_Dynamically_Define_Periodic_Data_ClearAll + PR Dynamically Define Periodic Data ClearAll + + + SID_PR + SID-PR + 0 + 108 + + 8 + + + + DefinitionType_ClearAll + DefinitionType - ClearAll + 1 + 3 + + 8 + + + + + + PR_Dynamically_Define_Periodic_Data_Send_slow + PR Dynamically Define Periodic Data Send slow + + + PeriodicDataIdentifier + PeriodicDataIdentifier + 0 + 240 + + 8 + + + + Data + Data + 1 + + + + + + Dynamically_Define_Periodic_Data_Send_slow_initial_response + Dynamically Define Periodic Data Send slow initial response + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Dynamically_Define_Periodic_Data_Send_medium + PR Dynamically Define Periodic Data Send medium + + + PeriodicDataIdentifier + PeriodicDataIdentifier + 0 + 240 + + 8 + + + + Data + Data + 1 + + + + + + Dynamically_Define_Periodic_Data_Send_medium_initial_response + Dynamically Define Periodic Data Send medium initial response + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Dynamically_Define_Periodic_Data_Send_fast + PR Dynamically Define Periodic Data Send fast + + + PeriodicDataIdentifier + PeriodicDataIdentifier + 0 + 240 + + 8 + + + + Data + Data + 1 + + + + + + Dynamically_Define_Periodic_Data_Send_fast_initial_response + Dynamically Define Periodic Data Send fast initial response + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Dynamically_Define_Periodic_Data_Stop + PR Dynamically Define Periodic Data Stop + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Dynamically_Define_Periodic_Data_Stop_all + PR Dynamically Define Periodic Data Stop all + + + SID_PR + SID-PR + 0 + 106 + + 8 + + + + + + PR_Door_Status_Read + PR Door Status Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 16 + + 16 + + + + Door_Contact + Door Contact + 3 + + + + + + PR_Door_Status_ReturnControl + PR Door Status ReturnControl + + + SID_PR + SID-PR + 0 + 111 + + 8 + + + + DataIdentifier + Identifier + 1 + 16 + + 16 + + + + ControlStatusRecord_InputOutputControlParameter + ControlStatusRecord_InputOutputControlParameter + 3 + 0 + + 8 + + + + Door_Contact + Door Contact + 4 + + + + + + PR_Door_Status_Reset + PR Door Status Reset + + + SID_PR + SID-PR + 0 + 111 + + 8 + + + + DataIdentifier + Identifier + 1 + 16 + + 16 + + + + ControlStatusRecord_InputOutputControlParameter + ControlStatusRecord_InputOutputControlParameter + 3 + 1 + + 8 + + + + Door_Contact + Door Contact + 4 + + + + + + PR_Door_Status_Freeze + PR Door Status Freeze + + + SID_PR + SID-PR + 0 + 111 + + 8 + + + + DataIdentifier + Identifier + 1 + 16 + + 16 + + + + ControlStatusRecord_InputOutputControlParameter + ControlStatusRecord_InputOutputControlParameter + 3 + 2 + + 8 + + + + Door_Contact + Door Contact + 4 + + + + + + PR_Door_Status_Control + PR Door Status Control + + + SID_PR + SID-PR + 0 + 111 + + 8 + + + + DataIdentifier + Identifier + 1 + 16 + + 16 + + + + ControlStatusRecord_InputOutputControlParameter + ControlStatusRecord_InputOutputControlParameter + 3 + 3 + + 8 + + + + Door_Contact + Door Contact + 4 + + + + + + PR_Routine_Control_Flash1_Start + PR Routine Control Flash1 Start + + + SID_PR + SID-PR + 0 + 113 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 1 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 515 + + 16 + + + + + + PR_Routine_Control_Flash1_Stop + PR Routine Control Flash1 Stop + + + SID_PR + SID-PR + 0 + 113 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 2 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 515 + + 16 + + + + + + PR_Routine_Control_Flash2_Start + PR Routine Control Flash2 Start + + + SID_PR + SID-PR + 0 + 113 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 1 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 514 + + 16 + + + + + + PR_Routine_Control_Flash2_Stop + PR Routine Control Flash2 Stop + + + SID_PR + SID-PR + 0 + 113 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 2 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 514 + + 16 + + + + + + PR_Routine_Control_Flash2_1_Start + PR Routine Control Flash3 Start + + + SID_PR + SID-PR + 0 + 113 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 1 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65280 + + 16 + + + + + + PR_Routine_Control_Flash2_1_Stop + PR Routine Control Flash3 Stop + + + SID_PR + SID-PR + 0 + 113 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 2 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65280 + + 16 + + + + + + PR_Routine_Control_Flash4_Start + PR Routine Control Flash4 Start + + + SID_PR + SID-PR + 0 + 113 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 1 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65281 + + 16 + + + + + + PR_Routine_Control_Flash4_Stop + PR Routine Control Flash4 Stop + + + SID_PR + SID-PR + 0 + 113 + + 8 + + + + RoutineControlType + RoutineControlType + 1 + 2 + + 8 + + + + RoutineIdentifier + Identifier + 2 + 65281 + + 16 + + + + + + PR_FaultMemory_ReadNumber + PR Fault Memory Read (Number) + + + SID_PR + SID-PR + 0 + 89 + + 8 + + + + ReportNumberOfDtcByStatusMask + ReportNumberOfDtcByStatusMask + 1 + 1 + + 8 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 2 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 2 + + + + DtcFormatIdentifier + DTCFormatIdentifier + 3 + + + + DTCCount + DTCCount + 4 + + + + + + PR_FaultMemory_ReadAllIdentified + PR Fault Memory Read (all identified) + + + SID_PR + SID-PR + 0 + 89 + + 8 + + + + ReportDtcByStatusMask + ReportDtcByStatusMask + 1 + 2 + + 8 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 2 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 2 + + + + ListOfDTC + ListOfDTC + 3 + + + + + + PR_FaultMemory_Read_snapshot_by_DTC + PR Fault Memory Read - snapshot by DTC + + + SID_PR + SID-PR + 0 + 89 + + 8 + + + + ReportDTCSnapshotRecordByDTCNumber + ReportDTCSnapshotRecordByDTCNumber + 1 + 4 + + 8 + + + + DTC + DTC + 2 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 5 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 5 + + + + ListOfDTCSnapshotRecord + ListOfDTCSnapshotRecord + 6 + + + + + + PR_FaultMemory_Read_extended_data_record + PR Fault Memory Read - extended data record + + + SID_PR + SID-PR + 0 + 89 + + 8 + + + + ReportDTCExtendedDataRecordByDtcNumber + ReportDTCExtendedDataRecordByDtcNumber + 1 + 6 + + 8 + + + + DTC + DTC + 2 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 5 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 5 + + + + ListOfDTCExtendedDataRecord + ListOfDTCExtendedDataRecord + 6 + + + + + + PR_FaultMemory_ReadAllSupported + PR Fault Memory Read (supported errors) + + + SID_PR + SID-PR + 0 + 89 + + 8 + + + + ReportSupportedDTC + ReportSupportedDTC + 1 + 10 + + 8 + + + + DtcStatusbyte_STRUCTURE + DTC Statusbyte + + + CANdelaDtcStatus + + + 2 + + + + DtcStatusbyte + DTC Statusbyte + + + CANdelaDtcStatus + + + 2 + + + + ListOfDTCAndStatus + ListOfDTCAndStatus + 3 + + + + + + PR_FaultMemory_Clear + PR Fault Memory Clear (all errors) + + + SID_PR + SID-PR + 0 + 84 + + 8 + + + + + + PR_Download_Request + PR Download Request + + + SID_PR + SID-PR + 0 + 116 + + 8 + + + + LFID + LengthFormatIdentifier + 1 + + + + MNROB + MaxNumberOfBlockLength + 2 + + + + + + PR_Download_Transmit + PR Download Transmit + + + SID_PR + SID-PR + 0 + 118 + + 8 + + + + blockSequenceCounter + blockSequenceCounter + 1 + + + + transferRequestParameterRecord + transferRequestParameterRecord + 2 + + + + + + PR_Download_Stop + PR Download Stop + + + SID_PR + SID-PR + 0 + 119 + + 8 + + + + + + + + NR_DefaultSession_Start + NR Default Session Start + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 16 + + 8 + + + + Start_NR + Start NR + 2 + + + + NRCConst_Start_NR + Start NR + 2 + + 34 + + + 8 + + + + + + NR_ProgrammingSession_Start + NR Programming Session Start + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 16 + + 8 + + + + Start_NR + Start NR + 2 + + + + NRCConst_Start_NR + Start NR + 2 + + 34 + 126 + + + 8 + + + + + + NR_ExtendedDiagnosticSession_Start + NR Extended Diagnostic Session Start + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 16 + + 8 + + + + Start_NR + Start NR + 2 + + + + NRCConst_Start_NR + Start NR + 2 + + 34 + + + 8 + + + + + + NR_Hard_Reset_Reset + NR Hard Reset Reset + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 17 + + 8 + + + + Reset + Reset + 2 + + + + NRCConst_Reset + Reset + 2 + + 18 + 19 + 34 + 51 + + + 8 + + + + + + NR_Soft_Reset_Reset + NR Soft Reset Reset + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 17 + + 8 + + + + Reset + Reset + 2 + + + + NRCConst_Reset + Reset + 2 + + 18 + 19 + 34 + 51 + + + 8 + + + + + + NR_SeedLevel_0x01_Request + NR RequestSeed 0x01 Request + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 39 + + 8 + + + + Request + Request + 2 + + + + NRCConst_Request + Request + 2 + + 34 + + + 8 + + + + + + NR_KeyLevel_0x01_Send + NR SendKey 0x01 Send + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 39 + + 8 + + + + Send + Send + 2 + + + + NRCConst_Send + Send + 2 + + 34 + + + 8 + + + + + + NR_SeedLevel_0x11_Request + NR RequestSeed 0x11 Request + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 39 + + 8 + + + + Request + Anfordern + 2 + + + + NRCConst_Request + Anfordern + 2 + + 18 + 19 + 34 + 36 + 49 + 53 + 54 + 55 + 126 + + + 8 + + + + + + NR_KeyLevel_0x11_Send + NR SendKey 0x11 Send + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 39 + + 8 + + + + Send + Senden + 2 + + + + NRCConst_Send + Senden + 2 + + 18 + 19 + 34 + 36 + 49 + 53 + 54 + 55 + 126 + + + 8 + + + + + + NR_Authentication_Verify_Certificate_Unidirectional + NR Authentication Verify Certificate Unidirectional + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 41 + + 8 + + + + Verify_Certificate_Unidirectional + Verify Certificate Unidirectional + 2 + + + + NRCConst_Verify_Certificate_Unidirectional + Verify Certificate Unidirectional + 2 + + 16 + 19 + 34 + 36 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + + + 8 + + + + + + NR_Authentication_Proof_Of_Ownership + NR Authentication Proof Of Ownership + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 41 + + 8 + + + + Proof_Of_Ownership + Proof Of Ownership + 2 + + + + NRCConst_Proof_Of_Ownership + Proof Of Ownership + 2 + + 16 + 19 + 34 + 36 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + + + 8 + + + + + + NR_Authentication_Transmit_Certificate + NR Authentication Transmit Certificate + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 41 + + 8 + + + + Transmit_Certificate + Transmit Certificate + 2 + + + + NRCConst_Transmit_Certificate + Transmit Certificate + 2 + + 16 + 19 + 34 + 36 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + + + 8 + + + + + + NR_Authentication_Request_Challenge + NR Authentication Request Challenge + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 41 + + 8 + + + + Request_Challenge + Request Challenge + 2 + + + + NRCConst_Request_Challenge + Request Challenge + 2 + + 16 + 19 + 34 + 36 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + + + 8 + + + + + + NR_Authentication_Verify_Proof_of_Ownership_Unidirectional + NR Authentication Verify Proof of Ownership Unidirectional + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 41 + + 8 + + + + Verify_Proof_of_Ownership_Unidirectional + Verify Proof of Ownership Unidirectional + 2 + + + + NRCConst_Verify_Proof_of_Ownership_Unidirectional + Verify Proof of Ownership Unidirectional + 2 + + 16 + 19 + 34 + 36 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + + + 8 + + + + + + NR_Authentication_Verify_Proof_of_Ownership_Bidirectional + NR Authentication Verify Proof of Ownership Bidirectional + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 41 + + 8 + + + + Verify_Proof_of_Ownership_Bidirectional + Verify Proof of Ownership Bidirectional + 2 + + + + NRCConst_Verify_Proof_of_Ownership_Bidirectional + Verify Proof of Ownership Bidirectional + 2 + + 16 + 19 + 34 + 36 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + + + 8 + + + + + + NR_Authentication_Deauthenticate + NR Authentication Deauthenticate + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 41 + + 8 + + + + Deauthenticate + Deauthenticate + 2 + + + + NRCConst_Deauthenticate + Deauthenticate + 2 + + 16 + 19 + 34 + 36 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + + + 8 + + + + + + NR_Authentication_Configure + NR Authentication Configure + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 41 + + 8 + + + + Configure + Configure + 2 + + + + NRCConst_Configure + Configure + 2 + + 16 + 19 + 34 + 36 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + + + 8 + + + + + + NR_EnableRxAndEnableTx_Control + NR EnableRxAndEnableTx Control + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 40 + + 8 + + + + Control + Control + 2 + + + + NRCConst_Control + Control + 2 + + 34 + 126 + + + 8 + + + + + + NR_EnableRxAndDisableTx_Control + NR EnableRxAndDisableTx Control + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 40 + + 8 + + + + Control + Control + 2 + + + + NRCConst_Control + Control + 2 + + 34 + 126 + + + 8 + + + + + + NR_TesterPresent_Send + NR Tester Present Send + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 62 + + 8 + + + + Send + Send + 2 + 8 + + + + + NR_ControlDTCSetting_On + NR Control DTC Setting On + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 133 + + 8 + + + + NRC + Negative Response Codes + 2 + 8 + + + + + NR_ControlDTCSetting_Off + NR Control DTC Setting Off + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 133 + + 8 + + + + New_Service_2 + New Service 2 + 2 + + + + NRCConst_New_Service_2 + New Service 2 + 2 + + 34 + + + 8 + + + + + + NR_DevelopmentData_Read + NR Development Data Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read_NR + Read NR + 2 + + + + NRCConst_Read_NR + Read NR + 2 + + 34 + + + 8 + + + + + + NR_SerialNumber_Read + NR Serial Number Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read_NR + Read NR + 2 + + + + NRCConst_Read_NR + Read NR + 2 + + 34 + + + 8 + + + + + + NR_SerialNumber_Write + NR Serial Number Write + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 46 + + 8 + + + + Write + Write + 2 + + + + NRCConst_Write + Write + 2 + + 19 + 34 + 49 + 51 + 114 + + + 8 + + + + + + NR_EcuIdentification_Read + NR Ecu Identification Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + ReadNR + Read NR + 2 + + + + NRCConst_ReadNR + Read NR + 2 + + 34 + + + 8 + + + + + + NR_EcuIdentification_Write + NR Ecu Identification Write + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 46 + + 8 + + + + Write + Write + 2 + + + + NRCConst_Write + Write + 2 + + 19 + 34 + 49 + 51 + 114 + + + 8 + + + + + + NR_User_Interface_Settings_Read + NR User Interface Settings Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_User_Interface_Settings_Write + NR User Interface Settings Write + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 46 + + 8 + + + + Write + Write + 2 + + + + NRCConst_Write + Write + 2 + + 19 + 34 + 49 + 51 + 114 + + + 8 + + + + + + NR_Variant_Coding_Read + NR Variant Coding Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_Variant_Coding_Write + NR Variant Coding Write + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 46 + + 8 + + + + Write + Write + 2 + + + + NRCConst_Write + Write + 2 + + 19 + 34 + 49 + 51 + 114 + + + 8 + + + + + + NR_Mirror_Settings_Read + NR Mirror Settings Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_Mirror_Settings_Write + NR Mirror Settings Write + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 46 + + 8 + + + + Write + Write + 2 + + + + NRCConst_Write + Write + 2 + + 19 + 34 + 49 + 51 + 114 + + + 8 + + + + + + NR_Window_Lift_Settings_Read + NR Window Lift Settings Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_Window_Lift_Settings_Write + NR Window Lift Settings Write + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 46 + + 8 + + + + Write + Write + 2 + + + + NRCConst_Write + Write + 2 + + 19 + 34 + 49 + 51 + 114 + + + 8 + + + + + + NR_DID_WindowLiftRoughPosition_Read + NR DID WindowLiftRoughPosition Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_DID_WindowLiftRoughPosition_Write + NR DID WindowLiftRoughPosition Write + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 46 + + 8 + + + + Write + Write + 2 + + + + NRCConst_Write + Write + 2 + + 19 + 34 + 49 + 51 + 114 + + + 8 + + + + + + NR_DID_Fingerprint_Read + NR DID Fingerprint Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_DID_Fingerprint_Write + NR DID Fingerprint Write + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 46 + + 8 + + + + Write + Write + 2 + + + + NRCConst_Write + Write + 2 + + 19 + 34 + 49 + 51 + 114 + + + 8 + + + + + + NR_DID_OdometerValue_Read + NR DID OdometerValue Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_DID_Voltage_Read + NR DID Voltage Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_DID_SineWave_Read + NR DID SineWave Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_DID_Sawtooth_Read + NR DID Sawtooth Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_SineWave_Send_once + NR SineWave Send once + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 34 + + 8 + + + + Send_once + Send once + 2 + 8 + + + + + NR_SineWave_Send_slow + NR SineWave Send slow + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Send_slow + Send slow + 2 + 8 + + + + + NR_SineWave_Send_medium + NR SineWave Send medium + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Send_medium + Send medium + 2 + 8 + + + + + NR_SineWave_Send_fast + NR SineWave Send fast + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Send_fast + Send fast + 2 + 8 + + + + + NR_SineWave_Stop + NR SineWave Stop + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Stop + Stop + 2 + 8 + + + + + NR_SineWave_Stop_all + NR SineWave Stop all + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Stop_all + Stop all + 2 + 8 + + + + + NR_Sawtooth_Send_once + NR Sawtooth Send once + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 34 + + 8 + + + + Send_once + Send once + 2 + 8 + + + + + NR_Sawtooth_Send_slow + NR Sawtooth Send slow + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Send_slow + Send slow + 2 + + + + NRCConst_Send_slow + Send slow + 2 + + 19 + 34 + 49 + 51 + 126 + + + 8 + + + + + + NR_Sawtooth_Send_medium + NR Sawtooth Send medium + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Send_medium + Send medium + 2 + + + + NRCConst_Send_medium + Send medium + 2 + + 19 + 34 + 49 + 51 + 126 + + + 8 + + + + + + NR_Sawtooth_Send_fast + NR Sawtooth Send fast + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Send_fast + Send fast + 2 + + + + NRCConst_Send_fast + Send fast + 2 + + 19 + 34 + 49 + 51 + 126 + + + 8 + + + + + + NR_Sawtooth_Stop + NR Sawtooth Stop + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Stop + Stop + 2 + + + + NRCConst_Stop + Stop + 2 + + 19 + 34 + 49 + 51 + 126 + + + 8 + + + + + + NR_Sawtooth_Stop_all + NR Sawtooth Stop all + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Stop_all + Stop all + 2 + + + + NRCConst_Stop_all + Stop all + 2 + + 19 + 34 + 49 + 51 + 126 + + + 8 + + + + + + NR_Dynamically_Define_Periodic_Data_Read + NR Dynamically Define Periodic Data Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + 8 + + + + + NR_Dynamically_Define_Periodic_Data_Define_By_Identifier + NR Dynamically Define Periodic Data Define By Identifier + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 44 + + 8 + + + + Define_By_Identifier + Define By Identifier + 2 + 8 + + + + + NR_Dynamically_Define_Periodic_Data_Clear + NR Dynamically Define Periodic Data Clear + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 44 + + 8 + + + + Clear + Clear + 2 + 8 + + + + + NR_Dynamically_Define_Periodic_Data_ClearAll + NR Dynamically Define Periodic Data ClearAll + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 44 + + 8 + + + + ClearAll + ClearAll + 2 + 8 + + + + + NR_Dynamically_Define_Periodic_Data_Send_slow + NR Dynamically Define Periodic Data Send slow + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Send_slow + Send slow + 2 + + + + NRCConst_Send_slow + Send slow + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_Dynamically_Define_Periodic_Data_Send_medium + NR Dynamically Define Periodic Data Send medium + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Send_medium + Send medium + 2 + + + + NRCConst_Send_medium + Send medium + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_Dynamically_Define_Periodic_Data_Send_fast + NR Dynamically Define Periodic Data Send fast + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Send_fast + Send fast + 2 + + + + NRCConst_Send_fast + Send fast + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_Dynamically_Define_Periodic_Data_Stop + NR Dynamically Define Periodic Data Stop + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Stop + Stop + 2 + 8 + + + + + NR_Dynamically_Define_Periodic_Data_Stop_all + NR Dynamically Define Periodic Data Stop all + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 42 + + 8 + + + + Stop_all + Stop all + 2 + 8 + + + + + NR_Door_Status_Read + NR Door Status Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_Door_Status_ReturnControl + NR Door Status ReturnControl + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 47 + + 8 + + + + ReturnControl + ReturnControl + 2 + + + + NRCConst_ReturnControl + ReturnControl + 2 + + 19 + 34 + 49 + 51 + 126 + + + 8 + + + + + + NR_Door_Status_Reset + NR Door Status Reset + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 47 + + 8 + + + + Reset + Reset + 2 + + + + NRCConst_Reset + Reset + 2 + + 19 + 34 + 49 + 51 + 126 + + + 8 + + + + + + NR_Door_Status_Freeze + NR Door Status Freeze + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 47 + + 8 + + + + Freeze + Freeze + 2 + + + + NRCConst_Freeze + Freeze + 2 + + 19 + 34 + 49 + 51 + 126 + + + 8 + + + + + + NR_Door_Status_Control + NR Door Status Control + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 47 + + 8 + + + + Control + Control + 2 + + + + NRCConst_Control + Control + 2 + + 19 + 34 + 49 + 51 + 126 + + + 8 + + + + + + NR_Routine_Control_Flash1_Start + NR Routine Control Flash1 Start + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 49 + + 8 + + + + Start_NR + Start NR + 2 + + + + NRCConst_Start_NR + Start NR + 2 + + 18 + 19 + 34 + 36 + 49 + 51 + 114 + 126 + + + 8 + + + + + + NR_Routine_Control_Flash1_Stop + NR Routine Control Flash1 Stop + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 49 + + 8 + + + + Stop_NR + Stop NR + 2 + + + + NRCConst_Stop_NR + Stop NR + 2 + + 18 + 19 + 34 + 36 + 49 + 51 + 114 + 126 + + + 8 + + + + + + NR_Routine_Control_Flash2_Start + NR Routine Control Flash2 Start + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 49 + + 8 + + + + Start_NR + Start NR + 2 + + + + NRCConst_Start_NR + Start NR + 2 + + 18 + 19 + 34 + 36 + 49 + 51 + 114 + 126 + + + 8 + + + + + + NR_Routine_Control_Flash2_Stop + NR Routine Control Flash2 Stop + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 49 + + 8 + + + + Stop_NR + Stop NR + 2 + + + + NRCConst_Stop_NR + Stop NR + 2 + + 18 + 19 + 34 + 36 + 49 + 51 + 114 + 126 + + + 8 + + + + + + NR_Routine_Control_Flash2_1_Start + NR Routine Control Flash3 Start + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 49 + + 8 + + + + Start_NR + Start NR + 2 + + + + NRCConst_Start_NR + Start NR + 2 + + 18 + 19 + 34 + 36 + 49 + 51 + 114 + 126 + + + 8 + + + + + + NR_Routine_Control_Flash2_1_Stop + NR Routine Control Flash3 Stop + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 49 + + 8 + + + + Stop_NR + Stop NR + 2 + + + + NRCConst_Stop_NR + Stop NR + 2 + + 18 + 19 + 34 + 36 + 49 + 51 + 114 + 126 + + + 8 + + + + + + NR_Routine_Control_Flash4_Start + NR Routine Control Flash4 Start + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 49 + + 8 + + + + Start_NR + Start NR + 2 + + + + NRCConst_Start_NR + Start NR + 2 + + 18 + 19 + 34 + 36 + 49 + 51 + 114 + 126 + + + 8 + + + + + + NR_Routine_Control_Flash4_Stop + NR Routine Control Flash4 Stop + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 49 + + 8 + + + + Stop_NR + Stop NR + 2 + + + + NRCConst_Stop_NR + Stop NR + 2 + + 18 + 19 + 34 + 36 + 49 + 51 + 114 + 126 + + + 8 + + + + + + NR_FaultMemory_ReadNumber + NR Fault Memory Read (Number) + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 25 + + 8 + + + + ReadNumber + Read (number) + 2 + + + + NRCConst_ReadNumber + Read (number) + 2 + + 18 + 19 + 49 + + + 8 + + + + + + NR_FaultMemory_ReadAllIdentified + NR Fault Memory Read (all identified) + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 25 + + 8 + + + + RDtcBSM + Read (all identified) + 2 + + + + NRCConst_RDtcBSM + Read (all identified) + 2 + + 18 + 19 + 49 + + + 8 + + + + + + NR_FaultMemory_Read_snapshot_by_DTC + NR Fault Memory Read - snapshot by DTC + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 25 + + 8 + + + + Read_snapshot_by_DTC + Read - snapshot by DTC + 2 + 8 + + + + + NR_FaultMemory_Read_extended_data_record + NR Fault Memory Read - extended data record + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 25 + + 8 + + + + Read_extended_data_record + Read - extended data record + 2 + 8 + + + + + NR_FaultMemory_ReadAllSupported + NR Fault Memory Read (supported errors) + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 25 + + 8 + + + + ReadAllSupported + Read (supported errors) + 2 + + + + NRCConst_ReadAllSupported + Read (supported errors) + 2 + + 18 + 19 + + + 8 + + + + + + NR_FaultMemory_Clear + NR Fault Memory Clear (all errors) + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 20 + + 8 + + + + Clear + Clear (all errors) + 2 + + + + NRCConst_Clear + Clear (all errors) + 2 + + 19 + 34 + 49 + + + 8 + + + + + + NR_Download_Request + NR Download Request + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 52 + + 8 + + + + Request + Request + 2 + + + + NRCConst_Request + Request + 2 + + 19 + 34 + 49 + 51 + 112 + 126 + + + 8 + + + + + + NR_Download_Transmit + NR Download Transmit + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 54 + + 8 + + + + Transmit + Transmit + 2 + + + + NRCConst_Transmit + Transmit + 2 + + 19 + 34 + 36 + 49 + 113 + 114 + 115 + 126 + 146 + 147 + + + 8 + + + + + + NR_Download_Stop + NR Download Stop + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 55 + + 8 + + + + Stop + Stop + 2 + + + + NRCConst_Stop + Stop + 2 + + 19 + 34 + 36 + 126 + + + 8 + + + + + + + + UNSUPPORTED_SERVICE_NR + Negative Response Codes for unsupported services + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SID_RQ_NR + SID-RQ-NR + 1 + 8 + + + NRC + NEGATIVE RESPONSE CODES + 2 + + + + NRCConst_NRC + NEGATIVE RESPONSE CODES + 2 + + 17 + 18 + 49 + + + 8 + + + + + + + + Session + Session + SESSION + + + Default_Default + Default Default + + + + + Programming_Default + Programming Default + + + + + Extended_Default + Extended Default + + + + + Default_Programming + Default Programming + + + + + Programming_Programming + Programming Programming + + + + + Extended_Programming + Extended Programming + + + + + Default_Extended + Default Extended + + + + + Programming_Extended + Programming Extended + + + + + Extended_Extended + Extended Extended + + + + + + + + Default + Default + +

{P2=50, P2Ex=5000}

+
+
+ + Programming + Programming + +

{P2=50, P2Ex=5000}

+
+
+ + Extended + Extended + +

{P2=50, P2Ex=5000}

+
+
+
+
+ + SecurityAccess + SecurityAccess + SECURITY + + + UnlockedL1_Locked + Unlocked L1 Locked + + + + + Level_17_Locked + Level 17 Locked + + + + + Locked_UnlockedL1 + Locked Unlocked L1 + + + + + Level_17_UnlockedL1 + Level 17 Unlocked L1 + + + + + Locked_Level_17 + Locked Level 17 + + + + + UnlockedL1_Level_17 + Unlocked L1 Level 17 + + + + + Unlocked_L17_Level_17 + Unlocked L17 Level 17 + + + + + + + + Locked + Locked + + + UnlockedL1 + Unlocked L1 + +

Level 0x01

+
+
+ + Unlocked_L17 + Unlocked L17 + +

Level 0x11

+
+
+ + Level_17 + Level 17 + +
+
+
+ + + Legislated + Legislated + + + + + normal segmented 11-bit transmit w/o FC + +

CAN-ID Type used for functional request

+
+ +
+ + 1872 + +

The request CAN identifier for functional requests.

+
+ +
+ + 150000 + +

Timeout for the client to wait after the successful transmission of a request message for the start of incoming response messages. In UDS this is the timeout for the default session.

+
+ +
+ + 2000000 + +

Enhanced timeout for the client to wait after the reception of a negative response message with response code 78 hex for the start of incoming response messages. In UDS this is the timeout for the default session.

+
+ +
+ + 4000000 + +

Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication).

+
+ +
+ + 100000 + +

Minimum time for the client to wait after the successful transmission of a physically addressed request message (indicated via N_USData.con) with no response required before it can transmit the next physically addressed request message. +Minimum value = P2Server

+
+ +
+ + 100000 + +

Minimum time for the client to wait after the successful transmission of a functionally addressed request message (indicated via N_USData.con) before it can transmit the next functionally addressed request message in case no response is required or the requested data is only supported by a subset of the functionally addressed servers. +Minimum value = P2Server.

+
+ +
+ + 20000 + +

(Separation Time) defines the minimum time gap between consecutive frames.Values from 0x00 to 0x7F (0 – 127) are absolute milliseconds.Values from 0xF1 to 0xF9 are even 100 micro seconds.Every other value range is reserved and should not be used.

+
+ +
+ + 0 + +

The Blocksize parameter indicates, how many consecutive frames shall be sent in a transmission before a flow control frame is sent. The number 0 tells the sender, that no more flow controls should disrupt the sending of the remaining flow controls

+
+ +
+ + 1000000 + +

Time for transmission of frame, sender side

+
+ +
+ + 1000000 + +

Time for transmission of frame, receiver side

+
+ +
+ + 1000000 + +

Time until reception of next flow control

+
+ +
+ + 10000 + +

Time for next transmission of flow control

+
+ +
+ + 10000 + +

Time until next transmission of consecutive frame

+
+ +
+ + 1000000 + +

Time until reception of next consecutive frame

+
+ +
+ + 500000 + +

Bus Speed of the used transport media. Caution, the Bus Speed has to be set identical in all ECUs connected to one subnet.

+
+ +
+ + 0 + +

Fill byte used for filling CAN frames to eight byte length.

+
+ +
+ + Enabled + +

Enables use of fill bytes; if "true", fill bytes are used, otherwise DLC may be smaller than 8.

+
+ +
+ + + 0 + normal segmented 11-bit transmit with FC + 1793 + 0 + normal segmented 11-bit receive with FC + 1537 + 0 + normal unsegmented 11-bit receive + 1921 + Door + + + + + 150 + +

Timeout for the client to wait after the successful transmission of a request message for the start of incoming response messages. In UDS this is the timeout for the default session.

+
+ +
+ + 2000 + +

Enhanced timeout for the client to wait after the reception of a negative response message with response code 78 hex for the start of incoming response messages. In UDS this is the timeout for the default session.

+
+ +
+ + 4000 + +

Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication).

+
+ +
+ + 100 + +

Minimum time for the client to wait after the successful transmission of a physically addressed request message with no response required before it can transmit the next physically addressed request message. Minimum value = P2Server.

+
+ +
+ + Enabled + +

Enables or disables frame padding (0 = false, 1 = true).

+
+ +
+ + 125000 + +

Time for transmission of frame, receiver side.

+
+ +
+ + 125000 + +

Time for transmission of frame, sender side.

+
+ +
+ + 0 + +

Time for next transmission of flow control.

+
+ +
+ + 150000 + +

Time until reception of next flow control.

+
+ +
+ + 150000 + +

Time until reception of next consecutive frame.

+
+ +
+ + 25000 + +

Time until next transmission of consecutive frame.

+
+ +
+ + + 17476 + normal segmented 11-bit transmit with FC + 2016 + 4660 + normal segmented 11-bit receive with FC + 2024 + 4660 + normal unsegmented 11-bit receive + 4294967295 + Door + + + + + 150 + +

Timeout for the client to wait after the successful transmission of a request message for the start of incoming response messages. In UDS this is the timeout for the default session.

+
+ +
+ + 2000 + +

Enhanced timeout for the client to wait after the reception of a negative response message with response code 78 hex for the start of incoming response messages. In UDS this is the timeout for the default session.

+
+ +
+ + 4000 + +

Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication).

+
+ +
+ + 100 + +

Minimum time for the client to wait after the successful transmission of a physically addressed request message with no response required before it can transmit the next physically addressed request message. Minimum value = P2Server.

+
+ +
+ + Enabled + +

Enables or disables frame padding (0 = false, 1 = true).

+
+ +
+ + 125000 + +

Time for transmission of frame, receiver side.

+
+ +
+ + 125000 + +

Time for transmission of frame, sender side.

+
+ +
+ + 0 + +

Time for next transmission of flow control.

+
+ +
+ + 150000 + +

Time until reception of next flow control.

+
+ +
+ + 150000 + +

Time until reception of next consecutive frame.

+
+ +
+ + 25000 + +

Time until next transmission of consecutive frame.

+
+ +
+ + 0 + +

The Block Size parameter indicates, how many consecutive frames shall be sent in a transmission before a flow control frame is sent. The number 0 tells the sender, that no more flow controls should disrupt the sending of the remaining flow controls.

+
+ +
+ + 20000 + +

Separation Time defines the minimum time gap between consecutive frames. Values from 0x00 to 0x7F (0 – 127) are absolute milliseconds. Values from 0xF1 to 0xF9 are even 100 micro seconds. Every other value range is reserved and should not be used.

+
+ +
+ + + 17476 + normal segmented 11-bit transmit with FC + 2016 + 4660 + normal segmented 11-bit receive with FC + 2024 + 4660 + normal unsegmented 11-bit receive + 4294967295 + Door + + + + + 1 + +

The logical address of the DoIP gateway. When addressing nodes behind a DoIP gateway, this address has to be used to reach the target addressed in CP_DoIPLogicalEcuAddress or CP_DoIPLogicalFunctionalAddress. For a DoIP node, the values for CP_DoIPLogicalGatewayAddress and CP_DoIPLogicalEcuAddress are identical.

+
+ +
+ + 3584 + +

The source address of the test equipment. This is the logical address as defined by the OEM.

+
+ +
+ + 58368 + +

Logical address for functional addressed communication.

+
+ +
+ + 1000 + +

Timeout for the client to wait after the successful transmission of a request message indicated via T_Data.con) for the complete reception of the corresponding response message (indicated via T_Data.ind). If the transport/network layer doesn't support the T_DataSOM.ind interface (e.g. ISO13400 DoIP), this ComParam shall be used instead of P2Client.

+
+ +
+ + 50 + +

Performance requirement for the server to start with the response message after the reception of a request message. In UDS this is the timeout for the default session.The tester will also require the P2Server timeout, since in UDS service "DiagnosticSessionControl"returns the P2Server and P2ExServer timeouts – the tester has to calculate the offset manually and has to add it to the returned P2Server and P2ExServer timeouts.

+
+ +
+ + 10000 + +

Enhanced timeout for the client to wait after the reception of a negative response message with negative response code 0x78 (indicated via T_Data.ind) for the complete reception of the corresponding response messages (indicated via T_Data.ind). If the transport/network layer doesn't support the T_DataSOM.ind interface (e.g. ISO13400 DoIP), this ComParam shall be used instead of P2ExClient.

+
+ +
+ + 5000 + +

Performance requirement for the server to start with the response message after the transmission of a negative response message with response code 78 hex (enhanced response timing). In UDS this is the timeout for the default session.

+
+ +
+ + 2000 + +

Time between functionally addressed Tester Present request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication).

+
+ +
+ + 5000 + +

Time for the server to keep a diagnostic session other than the defaultSession active while not receiving any diagnostic request message.

+
+ +
+ + 50 + +

Minimum time for the client to wait after the successful transmission of a physically addressed request message (indicated via N_USData.con) with no response required before it can transmit the next physically addressed request message. Minimum value = P2Server.

+
+ +
+ + 50 + +

Minimum time for the client to wait after the successful transmission of a functionally addressed request message (indicated via N_USData.con) before it can transmit the next functionally addressed request message in case no response is required or the requested data is only supported by a subset of the functionally addressed servers. Minimum value = P2Server.

+
+ +
+ + 100 + +

If the timeout values are used which have been received by the ECU via session control response(0x50), the Network transmission time has to be added to the timeout values. P6 = received P2 + NetworkTransmissionTime(contains delay for both transmission directions).

+
+ +
+ + Continue unlimited + +

Handling of 0x7F XX 0x78 ResponseTimeout and 0x78 Repetitions. The receive timeout value will be CP_P6Star. This timer will be reset on each consecutive reception of the 0x7F 0x78 response.

+
+ +
+ + 25000 + +

Time period the tester accepts repeated negative responses with response code 0x78 and waits for a positive response further on.

+
+ +
+ + Disabled + +

Repetition mode in case of response code 0x7F XX 0x21.

+
+ +
+ + 200 + +

Time between negative response with response code 0x21 and the retransmission of the same request.

+
+ +
+ + 1300 + +

Time period the tester accepts repeated negative responses with response code 0x21 and repeats the same request. Timer is started after reception of first negative response.

+
+ +
+ + + 1 + 0 + Door + + + +
+ + + + + + +
+
+ + + DevSample + DevSample + + + + DID_MuxedTestData + DID MuxedTestData + + + Selector + Selector + 0 + + + + MuxedTestData + MuxedTestData + 0 + + + + + + + + + PR_DID_MuxedTestData_Read + PR DID MuxedTestData Read + + + SID_PR + SID-PR + 0 + 98 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 30583 + + 16 + + + + DID_MuxedTestData + DID MuxedTestData + 3 + + + + + + PR_DID_MuxedTestData_Write + PR DID MuxedTestData Write + + + SID_PR + SID-PR + 0 + 110 + + 8 + + + + RecordDataIdentifier + Identifier + 1 + 30583 + + 16 + + + + + + + + NR_DID_MuxedTestData_Read + NR DID MuxedTestData Read + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 34 + + 8 + + + + Read + Read + 2 + + + + NRCConst_Read + Read + 2 + + 19 + 34 + 49 + 51 + + + 8 + + + + + + NR_DID_MuxedTestData_Write + NR DID MuxedTestData Write + + + SID_NR + SID-NR + 0 + 127 + + 8 + + + + SIDRQ_NR + SIDRQ-NR + 1 + 46 + + 8 + + + + Write + Write + 2 + + + + NRCConst_Write + Write + 2 + + 19 + 34 + 49 + 51 + 114 + + + 8 + + + + + + + + + + Developer ECU + + + + + + + + + + + +
+
\ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/index.xml b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/index.xml new file mode 100644 index 0000000..ba2d579 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-5.2.1/index.xml @@ -0,0 +1,158 @@ + + + UDS_ExampleEcu_5_2_1_1500540195 + + + Ecu + + Ecu.jpg + + + + IEEE_802_3_DIS_2015 + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + IEEE_802_3_DIS_2015.odx-cs + + + + ISO_11898_2_DWCAN + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + ISO_11898_2_DWCAN.odx-cs + + + + ISO_11898_3_DWFTCAN + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + ISO_11898_3_DWFTCAN.odx-cs + + + + ISO_13400_2_DIS_2015 + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + ISO_13400_2_DIS_2015.odx-cs + + + + ISO_14229_5_DIS_2015 + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + ISO_14229_5_DIS_2015.odx-cs + + + + ISO_14229_5_on_ISO_13400_2_DIS_2015 + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + ISO_14229_5_on_ISO_13400_2_DIS_2015.odx-c + + + + ISO_15765_2 + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + ISO_15765_2.odx-cs + + + + ISO_15765_3 + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + ISO_15765_3.odx-cs + + + + ISO_15765_3_on_ISO_15765_2 + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + ISO_15765_3_on_ISO_15765_2.odx-c + + + + SAE_J2411_SWCAN + + + + 1.0.0 + 2021-09-30T09:47:54 + + + + + SAE_J2411_SWCAN.odx-cs + + + + UDS_ExampleEcu_5_2_0 + + UDS-ExampleEcu-5.2.0.odx-d + + + + \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-fractional-factor.pdx b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-fractional-factor.pdx new file mode 100644 index 0000000..0a7ac14 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-fractional-factor.pdx differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-scale-linear.pdx b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-scale-linear.pdx new file mode 100644 index 0000000..58479c7 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/UDS-ExampleEcu-scale-linear.pdx differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/odx.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/odx.test.ts new file mode 100644 index 0000000..a607cef --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/odx.test.ts @@ -0,0 +1,442 @@ +import { describe, expect, test, beforeAll } from 'vitest' +import { execBinary } from 'src/main/util' +import { getPythonPath } from 'src/main/python' +import path from 'path' +import fs from 'fs' +import { tmpdir } from 'os' + +const odxParsePy = path.join(__dirname, '../../resources/odx/odxparse.py') +const pdxFile = path.join(__dirname, 'somersault.pdx') +// somersault.pdx with one PHYSICAL-DEFAULT-VALUE of an A_BYTEFIELD comparam +// rewritten as "0x3E80", the way tools other than the reference one write it. +const bytefieldPdxFile = path.join(__dirname, 'somersault-bytefield-0x.pdx') +const exampleEcuPdxFile = path.join(__dirname, 'UDS-ExampleEcu-5.2.1.pdx') +// UDS-ExampleEcu with its six LINEAR conversions relabelled SCALE-LINEAR, +// which this parser does not model. LINEAR and SCALE-LINEAR carry the same +// COMPU-SCALES structure, so the document stays valid. +const scaleLinearPdxFile = path.join(__dirname, 'UDS-ExampleEcu-scale-linear.pdx') +// UDS-ExampleEcu with one linear conversion scaling an integer-coded value +// by 0.5, and somersault exported without the comparam files it references. +const fractionalFactorPdxFile = path.join(__dirname, 'UDS-ExampleEcu-fractional-factor.pdx') +const noComparamsPdxFile = path.join(__dirname, 'somersault-no-comparams.pdx') + +async function runOdxCommand(command: string, odxFilePath: string, parseResp = false) { + const pythonPath = getPythonPath() + const outputPath = path.join(tmpdir(), `odx_test_${Date.now()}.json`) + const args = [odxParsePy, command, odxFilePath, outputPath] + if (parseResp) { + args.push('--parseResp') + } + const result = await execBinary(pythonPath, args, { timeout: 120000 }) + if (!result.success) { + throw new Error(result.stderr || 'ODX parse failed') + } + const jsonStr = fs.readFileSync(outputPath, 'utf-8') + fs.unlinkSync(outputPath) + return JSON.parse(jsonStr) +} + +describe('ODX Parser - somersault.pdx', () => { + test('parse: returns services grouped by container/layer/serviceId', async () => { + const result = await runOdxCommand('parse', pdxFile) + + expect(result.error).toBe(0) + expect(result.data).toBeDefined() + expect(result.data['somersault']).toBeDefined() + + const base = result.data['somersault']['somersault_base_variant'] + expect(base).toBeDefined() + + expect(base['0x10']).toBeDefined() + expect(base['0x10'].length).toBe(2) + expect(base['0x10'].map((s: any) => s.name)).toContain('session_start') + expect(base['0x10'].map((s: any) => s.name)).toContain('session_stop') + + expect(base['0x3E']).toBeDefined() + expect(base['0x3E'][0].name).toBe('tester_present') + + expect(base['0x22']).toBeDefined() + expect(base['0x22'][0].name).toBe('report_status') + + expect(base['0xBA']).toBeDefined() + expect(base['0xBA'][0].name).toBe('do_forward_flips') + + expect(base['0xBB']).toBeDefined() + expect(base['0xBB'][0].name).toBe('do_backward_flips') + + const lazy = result.data['somersault']['somersault_lazy'] + expect(lazy).toBeDefined() + expect(lazy['0xBA']).toBeDefined() + expect(lazy['0xBB']).toBeUndefined() + + const assiduous = result.data['somersault']['somersault_assiduous'] + expect(assiduous).toBeDefined() + expect(assiduous['0xBB']).toBeDefined() + expect(assiduous['0x3']).toBeDefined() + expect(assiduous['0x3'][0].name).toBe('headstand') + }) + + test('parse with response: includes respParams', async () => { + const result = await runOdxCommand('parse', pdxFile, true) + + expect(result.error).toBe(0) + const base = result.data['somersault']['somersault_base_variant'] + + const reportStatus = base['0x22'][0] + expect(reportStatus.respParams.length).toBeGreaterThan(0) + + const forwardFlips = base['0xBA'][0] + expect(forwardFlips.respParams.length).toBe(2) + }) + + test('parse: service params have correct structure', async () => { + const result = await runOdxCommand('parse', pdxFile, true) + const base = result.data['somersault']['somersault_base_variant'] + + const forwardFlips = base['0xBA'][0] + expect(forwardFlips.id).toBeDefined() + expect(forwardFlips.serviceId).toBe('0xBA') + expect(forwardFlips.params.length).toBe(2) + + for (const param of forwardFlips.params) { + expect(param.id).toBeDefined() + expect(param.name).toBeDefined() + expect(param.type).toBeDefined() + expect(param.bitLen).toBeTypeOf('number') + expect(param.bitLen).toBeGreaterThan(0) + } + + const sobernessCheck = forwardFlips.params.find( + (p: any) => p.name === 'forward_soberness_check' + ) + expect(sobernessCheck).toBeDefined() + + const numFlips = forwardFlips.params.find((p: any) => p.name === 'num_flips') + expect(numFlips).toBeDefined() + }) +}) + +describe('ODX parseTesterInfo - somersault.pdx', () => { + let result: any + + beforeAll(async () => { + result = await runOdxCommand('parseTesterInfo', pdxFile, true) + }) + + test('returns valid result', () => { + expect(result.error).toBe(0) + expect(result.data).toBeDefined() + expect(result.data['somersault']).toBeDefined() + }) + + test('contains all expected diag layers', () => { + const layers = Object.keys(result.data['somersault']) + expect(layers).toContain('somersault_base_variant') + expect(layers).toContain('somersault_lazy') + expect(layers).toContain('somersault_assiduous') + expect(layers.length).toBe(3) + }) + + test('TesterInfo has correct structure', () => { + const tester = result.data['somersault']['somersault_base_variant'] + + expect(tester.id).toBeDefined() + expect(typeof tester.id).toBe('string') + expect(tester.id.length).toBe(36) + + expect(tester.name).toBe('somersault_base_variant') + expect(tester.type).toBe('can') + expect(tester.seqList).toEqual([]) + + expect(tester.udsTime).toBeDefined() + expect(tester.address).toBeDefined() + expect(Array.isArray(tester.address)).toBe(true) + expect(tester.allServiceList).toBeDefined() + }) + + test('udsTime has correct timing from comparams', () => { + const uds = result.data['somersault']['somersault_base_variant'].udsTime + + expect(uds.pTime).toBe(100) + expect(uds.pExtTime).toBe(6000) + expect(uds.s3Time).toBe(3000) + expect(uds.testerPresentEnable).toBe(true) + }) + + test('address contains physical and functional CAN addresses', () => { + const addrs = result.data['somersault']['somersault_base_variant'].address + + expect(addrs.length).toBe(2) + + const phys = addrs.find((a: any) => a.canAddr.addrType === 'PHYSICAL') + expect(phys).toBeDefined() + expect(phys.type).toBe('can') + expect(phys.canAddr.name).toBe('Physical') + expect(phys.canAddr.addrFormat).toBe('NORMAL') + expect(phys.canAddr.idType).toBe('STANDARD') + expect(phys.canAddr.canfd).toBe(false) + expect(phys.canAddr.dlc).toBe(8) + expect(phys.canAddr.padding).toBe(true) + expect(phys.canAddr.nAs).toBe(1000) + expect(phys.canAddr.nBs).toBe(1000) + + const func = addrs.find((a: any) => a.canAddr.addrType === 'FUNCTIONAL') + expect(func).toBeDefined() + expect(func.canAddr.name).toBe('Functional') + expect(func.canAddr.canIdTx).toBe('0x7df') + }) + + test('allServiceList groups services by serviceId', () => { + const services = result.data['somersault']['somersault_base_variant'].allServiceList + + expect(services['0x10']).toBeDefined() + expect(services['0x10'].length).toBe(2) + + expect(services['0x3E']).toBeDefined() + expect(services['0x3E'].length).toBe(1) + + expect(services['0x22']).toBeDefined() + expect(services['0xBA']).toBeDefined() + expect(services['0xBB']).toBeDefined() + expect(services['0xBD']).toBeDefined() + }) + + test('somersault_lazy has fewer services than somersault_assiduous', () => { + const lazy = result.data['somersault']['somersault_lazy'].allServiceList + const assiduous = result.data['somersault']['somersault_assiduous'].allServiceList + + const lazyCount = Object.values(lazy).flat().length + const assiduousCount = Object.values(assiduous).flat().length + + expect(lazyCount).toBeLessThan(assiduousCount) + + expect(lazy['0xBB']).toBeUndefined() + expect(lazy['0xBD']).toBeUndefined() + expect(assiduous['0xBB']).toBeDefined() + expect(assiduous['0xBD']).toBeDefined() + expect(assiduous['0x3']).toBeDefined() + }) + + test('service items have valid params with respParams', () => { + const services = result.data['somersault']['somersault_base_variant'].allServiceList + + const forwardFlips = services['0xBA'][0] + expect(forwardFlips.name).toBe('do_forward_flips') + expect(forwardFlips.serviceId).toBe('0xBA') + expect(forwardFlips.params.length).toBe(2) + expect(forwardFlips.respParams.length).toBe(2) + + const reportStatus = services['0x22'][0] + expect(reportStatus.name).toBe('report_status') + expect(reportStatus.respParams.length).toBeGreaterThan(0) + }) + + test('names the services it could not import', () => { + // schroedinger has no service identifier in its request, so it cannot be + // filed under a SID. It used to vanish from the import with no trace. + expect(result.skipped.map((s: any) => [s.service, s.reason])).toEqual([ + ['schroedinger', 'no service identifier in the request'], + ['schroedinger', 'no service identifier in the request'], + ['schroedinger', 'no service identifier in the request'] + ]) + }) + + test('each tester has unique id', () => { + const ids = Object.values(result.data['somersault']).map((t: any) => t.id) + const uniqueIds = new Set(ids) + expect(uniqueIds.size).toBe(ids.length) + }) + + test('services with subfunctions keep subfunc as first param', () => { + const services = result.data['somersault']['somersault_base_variant'].allServiceList + + for (const svc of services['0x10']) { + expect(svc.autoSubfunc).toBe(true) + expect(svc.suppress).toBe(false) + expect(svc.params.length).toBeGreaterThan(0) + const firstParam = svc.params[0] + expect(firstParam.deletable).toBe(false) + expect(firstParam.editable).toBe(true) + expect(firstParam.bitLen).toBe(8) + expect(firstParam.bytePos).toBe(1) + + if (svc.respParams.length > 0) { + const firstResp = svc.respParams[0] + expect(firstResp.deletable).toBe(false) + expect(firstResp.editable).toBe(true) + } + } + + const testerPresent = services['0x3E'][0] + expect(testerPresent.autoSubfunc).toBe(true) + expect(testerPresent.suppress).toBe(false) + expect(testerPresent.params.length).toBeGreaterThan(0) + expect(testerPresent.params[0].deletable).toBe(false) + expect(testerPresent.params[0].editable).toBe(true) + expect(testerPresent.params[0].bitLen).toBe(8) + + const forwardFlips = services['0xBA'][0] + expect(forwardFlips.autoSubfunc).toBeUndefined() + + const sessionStop = services['0x10'].find((s: any) => s.name === 'session_stop') + expect(sessionStop).toBeDefined() + expect(sessionStop.subfunc.data).toEqual([1]) + expect(sessionStop.params[0].value.data).toEqual([1]) + }) +}) + +describe('ODX Parser - byte fields written with a 0x prefix', () => { + function serviceNames(result: any) { + const names: string[] = [] + for (const layers of Object.values(result.data as Record)) { + for (const tester of Object.values(layers as Record)) { + for (const items of Object.values((tester as any).allServiceList as Record)) { + for (const item of items as any[]) { + names.push(item.name) + } + } + } + } + return names.sort() + } + + test('reads the document the same as one without the prefix', async () => { + // A_BYTEFIELD is plain hexBinary, so odxtools takes it two characters at + // a time: "0x3E80" makes the first pair "0x" and used to abort the whole + // import with `invalid literal for int() with base 16: '0x'` (#422). + const prefixed = await runOdxCommand('parseTesterInfo', bytefieldPdxFile, true) + const plain = await runOdxCommand('parseTesterInfo', pdxFile, true) + + expect(prefixed.error).toBe(0) + expect(serviceNames(prefixed)).toEqual(serviceNames(plain)) + }) +}) + +describe('ODX Parser - UDS-ExampleEcu-5.2.1.pdx', () => { + let result: any + + beforeAll(async () => { + result = await runOdxCommand('parseTesterInfo', exampleEcuPdxFile, true) + expect(result.error).toBe(0) + }) + + test('reports nothing skipped for a document it fully understands', () => { + expect(result.skipped).toEqual([]) + }) + + test('imports every service the document declares', () => { + // Services used to disappear one by one, silently: the limits of a + // linear conversion moved onto the compu method's segment in odxtools, + // and encoding a single parameter outside its PDU context makes the + // encoder refuse documents it has every right to refuse. Neither says + // anything about whether the service can be imported. + for (const tester of Object.values(result.data.Door) as any[]) { + const services = Object.values(tester.allServiceList).flat() + expect(services.length).toBe(86) + } + }) + + test('a structure is as wide as its members say', () => { + // Codingstring_STRUCTURE declares BYTE-SIZE 2 and its members cover two + // bytes, but the encoder appends a third; the member layout wins. + const service = (result.data.Door.Door.allServiceList['0x2E'] as any[]).find( + (s) => s.name === 'Variant Coding Write' + ) + const codingstring = service.params.find((p: any) => p.name === 'Codingstring') + + expect(codingstring.bitLen).toBe(16) + expect(codingstring.value.data).toEqual([0x94, 0x21]) + expect(codingstring.meta.subParams.map((p: any) => [p.name, p.bitLen])).toEqual([ + ['CountryType', 4], + ['VehicleType', 4], + ['VehicleSpeedToLockDoor', 7], + ['WindowLift_Support', 1] + ]) + }) +}) + +describe('ODX Parser - a conversion the parser does not model', () => { + test('keeps the parameter on its coded type instead of losing the service', async () => { + // Sixteen services per variant used to disappear over this: the physical + // reading of a value is not what decides whether a service is importable. + const result = await runOdxCommand('parseTesterInfo', scaleLinearPdxFile, true) + + expect(result.error).toBe(0) + expect(result.skipped).toEqual([]) + for (const tester of Object.values(result.data.Door) as any[]) { + expect(Object.values(tester.allServiceList).flat().length).toBe(86) + } + + const session = (result.data.Door.Door.allServiceList['0x10'] as any[]).find( + (s) => s.name === 'Default Session Start' + ) + const p2Ex = session.respParams.find((p: any) => p.name === 'P2Ex') + expect(p2Ex.meta.cm).toBe('ScaleLinearCompuMethod') + expect(p2Ex.type).toBe('NUM') + expect(p2Ex.bitLen).toBe(16) + }) +}) + +describe('ODX Parser - documents as tools in the field write them', () => { + test('reads a conversion that scales an integer-coded value by a fraction', async () => { + // COMPU-RATIONAL-COEFFS holds real numbers, but odxtools parses them + // with the value's own (here integer) type, so the whole file failed + // with "Expected an integer value, got 0.5". + const result = await runOdxCommand('parseTesterInfo', fractionalFactorPdxFile, true) + + expect(result.error).toBe(0) + expect(result.notes ?? []).toEqual([]) + for (const tester of Object.values(result.data.Door) as any[]) { + expect(Object.values(tester.allServiceList).flat().length).toBe(86) + } + }) + + test('reads a PDX exported without its comparam files', async () => { + // The ISO comparam subsets are commonly treated as standard and left out + // of the archive, which used to make the file unreadable outright. + const result = await runOdxCommand('parseTesterInfo', noComparamsPdxFile, true) + + expect(result.error).toBe(0) + const services = Object.values(result.data.somersault as Record).flatMap((t) => + Object.values(t.allServiceList).flat() + ) + expect(services.length).toBe(20) + // The services are all there; what the comparams would have supplied is + // not, and the user is told so rather than left guessing. + expect(result.notes.length).toBe(1) + expect(result.notes[0]).toContain('definitions it does not carry') + }) +}) + +describe('ODX Parser - CAN identifiers come from the document', () => { + test('reads the identifier table rather than the ISO defaults', async () => { + // ODX keeps the physical request and response identifiers in the + // CP_UniqueRespIdTable complex parameter. Reading only the comparam + // subset defaults gave every document 0x700/0x701, which is nobody's ECU. + const result = await runOdxCommand('parseTesterInfo', exampleEcuPdxFile, true) + const tester = result.data.Door.Door + + const [physical, functional] = tester.address + expect(physical.canAddr.canIdTx).toBe('0x701') + expect(physical.canAddr.canIdRx).toBe('0x601') + // CP_CanFuncReqId = 1872 + expect(functional.canAddr.canIdTx).toBe('0x750') + // CP_StMin is stated in microseconds + expect(physical.canAddr.stMin).toBe(20) + // CP_CanFillerByteHandling = Enabled + expect(physical.canAddr.padding).toBe(true) + }) + + test('a 29-bit document keeps its extended identifiers', async () => { + // somersault states 123/456 in its table, an 11-bit pair. + const result = await runOdxCommand('parseTesterInfo', pdxFile, true) + const tester = result.data.somersault.somersault_base_variant + + expect(tester.address[0].canAddr.canIdTx).toBe('0x7b') + expect(tester.address[0].canAddr.canIdRx).toBe('0x1c8') + expect(tester.address[0].canAddr.idType).toBe('STANDARD') + // The filler byte comes from CP_CanFillerByte, here the subset default, + // rather than from a hard-coded 0x00. + expect(tester.address[0].canAddr.paddingValue).toBe('0x55') + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/somersault-bytefield-0x.pdx b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/somersault-bytefield-0x.pdx new file mode 100644 index 0000000..185c48a Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/somersault-bytefield-0x.pdx differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/somersault-no-comparams.pdx b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/somersault-no-comparams.pdx new file mode 100644 index 0000000..772f425 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/somersault-no-comparams.pdx differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/somersault.pdx b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/somersault.pdx new file mode 100644 index 0000000..e512064 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/odx/somersault.pdx differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/pwm/ecubus.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/pwm/ecubus.test.ts new file mode 100644 index 0000000..7cb26e5 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/pwm/ecubus.test.ts @@ -0,0 +1,47 @@ +import { describe, test, expect, beforeEach, beforeAll, afterAll } from 'vitest' +import { EcuBusPwm, PwmCalculationResult } from '../../src/main/pwm/ecubus/index' +import { PwmBaseInfo, PwmDevice } from '../../src/main/share/uds' + +const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) +describe('EcuBus PWM Tests', () => { + let pwm: EcuBusPwm + let mockDevice: PwmDevice + let mockPwmInfo: PwmBaseInfo + let mockSerialPort: any + + beforeAll(() => { + // 创建模拟设备信息 + mockDevice = { + label: 'Test EcuBus PWM', + id: 'test-pwm-001', + handle: 'COM8', + busy: false, + serialNumber: 'TEST123' + } + + mockPwmInfo = { + id: 'test-pwm', + device: mockDevice, + freq: 1000, // 1000Hz + initDuty: 50, // 50% + polarity: false, + resetStatus: false, + vendor: 'ecubus', + name: 'Test PWM Device' + } + + // 创建PWM实例 + pwm = new EcuBusPwm(mockPwmInfo) + }) + + test('应该能够设置不同的占空比值', async () => { + await delay(100) + const dutyCycle = pwm.getDutyCycle() + console.log(`dutyCycle: ${dutyCycle}`) + await pwm.setDutyCycle(10) + await delay(100) + }) + afterAll(() => { + pwm.close() + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/replay/EngineDiagData.asc b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/replay/EngineDiagData.asc new file mode 100644 index 0000000..2dc681a --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/replay/EngineDiagData.asc @@ -0,0 +1,39 @@ +date Don Nov 24 15:30:43 2005 +base hex timestamps absolute +no internal events logged + 0.789091 2 200 Tx d 8 02 10 81 00 00 00 00 00 + 0.790603 2 400 Tx d 8 02 50 81 00 00 00 00 00 + 0.793127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 1.789127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 2.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 3.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 4.789127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 5.025091 2 200 Tx d 8 02 1A 90 00 00 00 00 00 + 5.026483 2 400 Tx d 8 10 0C 5A 90 98 76 54 32 + 5.028103 2 200 Tx d 8 30 00 14 00 00 00 00 00 + 5.049567 2 400 Tx d 8 21 10 00 99 99 00 01 00 + 5.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 6.789127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 7.368091 2 200 Tx d 8 02 1A 92 00 00 00 00 00 + 7.369543 2 400 Tx d 8 06 5A 92 00 2F EF 98 00 + 7.789127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 8.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 9.282079 2 200 Tx d 8 04 18 02 FF 00 00 00 00 + 9.283519 2 400 Tx d 8 10 08 58 02 90 02 99 90 + 9.285103 2 200 Tx d 8 30 00 14 00 00 00 00 00 + 9.306603 2 400 Tx d 8 21 12 71 00 00 00 00 00 + 9.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 13.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 14.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 15.391079 2 200 Tx d 8 03 14 FF 00 00 00 00 00 + 15.392603 2 400 Tx d 8 03 54 FF 00 00 00 00 00 + 15.789127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 16.592079 2 200 Tx d 8 04 18 02 FF 00 00 00 00 + 16.593615 2 400 Tx d 8 02 58 00 00 00 00 00 00 + 16.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 17.789127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 18.789127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 19.105532 2 200 Tx d 8 01 20 00 00 00 00 00 00 + 19.107788 2 400 Tx d 8 01 60 00 00 00 00 00 00 + 19.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + 20.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/replay/Logging.blf b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/replay/Logging.blf new file mode 100644 index 0000000..ae3f9e4 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/replay/Logging.blf differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/replay/replay.spec.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/replay/replay.spec.ts new file mode 100644 index 0000000..3226d7d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/replay/replay.spec.ts @@ -0,0 +1,254 @@ +import { describe, it, expect, beforeAll, afterAll } from 'vitest' +import { ReplayCanFrame } from '../../src/main/replay/index' +import path from 'path' +import { AscReader } from 'src/main/replay/ascReader' +import { BlfReader } from 'src/main/replay/blfReader' + +describe('Replay', () => { + const blfFilePath = path.resolve(__dirname, './Logging.blf') + + describe('AscReader', () => { + const ascFilePath = path.resolve(__dirname, './EngineDiagData.asc') + + it('should initialize and read total objects', async () => { + const reader = new AscReader(ascFilePath, 0) // speedFactor 0 = as fast as possible + const result = reader.init() + + expect(result.total).toBeGreaterThan(0) + console.log(`Total objects in ASC file: ${result.total}`) + + reader.close() + }) + + it('should read CAN frames from ASC file', async () => { + const reader = new AscReader(ascFilePath, 10) // 0 = as fast as possible (no time-based delay) + reader.init() + + const frames: ReplayCanFrame[] = [] + let frame: ReplayCanFrame | null + + // Read all frames + while ((frame = await reader.readFrame()) !== null) { + frames.push(frame) + } + + expect(frames.length).toBeGreaterThan(0) + console.log(`Read ${frames.length} CAN frames from ASC file`) + + // Verify frame structure + const firstFrame = frames[0] + expect(firstFrame).toHaveProperty('channel') + expect(firstFrame).toHaveProperty('ts') + expect(firstFrame).toHaveProperty('id') + expect(firstFrame).toHaveProperty('dir') + expect(firstFrame).toHaveProperty('msgType') + expect(firstFrame).toHaveProperty('data') + expect(firstFrame.data).toBeInstanceOf(Buffer) + + console.log('First frame:', { + channel: firstFrame.channel, + ts: firstFrame.ts, + id: `0x${firstFrame.id.toString(16)}`, + dir: firstFrame.dir, + msgType: firstFrame.msgType, + data: firstFrame.data.toString('hex') + }) + + reader.close() + }) + + it('should have increasing timestamps', async () => { + const reader = new AscReader(ascFilePath, 0) + await reader.init() + + let lastTs = -1 + let frame: ReplayCanFrame | null + let count = 0 + + while ((frame = await reader.readFrame()) !== null) { + // Timestamps should be non-decreasing + expect(frame.ts).toBeGreaterThanOrEqual(lastTs) + lastTs = frame.ts + count++ + } + + console.log(`Verified ${count} frames have increasing timestamps`) + reader.close() + }) + + it('should report progress correctly', async () => { + const reader = new AscReader(ascFilePath, 0) + const { total } = await reader.init() + + let frame: ReplayCanFrame | null + let lastProgress = 0 + + while ((frame = await reader.readFrame()) !== null) { + const progress = reader.getProgress() + expect(progress.current).toBeLessThanOrEqual(progress.total) + expect(progress.percent).toBeGreaterThanOrEqual(lastProgress) + lastProgress = progress.percent + } + + const finalProgress = reader.getProgress() + // ASC reader counts total lines including headers, so final progress may not be exactly 100% + expect(finalProgress.percent).toBeGreaterThan(90) + console.log( + `Final progress: ${finalProgress.current}/${finalProgress.total} (${finalProgress.percent.toFixed(2)}%)` + ) + + reader.close() + }) + + it('should parse ASC format correctly', async () => { + const reader = new AscReader(ascFilePath, 0) + await reader.init() + + const frames: ReplayCanFrame[] = [] + let frame: ReplayCanFrame | null + + while ((frame = await reader.readFrame()) !== null) { + frames.push(frame) + } + + // Total frames in ASC file: 37 (lines 4-40) + expect(frames.length).toBe(36) + + // Count frames by ID + const id200Frames = frames.filter((f) => f.id === 0x200) + const id400Frames = frames.filter((f) => f.id === 0x400) + expect(id200Frames.length).toBe(27) + expect(id400Frames.length).toBe(9) + + // All frames should be on channel 2 + expect(frames.every((f) => f.channel === 2)).toBe(true) + + // All frames should have 8 bytes data + expect(frames.every((f) => f.data.length === 8)).toBe(true) + + // All frames in ASC file are Tx direction + expect(frames.every((f) => f.dir === 'OUT')).toBe(true) + + // Validate first frame: 0.789091 2 200 Tx d 8 02 10 81 00 00 00 00 00 + const firstFrame = frames[0] + expect(firstFrame.ts).toBeCloseTo(0.789091 * 1000000, -2) // ts in microseconds + expect(firstFrame.id).toBe(0x200) + expect(firstFrame.data.toString('hex')).toBe('0210810000000000') + + // Validate second frame: 0.790603 2 400 Tx d 8 02 50 81 00 00 00 00 00 + const secondFrame = frames[1] + expect(secondFrame.ts).toBeCloseTo(0.790603 * 1000000, -2) + expect(secondFrame.id).toBe(0x400) + expect(secondFrame.data.toString('hex')).toBe('0250810000000000') + + // Validate last frame: 20.790127 2 200 Tx d 8 02 3E 01 00 00 00 00 00 + const lastFrame = frames[frames.length - 1] + expect(lastFrame.ts).toBeCloseTo(20.790127 * 1000000, -2) + expect(lastFrame.id).toBe(0x200) + expect(lastFrame.data.toString('hex')).toBe('023e010000000000') + + // Validate TesterPresent frames (02 3E 01 pattern) - should be many + const testerPresentFrames = frames.filter( + (f) => f.data.toString('hex') === '023e010000000000' + ) + expect(testerPresentFrames.length).toBe(18) + + // Timestamps should be within expected range (0.789091s to 17.790127s in microseconds) + expect(frames[0].ts).toBeGreaterThanOrEqual(789091) + expect(frames[frames.length - 1].ts).toBeLessThanOrEqual(20790127 + 1000) + + console.log(`Total frames: ${frames.length}`) + console.log(`ID 0x200 frames: ${id200Frames.length}, ID 0x400 frames: ${id400Frames.length}`) + console.log(`TesterPresent frames: ${testerPresentFrames.length}`) + + reader.close() + }) + }) + + describe('BlfReader', () => { + it('should initialize and read total objects', async () => { + const reader = new BlfReader(blfFilePath, 0) + const result = reader.init() + + expect(result.total).toBeGreaterThan(0) + console.log(`Total objects in BLF file: ${result.total}`) + + reader.close() + }) + + it('should read CAN frames from BLF file', async () => { + const reader = new BlfReader(blfFilePath, 0) + reader.init() + + const frames: ReplayCanFrame[] = [] + let frame: ReplayCanFrame | null + + while ((frame = await reader.readFrame()) !== null) { + frames.push(frame) + } + + expect(frames.length).toBeGreaterThan(0) + console.log(`Read ${frames.length} CAN frames from BLF file`) + + // Verify frame structure + const firstFrame = frames[0] + expect(firstFrame).toHaveProperty('channel') + expect(firstFrame).toHaveProperty('ts') + expect(firstFrame).toHaveProperty('id') + expect(firstFrame).toHaveProperty('dir') + expect(firstFrame).toHaveProperty('msgType') + expect(firstFrame).toHaveProperty('data') + expect(firstFrame.data).toBeInstanceOf(Buffer) + + console.log('First frame:', { + channel: firstFrame.channel, + ts: firstFrame.ts, + id: `0x${firstFrame.id.toString(16)}`, + dir: firstFrame.dir, + msgType: firstFrame.msgType, + data: firstFrame.data.toString('hex') + }) + + reader.close() + }) + + it('should have increasing timestamps', async () => { + const reader = new BlfReader(blfFilePath, 0) + await reader.init() + + let lastTs = -1 + let frame: ReplayCanFrame | null + let count = 0 + + while ((frame = await reader.readFrame()) !== null) { + expect(frame.ts).toBeGreaterThanOrEqual(lastTs) + lastTs = frame.ts + count++ + } + + expect(count).toBeGreaterThan(0) + console.log(`Verified ${count} frames have increasing timestamps`) + reader.close() + }) + + it('should report progress correctly', async () => { + const reader = new BlfReader(blfFilePath, 0) + await reader.init() + + let frame: ReplayCanFrame | null + + while ((frame = await reader.readFrame()) !== null) { + const progress = reader.getProgress() + expect(progress.current).toBeLessThanOrEqual(progress.total) + } + + const finalProgress = reader.getProgress() + expect(finalProgress.percent).toBeGreaterThan(90) + console.log( + `Final progress: ${finalProgress.current}/${finalProgress.total} (${finalProgress.percent.toFixed(2)}%)` + ) + + reader.close() + }) + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/sa_dll/GenerateKeyEx.dll b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/sa_dll/GenerateKeyEx.dll new file mode 100644 index 0000000..0c08276 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/sa_dll/GenerateKeyEx.dll differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/sa_dll/GenerateKeyExOpt.dll b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/sa_dll/GenerateKeyExOpt.dll new file mode 100644 index 0000000..c8f589a Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/sa_dll/GenerateKeyExOpt.dll differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/sa_dll/sa_dll.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/sa_dll/sa_dll.test.ts new file mode 100644 index 0000000..253fc1c --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/sa_dll/sa_dll.test.ts @@ -0,0 +1,47 @@ +import { test, expect } from 'vitest' +import { SecureAccessDll } from './../../src/main/worker/secureAccess' +import path from 'path' + +test('SecureAccessDllOpt', () => { + const dllPath = path.join(__dirname, 'GenerateKeyExOpt.dll') + const sa = new SecureAccessDll(dllPath) + + const seed = sa.GenerateKeyExOpt( + Buffer.from([1, 2, 3, 4, 5]), + 1, + Buffer.from([1, 2, 3, 4, 5]), + Buffer.from([1, 2, 3, 4, 5]), + Buffer.from([1, 2, 3, 4, 5]) + ) + expect(seed).toEqual(Buffer.from('020406080a', 'hex')) +}) + +test('SecureAccessDll', () => { + const dllPath = path.join(__dirname, 'GenerateKeyEx.dll') + const sa = new SecureAccessDll(dllPath) + + const seed = sa.GenerateKeyEx( + Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]), + 1, + Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]), + Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]) + ) + expect(seed).toEqual(Buffer.from('fefdfcfbfaf9f8f7', 'hex')) +}) + +test('SecureAccessDll empty function in dll', () => { + const dllPath = path.join(__dirname, 'GenerateKeyEx.dll') + const sa = new SecureAccessDll(dllPath) + try { + const seed = sa.GenerateKeyExOpt( + Buffer.from([1, 2, 3, 4, 5]), + 1, + Buffer.from([1, 2, 3, 4, 5]), + Buffer.from([1, 2, 3, 4, 5]), + Buffer.from([1, 2, 3, 4, 5]) + ) + expect(true).toEqual(false) + } catch (e) { + expect(true).toEqual(true) + } +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/setup.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/setup.ts new file mode 100644 index 0000000..94557f1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/setup.ts @@ -0,0 +1,6 @@ +import { createLogger, format, Logger, transports } from 'winston' + +global.sysLog = createLogger({ + transports: [new transports.Console()], + format: format.combine(format.colorize(), format.simple()) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/test/g.html b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/test/g.html new file mode 100644 index 0000000..41ed953 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/test/g.html @@ -0,0 +1,687 @@ + + + + + + ECharts运算块时间轴 + + + + +
运算块时间轴示例
+
+ + + + + + 1.0x + + +
+
+ 当前时间: 0.0s | 活跃块数: 6 +
+
+ + + + \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/test/test.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/test/test.js new file mode 100644 index 0000000..bd35234 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/test/test.js @@ -0,0 +1,33 @@ +const { test, describe } = require('node:test') +const assert = require('node:assert') +const { test: ____ecubus_pro_test___ } = require('node:test') +const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)) +let cnt = 0 + +test('synchronous passing test #0', (t) => { + // This test passes because it does not throw an exception. + console.log('aaa passing test', cnt++, global.cnt) + assert.strictEqual(1, 1) +}) + +test('asynchronous passing test #1', async (t) => { + console.log(' xx passing test', cnt++) + await delay(2000) + console.log('xxx passing test 2', cnt++) + await delay(2000) + assert.strictEqual(1, 1) +}) + +test('asynchronous passing test #2', async (t) => { + console.log(' mm passing test', cnt++) + await delay(1100) + console.log('mm passing test 2', cnt++) + await delay(1100) + assert.strictEqual(1, 1) +}) + +function a() { + ____ecubus_pro_test___('____ecubus_pro_test___', () => {}) +} +a() + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/test/worker.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/test/worker.js new file mode 100644 index 0000000..c94bbe8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/test/worker.js @@ -0,0 +1,17 @@ +const { + Worker, + isMainThread, + setEnvironmentData, + getEnvironmentData +} = require('node:worker_threads') +const path = require('node:path') +const worker = new Worker(path.resolve(__dirname, 'test.js'), { + execArgv: ['--test-reporter=file://D:/code/ecubus-pro/resources/lib/js/report.js', '--test-only'] +}) +worker.on('message', (message) => { + console.log('message', message.payload) +}) +worker.on('error', (error) => { + console.error('error', error) +}) + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/transport/asc.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/transport/asc.test.ts new file mode 100644 index 0000000..5bc9aab --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/transport/asc.test.ts @@ -0,0 +1,125 @@ +import fs from 'fs/promises' +import os from 'os' +import path from 'path' +import { describe, expect, it } from 'vitest' +import { CAN_ID_TYPE, type CanMessage } from '../../src/main/share/can' +import { AscReader } from '../../src/main/replay/ascReader' +import { + formatAscArbitrationId, + formatCanMessage, + isExtendedCanId +} from '../../src/main/transport/asc' + +function createCanMessage(overrides: Partial & Pick): CanMessage { + return { + data: Buffer.from([0x03, 0x22, 0x56, 0x78, 0xcc, 0xcc, 0xcc, 0xcc]), + dir: 'IN', + ts: 1_000_000, + ...overrides, + msgType: { + idType: CAN_ID_TYPE.STANDARD, + canfd: false, + brs: false, + remote: false, + ...overrides.msgType + } + } +} + +describe('ASC extended ID formatting', () => { + it('appends x for explicit extended frames, including 11-bit values', () => { + const msg = createCanMessage({ + id: 0x123, + msgType: { idType: CAN_ID_TYPE.EXTENDED, canfd: false, brs: false, remote: false } + }) + expect(isExtendedCanId(msg)).toBe(true) + expect(formatAscArbitrationId(msg)).toBe('123x') + }) + + it('appends x when a 29-bit ID cannot fit in an 11-bit identifier', () => { + // Hardware/logger may omit idType; Vector ASC still requires the trailing x. + const msg = createCanMessage({ + id: 0x18daf110, + msgType: { idType: CAN_ID_TYPE.STANDARD, canfd: false, brs: false, remote: false } + }) + expect(isExtendedCanId(msg)).toBe(true) + expect(formatAscArbitrationId(msg)).toBe('18DAF110x') + }) + + it('does not append x for standard 11-bit IDs', () => { + const msg = createCanMessage({ id: 0x7ff }) + expect(isExtendedCanId(msg)).toBe(false) + expect(formatAscArbitrationId(msg)).toBe('7FF') + }) + + it('writes classic CAN extended frames in Vector ASC form', () => { + const msg = createCanMessage({ + id: 0x18daf110, + msgType: { idType: CAN_ID_TYPE.EXTENDED, canfd: false, brs: false, remote: false } + }) + const line = formatCanMessage(msg, 1, 4.87687) + expect(line).toMatch(/1\s+18DAF110x\s+Rx\s+d 8 03 22 56 78 CC CC CC CC/) + expect(line).not.toMatch(/18DAF110[^x]/) + }) + + it('writes CAN FD extended frames with a trailing x on the ID', () => { + const msg = createCanMessage({ + id: 0x10001, + data: Buffer.from([0x01]), + msgType: { idType: CAN_ID_TYPE.EXTENDED, canfd: true, brs: false, remote: false } + }) + const line = formatCanMessage(msg, 2, 0.100995) + expect(line).toMatch(/^0\.100995 CANFD\s+2 Rx\s+10001x\s/) + }) +}) + +describe('ASC reader round-trip', () => { + it('parses trailing x as an extended frame and keeps standard IDs standard', async () => { + const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'ecubus-asc-ext-')) + const filePath = path.join(tempDir, 'device-log.asc') + + try { + const extended = createCanMessage({ + id: 0x18daf110, + msgType: { idType: CAN_ID_TYPE.EXTENDED, canfd: false, brs: false, remote: false } + }) + const standard = createCanMessage({ + id: 0x123, + data: Buffer.from([0x00, 0x00]), + msgType: { idType: CAN_ID_TYPE.STANDARD, canfd: false, brs: false, remote: false } + }) + + const content = [ + 'date Tue Aug 25 03:55:52.711 2026', + 'base hex timestamps absolute', + 'internal events logged', + 'Begin Triggerblock Tue Aug 25 03:55:52.711 2026', + formatCanMessage(extended, 1, 4.87687), + formatCanMessage(standard, 1, 5.0), + 'End TriggerBlock', + '' + ].join('\n') + + await fs.writeFile(filePath, content, 'utf8') + + const reader = new AscReader(filePath, 0) + reader.init() + const frames = [] + let frame = await reader.readFrame() + while (frame) { + frames.push(frame) + frame = await reader.readFrame() + } + reader.close() + + expect(content).toMatch(/18DAF110x/) + expect(content).not.toMatch(/\b18DAF110\s/) + expect(frames.map((item) => [item.id, item.msgType.idType])).toEqual([ + [0x18daf110, CAN_ID_TYPE.EXTENDED], + [0x123, CAN_ID_TYPE.STANDARD] + ]) + } finally { + await fs.rm(tempDir, { recursive: true, force: true }) + } + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/transport/deviceLog.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/transport/deviceLog.test.ts new file mode 100644 index 0000000..e959989 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/transport/deviceLog.test.ts @@ -0,0 +1,242 @@ +import EventEmitter from 'events' +import fs from 'fs/promises' +import os from 'os' +import path from 'path' +import Transport from 'winston-transport' +import { afterEach, describe, expect, it, vi } from 'vitest' +import { addDeviceTransport, CanLOG, removeDeviceTransport } from '../../src/main/log' +import { CAN_ID_TYPE, type CanMessage } from '../../src/main/share/can' +import { BlfReader } from '../../src/main/replay/blfReader' +import blfTransport from '../../src/main/transport/blf' + +class CaptureTransport extends Transport { + devices: string[] + messages: any[] = [] + closeCount = 0 + + constructor(devices: string[]) { + super({ level: 'debug' }) + this.devices = devices + } + + log(info: any, callback: () => void) { + this.messages.push(info.message) + callback() + } + + close() { + this.closeCount++ + } +} + +function createCanMessage(id: number): CanMessage { + return { + id, + data: Buffer.from([id]), + dir: 'IN', + msgType: { + idType: CAN_ID_TYPE.STANDARD, + canfd: false, + brs: false, + remote: false + }, + ts: id + } +} + +describe('device file logging', () => { + afterEach(() => { + vi.restoreAllMocks() + }) + + it('uses one transport for all selected devices and closes it once', async () => { + vi.spyOn(console, 'table').mockImplementation(() => {}) + + const transport = new CaptureTransport(['device-a', 'device-b']) + const factory = vi.fn(() => transport) + const transportId = addDeviceTransport(factory) + const logs = [ + new CanLOG('TEST', 'A', 'device-a', new EventEmitter()), + new CanLOG('TEST', 'B', 'device-b', new EventEmitter()), + new CanLOG('TEST', 'C', 'device-c', new EventEmitter()) + ] + + try { + logs[0].canBase(createCanMessage(0x11)) + logs[1].canBase(createCanMessage(0x22)) + logs[2].canBase(createCanMessage(0x33)) + + await vi.waitFor(() => expect(transport.messages).toHaveLength(2)) + + expect(factory).toHaveBeenCalledTimes(1) + expect(transport.messages.map((message) => message.deviceId)).toEqual([ + 'device-a', + 'device-b' + ]) + + logs.forEach((log) => log.close()) + expect(transport.closeCount).toBe(0) + + removeDeviceTransport(transportId) + expect(transport.closeCount).toBe(1) + } finally { + logs.forEach((log) => log.close()) + removeDeviceTransport(transportId) + } + }) + + it('writes frames from two devices into one BLF file', async () => { + vi.spyOn(console, 'table').mockImplementation(() => {}) + + const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'ecubus-device-log-')) + const configuredPath = path.join(tempDir, 'device-log.blf') + const originalDataSet = global.dataSet + const originalDeviceIndexMap = new Map(global.deviceIndexMap) + global.dataSet = { + devices: { + 'device-a': {}, + 'device-b': {} + } + } as any + global.deviceIndexMap.set('device-a', 1) + global.deviceIndexMap.set('device-b', 2) + + const transport = blfTransport(configuredPath, ['device-a', 'device-b'], ['canBase'], 0) + const closed = new Promise((resolve) => transport.once('closed', resolve)) + const transportId = addDeviceTransport(() => transport) + const logs = [ + new CanLOG('TEST', 'A', 'device-a', new EventEmitter()), + new CanLOG('TEST', 'B', 'device-b', new EventEmitter()) + ] + + try { + logs[0].canBase(createCanMessage(0x11)) + logs[1].canBase(createCanMessage(0x22)) + await new Promise((resolve) => setImmediate(resolve)) + + logs.forEach((log) => log.close()) + removeDeviceTransport(transportId) + await closed + + const [generatedFile] = await fs.readdir(tempDir) + expect(generatedFile).toBeTruthy() + const filePath = path.join(tempDir, generatedFile) + const reader = new BlfReader(filePath, 0) + reader.init() + const frames = [] + let frame = await reader.readFrame() + while (frame) { + frames.push(frame) + frame = await reader.readFrame() + } + reader.close() + + expect(frames.map((item) => [item.channel, item.id])).toEqual([ + [1, 0x11], + [2, 0x22] + ]) + } finally { + logs.forEach((log) => log.close()) + removeDeviceTransport(transportId) + global.dataSet = originalDataSet + global.deviceIndexMap.clear() + originalDeviceIndexMap.forEach((channel, deviceId) => { + global.deviceIndexMap.set(deviceId, channel) + }) + await fs.rm(tempDir, { recursive: true, force: true }) + } + }) + + it('writes all frames from two devices across compressed BLF containers', async () => { + vi.spyOn(console, 'table').mockImplementation(() => {}) + + const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'ecubus-device-log-large-')) + const configuredPath = path.join(tempDir, 'device-log-large.blf') + const originalDataSet = global.dataSet + const originalDeviceIndexMap = new Map(global.deviceIndexMap) + global.dataSet = { + devices: { + 'device-a': {}, + 'device-b': {} + } + } as any + global.deviceIndexMap.set('device-a', 1) + global.deviceIndexMap.set('device-b', 2) + + const transport = blfTransport(configuredPath, ['device-a', 'device-b'], ['canBase'], -1) + const closed = new Promise((resolve) => transport.once('closed', resolve)) + const transportId = addDeviceTransport(() => transport) + const logs = [ + new CanLOG('TEST', 'A', 'device-a', new EventEmitter()), + new CanLOG('TEST', 'B', 'device-b', new EventEmitter()) + ] + + try { + let randomState = 0x12345678 + for (let index = 0; index < 2500; index++) { + for (let deviceIndex = 0; deviceIndex < logs.length; deviceIndex++) { + randomState = (randomState * 1664525 + 1013904223) >>> 0 + const message = createCanMessage(deviceIndex === 0 ? 0x111 : 0x222) + message.data = Buffer.alloc(8) + message.data.writeUInt32LE(randomState, 0) + message.data.writeUInt32LE(index, 4) + message.ts = index * 100_000 + deviceIndex + logs[deviceIndex].canBase(message) + } + } + await new Promise((resolve) => setImmediate(resolve)) + + logs.forEach((log) => log.close()) + removeDeviceTransport(transportId) + await closed + + const [generatedFile] = await fs.readdir(tempDir) + expect(generatedFile).toBeTruthy() + const filePath = path.join(tempDir, generatedFile) + const fileData = await fs.readFile(filePath) + const containerRemainders = [] + let containerOffset = fileData.readUInt32LE(4) + while (containerOffset < fileData.length) { + expect(fileData.toString('ascii', containerOffset, containerOffset + 4)).toBe('LOBJ') + const objectSize = fileData.readUInt32LE(containerOffset + 8) + const objectType = fileData.readUInt32LE(containerOffset + 12) + const paddingSize = objectSize % 4 + expect(objectType).toBe(10) + containerRemainders.push(paddingSize) + containerOffset += objectSize + paddingSize + } + expect(containerOffset).toBe(fileData.length) + expect(containerRemainders.length).toBeGreaterThan(1) + expect(containerRemainders.some((remainder) => remainder === 1 || remainder === 3)).toBe(true) + + const reader = new BlfReader(filePath, 0) + reader.init() + const channelCounts = new Map() + let frameCount = 0 + let frame = await reader.readFrame() + while (frame) { + frameCount++ + channelCounts.set(frame.channel, (channelCounts.get(frame.channel) ?? 0) + 1) + frame = await reader.readFrame() + } + reader.close() + + expect(frameCount).toBe(5000) + expect(channelCounts).toEqual( + new Map([ + [1, 2500], + [2, 2500] + ]) + ) + } finally { + logs.forEach((log) => log.close()) + removeDeviceTransport(transportId) + global.dataSet = originalDataSet + global.deviceIndexMap.clear() + originalDeviceIndexMap.forEach((channel, deviceId) => { + global.deviceIndexMap.set(deviceId, channel) + }) + await fs.rm(tempDir, { recursive: true, force: true }) + } + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/transport/logFile.test.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/transport/logFile.test.ts new file mode 100644 index 0000000..c9f8762 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/transport/logFile.test.ts @@ -0,0 +1,39 @@ +import path from 'path' +import { describe, expect, it } from 'vitest' +import { isValidLogFileNameRule, resolveLogFileName } from '../../src/main/share/logFile' +import { resolveLogFilePath } from '../../src/main/transport/filePath' + +const TEST_TIME = new Date(2026, 7, 1, 1, 57, 46) +const TEST_CONTEXT = { + loggerName: 'CAN Logger', + projectName: 'Issue 417' +} + +describe('log file naming', () => { + it('expands field codes in a custom naming rule', () => { + expect( + resolveLogFileName('{ProjectName}_{LoggerName}_{LocalTime}', TEST_CONTEXT, TEST_TIME) + ).toBe('Issue 417_CAN Logger_2026-08-01_01-57-46') + }) + + it('keeps the legacy automatic timestamp when LocalTime is absent', () => { + expect(resolveLogFileName('capture', TEST_CONTEXT, TEST_TIME)).toBe('capture_20260801015746') + }) + + it('rejects path separators in a file name rule', () => { + expect(isValidLogFileNameRule('capture/{LocalTime}')).toBe(false) + expect(isValidLogFileNameRule('capture_{LocalTime}')).toBe(true) + }) + + it('preserves the configured directory and extension', () => { + expect( + resolveLogFilePath(path.join('logs', 'capture.asc'), 'asc', TEST_CONTEXT, TEST_TIME) + ).toBe(path.join('logs', 'capture_20260801015746.asc')) + }) + + it('uses the selected format when the configured path has no extension', () => { + expect(resolveLogFilePath('{LocalTime}', 'blf', TEST_CONTEXT, TEST_TIME)).toBe( + '2026-08-01_01-57-46.blf' + ) + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/CMSIS-DAP_OpenSDA.S19 b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/CMSIS-DAP_OpenSDA.S19 new file mode 100644 index 0000000..313ad73 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/CMSIS-DAP_OpenSDA.S19 @@ -0,0 +1,676 @@ +S3150000800058F6FF1F158400001D8400001F84000021 +S315000080102184000023840000258400000000000065 +S31500008020000000000000000000000000278400009F +S3150000803029840000000000002B8400002D8400002D +S315000080402F8400002F8400002F8400002F8400005E +S315000080502F8400002F8400002F8400002F8400004E +S315000080602F8400002F8400002F8400002F8400003E +S315000080702F8400002F8400002F8400002F8400002E +S315000080802F8400002F8400002F8400002F8400001E +S315000080902F8400002F8400002F8400002F8400000E +S315000080A02F8400002F8400002F8400002F840000FE +S315000080B02F8400002F8400002F8400002F840000EE +S315000080C02F8400002F8400002F84000053890000B5 +S315000080D02F8400002F8400002F8400002F840000CE +S315000080E02F8400002F8400002F8400002F840000BE +S315000080F02F8400002F8400002F8400002F840000AE +S315000081002F8400002F8400002F8400002F8400009D +S315000081102F8400002F8400002F8400002F8400008D +S315000081202F8400002F8400002F8400002F8400007D +S315000081302F8400002F8400002F8400002F8400006D +S315000081402F8400002F8400002F8400002F8400005D +S315000081502F8400002F8400002F8400002F8400004D +S315000081602F8400002F8400002F8400002F8400003D +S315000081702F8400002F8400002F8400002F8400002D +S315000081802F8400002F8400002F8400002F8400001D +S315000081902F8400002F8400002F8400002F8400000D +S315000081A02F8400002F8400002F8400002F840000FD +S315000081B02F8400002F8400002F8400002F840000ED +S315000081C02F8400002F8400002F8400002F840000DD +S315000081D02F8400002F8400002F8400002F840000CD +S315000081E02F8400002F8400002F8400002F840000BD +S315000081F02F8400002F8400002F8400002F840000AD +S315000082002F8400002F8400002F8400002F8400009C +S315000082102F8400002F8400002F8400002F8400008C +S315000082202F8400002F8400002F8400002F8400007C +S315000082302F8400002F8400002F8400002F8400006C +S315000082402F8400002F8400002F8400002F8400005C +S315000082502F8400002F8400002F8400002F8400004C +S315000082602F8400002F8400002F8400002F8400003C +S315000082702F8400002F8400002F8400002F8400002C +S315000082802F8400002F8400002F8400002F8400001C +S315000082902F8400002F8400002F8400002F8400000C +S315000082A02F8400002F8400002F8400002F840000FC +S315000082B02F8400002F8400002F8400002F840000EC +S315000082C02F8400002F8400002F8400002F840000DC +S315000082D02F8400002F8400002F8400002F840000CC +S315000082E02F8400002F8400002F8400002F840000BC +S315000082F02F8400002F8400002F8400002F840000AC +S315000083002F8400002F8400002F8400002F8400009B +S315000083102F8400002F8400002F8400002F8400008B +S315000083202F8400002F8400002F8400002F8400007B +S315000083302F8400002F8400002F8400002F8400006B +S315000083402F8400002F8400002F8400002F8400005B +S315000083502F8400002F8400002F8400002F8400004B +S315000083602F8400002F8400002F8400002F8400003B +S315000083702F8400002F8400002F8400002F8400002B +S315000083802F8400002F8400002F8400002F8400001B +S315000083902F8400002F8400002F8400002F8400000B +S315000083A02F8400002F8400002F8400002F840000FB +S315000083B02F8400002F8400002F8400002F840000EB +S315000083C02F8400002F8400002F8400002F840000DB +S315000083D02F8400002F8400002F8400002F840000CB +S315000083E02F8400002F8400002F8400002F840000BB +S315000083F02F8400002F8400002F8400002F840000AB +S31500008400DFF80CD001F0B0FA00480047CD8A000032 +S3150000841058F6FF1F0648804706480047FEE7FEE776 +S31500008420FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE71E +S3150000843039840000018400005B484CF22051C18160 +S315000084404DF62811C1814FF4E971018057494FF467 +S31500008450881048645648002101705648017324224A +S3150000846042709A220270C27802F01F02C270032282 +S315000084700271417181798907FCD58179C1F3810146 +S315000084800229FAD102714021417181798906FCD510 +S3150000849081794906FCD51A2101708179C1F38101E0 +S315000084A00329FAD181794906FCD543494FF40040A6 +S315000084B00860704730B53F490878404A84094FF450 +S315000084C000404FF001030FD00C78B3EB941F58D146 +S315000084D04A78D2075ED0087AC0F3420103FA01F067 +S315000084E03749B1FBF0F055E04C7964063ED40C7880 +S315000084F0640710D40C7BE40700D110460A78C2F357 +S31500008500C20203FA02F2D2B2B0FBF2F04A7812F0DB +S31500008510300F00D04009C97801F0E00111F01F0FBB +S3150000852038D14911082935D2DFE801F004070B0FCD +S3150000853013171A1D00EB800005E000EB8000000217 +S3150000854028E0C0EB0010C00124E000EB80004002F0 +S3150000855020E04FF4377148431CE04FF4B761FAE767 +S3150000856040F69501F7E740F67131F4E70879497965 +S3150000857000F01F00401CB2FBF0F001F01F011831A3 +S31500008580E9E70C780225B5EB941F0BD1097BC907E7 +S3150000859000D110460549496C03EB1171B0FBF1F0AF +S315000085A00849086030BD00000020054000800440F6 +S315000085B0005006400040064008ED00E000127A0038 +S315000085C000093D0000E0FF1F01F0AEBB7047002030 +S315000085D07047002070470020704700207047002039 +S315000085E07047002070470020704700207047002029 +S315000085F07047002070470020704700207047002019 +S3150000860070470020704701F0CBBC704700207047D0 +S315000086100020704700F078BA70470000FE49082035 +S3150000862008607047FD4900B508200870FC4841689D +S3150000863041F4A0214160816C8164416B41F4802149 +S315000086404163FFF7EBFFF74890F80C1141F080010A +S3150000865080F80C1190F80C110906FBD4F249090AAE +S3150000866000F89C1FF049090C0175EF49090E0176C7 +S31500008670FF2100F81C1CED49A0F19C00096801B11E +S315000086800421EB4A126802B10222114300F1ED0007 +S3150000869041F0190100F8691C4FF04001C174C17F17 +S315000086A041F04001C17700BDE2490028087806D0B4 +S315000086B040F001000870102081F87400704720F027 +S315000086C0010001F8740B087820F01000087070475C +S315000086D010B50121D348002200EB810383F8C020A6 +S315000086E0491C1029F8D3D049082301F140044B80D6 +S315000086F04C60C8240C704B8101F18003CB600C7276 +S3150000870040334B614033CB6100F180000D2180F88E +S315000087104010C24B4FF055315960017D41F00201C6 +S3150000872001754FF0FF01017001720173027610BDF1 +S31500008730C148017841F0200101707047BE480178B8 +S3150000874021F0200101707047BC48008880070FD5D2 +S31500008750B849087840F0040001F894094CF24F300B +S3150000876000BF401EFCD211F8940F20F004000870E0 +S3150000877070477047002903D1B14900F07F000870A7 +S3150000878070477047F0B5A54BA74CA74E5D68070626 +S315000087904FF0010204F1400400F00F0110D502EB86 +S315000087A04100824001F00F012A4304EB01205A6088 +S315000087B000F1800206EB4111C0304A61C861F0BD8C +S315000087C04700BA409543954A5D608823125C06EBE4 +S315000087D0411004EB01214280416003704281403127 +S315000087E0C1600372F0BD014680788988020601D413 +S315000087F08A4A1154C6E770478A49020608D500F02E +S315000088000F0001EB800010F8C01F41F0050105E0E4 +S3150000881001EB800010F8C01F41F00901017070479C +S315000088208049020608D500F00F0001EB800010F821 +S31500008830C01F21F0050105E001EB800010F8C01F04 +S3150000884021F0090101707047764900F00F0001EB35 +S31500008850800010F8C01F41F0020101707047714995 +S3150000886000F00F0201EB820111F8C02F22F0020284 +S315000088700A7087E77047F0B5DFF8A8E19EF8902008 +S3150000888000F00F03C2F38002DFF89CC102EB830302 +S315000088900CEBC3050CF140066C88002206EB831630 +S315000088A002E0B75C8F54521CA242FAD35B49085CC3 +S315000088B068805A485908426822FA01F5ED0701D046 +S315000088C0882500E0C8250CF8335001238B4053401F +S315000088D043609EF8940020F020008EF89400204615 +S315000088E0F0BD0346104670B503F00F02554B1B78DA +S315000088F0C3F3800303EB82034B4A03F1020302EB4B +S31500008900C30402F1400560804FF0000405EB8315B7 +S3150000891002E00E5D2E55641C8442FAD33F495C0882 +S315000089204D6825FA04F6F60701D0882600E0C82629 +S3150000893002F833600122A2406A404A6070BD424993 +S315000089400878097940F2FF7202EA012140EA010043 +S3150000895070472DE9F0413D4C25782079A4F180043B +S3150000896005EA0005E8070BD0FFF7B2FE01F048FF65 +S315000089703748016809B108468047012084F880001D +S31500008980E80609D5FFF7D4FE3248016809B1084662 +S315000089908047302084F88000A80609D5FFF7CEFE70 +S315000089A02D48016809B108468047202084F88000D8 +S315000089B0680707D51D48016809B1084680470420A5 +S315000089C084F88000022D0CD11949086818B194F872 +S315000089D0880009688847FF2084F88800022084F808 +S315000089E0800028076DD504F19000A04601780E0995 +S315000089F001780078C1F3C0010B4C184DC0F380001C +S31500008A0009D1002202EB4102024414F83220C2F3DB +S31500008A1083020D2A30D023E004E100E018E0FF1FB6 +S31500008A20008004400020074000E2FF1F48A8000025 +S31500008A304CA8000094200740842007403EE0FF1F1A +S31500008A409820074090200740A0200740802007403C +S31500008A503CA8000040A8000044A8000050A8000060 +S31500008A603207920E02EB41010F1814F83700C0F3DB +S31500008A708300012812D016E01348416821F0020154 +S31500008A804160207E20F080002076207C20F080004F +S31500008A902074286890B1014602200EE055F8261091 +S31500008AA009B10420884714F83700C0F38300092869 +S31500008AB004D155F8261009B108208847082188F8FE +S31500008AC08010BDE8F081000018E0FF1F00F015FCE3 +S31500008AD00C4C6FF00100206001F084FE012001F0D3 +S31500008AE031FE00BF01F026FE0028FBD04FF0FF301C +S31500008AF020604FF4FA7000F0A5F800BF00F062F8AD +S31500008B00FCE700001018FE434A480021017041604E +S31500008B108160012242708170C16001617047014627 +S31500008B2010B51046012921D103B3012B1ED1414CAA +S31500008B302169E268914201D1A178A9B13E49226931 +S31500008B4001EB8211402200F0FDFE2069401C2061ED +S31500008B5021690020202900D120612169E268914223 +S31500008B6000D1A070402010BD01206070002010BD13 +S31500008B7070B511461A4602281BD1002A19D008786A +S31500008B800125072813D02B4C207818B16068A368FC +S31500008B9098420ED02948636800EB831000F0D2FE9D +S31500008BA06068401C60606068202803D004E02448A8 +S31500008BB0057070BD002060606068A1688842F8D1C9 +S31500008BC0257070BD70B51B4CA0686168884202D1E3 +S31500008BD0207800282DD0184DE068A26805EB80119A +S31500008BE0164800EB821000F095FAA068401C202879 +S31500008BF000D10020A060A16862680020914200D1E7 +S31500008C002070617849B16070E068402205EB801100 +S31500008C10BDE87040002001F099BDE068401C2028A6 +S31500008C2000D10020E060E0682169884201D101207E +S31500008C30A07070BD20E0FF1F40ECFF1F40E4FF1F47 +S31500008C4034E0FF1F4FF47A514843401EFDD1704770 +S31500008C50F0B5047842784379D0F80200D50763F37B +S31500008C601F60FC4B08D0E6074FF0200502D0C3F882 +S31500008C70845001E0C3F88850950708D5A6074FF041 +S31500008C80400502D5C3F8845001E0C3F888501506A4 +S31500008C9002D5F14EE5093560002680B3EF4DA842B6 +S31500008CA000D928464FF0E025AE61ED4F7843ED4FF1 +S31500008CB0B0FBF7F0686105202861D00700D0C4B981 +S31500008CC0900706D5D3F89000C0F3C010B0EB540F50 +S31500008CD00FD1500701D5A0080BD1900601D5600928 +S31500008CE007D110060AD5186DC0F34000B0EBD41FAB +S31500008CF004D02869C0F300400028DED02E61D3F8E6 +S31500008D0090001A6DC0F3C01046EA4000C2F340025C +S31500008D1040EAC21008700120F0BD2DE9F04F85B081 +S31500008D200546DFF844A300200290894601F10204BB +S31500008D308AF8000003906F78834605F10205DFF894 +S31500008D402C830BE115F8011B019189077ED5BBF138 +S31500008D50000F32D00198B8F80A6000F0110001281F +S31500008D600CD16946019800F0E6FD02280ED1761E68 +S31500008D7003D39AF800100029F3D023E169460E20A8 +S31500008D8000F0D9FD022804D04FF0000B0128F4D1E1 +S31500008D9006E0761EF1D39AF800100029EED011E114 +S31500008DA0009921704FEA112262704FEA1142A270B7 +S31500008DB04FEA1161E17004F104040199C9064CD52A +S31500008DC0E97855F8040B61F31F600390B8F80C00BE +S31500008DD004900198C00711D0B8F80A6000210198E4 +S31500008DE000F0A9FD022802D00128C6D106E0761EB1 +S31500008DF0C3D39AF800100029F0D0E3E0B8F80A606F +S31500008E006946019800F097FD022802D0012816D184 +S31500008E1006E0761E13D39AF800100029F0D00EE073 +S31500008E20D8F81010009A1140039A914207D004997D +S31500008E30491E049103D39AF800100029DED0D8F811 +S31500008E401010009A1140039A914200E03BE001D0D5 +S31500008E5040F01000012817D133E00199B8F80A60F4 +S31500008E60C90715D0BBF1000F2BD10021019800F0E6 +S31500008E7062FD022802D0012806D106E0761E03D341 +S31500008E809AF800100029F0D09CE04FF0010B18E092 +S31500008E906946019800F04FFD022802D0012806D14C +S31500008EA006E0761E03D39AF800100029F0D089E078 +S31500008EB0009921700A0A62700A0CA270090EE1700C +S31500008EC0241D002143E0BBF1000F20D0B8F80A6052 +S31500008ED069460E2000F02FFD022802D0012871D12C +S31500008EE006E0761E6ED39AF800100029F0D069E0ED +S31500008EF0009820704FEA102161704FEA1041A1706E +S31500008F004FEA1060E07004F104044FF0000BE978BA +S31500008F1055F8040B61F31F6001990090890603D58B +S31500008F20C8F81000012013E0B8F80A6069460198F5 +S31500008F3000F001FD022802D0012843D106E0761E8A +S31500008F4040D39AF800100029F0D03BE001210391AC +S31500008F500299491C02919AF8001011B97F1EBFF4BC +S31500008F60F1AE01282ED1BBF1000F1BD0B8F80A5084 +S31500008F70564669460E2000F0DEFC022802D0012883 +S31500008F8020D105E06D1E1DD331780029F1D019E0FE +S31500008F90009921700A0A62700A0CA270090EE1702B +S31500008FA0241D0FE0039969B1B8F80A50564600210E +S31500008FB00E2000F0C0FC022804D16D1E02D33178C9 +S31500008FC00029F4D0029989F8001089F8010005B04B +S31500008FD0A4EB0900BDE8F08F2DE9F84FDFF8888093 +S31500008FE00027044638460D4601F1030A88F800704A +S31500008FF034F8016FA41C002E1AD014F8019BDFF878 +S315000090006CB05FEA897168D55FEAC97146D0BBF872 +S315000090100A400021484600F08EFC022802D00128B2 +S315000090206CD13BE0641E69D398F800100029F0D09B +S3150000903064E026B95FEAC97001D04FF00E09BBF8AB +S315000090400A406946484600F076FC022810D00128FE +S3150000905054D114E000F00F400408FE43C0C62D00B2 +S31500009060006CDC0240420F0034E0FF1F40F4FF1F9B +S31500009070641E43D398F800100029E2D03EE0009A1F +S315000090808AF80020130A8AF80130130C120E8AF8A7 +S3150000909002308AF803200AF1040A7F1C761EC8D221 +S315000090A02CE0E17854F8040B61F31F600090C1488E +S315000090B0B0F80A806946484600F03DFC022802D016 +S315000090C001281BD107E0B8F1010817D39BF800105F +S315000090D00029EFD012E07F1C00E0C346761EE0D2E6 +S315000090E0B4485E46448900210E2000F024FC022884 +S315000090F004D1641E02D331780029F4D02F70390AC6 +S315000091006970A870AAEB0500BDE8F88FFF2008700B +S31500009110012070472DE9F84F0278A2F180031F2B3A +S3150000912002D8FFF7F3FFEFE701F8012B0C4610F822 +S31500009130013BFF22DFF88082012500269D494FF082 +S3150000914040094FF0020C4FF0200A4FF0100B172B7E +S3150000915077D2DFE803F00C3645569AA5B0CEBD5E51 +S3150000916063CECECECECE676B8791C0C0C0000278EC +S31500009170611C0020052A21D008DC012A1ED0022A03 +S315000091801CD0032A1AD0042A18D108E0062A15D0C2 +S31500009190F02A09D0FE2A0ED0FF2A0FD106E0874812 +S315000091A000680860042009E00D7006E081F8009070 +S315000091B04E70022002E081F800A001202070801C81 +S315000091C0A2E7017819B1012907D0227006E040789C +S315000091D07B4900F00100C04308602670012075E05D +S315000091E0007808B1012858D10D70C8F884A0C8F8D5 +S315000091F08490C8F84850C8F808B0C8F844C025702C +S315000092004CE00E70C8F84450C8F804B0C8F844C022 +S3150000921043E000880001401EFDD13EE066702670E6 +S31500009220604653E02146FFF713FD4FE0C378006820 +S3150000923063F31F6030B1634A904205D34D704D60B1 +S315000092402BE056E0227029E05F4A4E700244B2FBE2 +S31500009250F0F0022803D90322B0FBF2F000E001206F +S3150000926048601AE010F8012B0AB94FF480720146E3 +S31500009270104600F0B7F810E0007800F00302521C28 +S315000092800A75C0F38000487507E002780A72B0F8E4 +S3150000929001204A81B0F8030088812670284615E02F +S315000092A00978012903D02670667002200EE0214657 +S315000092B0FFF733FD0AE00978012904D026706670AD +S315000092C0A670032002E02146FFF786FE401C1BE73E +S315000092D00978012902D02270022015E70179D0F819 +S315000092E0010061F31F6000906946002000F023FB37 +S315000092F0D3E704F8012C012006E72E481621416029 +S315000093006421418101210175AFF3008030B52F48FA +S31500009310816B41F4F05181632D4A811551612D48CD +S3150000932020230360036943F02003036191614FF03A +S3150000933040030360046944F04004046140F20314EE +S31500009340D461026922F080020261234A11604FF063 +S31500009350010440F8404C50F8304C44F0010440F809 +S31500009360304C1E4C21614FF0100440F8804C50F8F0 +S31500009370705C45F0100540F8705C40F223155560AE +S315000093804FF0020240F8402C50F8302C42F0020216 +S3150000939040F8302C124A4FF4907515610464046D40 +S315000093A044F01004046591610364016D41F04001CD +S315000093B0016530BD40F4FF1F00F00F4082A9000098 +S315000093C01018FE43001BB700FF356E0100800440F5 +S315000093D000B0044084F00F4000A004400090044018 +S315000093E000C00440F0B50024FF4E25464FF0400C67 +S315000093F02027FE4A526816E015B911F8014B0825D8 +S31500009400E30702D0C6F884C001E0C6F888C0C6F8F3 +S31500009410887013465B1EFDD1C6F8847013465B1E2A +S31500009420FDD164086D1E401EE6D2F0BD2DE9F04365 +S31500009430DFF8BCC30122CCF81820EE4A202353647F +S315000094401364CCF81800536413644FEA5004CCF844 +S3150000945018405364136400EB04054FEA9004CCF8FB +S3150000946018405364136425444FEAD004CCF81840DE +S31500009470536413642C44CCF81840536413644FF0BF +S315000094800004CCF81840536413644FF00104CCF880 +S31500009490184053641364A14642F84449DFF84C83EC +S315000094A098F81440250005D0C2F88830C2F88430F8 +S315000094B0641EF9D102F184025360DCF81C42136089 +S315000094C05360DCF81C62136044EA46065360DCF81D +S315000094D01C4242F8843946EA8404012C12D0022C3C +S315000094E067D0042C65D0213506D000BFC2F888307D +S315000094F0C2F884306D1EF9D10120CCF81800E0B214 +S31500009500BDE8F083800728D5002738465FF02005A0 +S31500009510C2F88830DCF81C62C2F884307F08304418 +S3150000952047EAC6776D1EF3D1C2F88830DCF81C52C4 +S31500009530C2F884306840C00700D0082401B10F602B +S3150000954098F8140030B100BFC2F88830C2F88430F1 +S31500009550401EF9D1C2F848901CE02DB1C2F88830FF +S31500009560C2F884306D1EF8E7C2F8489008680021FA +S315000095705FF02005CCF81800C2F88830C2F88430B5 +S31500009580014440086D1EF5D1CCF81810C2F8883099 +S31500009590C2F8843098F808000028ADD00021CCF835 +S315000095A0181000BFC2F88830C2F88430401EF9D1C6 +S315000095B0A2E798F815604EB1810707D55FF0210143 +S315000095C0C2F88830C2F88430491EF9D135B1C2F8E4 +S315000095D08830C2F88430A5F10105F7E7C2F8489053 +S315000095E0002E89D0800787D40020CCF818002120CF +S315000095F0C2F88830C2F88430401EF9D17CE72DE9E4 +S31500009600F04FDFF8ECC18B4600220121CCF8181090 +S31500009610DFF8D4912023C9F88830744E71680C465F +S31500009620641EFDD1C9F884300C46641EFDD1CCF809 +S315000096301800C9F888300C46641EFDD1C9F884307C +S315000096400C46641EFDD114184208CCF81820C9F83F +S3150000965088300D466D1EFDD1C9F884300D466D1E4D +S31500009660FDD114448208CCF81820C9F888300D467C +S315000096706D1EFDD1C9F884300D466D1EFDD1144412 +S31500009680C208CCF81820C9F888300D466D1EFDD1E9 +S31500009690C9F884300D466D1EFDD12244CCF8182041 +S315000096A0C9F888300A46521EFDD1C9F884300A46E8 +S315000096B0521EFDD1CCF81820C9F888300A46521E31 +S315000096C0FDD1C9F884300A46521EFDD10122CCF8DC +S315000096D01820C9F888300A46521EFDD1C9F88430D0 +S315000096E00A46521EFDD14FF0010EC9F844E0357D01 +S315000096F02A000BD0C9F888300C46641EFDD1C9F883 +S3150000970084300C46641EFDD16D1EF3D1C9F8883035 +S315000097100C46641EFDD1DCF81C42C9F884300D46A7 +S315000097206D1EFDD1C9F888300D466D1EFDD1DCF8E1 +S315000097301C52C9F884300F467F1EFDD144EA450508 +S31500009740C9F888300C46641EFDD1DCF81C429A46E6 +S31500009750C9F884300B465B1EFDD145EA8403012B14 +S3150000976018D0022B7ED0042B7CD021320CD054464C +S31500009770C9F888400846401EFDD1C9F8844008460D +S31500009780401EFDD1521EF3D10120CCF81800D8B2EC +S31500009790BDE8F08F800748D500273C462025524675 +S315000097A04FEA0900C0F888200E46761EFDD1DCF887 +S315000097B01C62C0F884208846B8F10108FCD17F08F5 +S315000097C0344447EAC6776D1EECD1C0F88820074EB0 +S315000097D00D466D1EFDD1DCF81C52C0F88420491ED2 +S315000097E0FDD16C40E10707E000F00F4040F4FF1F99 +S315000097F00010FE4344F00F4000D00823BBF1000FD9 +S3150000980001D0CBF80070357D65B17168C0F888204D +S315000098100C46641EFDD1C0F884200C46641EFDD1A2 +S315000098206D1EF3D1C0F848E033E06AB14FEA0A048E +S31500009830C9F888400846401EFDD1C9F8844008464C +S31500009840401EFDD1521EF3D14E46C9F848E0002411 +S31500009850DBF8000020255246CCF81800C6F8882010 +S315000098600F4600E02DE07F1EFBD1C6F884200F4690 +S315000098707F1EFDD1044440086D1EEDD1CCF8184082 +S31500009880C6F888200846401EFDD1C6F88420491E29 +S31500009890FDD12B48027A002A3FF476AF0021CCF89E +S315000098A01810D0F804005446C9F888400146491EED +S315000098B0FDD1C9F884400146491EFDD1521EF3D19F +S315000098C062E71F4C677D7FB184070DD5212556467B +S315000098D0C9F888600C46641EFDD1C9F884600C4640 +S315000098E0641EFDD16D1EF3D162B15546C9F888508C +S315000098F00C46641EFDD1C9F884500C46641EFDD189 +S31500009900521EF3D1C9F848E0002FD9D08007D7D42A +S315000099100020CCF8180021224FEA0A04C9F8884032 +S315000099200846401EFDD1C9F884400846401EFDD1B8 +S31500009930521EF3D128E7024A527802B176E55EE676 +S3150000994040F4FF1F40EA01039B0703D009E008C962 +S31500009950121F08C0042AFAD203E011F8013B00F8EE +S31500009960013B521EF9D27047064C074D06E0E068EF +S3150000997040F0010394E8070098471034AC42F6D350 +S31500009980FEF742FD88A90000A8A9000010B50B4CFF +S315000099900B48A28801788A4200D9CAB21AB9074987 +S315000099A000201839087180202168FEF79AFF216887 +S315000099B001442160A188081AA08010BD50E0FF1F55 +S315000099C028A8000010B5064C00202168FEF753FFBA +S315000099D0216801442160A188081AA08010BD0000FA +S315000099E050E0FF1F2DE9F047DFF848820646A8F150 +S315000099F0080580074FF0000AA5F1180424D500F0E9 +S31500009A0077FE98F800004746C009FEF7F4FEF8888E +S31500009A10A8803978C1F3411010B1012878D17EE0D1 +S31500009A2098F80120844FDFF814920C2A70D2DFE8F0 +S31500009A3002F0060C961C962B3C964046536200F0AC +S31500009A4063FC34E0FFF7A2FF97E0002000F09AFCE9 +S31500009A5000285DD000F052FE386820B16169002907 +S31500009A6022D0082051E0484654E0012000F08AFC4C +S31500009A70002874D000F042FE38680028F3D06169EF +S31500009A8000297AD0042040E0C1F30401002966D100 +S31500009A9098F80200012140F08000207000F07F005D +S31500009AA0FEF768FE00F02AFE67E000F053FB78B38D +S31500009AB0C8E7C1F3040058BB5E481F3819E000F040 +S31500009AC0B1FC28B300F01AFE386818B1616929B3F1 +S31500009AD001201AE05A481DE0C1F3040101293ED1D4 +S31500009AE06178A9B198F80400A178884237D255491F +S31500009AF008442860A6E700F063FD48B100F0FEFDCB +S31500009B00386830B1616949B10220FEF77EFD34E064 +S31500009B1025E04D48016809B1084680472DE0C1F3AC +S31500009B20040020B1012805D0022818D111E0FEF763 +S31500009B305EFD13E000F0A2F8F8B9FEF748FDE0B9C3 +S31500009B40FEF749FDC8B9FEF74EFDB0B9FEF751FD67 +S31500009B5004E0FEF742FD80B9FEF74DFD68B998F8BE +S31500009B600010090604D4B8F8060008B1002000E089 +S31500009B708020FEF769FEA5F804A0700735D598F891 +S31500009B800000474600062ED4A88858B3FFF71AFFF0 +S31500009B90A88838BB3878C0F34111F1B101291CD12E +S31500009BA0C0F3040020B1012805D0022815D10EE02B +S31500009BB0FEF723FD10E000F049F898B9FEF70FFD17 +S31500009BC080B9FEF712FD68B9FEF719FD04E0FEF74D +S31500009BD008FD38B9FEF715FD20B98020FEF734FEE2 +S31500009BE0A5F804A001E000F08FFD300713D598F822 +S31500009BF00000000606D5A888217908430BD0FFF798 +S31500009C00C5FE08E02078010605D500F07F0020702B +S31500009C100021FEF7AFFD700602D50020FEF71FFEFD +S31500009C20300604D5BDE8F0478020FEF718BEBDE833 +S31500009C30F087000058E0FF1F9CA8000098A80000CD +S31500009C4090A8000004E0FF1F94A8000010B5094882 +S31500009C50094A01791278914209D14078092806D13A +S31500009C6000F058FA18B100F049FD012010BD00209F +S31500009C7010BD000058E0FF1F29A800002DE9F041A3 +S31500009C80224C23492079097888423DD16078214DBC +S31500009C90214E224F0C2837D2DFE800F03606212D60 +S31500009CA0363636363616243200F05CF960B3E07884 +S31500009CB0012802D0032803D003E01948286000E0F9 +S31500009CC02E60FFF763FE13E0E078022802D0032837 +S31500009CD003D00DE0134828600AE02E6008E000F08B +S31500009CE029F90AE000F0F0F90CE000BF00F006FDEB +S31500009CF00120BDE8F08100F02BF928B12F60E0E7E4 +S31500009D0000F0FEF90028F1D10020F2E758E0FF1F2D +S31500009D1029A8000050E0FF1F14E0FF1F05E0FF1F09 +S31500009D2085E0FF1FC6E0FF1F064800214170C160A5 +S31500009D3001614161418081808161C161C1800162AF +S31500009D400181704760E0FF1F2DE9F0474A4CA0886B +S31500009D506188DFF82C81494F002508F10106884209 +S31500009D6017D3A069A8B96561A580012398F80010EA +S31500009D7032461846FEF7D3FE6080608848B1C4F8C4 +S31500009D8014803878012801D8666102E06088401C9A +S31500009D90608060884FF00109C8BBE06808B1E560E3 +S31500009DA035E0206998B3397801290FD888F8005032 +S31500009DB0A580022308F1010200210120FEF7AFFE73 +S31500009DC06080608800B16661256120E098F80060D7 +S31500009DD04F46202E00D3002607FA06F1014245D051 +S31500009DE0701CC1B288F80010A580022308F1010298 +S31500009DF00120FEF794FE6080608820B1C4F81480CC +S31500009E006088401C60802069B740B8432061608844 +S31500009E10A169084328D06088A188DFF86C80401AC1 +S31500009E2086B2184F98F8000037F81000B04200D2FA +S31500009E300646164832466169007840F08000FEF713 +S31500009E4050FD6069124930446061A088304480B298 +S31500009E50A080098888420CD298F8000037F81000D4 +S31500009E60B04206D1C4F81890BDE8F087761CF6B269 +S31500009E70AFE7A561F8E7000060E0FF1F34A8000027 +S31500009E8084E0FF1F30A800003BE0FF1F2AA8000067 +S31500009E9036A80000F8B5184C184D0026E08800B921 +S31500009EA0E5611748E1690078FEF7E5FC0004E16921 +S31500009EB0000C0144E161E18801448BB2E3800AD0E1 +S31500009EC0104909888B4206D2104A0F49127831F898 +S31500009ED0121081420FD90E48017801200129009005 +S31500009EE002D8064A002102E029785B1E6A1C02207D +S31500009EF0FEF73EFEE680F8BD60E0FF1FC5E0FF1FEF +S31500009F002BA8000038A8000030A800003BE0FF1F87 +S31500009F1035A8000010B50446000702D52046FFF715 +S31500009F2013FF600704D52046BDE81040FFF7B2BF17 +S31500009F3010BD0000034804498078085C0349087096 +S31500009F400120704758E0FF1F12E0FF1F05E0FF1FCA +S31500009F5010B500F0F9FB02490870012010BD0000A1 +S31500009F6005E0FF1F0B4910B5C8780022012804D070 +S31500009F70022804D0032806D103E0074A02E00020A5 +S31500009F8010BD064A521C89780023FEF7C8FD012041 +S31500009F9010BD000058E0FF1F84E0FF1F13E0FF1F05 +S31500009FA02DE9F05F3F480078002879D03E4900242B +S31500009FB0A0460878421C0A703C4A1578042205EB34 +S31500009FC0450902FA09F2521E904202DB81F800802E +S31500009FD00124374800220388FF2B01D25B1C038033 +S31500009FE0344B8646008833F815A0824500D10122FD +S31500009FF08B46002009699BF800503CE04FF0000CAE +S3150000A0006CB12D4B1E5CFF2E01D2761C1E542B4EBE +S3150000A010365C26B11B5CB34201D34FF0010C274BD3 +S3150000A020022707FA09F71B5C03FA07F6564502DA18 +S3150000A0300BB1012700E000271AB117B101268640AF +S3150000A04031431F4E365CB34209D01B4B1B5CB342F7 +S3150000A05003D30123834019430025184B1E54BCF13A +S3150000A060000F06D017B9012383401943124E06F894 +S3150000A0700080401CC0B2134B1B789842BED3CBF86D +S3150000A080101058468BF800500AB1AEF8008000292F +S3150000A09006D04088002803D1BDE8F05FFFF754BE24 +S3150000A0A0BDE8F09F39E0FF1F60E0FF1F3BE0FF1FA8 +S3150000A0B00EE0FF1F2CA8000010E0FF1F11E0FF1F9D +S3150000A0C012E0FF1F34A8000010B50948084980783F +S3150000A0D0C97810B1074A815408E0074B074A02E0E5 +S3150000A0E01954401CC0B21478A042F9D3012010BD07 +S3150000A0F058E0FF1F11E0FF1F12E0FF1F34A8000009 +S3150000A100034810B5807800F06BFB012010BD0000FD +S3150000A11058E0FF1F0C4908B5C8780022012804D072 +S3150000A120022804D0032806D103E0002008BD074A10 +S3150000A13000E0074A521C00230093CB888978FEF77B +S3150000A14017FD012008BD000058E0FF1FC5E0FF1FF6 +S3150000A15013E0FF1F7CB54248A0F120050178A0F16D +S3150000A1600804C1F3040111B1012973D15FE0C3787A +S3150000A1703B483B4920383B4AC0788978082B69D24E +S3150000A180DFE803F0680413426868082D364820604B +S3150000A19012204AE0117809B901285BD018B133487A +S3150000A1A020600A2041E03248FAE712780AB901280D +S3150000A1B050D018B12F480090002008E02E48FAE74A +S3150000A1C0009A137813B153881A440092401C8142B6 +S3150000A1D0F6D100980178E1B32060408825E0127836 +S3150000A1E00AB9012836D018B124480090002008E0AA +S3150000A1F02348FAE7009A137813B153881A44009259 +S3150000A200401C8142F6D1E4E71E480090002005E09C +S3150000A210009A13780BB11A440092401C8142F7D180 +S3150000A22000980178A9B120600078019005E001A9A5 +S3150000A230684600F02BF800280DD0A18801988142CD +S3150000A2400CD9114980B2A0800978491E084203D072 +S3150000A25004E0FFE700207CBD0120287101207CBDC1 +S3150000A26058E0FF1F25A80000C4A80000E0A80000D1 +S3150000A270D6A8000014A90000EAA8000016A900004C +S3150000A28015A9000018A9000028A8000030B5154A35 +S3150000A290154C164BD5781279212D02D0222D1ED1C0 +S3150000A2A013E02478A2421AD1114A1478114A12787E +S3150000A2B00CB9012A13D032B10F4A026002F1120022 +S3150000A2C01860092008E00D4AF7E72078824206D197 +S3150000A2D00B4818600B4800880860012030BD00203C +S3150000A2E030BD000058E0FF1F29A8000050E0FF1F06 +S3150000A2F025A800003BE0FF1F14A90000EAA8000003 +S3150000A300A0A80000C2A8000070B51C481B4C00782D +S3150000A310083CC0F3040252B11848A4F118031849C6 +S3150000A3205D780079012A06D0022A24D109E0134873 +S3150000A3301A3820601DE0F5B19A7890421BD20020B1 +S3150000A34015E000F08F02100605D502F00F064FF457 +S3150000A3508030B04001E0012090400DB912070AD1CB +S3150000A3609A68024207D0DA680242E8D001200880E3 +S3150000A3702160012070BD002070BD000058E0FF1F65 +S3150000A38005E0FF1F70B5264A0146A2F120041078A9 +S3150000A390C0F304031046408823B1012B28D0022BBA +S3150000A3A026D110E0012823D129B1FEF7E2F9E08891 +S3150000A3B040F0020005E00020FEF7DBF9E08820F01F +S3150000A3C00200E08029E0127902F08F06320605D5F8 +S3150000A3D006F00F024FF48035954001E00125B540A7 +S3150000A3E062782AB1320703D0A2682A4200D008B1A7 +S3150000A3F0002070BD29B13046FEF726FAE0682843F2 +S3150000A4000AE02069284208D13046FEF728FA30468D +S3150000A410FEF7DCF8E068A843E060012070BD0000AC +S3150000A42058E0FF1F2DE9F84F5F4F00200090387865 +S3150000A430C0F3040000286ED1B8784FF000094FF041 +S3150000A440010A4FF4803BA7F1200800287BD057482B +S3150000A45001784046C07809B901285CD008B1544C4F +S3150000A4606CE0544C6AE06078022804D0042843D09B +S3150000A470052861D143E06179B87881423AD188F8FC +S3150000A4800100207988F80200464600204A4A4B4BD4 +S3150000A49003E000BF02F80090401C19888842F9D3F7 +S3150000A4A05FF00105B1680AFA05F0084202D02846B5 +S3150000A4B0FEF7B6F9B1680BFA05F0084203D045F08D +S3150000A4C08000FEF7ADF96D1C102DEBD34FF0011097 +S3150000A4D0C6E902090120C6F81090FEF752F9E079A4 +S3150000A4E04006F08802D540F0010001E020F00100AE +S3150000A4F0F08021E0608820E0E07800901CE0009881 +S3150000A500D0B9A07800F08F05280605D505F00F0113 +S3150000A5100BFA01F002E041E00AFA05F0D8F808105B +S3150000A52001432046C8F80810FEF75DF92846FEF7F5 +S3150000A53063F92846FEF726F9207804442078002897 +S3150000A54091D126E0FFE74D4688F801900124564652 +S3150000A5504FEA0B09D8F8081006FA04F0084202D0B0 +S3150000A5602046FEF75DF9D8F8081009FA04F008420B +S3150000A57003D044F08000FEF753F9641C102CE9D395 +S3150000A5804FF00110C8E902050020C8F81050FEF788 +S3150000A590F8F8B87898F80110884202D00020BDE893 +S3150000A5A0F88F0120FBE7000058E0FF1F25A80000F8 +S3150000A5B014A90000EAA8000004E0FF1F26A8000076 +S3150000A5C02DE9F04F454E002789B030783D46C0F35F +S3150000A5D00400BA46B84601287ED1A6F12001487883 +S3150000A5E0002875D03E48BB4602780846C0780AB9AE +S3150000A5F0012871D0894608B13A4C65E03A4C63E0CF +S3150000A6006078022804D0042809D005285AD117E01A +S3150000A610617999F80100814254D0608853E0A778A7 +S3150000A6203079E5784FF00008B8424BD1B078A842AF +S3150000A63048D12E484FF0010B10F807A0C55541E050 +S3150000A6403079B8423ED1A07800F08F00079000061E +S3150000A65005D5079800F00F014FF4803001E0079907 +S3150000A660012088400090B078A84217D1D9F8081088 +S3150000A670009A20461143C9F80810D9F80C109143E6 +S3150000A680C9F80C10FEF7AFF80798FEF7B5F807986B +S3150000A690FEF778F8009948EA010813E0554511D10C +S3150000A6A0009918EA010F0DD1D9F80810009A9143C4 +S3150000A6B0C9F80810D9F80C109143C9F80C1007987E +S3150000A6C0FEF7AEF8207804442078002898D1584642 +S3150000A6D009B0BDE8F08FFFE70020F9E758E0FF1F5B +S3150000A6E025A8000014A90000EAA8000004E0FF1F46 +S3150000A6F001490020FEF7BFB858E0FF1F00221146AF +S3150000A7008020FEF7EEB8000001490020FEF7B3B83E +S3150000A71005E0FF1F02E008C8121F08C1002AFAD18F +S3150000A72070477047002001E001C1121F002AFBD1CB +S3150000A7307047000002484078002800D0012070478A +S3150000A74038E0FF1FFDF7B0BF002070472DE9F0414C +S3150000A75007461D4816460088824202DD0020BDE8F5 +S3150000A760F0811A4800780028F9D0194C01224FF0E0 +S3150000A7700008E26000E098B16288002AFBD1154D1E +S3150000A7803246681C2F70FFF7DDF86561A4F8048077 +S3150000A79066801148007801280BD86D1C65610BE0B6 +S3150000A7A0C4F80C80C4F81480A4F80480A4F80280CD +S3150000A7B0D4E76088401C60800020FFF7C5FA074890 +S3150000A7C000F807800120CAE736A8000039E0FF1F1D +S3150000A7D060E0FF1F84E0FF1F34A8000010E0FF1FA9 +S3150000A7E070470000054910B50020C870FDF712FF3C +S3150000A7F0FDF712FFBDE81040FDF714BF38E0FF1F5C +S3150000A80006484FF0011201780548C1800021017009 +S3150000A8104170C0E9022101617047000024A80000D0 +S3150000A82038E0FF1F000001000800010101000200DE +S3150000A830400000040101400040000000000000004C +S3150000A8400000000000000000078600000000000075 +S3150000A850E5990000159F00000000000000000000C0 +S3150000A86000000000000000000000000000000000E2 +S3150000A87000000000000000000000000000000000D2 +S3150000A88000000000000000000000000000000000C2 +S3150000A890C985000000000000000000000000000064 +S3150000A8A00600FF0901A101150026FF007508954065 +S3150000A8B00901810295400901910295010901B10240 +S3150000A8C0C0002100120110010000000851C202F070 +S3150000A8D00001010203010A06100100000008010040 +S3150000A8E00A06000200000008010009022900010111 +S3150000A8F0008032090400000203000004092100015F +S3150000A900000122210007058103400001070501031C +S3150000A9104000010000000000040309041C034B0072 +S3150000A920650069006C00200053006F00660074002B +S3150000A930770061007200650024034F007000650017 +S3150000A9406E00530044004100200043004D005300B8 +S3150000A950490053002D0044004100500016034100F9 +S3150000A9603000300030003000300030003000300061 +S3150000A970310010035500530042005F0048004900B3 +S3150000A9804400312E30000000A8A9000000E0FF1F9F +S3150000A9908400000014A700002CAA000084E0FF1F1A +S3150000A9A0D415000024A70000006CDC0200000000A3 +S3150000A9B00000000000000000000000000000000091 +S3150000A9C0000000005555555500000000000000002D +S3150000A9D00000000000000000000000000000000071 +S3150000A9E00000000000000000000000000000000061 +S3150000A9F00000000000000000000000000000000051 +S3150000AA000000000000000000000000000000000040 +S3150000AA100000000000000000000000000000000030 +S3110000AA2000000000000000000000000024 +S7050000840175 diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/Hello_World.hex b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/Hello_World.hex new file mode 100644 index 0000000..c5c2c11 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/Hello_World.hex @@ -0,0 +1,1100 @@ +:020000040200F8 +:100000005AA55AA50104000030000002FFFFFFFFBF +:1000100000080002FFFFFFFFFFFFFFFFFFFFFFFFE2 +:10002000FFFFFFFFFFFFFFFFC0D401000000000043 +:10003000DDEFBEAC020100006800000258000002C3 +:1000400000000000000000000000000000000000B0 +:100050000000000000000000A55A0002000A000293 +:100060000002000080000002A55A00010008000202 +:1000700000020000900000020000000000000000EC +:100080000000000000000000000000000000000070 +:100090000000000000000000000000000000000060 +:1008000000040020310F0002AB220002AD220002E2 +:10081000AF220002B1220002B3220002A92200028C +:10082000A9220002A9220002A9220002B522000288 +:10083000B7220002A9220002B9220002013A0002F6 +:10084000FF30000209310002133100021D310002A5 +:1008500027310002313100023B31000245310002F4 +:100860004F31000259310002633100026D31000244 +:1008700077310002813100028B3100029531000294 +:100880009F310002A9310002B3310002BD310002E4 +:10089000C7310002D1310002DB310002E531000234 +:1008A000EF310002F9310002033200020D32000282 +:1008B00017320002213200022B32000235320002D0 +:1008C0003F320002BB220002BD220002BF22000212 +:1008D000C1220002C3220002C5220002A922000296 +:1008E000C7220002C9220002CB220002CD22000250 +:1008F000CF220002D1220002A9220002D32200024C +:10090000A9220002D5220002A9220002D722000259 +:10091000A9220002D9220002DB220002DD2200020D +:10092000DF220002A9220002E1220002A922000225 +:10093000E3220002E5220002E7220002E92200028F +:10094000EB220002ED220002EF220002F12200025F +:10095000F3220002F5220002F7220002F92200022F +:10096000FB220002FD220002FF22000201230002FE +:100970000323000205230002A9220002A92200028B +:10098000A9220002A922000207230002A9220002D4 +:10099000092300020B2300020D2300020F23000293 +:1009A0001123000213230002152300021723000263 +:1009B000192300021B2300021D2300021F23000233 +:1009C0002123000223230002252300022723000203 +:1009D000292300022B2300022D2300022F230002D3 +:1009E00031230002332300023523000237230002A3 +:1009F000392300023B2300023D2300023F23000273 +:100A00004123000243230002452300024723000242 +:100A1000492300024B2300024D2300024F23000212 +:100A200051230002532300025523000257230002E2 +:100A3000592300025B2300025D2300025F230002B2 +:100A40006123000263230002652300026723000282 +:100A5000692300026B2300026D2300026F23000252 +:100A60007123000273230002752300027723000222 +:100A7000792300027B2300027D2300027F230002F2 +:100A800081230002832300028523000287230002C2 +:100A9000892300028B2300028D2300028F23000292 +:100AA00091230002A9220002A9220002A922000229 +:100AB000A92200029323000295230002972300023B +:100AC000992300029B2300029D2300029F23000222 +:100AD000A1230002A3230002A5230002A7230002F2 +:100AE000A9230002AB230002AD230002AF230002C2 +:100AF000B1230002B3230002B5230002B723000292 +:100B0000B9230002BB230002BD230002BF23000261 +:100B1000C1230002C3230002C5230002C723000231 +:100B2000C9230002CB230002CD230002CF23000201 +:100B3000D1230002D3230002D5230002D7230002D1 +:100B4000D9230002DB230002DD230002DF230002A1 +:100B5000E1230002E3230002E5230002E723000271 +:100B6000A9220002E9230002EB230002ED23000288 +:100B7000EF230002F1230002F3230002A922000266 +:100B8000F5230002A9220002F7230002F923000244 +:100B9000FB230002FD230002FF23000201240002C8 +:100BA000A9220002A9220002032400020524000257 +:100BB00007240002092400020B2400020D24000275 +:100BC0000F24000211240002132400021524000245 +:040BD00017240002E4 +:100C000031313A34393A303600000000446563200F +:100C100032322032303234004275696C64202573E0 +:100C20002025730A0000000048656C6C6F20576F28 +:100C3000726C64210D0A000001010000A0028A010B +:100C40000101000000050003010100006A0A4006DE +:100C5000010100004001C00001010101000100008C +:100C60000100050000366E010000000000000000D9 +:100C700000800000010032030001010200000105B4 +:100C80000040054002000000000000000A000000D3 +:100C90000000000000430440000000000040054048 +:100CA00003000000000000000A0000000000000037 +:100CB000004304400000000000040000E04B00027C +:100CC000E04B00020100000090000220E04B000217 +:100CD000FC4B00020100000000C201000000000106 +:100CE0000101000008000F001100120013001400A1 +:100CF000150016001B001C001D001E001F00200018 +:100D000021002200230024002500260027002800BF +:100D100029002A002B002C002D002E002F0030006F +:100D200031003400350036003700380039003A0011 +:100D30003B0040004100430044004600470048009B +:100D400049004A004B004C004D004E00510052003B +:100D5000530054005500580059005A005B005C00D5 +:100D60005D006000620065006600670068006A0060 +:100D700070007100720073007400770079007B00CE +:100D80007C007E007F008000810082008300840060 +:100D900085008600870088008900000000C00640AA +:100DA00000000740004007400080074000C00740A7 +:100DB00000000840004008400080084000C0084093 +:100DC0000000094008090A0B0C0D0E0F101100005D +:100DD0002D002F003100A500A600A700C000C10013 +:100DE000C200C30099390002A3390002AD390002E4 +:100DF000B7390002C1390002CB39000200000000FF +:100E0000000000000000000000000000666E692B7A +:100E100000000000666E69006E616E00666E692DEE +:100E20000000000000000000000000000000F03F93 +:100E300000000000000024400000000000005940B5 +:100E40000000000000408F40000000000088C34008 +:100E500000000000006AF8400000000080842E417D +:100E600000000000D01263410000000084D79741C9 +:100E70000000000065CDCD4122490C684FF0010310 +:100E80001C40DFF884B0DBF8000040F00700CBF82E +:100E90000000DFF878B0DBF8000040F00700CBF886 +:100EA00000001B491B4A521A013A06DD4FF05A3026 +:100EB0004FF05A3309C1083AFCDA1749174A521A57 +:100EC000013A06DD4FF05A304FF05A3309C1083A63 +:100ED000FCDA1349134A521A013A06DD4FF05A3030 +:100EE0004FF05A3309C1083AFCDA0F490F4A521A37 +:100EF000013A06DD4FF05A304FF05A3309C1083A33 +:100F0000FCDA704700C01F4090EF00E094EF00E073 +:100F10000000000000040000000400000080000049 +:100F20000000002000000220000002200000062037 +:100F300072B64FF000014FF000024FF000034FF087 +:100F400000044FF000054FF000064FF00007B846D0 +:100F5000B946BA46BB46BC46FFF78EFF06488546F3 +:100F6000064880470648804706488047064880472D +:100F700062B601F0A9F8FEE7000400206521000236 +:100F800071220002D53900026D22000281F0004179 +:100F900002E000BF83F0004330B54FEA41044FEA5E +:100FA000430594EA050F08BF90EA020F1FBF54EAF9 +:100FB000000C55EA020C7FEA645C7FEA655C00F095 +:100FC000E2804FEA5454D4EB5555B8BF6D420CDD66 +:100FD0002C4480EA020281EA030382EA000083EAE9 +:100FE000010180EA020281EA0303362D88BF30BD89 +:100FF00011F0004F4FEA01314FF4801C4CEA1131DF +:1010000002D0404261EB410113F0004F4FEA03333D +:101010004CEA133302D0524263EB430394EA050FC8 +:1010200000F0A780A4F10104D5F1200E0DDB02FA37 +:101030000EFC22FA05F2801841F1000103FA0EF2CB +:10104000801843FA05F359410EE0A5F120050EF191 +:10105000200E012A03FA0EFC28BF4CF0020C43FAC2 +:1010600005F3C01851EBE37101F0004507D54FF0CF +:10107000000EDCF1000C7EEB00006EEB0101B1F51F +:10108000801F1BD3B1F5001F0CD349085FEA300065 +:101090004FEA3C0C04F101044FEA445212F5800F70 +:1010A00080F09A80BCF1004F08BF5FEA500C50F10D +:1010B000000041EB045141EA050130BD5FEA4C0CF0 +:1010C000404141EB0101013C28BFB1F5801FE9D24D +:1010D00091F0000F04BF01460020B1FA81F308BF70 +:1010E0002033A3F10B03B3F120020CDA0C3208DD3C +:1010F00002F1140CC2F10C0201FA0CF021FA02F117 +:101100000CE002F11402D8BFC2F1200C01FA02F186 +:1011100020FA0CFCDCBF41EA0C019040E41AA2BFAB +:1011200001EB0451294330BD6FEA04041F3C1CDA73 +:101130000C340EDC04F11404C4F1200220FA04F093 +:1011400001FA02F340EA030021FA04F345EA03013D +:1011500030BDC4F10C04C4F1200220FA02F001FAFF +:1011600004F340EA0300294630BD21FA04F0294681 +:1011700030BD94F0000F83F4801306BF81F480111A +:101180000134013D4EE77FEA645C18BF7FEA655C8D +:1011900029D094EA050F08BF90EA020F05D054EA5F +:1011A000000C04BF1946104630BD91EA030F1EBF64 +:1011B0000021002030BD5FEA545C05D14000494168 +:1011C00028BF41F0004130BD14F580043CBF01F55B +:1011D000801130BD01F0004545F0FE4141F4700141 +:1011E0004FF0000030BD7FEA645C1ABF194610461C +:1011F0007FEA655C1CBF0B46024650EA013406BF1D +:1012000052EA033591EA030F41F4002130BD00BFDB +:1012100090F0000F04BF0021704730B54FF4806498 +:1012200004F132044FF000054FF0000150E700BF19 +:1012300090F0000F04BF0021704730B54FF4806478 +:1012400004F1320410F0004548BF40424FF0000165 +:101250003EE700BF42004FEAE2014FEA31014FEAA8 +:1012600002701FBF12F07F4393F07F4F81F06051F7 +:10127000704732F07F4208BF704793F07F4F04BF42 +:1012800041F40021704730B54FF4607401F000451F +:1012900021F000411CE700BF50EA010208BF70477F +:1012A00030B54FF000050AE050EA010208BF704770 +:1012B00030B511F0004502D5404261EB41014FF4D9 +:1012C000806404F132045FEA915C3FF4D8AE4FF0E1 +:1012D00003025FEADC0C18BF03325FEADC0C18BFC4 +:1012E000033202EBDC02C2F1200300FA03FC20FA15 +:1012F00002F001FA03FE40EA0E0021FA02F1144462 +:10130000BDE600BF70B54FF0FF0C4CF4E06C1CEA7A +:1013100011541DBF1CEA135594EA0C0F95EA0C0FEB +:1013200000F0DEF82C4481EA030621EA4C5123EA5E +:101330004C5350EA013518BF52EA033541F480118D +:1013400043F4801338D0A0FB02CE4FF00005E1FB40 +:1013500002E506F00042E0FB03E54FF00006E1FB8A +:1013600003569CF0000F18BF4EF0010EA4F1FF04CD +:10137000B6F5007F64F5407404D25FEA4E0E6D410D +:1013800046EB060642EAC62141EA55514FEAC5201E +:1013900040EA5E504FEACE2EB4F1FD0C88BFBCF59A +:1013A000E06F1ED8BEF1004F08BF5FEA500E50F14B +:1013B000000041EB045170BD06F0004646EA010111 +:1013C00040EA020081EA0301B4EB5C04C2BFD4EB43 +:1013D0000C0541EA045170BD41F480114FF0000E3C +:1013E000013C00F3AB8014F1360FDEBF002001F0AA +:1013F000004170BDC4F10004203C35DA0C341BDC24 +:1014000004F11404C4F1200500FA05F320FA04F0F5 +:1014100001FA05F240EA020001F0004221F0004129 +:1014200010EBD37021FA04F642EB06015EEA430E9C +:1014300008BF20EAD37070BDC4F10C04C4F12005CC +:1014400000FA04F320FA05F001FA04F240EA02007F +:1014500001F0004110EBD37041F100015EEA430E50 +:1014600008BF20EAD37070BDC4F1200500FA05F270 +:101470004EEA020E20FA04F301FA05F243EA0203EF +:1014800021FA04F001F0004121FA04F220EA0200FE +:1014900000EBD3705EEA430E08BF20EAD37070BD44 +:1014A00094F0000F0FD101F00046400041EB010124 +:1014B00011F4801F08BF013CF7D041EA060195F006 +:1014C000000F18BF704703F00046520043EB0303C0 +:1014D00013F4801F08BF013DF7D043EA06037047AD +:1014E00094EA0C0F0CEA135518BF95EA0C0F0CD0B8 +:1014F00050EA410618BF52EA4306D1D181EA0301FE +:1015000001F000414FF0000070BD50EA410606BFF7 +:101510001046194652EA430619D094EA0C0F02D13C +:1015200050EA013613D195EA0C0F05D152EA033681 +:101530001CBF104619460AD181EA030101F000419F +:1015400041F0FE4141F470014FF0000070BD41F0E8 +:10155000FE4141F4780170BD70B54FF0FF0C4CF4C2 +:10156000E06C1CEA11541DBF1CEA135594EA0C0FE1 +:1015700095EA0C0F00F0A7F8A4EB050481EA030E2E +:1015800052EA03354FEA013100F088804FEA033315 +:101590004FF0805545EA131343EA12634FEA0222E3 +:1015A00045EA111545EA10654FEA00260EF00041A4 +:1015B0009D4208BF964244F1FD0404F5407402D2F6 +:1015C0005B084FEA3202B61A65EB03055B084FEA87 +:1015D00032024FF480104FF4002CB6EB020E75EB84 +:1015E000030E22BFB61A754640EA0C005B084FEAAC +:1015F0003202B6EB020E75EB030E22BFB61A754629 +:1016000040EA5C005B084FEA3202B6EB020E75EB73 +:10161000030E22BFB61A754640EA9C005B084FEAEB +:101620003202B6EB020E75EB030E22BFB61A7546F8 +:1016300040EADC0055EA060E18D04FEA051545EAE7 +:1016400016754FEA06164FEAC30343EA52734FEA90 +:10165000C2025FEA1C1CC0D111F4801F0BD141EA09 +:1016600000014FF000004FF0004CB6E711F4801F6E +:1016700004BF01430020B4F1FD0C88BFBCF5E06F4E +:101680003FF6AFAEB5EB030C04BFB6EB020C5FEA5E +:10169000500C50F1000041EB045170BD0EF0004EB3 +:1016A0004EEA113114EB5C04C2BFD4EB0C0541EAE5 +:1016B000045170BD41F480114FF0000E013C90E6E2 +:1016C00045EA060E8DE60CEA135594EA0C0F08BFA6 +:1016D00095EA0C0F3FF43BAF94EA0C0F0AD150EAA5 +:1016E00001347FF434AF95EA0C0F7FF425AF104638 +:1016F00019462CE795EA0C0F06D152EA03353FF460 +:10170000FDAE1046194622E750EA410618BF52EADC +:1017100043067FF4C5AE50EA41047FF40DAF52EAB0 +:1017200043057FF4EBAE12E74FF0FF3C06E000BF4D +:101730004FF0010C02E000BF4FF0010C4DF804CD5A +:101740004FEA410C7FEA6C5C4FEA430C18BF7FEA1A +:101750006C5C1BD001B050EA410C0CBF52EA430C48 +:1017600091EA030F02BF90EA020F0020704710F1C8 +:10177000000F91EA030F58BF994208BF90422CBF57 +:10178000D8176FEAE37040F0010070474FEA410C50 +:101790007FEA6C5C02D150EA013C07D14FEA430C6E +:1017A0007FEA6C5CD6D152EA033CD3D05DF8040BDF +:1017B000704700BF8446104662468C461946634611 +:1017C00000E000BF01B5FFF7B7FF002848BF10F1E8 +:1017D000000F01BD4DF808EDFFF7F4FF0CBF01202D +:1017E00000205DF808FB00BF4DF808EDFFF7EAFFA9 +:1017F00034BF012000205DF808FB00BF4DF808ED64 +:10180000FFF7E0FF94BF012000205DF808FB00BF58 +:101810004DF808EDFFF7CEFF94BF012000205DF8E2 +:1018200008FB00BF4DF808EDFFF7C4FF34BF0120EF +:1018300000205DF808FB00BF4FEA410212F50012DC +:1018400015D211D56FF47873B3EB625212D94FEA07 +:10185000C12343F0004343EA505311F0004F23FAF1 +:1018600002F018BF404270474FF00000704750EA46 +:10187000013005D111F0004008BF6FF00040704703 +:101880004FF00000704700BF4A0011D212F500125D +:1018900011D20DD56FF47873B3EB62520ED44FEAC8 +:1018A000C12343F0004343EA505323FA02F0704748 +:1018B0004FF00000704750EA013002D14FF0FF3086 +:1018C00070474FF00000704780F0004002E000BF1A +:1018D00081F0004142001FBF5FEA410392EA030F1B +:1018E0007FEA226C7FEA236C6AD04FEA1262D2EB65 +:1018F0001363C1BFD218414048404140B8BF5B426A +:10190000192B88BF704710F0004F40F4000020F002 +:101910007F4018BF404211F0004F41F4000121F018 +:101920007F4118BF494292EA030F3FD0A2F1010262 +:1019300041FA03FC10EB0C00C3F1200301FA03F1A0 +:1019400000F0004302D5494260EB4000B0F5000FC3 +:1019500013D3B0F1807F06D340084FEA310102F182 +:101960000102FE2A51D2B1F1004F40EBC25008BF34 +:1019700020F0010040EA03007047490040EB0000FE +:10198000013A28BFB0F5000FEDD2B0FA80FCACF1FF +:10199000080CB2EB0C0200FA0CF0AABF00EBC2502C +:1019A00052421843BCBFD0401843704792F0000F1A +:1019B00081F4000106BF80F400000132013BB5E76D +:1019C0004FEA41037FEA226C18BF7FEA236C21D0E3 +:1019D00092EA030F04D092F0000F08BF0846704748 +:1019E00090EA010F1CBF0020704712F07F4F04D116 +:1019F000400028BF40F00040704712F100723CBF29 +:101A000000F50000704700F0004343F0FE4040F452 +:101A1000000070477FEA226216BF08467FEA236310 +:101A20000146420206BF5FEA412390EA010F40F4FB +:101A3000800070474FF0000304E000BF10F0004347 +:101A400048BF40425FEA000C08BF704743F096432E +:101A500001464FF000001CE050EA010208BF704749 +:101A60004FF000030AE000BF50EA010208BF7047D0 +:101A700011F0004302D5404261EB41015FEA010CE5 +:101A800002BF84460146002043F0B64308BFA3F1DD +:101A90008053A3F50003BCFA8CF2083AA3EBC253BF +:101AA00010DB01FA02FC634400FA02FCC2F12002DE +:101AB000BCF1004F20FA02F243EB020008BF20F015 +:101AC0000100704702F1200201FA02FCC2F120027B +:101AD00050EA4C0021FA02F243EB020008BF20EA70 +:101AE000DC7070474FF0FF0C1CEAD0521EBF1CEA9E +:101AF000D15392EA0C0F93EA0C0F6FD01A4480EA8C +:101B0000010C400218BF5FEA41211ED04FF0006374 +:101B100043EA501043EA5111A0FB01310CF00040A0 +:101B2000B1F5000F3EBF490041EAD3715B0040EAC6 +:101B3000010062F17F02FD2A1DD8B3F1004F40EB96 +:101B4000C25008BF20F00100704790F0000F0CF069 +:101B5000004C08BF49024CEA502040EA51207F3A2D +:101B6000C2BFD2F1FF0340EAC250704740F4000008 +:101B70004FF00003013A5DDC12F1190FDCBF00F0F9 +:101B800000407047C2F10002410021FA02F1C2F1A7 +:101B9000200200FA02FC5FEA310040F1000053EA43 +:101BA0004C0308BF20EADC70704792F0000F00F091 +:101BB000004C02BF400010F4000F013AF9D040EA97 +:101BC0000C0093F0000F01F0004C02BF490011F42B +:101BD000000F013BF9D041EA0C018FE70CEAD15329 +:101BE00092EA0C0F18BF93EA0C0F0AD030F0004CA9 +:101BF00018BF31F0004CD8D180EA010000F000405D +:101C0000704790F0000F17BF90F0004F084691F01A +:101C1000000F91F0004F14D092EA0C0F01D1420254 +:101C20000FD193EA0C0F03D14B0218BF084608D11D +:101C300080EA010000F0004040F0FE4040F4000067 +:101C4000704740F0FE4040F4400070474FF0FF0CFA +:101C50001CEAD0521EBF1CEAD15392EA0C0F93EA41 +:101C60000C0F69D0A2EB030280EA010C49024FEA93 +:101C7000402037D04FF0805343EA111143EA10134C +:101C80000CF000408B4238BF5B0042F17D024FF404 +:101C9000000C8B4224BF5B1A40EA0C00B3EB510FDF +:101CA00024BFA3EB510340EA5C00B3EB910F24BFC8 +:101CB000A3EB910340EA9C00B3EBD10F24BFA3EB4D +:101CC000D10340EADC001B0118BF5FEA1C1CE0D115 +:101CD000FD2A3FF650AF8B4240EBC25008BF20F0C8 +:101CE000010070470CF0004C4CEA50207F32C2BF1C +:101CF000D2F1FF0340EAC250704740F400004FF0B9 +:101D00000003013A37E792F0000F00F0004C02BFE9 +:101D1000400010F4000F013AF9D040EA0C0093F0B3 +:101D2000000F01F0004C02BF490011F4000F013B0D +:101D3000F9D041EA0C0195E70CEAD15392EA0C0F75 +:101D400008D142027FF47DAF93EA0C0F7FF470AFAD +:101D5000084676E793EA0C0F04D14B023FF44CAFF0 +:101D600008466EE730F0004C18BF31F0004CCAD185 +:101D700030F000427FF45CAF31F000437FF43CAFC1 +:101D80005FE700BF42000ED2B2F1FE4F0BD34FF01F +:101D90009E03B3EB126209D44FEA002343F00043E1 +:101DA00023FA02F070474FF00000704712F1610F04 +:101DB00001D1420202D14FF0FF3070474FF00000D6 +:101DC000704700BF53B94AB9002908BF00281CBF9B +:101DD0004FF0FF314FF0FF3000F074B9ADF1080C57 +:101DE0006DE904CE00F006F8DDF804E0DDE9022339 +:101DF00004B070472DE9F047089E0D46044688461A +:101E0000002B4DD18A42944668D9B2FA82F252B17F +:101E100001FA02F3C2F1200120FA01F10CFA02FCEE +:101E200041EA030894404FEA1C45210CB8FBF5FE3B +:101E30001FFA8CF705FB1E8341EA03430EFB07F1F3 +:101E400099420BD91CEB03030EF1FF3080F01E8189 +:101E5000994240F21B81AEF1020E63445B1AA4B2B8 +:101E6000B3FBF5F005FB103344EA034400FB07F72E +:101E7000A7420AD91CEB040400F1FF3380F008816B +:101E8000A74240F2058164440238E41B40EA0E4058 +:101E900000211EB1D4400023C6E90043BDE8F0870D +:101EA0008B4208D9002E00F0EE800021C6E9000523 +:101EB0000846BDE8F087B3FA83F100294AD1AB4266 +:101EC00002D3824200F2F980841A65EB03030120F9 +:101ED0009846002EE2D0C6E90048DFE702B9FFDEEF +:101EE000B2FA82F2002A40F09180A1EB0C054FEA91 +:101EF0001C471FFA8CFE0121B5FBF7F307FB1350BB +:101F0000250C45EA00450EFB03F0A84208D91CEB5E +:101F1000050503F1FF3802D2A84200F2CB80434608 +:101F20002D1AA4B2B5FBF7F007FB105544EA05449F +:101F30000EFB00FEA64508D91CEB040400F1FF359A +:101F400002D2A64500F2BB802846A4EB0E0440EA6C +:101F500003409EE7C1F120078B4022FA07FC4CEAC0 +:101F6000030C20FA07F405FA01F31C43FD404FEA85 +:101F70001C4900FA01F3B5FBF9F8200C1FFA8CFE9E +:101F800009FB185540EA054508FB0EF0A84202FA85 +:101F900001F20BD91CEB050508F1FF3A80F08880AF +:101FA000A84240F28580A8F1020865442D1AA4B227 +:101FB000B5FBF9F009FB105544EA054500FB0EFEA0 +:101FC000AE4508D91CEB050500F1FF346CD2AE45D7 +:101FD0006AD90238654440EA0840A0FB0294A5EBA8 +:101FE0000E05A542C846A64656D353D05EB1B3EB04 +:101FF000080265EB0E0505FA07F722FA01F3CD405A +:102000001F43C6E900750021BDE8F087C2F1200337 +:1020100020FA03F10CFA02FC25FA03F395400D4374 +:102020004FEA1C471FFA8CFEB3FBF7F107FB113098 +:102030002B0C43EA004301FB0EF0984204FA02F431 +:1020400008D91CEB030301F1FF382FD298422DD998 +:10205000023963441B1AADB2B3FBF7F007FB103330 +:1020600045EA034500FB0EF3AB4208D91CEB05051E +:1020700000F1FF3816D2AB4214D902386544ED1A8C +:1020800040EA014138E73146304607E78646E5E653 +:102090001846FAE64B45A9D2B9EB020864EB0C0EE0 +:1020A0000138A3E74046EAE7204694E74146D1E7F6 +:1020B000D0467BE7023B654432E7084609E76444C3 +:1020C000023842E7704700BF30B583B00023144A9E +:1020D0000121144800F0E6FA0021084600F0C8FD8E +:1020E0001149022000F044FE00F096F90F4A104911 +:1020F000104802F05BFD104802F058FD00F020F897 +:1021000000250E4C00F027F80195019BA342F9DC55 +:10211000019B01330193019BA342F9DDF2E700BF6C +:1021200000000220A4000220800C0002000C00022B +:102130000C0C0002180C0002280C00023F420F0099 +:1021400008B501220021084600F022FE01210020EE +:1021500000F029FE08BD08B50121002000F025FE91 +:1021600008BD0000F0B583B03B4B1D680023009311 +:1021700002230093009B002B40D005F00105374C53 +:102180004FF0000C06E063B90CF1010C009B103419 +:10219000634533D92246237B022BF4D1002DF2D1A3 +:1021A000F2E75668116893689B1B03F003028DF8F1 +:1021B00007209DF807209B1A5FEA930E09D0331F72 +:1021C0000A1F03EB8E0753F8040F42F8040FBB42BB +:1021D000F9D14FEA8E039DF80720002AD4D0F218D7 +:1021E000581E0144164612F8013B01F8013F9DF8C4 +:1021F0000730DBB2901B8342F5D8C5E7012300937B +:10220000009B33B3164C174A121B02F003038DF8E0 +:1022100007309DF80730D21A920807D004EB8200ED +:102220002346002143F8041B8342FBD192009DF812 +:1022300007306BB10C4810440025034600F8015FDD +:102240009DF80710C9B202331B1B9B1A9942F4D8A0 +:10225000009B03B0F0BD00BF00C01F40B80C0002DF +:102260000000022090000220FFFF012070470000C4 +:102270000A4A0B4B9B1A4FEA930C0A494FF0E02095 +:10228000C0F8081D032B07D9002352F8040B41F8AE +:10229000040B01339C45F8D8704700BF00080002CA +:1022A000D40B000200000000FEE7FEE7FEE7FEE7B9 +:1022B000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7F6 +:1022C000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7E6 +:1022D000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7D6 +:1022E000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7C6 +:1022F000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B6 +:10230000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7A5 +:10231000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE795 +:10232000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE785 +:10233000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE775 +:10234000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE765 +:10235000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE755 +:10236000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE745 +:10237000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE735 +:10238000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE725 +:10239000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE715 +:1023A000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE705 +:1023B000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7F5 +:1023C000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7E5 +:1023D000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7D5 +:1023E000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7C5 +:1023F000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B5 +:10240000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7A4 +:10241000FEE7FEE7FEE7FEE708B5034A03490320AF +:1024200001F098F808BD00BFD80C0002040002209B +:1024300000B583B08DF8070001220DF107010320DC +:1024400001F06EF903B05DF804FB00000A490A6868 +:1024500022F0030200F0030313430B60074A8B686A +:1024600003F00303984204D0013AF8D140F601206A +:1024700070470020704700BF00001F40FFFF1F0093 +:1024800070B4174A9669936923F4706343F48073B8 +:102490009361144D01208446144603E00F2B08BFBE +:1024A0004FF0FF3C00EB0C03D8B25BB2A26812F015 +:1024B000080F10D1013D0BD0A16921F47061020217 +:1024C00002F470620A43A261012BE7D19C46E9E75E +:1024D00040F6062000E00020014B9E6170BC704772 +:1024E00000001F40FFFF1F00114B9B6813F0200FDF +:1024F00007D00F4B1B6A13F0100F07D10D4B1A6852 +:1025000005E0002303604FF4807070470A4A0849D1 +:102510000B6A096AC3F303230133B2FBF3F3C1F37C +:10252000054202FB03335B0803600020704700BFD5 +:1025300000001F405400022000D8B80570B50446C2 +:102540000D4650283BD84F4B13F810604E4C54F8B2 +:10255000263013F0010F0BD054F82630C3F30223BA +:10256000013B042B28D8DFE803F00815191E2300CF +:1025700000230B604FF480700BE0444B0B60002095 +:1025800054F82630C3F3034301332A68B2FBF3F354 +:102590002B6070BD3E4B0B600020F1E73D4B1B688C +:1025A0000B600020ECE73C4B1B680B600020E7E76A +:1025B0000846FFF799FFE3E700200860E0E75628A8 +:1025C00021D8A0F15204042C1AD8DFE804F0030744 +:1025D0000B1015002E4B0B600020DAE72B4B0B6025 +:1025E0000020D6E72B4B1B680B600020D1E72A4B5D +:1025F0001B680B600020CCE70846FFF775FFC8E7B3 +:1026000000200860C5E75A283AD8244B9B6803F09D +:102610000303032B31D8DFE803F00223272C1B4BE5 +:102620000B6000201D4BDB68C3F303435A1C2B686F +:10263000B3FBF2F32B60582CABD0184AD268C2F32C +:1026400003220132B3FBF2F32B605A2CA1D1134ABF +:10265000D26802F00F020132B3FBF2F32B6098E76D +:102660000846FFF741FFDDE70A4B1B680B600020BF +:10267000D8E70B4B0B600020D4E700200860D1E7BF +:10268000002086E7E40C000200401F4000D8B80597 +:10269000C0C62D00540002205800022000001F4038 +:1026A000001BB70010B4044C20602171A26023739A +:1026B0006373002010BC70474400022008B5FFF788 +:1026C0003DFF08BD70B582B0864640B3436833B362 +:1026D000036823B300209C4D9C4CDEF8043013F8B3 +:1026E000203015F813C054F82C3023F0010344F8BF +:1026F0002C30DEF8042002EB800293781B0203F4F6 +:10270000E063D178090401F470210B43527813433C +:1027100044F82C300130DEF800309842DDD3DEF88A +:102720000840002C00F0E881DEF80C50884B0022B5 +:102730001A645A6C5A640320FFF788FE0646002884 +:1027400040F0DB81824B5B6923F002032278002A90 +:1027500014BF0222002213437D4A5361536923F0C0 +:1027600004036278002A14BF042200221343784A2B +:102770005361536923F00803A278002A14BF08228A +:1027800000221343724A5361116921F00101E37879 +:102790000B431361136923F002032279002A14BF4B +:1027A0000222002213436A4A1361D36913F0010F16 +:1027B00042D1D16921F48071637C1B0203F48073E0 +:1027C0000B43D361D36923F01003A17C81F0010195 +:1027D00043EA0113D361D36923F00403E27C002AA6 +:1027E00014BF042200221343594AD361D36923F052 +:1027F0000203227D002A14BF022200221343544AFE +:10280000D361D36923F00803627D002A14BF082234 +:10281000002213434E4AD361D16921F00101237C88 +:102820000B43D361237C1BB1A2694A4B1A6006E0BB +:10283000484B00221A6002E0A269464B1A60002D44 +:1028400064D0AA89424B1A65EA895A651A6CA97A3A +:1028500022F4003242EA41421A641A6C697A22F484 +:10286000007242EA41221A641A6C297A22F00202AA +:1028700042EA41021A64237A002B00F09080344B24 +:10288000996921F47061A27A120202F470620A431B +:102890009A619A6922F48052617A81F0010142EAD8 +:1028A00001329A619A6922F01002617A81F0010185 +:1028B00042EA01129A61996921F00101227A0A43E0 +:1028C0009A61FFF7DDFD0646002833D1E368224A0E +:1028D0001360002D42D0AA8B1D4B1A66EA8B5A66F4 +:1028E0001A6CA97E22F4002242EAC1421A641A6CD0 +:1028F000697E22F4006242EAC1221A641A6C297EBF +:1029000022F0080242EAC1021A6450E0104B4FF470 +:10291000A0621A654FF440725A651A6C22F40032B4 +:102920001A641A6C42F400721A641A6C42F00202C1 +:102930001A64A0E7064A936923F001039361064BEA +:1029400000221A60D9E000BFE40C000200401F40E2 +:1029500000001F4058000220540002208E4AA2FBB3 +:1029600003239B0C03EB8301C9018C4AA2FB0101E9 +:10297000490903EB4303DB01A2FB03235B09884AFC +:1029800011665366136C23F400231364136C43F431 +:1029900000631364136C43F00803136407E0804A78 +:1029A000936923F0010393617E4B00221A60237C1C +:1029B000002B6DD07A4AD16921F48071637C1B02AF +:1029C00003F480730B43D361D36923F01003A17C1C +:1029D00081F0010143EA0113D361D36923F00403B9 +:1029E000E27C002A14BF0422002213436C4AD36104 +:1029F000D36923F00203227D002A14BF02220022A1 +:102A00001343674AD361D16921F00101237C0B4351 +:102A1000D361A269644B1A60614A136A23F001030F +:102A20001362237F002B00F0E480116A21F0100173 +:102A3000637F1B0103F010030B431362116A21F43F +:102A40007C11A37F013B1B0403F47C130B43136233 +:102A5000116A21F47061E37F013B1B0203F4706390 +:102A60000B431362116A21F00101237F0B431362B0 +:102A70004E4B11468A6812F0200F40F09D80013BBA +:102A8000F8D1474B4FF480321A6240F6032634E007 +:102A9000434AD36923F00103D361434B00221A60F8 +:102AA000BAE701A8FFF720FD019B3B4AA2FB0323E5 +:102AB0009B0C03EB8301C901384AA2FB01014909C0 +:102AC00003EB4303DB01A2FB03235B09344A91655B +:102AD000D365136C23F480231364136C43F4806375 +:102AE0001364136C43F00403136482E02C4A136BE9 +:102AF00023F00703136339E00026304602B070BDAF +:102B00006079FFF7A3FC06460028F6D1C5B1AA8874 +:102B1000234B9A64EA88DA641A6CA97822F480322A +:102B200042EA01421A641A6C697822F4807242EA1D +:102B300001221A641A6C22F0010229780A431A64ED +:102B400094F82530002BD1D0154A116B21F00701E4 +:102B500094F8273003F007030B431363136B23F43C +:102B60007F4394F8261043EA0123136301A95A20F6 +:102B7000FFF7A4FD0E490A68019B0748A0FB030369 +:102B8000DB0803F47F0322F47F0213430B6009493F +:102B90005820FFF793FDB0E783DE1B43ABAAAAAA38 +:102BA00000001F405400022058000220FFFF1F00B9 +:102BB00000000440A8000220002D3FF472AFAA8A52 +:102BC000294B9A65EA8ADA651A6CA97C22F480227C +:102BD00042EA81421A641A6C697C22F4806242EAF9 +:102BE00081221A641A6C297C22F0040242EA8102D2 +:102BF0001A641D4A516821F4702194F820301B0496 +:102C000003F470230B435360516821F4706194F80E +:102C100021301B0203F470630B435360516821F0B1 +:102C20000F0194F8223003F00F030B435360A2F519 +:102C3000D812116894F823301B0203F4706321F456 +:102C400070610B431360136843F000431360074B3C +:102C500002F5D812D068516888423FF451AF013B69 +:102C6000F8D140F6032648E700001F40FFFF1F0091 +:102C70002DE9F04182B080460F468DF804008DF8B2 +:102C8000051000F08DF9394A137B537301228DF83A +:102C90000620002B55D00024344D04E001342A7B5B +:102CA000E3B29A424DD9E6B2AB6853F82630002B16 +:102CB000F4D01A79022AF1D01A68996801A89047CD +:102CC0000028EBD06E73002FE8D140F203160023EA +:102CD0008DF80630254B1B7BEBB10024234D25E0FE +:102CE00001342A7BE3B29A4215D95FFA84F8AB68C3 +:102CF00053F82830002BF3D01A79012AF0D01A6843 +:102D0000996801A890470028EAD085F80D80002F27 +:102D1000E6D14FF4827600F035F9304602B0BDE8D6 +:102D2000F08101342A7BE3B29A42F4D9E3B2AA6873 +:102D300052F82330002BF4D01A68996801A8904704 +:102D4000EFE70A4C236853F82800FFF7BBFC84F830 +:102D5000058006460028BAD102238DF80630034BC1 +:102D60001B7B002BD7D00024004DBEE7440002207F +:102D700060B170B506460C460025204600F017F8F5 +:102D800001351C34AE42F8D1002070BD00207047E0 +:102D900043694FF0010C0CFA01FC23EA0C038A4052 +:102DA0001A434261704781607047C160704730B418 +:102DB0000168446851F82430027A012A50D0022A6E +:102DC00053D0002A49D0427A920002F0040223F044 +:102DD00014031343827A43EA0213C27A920102F087 +:102DE000400223F474631343027B120202F4706204 +:102DF000134323F00043427B43EAC27341F824307B +:102E0000037C002B34D10268416852F8213023F44E +:102E1000803342F82130037B012B43D04268436961 +:102E200003EB8203D3F8802022F00F02C3F8802046 +:102E30004368426902EB8302D2F88010837B03F07F +:102E40000F030B43C2F88030C37B23B14269416852 +:102E500001238B40D36130BC704723F00203B2E7FB +:102E600023F0010343F00203ADE743F00303AAE7B5 +:102E70004168026852F8213023F4781342F8213077 +:102E800052F82140437C5B0403F47813234342F857 +:102E900021300268416852F8213043F4803342F80F +:102EA0002130B8E741694B69027E22B1012A08D07E +:102EB00042695361B2E7416801228A4023EA020372 +:102EC000F6E745680124AC4023430A6822EA04047B +:102ED000427EAA4022430A60EAE7000010B5214B77 +:102EE0009B682AB1144600F1100253F82220226098 +:102EF000103043F820101B4B5B6913F4803F30D037 +:102F0000184B0022C3F88420BFF34F8FD3F88030D2 +:102F1000C3F3C904C3F34E334FEA431C43F6E07EC8 +:102F200010480CEA0E01234641EA8372C0F86C2275 +:102F3000013BB3F1FF3FF7D1ACF1200C1CF1200FA6 +:102F4000EFD1BFF34F8FBFF36F8FBFF34F8FBFF33F +:102F50006F8F044B0022C3F85022BFF34F8FBFF393 +:102F60006F8F10BD00ED00E0002808DB420900F083 +:102F70001F00012303FA00F0014B43F822007047C1 +:102F800000E100E0054B1B68002B04DD013B034A18 +:102F90001360002B00DD704762B6FCE75C00022086 +:102FA00072B6024A13680133136070475C00022056 +:102FB00008B50A4B1B6853F8202000F01F000123BE +:102FC00003FA00F0064B586258605B6822B1536800 +:102FD00013B1117B9068984708BD00BF60000220C4 +:102FE0000000024038B5044600F01F0500222946C3 +:102FF0000B4800F047F80B4B1B6853F824306BB1BB +:1030000001221A735A6812B1197B986890470121FE +:10301000A940034B596259605A68D96038BD00BF56 +:10302000000002406000022008B5012200F01F01EC +:10303000024800F027F8002008BD00BF0000024051 +:1030400008B5002200F01F01024800F01BF8002024 +:1030500008BD00BF0000024000F01F004001014B0E +:10306000195070471004024008B50A4600F01F01CD +:10307000014800F017F808BD000002400048704702 +:103080000000024032B18269012303FA01F11143C9 +:10309000816170478369012202FA01F123EA01018B +:1030A0008161704700EB4113B3F81E3413F4004FF5 +:1030B00012D100EB4110B0F81E34C2F30E0203F43B +:1030C00000431343A0F81E34B0F8163403F4004351 +:1030D0001A43A0F81624704700EB4110B0F81E34D4 +:1030E000C2F3080203F47E431343A0F81E34B0F881 +:1030F000163403F47E431A43A0F81624704708B52B +:103100000020FFF755FF08BD08B50120FFF750FF6D +:1031100008BD08B50220FFF74BFF08BD08B5032026 +:10312000FFF746FF08BD08B50420FFF741FF08BDC3 +:1031300008B50520FFF73CFF08BD08B50620FFF7DE +:1031400037FF08BD08B50720FFF732FF08BD08B5F7 +:103150000820FFF72DFF08BD08B50920FFF728FF5D +:1031600008BD08B50A20FFF723FF08BD08B50B20EE +:10317000FFF71EFF08BD08B50C20FFF719FF08BDBB +:1031800008B50D20FFF714FF08BD08B50E20FFF7A6 +:103190000FFF08BD08B50F20FFF70AFF08BD08B5EF +:1031A0001020FFF705FF08BD08B51120FFF700FF4D +:1031B00008BD08B51220FFF7FBFE08BD08B51320B7 +:1031C000FFF7F6FE08BD08B51420FFF7F1FE08BDB5 +:1031D00008B51520FFF7ECFE08BD08B51620FFF76F +:1031E000E7FE08BD08B51720FFF7E2FE08BD08B5E9 +:1031F0001820FFF7DDFE08BD08B51920FFF7D8FE3F +:1032000008BD08B51A20FFF7D3FE08BD08B51B207E +:10321000FFF7CEFE08BD08B51C20FFF7C9FE08BDAC +:1032200008B51D20FFF7C4FE08BD08B51E20FFF736 +:10323000BFFE08BD08B51F20FFF7BAFE08BD38B5B0 +:103240000020FFF71BFFC568002404E06D0801346F +:10325000E4B2202C06D015F0010FF7D02046FFF77E +:10326000C1FEF3E738BD0000154B53F82030154A76 +:1032700052F8201093F83420012A0CD99A68012AB8 +:1032800014D01A6812880A871A6802321A609A687B +:10329000023A9A6070471A68127881F838201A68E2 +:1032A00001321A609A68013A9A6070471A68127877 +:1032B0000A871A6801321A609A68013A9A60704760 +:1032C000640002209C0D0002154B53F82030154A73 +:1032D00052F8201093F83420012A0CD9DA68012A18 +:1032E00014D05A68898F11805A6802325A60DA689D +:1032F000023ADA6070475A6891F83C1011705A68C7 +:1033000001325A60DA68013ADA607047898F5A6888 +:1033100011705A6801325A60DA68013ADA6070470F +:10332000640002209C0D000210B50F4B53F82030B2 +:103330000E4A52F820405A6822F002025A601A6976 +:1033400022F010021A61A37C33B900232374A38FE7 +:103350009BB2022B05D010BD04F1360000F058FBE3 +:10336000F3E70023A387F6E79C0D00026400022028 +:1033700010B50F4B53F820400E4B53F820305A68CD +:1033800022F004025A601A6922F020021A61E37CDA +:1033900033B900236374E38F9BB2022B05D010BDB9 +:1033A00004F1350000F034FBF3E70023E387F6E790 +:1033B000640002209C0D000238B5244B53F82050C5 +:1033C000234B53F8204094F83900FFF739FEE38F80 +:1033D0009BB2022B11D0E368BBB90023C5F89C3027 +:1033E0002B6923F020032B61E37CFBB9002363747A +:1033F000E38F9BB2022B1ED038BDE369002BEAD0CD +:10340000226A002120469847E5E7616894F8390070 +:10341000FFF722FEE16894F83900FFF725FE00234C +:10342000E36094F83900FFF7FFFDE5E704F13500AC +:1034300000F0EEFADAE70023E387E369002BDBD044 +:10344000226A022120469847D6E700BF9C0D000261 +:103450006400022070B582B005460E46394B53F821 +:10346000204001A9384B185CFFF728F9374B53F877 +:1034700025301A7C002A50D15B7C002B4FD101985B +:10348000FEF7D8FA05463046FEF7D4FA4FF08341EE +:10349000FEF728FB01462846FEF7D8FB0646FEF756 +:1034A00071FC0546FEF7C6FA01463046FEF710FAF3 +:1034B0004FF08341FEF716FB4FF07C51FEF70AFAFE +:1034C000FEF760FCC2B2102A24D0A368C3F3033312 +:1034D000012B26D0236823F0020343F0010323606D +:1034E000A368C3F30333012BFAD1A16A184B0B4035 +:1034F000C5F313051D43A562636A23F00F0302F0B1 +:103500000F021A436262236823F003032360002042 +:1035100002B070BD01350022D7E70220F8E7022093 +:10352000F6E7A16A0A4B0B40C5F313051D43A562DC +:10353000636A23F00F0302F00F021A436262002055 +:10354000E6E700BF9C0D0002C40D000264000220EB +:103550000000F0FF2DE9F04383B007460D46164604 +:103560006A4B53F8204001A9694B185CFFF7A6F895 +:103570006B1E05F13F0E4FF0000C03F801CF7345B1 +:10358000FBD1644B43F82750236823F0020343F038 +:1035900001032360A368C3F30333012BFAD123692A +:1035A00043F00103236131683846FFF753FF81463A +:1035B00018B1484603B0BDE8F083F3792269590099 +:1035C00001F0020122F082020A439B0103F0800312 +:1035D00013432361226922F46042F3791B0303F44D +:1035E000604313432361226922F4E052F3795B02C2 +:1035F00003F4E05313432361F37985F834303379CE +:10360000002B67D1236923F004032361226922F48C +:10361000C022B3795B0403F4C02313432361D4F8BD +:103620008C2022F00202B3795B0003F00203134303 +:10363000C4F88C30337A002B5ED1236943F4807355 +:103640002361737A002B5CD1236943F400732361F7 +:10365000236823F0030323604FF00008A5F83C80A3 +:10366000A5F83E80337A85F83730737A85F838309C +:10367000B37A85F83930F37A85F83A30C5F81C808A +:10368000C5F82480C5F82C80C5F82080C5F82880AE +:10369000C5F83080414605F1350000F0CCF94146CF +:1036A00005F1360000F0C7F91B4B33F917504246BD +:1036B0001A4B53F827102846FFF710FC2846FFF74F +:1036C00053FC636843F480736360636843F0800372 +:1036D00063606EE7236943F0040323617379226911 +:1036E000D90001F0080122F048020A435B0103F00F +:1036F00040031343236189E7236923F48073236123 +:103700009FE7236923F400732361A1E79C0D000266 +:10371000C40D000264000220D00D0002E40D00027E +:10372000F8B51C4B53F820502B7C83BB06461A4B34 +:1037300053F820402960AA6001232B740222AA8733 +:10374000236943F0100323616261FFF78DFD0227B7 +:1037500003E0636913F4C07F17D1AB6843B16369B9 +:1037600013F0020FF5D067613046FFF77DFDF0E7FB +:103770000020636913F0020FFBD0236923F01003CC +:10378000236100232B74A887F8BD0120F1E70220F4 +:10379000FAE700BF640002209C0D000270B5194BCF +:1037A00053F820506B7C03B970BD0446164B53F898 +:1037B0002060FFF789FDEB682BB9EB691BB12A6A22 +:1037C000002128469847EB6843B12B7D012B16D08A +:1037D000042373614FF400737361E5E72046FFF73C +:1037E000C7FD2B7D032B07D0EB69002BF0D02A6A95 +:1037F000022128469847EBE704232B75F4E70223C0 +:103800002B75E5E7640002209C0D000270B5124B99 +:1038100053F820502B7C6BB10446104B53F82060BA +:10382000AB6843B96B6A1BB1AA6A01212846984765 +:10383000AB682BB170BDFFF717FD02237361F9E789 +:103840002046FFF771FD6B6A1BB1AA6A0221284668 +:10385000984702237361EDE7640002209C0D00028B +:1038600010B5174B53F82030164A52F820405A69C9 +:1038700012F0800F12D040F20162E28780225A617A +:1038800094F83830012B17D00021FFF795FDE36A3B +:103890001BB1226B03212046984710BD5A6912F4D0 +:1038A000807F06D040F20362E2874FF480725A6153 +:1038B000E6E70123E387E3E7FFF75AFDE7E700BF09 +:1038C0009C0D00026400022070B51C4B53F8206070 +:1038D0001B4B53F820502B7D032B12D0042B25D0EB +:1038E000022B00D070BD03232B75AB69C3F30B0310 +:1038F000C6F8903008237361736843F0080373605F +:10390000F0E70446736913F0080FEBD0EB691BB1C5 +:103910002A6A0421284698472046FFF729FD0123FB +:103920002B75736823F008037360DBE701232B75A5 +:10393000736823F008037360D4E700BF9C0D000296 +:103940006400022038B50446124B53F820506B69CE +:1039500013F4C07F13D16B6813F0040F03D06B69AD +:1039600013F0040F0ED16B6813F0020F03D06B69D4 +:1039700013F0020F09D12046FFF7A6FF38BDFFF76D +:103980006FFFFBE7FFF70AFFEDE72046FFF73EFF7B +:10399000F1E700BF9C0D000208B50020FFF7D2FF41 +:1039A00008BD08B50120FFF7CDFF08BD08B502200E +:1039B000FFF7C8FF08BD08B50320FFF7C3FF08BD28 +:1039C00008B50420FFF7BEFF08BD08B50520FFF7C6 +:1039D000B9FF08BD084A136843F000431360074B62 +:1039E0004BF231621A604CF278221A605A6822F067 +:1039F00001025A60704700BF0000044000801A4076 +:103A0000024A136801331360704700BF8C00022024 +:103A100010B50446FFF7C4FA2378DBB2FF2B08D0B9 +:103A200023780133DBB223700024FFF7ABFA204682 +:103A300010BD0124F9E738B504460D46FFF7B0FA8A +:103A40002570FFF79FFA002038BD70472DE9F04F31 +:103A500083B006460F4601929846DDF83090DDF8B7 +:103A600038A00F9B13F0030F14D10D9B53450FD2B9 +:103A70000D9BAAEB0305019C25444FF0200B224629 +:103A80000134434639465846B047AC42F7D102E0CC +:103A9000154600E0019D0D9B7BB10D9B09EB030BCF +:103AA0005C46AB44ABEB04024346394614F8010DC7 +:103AB000B0474C45F6D10D9B1D440F9B13F0020FF0 +:103AC0000ED0019BEC1AA2450AD94FF020092A46D4 +:103AD0004346013539464846B04701345445F6D38C +:103AE000284603B0BDE8F08F2DE9F04385B0DDF83E +:103AF00030E00D9C9DF83880109F119D129E16F0AD +:103B0000020F33D17DB116F0010F00F08F80B8F1B4 +:103B1000000F02D116F00C0F00D0013DBC4215D2AF +:103B20001F2C04D912E0BC420DD21F2C0BD804F17B +:103B3000FF3CF4444FF0300901340CF8019FA742D8 +:103B400001D91F2CF8D916F0010F0FD0A5420DD9BD +:103B50001F2C0BD804F1FF3CF4444FF03009013422 +:103B60000CF8019FAC4201D21F2CF8D916F0100FAF +:103B700015D016F4806F00D124BB0F9F102F2CD0CE +:103B80000F9F022F05D11F2C03D862270EF8047057 +:103B900001341F2C0CD830270EF8047001341F2C70 +:103BA00006D8B8F1000F31D02D270EF8047001347B +:103BB000039602950194CDF800E0FFF747FF05B0AA +:103BC000BDE8F083BC4201D0AC42D6D1B4F1010CC7 +:103BD00015D00F9F102F12D1023C1F2C8CBF002735 +:103BE000012716F0200C00D15FB9BCF1000FD0D036 +:103BF000002FCED058270EF804700134C9E7644670 +:103C0000BBE778270EF804700134C2E716F0040F02 +:103C100004D02B270EF804700134C9E716F0080F02 +:103C2000C6D020270EF804700134C1E7BC429DD2F3 +:103C30001F2C7FF67CAF99E72DE9F04190B0169CE0 +:103C4000189DDDF86C802CB928F0100618F4806FF0 +:103C500034D1B04618F0200F14BF412761270DF171 +:103C6000200E00260A3F00E06446B4FBF5FC05FB8D +:103C70001C4C5FFA8CFCBCF1090F94BF0CF1300CAA +:103C8000BC445FFA8CFC01360EF801CBB4FBF5FCAA +:103C9000AC4201D31F2EE7D9CDF818801A9C0594A9 +:103CA000199C049403959DF85C400294019608AC1D +:103CB0000094FFF719FF10B0BDE8F081B04626462A +:103CC000EAE72DE9F04F95B0089009910A920B931D +:103CD0001E9C1F9D229EDDF88C80DDF898B054EA72 +:103CE000050305D12BF010031BF4806F40D19B46D8 +:103CF0001BF0200F14BF4FF0410A4FF0610A0DF185 +:103D000030090027AAF10A0A01E004460D463246AE +:103D1000434620462946FEF755F8D2B2092A94BFF9 +:103D200030325244D2B2013709F8012B32464346B1 +:103D300020462946FEF746F8B44275EB080301D346 +:103D40001F2FE2D9CDF818B0259B0593249B04932F +:103D500003969DF88030029301970CAB00930B9B68 +:103D60000A9A09990898FFF7BFFE15B0BDE8F08FD1 +:103D70009B460027E6E700002DE9F04F91B0824610 +:103D80000C4609921D461A9E0696DDF86CB0324626 +:103D90005B4630465946FDF71DFD002800F00081C6 +:103DA0004FF0FF32AA4B30465946FDF73BFD002845 +:103DB00040F0F6804FF0FF326FF4801330465946E2 +:103DC000FDF712FD002840F0EB8000220023069E44 +:103DD00030465946FDF708FD002840F0F680069A67 +:103DE0000792CDF820B01E9B13F480630F931C9BA9 +:103DF00008BF06231C93DDF81C90DDF82080C8F373 +:103E00000A50A0F2FF30FDF713FA81A3D3E9002393 +:103E1000FDF778FA80A3D3E90023FDF7BDF8064645 +:103E20000F46C8F31308484648F07F5141F440114B +:103E30000022884BFDF7AEF879A3D3E90023FDF704 +:103E400061FA02460B4630463946FDF7A5F8FDF704 +:103E5000F3FC0E90FDF7ECF906460F4672A3D3E98A +:103E60000023FDF74FFA00227B4BFDF795F8FDF795 +:103E7000E3FC80466EA3D3E9002330463946FDF7C4 +:103E800041FA06460F46CDF828804046FDF7D0F9A6 +:103E900069A3D3E90023FDF735FA02460B46304605 +:103EA0003946FDF777F806460F4602460B46FDF702 +:103EB00029FA8046894632463B4630463946FDF768 +:103EC0006BF8CDE90C010022644B40464946FDF7F2 +:103ED00043FB0022624BFDF75FF802460B4640466B +:103EE0004946FDF739FB00225E4BFDF755F80246C7 +:103EF0000B4640464946FDF72FFB80468946324631 +:103F00003B4600204FF08041FDF744F802460B4647 +:103F100040464946FDF740F802460B46DDE90C01F4 +:103F2000FDF71AFB0022504BFDF736F80A9B03F20F +:103F3000FF3600223305FDF7E5F906460F46079ADE +:103F4000089BFDF76FFC002844D1CDE90A670E9F5E +:103F500007F16303C72B34BF042605261E9B13F409 +:103F6000006F00F0888036A3D3E90023DDF81C90B1 +:103F70004846DDF820804146FDF74AFC002875D010 +:103F800031A3D3E9002348464146FDF72DFC002824 +:103F90006CD01C9BBB4229DDD81B431E1C9327E021 +:103FA0001E9B04931D9B03931C9B0293069A5B46E6 +:103FB000CDE900232B46099A2146504600F0E0F84F +:103FC0008046404611B0BDE8F08F07960BF10043E4 +:103FD000089308E70E9B013B0E930022204B3046CE +:103FE0003946FDF7B9FACDE90A01B0E700231C9381 +:103FF0001E9B43F480631E931D9B002B40F0AE80FC +:104000001E4698464FF000094F46CDF8389049E0DB +:10401000FB799F501344D33FB3C8608B288AC63FB7 +:1040200061436F63A787D23F71A379094F930A4019 +:104030001655B5BBB16B0240EF39FAFE422EE63F92 +:104040002D431CEBE2361A3F0000000080842E4115 +:10405000FFFFEF7F0000F83F0000E03F00002C4032 +:1040600000002440000018400000F03F0F9B13B1F7 +:104070001C9B002B6FD11D9B9E4272D21D9BA3EBFC +:104080000608371E18BF01271E9B17EA53096BD17C +:104090000E9B3BB1DDE90A2307980899FDF75CFA0E +:1040A000079008910022002306985946FDF79CFBD3 +:1040B00000285DD11E9B23F400630493CDF80C808F +:1040C0001C9B0293079A089BCDE900232B46DDF841 +:1040D00024B05A462146504600F052F88046002F40 +:1040E0003FF46FAF1E9B13F0200F00F101072B462A +:1040F0000246214614BF45206520D047052305937D +:10410000013E0496002303930A2302930E99CB0FDA +:1041100001930029B8BF494200912B463A462146F7 +:104120005046FFF789FD8046B9F1000F3FF449AFD3 +:10413000A0EB0B061D9BB3427FF643AF20279946A9 +:1041400042462B4608F1010821463846D047013641 +:10415000B145F5D835E7013B1C938CE700260E9658 +:104160008CE74FF000088CE74F464FF000088FE7D0 +:10417000089901F1004308939CE700BF000000008C +:104180002DE9F04F97B007900C9192469B46DDE9E0 +:104190002089229E42464B4640464946FDF71AFB7F +:1041A000002841D04FF0FF326FF48013404649465B +:1041B000FDF71AFB002846D14FF0FF32B04B4046C6 +:1041C0004946FDF72FFB00284CD1A9A3D3E90023D2 +:1041D00040464946FDF726FB00285BD1A6A3D3E95C +:1041E000002340464946FDF7FFFA002852D100223D +:1041F000002340464946FDF7F7FA002858D100232E +:104200000D93249B13F480645DD0092E40F2B78097 +:104210000EAB00243022013403F8012B013E1F2C89 +:1042200052D8092EF7D84FE0249B0393239B029387 +:1042300003230193934B00935B4652460C990798D6 +:10424000FFF704FC58E1249B0393239B0293042370 +:1042500001938D4B00935B4652460C990798FFF7EC +:10426000F5FB49E1249B13F00402884B884908BF01 +:104270000B46002A14BF0422032224990391239998 +:104280000291019200935B4652460C990798FFF702 +:10429000DDFB31E1249B0493239B03930296CDE93C +:1042A00000895B4652460C990798FFF765FD23E1AC +:1042B00042464B4600200021FCF76CFE80468946B2 +:1042C00001230D939DE7062640464946FDF7B4FAC3 +:1042D0000546704B03EBC603D3E90023CDE9082361 +:1042E000FCF7A6FF02460B4640464946FCF752FE45 +:1042F000DDE90823FDF706F802460B46CDE90A235F +:10430000FDF7C2FA0746FCF783FF02460B46DDE9DC +:104310000A01FCF73FFE02460B46CDE90A230022C4 +:104320005D4BFDF77FFA60B301373846FCF770FF4D +:1043300002460B46DDE90801FDF760FA08B10135D8 +:104340000027002E71D12846FCF772FF02460B466B +:1043500040464946FCF71EFE06460F4600224E4BDD +:10436000FDF742FA30B100224B4B30463946FDF79B +:1043700059FA70B315F0010F2BD0013529E0002454 +:10438000A2E70022444BDDE90A01FDF72DFA0028DF +:10439000D7D117B117F0010FD3D00137D1E71F29BB +:1043A00000F2AD80BCF1000F3DD00EAB1A190C46E7 +:1043B0003020013402F8010F202C0AD0E3430B44D3 +:1043C000F342F6D104F158036B442E2203F8202C5B +:1043D000013404F158030DEB0302213A2F491F2C3D +:1043E00078D8013481FB0530EB17C3EBA00303EB56 +:1043F0008300A5EB4005303502F8015F1D46002B18 +:10440000EDD1249B03F00303012B2AD01F2C66D887 +:104410000D9B002B46D004F158036B442D2203F86A +:10442000202C01345BE00C46CCE704F158030DEB83 +:1044300003002138DFF868E01F2CCAD806F1FF3CE2 +:10444000611CAEFB0732D20802EB8203A7EB4303E9 +:10445000303300F8013F092FA1D9664617460C46B4 +:10446000EAE7239B002BD1D04EE000BFAFF30080E2 +:104470000000000065CDCD410000000065CDCDC13C +:10448000FFFFEF7F180E00021C0E00020C0E000250 +:10449000140E0002280E00020000E03F6766666608 +:1044A000CDCCCCCC249B13F0040F07D004F15803DF +:1044B0006B442B2203F8202C013410E0249B13F0D2 +:1044C000080F0CD004F158036B44202203F8202C71 +:1044D000013404E0249B03F00303012B11D0249B3F +:1044E0000393239B029301940EAB00935B465246C9 +:1044F0000C990798FFF7AAFA17B0BDE8F08F0C46A1 +:1045000067E7239B002BEAD00D9B1BB9249B13F07C +:104510000C0F02D0239B013B2393239BA3427FF6E6 +:1045200075AF1F2C3FF672AF04F158036B44213B6B +:1045300030222399013403F8012F8C42BFF466AF77 +:104540001F2CF7D962E700BF00B9704708B5FDF727 +:104550006FFF08BD2DE9F04F91B017461C46DDF8FE +:104560006880B1F100098C4B14BF82469A462078CE +:10457000002800F0FA824FF0000B65E1621C4FF05A +:10458000000C144612F8013BA3F1200110290AD8AF +:10459000DFE801F02E090931090909090909092B88 +:1045A000092809092500A3F13002D2B2092A25D928 +:1045B0002A2B31D0002523782E2B37D000262378C4 +:1045C000683B122B6ED8DFE803F05F6DC96D546D48 +:1045D0006D6D6D6D6D6D6A6D6D6D6D6DCD004CF0B9 +:1045E000010CCEE74CF0020CCBE74CF0040CC8E712 +:1045F0004CF0080CC5E74CF0100CC2E7002505EBA9 +:10460000850503EB4505303D14F8013FA3F1300269 +:10461000D2B2092AF3D9CEE758F8045B002D01DBAA +:104620000134C8E74CF0020C6D42F9E74CF4806CA1 +:10463000611C6378A3F13002D2B2092A04D92A2B73 +:1046400011D00C460026BAE7002606EB860603EBDF +:104650004606303E11F8013FA3F13002D2B2092ADA +:10466000F3D90C46ABE758F8046B26EAE676023439 +:10467000A5E763786C2B03D04CF4807C013411E007 +:104680004CF4407C02340DE06378682B03D04CF08E +:10469000800C013406E04CF0C00C023402E04CF413 +:1046A000807C01342078A0F12503532B00F2548242 +:1046B000DFE813F048025202520252025202520242 +:1046C000520252025202520252025202520252024A +:1046D000520252025202520252025202520252023A +:1046E000520252025202520252025202520252022A +:1046F000520252025F0146015F015202520252020F +:104700005202520252025202520252025202520209 +:10471000520252025202520252025C0052025202F1 +:1047200052025202520252025202520252025C00E1 +:1047300080015C005F0146015F0152025C00520291 +:1047400052025202520252025C00320252025202E1 +:10475000BA0152025C00520252025C004CF4007C2E +:1047600001349FE74CF4807C01349BE700F0DF03C9 +:10477000582B13D06F2800F01382622800F01382A8 +:104780002CF0100C0A23692801D0642837D11CF4BE +:10479000806F0FD00CE000BF4B3A000258282CD19C +:1047A0004CF02002102322F00C0C12F4806F05D084 +:1047B0002CF0010C692824D0642822D01CF4007F3E +:1047C00040F08D801CF4807F40F0A1801CF0400FF1 +:1047D00000F0AF8058F8042BD2B2CDF814C0049585 +:1047E000039602930023019300923B465A464946A2 +:1047F0005046FFF721FA834621E01023C3E76246C3 +:10480000D1E71CF4007F2BD11CF4807F4BD11CF02E +:10481000400F5DD058F8042BD2B2CDF814C00495E7 +:1048200003960293D30F0193002AB8BF524200921D +:104830003B465A4649465046FFF7FEF98346013447 +:104840002078002800F0938125283FF497AE0BF1E3 +:1048500001053B465A464946D0470134AB46EFE78F +:1048600008F1070121F00701884658F8082B49682C +:10487000CDF820C007950696049300230593CB0F2F +:10488000029313460A46002909DB009301923B4636 +:104890005A4649465046FFF714FA8346CFE75B4233 +:1048A00061EB4102F1E758F8042BCDF814C00495F0 +:1048B00003960293D30F0193002AB8BF524200928D +:1048C0003B465A4649465046FFF7B6F98346B6E797 +:1048D0001CF0800F58F8042B18BF12B29DE708F1A6 +:1048E000070828F00708CDF820C007950696002293 +:1048F000049305920292F8E80223CDE900233B4697 +:104900005A4649465046FFF7DCF9834697E7CDF80B +:1049100014C00495039602930023019358F8043BB6 +:1049200000933B465A4649465046FFF785F9834671 +:1049300085E71CF0800F58F8042B18BF92B24CE7A3 +:10494000462808BF4CF0200C08F1070828F007089B +:10495000CDF810C003950296F8E80223CDE90023B4 +:104960003B465A4649465046FFF70AFC8346013407 +:1049700066E700F0DF03472B08BF4CF4006C00F043 +:10498000FD00452808BF4CF0200C08F1070828F06E +:104990000708CDF810C003950296F8E80223CDE988 +:1049A00000233B465A4649465046FFF7E5F9834601 +:1049B000013445E71CF0020F1BD043460BF1010602 +:1049C00053F8040B0B933B465A464946C0B2D047B6 +:1049D000012D40F2D98005EB0B08324601363B46EB +:1049E00049462020D0474645F7D1AB44DDF82C801E +:1049F00018E0012D40F2CC800BF1FF331D4420263E +:104A00005A460BF1010B3B4649463046D047AB4571 +:104A1000F6D105F1010B58F8040B3B462A464946EE +:104A2000C0B2D04701340BE7434653F8048B0C93D4 +:104A3000002E14BF31464FF0FF3198F800000028D7 +:104A400000F0AC80434613F8012F1AB1A8EB030223 +:104A5000CA42F8D1A3EB08030B931CF480620D92B9 +:104A600003D0B34228BF33460B931CF002030E93CE +:104A700006D0002800F08E805A460F950D9D29E043 +:104A80000B9A531C954240F2878005EB0B039B1A4F +:104A90000F93CDF82C8098465A460BF1010B3B46FC +:104AA00049462020D047C345F6D1DDF82C806B1C49 +:104AB0000B93DDF83CB098F800000028DCD114E03E +:104AC0001E4602F1010B3B464946D04718F8010F3C +:104AD00040B15A46002DF4D0731E002EF0D10F9D28 +:104AE000934600E00F9D0E9B1BB90134DDF830802A +:104AF000A6E65E460B9B9D420CD93544A5EB030B05 +:104B00002025324601363B4649462846D047B34524 +:104B1000F7D1EAE7B346E8E74CF021030593082311 +:104B200004930396102302930023019358F8043B47 +:104B300000933B465A4649465046FFF77DF8834668 +:104B400001347DE60BF101053B465A4649462520D6 +:104B5000D0470134AB4673E60BF101053B465A469C +:104B60004946D0470134AB466AE64FF0000B5F453B +:104B700094BF07F1FF325A463B4649460020D047D2 +:104B8000584611B0BDE8F08FDDF82C80B34649E7F8 +:104B90005D463EE75E46ADE70B938CE7434659E73B +:104BA00008236246FFE50223FBE700BF0FB400B510 +:104BB00085B006AA52F8043B039200924FF0FF32F0 +:104BC00002A90448FFF7C6FC05B05DF804EB04B089 +:084BD000704700BF49450002D7 +:084BD8001CD2FF7F0100000068 +:104BE00001000000A0000220580C0002380C000256 +:0C4BF0000B01030090000220006CDC02AE +:0400000502000F31B5 +:00000001FF diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/hello.s19 b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/hello.s19 new file mode 100644 index 0000000..cbb70a2 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/hello.s19 @@ -0,0 +1 @@ +S21200C1F048656C6C6F2C20576F726C6421001F \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/hexParse.spec.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/hexParse.spec.ts new file mode 100644 index 0000000..2fe2ff8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/hexParse.spec.ts @@ -0,0 +1,35 @@ +import { describe, it, expect } from 'vitest' +import { HexMemoryMap } from '../../src/main/worker/utli' +import path from 'path' +import fs from 'fs' + +describe('HexMemoryMap', () => { + describe('fromHex', () => { + it('should parse a simple hex file correctly', () => { + const hexString = ':100000000102030405060708090A0B0C0D0E0F1068\n' + ':00000001FF' + + const memMap = HexMemoryMap.fromHex(hexString) + + // 检查解析后的数据块 + const data = memMap.get(0) + expect(data).toBeDefined() + expect(data instanceof Uint8Array).toBe(true) + expect(data!.length).toBe(16) + expect([...data!]).toEqual([ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10 + ]) + }) + it('parse a hex file with multiple blocks correctly', () => { + const hexString = fs.readFileSync(path.resolve(__dirname, './Hello_World.hex'), 'utf-8') + const memMap = HexMemoryMap.fromHex(hexString) + expect(memMap.get(33554432)).toBeDefined() + expect(memMap.get(33556480)).toBeDefined() + expect(memMap.get(33557504)).toBeDefined() + }) + it('high address', () => { + const hexString = fs.readFileSync(path.resolve(__dirname, './high.hex'), 'utf-8') + const memMap = HexMemoryMap.fromHex(hexString) + }) + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/high.hex b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/high.hex new file mode 100644 index 0000000..3907f59 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/high.hex @@ -0,0 +1,1100 @@ +:0200000480007A +:100000005AA55AA50104000030000002FFFFFFFFBF +:1000100000080002FFFFFFFFFFFFFFFFFFFFFFFFE2 +:10002000FFFFFFFFFFFFFFFFC0D401000000000043 +:10003000DDEFBEAC020100006800000258000002C3 +:1000400000000000000000000000000000000000B0 +:100050000000000000000000A55A0002000A000293 +:100060000002000080000002A55A00010008000202 +:1000700000020000900000020000000000000000EC +:100080000000000000000000000000000000000070 +:100090000000000000000000000000000000000060 +:1008000000040020310F0002AB220002AD220002E2 +:10081000AF220002B1220002B3220002A92200028C +:10082000A9220002A9220002A9220002B522000288 +:10083000B7220002A9220002B9220002013A0002F6 +:10084000FF30000209310002133100021D310002A5 +:1008500027310002313100023B31000245310002F4 +:100860004F31000259310002633100026D31000244 +:1008700077310002813100028B3100029531000294 +:100880009F310002A9310002B3310002BD310002E4 +:10089000C7310002D1310002DB310002E531000234 +:1008A000EF310002F9310002033200020D32000282 +:1008B00017320002213200022B32000235320002D0 +:1008C0003F320002BB220002BD220002BF22000212 +:1008D000C1220002C3220002C5220002A922000296 +:1008E000C7220002C9220002CB220002CD22000250 +:1008F000CF220002D1220002A9220002D32200024C +:10090000A9220002D5220002A9220002D722000259 +:10091000A9220002D9220002DB220002DD2200020D +:10092000DF220002A9220002E1220002A922000225 +:10093000E3220002E5220002E7220002E92200028F +:10094000EB220002ED220002EF220002F12200025F +:10095000F3220002F5220002F7220002F92200022F +:10096000FB220002FD220002FF22000201230002FE +:100970000323000205230002A9220002A92200028B +:10098000A9220002A922000207230002A9220002D4 +:10099000092300020B2300020D2300020F23000293 +:1009A0001123000213230002152300021723000263 +:1009B000192300021B2300021D2300021F23000233 +:1009C0002123000223230002252300022723000203 +:1009D000292300022B2300022D2300022F230002D3 +:1009E00031230002332300023523000237230002A3 +:1009F000392300023B2300023D2300023F23000273 +:100A00004123000243230002452300024723000242 +:100A1000492300024B2300024D2300024F23000212 +:100A200051230002532300025523000257230002E2 +:100A3000592300025B2300025D2300025F230002B2 +:100A40006123000263230002652300026723000282 +:100A5000692300026B2300026D2300026F23000252 +:100A60007123000273230002752300027723000222 +:100A7000792300027B2300027D2300027F230002F2 +:100A800081230002832300028523000287230002C2 +:100A9000892300028B2300028D2300028F23000292 +:100AA00091230002A9220002A9220002A922000229 +:100AB000A92200029323000295230002972300023B +:100AC000992300029B2300029D2300029F23000222 +:100AD000A1230002A3230002A5230002A7230002F2 +:100AE000A9230002AB230002AD230002AF230002C2 +:100AF000B1230002B3230002B5230002B723000292 +:100B0000B9230002BB230002BD230002BF23000261 +:100B1000C1230002C3230002C5230002C723000231 +:100B2000C9230002CB230002CD230002CF23000201 +:100B3000D1230002D3230002D5230002D7230002D1 +:100B4000D9230002DB230002DD230002DF230002A1 +:100B5000E1230002E3230002E5230002E723000271 +:100B6000A9220002E9230002EB230002ED23000288 +:100B7000EF230002F1230002F3230002A922000266 +:100B8000F5230002A9220002F7230002F923000244 +:100B9000FB230002FD230002FF23000201240002C8 +:100BA000A9220002A9220002032400020524000257 +:100BB00007240002092400020B2400020D24000275 +:100BC0000F24000211240002132400021524000245 +:040BD00017240002E4 +:100C000031313A34393A303600000000446563200F +:100C100032322032303234004275696C64202573E0 +:100C20002025730A0000000048656C6C6F20576F28 +:100C3000726C64210D0A000001010000A0028A010B +:100C40000101000000050003010100006A0A4006DE +:100C5000010100004001C00001010101000100008C +:100C60000100050000366E010000000000000000D9 +:100C700000800000010032030001010200000105B4 +:100C80000040054002000000000000000A000000D3 +:100C90000000000000430440000000000040054048 +:100CA00003000000000000000A0000000000000037 +:100CB000004304400000000000040000E04B00027C +:100CC000E04B00020100000090000220E04B000217 +:100CD000FC4B00020100000000C201000000000106 +:100CE0000101000008000F001100120013001400A1 +:100CF000150016001B001C001D001E001F00200018 +:100D000021002200230024002500260027002800BF +:100D100029002A002B002C002D002E002F0030006F +:100D200031003400350036003700380039003A0011 +:100D30003B0040004100430044004600470048009B +:100D400049004A004B004C004D004E00510052003B +:100D5000530054005500580059005A005B005C00D5 +:100D60005D006000620065006600670068006A0060 +:100D700070007100720073007400770079007B00CE +:100D80007C007E007F008000810082008300840060 +:100D900085008600870088008900000000C00640AA +:100DA00000000740004007400080074000C00740A7 +:100DB00000000840004008400080084000C0084093 +:100DC0000000094008090A0B0C0D0E0F101100005D +:100DD0002D002F003100A500A600A700C000C10013 +:100DE000C200C30099390002A3390002AD390002E4 +:100DF000B7390002C1390002CB39000200000000FF +:100E0000000000000000000000000000666E692B7A +:100E100000000000666E69006E616E00666E692DEE +:100E20000000000000000000000000000000F03F93 +:100E300000000000000024400000000000005940B5 +:100E40000000000000408F40000000000088C34008 +:100E500000000000006AF8400000000080842E417D +:100E600000000000D01263410000000084D79741C9 +:100E70000000000065CDCD4122490C684FF0010310 +:100E80001C40DFF884B0DBF8000040F00700CBF82E +:100E90000000DFF878B0DBF8000040F00700CBF886 +:100EA00000001B491B4A521A013A06DD4FF05A3026 +:100EB0004FF05A3309C1083AFCDA1749174A521A57 +:100EC000013A06DD4FF05A304FF05A3309C1083A63 +:100ED000FCDA1349134A521A013A06DD4FF05A3030 +:100EE0004FF05A3309C1083AFCDA0F490F4A521A37 +:100EF000013A06DD4FF05A304FF05A3309C1083A33 +:100F0000FCDA704700C01F4090EF00E094EF00E073 +:100F10000000000000040000000400000080000049 +:100F20000000002000000220000002200000062037 +:100F300072B64FF000014FF000024FF000034FF087 +:100F400000044FF000054FF000064FF00007B846D0 +:100F5000B946BA46BB46BC46FFF78EFF06488546F3 +:100F6000064880470648804706488047064880472D +:100F700062B601F0A9F8FEE7000400206521000236 +:100F800071220002D53900026D22000281F0004179 +:100F900002E000BF83F0004330B54FEA41044FEA5E +:100FA000430594EA050F08BF90EA020F1FBF54EAF9 +:100FB000000C55EA020C7FEA645C7FEA655C00F095 +:100FC000E2804FEA5454D4EB5555B8BF6D420CDD66 +:100FD0002C4480EA020281EA030382EA000083EAE9 +:100FE000010180EA020281EA0303362D88BF30BD89 +:100FF00011F0004F4FEA01314FF4801C4CEA1131DF +:1010000002D0404261EB410113F0004F4FEA03333D +:101010004CEA133302D0524263EB430394EA050FC8 +:1010200000F0A780A4F10104D5F1200E0DDB02FA37 +:101030000EFC22FA05F2801841F1000103FA0EF2CB +:10104000801843FA05F359410EE0A5F120050EF191 +:10105000200E012A03FA0EFC28BF4CF0020C43FAC2 +:1010600005F3C01851EBE37101F0004507D54FF0CF +:10107000000EDCF1000C7EEB00006EEB0101B1F51F +:10108000801F1BD3B1F5001F0CD349085FEA300065 +:101090004FEA3C0C04F101044FEA445212F5800F70 +:1010A00080F09A80BCF1004F08BF5FEA500C50F10D +:1010B000000041EB045141EA050130BD5FEA4C0CF0 +:1010C000404141EB0101013C28BFB1F5801FE9D24D +:1010D00091F0000F04BF01460020B1FA81F308BF70 +:1010E0002033A3F10B03B3F120020CDA0C3208DD3C +:1010F00002F1140CC2F10C0201FA0CF021FA02F117 +:101100000CE002F11402D8BFC2F1200C01FA02F186 +:1011100020FA0CFCDCBF41EA0C019040E41AA2BFAB +:1011200001EB0451294330BD6FEA04041F3C1CDA73 +:101130000C340EDC04F11404C4F1200220FA04F093 +:1011400001FA02F340EA030021FA04F345EA03013D +:1011500030BDC4F10C04C4F1200220FA02F001FAFF +:1011600004F340EA0300294630BD21FA04F0294681 +:1011700030BD94F0000F83F4801306BF81F480111A +:101180000134013D4EE77FEA645C18BF7FEA655C8D +:1011900029D094EA050F08BF90EA020F05D054EA5F +:1011A000000C04BF1946104630BD91EA030F1EBF64 +:1011B0000021002030BD5FEA545C05D14000494168 +:1011C00028BF41F0004130BD14F580043CBF01F55B +:1011D000801130BD01F0004545F0FE4141F4700141 +:1011E0004FF0000030BD7FEA645C1ABF194610461C +:1011F0007FEA655C1CBF0B46024650EA013406BF1D +:1012000052EA033591EA030F41F4002130BD00BFDB +:1012100090F0000F04BF0021704730B54FF4806498 +:1012200004F132044FF000054FF0000150E700BF19 +:1012300090F0000F04BF0021704730B54FF4806478 +:1012400004F1320410F0004548BF40424FF0000165 +:101250003EE700BF42004FEAE2014FEA31014FEAA8 +:1012600002701FBF12F07F4393F07F4F81F06051F7 +:10127000704732F07F4208BF704793F07F4F04BF42 +:1012800041F40021704730B54FF4607401F000451F +:1012900021F000411CE700BF50EA010208BF70477F +:1012A00030B54FF000050AE050EA010208BF704770 +:1012B00030B511F0004502D5404261EB41014FF4D9 +:1012C000806404F132045FEA915C3FF4D8AE4FF0E1 +:1012D00003025FEADC0C18BF03325FEADC0C18BFC4 +:1012E000033202EBDC02C2F1200300FA03FC20FA15 +:1012F00002F001FA03FE40EA0E0021FA02F1144462 +:10130000BDE600BF70B54FF0FF0C4CF4E06C1CEA7A +:1013100011541DBF1CEA135594EA0C0F95EA0C0FEB +:1013200000F0DEF82C4481EA030621EA4C5123EA5E +:101330004C5350EA013518BF52EA033541F480118D +:1013400043F4801338D0A0FB02CE4FF00005E1FB40 +:1013500002E506F00042E0FB03E54FF00006E1FB8A +:1013600003569CF0000F18BF4EF0010EA4F1FF04CD +:10137000B6F5007F64F5407404D25FEA4E0E6D410D +:1013800046EB060642EAC62141EA55514FEAC5201E +:1013900040EA5E504FEACE2EB4F1FD0C88BFBCF59A +:1013A000E06F1ED8BEF1004F08BF5FEA500E50F14B +:1013B000000041EB045170BD06F0004646EA010111 +:1013C00040EA020081EA0301B4EB5C04C2BFD4EB43 +:1013D0000C0541EA045170BD41F480114FF0000E3C +:1013E000013C00F3AB8014F1360FDEBF002001F0AA +:1013F000004170BDC4F10004203C35DA0C341BDC24 +:1014000004F11404C4F1200500FA05F320FA04F0F5 +:1014100001FA05F240EA020001F0004221F0004129 +:1014200010EBD37021FA04F642EB06015EEA430E9C +:1014300008BF20EAD37070BDC4F10C04C4F12005CC +:1014400000FA04F320FA05F001FA04F240EA02007F +:1014500001F0004110EBD37041F100015EEA430E50 +:1014600008BF20EAD37070BDC4F1200500FA05F270 +:101470004EEA020E20FA04F301FA05F243EA0203EF +:1014800021FA04F001F0004121FA04F220EA0200FE +:1014900000EBD3705EEA430E08BF20EAD37070BD44 +:1014A00094F0000F0FD101F00046400041EB010124 +:1014B00011F4801F08BF013CF7D041EA060195F006 +:1014C000000F18BF704703F00046520043EB0303C0 +:1014D00013F4801F08BF013DF7D043EA06037047AD +:1014E00094EA0C0F0CEA135518BF95EA0C0F0CD0B8 +:1014F00050EA410618BF52EA4306D1D181EA0301FE +:1015000001F000414FF0000070BD50EA410606BFF7 +:101510001046194652EA430619D094EA0C0F02D13C +:1015200050EA013613D195EA0C0F05D152EA033681 +:101530001CBF104619460AD181EA030101F000419F +:1015400041F0FE4141F470014FF0000070BD41F0E8 +:10155000FE4141F4780170BD70B54FF0FF0C4CF4C2 +:10156000E06C1CEA11541DBF1CEA135594EA0C0FE1 +:1015700095EA0C0F00F0A7F8A4EB050481EA030E2E +:1015800052EA03354FEA013100F088804FEA033315 +:101590004FF0805545EA131343EA12634FEA0222E3 +:1015A00045EA111545EA10654FEA00260EF00041A4 +:1015B0009D4208BF964244F1FD0404F5407402D2F6 +:1015C0005B084FEA3202B61A65EB03055B084FEA87 +:1015D00032024FF480104FF4002CB6EB020E75EB84 +:1015E000030E22BFB61A754640EA0C005B084FEAAC +:1015F0003202B6EB020E75EB030E22BFB61A754629 +:1016000040EA5C005B084FEA3202B6EB020E75EB73 +:10161000030E22BFB61A754640EA9C005B084FEAEB +:101620003202B6EB020E75EB030E22BFB61A7546F8 +:1016300040EADC0055EA060E18D04FEA051545EAE7 +:1016400016754FEA06164FEAC30343EA52734FEA90 +:10165000C2025FEA1C1CC0D111F4801F0BD141EA09 +:1016600000014FF000004FF0004CB6E711F4801F6E +:1016700004BF01430020B4F1FD0C88BFBCF5E06F4E +:101680003FF6AFAEB5EB030C04BFB6EB020C5FEA5E +:10169000500C50F1000041EB045170BD0EF0004EB3 +:1016A0004EEA113114EB5C04C2BFD4EB0C0541EAE5 +:1016B000045170BD41F480114FF0000E013C90E6E2 +:1016C00045EA060E8DE60CEA135594EA0C0F08BFA6 +:1016D00095EA0C0F3FF43BAF94EA0C0F0AD150EAA5 +:1016E00001347FF434AF95EA0C0F7FF425AF104638 +:1016F00019462CE795EA0C0F06D152EA03353FF460 +:10170000FDAE1046194622E750EA410618BF52EADC +:1017100043067FF4C5AE50EA41047FF40DAF52EAB0 +:1017200043057FF4EBAE12E74FF0FF3C06E000BF4D +:101730004FF0010C02E000BF4FF0010C4DF804CD5A +:101740004FEA410C7FEA6C5C4FEA430C18BF7FEA1A +:101750006C5C1BD001B050EA410C0CBF52EA430C48 +:1017600091EA030F02BF90EA020F0020704710F1C8 +:10177000000F91EA030F58BF994208BF90422CBF57 +:10178000D8176FEAE37040F0010070474FEA410C50 +:101790007FEA6C5C02D150EA013C07D14FEA430C6E +:1017A0007FEA6C5CD6D152EA033CD3D05DF8040BDF +:1017B000704700BF8446104662468C461946634611 +:1017C00000E000BF01B5FFF7B7FF002848BF10F1E8 +:1017D000000F01BD4DF808EDFFF7F4FF0CBF01202D +:1017E00000205DF808FB00BF4DF808EDFFF7EAFFA9 +:1017F00034BF012000205DF808FB00BF4DF808ED64 +:10180000FFF7E0FF94BF012000205DF808FB00BF58 +:101810004DF808EDFFF7CEFF94BF012000205DF8E2 +:1018200008FB00BF4DF808EDFFF7C4FF34BF0120EF +:1018300000205DF808FB00BF4FEA410212F50012DC +:1018400015D211D56FF47873B3EB625212D94FEA07 +:10185000C12343F0004343EA505311F0004F23FAF1 +:1018600002F018BF404270474FF00000704750EA46 +:10187000013005D111F0004008BF6FF00040704703 +:101880004FF00000704700BF4A0011D212F500125D +:1018900011D20DD56FF47873B3EB62520ED44FEAC8 +:1018A000C12343F0004343EA505323FA02F0704748 +:1018B0004FF00000704750EA013002D14FF0FF3086 +:1018C00070474FF00000704780F0004002E000BF1A +:1018D00081F0004142001FBF5FEA410392EA030F1B +:1018E0007FEA226C7FEA236C6AD04FEA1262D2EB65 +:1018F0001363C1BFD218414048404140B8BF5B426A +:10190000192B88BF704710F0004F40F4000020F002 +:101910007F4018BF404211F0004F41F4000121F018 +:101920007F4118BF494292EA030F3FD0A2F1010262 +:1019300041FA03FC10EB0C00C3F1200301FA03F1A0 +:1019400000F0004302D5494260EB4000B0F5000FC3 +:1019500013D3B0F1807F06D340084FEA310102F182 +:101960000102FE2A51D2B1F1004F40EBC25008BF34 +:1019700020F0010040EA03007047490040EB0000FE +:10198000013A28BFB0F5000FEDD2B0FA80FCACF1FF +:10199000080CB2EB0C0200FA0CF0AABF00EBC2502C +:1019A00052421843BCBFD0401843704792F0000F1A +:1019B00081F4000106BF80F400000132013BB5E76D +:1019C0004FEA41037FEA226C18BF7FEA236C21D0E3 +:1019D00092EA030F04D092F0000F08BF0846704748 +:1019E00090EA010F1CBF0020704712F07F4F04D116 +:1019F000400028BF40F00040704712F100723CBF29 +:101A000000F50000704700F0004343F0FE4040F452 +:101A1000000070477FEA226216BF08467FEA236310 +:101A20000146420206BF5FEA412390EA010F40F4FB +:101A3000800070474FF0000304E000BF10F0004347 +:101A400048BF40425FEA000C08BF704743F096432E +:101A500001464FF000001CE050EA010208BF704749 +:101A60004FF000030AE000BF50EA010208BF7047D0 +:101A700011F0004302D5404261EB41015FEA010CE5 +:101A800002BF84460146002043F0B64308BFA3F1DD +:101A90008053A3F50003BCFA8CF2083AA3EBC253BF +:101AA00010DB01FA02FC634400FA02FCC2F12002DE +:101AB000BCF1004F20FA02F243EB020008BF20F015 +:101AC0000100704702F1200201FA02FCC2F120027B +:101AD00050EA4C0021FA02F243EB020008BF20EA70 +:101AE000DC7070474FF0FF0C1CEAD0521EBF1CEA9E +:101AF000D15392EA0C0F93EA0C0F6FD01A4480EA8C +:101B0000010C400218BF5FEA41211ED04FF0006374 +:101B100043EA501043EA5111A0FB01310CF00040A0 +:101B2000B1F5000F3EBF490041EAD3715B0040EAC6 +:101B3000010062F17F02FD2A1DD8B3F1004F40EB96 +:101B4000C25008BF20F00100704790F0000F0CF069 +:101B5000004C08BF49024CEA502040EA51207F3A2D +:101B6000C2BFD2F1FF0340EAC250704740F4000008 +:101B70004FF00003013A5DDC12F1190FDCBF00F0F9 +:101B800000407047C2F10002410021FA02F1C2F1A7 +:101B9000200200FA02FC5FEA310040F1000053EA43 +:101BA0004C0308BF20EADC70704792F0000F00F091 +:101BB000004C02BF400010F4000F013AF9D040EA97 +:101BC0000C0093F0000F01F0004C02BF490011F42B +:101BD000000F013BF9D041EA0C018FE70CEAD15329 +:101BE00092EA0C0F18BF93EA0C0F0AD030F0004CA9 +:101BF00018BF31F0004CD8D180EA010000F000405D +:101C0000704790F0000F17BF90F0004F084691F01A +:101C1000000F91F0004F14D092EA0C0F01D1420254 +:101C20000FD193EA0C0F03D14B0218BF084608D11D +:101C300080EA010000F0004040F0FE4040F4000067 +:101C4000704740F0FE4040F4400070474FF0FF0CFA +:101C50001CEAD0521EBF1CEAD15392EA0C0F93EA41 +:101C60000C0F69D0A2EB030280EA010C49024FEA93 +:101C7000402037D04FF0805343EA111143EA10134C +:101C80000CF000408B4238BF5B0042F17D024FF404 +:101C9000000C8B4224BF5B1A40EA0C00B3EB510FDF +:101CA00024BFA3EB510340EA5C00B3EB910F24BFC8 +:101CB000A3EB910340EA9C00B3EBD10F24BFA3EB4D +:101CC000D10340EADC001B0118BF5FEA1C1CE0D115 +:101CD000FD2A3FF650AF8B4240EBC25008BF20F0C8 +:101CE000010070470CF0004C4CEA50207F32C2BF1C +:101CF000D2F1FF0340EAC250704740F400004FF0B9 +:101D00000003013A37E792F0000F00F0004C02BFE9 +:101D1000400010F4000F013AF9D040EA0C0093F0B3 +:101D2000000F01F0004C02BF490011F4000F013B0D +:101D3000F9D041EA0C0195E70CEAD15392EA0C0F75 +:101D400008D142027FF47DAF93EA0C0F7FF470AFAD +:101D5000084676E793EA0C0F04D14B023FF44CAFF0 +:101D600008466EE730F0004C18BF31F0004CCAD185 +:101D700030F000427FF45CAF31F000437FF43CAFC1 +:101D80005FE700BF42000ED2B2F1FE4F0BD34FF01F +:101D90009E03B3EB126209D44FEA002343F00043E1 +:101DA00023FA02F070474FF00000704712F1610F04 +:101DB00001D1420202D14FF0FF3070474FF00000D6 +:101DC000704700BF53B94AB9002908BF00281CBF9B +:101DD0004FF0FF314FF0FF3000F074B9ADF1080C57 +:101DE0006DE904CE00F006F8DDF804E0DDE9022339 +:101DF00004B070472DE9F047089E0D46044688461A +:101E0000002B4DD18A42944668D9B2FA82F252B17F +:101E100001FA02F3C2F1200120FA01F10CFA02FCEE +:101E200041EA030894404FEA1C45210CB8FBF5FE3B +:101E30001FFA8CF705FB1E8341EA03430EFB07F1F3 +:101E400099420BD91CEB03030EF1FF3080F01E8189 +:101E5000994240F21B81AEF1020E63445B1AA4B2B8 +:101E6000B3FBF5F005FB103344EA034400FB07F72E +:101E7000A7420AD91CEB040400F1FF3380F008816B +:101E8000A74240F2058164440238E41B40EA0E4058 +:101E900000211EB1D4400023C6E90043BDE8F0870D +:101EA0008B4208D9002E00F0EE800021C6E9000523 +:101EB0000846BDE8F087B3FA83F100294AD1AB4266 +:101EC00002D3824200F2F980841A65EB03030120F9 +:101ED0009846002EE2D0C6E90048DFE702B9FFDEEF +:101EE000B2FA82F2002A40F09180A1EB0C054FEA91 +:101EF0001C471FFA8CFE0121B5FBF7F307FB1350BB +:101F0000250C45EA00450EFB03F0A84208D91CEB5E +:101F1000050503F1FF3802D2A84200F2CB80434608 +:101F20002D1AA4B2B5FBF7F007FB105544EA05449F +:101F30000EFB00FEA64508D91CEB040400F1FF359A +:101F400002D2A64500F2BB802846A4EB0E0440EA6C +:101F500003409EE7C1F120078B4022FA07FC4CEAC0 +:101F6000030C20FA07F405FA01F31C43FD404FEA85 +:101F70001C4900FA01F3B5FBF9F8200C1FFA8CFE9E +:101F800009FB185540EA054508FB0EF0A84202FA85 +:101F900001F20BD91CEB050508F1FF3A80F08880AF +:101FA000A84240F28580A8F1020865442D1AA4B227 +:101FB000B5FBF9F009FB105544EA054500FB0EFEA0 +:101FC000AE4508D91CEB050500F1FF346CD2AE45D7 +:101FD0006AD90238654440EA0840A0FB0294A5EBA8 +:101FE0000E05A542C846A64656D353D05EB1B3EB04 +:101FF000080265EB0E0505FA07F722FA01F3CD405A +:102000001F43C6E900750021BDE8F087C2F1200337 +:1020100020FA03F10CFA02FC25FA03F395400D4374 +:102020004FEA1C471FFA8CFEB3FBF7F107FB113098 +:102030002B0C43EA004301FB0EF0984204FA02F431 +:1020400008D91CEB030301F1FF382FD298422DD998 +:10205000023963441B1AADB2B3FBF7F007FB103330 +:1020600045EA034500FB0EF3AB4208D91CEB05051E +:1020700000F1FF3816D2AB4214D902386544ED1A8C +:1020800040EA014138E73146304607E78646E5E653 +:102090001846FAE64B45A9D2B9EB020864EB0C0EE0 +:1020A0000138A3E74046EAE7204694E74146D1E7F6 +:1020B000D0467BE7023B654432E7084609E76444C3 +:1020C000023842E7704700BF30B583B00023144A9E +:1020D0000121144800F0E6FA0021084600F0C8FD8E +:1020E0001149022000F044FE00F096F90F4A104911 +:1020F000104802F05BFD104802F058FD00F020F897 +:1021000000250E4C00F027F80195019BA342F9DC55 +:10211000019B01330193019BA342F9DDF2E700BF6C +:1021200000000220A4000220800C0002000C00022B +:102130000C0C0002180C0002280C00023F420F0099 +:1021400008B501220021084600F022FE01210020EE +:1021500000F029FE08BD08B50121002000F025FE91 +:1021600008BD0000F0B583B03B4B1D680023009311 +:1021700002230093009B002B40D005F00105374C53 +:102180004FF0000C06E063B90CF1010C009B103419 +:10219000634533D92246237B022BF4D1002DF2D1A3 +:1021A000F2E75668116893689B1B03F003028DF8F1 +:1021B00007209DF807209B1A5FEA930E09D0331F72 +:1021C0000A1F03EB8E0753F8040F42F8040FBB42BB +:1021D000F9D14FEA8E039DF80720002AD4D0F218D7 +:1021E000581E0144164612F8013B01F8013F9DF8C4 +:1021F0000730DBB2901B8342F5D8C5E7012300937B +:10220000009B33B3164C174A121B02F003038DF8E0 +:1022100007309DF80730D21A920807D004EB8200ED +:102220002346002143F8041B8342FBD192009DF812 +:1022300007306BB10C4810440025034600F8015FDD +:102240009DF80710C9B202331B1B9B1A9942F4D8A0 +:10225000009B03B0F0BD00BF00C01F40B80C0002DF +:102260000000022090000220FFFF012070470000C4 +:102270000A4A0B4B9B1A4FEA930C0A494FF0E02095 +:10228000C0F8081D032B07D9002352F8040B41F8AE +:10229000040B01339C45F8D8704700BF00080002CA +:1022A000D40B000200000000FEE7FEE7FEE7FEE7B9 +:1022B000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7F6 +:1022C000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7E6 +:1022D000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7D6 +:1022E000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7C6 +:1022F000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B6 +:10230000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7A5 +:10231000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE795 +:10232000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE785 +:10233000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE775 +:10234000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE765 +:10235000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE755 +:10236000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE745 +:10237000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE735 +:10238000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE725 +:10239000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE715 +:1023A000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE705 +:1023B000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7F5 +:1023C000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7E5 +:1023D000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7D5 +:1023E000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7C5 +:1023F000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B5 +:10240000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7A4 +:10241000FEE7FEE7FEE7FEE708B5034A03490320AF +:1024200001F098F808BD00BFD80C0002040002209B +:1024300000B583B08DF8070001220DF107010320DC +:1024400001F06EF903B05DF804FB00000A490A6868 +:1024500022F0030200F0030313430B60074A8B686A +:1024600003F00303984204D0013AF8D140F601206A +:1024700070470020704700BF00001F40FFFF1F0093 +:1024800070B4174A9669936923F4706343F48073B8 +:102490009361144D01208446144603E00F2B08BFBE +:1024A0004FF0FF3C00EB0C03D8B25BB2A26812F015 +:1024B000080F10D1013D0BD0A16921F47061020217 +:1024C00002F470620A43A261012BE7D19C46E9E75E +:1024D00040F6062000E00020014B9E6170BC704772 +:1024E00000001F40FFFF1F00114B9B6813F0200FDF +:1024F00007D00F4B1B6A13F0100F07D10D4B1A6852 +:1025000005E0002303604FF4807070470A4A0849D1 +:102510000B6A096AC3F303230133B2FBF3F3C1F37C +:10252000054202FB03335B0803600020704700BFD5 +:1025300000001F405400022000D8B80570B50446C2 +:102540000D4650283BD84F4B13F810604E4C54F8B2 +:10255000263013F0010F0BD054F82630C3F30223BA +:10256000013B042B28D8DFE803F00815191E2300CF +:1025700000230B604FF480700BE0444B0B60002095 +:1025800054F82630C3F3034301332A68B2FBF3F354 +:102590002B6070BD3E4B0B600020F1E73D4B1B688C +:1025A0000B600020ECE73C4B1B680B600020E7E76A +:1025B0000846FFF799FFE3E700200860E0E75628A8 +:1025C00021D8A0F15204042C1AD8DFE804F0030744 +:1025D0000B1015002E4B0B600020DAE72B4B0B6025 +:1025E0000020D6E72B4B1B680B600020D1E72A4B5D +:1025F0001B680B600020CCE70846FFF775FFC8E7B3 +:1026000000200860C5E75A283AD8244B9B6803F09D +:102610000303032B31D8DFE803F00223272C1B4BE5 +:102620000B6000201D4BDB68C3F303435A1C2B686F +:10263000B3FBF2F32B60582CABD0184AD268C2F32C +:1026400003220132B3FBF2F32B605A2CA1D1134ABF +:10265000D26802F00F020132B3FBF2F32B6098E76D +:102660000846FFF741FFDDE70A4B1B680B600020BF +:10267000D8E70B4B0B600020D4E700200860D1E7BF +:10268000002086E7E40C000200401F4000D8B80597 +:10269000C0C62D00540002205800022000001F4038 +:1026A000001BB70010B4044C20602171A26023739A +:1026B0006373002010BC70474400022008B5FFF788 +:1026C0003DFF08BD70B582B0864640B3436833B362 +:1026D000036823B300209C4D9C4CDEF8043013F8B3 +:1026E000203015F813C054F82C3023F0010344F8BF +:1026F0002C30DEF8042002EB800293781B0203F4F6 +:10270000E063D178090401F470210B43527813433C +:1027100044F82C300130DEF800309842DDD3DEF88A +:102720000840002C00F0E881DEF80C50884B0022B5 +:102730001A645A6C5A640320FFF788FE0646002884 +:1027400040F0DB81824B5B6923F002032278002A90 +:1027500014BF0222002213437D4A5361536923F0C0 +:1027600004036278002A14BF042200221343784A2B +:102770005361536923F00803A278002A14BF08228A +:1027800000221343724A5361116921F00101E37879 +:102790000B431361136923F002032279002A14BF4B +:1027A0000222002213436A4A1361D36913F0010F16 +:1027B00042D1D16921F48071637C1B0203F48073E0 +:1027C0000B43D361D36923F01003A17C81F0010195 +:1027D00043EA0113D361D36923F00403E27C002AA6 +:1027E00014BF042200221343594AD361D36923F052 +:1027F0000203227D002A14BF022200221343544AFE +:10280000D361D36923F00803627D002A14BF082234 +:10281000002213434E4AD361D16921F00101237C88 +:102820000B43D361237C1BB1A2694A4B1A6006E0BB +:10283000484B00221A6002E0A269464B1A60002D44 +:1028400064D0AA89424B1A65EA895A651A6CA97A3A +:1028500022F4003242EA41421A641A6C697A22F484 +:10286000007242EA41221A641A6C297A22F00202AA +:1028700042EA41021A64237A002B00F09080344B24 +:10288000996921F47061A27A120202F470620A431B +:102890009A619A6922F48052617A81F0010142EAD8 +:1028A00001329A619A6922F01002617A81F0010185 +:1028B00042EA01129A61996921F00101227A0A43E0 +:1028C0009A61FFF7DDFD0646002833D1E368224A0E +:1028D0001360002D42D0AA8B1D4B1A66EA8B5A66F4 +:1028E0001A6CA97E22F4002242EAC1421A641A6CD0 +:1028F000697E22F4006242EAC1221A641A6C297EBF +:1029000022F0080242EAC1021A6450E0104B4FF470 +:10291000A0621A654FF440725A651A6C22F40032B4 +:102920001A641A6C42F400721A641A6C42F00202C1 +:102930001A64A0E7064A936923F001039361064BEA +:1029400000221A60D9E000BFE40C000200401F40E2 +:1029500000001F4058000220540002208E4AA2FBB3 +:1029600003239B0C03EB8301C9018C4AA2FB0101E9 +:10297000490903EB4303DB01A2FB03235B09884AFC +:1029800011665366136C23F400231364136C43F431 +:1029900000631364136C43F00803136407E0804A78 +:1029A000936923F0010393617E4B00221A60237C1C +:1029B000002B6DD07A4AD16921F48071637C1B02AF +:1029C00003F480730B43D361D36923F01003A17C1C +:1029D00081F0010143EA0113D361D36923F00403B9 +:1029E000E27C002A14BF0422002213436C4AD36104 +:1029F000D36923F00203227D002A14BF02220022A1 +:102A00001343674AD361D16921F00101237C0B4351 +:102A1000D361A269644B1A60614A136A23F001030F +:102A20001362237F002B00F0E480116A21F0100173 +:102A3000637F1B0103F010030B431362116A21F43F +:102A40007C11A37F013B1B0403F47C130B43136233 +:102A5000116A21F47061E37F013B1B0203F4706390 +:102A60000B431362116A21F00101237F0B431362B0 +:102A70004E4B11468A6812F0200F40F09D80013BBA +:102A8000F8D1474B4FF480321A6240F6032634E007 +:102A9000434AD36923F00103D361434B00221A60F8 +:102AA000BAE701A8FFF720FD019B3B4AA2FB0323E5 +:102AB0009B0C03EB8301C901384AA2FB01014909C0 +:102AC00003EB4303DB01A2FB03235B09344A91655B +:102AD000D365136C23F480231364136C43F4806375 +:102AE0001364136C43F00403136482E02C4A136BE9 +:102AF00023F00703136339E00026304602B070BDAF +:102B00006079FFF7A3FC06460028F6D1C5B1AA8874 +:102B1000234B9A64EA88DA641A6CA97822F480322A +:102B200042EA01421A641A6C697822F4807242EA1D +:102B300001221A641A6C22F0010229780A431A64ED +:102B400094F82530002BD1D0154A116B21F00701E4 +:102B500094F8273003F007030B431363136B23F43C +:102B60007F4394F8261043EA0123136301A95A20F6 +:102B7000FFF7A4FD0E490A68019B0748A0FB030369 +:102B8000DB0803F47F0322F47F0213430B6009493F +:102B90005820FFF793FDB0E783DE1B43ABAAAAAA38 +:102BA00000001F405400022058000220FFFF1F00B9 +:102BB00000000440A8000220002D3FF472AFAA8A52 +:102BC000294B9A65EA8ADA651A6CA97C22F480227C +:102BD00042EA81421A641A6C697C22F4806242EAF9 +:102BE00081221A641A6C297C22F0040242EA8102D2 +:102BF0001A641D4A516821F4702194F820301B0496 +:102C000003F470230B435360516821F4706194F80E +:102C100021301B0203F470630B435360516821F0B1 +:102C20000F0194F8223003F00F030B435360A2F519 +:102C3000D812116894F823301B0203F4706321F456 +:102C400070610B431360136843F000431360074B3C +:102C500002F5D812D068516888423FF451AF013B69 +:102C6000F8D140F6032648E700001F40FFFF1F0091 +:102C70002DE9F04182B080460F468DF804008DF8B2 +:102C8000051000F08DF9394A137B537301228DF83A +:102C90000620002B55D00024344D04E001342A7B5B +:102CA000E3B29A424DD9E6B2AB6853F82630002B16 +:102CB000F4D01A79022AF1D01A68996801A89047CD +:102CC0000028EBD06E73002FE8D140F203160023EA +:102CD0008DF80630254B1B7BEBB10024234D25E0FE +:102CE00001342A7BE3B29A4215D95FFA84F8AB68C3 +:102CF00053F82830002BF3D01A79012AF0D01A6843 +:102D0000996801A890470028EAD085F80D80002F27 +:102D1000E6D14FF4827600F035F9304602B0BDE8D6 +:102D2000F08101342A7BE3B29A42F4D9E3B2AA6873 +:102D300052F82330002BF4D01A68996801A8904704 +:102D4000EFE70A4C236853F82800FFF7BBFC84F830 +:102D5000058006460028BAD102238DF80630034BC1 +:102D60001B7B002BD7D00024004DBEE7440002207F +:102D700060B170B506460C460025204600F017F8F5 +:102D800001351C34AE42F8D1002070BD00207047E0 +:102D900043694FF0010C0CFA01FC23EA0C038A4052 +:102DA0001A434261704781607047C160704730B418 +:102DB0000168446851F82430027A012A50D0022A6E +:102DC00053D0002A49D0427A920002F0040223F044 +:102DD00014031343827A43EA0213C27A920102F087 +:102DE000400223F474631343027B120202F4706204 +:102DF000134323F00043427B43EAC27341F824307B +:102E0000037C002B34D10268416852F8213023F44E +:102E1000803342F82130037B012B43D04268436961 +:102E200003EB8203D3F8802022F00F02C3F8802046 +:102E30004368426902EB8302D2F88010837B03F07F +:102E40000F030B43C2F88030C37B23B14269416852 +:102E500001238B40D36130BC704723F00203B2E7FB +:102E600023F0010343F00203ADE743F00303AAE7B5 +:102E70004168026852F8213023F4781342F8213077 +:102E800052F82140437C5B0403F47813234342F857 +:102E900021300268416852F8213043F4803342F80F +:102EA0002130B8E741694B69027E22B1012A08D07E +:102EB00042695361B2E7416801228A4023EA020372 +:102EC000F6E745680124AC4023430A6822EA04047B +:102ED000427EAA4022430A60EAE7000010B5214B77 +:102EE0009B682AB1144600F1100253F82220226098 +:102EF000103043F820101B4B5B6913F4803F30D037 +:102F0000184B0022C3F88420BFF34F8FD3F88030D2 +:102F1000C3F3C904C3F34E334FEA431C43F6E07EC8 +:102F200010480CEA0E01234641EA8372C0F86C2275 +:102F3000013BB3F1FF3FF7D1ACF1200C1CF1200FA6 +:102F4000EFD1BFF34F8FBFF36F8FBFF34F8FBFF33F +:102F50006F8F044B0022C3F85022BFF34F8FBFF393 +:102F60006F8F10BD00ED00E0002808DB420900F083 +:102F70001F00012303FA00F0014B43F822007047C1 +:102F800000E100E0054B1B68002B04DD013B034A18 +:102F90001360002B00DD704762B6FCE75C00022086 +:102FA00072B6024A13680133136070475C00022056 +:102FB00008B50A4B1B6853F8202000F01F000123BE +:102FC00003FA00F0064B586258605B6822B1536800 +:102FD00013B1117B9068984708BD00BF60000220C4 +:102FE0000000024038B5044600F01F0500222946C3 +:102FF0000B4800F047F80B4B1B6853F824306BB1BB +:1030000001221A735A6812B1197B986890470121FE +:10301000A940034B596259605A68D96038BD00BF56 +:10302000000002406000022008B5012200F01F01EC +:10303000024800F027F8002008BD00BF0000024051 +:1030400008B5002200F01F01024800F01BF8002024 +:1030500008BD00BF0000024000F01F004001014B0E +:10306000195070471004024008B50A4600F01F01CD +:10307000014800F017F808BD000002400048704702 +:103080000000024032B18269012303FA01F11143C9 +:10309000816170478369012202FA01F123EA01018B +:1030A0008161704700EB4113B3F81E3413F4004FF5 +:1030B00012D100EB4110B0F81E34C2F30E0203F43B +:1030C00000431343A0F81E34B0F8163403F4004351 +:1030D0001A43A0F81624704700EB4110B0F81E34D4 +:1030E000C2F3080203F47E431343A0F81E34B0F881 +:1030F000163403F47E431A43A0F81624704708B52B +:103100000020FFF755FF08BD08B50120FFF750FF6D +:1031100008BD08B50220FFF74BFF08BD08B5032026 +:10312000FFF746FF08BD08B50420FFF741FF08BDC3 +:1031300008B50520FFF73CFF08BD08B50620FFF7DE +:1031400037FF08BD08B50720FFF732FF08BD08B5F7 +:103150000820FFF72DFF08BD08B50920FFF728FF5D +:1031600008BD08B50A20FFF723FF08BD08B50B20EE +:10317000FFF71EFF08BD08B50C20FFF719FF08BDBB +:1031800008B50D20FFF714FF08BD08B50E20FFF7A6 +:103190000FFF08BD08B50F20FFF70AFF08BD08B5EF +:1031A0001020FFF705FF08BD08B51120FFF700FF4D +:1031B00008BD08B51220FFF7FBFE08BD08B51320B7 +:1031C000FFF7F6FE08BD08B51420FFF7F1FE08BDB5 +:1031D00008B51520FFF7ECFE08BD08B51620FFF76F +:1031E000E7FE08BD08B51720FFF7E2FE08BD08B5E9 +:1031F0001820FFF7DDFE08BD08B51920FFF7D8FE3F +:1032000008BD08B51A20FFF7D3FE08BD08B51B207E +:10321000FFF7CEFE08BD08B51C20FFF7C9FE08BDAC +:1032200008B51D20FFF7C4FE08BD08B51E20FFF736 +:10323000BFFE08BD08B51F20FFF7BAFE08BD38B5B0 +:103240000020FFF71BFFC568002404E06D0801346F +:10325000E4B2202C06D015F0010FF7D02046FFF77E +:10326000C1FEF3E738BD0000154B53F82030154A76 +:1032700052F8201093F83420012A0CD99A68012AB8 +:1032800014D01A6812880A871A6802321A609A687B +:10329000023A9A6070471A68127881F838201A68E2 +:1032A00001321A609A68013A9A6070471A68127877 +:1032B0000A871A6801321A609A68013A9A60704760 +:1032C000640002209C0D0002154B53F82030154A73 +:1032D00052F8201093F83420012A0CD9DA68012A18 +:1032E00014D05A68898F11805A6802325A60DA689D +:1032F000023ADA6070475A6891F83C1011705A68C7 +:1033000001325A60DA68013ADA607047898F5A6888 +:1033100011705A6801325A60DA68013ADA6070470F +:10332000640002209C0D000210B50F4B53F82030B2 +:103330000E4A52F820405A6822F002025A601A6976 +:1033400022F010021A61A37C33B900232374A38FE7 +:103350009BB2022B05D010BD04F1360000F058FBE3 +:10336000F3E70023A387F6E79C0D00026400022028 +:1033700010B50F4B53F820400E4B53F820305A68CD +:1033800022F004025A601A6922F020021A61E37CDA +:1033900033B900236374E38F9BB2022B05D010BDB9 +:1033A00004F1350000F034FBF3E70023E387F6E790 +:1033B000640002209C0D000238B5244B53F82050C5 +:1033C000234B53F8204094F83900FFF739FEE38F80 +:1033D0009BB2022B11D0E368BBB90023C5F89C3027 +:1033E0002B6923F020032B61E37CFBB9002363747A +:1033F000E38F9BB2022B1ED038BDE369002BEAD0CD +:10340000226A002120469847E5E7616894F8390070 +:10341000FFF722FEE16894F83900FFF725FE00234C +:10342000E36094F83900FFF7FFFDE5E704F13500AC +:1034300000F0EEFADAE70023E387E369002BDBD044 +:10344000226A022120469847D6E700BF9C0D000261 +:103450006400022070B582B005460E46394B53F821 +:10346000204001A9384B185CFFF728F9374B53F877 +:1034700025301A7C002A50D15B7C002B4FD101985B +:10348000FEF7D8FA05463046FEF7D4FA4FF08341EE +:10349000FEF728FB01462846FEF7D8FB0646FEF756 +:1034A00071FC0546FEF7C6FA01463046FEF710FAF3 +:1034B0004FF08341FEF716FB4FF07C51FEF70AFAFE +:1034C000FEF760FCC2B2102A24D0A368C3F3033312 +:1034D000012B26D0236823F0020343F0010323606D +:1034E000A368C3F30333012BFAD1A16A184B0B4035 +:1034F000C5F313051D43A562636A23F00F0302F0B1 +:103500000F021A436262236823F003032360002042 +:1035100002B070BD01350022D7E70220F8E7022093 +:10352000F6E7A16A0A4B0B40C5F313051D43A562DC +:10353000636A23F00F0302F00F021A436262002055 +:10354000E6E700BF9C0D0002C40D000264000220EB +:103550000000F0FF2DE9F04383B007460D46164604 +:103560006A4B53F8204001A9694B185CFFF7A6F895 +:103570006B1E05F13F0E4FF0000C03F801CF7345B1 +:10358000FBD1644B43F82750236823F0020343F038 +:1035900001032360A368C3F30333012BFAD123692A +:1035A00043F00103236131683846FFF753FF81463A +:1035B00018B1484603B0BDE8F083F3792269590099 +:1035C00001F0020122F082020A439B0103F0800312 +:1035D00013432361226922F46042F3791B0303F44D +:1035E000604313432361226922F4E052F3795B02C2 +:1035F00003F4E05313432361F37985F834303379CE +:10360000002B67D1236923F004032361226922F48C +:10361000C022B3795B0403F4C02313432361D4F8BD +:103620008C2022F00202B3795B0003F00203134303 +:10363000C4F88C30337A002B5ED1236943F4807355 +:103640002361737A002B5CD1236943F400732361F7 +:10365000236823F0030323604FF00008A5F83C80A3 +:10366000A5F83E80337A85F83730737A85F838309C +:10367000B37A85F83930F37A85F83A30C5F81C808A +:10368000C5F82480C5F82C80C5F82080C5F82880AE +:10369000C5F83080414605F1350000F0CCF94146CF +:1036A00005F1360000F0C7F91B4B33F917504246BD +:1036B0001A4B53F827102846FFF710FC2846FFF74F +:1036C00053FC636843F480736360636843F0800372 +:1036D00063606EE7236943F0040323617379226911 +:1036E000D90001F0080122F048020A435B0103F00F +:1036F00040031343236189E7236923F48073236123 +:103700009FE7236923F400732361A1E79C0D000266 +:10371000C40D000264000220D00D0002E40D00027E +:10372000F8B51C4B53F820502B7C83BB06461A4B34 +:1037300053F820402960AA6001232B740222AA8733 +:10374000236943F0100323616261FFF78DFD0227B7 +:1037500003E0636913F4C07F17D1AB6843B16369B9 +:1037600013F0020FF5D067613046FFF77DFDF0E7FB +:103770000020636913F0020FFBD0236923F01003CC +:10378000236100232B74A887F8BD0120F1E70220F4 +:10379000FAE700BF640002209C0D000270B5194BCF +:1037A00053F820506B7C03B970BD0446164B53F898 +:1037B0002060FFF789FDEB682BB9EB691BB12A6A22 +:1037C000002128469847EB6843B12B7D012B16D08A +:1037D000042373614FF400737361E5E72046FFF73C +:1037E000C7FD2B7D032B07D0EB69002BF0D02A6A95 +:1037F000022128469847EBE704232B75F4E70223C0 +:103800002B75E5E7640002209C0D000270B5124B99 +:1038100053F820502B7C6BB10446104B53F82060BA +:10382000AB6843B96B6A1BB1AA6A01212846984765 +:10383000AB682BB170BDFFF717FD02237361F9E789 +:103840002046FFF771FD6B6A1BB1AA6A0221284668 +:10385000984702237361EDE7640002209C0D00028B +:1038600010B5174B53F82030164A52F820405A69C9 +:1038700012F0800F12D040F20162E28780225A617A +:1038800094F83830012B17D00021FFF795FDE36A3B +:103890001BB1226B03212046984710BD5A6912F4D0 +:1038A000807F06D040F20362E2874FF480725A6153 +:1038B000E6E70123E387E3E7FFF75AFDE7E700BF09 +:1038C0009C0D00026400022070B51C4B53F8206070 +:1038D0001B4B53F820502B7D032B12D0042B25D0EB +:1038E000022B00D070BD03232B75AB69C3F30B0310 +:1038F000C6F8903008237361736843F0080373605F +:10390000F0E70446736913F0080FEBD0EB691BB1C5 +:103910002A6A0421284698472046FFF729FD0123FB +:103920002B75736823F008037360DBE701232B75A5 +:10393000736823F008037360D4E700BF9C0D000296 +:103940006400022038B50446124B53F820506B69CE +:1039500013F4C07F13D16B6813F0040F03D06B69AD +:1039600013F0040F0ED16B6813F0020F03D06B69D4 +:1039700013F0020F09D12046FFF7A6FF38BDFFF76D +:103980006FFFFBE7FFF70AFFEDE72046FFF73EFF7B +:10399000F1E700BF9C0D000208B50020FFF7D2FF41 +:1039A00008BD08B50120FFF7CDFF08BD08B502200E +:1039B000FFF7C8FF08BD08B50320FFF7C3FF08BD28 +:1039C00008B50420FFF7BEFF08BD08B50520FFF7C6 +:1039D000B9FF08BD084A136843F000431360074B62 +:1039E0004BF231621A604CF278221A605A6822F067 +:1039F00001025A60704700BF0000044000801A4076 +:103A0000024A136801331360704700BF8C00022024 +:103A100010B50446FFF7C4FA2378DBB2FF2B08D0B9 +:103A200023780133DBB223700024FFF7ABFA204682 +:103A300010BD0124F9E738B504460D46FFF7B0FA8A +:103A40002570FFF79FFA002038BD70472DE9F04F31 +:103A500083B006460F4601929846DDF83090DDF8B7 +:103A600038A00F9B13F0030F14D10D9B53450FD2B9 +:103A70000D9BAAEB0305019C25444FF0200B224629 +:103A80000134434639465846B047AC42F7D102E0CC +:103A9000154600E0019D0D9B7BB10D9B09EB030BCF +:103AA0005C46AB44ABEB04024346394614F8010DC7 +:103AB000B0474C45F6D10D9B1D440F9B13F0020FF0 +:103AC0000ED0019BEC1AA2450AD94FF020092A46D4 +:103AD0004346013539464846B04701345445F6D38C +:103AE000284603B0BDE8F08F2DE9F04385B0DDF83E +:103AF00030E00D9C9DF83880109F119D129E16F0AD +:103B0000020F33D17DB116F0010F00F08F80B8F1B4 +:103B1000000F02D116F00C0F00D0013DBC4215D2AF +:103B20001F2C04D912E0BC420DD21F2C0BD804F17B +:103B3000FF3CF4444FF0300901340CF8019FA742D8 +:103B400001D91F2CF8D916F0010F0FD0A5420DD9BD +:103B50001F2C0BD804F1FF3CF4444FF03009013422 +:103B60000CF8019FAC4201D21F2CF8D916F0100FAF +:103B700015D016F4806F00D124BB0F9F102F2CD0CE +:103B80000F9F022F05D11F2C03D862270EF8047057 +:103B900001341F2C0CD830270EF8047001341F2C70 +:103BA00006D8B8F1000F31D02D270EF8047001347B +:103BB000039602950194CDF800E0FFF747FF05B0AA +:103BC000BDE8F083BC4201D0AC42D6D1B4F1010CC7 +:103BD00015D00F9F102F12D1023C1F2C8CBF002735 +:103BE000012716F0200C00D15FB9BCF1000FD0D036 +:103BF000002FCED058270EF804700134C9E7644670 +:103C0000BBE778270EF804700134C2E716F0040F02 +:103C100004D02B270EF804700134C9E716F0080F02 +:103C2000C6D020270EF804700134C1E7BC429DD2F3 +:103C30001F2C7FF67CAF99E72DE9F04190B0169CE0 +:103C4000189DDDF86C802CB928F0100618F4806FF0 +:103C500034D1B04618F0200F14BF412761270DF171 +:103C6000200E00260A3F00E06446B4FBF5FC05FB8D +:103C70001C4C5FFA8CFCBCF1090F94BF0CF1300CAA +:103C8000BC445FFA8CFC01360EF801CBB4FBF5FCAA +:103C9000AC4201D31F2EE7D9CDF818801A9C0594A9 +:103CA000199C049403959DF85C400294019608AC1D +:103CB0000094FFF719FF10B0BDE8F081B04626462A +:103CC000EAE72DE9F04F95B0089009910A920B931D +:103CD0001E9C1F9D229EDDF88C80DDF898B054EA72 +:103CE000050305D12BF010031BF4806F40D19B46D8 +:103CF0001BF0200F14BF4FF0410A4FF0610A0DF185 +:103D000030090027AAF10A0A01E004460D463246AE +:103D1000434620462946FEF755F8D2B2092A94BFF9 +:103D200030325244D2B2013709F8012B32464346B1 +:103D300020462946FEF746F8B44275EB080301D346 +:103D40001F2FE2D9CDF818B0259B0593249B04932F +:103D500003969DF88030029301970CAB00930B9B68 +:103D60000A9A09990898FFF7BFFE15B0BDE8F08FD1 +:103D70009B460027E6E700002DE9F04F91B0824610 +:103D80000C4609921D461A9E0696DDF86CB0324626 +:103D90005B4630465946FDF71DFD002800F00081C6 +:103DA0004FF0FF32AA4B30465946FDF73BFD002845 +:103DB00040F0F6804FF0FF326FF4801330465946E2 +:103DC000FDF712FD002840F0EB8000220023069E44 +:103DD00030465946FDF708FD002840F0F680069A67 +:103DE0000792CDF820B01E9B13F480630F931C9BA9 +:103DF00008BF06231C93DDF81C90DDF82080C8F373 +:103E00000A50A0F2FF30FDF713FA81A3D3E9002393 +:103E1000FDF778FA80A3D3E90023FDF7BDF8064645 +:103E20000F46C8F31308484648F07F5141F440114B +:103E30000022884BFDF7AEF879A3D3E90023FDF704 +:103E400061FA02460B4630463946FDF7A5F8FDF704 +:103E5000F3FC0E90FDF7ECF906460F4672A3D3E98A +:103E60000023FDF74FFA00227B4BFDF795F8FDF795 +:103E7000E3FC80466EA3D3E9002330463946FDF7C4 +:103E800041FA06460F46CDF828804046FDF7D0F9A6 +:103E900069A3D3E90023FDF735FA02460B46304605 +:103EA0003946FDF777F806460F4602460B46FDF702 +:103EB00029FA8046894632463B4630463946FDF768 +:103EC0006BF8CDE90C010022644B40464946FDF7F2 +:103ED00043FB0022624BFDF75FF802460B4640466B +:103EE0004946FDF739FB00225E4BFDF755F80246C7 +:103EF0000B4640464946FDF72FFB80468946324631 +:103F00003B4600204FF08041FDF744F802460B4647 +:103F100040464946FDF740F802460B46DDE90C01F4 +:103F2000FDF71AFB0022504BFDF736F80A9B03F20F +:103F3000FF3600223305FDF7E5F906460F46079ADE +:103F4000089BFDF76FFC002844D1CDE90A670E9F5E +:103F500007F16303C72B34BF042605261E9B13F409 +:103F6000006F00F0888036A3D3E90023DDF81C90B1 +:103F70004846DDF820804146FDF74AFC002875D010 +:103F800031A3D3E9002348464146FDF72DFC002824 +:103F90006CD01C9BBB4229DDD81B431E1C9327E021 +:103FA0001E9B04931D9B03931C9B0293069A5B46E6 +:103FB000CDE900232B46099A2146504600F0E0F84F +:103FC0008046404611B0BDE8F08F07960BF10043E4 +:103FD000089308E70E9B013B0E930022204B3046CE +:103FE0003946FDF7B9FACDE90A01B0E700231C9381 +:103FF0001E9B43F480631E931D9B002B40F0AE80FC +:104000001E4698464FF000094F46CDF8389049E0DB +:10401000FB799F501344D33FB3C8608B288AC63FB7 +:1040200061436F63A787D23F71A379094F930A4019 +:104030001655B5BBB16B0240EF39FAFE422EE63F92 +:104040002D431CEBE2361A3F0000000080842E4115 +:10405000FFFFEF7F0000F83F0000E03F00002C4032 +:1040600000002440000018400000F03F0F9B13B1F7 +:104070001C9B002B6FD11D9B9E4272D21D9BA3EBFC +:104080000608371E18BF01271E9B17EA53096BD17C +:104090000E9B3BB1DDE90A2307980899FDF75CFA0E +:1040A000079008910022002306985946FDF79CFBD3 +:1040B00000285DD11E9B23F400630493CDF80C808F +:1040C0001C9B0293079A089BCDE900232B46DDF841 +:1040D00024B05A462146504600F052F88046002F40 +:1040E0003FF46FAF1E9B13F0200F00F101072B462A +:1040F0000246214614BF45206520D047052305937D +:10410000013E0496002303930A2302930E99CB0FDA +:1041100001930029B8BF494200912B463A462146F7 +:104120005046FFF789FD8046B9F1000F3FF449AFD3 +:10413000A0EB0B061D9BB3427FF643AF20279946A9 +:1041400042462B4608F1010821463846D047013641 +:10415000B145F5D835E7013B1C938CE700260E9658 +:104160008CE74FF000088CE74F464FF000088FE7D0 +:10417000089901F1004308939CE700BF000000008C +:104180002DE9F04F97B007900C9192469B46DDE9E0 +:104190002089229E42464B4640464946FDF71AFB7F +:1041A000002841D04FF0FF326FF48013404649465B +:1041B000FDF71AFB002846D14FF0FF32B04B4046C6 +:1041C0004946FDF72FFB00284CD1A9A3D3E90023D2 +:1041D00040464946FDF726FB00285BD1A6A3D3E95C +:1041E000002340464946FDF7FFFA002852D100223D +:1041F000002340464946FDF7F7FA002858D100232E +:104200000D93249B13F480645DD0092E40F2B78097 +:104210000EAB00243022013403F8012B013E1F2C89 +:1042200052D8092EF7D84FE0249B0393239B029387 +:1042300003230193934B00935B4652460C990798D6 +:10424000FFF704FC58E1249B0393239B0293042370 +:1042500001938D4B00935B4652460C990798FFF7EC +:10426000F5FB49E1249B13F00402884B884908BF01 +:104270000B46002A14BF0422032224990391239998 +:104280000291019200935B4652460C990798FFF702 +:10429000DDFB31E1249B0493239B03930296CDE93C +:1042A00000895B4652460C990798FFF765FD23E1AC +:1042B00042464B4600200021FCF76CFE80468946B2 +:1042C00001230D939DE7062640464946FDF7B4FAC3 +:1042D0000546704B03EBC603D3E90023CDE9082361 +:1042E000FCF7A6FF02460B4640464946FCF752FE45 +:1042F000DDE90823FDF706F802460B46CDE90A235F +:10430000FDF7C2FA0746FCF783FF02460B46DDE9DC +:104310000A01FCF73FFE02460B46CDE90A230022C4 +:104320005D4BFDF77FFA60B301373846FCF770FF4D +:1043300002460B46DDE90801FDF760FA08B10135D8 +:104340000027002E71D12846FCF772FF02460B466B +:1043500040464946FCF71EFE06460F4600224E4BDD +:10436000FDF742FA30B100224B4B30463946FDF79B +:1043700059FA70B315F0010F2BD0013529E0002454 +:10438000A2E70022444BDDE90A01FDF72DFA0028DF +:10439000D7D117B117F0010FD3D00137D1E71F29BB +:1043A00000F2AD80BCF1000F3DD00EAB1A190C46E7 +:1043B0003020013402F8010F202C0AD0E3430B44D3 +:1043C000F342F6D104F158036B442E2203F8202C5B +:1043D000013404F158030DEB0302213A2F491F2C3D +:1043E00078D8013481FB0530EB17C3EBA00303EB56 +:1043F0008300A5EB4005303502F8015F1D46002B18 +:10440000EDD1249B03F00303012B2AD01F2C66D887 +:104410000D9B002B46D004F158036B442D2203F86A +:10442000202C01345BE00C46CCE704F158030DEB83 +:1044300003002138DFF868E01F2CCAD806F1FF3CE2 +:10444000611CAEFB0732D20802EB8203A7EB4303E9 +:10445000303300F8013F092FA1D9664617460C46B4 +:10446000EAE7239B002BD1D04EE000BFAFF30080E2 +:104470000000000065CDCD410000000065CDCDC13C +:10448000FFFFEF7F180E00021C0E00020C0E000250 +:10449000140E0002280E00020000E03F6766666608 +:1044A000CDCCCCCC249B13F0040F07D004F15803DF +:1044B0006B442B2203F8202C013410E0249B13F0D2 +:1044C000080F0CD004F158036B44202203F8202C71 +:1044D000013404E0249B03F00303012B11D0249B3F +:1044E0000393239B029301940EAB00935B465246C9 +:1044F0000C990798FFF7AAFA17B0BDE8F08F0C46A1 +:1045000067E7239B002BEAD00D9B1BB9249B13F07C +:104510000C0F02D0239B013B2393239BA3427FF6E6 +:1045200075AF1F2C3FF672AF04F158036B44213B6B +:1045300030222399013403F8012F8C42BFF466AF77 +:104540001F2CF7D962E700BF00B9704708B5FDF727 +:104550006FFF08BD2DE9F04F91B017461C46DDF8FE +:104560006880B1F100098C4B14BF82469A462078CE +:10457000002800F0FA824FF0000B65E1621C4FF05A +:10458000000C144612F8013BA3F1200110290AD8AF +:10459000DFE801F02E090931090909090909092B88 +:1045A000092809092500A3F13002D2B2092A25D928 +:1045B0002A2B31D0002523782E2B37D000262378C4 +:1045C000683B122B6ED8DFE803F05F6DC96D546D48 +:1045D0006D6D6D6D6D6D6A6D6D6D6D6DCD004CF0B9 +:1045E000010CCEE74CF0020CCBE74CF0040CC8E712 +:1045F0004CF0080CC5E74CF0100CC2E7002505EBA9 +:10460000850503EB4505303D14F8013FA3F1300269 +:10461000D2B2092AF3D9CEE758F8045B002D01DBAA +:104620000134C8E74CF0020C6D42F9E74CF4806CA1 +:10463000611C6378A3F13002D2B2092A04D92A2B73 +:1046400011D00C460026BAE7002606EB860603EBDF +:104650004606303E11F8013FA3F13002D2B2092ADA +:10466000F3D90C46ABE758F8046B26EAE676023439 +:10467000A5E763786C2B03D04CF4807C013411E007 +:104680004CF4407C02340DE06378682B03D04CF08E +:10469000800C013406E04CF0C00C023402E04CF413 +:1046A000807C01342078A0F12503532B00F2548242 +:1046B000DFE813F048025202520252025202520242 +:1046C000520252025202520252025202520252024A +:1046D000520252025202520252025202520252023A +:1046E000520252025202520252025202520252022A +:1046F000520252025F0146015F015202520252020F +:104700005202520252025202520252025202520209 +:10471000520252025202520252025C0052025202F1 +:1047200052025202520252025202520252025C00E1 +:1047300080015C005F0146015F0152025C00520291 +:1047400052025202520252025C00320252025202E1 +:10475000BA0152025C00520252025C004CF4007C2E +:1047600001349FE74CF4807C01349BE700F0DF03C9 +:10477000582B13D06F2800F01382622800F01382A8 +:104780002CF0100C0A23692801D0642837D11CF4BE +:10479000806F0FD00CE000BF4B3A000258282CD19C +:1047A0004CF02002102322F00C0C12F4806F05D084 +:1047B0002CF0010C692824D0642822D01CF4007F3E +:1047C00040F08D801CF4807F40F0A1801CF0400FF1 +:1047D00000F0AF8058F8042BD2B2CDF814C0049585 +:1047E000039602930023019300923B465A464946A2 +:1047F0005046FFF721FA834621E01023C3E76246C3 +:10480000D1E71CF4007F2BD11CF4807F4BD11CF02E +:10481000400F5DD058F8042BD2B2CDF814C00495E7 +:1048200003960293D30F0193002AB8BF524200921D +:104830003B465A4649465046FFF7FEF98346013447 +:104840002078002800F0938125283FF497AE0BF1E3 +:1048500001053B465A464946D0470134AB46EFE78F +:1048600008F1070121F00701884658F8082B49682C +:10487000CDF820C007950696049300230593CB0F2F +:10488000029313460A46002909DB009301923B4636 +:104890005A4649465046FFF714FA8346CFE75B4233 +:1048A00061EB4102F1E758F8042BCDF814C00495F0 +:1048B00003960293D30F0193002AB8BF524200928D +:1048C0003B465A4649465046FFF7B6F98346B6E797 +:1048D0001CF0800F58F8042B18BF12B29DE708F1A6 +:1048E000070828F00708CDF820C007950696002293 +:1048F000049305920292F8E80223CDE900233B4697 +:104900005A4649465046FFF7DCF9834697E7CDF80B +:1049100014C00495039602930023019358F8043BB6 +:1049200000933B465A4649465046FFF785F9834671 +:1049300085E71CF0800F58F8042B18BF92B24CE7A3 +:10494000462808BF4CF0200C08F1070828F007089B +:10495000CDF810C003950296F8E80223CDE90023B4 +:104960003B465A4649465046FFF70AFC8346013407 +:1049700066E700F0DF03472B08BF4CF4006C00F043 +:10498000FD00452808BF4CF0200C08F1070828F06E +:104990000708CDF810C003950296F8E80223CDE988 +:1049A00000233B465A4649465046FFF7E5F9834601 +:1049B000013445E71CF0020F1BD043460BF1010602 +:1049C00053F8040B0B933B465A464946C0B2D047B6 +:1049D000012D40F2D98005EB0B08324601363B46EB +:1049E00049462020D0474645F7D1AB44DDF82C801E +:1049F00018E0012D40F2CC800BF1FF331D4420263E +:104A00005A460BF1010B3B4649463046D047AB4571 +:104A1000F6D105F1010B58F8040B3B462A464946EE +:104A2000C0B2D04701340BE7434653F8048B0C93D4 +:104A3000002E14BF31464FF0FF3198F800000028D7 +:104A400000F0AC80434613F8012F1AB1A8EB030223 +:104A5000CA42F8D1A3EB08030B931CF480620D92B9 +:104A600003D0B34228BF33460B931CF002030E93CE +:104A700006D0002800F08E805A460F950D9D29E043 +:104A80000B9A531C954240F2878005EB0B039B1A4F +:104A90000F93CDF82C8098465A460BF1010B3B46FC +:104AA00049462020D047C345F6D1DDF82C806B1C49 +:104AB0000B93DDF83CB098F800000028DCD114E03E +:104AC0001E4602F1010B3B464946D04718F8010F3C +:104AD00040B15A46002DF4D0731E002EF0D10F9D28 +:104AE000934600E00F9D0E9B1BB90134DDF830802A +:104AF000A6E65E460B9B9D420CD93544A5EB030B05 +:104B00002025324601363B4649462846D047B34524 +:104B1000F7D1EAE7B346E8E74CF021030593082311 +:104B200004930396102302930023019358F8043B47 +:104B300000933B465A4649465046FFF77DF8834668 +:104B400001347DE60BF101053B465A4649462520D6 +:104B5000D0470134AB4673E60BF101053B465A469C +:104B60004946D0470134AB466AE64FF0000B5F453B +:104B700094BF07F1FF325A463B4649460020D047D2 +:104B8000584611B0BDE8F08FDDF82C80B34649E7F8 +:104B90005D463EE75E46ADE70B938CE7434659E73B +:104BA00008236246FFE50223FBE700BF0FB400B510 +:104BB00085B006AA52F8043B039200924FF0FF32F0 +:104BC00002A90448FFF7C6FC05B05DF804EB04B089 +:084BD000704700BF49450002D7 +:084BD8001CD2FF7F0100000068 +:104BE00001000000A0000220580C0002380C000256 +:0C4BF0000B01030090000220006CDC02AE +:0400000502000F31B5 +:00000001FF diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab10.s19 b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab10.s19 new file mode 100644 index 0000000..e501bf5 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab10.s19 @@ -0,0 +1,5 @@ +S0030000FC +S112D0000000000000000000000000000000001E +S113C000CED000BDFFCDA70081042706088CD00F39 +S10CC01026F1CED000BDFFC73FAC +S9030000FC diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab11.s19 b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab11.s19 new file mode 100644 index 0000000..c78c0bf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab11.s19 @@ -0,0 +1,7 @@ +S0030000FC +S113D000506C656173652066696E64206D79206378 +S113D0106F6D62696E6174696F6E04594F55204675 +S10DD0204F554E44204954210704E3 +S113C000CED000BDFFC7B61003B7100481A326F637 +S10AC010CED01BBDFFC73FAA +S9030000FC diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab12.s19 b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab12.s19 new file mode 100644 index 0000000..bb2cc55 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab12.s19 @@ -0,0 +1,11 @@ +S015000044656275675C73746D38733030332E736D38CF +S1238083AE03FF9490CE8080AE8082F62725A5602717BF00EE03BF03BE00EE0190F6F75C0A +S12380A3905C90B30326F5BE00909390EE031C000520D8AE00002002F75CA3000626F9AE58 +S12380C301002002F75CA3010026F9CD80D320FE725F50C7725F50CA20FE80808080808031 +S11280E38080808080808080808080808080800A +S123800082008083820080DE820080DF820080E0820080E1820080E2820080E3820080E4A2 +S1238020820080E5820080E6820080DD820080DD820080E7820080E8820080E9820080EA05 +S1238040820080EB820080DD820080DD820080EC820080ED820080EE820080DD820080DDE6 +S1238060820080EF820080F0820080F1820080DD820080DD820080DD820080DD820080DDCB +S1068080808300F6 +S903FFFFFE diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab9.s19 b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab9.s19 new file mode 100644 index 0000000..6a842d7 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/lab9.s19 @@ -0,0 +1,6 @@ +S0030000FC +S113C000CEE000BDFFBB8620BDFFB88CE01023F35B +S104C0103FEE +S113C100CEF26CBDFFBB8620BDFFB88CF28323F357 +S10AC110CEF26CBDFFC73F37 +S9030000FC diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/s19Parse.spec.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/s19Parse.spec.ts new file mode 100644 index 0000000..3650b14 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/util/s19Parse.spec.ts @@ -0,0 +1,56 @@ +import { describe, it, expect } from 'vitest' +import { S19MemoryMap } from '../../src/main/worker/utli' +import path from 'path' +import fs from 'fs' + +describe('S19MemoryMap', () => { + describe('fromS19', () => { + it('hello.s19 checksum error', () => { + const hexString = fs.readFileSync(path.resolve(__dirname, './hello.s19'), 'utf-8') + try { + const memMap = S19MemoryMap.fromS19(hexString) + expect(true).eq(false) + } catch { + expect(true).eq(true) + } + }) + it('lab9.s19 checksum error', () => { + const hexString = fs.readFileSync(path.resolve(__dirname, './lab9.s19'), 'utf-8') + try { + const memMap = S19MemoryMap.fromS19(hexString) + expect(true).eq(false) + } catch { + expect(true).eq(true) + } + }) + it('lab10.s19 checksum error', () => { + const hexString = fs.readFileSync(path.resolve(__dirname, './lab10.s19'), 'utf-8') + try { + const memMap = S19MemoryMap.fromS19(hexString) + expect(true).eq(false) + } catch { + expect(true).eq(true) + } + }) + it('lab11.s19 multi section', () => { + const hexString = fs.readFileSync(path.resolve(__dirname, './lab11.s19'), 'utf-8') + + const memMap = S19MemoryMap.fromS19(hexString) + expect(memMap.get(0xc000)).toBeDefined() + expect(memMap.get(0xd000)).toBeDefined() + expect(memMap.get(0xc000)?.length).eq(23) + expect(memMap.get(0xd000)?.length).eq(42) + }) + it('lab12.s19', () => { + const hexString = fs.readFileSync(path.resolve(__dirname, './lab12.s19'), 'utf-8') + + const memMap = S19MemoryMap.fromS19(hexString) + expect(memMap.get(0x8000)).toBeDefined() + }) + it('ok1', () => { + const hexString = fs.readFileSync(path.resolve(__dirname, './CMSIS-DAP_OpenSDA.s19'), 'utf-8') + const memMap = S19MemoryMap.fromS19(hexString) + expect(memMap.get(0x8000)).toBeDefined() + }) + }) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace.orti b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace.orti new file mode 100644 index 0000000..cae24de --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace.orti @@ -0,0 +1,982 @@ + +/** + * COPYRIGHT + * --------------------------------------------------------------------------------------------------------------------- + * Copyright (c) iSOFT INFRASTRUCTURE SOFTWARE CO., LTD. This software is proprietary to + * iSOFT INFRASTRUCTURE SOFTWARE CO., LTD., and all rights are reserved by iSOFT INFRASTRUCTURE SOFTWARE CO., LTD. + * Without the express written permission of the company, no organization or individual may copy, install, trial, + * distribute, or reverse engineer this software. For terms of use and further details, please refer to the End User + * License Agreement (EULA) or contact us business@i-soft.com.cn for more assistance. + * + * This file contains code from iSoft, which is licensed under the LGPL-2.1. However, due to a special exception, + * you are not required to comply with the provisions of section 6a of LGPL-2.1. Specifically, you may distribute + * your software, including this file, under terms of your choice, including proprietary licenses, without needing to + * provide the source code or object code as specified in section 6a. For more details, please refer to the project's + * LICENSE and EXCEPTION files and the specific exception statement. + * --------------------------------------------------------------------------------------------------------------------- + * FILE DESCRIPTION + * --------------------------------------------------------------------------------------------------------------------- + * @MCU : TC397 + * @file : Os_Trace.orti + * @license : Evaliation + * @licenseExpiryDate : 2025-12-10 09:31:45 + * @date : 2025-09-22 09:35:09 + * @customer : iSoft + * @description : Configuration parameter of OS + * @toolVersion : 2.2.0.1 + **********************************************************************************************************************/ +/*============================================================================*/ +/*=======[I N C L U D E S]====================================================*/ +/*=======[F I L E V E R S I O N I N F O R M A T I O N]===============================*/ +#define OS_CFG_H_AR_MAJOR_VERSION 19U +#define OS_CFG_H_AR_MINOR_VERSION 11U +#define OS_CFG_H_AR_PATCH_VERSION 0U +#define OS_CFG_H_SW_MAJOR_VERSION 2U +#define OS_CFG_H_SW_MINOR_VERSION 0U +#define OS_CFG_H_SW_PATCH_VERSION 0U + +/*=======[M A C R O S]========================================================*/ +/***********************/ +/* Version Section */ +/***********************/ +VERSION { + KOIL = "2.2"; + OSSEMANTICS = "ORTI", "2.2"; +}; + +/***********************/ +/* Declaration Section */ +/***********************/ +IMPLEMENTATION ISoft_ORTI { + OS { + CTYPE "int" vs_CORE_NUM, "Number of Cores"; + + ENUM "Os_CoreIdType"[ + "CORE_ID_0" = 0, + "CORE_ID_1" = 1, + "CORE_ID_2" = 2, + "CORE_ID_3" = 3, + "CORE_ID_4" = 4, + "CORE_ID_5" = 5 + ] vs_CORE_ID[], "Current Core ID"; + + TOTRACE ENUM [ + "iSoft_Auto_OsTask_10ms_BSW" = 0x0000, + "iSoft_Auto_OsTask_5ms_BSW" = 0x0001, + "iSoft_Auto_OsTask_1ms_BSW" = 0x0002, + "iSoft_Auto_DEFAULT_OsTask_Init" = 0x0003, + "iSoft_Auto_OsTask_100ms" = 0x0004, + "OsTask_Idle_Core0" = 0x0005, + "OsTask_100ms_c1" = 0x1000, + "OsTask_Idle_Core1" = 0x1001, + "OsTask_100ms_c2" = 0x2000, + "OsTask_Idle_Core2" = 0x2001, + "OsTask_100ms_c3" = 0x3000, + "OsTask_Idle_Core3" = 0x3001, + "OsTask_100ms_c4" = 0x4000, + "OsTask_Idle_Core4" = 0x4001, + "OsTask_100ms_c5" = 0x5000, + "OsTask_Idle_Core5" = 0x5001, + "NoRunningTask" = 0xffff + ] RUNNINGTASK[], "Running Task Identification"; + + CTYPE "unsigned short" RUNNINGTASKPRIORITY[], "Priority of Running Task"; + TOTRACE ENUM [ + "SYS_TIMER_CORE0" = 0x0000, + "REMOTECALL_CORE0" = 0x0001, + "CAN0_INT0" = 0x0002, + "CAN0_INT1" = 0x0003, + "CAN0_INT2" = 0x0004, + "CAN0_INT3" = 0x0005, + "CAN0_INT4" = 0x0006, + "CAN0_INT5" = 0x0007, + "CAN0_INT6" = 0x0008, + "CAN0_INT7" = 0x0009, + "GTM_TOM0_0" = 0x000A, + "GTM_TIM1_5" = 0x000B, + "SYS_TIMER_CORE1" = 0x1000, + "REMOTECALL_CORE1" = 0x1001, + "SYS_TIMER_CORE2" = 0x2000, + "REMOTECALL_CORE2" = 0x2001, + "SYS_TIMER_CORE3" = 0x3000, + "REMOTECALL_CORE3" = 0x3001, + "SYS_TIMER_CORE4" = 0x4000, + "REMOTECALL_CORE4" = 0x4001, + "SYS_TIMER_CORE5" = 0x5000, + "REMOTECALL_CORE5" = 0x5001, + + "NoRunningIsr2" = 0xffff + ] RUNNINGISR2[], "Running ISR of category 2"; + + TOTRACE ENUM "unsigned char" [ + "GetApplicationID" = "0x00", + "GetISRID" = "0x01", + "CallTrustedFunction" = "0x02", + "CheckISRMemoryAccess" = "0x03", + "CheckTaskMemoryAccess" = "0x04", + "CheckObjectAccess" = "0x05", + "CheckObjectOwnership" = "0x06", + "StartScheduleTableRel" = "0x07", + "StartScheduleTableAbs" = "0x08", + "StopScheduleTable" = "0x09", + "NextScheduleTable" = "0x0A", + "StartScheduleTableSynchron" = "0x0B", + "SyncScheduleTable" = "0x0C", + "SetScheduleTableAsync" = "0x0D", + "GetScheduleTableStatus" = "0x0E", + "IncrementCounter" = "0x0F", + "GetCounterValue" = "0x10", + "GetElapsedValue" = "0x11", + "TerminateApplication" = "0x12", + "AllowAccess" = "0x13", + "GetApplicationState" = "0x14", + "GetNumberOfActivatedCores" = "0x15", + "GetCoreID" = "0x16", + "StartCore" = "0x17", + "StartNonAutosarCore" = "0x18", + "GetSpinlock" = "0x19", + "ReleaseSpinlock" = "0x1A", + "TryToGetSpinlock" = "0x1B", + "ShutdownAllCores" = "0x1C", + "ControlIdle" = "0x1D", + "IocSend" = "0x1E", + "IocWrite" = "0x1F", + "IocSendGroup" = "0x20", + "IocWriteGroup" = "0x21", + "IocReceive" = "0x22", + "IocRead" = "0x23", + "IocReceiveGroup" = "0x24", + "IocReadGroup" = "0x25", + "IocEmptyQueue" = "0x26", + "GetCurrentApplicationID" = "0x27", + "ReadPeripheral8" = "0x28", + "ReadPeripheral16" = "0x29", + "ReadPeripheral32" = "0x2A", + "WritePeripheral8" = "0x2B", + "WritePeripheral16" = "0x2C", + "WritePeripheral32" = "0x2D", + "ModifyPeripheral8" = "0x2E", + "ModifyPeripheral32" = "0x2F", + "DisableInterruptSource" = "0x30", + "EnableInterruptSource" = "0x31", + "ClearPendingInterrupt" = "0x32", + "ActivateTaskAsyn" = "0x33", + "SetEventAsyn" = "0x34", + "ModifyPeripheral16" = "0x35", + "WaitAllEvents" = "0xD7", + "IocCallBackNotify" = "0xDE", + "ActivateTask" = "0xDF", + "TerminateTask" = "0xE0", + "ChainTask" = "0xE1", + "Schedule" = "0xE2", + "GetTaskID" = "0xE3", + "GetTaskState" = "0xE4", + "EnableAllInterrupts" = "0xE5", + "DisableAllInterrupts" = "0xE6", + "ResumeAllInterrupts" = "0xE7", + "SuspendAllInterrupts" = "0xE8", + "ResumeOSInterrupts" = "0xE9", + "SuspendOSInterrupts" = "0xEA", + "DeclareResource" = "0xEB", + "GetResource" = "0xEC", + "ReleaseResource" = "0xED", + "DeclareEvent" = "0xEE", + "SetEvent" = "0xEF", + "ClearEvent" = "0xF0", + "GetEvent" = "0xF1", + "WaitEvent" = "0xF2", + "GetAlarmBase" = "0xF3", + "GetAlarm" = "0xF4", + "SetRelAlarm" = "0xF5", + "SetAbsAlarm" = "0xF6", + "CancelAlarm" = "0xF7", + "GetActiveApplicationMode" = "0xF8", + "StartOS" = "0xF9", + "ShutdownOS" = "0xFA", + "ErrorHook" = "0xFB", + "PreTaskHook" = "0xFC", + "PostTaskHook" = "0xFD", + "StartupHook" = "0xFE", + "ShutdownHook" = "0xFF", + "NoService" = "0x44" + ] vs_SERVICETRACE[], "OS Services Watch"; + + ENUM "unsigned char" [ + "E_OK" = 0, + "E_OS_ACCESS" = 49, + "E_OS_CALLEVEL" = 2, + "E_OS_ID" = 3, + "E_OS_LIMIT" = 4, + "E_OS_NOFUNC" = 5, + "E_OS_RESOURCE" = 6, + "E_OS_STATE" = 7, + "E_OS_VALUE" = 8, + "E_OS_SERVICEID" = 9, + "E_OS_RATE" = 10, + "E_OS_ILLEGAL_ADDRESS" = 11, + "E_OS_MISSINGEND" = 12, + "E_OS_DISABLEDINT" = 13, + "E_OS_STACKFAULT" = 14, + "E_OS_PROTECTION_MEMORY" = 15, + "E_OS_PROTECTION_TIME" = 16, + "E_OS_PROTECTION_LOCKED" = 17, + "E_OS_PROTECTION_EXCEPTION" = 18, + "E_OS_PROTECTION_RATE" = 19, + "E_OS_PROTECTION_ARRIVAL" = 20, + "E_OS_CORE" = 21, + "E_OS_INTERFERENCE_DEADLOCK" = 22, + "E_OS_NESTING_DEADLOCK" = 23, + "E_OS_SPINLOCK" = 24 + ] LASTERROR[], "Last OSEK error"; + + ENUM "unsigned char" [ + "DONOTCARE" = 0x0, + "OSDEFAULTAPPMODE" = 0x01, + ] CURRENTAPPMODE[], "Current application mode"; + + }, "OS"; + + TASK { + CTYPE "unsigned short" PRIORITY , "Actual Prio"; + + ENUM "unsigned char" [ + "WAITING" = 0, + "READY" = 1, + "SUSPENDED" = 2, + "RUNNING" = 3, + "START" = 4 + ] STATE, "Current State"; + + ENUM "Os_StackType" [ + "taskStack_iSoft_Auto_OsTask_10ms_BSW" : taskStack_iSoft_Auto_OsTask_10ms_BSW = "&taskStack_iSoft_Auto_OsTask_10ms_BSW", + "taskStack_iSoft_Auto_OsTask_5ms_BSW" : taskStack_iSoft_Auto_OsTask_5ms_BSW = "&taskStack_iSoft_Auto_OsTask_5ms_BSW", + "taskStack_iSoft_Auto_OsTask_1ms_BSW" : taskStack_iSoft_Auto_OsTask_1ms_BSW = "&taskStack_iSoft_Auto_OsTask_1ms_BSW", + "taskStack_iSoft_Auto_DEFAULT_OsTask_Init" : taskStack_iSoft_Auto_DEFAULT_OsTask_Init = "&taskStack_iSoft_Auto_DEFAULT_OsTask_Init", + "taskStack_iSoft_Auto_OsTask_100ms" : taskStack_iSoft_Auto_OsTask_100ms = "&taskStack_iSoft_Auto_OsTask_100ms", + "taskStack_OsTask_Idle_Core0" : taskStack_OsTask_Idle_Core0 = "&taskStack_OsTask_Idle_Core0", + "taskStack_OsTask_100ms_c1" : taskStack_OsTask_100ms_c1 = "&taskStack_OsTask_100ms_c1", + "taskStack_OsTask_Idle_Core1" : taskStack_OsTask_Idle_Core1 = "&taskStack_OsTask_Idle_Core1", + "taskStack_OsTask_100ms_c2" : taskStack_OsTask_100ms_c2 = "&taskStack_OsTask_100ms_c2", + "taskStack_OsTask_Idle_Core2" : taskStack_OsTask_Idle_Core2 = "&taskStack_OsTask_Idle_Core2", + "taskStack_OsTask_100ms_c3" : taskStack_OsTask_100ms_c3 = "&taskStack_OsTask_100ms_c3", + "taskStack_OsTask_Idle_Core3" : taskStack_OsTask_Idle_Core3 = "&taskStack_OsTask_Idle_Core3", + "taskStack_OsTask_100ms_c4" : taskStack_OsTask_100ms_c4 = "&taskStack_OsTask_100ms_c4", + "taskStack_OsTask_Idle_Core4" : taskStack_OsTask_Idle_Core4 = "&taskStack_OsTask_Idle_Core4", + "taskStack_OsTask_100ms_c5" : taskStack_OsTask_100ms_c5 = "&taskStack_OsTask_100ms_c5", + "taskStack_OsTask_Idle_Core5" : taskStack_OsTask_Idle_Core5 = "&taskStack_OsTask_Idle_Core5", + ] STACK, "Task Stack"; + + CTYPE "unsigned char" REMAININGACTIVATIONS, "Remaining task activations"; + + STRING vs_Home_Priority, "Home Priority"; + STRING vs_Task_Type, "Task Type"; /* BASIC / EXTENDED */ + STRING vs_Schedule, "Schedule"; /* non preemptive, full preemptive */ + STRING vs_max_Activations, "max. Activations"; + }, "Tasks"; + + STACK { + CTYPE SIZE, "Stack Size (Byte)"; + CTYPE "unsigned char *" BASEADDRESS, "Base Address"; + STRING STACKDIRECTION, "Stack Direction"; + CTYPE "unsigned char" FILLPATTERN, "Stack Fill Pattern"; + }, "Stacks"; + + ALARM { + CTYPE "unsigned long" ALARMTIME, "Alarm Time"; + CTYPE "unsigned long" CYCLETIME, "Cycle Time"; + ENUM [ + "STOPPED" = 0, + "RUNNING" = 1 + ] STATE, "Alarm state"; + STRING ACTION, "Action"; + STRING COUNTER, "Counter"; + }, "Alarms"; + + RESOURCE { + ENUM "unsigned char" [ + "UNLOCKED" = 0, + "LOCKED" = 1 + ] STATE, "Resource State"; + ENUM "unsigned char" [ + "iSoft_Auto_OsTask_10ms_BSW" = 0x0000, + "iSoft_Auto_OsTask_5ms_BSW" = 0x0001, + "iSoft_Auto_OsTask_1ms_BSW" = 0x0002, + "iSoft_Auto_DEFAULT_OsTask_Init" = 0x0003, + "iSoft_Auto_OsTask_100ms" = 0x0004, + "OsTask_Idle_Core0" = 0x0005, + "OsTask_100ms_c1" = 0x1000, + "OsTask_Idle_Core1" = 0x1001, + "OsTask_100ms_c2" = 0x2000, + "OsTask_Idle_Core2" = 0x2001, + "OsTask_100ms_c3" = 0x3000, + "OsTask_Idle_Core3" = 0x3001, + "OsTask_100ms_c4" = 0x4000, + "OsTask_Idle_Core4" = 0x4001, + "OsTask_100ms_c5" = 0x5000, + "OsTask_Idle_Core5" = 0x5001, + + "SYS_TIMER_CORE0" = 0x8000, + "REMOTECALL_CORE0" = 0x8001, + "CAN0_INT0" = 0x8002, + "CAN0_INT1" = 0x8003, + "CAN0_INT2" = 0x8004, + "CAN0_INT3" = 0x8005, + "CAN0_INT4" = 0x8006, + "CAN0_INT5" = 0x8007, + "CAN0_INT6" = 0x8008, + "CAN0_INT7" = 0x8009, + "GTM_TOM0_0" = 0x800A, + "GTM_TIM1_5" = 0x800B, + "SYS_TIMER_CORE1" = 0x9000, + "REMOTECALL_CORE1" = 0x9001, + "SYS_TIMER_CORE2" = 0xA000, + "REMOTECALL_CORE2" = 0xA001, + "SYS_TIMER_CORE3" = 0xB000, + "REMOTECALL_CORE3" = 0xB001, + "SYS_TIMER_CORE4" = 0xC000, + "REMOTECALL_CORE4" = 0xC001, + "SYS_TIMER_CORE5" = 0xD000, + "REMOTECALL_CORE5" = 0xD001, + + "NoLoker" = 0xFFFF + ] LOCKER, "Resource Locker"; + STRING PRIORITY, "Ceiling priority"; + }, "Resources"; + + vs_ISR { + STRING vs_Priority, "Priority"; + STRING vs_Type, "Type"; + ENUM "unsigned char" [ + "EXITED" = 0, + "ENTERED" = 1 + ] vs_State, "State"; + }, "ISRs"; + + vs_CONFIG { + STRING vs_ScalabilityClass, "Scalability Class"; + STRING vs_StatusLevel, "Status Level"; + }, "OS Configuration"; + +}; /* END OF IMPLEMENTATION */ + + +/***********************/ +/* Information Section */ +/***********************/ +OS ISoft_TC397 { + + vs_CORE_NUM = 6; + + vs_CORE_ID[0] = "Os_TraceSysCore0.coreId"; + RUNNINGTASK[0] = "Os_TraceSysCore0.runTaskId"; + RUNNINGTASKPRIORITY[0] = "Os_TraceSysCore0.runTaskPrio"; + RUNNINGISR2[0] = "Os_TraceSysCore0.runIsrId"; + vs_SERVICETRACE[0] = "Os_TraceSysCore0.curServiceId"; + LASTERROR[0] = "Os_TraceSysCore0.LastError"; + CURRENTAPPMODE[0] = "Os_TraceSysCore0.curAppMode"; + + vs_CORE_ID[1] = "Os_TraceSysCore1.coreId"; + RUNNINGTASK[1] = "Os_TraceSysCore1.runTaskId"; + RUNNINGTASKPRIORITY[1] = "Os_TraceSysCore1.runTaskPrio"; + RUNNINGISR2[1] = "Os_TraceSysCore1.runIsrId"; + vs_SERVICETRACE[1] = "Os_TraceSysCore1.curServiceId"; + LASTERROR[1] = "Os_TraceSysCore1.LastError"; + CURRENTAPPMODE[1] = "Os_TraceSysCore1.curAppMode"; + + vs_CORE_ID[2] = "Os_TraceSysCore2.coreId"; + RUNNINGTASK[2] = "Os_TraceSysCore2.runTaskId"; + RUNNINGTASKPRIORITY[2] = "Os_TraceSysCore2.runTaskPrio"; + RUNNINGISR2[2] = "Os_TraceSysCore2.runIsrId"; + vs_SERVICETRACE[2] = "Os_TraceSysCore2.curServiceId"; + LASTERROR[2] = "Os_TraceSysCore2.LastError"; + CURRENTAPPMODE[2] = "Os_TraceSysCore2.curAppMode"; + + vs_CORE_ID[3] = "Os_TraceSysCore3.coreId"; + RUNNINGTASK[3] = "Os_TraceSysCore3.runTaskId"; + RUNNINGTASKPRIORITY[3] = "Os_TraceSysCore3.runTaskPrio"; + RUNNINGISR2[3] = "Os_TraceSysCore3.runIsrId"; + vs_SERVICETRACE[3] = "Os_TraceSysCore3.curServiceId"; + LASTERROR[3] = "Os_TraceSysCore3.LastError"; + CURRENTAPPMODE[3] = "Os_TraceSysCore3.curAppMode"; + + vs_CORE_ID[4] = "Os_TraceSysCore4.coreId"; + RUNNINGTASK[4] = "Os_TraceSysCore4.runTaskId"; + RUNNINGTASKPRIORITY[4] = "Os_TraceSysCore4.runTaskPrio"; + RUNNINGISR2[4] = "Os_TraceSysCore4.runIsrId"; + vs_SERVICETRACE[4] = "Os_TraceSysCore4.curServiceId"; + LASTERROR[4] = "Os_TraceSysCore4.LastError"; + CURRENTAPPMODE[4] = "Os_TraceSysCore4.curAppMode"; + + vs_CORE_ID[5] = "Os_TraceSysCore5.coreId"; + RUNNINGTASK[5] = "Os_TraceSysCore5.runTaskId"; + RUNNINGTASKPRIORITY[5] = "Os_TraceSysCore5.runTaskPrio"; + RUNNINGISR2[5] = "Os_TraceSysCore5.runIsrId"; + vs_SERVICETRACE[5] = "Os_TraceSysCore5.curServiceId"; + LASTERROR[5] = "Os_TraceSysCore5.LastError"; + CURRENTAPPMODE[5] = "Os_TraceSysCore5.curAppMode"; + +}; + + +TASK iSoft_Auto_OsTask_10ms_BSW { + PRIORITY = "Os_TCBCore0[0].taskRunPrio"; + STATE = "Os_TCBCore0[0].taskState"; + STACK = "&taskStack_iSoft_Auto_OsTask_10ms_BSW"; + REMAININGACTIVATIONS = "Os_TCBCore0[0].taskActCount"; + + vs_Home_Priority = "2"; + vs_Task_Type = "EXTENDED"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK iSoft_Auto_OsTask_5ms_BSW { + PRIORITY = "Os_TCBCore0[1].taskRunPrio"; + STATE = "Os_TCBCore0[1].taskState"; + STACK = "&taskStack_iSoft_Auto_OsTask_5ms_BSW"; + REMAININGACTIVATIONS = "Os_TCBCore0[1].taskActCount"; + + vs_Home_Priority = "2"; + vs_Task_Type = "EXTENDED"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK iSoft_Auto_OsTask_1ms_BSW { + PRIORITY = "Os_TCBCore0[2].taskRunPrio"; + STATE = "Os_TCBCore0[2].taskState"; + STACK = "&taskStack_iSoft_Auto_OsTask_1ms_BSW"; + REMAININGACTIVATIONS = "Os_TCBCore0[2].taskActCount"; + + vs_Home_Priority = "2"; + vs_Task_Type = "EXTENDED"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK iSoft_Auto_DEFAULT_OsTask_Init { + PRIORITY = "Os_TCBCore0[3].taskRunPrio"; + STATE = "Os_TCBCore0[3].taskState"; + STACK = "&taskStack_iSoft_Auto_DEFAULT_OsTask_Init"; + REMAININGACTIVATIONS = "Os_TCBCore0[3].taskActCount"; + + vs_Home_Priority = "3"; + vs_Task_Type = "BASIC"; + vs_Schedule = "NON"; + vs_max_Activations = "1"; +}; + +TASK iSoft_Auto_OsTask_100ms { + PRIORITY = "Os_TCBCore0[4].taskRunPrio"; + STATE = "Os_TCBCore0[4].taskState"; + STACK = "&taskStack_iSoft_Auto_OsTask_100ms"; + REMAININGACTIVATIONS = "Os_TCBCore0[4].taskActCount"; + + vs_Home_Priority = "1"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; +TASK OsTask_Idle_Core0 { + PRIORITY = "Os_TCBCore0[5].taskRunPrio"; + STATE = "Os_TCBCore0[5].taskState"; + STACK = "&taskStack_OsTask_Idle_Core0"; + REMAININGACTIVATIONS = "Os_TCBCore0[5].taskActCount"; + + vs_Home_Priority = "0"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_100ms_c1 { + PRIORITY = "Os_TCBCore1[0].taskRunPrio"; + STATE = "Os_TCBCore1[0].taskState"; + STACK = "&taskStack_OsTask_100ms_c1"; + REMAININGACTIVATIONS = "Os_TCBCore1[0].taskActCount"; + + vs_Home_Priority = "1"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; +TASK OsTask_Idle_Core1 { + PRIORITY = "Os_TCBCore1[1].taskRunPrio"; + STATE = "Os_TCBCore1[1].taskState"; + STACK = "&taskStack_OsTask_Idle_Core1"; + REMAININGACTIVATIONS = "Os_TCBCore1[1].taskActCount"; + + vs_Home_Priority = "0"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_100ms_c2 { + PRIORITY = "Os_TCBCore2[0].taskRunPrio"; + STATE = "Os_TCBCore2[0].taskState"; + STACK = "&taskStack_OsTask_100ms_c2"; + REMAININGACTIVATIONS = "Os_TCBCore2[0].taskActCount"; + + vs_Home_Priority = "1"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; +TASK OsTask_Idle_Core2 { + PRIORITY = "Os_TCBCore2[1].taskRunPrio"; + STATE = "Os_TCBCore2[1].taskState"; + STACK = "&taskStack_OsTask_Idle_Core2"; + REMAININGACTIVATIONS = "Os_TCBCore2[1].taskActCount"; + + vs_Home_Priority = "0"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_100ms_c3 { + PRIORITY = "Os_TCBCore3[0].taskRunPrio"; + STATE = "Os_TCBCore3[0].taskState"; + STACK = "&taskStack_OsTask_100ms_c3"; + REMAININGACTIVATIONS = "Os_TCBCore3[0].taskActCount"; + + vs_Home_Priority = "1"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; +TASK OsTask_Idle_Core3 { + PRIORITY = "Os_TCBCore3[1].taskRunPrio"; + STATE = "Os_TCBCore3[1].taskState"; + STACK = "&taskStack_OsTask_Idle_Core3"; + REMAININGACTIVATIONS = "Os_TCBCore3[1].taskActCount"; + + vs_Home_Priority = "0"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_100ms_c4 { + PRIORITY = "Os_TCBCore4[0].taskRunPrio"; + STATE = "Os_TCBCore4[0].taskState"; + STACK = "&taskStack_OsTask_100ms_c4"; + REMAININGACTIVATIONS = "Os_TCBCore4[0].taskActCount"; + + vs_Home_Priority = "1"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; +TASK OsTask_Idle_Core4 { + PRIORITY = "Os_TCBCore4[1].taskRunPrio"; + STATE = "Os_TCBCore4[1].taskState"; + STACK = "&taskStack_OsTask_Idle_Core4"; + REMAININGACTIVATIONS = "Os_TCBCore4[1].taskActCount"; + + vs_Home_Priority = "0"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_100ms_c5 { + PRIORITY = "Os_TCBCore5[0].taskRunPrio"; + STATE = "Os_TCBCore5[0].taskState"; + STACK = "&taskStack_OsTask_100ms_c5"; + REMAININGACTIVATIONS = "Os_TCBCore5[0].taskActCount"; + + vs_Home_Priority = "1"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; +TASK OsTask_Idle_Core5 { + PRIORITY = "Os_TCBCore5[1].taskRunPrio"; + STATE = "Os_TCBCore5[1].taskState"; + STACK = "&taskStack_OsTask_Idle_Core5"; + REMAININGACTIVATIONS = "Os_TCBCore5[1].taskActCount"; + + vs_Home_Priority = "0"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + + +TASK basicTaskFirst { + PRIORITY = "(gTaskControlBlocks[0].actualPrio)"; + STATE = "(gTaskControlBlocks[0].taskState)"; + STACK = "&(taskStack0[0])"; + REMAININGACTIVATIONS = "(gTaskControlBlocks[0].actCount)"; + CONTEXT = "0"; + vs_Home_Priority = "10"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL Preemptive"; + vs_Event_Mask = "0"; + vs_Event_Flags = "0"; + vs_max_Activations = "1"; +}; + +STACK taskStack_iSoft_Auto_OsTask_10ms_BSW { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_iSoft_Auto_OsTask_10ms_BSW_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_iSoft_Auto_OsTask_5ms_BSW { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "(gTaskControlBlocks[0].actualPrio)"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_iSoft_Auto_OsTask_1ms_BSW { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_iSoft_Auto_OsTask_1ms_BSW_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_iSoft_Auto_DEFAULT_OsTask_Init { + SIZE = "4096"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_iSoft_Auto_DEFAULT_OsTask_Init_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_iSoft_Auto_OsTask_100ms { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_iSoft_Auto_OsTask_100ms_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Idle_Core0 { + SIZE = "512"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_TaskStack_Idle_Core0"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_100ms_c1 { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_100ms_c1_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Idle_Core1 { + SIZE = "512"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_TaskStack_Idle_Core1"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_100ms_c2 { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_100ms_c2_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Idle_Core2 { + SIZE = "512"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_TaskStack_Idle_Core2"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_100ms_c3 { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_100ms_c3_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Idle_Core3 { + SIZE = "512"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_TaskStack_Idle_Core3"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_100ms_c4 { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_100ms_c4_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Idle_Core4 { + SIZE = "512"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_TaskStack_Idle_Core4"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_100ms_c5 { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_100ms_c5_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Idle_Core5 { + SIZE = "512"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_TaskStack_Idle_Core5"; + FILLPATTERN = "0xCCCCCCCC"; +}; + + + + +RESOURCE RES_SCHEDULER_CORE0 { + STATE = "Os_TraceResourceCore0[0].state"; + LOCKER = "Os_TraceResourceCore0[0].occupyObjectId"; + PRIORITY = "3"; +}; + +RESOURCE RES_SCHEDULER_CORE1 { + STATE = "Os_TraceResourceCore1[0].state"; + LOCKER = "Os_TraceResourceCore1[0].occupyObjectId"; + PRIORITY = "1"; +}; + +RESOURCE RES_SCHEDULER_CORE2 { + STATE = "Os_TraceResourceCore2[0].state"; + LOCKER = "Os_TraceResourceCore2[0].occupyObjectId"; + PRIORITY = "1"; +}; + +RESOURCE RES_SCHEDULER_CORE3 { + STATE = "Os_TraceResourceCore3[0].state"; + LOCKER = "Os_TraceResourceCore3[0].occupyObjectId"; + PRIORITY = "1"; +}; + +RESOURCE RES_SCHEDULER_CORE4 { + STATE = "Os_TraceResourceCore4[0].state"; + LOCKER = "Os_TraceResourceCore4[0].occupyObjectId"; + PRIORITY = "1"; +}; + +RESOURCE RES_SCHEDULER_CORE5 { + STATE = "Os_TraceResourceCore5[0].state"; + LOCKER = "Os_TraceResourceCore5[0].occupyObjectId"; + PRIORITY = "1"; +}; + + + +ALARM iSoft_Auto_OsAlarm_100ms { + ALARMTIME = "Os_ACBCore0[0].alarmStart"; + CYCLETIME = "Os_ACBCore0[0].alarmCycle"; + STATE = "Os_TraceAlarmCore0[0].state"; + ACTION = "ActivateTask(iSoft_Auto_OsTask_100ms)"; + COUNTER = "SystemTimer_Core_0"; +}; + +ALARM iSoft_Auto_OsAlarm_10ms_BSW { + ALARMTIME = "Os_ACBCore0[1].alarmStart"; + CYCLETIME = "Os_ACBCore0[1].alarmCycle"; + STATE = "Os_TraceAlarmCore0[1].state"; + ACTION = "SetEvent(iSoft_Auto_OsTask_10ms_BSW, iSoft_Auto_OsEvent_10ms_BSW)"; + COUNTER = "SystemTimer_Core_0"; +}; + +ALARM iSoft_Auto_OsAlarm_5ms_BSW { + ALARMTIME = "Os_ACBCore0[2].alarmStart"; + CYCLETIME = "Os_ACBCore0[2].alarmCycle"; + STATE = "Os_TraceAlarmCore0[2].state"; + ACTION = "SetEvent(iSoft_Auto_OsTask_5ms_BSW, iSoft_Auto_OsEvent_5ms_BSW)"; + COUNTER = "SystemTimer_Core_0"; +}; + +ALARM iSoft_Auto_OsAlarm_1ms_BSW { + ALARMTIME = "Os_ACBCore0[3].alarmStart"; + CYCLETIME = "Os_ACBCore0[3].alarmCycle"; + STATE = "Os_TraceAlarmCore0[3].state"; + ACTION = "SetEvent(iSoft_Auto_OsTask_1ms_BSW, iSoft_Auto_OsEvent_1ms_BSW)"; + COUNTER = "SystemTimer_Core_0"; +}; + +ALARM OsAlarm_100ms_c1 { + ALARMTIME = "Os_ACBCore1[0].alarmStart"; + CYCLETIME = "Os_ACBCore1[0].alarmCycle"; + STATE = "Os_TraceAlarmCore1[0].state"; + ACTION = "ActivateTask(OsTask_100ms_c1)"; + COUNTER = "SystemTimer_Core_1"; +}; + +ALARM OsAlarm_100ms_c2 { + ALARMTIME = "Os_ACBCore2[0].alarmStart"; + CYCLETIME = "Os_ACBCore2[0].alarmCycle"; + STATE = "Os_TraceAlarmCore2[0].state"; + ACTION = "ActivateTask(OsTask_100ms_c2)"; + COUNTER = "SystemTimer_Core_2"; +}; + +ALARM OsAlarm_100ms_c3 { + ALARMTIME = "Os_ACBCore3[0].alarmStart"; + CYCLETIME = "Os_ACBCore3[0].alarmCycle"; + STATE = "Os_TraceAlarmCore3[0].state"; + ACTION = "ActivateTask(OsTask_100ms_c3)"; + COUNTER = "SystemTimer_Core_3"; +}; + +ALARM OsAlarm_100ms_c4 { + ALARMTIME = "Os_ACBCore4[0].alarmStart"; + CYCLETIME = "Os_ACBCore4[0].alarmCycle"; + STATE = "Os_TraceAlarmCore4[0].state"; + ACTION = "ActivateTask(OsTask_100ms_c4)"; + COUNTER = "SystemTimer_Core_4"; +}; + +ALARM OsAlarm_100ms_c5 { + ALARMTIME = "Os_ACBCore5[0].alarmStart"; + CYCLETIME = "Os_ACBCore5[0].alarmCycle"; + STATE = "Os_TraceAlarmCore5[0].state"; + ACTION = "ActivateTask(OsTask_100ms_c5)"; + COUNTER = "SystemTimer_Core_5"; +}; + + + +vs_ISR SYS_TIMER_CORE0{ + vs_Priority = "199"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[0].state"; +}; + +vs_ISR REMOTECALL_CORE0{ + vs_Priority = "1"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[1].state"; +}; + +vs_ISR CAN0_INT0{ + vs_Priority = "18"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[2].state"; +}; +vs_ISR CAN0_INT1{ + vs_Priority = "19"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[3].state"; +}; +vs_ISR CAN0_INT2{ + vs_Priority = "20"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[4].state"; +}; +vs_ISR CAN0_INT3{ + vs_Priority = "21"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[5].state"; +}; +vs_ISR CAN0_INT4{ + vs_Priority = "22"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[6].state"; +}; +vs_ISR CAN0_INT5{ + vs_Priority = "23"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[7].state"; +}; +vs_ISR CAN0_INT6{ + vs_Priority = "24"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[8].state"; +}; +vs_ISR CAN0_INT7{ + vs_Priority = "25"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[9].state"; +}; +vs_ISR GTM_TOM0_0{ + vs_Priority = "8"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[10].state"; +}; +vs_ISR GTM_TIM1_5{ + vs_Priority = "33"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[11].state"; +}; + +vs_ISR SYS_TIMER_CORE1{ + vs_Priority = "199"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore1[0].state"; +}; + +vs_ISR REMOTECALL_CORE1{ + vs_Priority = "1"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore1[1].state"; +}; + + +vs_ISR SYS_TIMER_CORE2{ + vs_Priority = "199"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore2[0].state"; +}; + +vs_ISR REMOTECALL_CORE2{ + vs_Priority = "1"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore2[1].state"; +}; + + +vs_ISR SYS_TIMER_CORE3{ + vs_Priority = "199"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore3[0].state"; +}; + +vs_ISR REMOTECALL_CORE3{ + vs_Priority = "1"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore3[1].state"; +}; + + +vs_ISR SYS_TIMER_CORE4{ + vs_Priority = "199"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore4[0].state"; +}; + +vs_ISR REMOTECALL_CORE4{ + vs_Priority = "1"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore4[1].state"; +}; + + +vs_ISR SYS_TIMER_CORE5{ + vs_Priority = "199"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore5[0].state"; +}; + +vs_ISR REMOTECALL_CORE5{ + vs_Priority = "1"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore5[1].state"; +}; + + + +vs_CONFIG CONFIG_TC397{ + vs_ScalabilityClass = "SC1"; + vs_StatusLevel = "STANDARD"; +}; +/*=======[E N D O F F I L E]==============================================*/ \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace.orti.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace.orti.json new file mode 100644 index 0000000..33abd67 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace.orti.json @@ -0,0 +1,1097 @@ +{ + "version": { + "koil": "2.2", + "osSemantics": { + "type": "ORTI", + "version": "2.2" + } + }, + "implementation": { + "name": "ISoft_ORTI", + "os": { + "vs_CORE_NUM": { + "type": "int", + "variableName": "vs_CORE_NUM", + "description": "Number of Cores", + "isArray": false + }, + "vs_CORE_ID": { + "name": "Os_CoreIdType", + "type": "Os_CoreIdType", + "values": { + "CORE_ID_0": 0, + "CORE_ID_1": 1, + "CORE_ID_2": 2, + "CORE_ID_3": 3, + "CORE_ID_4": 4, + "CORE_ID_5": 5 + }, + "variableName": "vs_CORE_ID", + "description": "Current Core ID", + "isArray": true, + "totrace": false + }, + "RUNNINGTASK": { + "name": "RUNNINGTASK", + "values": { + "iSoft_Auto_OsTask_10ms_BSW": 0, + "iSoft_Auto_OsTask_5ms_BSW": 1, + "iSoft_Auto_OsTask_1ms_BSW": 2, + "iSoft_Auto_DEFAULT_OsTask_Init": 3, + "iSoft_Auto_OsTask_100ms": 4, + "OsTask_Idle_Core0": 5, + "OsTask_100ms_c1": 4096, + "OsTask_Idle_Core1": 4097, + "OsTask_100ms_c2": 8192, + "OsTask_Idle_Core2": 8193, + "OsTask_100ms_c3": 12288, + "OsTask_Idle_Core3": 12289, + "OsTask_100ms_c4": 16384, + "OsTask_Idle_Core4": 16385, + "OsTask_100ms_c5": 20480, + "OsTask_Idle_Core5": 20481, + "NoRunningTask": 65535 + }, + "variableName": "RUNNINGTASK", + "description": "Running Task Identification", + "isArray": true, + "totrace": true + }, + "RUNNINGTASKPRIORITY": { + "type": "unsigned short", + "variableName": "RUNNINGTASKPRIORITY", + "description": "Priority of Running Task", + "isArray": true + }, + "RUNNINGISR2": { + "name": "RUNNINGISR2", + "values": { + "SYS_TIMER_CORE0": 0, + "REMOTECALL_CORE0": 1, + "CAN0_INT0": 2, + "CAN0_INT1": 3, + "CAN0_INT2": 4, + "CAN0_INT3": 5, + "CAN0_INT4": 6, + "CAN0_INT5": 7, + "CAN0_INT6": 8, + "CAN0_INT7": 9, + "GTM_TOM0_0": 10, + "GTM_TIM1_5": 11, + "SYS_TIMER_CORE1": 4096, + "REMOTECALL_CORE1": 4097, + "SYS_TIMER_CORE2": 8192, + "REMOTECALL_CORE2": 8193, + "SYS_TIMER_CORE3": 12288, + "REMOTECALL_CORE3": 12289, + "SYS_TIMER_CORE4": 16384, + "REMOTECALL_CORE4": 16385, + "SYS_TIMER_CORE5": 20480, + "REMOTECALL_CORE5": 20481, + "NoRunningIsr2": 65535 + }, + "variableName": "RUNNINGISR2", + "description": "Running ISR of category 2", + "isArray": true, + "totrace": true + }, + "vs_SERVICETRACE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "GetApplicationID": 0, + "GetISRID": 1, + "CallTrustedFunction": 2, + "CheckISRMemoryAccess": 3, + "CheckTaskMemoryAccess": 4, + "CheckObjectAccess": 5, + "CheckObjectOwnership": 6, + "StartScheduleTableRel": 7, + "StartScheduleTableAbs": 8, + "StopScheduleTable": 9, + "NextScheduleTable": 10, + "StartScheduleTableSynchron": 11, + "SyncScheduleTable": 12, + "SetScheduleTableAsync": 13, + "GetScheduleTableStatus": 14, + "IncrementCounter": 15, + "GetCounterValue": 16, + "GetElapsedValue": 17, + "TerminateApplication": 18, + "AllowAccess": 19, + "GetApplicationState": 20, + "GetNumberOfActivatedCores": 21, + "GetCoreID": 22, + "StartCore": 23, + "StartNonAutosarCore": 24, + "GetSpinlock": 25, + "ReleaseSpinlock": 26, + "TryToGetSpinlock": 27, + "ShutdownAllCores": 28, + "ControlIdle": 29, + "IocSend": 30, + "IocWrite": 31, + "IocSendGroup": 32, + "IocWriteGroup": 33, + "IocReceive": 34, + "IocRead": 35, + "IocReceiveGroup": 36, + "IocReadGroup": 37, + "IocEmptyQueue": 38, + "GetCurrentApplicationID": 39, + "ReadPeripheral8": 40, + "ReadPeripheral16": 41, + "ReadPeripheral32": 42, + "WritePeripheral8": 43, + "WritePeripheral16": 44, + "WritePeripheral32": 45, + "ModifyPeripheral8": 46, + "ModifyPeripheral32": 47, + "DisableInterruptSource": 48, + "EnableInterruptSource": 49, + "ClearPendingInterrupt": 50, + "ActivateTaskAsyn": 51, + "SetEventAsyn": 52, + "ModifyPeripheral16": 53, + "WaitAllEvents": 215, + "IocCallBackNotify": 222, + "ActivateTask": 223, + "TerminateTask": 224, + "ChainTask": 225, + "Schedule": 226, + "GetTaskID": 227, + "GetTaskState": 228, + "EnableAllInterrupts": 229, + "DisableAllInterrupts": 230, + "ResumeAllInterrupts": 231, + "SuspendAllInterrupts": 232, + "ResumeOSInterrupts": 233, + "SuspendOSInterrupts": 234, + "DeclareResource": 235, + "GetResource": 236, + "ReleaseResource": 237, + "DeclareEvent": 238, + "SetEvent": 239, + "ClearEvent": 240, + "GetEvent": 241, + "WaitEvent": 242, + "GetAlarmBase": 243, + "GetAlarm": 244, + "SetRelAlarm": 245, + "SetAbsAlarm": 246, + "CancelAlarm": 247, + "GetActiveApplicationMode": 248, + "StartOS": 249, + "ShutdownOS": 250, + "ErrorHook": 251, + "PreTaskHook": 252, + "PostTaskHook": 253, + "StartupHook": 254, + "ShutdownHook": 255, + "NoService": 68 + }, + "variableName": "vs_SERVICETRACE", + "description": "OS Services Watch", + "isArray": true, + "totrace": true + }, + "LASTERROR": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "E_OK": 0, + "E_OS_ACCESS": 49, + "E_OS_CALLEVEL": 2, + "E_OS_ID": 3, + "E_OS_LIMIT": 4, + "E_OS_NOFUNC": 5, + "E_OS_RESOURCE": 6, + "E_OS_STATE": 7, + "E_OS_VALUE": 8, + "E_OS_SERVICEID": 9, + "E_OS_RATE": 10, + "E_OS_ILLEGAL_ADDRESS": 11, + "E_OS_MISSINGEND": 12, + "E_OS_DISABLEDINT": 13, + "E_OS_STACKFAULT": 14, + "E_OS_PROTECTION_MEMORY": 15, + "E_OS_PROTECTION_TIME": 16, + "E_OS_PROTECTION_LOCKED": 17, + "E_OS_PROTECTION_EXCEPTION": 18, + "E_OS_PROTECTION_RATE": 19, + "E_OS_PROTECTION_ARRIVAL": 20, + "E_OS_CORE": 21, + "E_OS_INTERFERENCE_DEADLOCK": 22, + "E_OS_NESTING_DEADLOCK": 23, + "E_OS_SPINLOCK": 24 + }, + "variableName": "LASTERROR", + "description": "Last OSEK error", + "isArray": true, + "totrace": false + }, + "CURRENTAPPMODE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "DONOTCARE": 0, + "OSDEFAULTAPPMODE": 1 + }, + "variableName": "CURRENTAPPMODE", + "description": "Current application mode", + "isArray": true, + "totrace": false + } + }, + "task": { + "PRIORITY": { + "type": "unsigned short", + "variableName": "PRIORITY", + "description": "Actual Prio", + "isArray": false + }, + "STATE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "WAITING": 0, + "READY": 1, + "SUSPENDED": 2, + "RUNNING": 3, + "START": 4 + }, + "variableName": "STATE", + "description": "Current State", + "isArray": false, + "totrace": false + }, + "STACK": { + "name": "Os_StackType", + "type": "Os_StackType", + "values": { + "taskStack_iSoft_Auto_OsTask_10ms_BSW": "&taskStack_iSoft_Auto_OsTask_10ms_BSW", + "taskStack_iSoft_Auto_OsTask_5ms_BSW": "&taskStack_iSoft_Auto_OsTask_5ms_BSW", + "taskStack_iSoft_Auto_OsTask_1ms_BSW": "&taskStack_iSoft_Auto_OsTask_1ms_BSW", + "taskStack_iSoft_Auto_DEFAULT_OsTask_Init": "&taskStack_iSoft_Auto_DEFAULT_OsTask_Init", + "taskStack_iSoft_Auto_OsTask_100ms": "&taskStack_iSoft_Auto_OsTask_100ms", + "taskStack_OsTask_Idle_Core0": "&taskStack_OsTask_Idle_Core0", + "taskStack_OsTask_100ms_c1": "&taskStack_OsTask_100ms_c1", + "taskStack_OsTask_Idle_Core1": "&taskStack_OsTask_Idle_Core1", + "taskStack_OsTask_100ms_c2": "&taskStack_OsTask_100ms_c2", + "taskStack_OsTask_Idle_Core2": "&taskStack_OsTask_Idle_Core2", + "taskStack_OsTask_100ms_c3": "&taskStack_OsTask_100ms_c3", + "taskStack_OsTask_Idle_Core3": "&taskStack_OsTask_Idle_Core3", + "taskStack_OsTask_100ms_c4": "&taskStack_OsTask_100ms_c4", + "taskStack_OsTask_Idle_Core4": "&taskStack_OsTask_Idle_Core4", + "taskStack_OsTask_100ms_c5": "&taskStack_OsTask_100ms_c5", + "taskStack_OsTask_Idle_Core5": "&taskStack_OsTask_Idle_Core5" + }, + "variableName": "STACK", + "description": "Task Stack", + "isArray": false, + "totrace": false + }, + "REMAININGACTIVATIONS": { + "type": "unsigned char", + "variableName": "REMAININGACTIVATIONS", + "description": "Remaining task activations", + "isArray": false + }, + "vs_Home_Priority": { + "type": "string", + "variableName": "vs_Home_Priority", + "description": "Home Priority" + }, + "vs_Task_Type": { + "type": "string", + "variableName": "vs_Task_Type", + "description": "Task Type" + }, + "vs_Schedule": { + "type": "string", + "variableName": "vs_Schedule", + "description": "Schedule" + }, + "vs_max_Activations": { + "type": "string", + "variableName": "vs_max_Activations", + "description": "max. Activations" + } + }, + "stack": { + "SIZE": { + "type": "", + "variableName": "SIZE", + "description": "Stack Size (Byte)", + "isArray": false + }, + "BASEADDRESS": { + "type": "unsigned char *", + "variableName": "BASEADDRESS", + "description": "Base Address", + "isArray": false + }, + "STACKDIRECTION": { + "type": "string", + "variableName": "STACKDIRECTION", + "description": "Stack Direction" + }, + "FILLPATTERN": { + "type": "unsigned char", + "variableName": "FILLPATTERN", + "description": "Stack Fill Pattern", + "isArray": false + } + }, + "alarm": { + "ALARMTIME": { + "type": "unsigned long", + "variableName": "ALARMTIME", + "description": "Alarm Time", + "isArray": false + }, + "CYCLETIME": { + "type": "unsigned long", + "variableName": "CYCLETIME", + "description": "Cycle Time", + "isArray": false + }, + "STATE": { + "name": "STATE", + "values": { + "STOPPED": 0, + "RUNNING": 1 + }, + "variableName": "STATE", + "description": "Alarm state", + "isArray": false, + "totrace": false + }, + "ACTION": { + "type": "string", + "variableName": "ACTION", + "description": "Action" + }, + "COUNTER": { + "type": "string", + "variableName": "COUNTER", + "description": "Counter" + } + }, + "resource": { + "STATE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "UNLOCKED": 0, + "LOCKED": 1 + }, + "variableName": "STATE", + "description": "Resource State", + "isArray": false, + "totrace": false + }, + "LOCKER": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "iSoft_Auto_OsTask_10ms_BSW": 0, + "iSoft_Auto_OsTask_5ms_BSW": 1, + "iSoft_Auto_OsTask_1ms_BSW": 2, + "iSoft_Auto_DEFAULT_OsTask_Init": 3, + "iSoft_Auto_OsTask_100ms": 4, + "OsTask_Idle_Core0": 5, + "OsTask_100ms_c1": 4096, + "OsTask_Idle_Core1": 4097, + "OsTask_100ms_c2": 8192, + "OsTask_Idle_Core2": 8193, + "OsTask_100ms_c3": 12288, + "OsTask_Idle_Core3": 12289, + "OsTask_100ms_c4": 16384, + "OsTask_Idle_Core4": 16385, + "OsTask_100ms_c5": 20480, + "OsTask_Idle_Core5": 20481, + "SYS_TIMER_CORE0": 32768, + "REMOTECALL_CORE0": 32769, + "CAN0_INT0": 32770, + "CAN0_INT1": 32771, + "CAN0_INT2": 32772, + "CAN0_INT3": 32773, + "CAN0_INT4": 32774, + "CAN0_INT5": 32775, + "CAN0_INT6": 32776, + "CAN0_INT7": 32777, + "GTM_TOM0_0": 32778, + "GTM_TIM1_5": 32779, + "SYS_TIMER_CORE1": 36864, + "REMOTECALL_CORE1": 36865, + "SYS_TIMER_CORE2": 40960, + "REMOTECALL_CORE2": 40961, + "SYS_TIMER_CORE3": 45056, + "REMOTECALL_CORE3": 45057, + "SYS_TIMER_CORE4": 49152, + "REMOTECALL_CORE4": 49153, + "SYS_TIMER_CORE5": 53248, + "REMOTECALL_CORE5": 53249, + "NoLoker": 65535 + }, + "variableName": "LOCKER", + "description": "Resource Locker", + "isArray": false, + "totrace": false + }, + "PRIORITY": { + "type": "string", + "variableName": "PRIORITY", + "description": "Ceiling priority" + } + }, + "isr": { + "vs_Priority": { + "type": "string", + "variableName": "vs_Priority", + "description": "Priority" + }, + "vs_Type": { + "type": "string", + "variableName": "vs_Type", + "description": "Type" + }, + "vs_State": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "EXITED": 0, + "ENTERED": 1 + }, + "variableName": "vs_State", + "description": "State", + "isArray": false, + "totrace": false + } + }, + "config": { + "vs_ScalabilityClass": { + "type": "string", + "variableName": "vs_ScalabilityClass", + "description": "Scalability Class" + }, + "vs_StatusLevel": { + "type": "string", + "variableName": "vs_StatusLevel", + "description": "Status Level" + } + } + }, + "osInstance": { + "name": "ISoft_TC397", + "coreNum": 6, + "coreConfigs": [ + { + "coreIndex": 0, + "coreId": "Os_TraceSysCore0.coreId", + "runningTask": "Os_TraceSysCore0.runTaskId", + "runningTaskPriority": "Os_TraceSysCore0.runTaskPrio", + "runningIsr2": "Os_TraceSysCore0.runIsrId", + "serviceTrace": "Os_TraceSysCore0.curServiceId", + "lastError": "Os_TraceSysCore0.LastError", + "currentAppMode": "Os_TraceSysCore0.curAppMode" + }, + { + "coreIndex": 1, + "coreId": "Os_TraceSysCore1.coreId", + "runningTask": "Os_TraceSysCore1.runTaskId", + "runningTaskPriority": "Os_TraceSysCore1.runTaskPrio", + "runningIsr2": "Os_TraceSysCore1.runIsrId", + "serviceTrace": "Os_TraceSysCore1.curServiceId", + "lastError": "Os_TraceSysCore1.LastError", + "currentAppMode": "Os_TraceSysCore1.curAppMode" + }, + { + "coreIndex": 2, + "coreId": "Os_TraceSysCore2.coreId", + "runningTask": "Os_TraceSysCore2.runTaskId", + "runningTaskPriority": "Os_TraceSysCore2.runTaskPrio", + "runningIsr2": "Os_TraceSysCore2.runIsrId", + "serviceTrace": "Os_TraceSysCore2.curServiceId", + "lastError": "Os_TraceSysCore2.LastError", + "currentAppMode": "Os_TraceSysCore2.curAppMode" + }, + { + "coreIndex": 3, + "coreId": "Os_TraceSysCore3.coreId", + "runningTask": "Os_TraceSysCore3.runTaskId", + "runningTaskPriority": "Os_TraceSysCore3.runTaskPrio", + "runningIsr2": "Os_TraceSysCore3.runIsrId", + "serviceTrace": "Os_TraceSysCore3.curServiceId", + "lastError": "Os_TraceSysCore3.LastError", + "currentAppMode": "Os_TraceSysCore3.curAppMode" + }, + { + "coreIndex": 4, + "coreId": "Os_TraceSysCore4.coreId", + "runningTask": "Os_TraceSysCore4.runTaskId", + "runningTaskPriority": "Os_TraceSysCore4.runTaskPrio", + "runningIsr2": "Os_TraceSysCore4.runIsrId", + "serviceTrace": "Os_TraceSysCore4.curServiceId", + "lastError": "Os_TraceSysCore4.LastError", + "currentAppMode": "Os_TraceSysCore4.curAppMode" + }, + { + "coreIndex": 5, + "coreId": "Os_TraceSysCore5.coreId", + "runningTask": "Os_TraceSysCore5.runTaskId", + "runningTaskPriority": "Os_TraceSysCore5.runTaskPrio", + "runningIsr2": "Os_TraceSysCore5.runIsrId", + "serviceTrace": "Os_TraceSysCore5.curServiceId", + "lastError": "Os_TraceSysCore5.LastError", + "currentAppMode": "Os_TraceSysCore5.curAppMode" + } + ] + }, + "tasks": [ + { + "name": "iSoft_Auto_OsTask_10ms_BSW", + "priority": "Os_TCBCore0[0].taskRunPrio", + "state": "Os_TCBCore0[0].taskState", + "stack": "&taskStack_iSoft_Auto_OsTask_10ms_BSW", + "remainingActivations": "Os_TCBCore0[0].taskActCount", + "homePriority": "2", + "taskType": "EXTENDED", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "iSoft_Auto_OsTask_5ms_BSW", + "priority": "Os_TCBCore0[1].taskRunPrio", + "state": "Os_TCBCore0[1].taskState", + "stack": "&taskStack_iSoft_Auto_OsTask_5ms_BSW", + "remainingActivations": "Os_TCBCore0[1].taskActCount", + "homePriority": "2", + "taskType": "EXTENDED", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "iSoft_Auto_OsTask_1ms_BSW", + "priority": "Os_TCBCore0[2].taskRunPrio", + "state": "Os_TCBCore0[2].taskState", + "stack": "&taskStack_iSoft_Auto_OsTask_1ms_BSW", + "remainingActivations": "Os_TCBCore0[2].taskActCount", + "homePriority": "2", + "taskType": "EXTENDED", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "iSoft_Auto_DEFAULT_OsTask_Init", + "priority": "Os_TCBCore0[3].taskRunPrio", + "state": "Os_TCBCore0[3].taskState", + "stack": "&taskStack_iSoft_Auto_DEFAULT_OsTask_Init", + "remainingActivations": "Os_TCBCore0[3].taskActCount", + "homePriority": "3", + "taskType": "BASIC", + "schedule": "NON", + "maxActivations": "1" + }, + { + "name": "iSoft_Auto_OsTask_100ms", + "priority": "Os_TCBCore0[4].taskRunPrio", + "state": "Os_TCBCore0[4].taskState", + "stack": "&taskStack_iSoft_Auto_OsTask_100ms", + "remainingActivations": "Os_TCBCore0[4].taskActCount", + "homePriority": "1", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Idle_Core0", + "priority": "Os_TCBCore0[5].taskRunPrio", + "state": "Os_TCBCore0[5].taskState", + "stack": "&taskStack_OsTask_Idle_Core0", + "remainingActivations": "Os_TCBCore0[5].taskActCount", + "homePriority": "0", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_100ms_c1", + "priority": "Os_TCBCore1[0].taskRunPrio", + "state": "Os_TCBCore1[0].taskState", + "stack": "&taskStack_OsTask_100ms_c1", + "remainingActivations": "Os_TCBCore1[0].taskActCount", + "homePriority": "1", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Idle_Core1", + "priority": "Os_TCBCore1[1].taskRunPrio", + "state": "Os_TCBCore1[1].taskState", + "stack": "&taskStack_OsTask_Idle_Core1", + "remainingActivations": "Os_TCBCore1[1].taskActCount", + "homePriority": "0", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_100ms_c2", + "priority": "Os_TCBCore2[0].taskRunPrio", + "state": "Os_TCBCore2[0].taskState", + "stack": "&taskStack_OsTask_100ms_c2", + "remainingActivations": "Os_TCBCore2[0].taskActCount", + "homePriority": "1", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Idle_Core2", + "priority": "Os_TCBCore2[1].taskRunPrio", + "state": "Os_TCBCore2[1].taskState", + "stack": "&taskStack_OsTask_Idle_Core2", + "remainingActivations": "Os_TCBCore2[1].taskActCount", + "homePriority": "0", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_100ms_c3", + "priority": "Os_TCBCore3[0].taskRunPrio", + "state": "Os_TCBCore3[0].taskState", + "stack": "&taskStack_OsTask_100ms_c3", + "remainingActivations": "Os_TCBCore3[0].taskActCount", + "homePriority": "1", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Idle_Core3", + "priority": "Os_TCBCore3[1].taskRunPrio", + "state": "Os_TCBCore3[1].taskState", + "stack": "&taskStack_OsTask_Idle_Core3", + "remainingActivations": "Os_TCBCore3[1].taskActCount", + "homePriority": "0", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_100ms_c4", + "priority": "Os_TCBCore4[0].taskRunPrio", + "state": "Os_TCBCore4[0].taskState", + "stack": "&taskStack_OsTask_100ms_c4", + "remainingActivations": "Os_TCBCore4[0].taskActCount", + "homePriority": "1", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Idle_Core4", + "priority": "Os_TCBCore4[1].taskRunPrio", + "state": "Os_TCBCore4[1].taskState", + "stack": "&taskStack_OsTask_Idle_Core4", + "remainingActivations": "Os_TCBCore4[1].taskActCount", + "homePriority": "0", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_100ms_c5", + "priority": "Os_TCBCore5[0].taskRunPrio", + "state": "Os_TCBCore5[0].taskState", + "stack": "&taskStack_OsTask_100ms_c5", + "remainingActivations": "Os_TCBCore5[0].taskActCount", + "homePriority": "1", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Idle_Core5", + "priority": "Os_TCBCore5[1].taskRunPrio", + "state": "Os_TCBCore5[1].taskState", + "stack": "&taskStack_OsTask_Idle_Core5", + "remainingActivations": "Os_TCBCore5[1].taskActCount", + "homePriority": "0", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + } + ], + "stacks": [ + { + "name": "taskStack_iSoft_Auto_OsTask_10ms_BSW", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_iSoft_Auto_OsTask_10ms_BSW_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_iSoft_Auto_OsTask_5ms_BSW", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_iSoft_Auto_OsTask_5ms_BSW_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_iSoft_Auto_OsTask_1ms_BSW", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_iSoft_Auto_OsTask_1ms_BSW_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_iSoft_Auto_DEFAULT_OsTask_Init", + "size": "4096", + "stackDirection": "DOWN", + "baseAddress": "&Os_iSoft_Auto_DEFAULT_OsTask_Init_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_iSoft_Auto_OsTask_100ms", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_iSoft_Auto_OsTask_100ms_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Idle_Core0", + "size": "512", + "stackDirection": "DOWN", + "baseAddress": "&Os_TaskStack_Idle_Core0", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_100ms_c1", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_100ms_c1_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Idle_Core1", + "size": "512", + "stackDirection": "DOWN", + "baseAddress": "&Os_TaskStack_Idle_Core1", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_100ms_c2", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_100ms_c2_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Idle_Core2", + "size": "512", + "stackDirection": "DOWN", + "baseAddress": "&Os_TaskStack_Idle_Core2", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_100ms_c3", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_100ms_c3_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Idle_Core3", + "size": "512", + "stackDirection": "DOWN", + "baseAddress": "&Os_TaskStack_Idle_Core3", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_100ms_c4", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_100ms_c4_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Idle_Core4", + "size": "512", + "stackDirection": "DOWN", + "baseAddress": "&Os_TaskStack_Idle_Core4", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_100ms_c5", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_100ms_c5_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Idle_Core5", + "size": "512", + "stackDirection": "DOWN", + "baseAddress": "&Os_TaskStack_Idle_Core5", + "fillPattern": 3435973836 + } + ], + "resources": [ + { + "name": "RES_SCHEDULER_CORE0", + "state": "Os_TraceResourceCore0[0].state", + "locker": "Os_TraceResourceCore0[0].occupyObjectId", + "priority": "3" + }, + { + "name": "RES_SCHEDULER_CORE1", + "state": "Os_TraceResourceCore1[0].state", + "locker": "Os_TraceResourceCore1[0].occupyObjectId", + "priority": "1" + }, + { + "name": "RES_SCHEDULER_CORE2", + "state": "Os_TraceResourceCore2[0].state", + "locker": "Os_TraceResourceCore2[0].occupyObjectId", + "priority": "1" + }, + { + "name": "RES_SCHEDULER_CORE3", + "state": "Os_TraceResourceCore3[0].state", + "locker": "Os_TraceResourceCore3[0].occupyObjectId", + "priority": "1" + }, + { + "name": "RES_SCHEDULER_CORE4", + "state": "Os_TraceResourceCore4[0].state", + "locker": "Os_TraceResourceCore4[0].occupyObjectId", + "priority": "1" + }, + { + "name": "RES_SCHEDULER_CORE5", + "state": "Os_TraceResourceCore5[0].state", + "locker": "Os_TraceResourceCore5[0].occupyObjectId", + "priority": "1" + } + ], + "alarms": [ + { + "name": "iSoft_Auto_OsAlarm_100ms", + "alarmTime": "Os_ACBCore0[0].alarmStart", + "cycleTime": "Os_ACBCore0[0].alarmCycle", + "state": "Os_TraceAlarmCore0[0].state", + "action": "ActivateTask(iSoft_Auto_OsTask_100ms)", + "counter": "SystemTimer_Core_0" + }, + { + "name": "iSoft_Auto_OsAlarm_10ms_BSW", + "alarmTime": "Os_ACBCore0[1].alarmStart", + "cycleTime": "Os_ACBCore0[1].alarmCycle", + "state": "Os_TraceAlarmCore0[1].state", + "action": "SetEvent(iSoft_Auto_OsTask_10ms_BSW, iSoft_Auto_OsEvent_10ms_BSW)", + "counter": "SystemTimer_Core_0" + }, + { + "name": "iSoft_Auto_OsAlarm_5ms_BSW", + "alarmTime": "Os_ACBCore0[2].alarmStart", + "cycleTime": "Os_ACBCore0[2].alarmCycle", + "state": "Os_TraceAlarmCore0[2].state", + "action": "SetEvent(iSoft_Auto_OsTask_5ms_BSW, iSoft_Auto_OsEvent_5ms_BSW)", + "counter": "SystemTimer_Core_0" + }, + { + "name": "iSoft_Auto_OsAlarm_1ms_BSW", + "alarmTime": "Os_ACBCore0[3].alarmStart", + "cycleTime": "Os_ACBCore0[3].alarmCycle", + "state": "Os_TraceAlarmCore0[3].state", + "action": "SetEvent(iSoft_Auto_OsTask_1ms_BSW, iSoft_Auto_OsEvent_1ms_BSW)", + "counter": "SystemTimer_Core_0" + }, + { + "name": "OsAlarm_100ms_c1", + "alarmTime": "Os_ACBCore1[0].alarmStart", + "cycleTime": "Os_ACBCore1[0].alarmCycle", + "state": "Os_TraceAlarmCore1[0].state", + "action": "ActivateTask(OsTask_100ms_c1)", + "counter": "SystemTimer_Core_1" + }, + { + "name": "OsAlarm_100ms_c2", + "alarmTime": "Os_ACBCore2[0].alarmStart", + "cycleTime": "Os_ACBCore2[0].alarmCycle", + "state": "Os_TraceAlarmCore2[0].state", + "action": "ActivateTask(OsTask_100ms_c2)", + "counter": "SystemTimer_Core_2" + }, + { + "name": "OsAlarm_100ms_c3", + "alarmTime": "Os_ACBCore3[0].alarmStart", + "cycleTime": "Os_ACBCore3[0].alarmCycle", + "state": "Os_TraceAlarmCore3[0].state", + "action": "ActivateTask(OsTask_100ms_c3)", + "counter": "SystemTimer_Core_3" + }, + { + "name": "OsAlarm_100ms_c4", + "alarmTime": "Os_ACBCore4[0].alarmStart", + "cycleTime": "Os_ACBCore4[0].alarmCycle", + "state": "Os_TraceAlarmCore4[0].state", + "action": "ActivateTask(OsTask_100ms_c4)", + "counter": "SystemTimer_Core_4" + }, + { + "name": "OsAlarm_100ms_c5", + "alarmTime": "Os_ACBCore5[0].alarmStart", + "cycleTime": "Os_ACBCore5[0].alarmCycle", + "state": "Os_TraceAlarmCore5[0].state", + "action": "ActivateTask(OsTask_100ms_c5)", + "counter": "SystemTimer_Core_5" + } + ], + "isrs": [ + { + "name": "SYS_TIMER_CORE0", + "priority": "199", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[0].state" + }, + { + "name": "REMOTECALL_CORE0", + "priority": "1", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[1].state" + }, + { + "name": "CAN0_INT0", + "priority": "18", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[2].state" + }, + { + "name": "CAN0_INT1", + "priority": "19", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[3].state" + }, + { + "name": "CAN0_INT2", + "priority": "20", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[4].state" + }, + { + "name": "CAN0_INT3", + "priority": "21", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[5].state" + }, + { + "name": "CAN0_INT4", + "priority": "22", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[6].state" + }, + { + "name": "CAN0_INT5", + "priority": "23", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[7].state" + }, + { + "name": "CAN0_INT6", + "priority": "24", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[8].state" + }, + { + "name": "CAN0_INT7", + "priority": "25", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[9].state" + }, + { + "name": "GTM_TOM0_0", + "priority": "8", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[10].state" + }, + { + "name": "GTM_TIM1_5", + "priority": "33", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[11].state" + }, + { + "name": "SYS_TIMER_CORE1", + "priority": "199", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore1[0].state" + }, + { + "name": "REMOTECALL_CORE1", + "priority": "1", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore1[1].state" + }, + { + "name": "SYS_TIMER_CORE2", + "priority": "199", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore2[0].state" + }, + { + "name": "REMOTECALL_CORE2", + "priority": "1", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore2[1].state" + }, + { + "name": "SYS_TIMER_CORE3", + "priority": "199", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore3[0].state" + }, + { + "name": "REMOTECALL_CORE3", + "priority": "1", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore3[1].state" + }, + { + "name": "SYS_TIMER_CORE4", + "priority": "199", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore4[0].state" + }, + { + "name": "REMOTECALL_CORE4", + "priority": "1", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore4[1].state" + }, + { + "name": "SYS_TIMER_CORE5", + "priority": "199", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore5[0].state" + }, + { + "name": "REMOTECALL_CORE5", + "priority": "1", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore5[1].state" + } + ], + "configs": [ + { + "name": "CONFIG_TC397", + "scalabilityClass": "SC1", + "statusLevel": "STANDARD" + } + ] +} \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace_比赛demo.orti b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace_比赛demo.orti new file mode 100644 index 0000000..bd944fa --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace_比赛demo.orti @@ -0,0 +1,627 @@ + +/** + * COPYRIGHT + * --------------------------------------------------------------------------------------------------------------------- + * Copyright (c) iSOFT INFRASTRUCTURE SOFTWARE CO., LTD. This software is proprietary to + * iSOFT INFRASTRUCTURE SOFTWARE CO., LTD., and all rights are reserved by iSOFT INFRASTRUCTURE SOFTWARE CO., LTD. + * Without the express written permission of the company, no organization or individual may copy, install, trial, + * distribute, or reverse engineer this software. For terms of use and further details, please refer to the End User + * License Agreement (EULA) or contact us business@i-soft.com.cn for more assistance. + * + * This file contains code from iSoft, which is licensed under the LGPL-2.1. However, due to a special exception, + * you are not required to comply with the provisions of section 6a of LGPL-2.1. Specifically, you may distribute + * your software, including this file, under terms of your choice, including proprietary licenses, without needing to + * provide the source code or object code as specified in section 6a. For more details, please refer to the project's + * LICENSE and EXCEPTION files and the specific exception statement. + * --------------------------------------------------------------------------------------------------------------------- + * FILE DESCRIPTION + * --------------------------------------------------------------------------------------------------------------------- + * @MCU : TC397 + * @file : Os_Trace.orti + * @license : Evaliation + * @licenseExpiryDate : 2025-12-10 09:31:45 + * @date : 2025-09-22 10:09:18 + * @customer : iSoft + * @description : Configuration parameter of OS + * @toolVersion : 2.2.0.1 + **********************************************************************************************************************/ +/*============================================================================*/ +/*=======[I N C L U D E S]====================================================*/ +/*=======[F I L E V E R S I O N I N F O R M A T I O N]===============================*/ +#define OS_CFG_H_AR_MAJOR_VERSION 19U +#define OS_CFG_H_AR_MINOR_VERSION 11U +#define OS_CFG_H_AR_PATCH_VERSION 0U +#define OS_CFG_H_SW_MAJOR_VERSION 2U +#define OS_CFG_H_SW_MINOR_VERSION 0U +#define OS_CFG_H_SW_PATCH_VERSION 0U + +/*=======[M A C R O S]========================================================*/ +/***********************/ +/* Version Section */ +/***********************/ +VERSION { + KOIL = "2.2"; + OSSEMANTICS = "ORTI", "2.2"; +}; + +/***********************/ +/* Declaration Section */ +/***********************/ +IMPLEMENTATION ISoft_ORTI { + OS { + CTYPE "int" vs_CORE_NUM, "Number of Cores"; + + ENUM "Os_CoreIdType"[ + "CORE_ID_0" = 0 + ] vs_CORE_ID[], "Current Core ID"; + + TOTRACE ENUM [ + "OsTask_5ms" = 0x0000, + "OsTask_20ms" = 0x0001, + "OsTask_Event" = 0x0002, + "OsTask_init" = 0x0003, + "OsTask_10ms" = 0x0004, + "OsTask_100ms" = 0x0005, + "OsTask_Resource" = 0x0006, + "OsTask_Rand1" = 0x0007, + "OsTask_Rand2" = 0x0008, + "OsTask_Rand3" = 0x0009, + "OsTask_Idle_Core0" = 0x000A, + "NoRunningTask" = 0xffff + ] RUNNINGTASK[], "Running Task Identification"; + + CTYPE "unsigned short" RUNNINGTASKPRIORITY[], "Priority of Running Task"; + TOTRACE ENUM [ + "SYS_TIMER_CORE0" = 0x0000, + "CPU0_SB" = 0x0001, + "CPU1_SB" = 0x0002, + + "NoRunningIsr2" = 0xffff + ] RUNNINGISR2[], "Running ISR of category 2"; + + TOTRACE ENUM "unsigned char" [ + "GetApplicationID" = "0x00", + "GetISRID" = "0x01", + "CallTrustedFunction" = "0x02", + "CheckISRMemoryAccess" = "0x03", + "CheckTaskMemoryAccess" = "0x04", + "CheckObjectAccess" = "0x05", + "CheckObjectOwnership" = "0x06", + "StartScheduleTableRel" = "0x07", + "StartScheduleTableAbs" = "0x08", + "StopScheduleTable" = "0x09", + "NextScheduleTable" = "0x0A", + "StartScheduleTableSynchron" = "0x0B", + "SyncScheduleTable" = "0x0C", + "SetScheduleTableAsync" = "0x0D", + "GetScheduleTableStatus" = "0x0E", + "IncrementCounter" = "0x0F", + "GetCounterValue" = "0x10", + "GetElapsedValue" = "0x11", + "TerminateApplication" = "0x12", + "AllowAccess" = "0x13", + "GetApplicationState" = "0x14", + "GetNumberOfActivatedCores" = "0x15", + "GetCoreID" = "0x16", + "StartCore" = "0x17", + "StartNonAutosarCore" = "0x18", + "GetSpinlock" = "0x19", + "ReleaseSpinlock" = "0x1A", + "TryToGetSpinlock" = "0x1B", + "ShutdownAllCores" = "0x1C", + "ControlIdle" = "0x1D", + "IocSend" = "0x1E", + "IocWrite" = "0x1F", + "IocSendGroup" = "0x20", + "IocWriteGroup" = "0x21", + "IocReceive" = "0x22", + "IocRead" = "0x23", + "IocReceiveGroup" = "0x24", + "IocReadGroup" = "0x25", + "IocEmptyQueue" = "0x26", + "GetCurrentApplicationID" = "0x27", + "ReadPeripheral8" = "0x28", + "ReadPeripheral16" = "0x29", + "ReadPeripheral32" = "0x2A", + "WritePeripheral8" = "0x2B", + "WritePeripheral16" = "0x2C", + "WritePeripheral32" = "0x2D", + "ModifyPeripheral8" = "0x2E", + "ModifyPeripheral32" = "0x2F", + "DisableInterruptSource" = "0x30", + "EnableInterruptSource" = "0x31", + "ClearPendingInterrupt" = "0x32", + "ActivateTaskAsyn" = "0x33", + "SetEventAsyn" = "0x34", + "ModifyPeripheral16" = "0x35", + "WaitAllEvents" = "0xD7", + "IocCallBackNotify" = "0xDE", + "ActivateTask" = "0xDF", + "TerminateTask" = "0xE0", + "ChainTask" = "0xE1", + "Schedule" = "0xE2", + "GetTaskID" = "0xE3", + "GetTaskState" = "0xE4", + "EnableAllInterrupts" = "0xE5", + "DisableAllInterrupts" = "0xE6", + "ResumeAllInterrupts" = "0xE7", + "SuspendAllInterrupts" = "0xE8", + "ResumeOSInterrupts" = "0xE9", + "SuspendOSInterrupts" = "0xEA", + "DeclareResource" = "0xEB", + "GetResource" = "0xEC", + "ReleaseResource" = "0xED", + "DeclareEvent" = "0xEE", + "SetEvent" = "0xEF", + "ClearEvent" = "0xF0", + "GetEvent" = "0xF1", + "WaitEvent" = "0xF2", + "GetAlarmBase" = "0xF3", + "GetAlarm" = "0xF4", + "SetRelAlarm" = "0xF5", + "SetAbsAlarm" = "0xF6", + "CancelAlarm" = "0xF7", + "GetActiveApplicationMode" = "0xF8", + "StartOS" = "0xF9", + "ShutdownOS" = "0xFA", + "ErrorHook" = "0xFB", + "PreTaskHook" = "0xFC", + "PostTaskHook" = "0xFD", + "StartupHook" = "0xFE", + "ShutdownHook" = "0xFF", + "NoService" = "0x44" + ] vs_SERVICETRACE[], "OS Services Watch"; + + ENUM "unsigned char" [ + "E_OK" = 0, + "E_OS_ACCESS" = 49, + "E_OS_CALLEVEL" = 2, + "E_OS_ID" = 3, + "E_OS_LIMIT" = 4, + "E_OS_NOFUNC" = 5, + "E_OS_RESOURCE" = 6, + "E_OS_STATE" = 7, + "E_OS_VALUE" = 8, + "E_OS_SERVICEID" = 9, + "E_OS_RATE" = 10, + "E_OS_ILLEGAL_ADDRESS" = 11, + "E_OS_MISSINGEND" = 12, + "E_OS_DISABLEDINT" = 13, + "E_OS_STACKFAULT" = 14, + "E_OS_PROTECTION_MEMORY" = 15, + "E_OS_PROTECTION_TIME" = 16, + "E_OS_PROTECTION_LOCKED" = 17, + "E_OS_PROTECTION_EXCEPTION" = 18, + "E_OS_PROTECTION_RATE" = 19, + "E_OS_PROTECTION_ARRIVAL" = 20, + "E_OS_CORE" = 21, + "E_OS_INTERFERENCE_DEADLOCK" = 22, + "E_OS_NESTING_DEADLOCK" = 23, + "E_OS_SPINLOCK" = 24 + ] LASTERROR[], "Last OSEK error"; + + ENUM "unsigned char" [ + "DONOTCARE" = 0x0, + "OSDEFAULTAPPMODE" = 0x01, + ] CURRENTAPPMODE[], "Current application mode"; + + }, "OS"; + + TASK { + CTYPE "unsigned short" PRIORITY , "Actual Prio"; + + ENUM "unsigned char" [ + "WAITING" = 0, + "READY" = 1, + "SUSPENDED" = 2, + "RUNNING" = 3, + "START" = 4 + ] STATE, "Current State"; + + ENUM "Os_StackType" [ + "taskStack_OsTask_5ms" : taskStack_OsTask_5ms = "&taskStack_OsTask_5ms", + "taskStack_OsTask_20ms" : taskStack_OsTask_20ms = "&taskStack_OsTask_20ms", + "taskStack_OsTask_Event" : taskStack_OsTask_Event = "&taskStack_OsTask_Event", + "taskStack_OsTask_init" : taskStack_OsTask_init = "&taskStack_OsTask_init", + "taskStack_OsTask_10ms" : taskStack_OsTask_10ms = "&taskStack_OsTask_10ms", + "taskStack_OsTask_100ms" : taskStack_OsTask_100ms = "&taskStack_OsTask_100ms", + "taskStack_OsTask_Resource" : taskStack_OsTask_Resource = "&taskStack_OsTask_Resource", + "taskStack_OsTask_Rand1" : taskStack_OsTask_Rand1 = "&taskStack_OsTask_Rand1", + "taskStack_OsTask_Rand2" : taskStack_OsTask_Rand2 = "&taskStack_OsTask_Rand2", + "taskStack_OsTask_Rand3" : taskStack_OsTask_Rand3 = "&taskStack_OsTask_Rand3", + "taskStack_OsTask_Idle_Core0" : taskStack_OsTask_Idle_Core0 = "&taskStack_OsTask_Idle_Core0", + ] STACK, "Task Stack"; + + CTYPE "unsigned char" REMAININGACTIVATIONS, "Remaining task activations"; + + STRING vs_Home_Priority, "Home Priority"; + STRING vs_Task_Type, "Task Type"; /* BASIC / EXTENDED */ + STRING vs_Schedule, "Schedule"; /* non preemptive, full preemptive */ + STRING vs_max_Activations, "max. Activations"; + }, "Tasks"; + + STACK { + CTYPE SIZE, "Stack Size (Byte)"; + CTYPE "unsigned char *" BASEADDRESS, "Base Address"; + STRING STACKDIRECTION, "Stack Direction"; + CTYPE "unsigned char" FILLPATTERN, "Stack Fill Pattern"; + }, "Stacks"; + + ALARM { + CTYPE "unsigned long" ALARMTIME, "Alarm Time"; + CTYPE "unsigned long" CYCLETIME, "Cycle Time"; + ENUM [ + "STOPPED" = 0, + "RUNNING" = 1 + ] STATE, "Alarm state"; + STRING ACTION, "Action"; + STRING COUNTER, "Counter"; + }, "Alarms"; + + RESOURCE { + ENUM "unsigned char" [ + "UNLOCKED" = 0, + "LOCKED" = 1 + ] STATE, "Resource State"; + ENUM "unsigned char" [ + "OsTask_5ms" = 0x0000, + "OsTask_20ms" = 0x0001, + "OsTask_Event" = 0x0002, + "OsTask_init" = 0x0003, + "OsTask_10ms" = 0x0004, + "OsTask_100ms" = 0x0005, + "OsTask_Resource" = 0x0006, + "OsTask_Rand1" = 0x0007, + "OsTask_Rand2" = 0x0008, + "OsTask_Rand3" = 0x0009, + "OsTask_Idle_Core0" = 0x000A, + "SYS_TIMER_CORE0" = 0x8000, + "CPU0_SB" = 0x8001, + "CPU1_SB" = 0x8002, + + "NoLoker" = 0xFFFF + ] LOCKER, "Resource Locker"; + STRING PRIORITY, "Ceiling priority"; + }, "Resources"; + + vs_ISR { + STRING vs_Priority, "Priority"; + STRING vs_Type, "Type"; + ENUM "unsigned char" [ + "EXITED" = 0, + "ENTERED" = 1 + ] vs_State, "State"; + }, "ISRs"; + + vs_CONFIG { + STRING vs_ScalabilityClass, "Scalability Class"; + STRING vs_StatusLevel, "Status Level"; + }, "OS Configuration"; + +}; /* END OF IMPLEMENTATION */ + + +/***********************/ +/* Information Section */ +/***********************/ +OS ISoft_TC397 { + + vs_CORE_NUM = 1; + + vs_CORE_ID[0] = "Os_TraceSysCore0.coreId"; + RUNNINGTASK[0] = "Os_TraceSysCore0.runTaskId"; + RUNNINGTASKPRIORITY[0] = "Os_TraceSysCore0.runTaskPrio"; + RUNNINGISR2[0] = "Os_TraceSysCore0.runIsrId"; + vs_SERVICETRACE[0] = "Os_TraceSysCore0.curServiceId"; + LASTERROR[0] = "Os_TraceSysCore0.LastError"; + CURRENTAPPMODE[0] = "Os_TraceSysCore0.curAppMode"; + +}; + + +TASK OsTask_5ms { + PRIORITY = "Os_TCBCore0[0].taskRunPrio"; + STATE = "Os_TCBCore0[0].taskState"; + STACK = "&taskStack_OsTask_5ms"; + REMAININGACTIVATIONS = "Os_TCBCore0[0].taskActCount"; + + vs_Home_Priority = "2"; + vs_Task_Type = "EXTENDED"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_20ms { + PRIORITY = "Os_TCBCore0[1].taskRunPrio"; + STATE = "Os_TCBCore0[1].taskState"; + STACK = "&taskStack_OsTask_20ms"; + REMAININGACTIVATIONS = "Os_TCBCore0[1].taskActCount"; + + vs_Home_Priority = "4"; + vs_Task_Type = "EXTENDED"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_Event { + PRIORITY = "Os_TCBCore0[2].taskRunPrio"; + STATE = "Os_TCBCore0[2].taskState"; + STACK = "&taskStack_OsTask_Event"; + REMAININGACTIVATIONS = "Os_TCBCore0[2].taskActCount"; + + vs_Home_Priority = "6"; + vs_Task_Type = "EXTENDED"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_init { + PRIORITY = "Os_TCBCore0[3].taskRunPrio"; + STATE = "Os_TCBCore0[3].taskState"; + STACK = "&taskStack_OsTask_init"; + REMAININGACTIVATIONS = "Os_TCBCore0[3].taskActCount"; + + vs_Home_Priority = "1"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_10ms { + PRIORITY = "Os_TCBCore0[4].taskRunPrio"; + STATE = "Os_TCBCore0[4].taskState"; + STACK = "&taskStack_OsTask_10ms"; + REMAININGACTIVATIONS = "Os_TCBCore0[4].taskActCount"; + + vs_Home_Priority = "3"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_100ms { + PRIORITY = "Os_TCBCore0[5].taskRunPrio"; + STATE = "Os_TCBCore0[5].taskState"; + STACK = "&taskStack_OsTask_100ms"; + REMAININGACTIVATIONS = "Os_TCBCore0[5].taskActCount"; + + vs_Home_Priority = "5"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_Resource { + PRIORITY = "Os_TCBCore0[6].taskRunPrio"; + STATE = "Os_TCBCore0[6].taskState"; + STACK = "&taskStack_OsTask_Resource"; + REMAININGACTIVATIONS = "Os_TCBCore0[6].taskActCount"; + + vs_Home_Priority = "1"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_Rand1 { + PRIORITY = "Os_TCBCore0[7].taskRunPrio"; + STATE = "Os_TCBCore0[7].taskState"; + STACK = "&taskStack_OsTask_Rand1"; + REMAININGACTIVATIONS = "Os_TCBCore0[7].taskActCount"; + + vs_Home_Priority = "3"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_Rand2 { + PRIORITY = "Os_TCBCore0[8].taskRunPrio"; + STATE = "Os_TCBCore0[8].taskState"; + STACK = "&taskStack_OsTask_Rand2"; + REMAININGACTIVATIONS = "Os_TCBCore0[8].taskActCount"; + + vs_Home_Priority = "4"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + +TASK OsTask_Rand3 { + PRIORITY = "Os_TCBCore0[9].taskRunPrio"; + STATE = "Os_TCBCore0[9].taskState"; + STACK = "&taskStack_OsTask_Rand3"; + REMAININGACTIVATIONS = "Os_TCBCore0[9].taskActCount"; + + vs_Home_Priority = "7"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; +TASK OsTask_Idle_Core0 { + PRIORITY = "Os_TCBCore0[10].taskRunPrio"; + STATE = "Os_TCBCore0[10].taskState"; + STACK = "&taskStack_OsTask_Idle_Core0"; + REMAININGACTIVATIONS = "Os_TCBCore0[10].taskActCount"; + + vs_Home_Priority = "0"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL"; + vs_max_Activations = "1"; +}; + + + + + +STACK taskStack_OsTask_5ms { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_5ms_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_20ms { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_20ms_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Event { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_Event_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_init { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_init_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_10ms { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_10ms_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_100ms { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_100ms_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Resource { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_Resource_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Rand1 { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_Rand1_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Rand2 { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_Rand2_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Rand3 { + SIZE = "1024"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_OsTask_Rand3_Stack"; + FILLPATTERN = "0xCCCCCCCC"; +}; + +STACK taskStack_OsTask_Idle_Core0 { + SIZE = "512"; + STACKDIRECTION = "DOWN"; + BASEADDRESS = "&Os_TaskStack_Idle_Core0"; + FILLPATTERN = "0xCCCCCCCC"; +}; + + + + + + +RESOURCE OsResource_1 { + STATE = "Os_TraceResourceCore0[0].state"; + LOCKER = "Os_TraceResourceCore0[0].occupyObjectId"; + PRIORITY = "3"; +}; + +RESOURCE OsResource_2 { + STATE = "Os_TraceResourceCore0[1].state"; + LOCKER = "Os_TraceResourceCore0[1].occupyObjectId"; + PRIORITY = "5"; +}; + +RESOURCE OsResource_Init { + STATE = "Os_TraceResourceCore0[2].state"; + LOCKER = "Os_TraceResourceCore0[2].occupyObjectId"; + PRIORITY = "1"; +}; + + + +ALARM OsAlarm_5ms { + ALARMTIME = "Os_ACBCore0[0].alarmStart"; + CYCLETIME = "Os_ACBCore0[0].alarmCycle"; + STATE = "Os_TraceAlarmCore0[0].state"; + ACTION = "ActivateTask(OsTask_5ms)"; + COUNTER = "SystemTimer_Core_0"; +}; + +ALARM OsAlarm_10ms { + ALARMTIME = "Os_ACBCore0[1].alarmStart"; + CYCLETIME = "Os_ACBCore0[1].alarmCycle"; + STATE = "Os_TraceAlarmCore0[1].state"; + ACTION = "ActivateTask(OsTask_10ms)"; + COUNTER = "SystemTimer_Core_0"; +}; + +ALARM OsAlarm_20ms { + ALARMTIME = "Os_ACBCore0[2].alarmStart"; + CYCLETIME = "Os_ACBCore0[2].alarmCycle"; + STATE = "Os_TraceAlarmCore0[2].state"; + ACTION = "ActivateTask(OsTask_20ms)"; + COUNTER = "SystemTimer_Core_0"; +}; + +ALARM OsAlarm_100ms { + ALARMTIME = "Os_ACBCore0[3].alarmStart"; + CYCLETIME = "Os_ACBCore0[3].alarmCycle"; + STATE = "Os_TraceAlarmCore0[3].state"; + ACTION = "ActivateTask(OsTask_100ms)"; + COUNTER = "SystemTimer_Core_0"; +}; + +ALARM OsAlarm_500ms { + ALARMTIME = "Os_ACBCore0[4].alarmStart"; + CYCLETIME = "Os_ACBCore0[4].alarmCycle"; + STATE = "Os_TraceAlarmCore0[4].state"; + ACTION = "ActivateTask(OsTask_Rand3)"; + COUNTER = "SystemTimer_Core_0"; +}; + + + + +vs_ISR SYS_TIMER_CORE0 { + vs_Priority = "199"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[0].state"; +}; + + +vs_ISR CPU0_SB { + vs_Priority = "101"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[1].state"; +}; + +vs_ISR CPU1_SB { + vs_Priority = "123"; + vs_Type = "CATEGORY_2"; + vs_State = "Os_TraceIsrCore0[2].state"; +}; + + + +vs_CONFIG CONFIG_TC397{ + vs_ScalabilityClass = "SC1"; + vs_StatusLevel = "EXTENDED"; +}; +/*=======[E N D O F F I L E]==============================================*/ \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace_比赛demo.orti.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace_比赛demo.orti.json new file mode 100644 index 0000000..fce68bb --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/Os_Trace_比赛demo.orti.json @@ -0,0 +1,1563 @@ +{ + "id": "", + "name": "", + "cpuFreq": 100, + "version": { + "koil": "2.2", + "osSemantics": { + "type": "ORTI", + "version": "2.2" + } + }, + "implementation": { + "name": "ISoft_ORTI", + "os": { + "vs_CORE_NUM": { + "type": "int", + "variableName": "vs_CORE_NUM", + "description": "Number of Cores", + "isArray": false + }, + "vs_CORE_ID": { + "name": "Os_CoreIdType", + "type": "Os_CoreIdType", + "values": { + "CORE_ID_0": 0 + }, + "variableName": "vs_CORE_ID", + "description": "Current Core ID", + "isArray": true, + "totrace": false + }, + "RUNNINGTASK": { + "name": "RUNNINGTASK", + "values": { + "OsTask_5ms": 0, + "OsTask_20ms": 1, + "OsTask_Event": 2, + "OsTask_init": 3, + "OsTask_10ms": 4, + "OsTask_100ms": 5, + "OsTask_Resource": 6, + "OsTask_Rand1": 7, + "OsTask_Rand2": 8, + "OsTask_Rand3": 9, + "OsTask_Idle_Core0": 10, + "NoRunningTask": 65535 + }, + "variableName": "RUNNINGTASK", + "description": "Running Task Identification", + "isArray": true, + "totrace": true + }, + "RUNNINGTASKPRIORITY": { + "type": "unsigned short", + "variableName": "RUNNINGTASKPRIORITY", + "description": "Priority of Running Task", + "isArray": true + }, + "RUNNINGISR2": { + "name": "RUNNINGISR2", + "values": { + "SYS_TIMER_CORE0": 0, + "CPU0_SB": 1, + "CPU1_SB": 2, + "NoRunningIsr2": 65535 + }, + "variableName": "RUNNINGISR2", + "description": "Running ISR of category 2", + "isArray": true, + "totrace": true + }, + "vs_SERVICETRACE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "GetApplicationID": 0, + "GetISRID": 1, + "CallTrustedFunction": 2, + "CheckISRMemoryAccess": 3, + "CheckTaskMemoryAccess": 4, + "CheckObjectAccess": 5, + "CheckObjectOwnership": 6, + "StartScheduleTableRel": 7, + "StartScheduleTableAbs": 8, + "StopScheduleTable": 9, + "NextScheduleTable": 10, + "StartScheduleTableSynchron": 11, + "SyncScheduleTable": 12, + "SetScheduleTableAsync": 13, + "GetScheduleTableStatus": 14, + "IncrementCounter": 15, + "GetCounterValue": 16, + "GetElapsedValue": 17, + "TerminateApplication": 18, + "AllowAccess": 19, + "GetApplicationState": 20, + "GetNumberOfActivatedCores": 21, + "GetCoreID": 22, + "StartCore": 23, + "StartNonAutosarCore": 24, + "GetSpinlock": 25, + "ReleaseSpinlock": 26, + "TryToGetSpinlock": 27, + "ShutdownAllCores": 28, + "ControlIdle": 29, + "IocSend": 30, + "IocWrite": 31, + "IocSendGroup": 32, + "IocWriteGroup": 33, + "IocReceive": 34, + "IocRead": 35, + "IocReceiveGroup": 36, + "IocReadGroup": 37, + "IocEmptyQueue": 38, + "GetCurrentApplicationID": 39, + "ReadPeripheral8": 40, + "ReadPeripheral16": 41, + "ReadPeripheral32": 42, + "WritePeripheral8": 43, + "WritePeripheral16": 44, + "WritePeripheral32": 45, + "ModifyPeripheral8": 46, + "ModifyPeripheral32": 47, + "DisableInterruptSource": 48, + "EnableInterruptSource": 49, + "ClearPendingInterrupt": 50, + "ActivateTaskAsyn": 51, + "SetEventAsyn": 52, + "ModifyPeripheral16": 53, + "WaitAllEvents": 215, + "IocCallBackNotify": 222, + "ActivateTask": 223, + "TerminateTask": 224, + "ChainTask": 225, + "Schedule": 226, + "GetTaskID": 227, + "GetTaskState": 228, + "EnableAllInterrupts": 229, + "DisableAllInterrupts": 230, + "ResumeAllInterrupts": 231, + "SuspendAllInterrupts": 232, + "ResumeOSInterrupts": 233, + "SuspendOSInterrupts": 234, + "DeclareResource": 235, + "GetResource": 236, + "ReleaseResource": 237, + "DeclareEvent": 238, + "SetEvent": 239, + "ClearEvent": 240, + "GetEvent": 241, + "WaitEvent": 242, + "GetAlarmBase": 243, + "GetAlarm": 244, + "SetRelAlarm": 245, + "SetAbsAlarm": 246, + "CancelAlarm": 247, + "GetActiveApplicationMode": 248, + "StartOS": 249, + "ShutdownOS": 250, + "ErrorHook": 251, + "PreTaskHook": 252, + "PostTaskHook": 253, + "StartupHook": 254, + "ShutdownHook": 255, + "NoService": 68 + }, + "variableName": "vs_SERVICETRACE", + "description": "OS Services Watch", + "isArray": true, + "totrace": true + }, + "LASTERROR": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "E_OK": 0, + "E_OS_ACCESS": 49, + "E_OS_CALLEVEL": 2, + "E_OS_ID": 3, + "E_OS_LIMIT": 4, + "E_OS_NOFUNC": 5, + "E_OS_RESOURCE": 6, + "E_OS_STATE": 7, + "E_OS_VALUE": 8, + "E_OS_SERVICEID": 9, + "E_OS_RATE": 10, + "E_OS_ILLEGAL_ADDRESS": 11, + "E_OS_MISSINGEND": 12, + "E_OS_DISABLEDINT": 13, + "E_OS_STACKFAULT": 14, + "E_OS_PROTECTION_MEMORY": 15, + "E_OS_PROTECTION_TIME": 16, + "E_OS_PROTECTION_LOCKED": 17, + "E_OS_PROTECTION_EXCEPTION": 18, + "E_OS_PROTECTION_RATE": 19, + "E_OS_PROTECTION_ARRIVAL": 20, + "E_OS_CORE": 21, + "E_OS_INTERFERENCE_DEADLOCK": 22, + "E_OS_NESTING_DEADLOCK": 23, + "E_OS_SPINLOCK": 24 + }, + "variableName": "LASTERROR", + "description": "Last OSEK error", + "isArray": true, + "totrace": false + }, + "CURRENTAPPMODE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "DONOTCARE": 0, + "OSDEFAULTAPPMODE": 1 + }, + "variableName": "CURRENTAPPMODE", + "description": "Current application mode", + "isArray": true, + "totrace": false + } + }, + "task": { + "PRIORITY": { + "type": "unsigned short", + "variableName": "PRIORITY", + "description": "Actual Prio", + "isArray": false + }, + "STATE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "WAITING": 0, + "READY": 1, + "SUSPENDED": 2, + "RUNNING": 3, + "START": 4 + }, + "variableName": "STATE", + "description": "Current State", + "isArray": false, + "totrace": false + }, + "STACK": { + "name": "Os_StackType", + "type": "Os_StackType", + "values": { + "taskStack_OsTask_5ms": "&taskStack_OsTask_5ms", + "taskStack_OsTask_20ms": "&taskStack_OsTask_20ms", + "taskStack_OsTask_Event": "&taskStack_OsTask_Event", + "taskStack_OsTask_init": "&taskStack_OsTask_init", + "taskStack_OsTask_10ms": "&taskStack_OsTask_10ms", + "taskStack_OsTask_100ms": "&taskStack_OsTask_100ms", + "taskStack_OsTask_Resource": "&taskStack_OsTask_Resource", + "taskStack_OsTask_Rand1": "&taskStack_OsTask_Rand1", + "taskStack_OsTask_Rand2": "&taskStack_OsTask_Rand2", + "taskStack_OsTask_Rand3": "&taskStack_OsTask_Rand3", + "taskStack_OsTask_Idle_Core0": "&taskStack_OsTask_Idle_Core0" + }, + "variableName": "STACK", + "description": "Task Stack", + "isArray": false, + "totrace": false + }, + "REMAININGACTIVATIONS": { + "type": "unsigned char", + "variableName": "REMAININGACTIVATIONS", + "description": "Remaining task activations", + "isArray": false + }, + "vs_Home_Priority": { + "type": "string", + "variableName": "vs_Home_Priority", + "description": "Home Priority" + }, + "vs_Task_Type": { + "type": "string", + "variableName": "vs_Task_Type", + "description": "Task Type" + }, + "vs_Schedule": { + "type": "string", + "variableName": "vs_Schedule", + "description": "Schedule" + }, + "vs_max_Activations": { + "type": "string", + "variableName": "vs_max_Activations", + "description": "max. Activations" + } + }, + "stack": { + "SIZE": { + "type": "", + "variableName": "SIZE", + "description": "Stack Size (Byte)", + "isArray": false + }, + "BASEADDRESS": { + "type": "unsigned char *", + "variableName": "BASEADDRESS", + "description": "Base Address", + "isArray": false + }, + "STACKDIRECTION": { + "type": "string", + "variableName": "STACKDIRECTION", + "description": "Stack Direction" + }, + "FILLPATTERN": { + "type": "unsigned char", + "variableName": "FILLPATTERN", + "description": "Stack Fill Pattern", + "isArray": false + } + }, + "alarm": { + "ALARMTIME": { + "type": "unsigned long", + "variableName": "ALARMTIME", + "description": "Alarm Time", + "isArray": false + }, + "CYCLETIME": { + "type": "unsigned long", + "variableName": "CYCLETIME", + "description": "Cycle Time", + "isArray": false + }, + "STATE": { + "name": "STATE", + "values": { + "STOPPED": 0, + "RUNNING": 1 + }, + "variableName": "STATE", + "description": "Alarm state", + "isArray": false, + "totrace": false + }, + "ACTION": { + "type": "string", + "variableName": "ACTION", + "description": "Action" + }, + "COUNTER": { + "type": "string", + "variableName": "COUNTER", + "description": "Counter" + } + }, + "resource": { + "STATE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "UNLOCKED": 0, + "LOCKED": 1 + }, + "variableName": "STATE", + "description": "Resource State", + "isArray": false, + "totrace": false + }, + "LOCKER": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "OsTask_5ms": 0, + "OsTask_20ms": 1, + "OsTask_Event": 2, + "OsTask_init": 3, + "OsTask_10ms": 4, + "OsTask_100ms": 5, + "OsTask_Resource": 6, + "OsTask_Rand1": 7, + "OsTask_Rand2": 8, + "OsTask_Rand3": 9, + "OsTask_Idle_Core0": 10, + "SYS_TIMER_CORE0": 32768, + "CPU0_SB": 32769, + "CPU1_SB": 32770, + "NoLoker": 65535 + }, + "variableName": "LOCKER", + "description": "Resource Locker", + "isArray": false, + "totrace": false + }, + "PRIORITY": { + "type": "string", + "variableName": "PRIORITY", + "description": "Ceiling priority" + } + }, + "isr": { + "vs_Priority": { + "type": "string", + "variableName": "vs_Priority", + "description": "Priority" + }, + "vs_Type": { + "type": "string", + "variableName": "vs_Type", + "description": "Type" + }, + "vs_State": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "EXITED": 0, + "ENTERED": 1 + }, + "variableName": "vs_State", + "description": "State", + "isArray": false, + "totrace": false + } + }, + "config": { + "vs_ScalabilityClass": { + "type": "string", + "variableName": "vs_ScalabilityClass", + "description": "Scalability Class" + }, + "vs_StatusLevel": { + "type": "string", + "variableName": "vs_StatusLevel", + "description": "Status Level" + } + } + }, + "osInstance": { + "name": "ISoft_TC397", + "coreNum": 1, + "coreConfigs": [ + { + "coreIndex": 0, + "coreId": "Os_TraceSysCore0.coreId", + "runningTask": "Os_TraceSysCore0.runTaskId", + "runningTaskPriority": "Os_TraceSysCore0.runTaskPrio", + "runningIsr2": "Os_TraceSysCore0.runIsrId", + "serviceTrace": "Os_TraceSysCore0.curServiceId", + "lastError": "Os_TraceSysCore0.LastError", + "currentAppMode": "Os_TraceSysCore0.curAppMode" + } + ] + }, + "tasks": [ + { + "name": "OsTask_5ms", + "priority": "Os_TCBCore0[0].taskRunPrio", + "state": "Os_TCBCore0[0].taskState", + "stack": "&taskStack_OsTask_5ms", + "remainingActivations": "Os_TCBCore0[0].taskActCount", + "homePriority": "2", + "taskType": "EXTENDED", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_20ms", + "priority": "Os_TCBCore0[1].taskRunPrio", + "state": "Os_TCBCore0[1].taskState", + "stack": "&taskStack_OsTask_20ms", + "remainingActivations": "Os_TCBCore0[1].taskActCount", + "homePriority": "4", + "taskType": "EXTENDED", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Event", + "priority": "Os_TCBCore0[2].taskRunPrio", + "state": "Os_TCBCore0[2].taskState", + "stack": "&taskStack_OsTask_Event", + "remainingActivations": "Os_TCBCore0[2].taskActCount", + "homePriority": "6", + "taskType": "EXTENDED", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_init", + "priority": "Os_TCBCore0[3].taskRunPrio", + "state": "Os_TCBCore0[3].taskState", + "stack": "&taskStack_OsTask_init", + "remainingActivations": "Os_TCBCore0[3].taskActCount", + "homePriority": "1", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_10ms", + "priority": "Os_TCBCore0[4].taskRunPrio", + "state": "Os_TCBCore0[4].taskState", + "stack": "&taskStack_OsTask_10ms", + "remainingActivations": "Os_TCBCore0[4].taskActCount", + "homePriority": "3", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_100ms", + "priority": "Os_TCBCore0[5].taskRunPrio", + "state": "Os_TCBCore0[5].taskState", + "stack": "&taskStack_OsTask_100ms", + "remainingActivations": "Os_TCBCore0[5].taskActCount", + "homePriority": "5", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Resource", + "priority": "Os_TCBCore0[6].taskRunPrio", + "state": "Os_TCBCore0[6].taskState", + "stack": "&taskStack_OsTask_Resource", + "remainingActivations": "Os_TCBCore0[6].taskActCount", + "homePriority": "1", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Rand1", + "priority": "Os_TCBCore0[7].taskRunPrio", + "state": "Os_TCBCore0[7].taskState", + "stack": "&taskStack_OsTask_Rand1", + "remainingActivations": "Os_TCBCore0[7].taskActCount", + "homePriority": "3", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Rand2", + "priority": "Os_TCBCore0[8].taskRunPrio", + "state": "Os_TCBCore0[8].taskState", + "stack": "&taskStack_OsTask_Rand2", + "remainingActivations": "Os_TCBCore0[8].taskActCount", + "homePriority": "4", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Rand3", + "priority": "Os_TCBCore0[9].taskRunPrio", + "state": "Os_TCBCore0[9].taskState", + "stack": "&taskStack_OsTask_Rand3", + "remainingActivations": "Os_TCBCore0[9].taskActCount", + "homePriority": "7", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "OsTask_Idle_Core0", + "priority": "Os_TCBCore0[10].taskRunPrio", + "state": "Os_TCBCore0[10].taskState", + "stack": "&taskStack_OsTask_Idle_Core0", + "remainingActivations": "Os_TCBCore0[10].taskActCount", + "homePriority": "0", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + } + ], + "stacks": [ + { + "name": "taskStack_OsTask_5ms", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_5ms_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_20ms", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_20ms_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Event", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_Event_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_init", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_init_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_10ms", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_10ms_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_100ms", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_100ms_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Resource", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_Resource_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Rand1", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_Rand1_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Rand2", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_Rand2_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Rand3", + "size": "1024", + "stackDirection": "DOWN", + "baseAddress": "&Os_OsTask_Rand3_Stack", + "fillPattern": 3435973836 + }, + { + "name": "taskStack_OsTask_Idle_Core0", + "size": "512", + "stackDirection": "DOWN", + "baseAddress": "&Os_TaskStack_Idle_Core0", + "fillPattern": 3435973836 + } + ], + "resources": [ + { + "name": "OsResource_1", + "state": "Os_TraceResourceCore0[0].state", + "locker": "Os_TraceResourceCore0[0].occupyObjectId", + "priority": "3" + }, + { + "name": "OsResource_2", + "state": "Os_TraceResourceCore0[1].state", + "locker": "Os_TraceResourceCore0[1].occupyObjectId", + "priority": "5" + }, + { + "name": "OsResource_Init", + "state": "Os_TraceResourceCore0[2].state", + "locker": "Os_TraceResourceCore0[2].occupyObjectId", + "priority": "1" + } + ], + "alarms": [ + { + "name": "OsAlarm_5ms", + "alarmTime": "Os_ACBCore0[0].alarmStart", + "cycleTime": "Os_ACBCore0[0].alarmCycle", + "state": "Os_TraceAlarmCore0[0].state", + "action": "ActivateTask(OsTask_5ms)", + "counter": "SystemTimer_Core_0" + }, + { + "name": "OsAlarm_10ms", + "alarmTime": "Os_ACBCore0[1].alarmStart", + "cycleTime": "Os_ACBCore0[1].alarmCycle", + "state": "Os_TraceAlarmCore0[1].state", + "action": "ActivateTask(OsTask_10ms)", + "counter": "SystemTimer_Core_0" + }, + { + "name": "OsAlarm_20ms", + "alarmTime": "Os_ACBCore0[2].alarmStart", + "cycleTime": "Os_ACBCore0[2].alarmCycle", + "state": "Os_TraceAlarmCore0[2].state", + "action": "ActivateTask(OsTask_20ms)", + "counter": "SystemTimer_Core_0" + }, + { + "name": "OsAlarm_100ms", + "alarmTime": "Os_ACBCore0[3].alarmStart", + "cycleTime": "Os_ACBCore0[3].alarmCycle", + "state": "Os_TraceAlarmCore0[3].state", + "action": "ActivateTask(OsTask_100ms)", + "counter": "SystemTimer_Core_0" + }, + { + "name": "OsAlarm_500ms", + "alarmTime": "Os_ACBCore0[4].alarmStart", + "cycleTime": "Os_ACBCore0[4].alarmCycle", + "state": "Os_TraceAlarmCore0[4].state", + "action": "ActivateTask(OsTask_Rand3)", + "counter": "SystemTimer_Core_0" + } + ], + "isrs": [ + { + "name": "SYS_TIMER_CORE0", + "priority": "199", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[0].state" + }, + { + "name": "CPU0_SB", + "priority": "101", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[1].state" + }, + { + "name": "CPU1_SB", + "priority": "123", + "type": "CATEGORY_2", + "state": "Os_TraceIsrCore0[2].state" + } + ], + "configs": [ + { + "name": "CONFIG_TC397", + "scalabilityClass": "SC1", + "statusLevel": "EXTENDED" + } + ], + "coreConfigs": [ + { + "id": 0, + "name": "OsTask_5ms", + "coreId": 0, + "type": 0, + "color": "rgb(205,105,19)" + }, + { + "id": 1, + "name": "OsTask_20ms", + "coreId": 0, + "type": 0, + "color": "rgb(148,189,9)" + }, + { + "id": 2, + "name": "OsTask_Event", + "coreId": 0, + "type": 0, + "color": "rgb(239,174,191)" + }, + { + "id": 3, + "name": "OsTask_init", + "coreId": 0, + "type": 0, + "color": "rgb(190,28,85)" + }, + { + "id": 4, + "name": "OsTask_10ms", + "coreId": 0, + "type": 0, + "color": "rgb(110,83,139)" + }, + { + "id": 5, + "name": "OsTask_100ms", + "coreId": 0, + "type": 0, + "color": "rgb(16,194,146)" + }, + { + "id": 6, + "name": "OsTask_Resource", + "coreId": 0, + "type": 0, + "color": "rgb(235,204,169)" + }, + { + "id": 7, + "name": "OsTask_Rand1", + "coreId": 0, + "type": 0, + "color": "rgb(40,123,75)" + }, + { + "id": 8, + "name": "OsTask_Rand2", + "coreId": 0, + "type": 0, + "color": "rgb(43,47,53)" + }, + { + "id": 9, + "name": "OsTask_Rand3", + "coreId": 0, + "type": 0, + "color": "rgb(19,110,116)" + }, + { + "id": 10, + "name": "OsTask_Idle_Core0", + "coreId": 0, + "type": 0, + "color": "rgb(10,216,121)" + }, + { + "id": 0, + "name": "SYS_TIMER_CORE0", + "coreId": 0, + "type": 1, + "color": "rgb(21,73,8)" + }, + { + "id": 1, + "name": "CPU0_SB", + "coreId": 0, + "type": 1, + "color": "rgb(83,190,181)" + }, + { + "id": 2, + "name": "CPU1_SB", + "coreId": 0, + "type": 1, + "color": "rgb(239,43,170)" + } + ], + "resourceConfigs": [ + { + "id": 0, + "name": "OsResource_1", + "coreId": 0 + }, + { + "id": 1, + "name": "OsResource_2", + "coreId": 0 + }, + { + "id": 2, + "name": "OsResource_Init", + "coreId": 0 + } + ], + "serviceConfigs": [ + { + "id": 0, + "name": "GetApplicationID Start" + }, + { + "id": 1, + "name": "GetApplicationID Return" + }, + { + "id": 2, + "name": "GetISRID Start" + }, + { + "id": 3, + "name": "GetISRID Return" + }, + { + "id": 4, + "name": "CallTrustedFunction Start" + }, + { + "id": 5, + "name": "CallTrustedFunction Return" + }, + { + "id": 6, + "name": "CheckISRMemoryAccess Start" + }, + { + "id": 7, + "name": "CheckISRMemoryAccess Return" + }, + { + "id": 8, + "name": "CheckTaskMemoryAccess Start" + }, + { + "id": 9, + "name": "CheckTaskMemoryAccess Return" + }, + { + "id": 10, + "name": "CheckObjectAccess Start" + }, + { + "id": 11, + "name": "CheckObjectAccess Return" + }, + { + "id": 12, + "name": "CheckObjectOwnership Start" + }, + { + "id": 13, + "name": "CheckObjectOwnership Return" + }, + { + "id": 14, + "name": "StartScheduleTableRel Start" + }, + { + "id": 15, + "name": "StartScheduleTableRel Return" + }, + { + "id": 16, + "name": "StartScheduleTableAbs Start" + }, + { + "id": 17, + "name": "StartScheduleTableAbs Return" + }, + { + "id": 18, + "name": "StopScheduleTable Start" + }, + { + "id": 19, + "name": "StopScheduleTable Return" + }, + { + "id": 20, + "name": "NextScheduleTable Start" + }, + { + "id": 21, + "name": "NextScheduleTable Return" + }, + { + "id": 22, + "name": "StartScheduleTableSynchron Start" + }, + { + "id": 23, + "name": "StartScheduleTableSynchron Return" + }, + { + "id": 24, + "name": "SyncScheduleTable Start" + }, + { + "id": 25, + "name": "SyncScheduleTable Return" + }, + { + "id": 26, + "name": "SetScheduleTableAsync Start" + }, + { + "id": 27, + "name": "SetScheduleTableAsync Return" + }, + { + "id": 28, + "name": "GetScheduleTableStatus Start" + }, + { + "id": 29, + "name": "GetScheduleTableStatus Return" + }, + { + "id": 30, + "name": "IncrementCounter Start" + }, + { + "id": 31, + "name": "IncrementCounter Return" + }, + { + "id": 32, + "name": "GetCounterValue Start" + }, + { + "id": 33, + "name": "GetCounterValue Return" + }, + { + "id": 34, + "name": "GetElapsedValue Start" + }, + { + "id": 35, + "name": "GetElapsedValue Return" + }, + { + "id": 36, + "name": "TerminateApplication Start" + }, + { + "id": 37, + "name": "TerminateApplication Return" + }, + { + "id": 38, + "name": "AllowAccess Start" + }, + { + "id": 39, + "name": "AllowAccess Return" + }, + { + "id": 40, + "name": "GetApplicationState Start" + }, + { + "id": 41, + "name": "GetApplicationState Return" + }, + { + "id": 42, + "name": "GetNumberOfActivatedCores Start" + }, + { + "id": 43, + "name": "GetNumberOfActivatedCores Return" + }, + { + "id": 44, + "name": "GetCoreID Start" + }, + { + "id": 45, + "name": "GetCoreID Return" + }, + { + "id": 46, + "name": "StartCore Start" + }, + { + "id": 47, + "name": "StartCore Return" + }, + { + "id": 48, + "name": "StartNonAutosarCore Start" + }, + { + "id": 49, + "name": "StartNonAutosarCore Return" + }, + { + "id": 50, + "name": "GetSpinlock Start" + }, + { + "id": 51, + "name": "GetSpinlock Return" + }, + { + "id": 52, + "name": "ReleaseSpinlock Start" + }, + { + "id": 53, + "name": "ReleaseSpinlock Return" + }, + { + "id": 54, + "name": "TryToGetSpinlock Start" + }, + { + "id": 55, + "name": "TryToGetSpinlock Return" + }, + { + "id": 56, + "name": "ShutdownAllCores Start" + }, + { + "id": 57, + "name": "ShutdownAllCores Return" + }, + { + "id": 58, + "name": "ControlIdle Start" + }, + { + "id": 59, + "name": "ControlIdle Return" + }, + { + "id": 60, + "name": "IocSend Start" + }, + { + "id": 61, + "name": "IocSend Return" + }, + { + "id": 62, + "name": "IocWrite Start" + }, + { + "id": 63, + "name": "IocWrite Return" + }, + { + "id": 64, + "name": "IocSendGroup Start" + }, + { + "id": 65, + "name": "IocSendGroup Return" + }, + { + "id": 66, + "name": "IocWriteGroup Start" + }, + { + "id": 67, + "name": "IocWriteGroup Return" + }, + { + "id": 68, + "name": "IocReceive Start" + }, + { + "id": 69, + "name": "IocReceive Return" + }, + { + "id": 70, + "name": "IocRead Start" + }, + { + "id": 71, + "name": "IocRead Return" + }, + { + "id": 72, + "name": "IocReceiveGroup Start" + }, + { + "id": 73, + "name": "IocReceiveGroup Return" + }, + { + "id": 74, + "name": "IocReadGroup Start" + }, + { + "id": 75, + "name": "IocReadGroup Return" + }, + { + "id": 76, + "name": "IocEmptyQueue Start" + }, + { + "id": 77, + "name": "IocEmptyQueue Return" + }, + { + "id": 78, + "name": "GetCurrentApplicationID Start" + }, + { + "id": 79, + "name": "GetCurrentApplicationID Return" + }, + { + "id": 80, + "name": "ReadPeripheral8 Start" + }, + { + "id": 81, + "name": "ReadPeripheral8 Return" + }, + { + "id": 82, + "name": "ReadPeripheral16 Start" + }, + { + "id": 83, + "name": "ReadPeripheral16 Return" + }, + { + "id": 84, + "name": "ReadPeripheral32 Start" + }, + { + "id": 85, + "name": "ReadPeripheral32 Return" + }, + { + "id": 86, + "name": "WritePeripheral8 Start" + }, + { + "id": 87, + "name": "WritePeripheral8 Return" + }, + { + "id": 88, + "name": "WritePeripheral16 Start" + }, + { + "id": 89, + "name": "WritePeripheral16 Return" + }, + { + "id": 90, + "name": "WritePeripheral32 Start" + }, + { + "id": 91, + "name": "WritePeripheral32 Return" + }, + { + "id": 92, + "name": "ModifyPeripheral8 Start" + }, + { + "id": 93, + "name": "ModifyPeripheral8 Return" + }, + { + "id": 94, + "name": "ModifyPeripheral32 Start" + }, + { + "id": 95, + "name": "ModifyPeripheral32 Return" + }, + { + "id": 96, + "name": "DisableInterruptSource Start" + }, + { + "id": 97, + "name": "DisableInterruptSource Return" + }, + { + "id": 98, + "name": "EnableInterruptSource Start" + }, + { + "id": 99, + "name": "EnableInterruptSource Return" + }, + { + "id": 100, + "name": "ClearPendingInterrupt Start" + }, + { + "id": 101, + "name": "ClearPendingInterrupt Return" + }, + { + "id": 102, + "name": "ActivateTaskAsyn Start" + }, + { + "id": 103, + "name": "ActivateTaskAsyn Return" + }, + { + "id": 104, + "name": "SetEventAsyn Start" + }, + { + "id": 105, + "name": "SetEventAsyn Return" + }, + { + "id": 106, + "name": "ModifyPeripheral16 Start" + }, + { + "id": 107, + "name": "ModifyPeripheral16 Return" + }, + { + "id": 108, + "name": "WaitAllEvents Start" + }, + { + "id": 109, + "name": "WaitAllEvents Return" + }, + { + "id": 110, + "name": "IocCallBackNotify Start" + }, + { + "id": 111, + "name": "IocCallBackNotify Return" + }, + { + "id": 112, + "name": "ActivateTask Start" + }, + { + "id": 113, + "name": "ActivateTask Return" + }, + { + "id": 114, + "name": "TerminateTask Start" + }, + { + "id": 115, + "name": "TerminateTask Return" + }, + { + "id": 116, + "name": "ChainTask Start" + }, + { + "id": 117, + "name": "ChainTask Return" + }, + { + "id": 118, + "name": "Schedule Start" + }, + { + "id": 119, + "name": "Schedule Return" + }, + { + "id": 120, + "name": "GetTaskID Start" + }, + { + "id": 121, + "name": "GetTaskID Return" + }, + { + "id": 122, + "name": "GetTaskState Start" + }, + { + "id": 123, + "name": "GetTaskState Return" + }, + { + "id": 124, + "name": "EnableAllInterrupts Start" + }, + { + "id": 125, + "name": "EnableAllInterrupts Return" + }, + { + "id": 126, + "name": "DisableAllInterrupts Start" + }, + { + "id": 127, + "name": "DisableAllInterrupts Return" + }, + { + "id": 128, + "name": "ResumeAllInterrupts Start" + }, + { + "id": 129, + "name": "ResumeAllInterrupts Return" + }, + { + "id": 130, + "name": "SuspendAllInterrupts Start" + }, + { + "id": 131, + "name": "SuspendAllInterrupts Return" + }, + { + "id": 132, + "name": "ResumeOSInterrupts Start" + }, + { + "id": 133, + "name": "ResumeOSInterrupts Return" + }, + { + "id": 134, + "name": "SuspendOSInterrupts Start" + }, + { + "id": 135, + "name": "SuspendOSInterrupts Return" + }, + { + "id": 136, + "name": "GetResource Start" + }, + { + "id": 137, + "name": "GetResource Return" + }, + { + "id": 138, + "name": "ReleaseResource Start" + }, + { + "id": 139, + "name": "ReleaseResource Return" + }, + { + "id": 140, + "name": "SetEvent Start" + }, + { + "id": 141, + "name": "SetEvent Return" + }, + { + "id": 142, + "name": "ClearEvent Start" + }, + { + "id": 143, + "name": "ClearEvent Return" + }, + { + "id": 144, + "name": "GetEvent Start" + }, + { + "id": 145, + "name": "GetEvent Return" + }, + { + "id": 146, + "name": "WaitEvent Start" + }, + { + "id": 147, + "name": "WaitEvent Return" + }, + { + "id": 148, + "name": "GetAlarmBase Start" + }, + { + "id": 149, + "name": "GetAlarmBase Return" + }, + { + "id": 150, + "name": "GetAlarm Start" + }, + { + "id": 151, + "name": "GetAlarm Return" + }, + { + "id": 152, + "name": "SetRelAlarm Start" + }, + { + "id": 153, + "name": "SetRelAlarm Return" + }, + { + "id": 154, + "name": "SetAbsAlarm Start" + }, + { + "id": 155, + "name": "SetAbsAlarm Return" + }, + { + "id": 156, + "name": "CancelAlarm Start" + }, + { + "id": 157, + "name": "CancelAlarm Return" + }, + { + "id": 158, + "name": "GetActiveApplicationMode Start" + }, + { + "id": 159, + "name": "GetActiveApplicationMode Return" + }, + { + "id": 160, + "name": "StartOS Start" + }, + { + "id": 161, + "name": "StartOS Return" + }, + { + "id": 162, + "name": "ShutdownOS Start" + }, + { + "id": 163, + "name": "ShutdownOS Return" + } + ], + "hostConfigs": [ + { + "id": 0, + "name": "ErrorHook Start" + }, + { + "id": 1, + "name": "ErrorHook Return" + }, + { + "id": 2, + "name": "PostTaskHook Start" + }, + { + "id": 3, + "name": "PostTaskHook Return" + }, + { + "id": 4, + "name": "PreTaskHook Start" + }, + { + "id": 5, + "name": "PreTaskHook Return" + }, + { + "id": 6, + "name": "ProtectionHook Start" + }, + { + "id": 7, + "name": "ProtectionHook Return" + }, + { + "id": 8, + "name": "StartupHook Start" + }, + { + "id": 9, + "name": "StartupHook Return" + }, + { + "id": 10, + "name": "ShutdownHook Start" + }, + { + "id": 11, + "name": "ShutdownHook Return" + } + ] +} \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/RTAOS.rta b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/RTAOS.rta new file mode 100644 index 0000000..0c16d44 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/RTAOS.rta @@ -0,0 +1,590 @@ +IMPLEMENTATION rta_orti { + OS { + ENUM "UINT8" [ + "E_OK" = 0, + "E_OS_ACCESS" = 1, + "E_OS_CALLEVEL" = 2, + "E_OS_ID" = 3, + "E_OS_LIMIT" = 4, + "E_OS_NOFUNC" = 5, + "E_OS_RESOURCE" = 6, + "E_OS_STATE" = 7, + "E_OS_VALUE" = 8, + "E_OS_SERVICEID" = 9, + "E_OS_ILLEGAL_ADDRESS" = 10, + "E_OS_MISSINGEND" = 11, + "E_OS_DISABLEDINT" = 12, + "E_OS_STACKFAULT" = 13, + "E_OS_PROTECTION_MEMORY" = 14, + "E_OS_PROTECTION_TIME" = 15, + "E_OS_PROTECTION_ARRIVAL" = 16, + "E_OS_PROTECTION_LOCKED" = 17, + "E_OS_PROTECTION_EXCEPTION" = 18, + "E_OS_CORE" = 19, + "E_OS_SPINLOCK" = 20, + "E_OS_INTERFERENCE_DEADLOCK" = 21, + "E_OS_NESTING_DEADLOCK" = 22, + "E_OS_SYS_NO_RESTART" = 23, + "E_OS_SYS_RESTART" = 24, + "E_OS_SYS_OVERRUN" = 25, + "E_OS_SYS_XCORE_QFULL" = 26, + "E_OS_SYS_ERROR_LIMIT" = 27, + ] LASTERROR, "Last OSEK error"; + + ENUM "UINT8" [ + "ActivateTask" = 1, + "Os_AdvanceCounter" = 2, + "CancelAlarm" = 3, + "CallTrustedFunction" = 4, + "CheckISRMemoryAccess" = 5, + "CheckObjectAccess" = 6, + "CheckObjectOwnership" = 7, + "CheckTaskMemoryAccess" = 8, + "ChainTask" = 9, + "ClearEvent" = 10, + "ControlIdle" = 11, + "CurrentIdleMode" = 12, + "DisableAllInterrupts" = 13, + "EnableAllInterrupts" = 14, + "GetActiveApplicationMode" = 15, + "GetAlarm" = 16, + "GetAlarmBase" = 17, + "GetApplicationID" = 18, + "GetCurrentApplicationID" = 19, + "GetCounterValue" = 20, + "GetElapsedCounterValue" = 21, + "GetEvent" = 22, + "GetISRID" = 23, + "GetResource" = 24, + "GetScheduleTableStatus" = 25, + "GetTaskID" = 26, + "GetTaskState" = 27, + "GetVersionInfo" = 28, + "IncrementCounter" = 29, + "NextScheduleTable" = 30, + "Os_GetCurrentIMask" = 31, + "Os_GetCurrentTPL" = 32, + "Os_GetExecutionTime" = 33, + "Os_GetISRMaxExecutionTime" = 34, + "Os_GetTaskMaxExecutionTime" = 35, + "Os_ResetISRMaxExecutionTime" = 36, + "Os_ResetTaskMaxExecutionTime" = 37, + "Os_GetElapsedTime" = 38, + "Os_GetTaskElapsedTime" = 39, + "Os_GetISRElapsedTime" = 40, + "Os_GetIdleElapsedTime" = 41, + "Os_ResetTaskElapsedTime" = 42, + "Os_ResetISRElapsedTime" = 43, + "Os_ResetIdleElapsedTime" = 44, + "Os_GetStackSize" = 45, + "Os_GetStackUsage" = 46, + "Os_GetStackValue" = 47, + "Os_GetISRMaxStackUsage" = 48, + "Os_GetTaskMaxStackUsage" = 49, + "Os_ResetISRMaxStackUsage" = 50, + "Os_ResetTaskMaxStackUsage" = 51, + "ReleaseResource" = 52, + "ResumeAllInterrupts" = 53, + "ResumeOSInterrupts" = 54, + "Schedule" = 55, + "SetEvent" = 56, + "SetAbsAlarm" = 57, + "SetRelAlarm" = 58, + "ShutdownOS" = 59, + "StartOS" = 60, + "StartScheduleTableAbs" = 61, + "StartScheduleTableRel" = 62, + "StartScheduleTableSynchron" = 63, + "SyncScheduleTable" = 64, + "SyncScheduleTableRel" = 65, + "SetScheduleTableAsync" = 66, + "StopScheduleTable" = 67, + "SuspendAllInterrupts" = 68, + "SuspendOSInterrupts" = 69, + "TerminateTask" = 70, + "WaitEvent" = 71, + "EnableInterruptSource" = 72, + "DisableInterruptSource" = 73, + "ClearPendingInterrupt" = 74, + "ModifyPeripheral32" = 75, + "ReadPeripheral32" = 76, + "WritePeripheral32" = 77, + "ModifyPeripheral16" = 78, + "ReadPeripheral16" = 79, + "WritePeripheral16" = 80, + "Restart" = 81, + "ModifyPeripheral8" = 82, + "ReadPeripheral8" = 83, + "WritePeripheral8" = 84, + "AllowAccess" = 85, + "GetApplicationState" = 86, + "GetNumberOfActivatedCores" = 87, + "ShutdownAllCores" = 88, + "StartCore" = 89, + "GetSpinlock" = 90, + "ReleaseSpinlock" = 91, + "TryToGetSpinlock" = 92, + "n/a" = 0 + ] vs_p_OSServiceId, "OS_97"; + + ENUM "UINT8" [ + "StartupHook" = 0, + "ShutdownHook" = 1, + "Restart" = 2, + "ErrorHook" = 3 + ] vs_p_OSAppId, "OS_96"; + + ENUM "UINT8" [ + "NO_APPMODE" = 0, + "OSDEFAULTAPPMODE" = 1 + ] CURRENTAPPMODE, "Current AppMode"; + STRING vs_SPEED, "Processor speed"; + STRING vs_STOPWATCHSPEED, "Stopwatch speed"; + + STRING vs_p_Fmt1, "StartOS Data format"; + STRING vs_p_Fmt2, "ShutdownOS Data format"; + }; + TASK { + STRING vs_ID, "Trace ID"; + UINT16 vs_ACTIVATIONS, "Maximum activations"; + STRING vs_BASEPRIORITY, "Base priority"; + STRING vs_DISPATCHPRIORITY, "Dispatch priority"; + STRING vs_p_Pri, "Base priority"; + STRING vs_p_Disp, "Dispatch priority"; + STRING vs_TYPE, "Conformance type"; + STRING vs_InternalRes, "Internal resource ID"; + STRING vs_RESOURCES, "Resources"; + STRING vs_p_OSEvents, "Events"; + UINT16 vs_pbit, "Pset"; + }; + ISR2 { + STRING vs_ID, "Trace ID"; + STRING vs_p_Pri, "Base priority"; + STRING vs_p_Disp, "Dispatch priority"; + STRING vs_InternalRes, "Internal resource ID"; + STRING vs_RESOURCES, "Resources"; + }; + ISR1 { + STRING vs_ID, "Trace ID"; + STRING vs_p_Pri, "Base priority"; + STRING vs_p_Disp, "Dispatch priority"; + STRING vs_InternalRes, "Internal resource ID"; + }; + ALARM { + STRING vs_ID, "Trace ID"; + STRING ACTION, "Action"; + STRING vs_Owner, "Owning counter ID"; + }; + COUNTER { + STRING vs_ID, "Trace ID"; + STRING vs_p_Fmt, "Data format"; + }; + Trace { + STRING vs_VERSION, "Trace version"; + STRING vs_p_TickDuration, "GetStopwatch() tick duration"; + STRING vs_p_MaxAbsTime, "Max GetStopwatch() value"; + STRING vs_p_BigEndian, "BigEndian"; + STRING vs_p_IntSize, "IntSize"; + STRING vs_p_NumCores, "Number of cores"; + STRING vs_ErrorFmt, "ErrorFmt"; + STRING vs_KindSize, "KindSize"; + STRING vs_InfoSize, "InfoSize"; + STRING vs_TimeSize, "TimeSize"; + STRING vs_TASKS_AND_ISRS, "Filter TASKS_AND_ISRS"; + STRING vs_STARTUP_SHUTDOWN, "Filter STARTUP_SHUTDOWN"; + STRING vs_ACTIVATIONS, "Filter ACTIVATIONS"; + STRING vs_COUNTERS_ALARMS, "Filter COUNTERS_ALARMS"; + STRING vs_SCHEDULES, "Filter SCHEDULES"; + STRING vs_RESOURCES, "Filter RESOURCES"; + STRING vs_INTERRUPT_LOCKS, "Filter INTERRUPT_LOCKS"; + STRING vs_ERRORS, "Filter ERRORS"; + STRING vs_OSEK_MESSAGES, "Filter OSEK_MESSAGES"; + STRING vs_MESSAGE_DATA, "Filter MESSAGE_DATA"; + STRING vs_SWITCHING_OVERHEADS, "Filter SWITCHING_OVERHEADS"; + STRING vs_OSEK_EVENTS, "Filter OSEK_EVENTS"; + STRING vs_TRACEPOINTS, "Filter TRACEPOINTS"; + STRING vs_TASK_TRACEPOINTS, "Filter TASK_TRACEPOINTS"; + STRING vs_INTERVALS, "Filter INTERVALS"; + STRING vs_PROCESSES, "Filter Processes"; + STRING vs_STACK, "Filter STACK"; + "UINT8" vs_BPSWidth, "Big Pset width"; + }; + Profile { + STRING vs_ID, "Trace ID"; + STRING vs_Owner, "Owning Task/ISR"; + }; + TaskTracepoint { + STRING vs_ID, "Trace ID"; + STRING vs_Owner, "Owning Task/ISR"; + STRING vs_p_Fmt, "Data Format"; + }; + Tracepoint { + STRING vs_ID, "Trace ID"; + STRING vs_p_Fmt, "Data Format"; + }; + CritExec { + STRING vs_ID, "Trace ID"; + STRING vs_Owner, "Owning Task/ISR/Profile"; + STRING vs_p_Budget, "Budget"; + }; + Interval { + STRING vs_ID, "Trace ID"; + STRING vs_p_Fmt, "Data Format"; + }; + Resource { + STRING vs_ID, "Trace ID"; + STRING vs_p_Pri, "Task priority"; + STRING vs_p_Isr, "ISR priority"; + STRING vs_Owner, "Owning resource"; + STRING vs_Internal, "Internal?"; + }; + Schedule { + STRING vs_ID, "Trace ID"; + }; +}; + +OS OS { + vs_p_Fmt1 = "%98E"; + vs_p_Fmt2 = "%99E"; +}; + +ISR1 CrossCoreInterrupt { + vs_ID = "16"; + vs_p_Pri = "1"; + vs_p_Disp = "1"; +}; +ISR2 Millisecond { + vs_ID = "15"; + vs_p_Pri = "102"; + vs_p_Disp = "102"; +}; + +TASK Idle { + vs_ID = "1"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "0"; + vs_DISPATCHPRIORITY = "0"; + vs_p_Pri = "0"; + vs_p_Disp = "0"; + vs_TYPE = "BCC1"; + vs_pbit = "0"; +}; +TASK Core0_OsTask_BSW_10ms { + vs_ID = "2"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "9"; + vs_DISPATCHPRIORITY = "11"; + vs_p_Pri = "9"; + vs_p_Disp = "11"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core0"; + vs_pbit, "1"; +}; +TASK Core1_OsTask_BSW_10ms { + vs_ID = "3"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "10"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "10"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core1"; + vs_pbit, "2"; +}; +TASK Core2_OsTask_BSW_10ms { + vs_ID = "4"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "11"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "11"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core2"; + vs_pbit, "3"; +}; +TASK Core3_OsTask_BSW_10ms { + vs_ID = "5"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "12"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "12"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core3"; + vs_pbit, "4"; +}; +TASK Core4_OsTask_BSW_10ms { + vs_ID = "6"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "13"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "13"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core4"; + vs_pbit, "5"; +}; +TASK Core5_OsTask_BSW_10ms { + vs_ID = "7"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "14"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "14"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core5"; + vs_pbit, "6"; +}; +TASK Core0_OsTask_BSW_1ms { + vs_ID = "8"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "20"; + vs_DISPATCHPRIORITY = "11"; + vs_p_Pri = "20"; + vs_p_Disp = "11"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core0"; + vs_pbit, "7"; +}; +TASK Core1_OsTask_BSW_1ms { + vs_ID = "9"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "21"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "21"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core1"; + vs_pbit, "8"; +}; +TASK Core2_OsTask_BSW_1ms { + vs_ID = "10"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "22"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "22"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core2"; + vs_pbit, "9"; +}; +TASK Core3_OsTask_BSW_1ms { + vs_ID = "11"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "23"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "23"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core3"; + vs_pbit, "10"; +}; +TASK Core4_OsTask_BSW_1ms { + vs_ID = "12"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "24"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "24"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core4"; + vs_pbit, "11"; +}; +TASK Core5_OsTask_BSW_1ms { + vs_ID = "13"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "25"; + vs_DISPATCHPRIORITY = "10"; + vs_p_Pri = "25"; + vs_p_Disp = "10"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core5"; + vs_pbit, "12"; +}; +TASK Core0_ECU_StartupTask { + vs_ID = "14"; + vs_ACTIVATIONS = "1"; + vs_BASEPRIORITY = "30"; + vs_DISPATCHPRIORITY = "11"; + vs_p_Pri = "30"; + vs_p_Disp = "11"; + vs_TYPE = "BCC1"; + vs_RESOURCES = "RTE_RESOURCE_OS_APP_OsApplication_Core0"; + vs_pbit, "13"; +}; +Tracepoint OSApp_OsApplication_Core0 { + vs_ID = "1"; + vs_p_Fmt = "%96E"; +}; +Tracepoint OSApp_OsApplication_Core1 { + vs_ID = "2"; + vs_p_Fmt = "%96E"; +}; +Tracepoint OSApp_OsApplication_Core2 { + vs_ID = "3"; + vs_p_Fmt = "%96E"; +}; +Tracepoint OSApp_OsApplication_Core3 { + vs_ID = "4"; + vs_p_Fmt = "%96E"; +}; +Tracepoint OSApp_OsApplication_Core4 { + vs_ID = "5"; + vs_p_Fmt = "%96E"; +}; +Tracepoint OSApp_OsApplication_Core5 { + vs_ID = "6"; + vs_p_Fmt = "%96E"; +}; + + +Resource RTE_RESOURCE_OS_APP_OsApplication_Core1 { + vs_ID = "1"; + vs_p_Pri = "20"; +}; + +Resource RTE_RESOURCE_OS_APP_OsApplication_Core2 { + vs_ID = "2"; + vs_p_Pri = "20"; +}; + +Resource RTE_RESOURCE_OS_APP_OsApplication_Core3 { + vs_ID = "3"; + vs_p_Pri = "20"; +}; + +Resource RTE_RESOURCE_OS_APP_OsApplication_Core4 { + vs_ID = "4"; + vs_p_Pri = "20"; +}; + +Resource RTE_RESOURCE_OS_APP_OsApplication_Core5 { + vs_ID = "5"; + vs_p_Pri = "20"; +}; + +Resource RTE_RESOURCE_OS_APP_OsApplication_Core0 { + vs_ID = "6"; + vs_p_Pri = "30"; +}; + +Resource Os_Core0_RES_SCHEDULER { + vs_ID = "7"; + vs_p_Pri = "30"; +}; + +Resource Os_Core1_RES_SCHEDULER { + vs_ID = "8"; + vs_p_Pri = "20"; +}; + +Resource Os_Core2_RES_SCHEDULER { + vs_ID = "9"; + vs_p_Pri = "20"; +}; + +Resource Os_Core3_RES_SCHEDULER { + vs_ID = "10"; + vs_p_Pri = "20"; +}; + +Resource Os_Core4_RES_SCHEDULER { + vs_ID = "11"; + vs_p_Pri = "20"; +}; + +Resource Os_Core5_RES_SCHEDULER { + vs_ID = "12"; + vs_p_Pri = "20"; +}; + +COUNTER Rte_TickCounter { + vs_ID = "1"; +}; + +ALARM Rte_ScheduleTable_ExpiryPoint1 { + vs_ID = "1"; + vs_Owner = "1"; + ACTION = "Activate Core0_OsTask_BSW_10ms. Activate Core1_OsTask_BSW_10ms. Activate Core2_OsTask_BSW_10ms. Activate Core3_OsTask_BSW_10ms. Activate Core4_OsTask_BSW_10ms. Activate Core5_OsTask_BSW_10ms. Activate Core0_OsTask_BSW_1ms. Activate Core1_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; +ALARM Rte_ScheduleTable_ExpiryPoint2 { + vs_ID = "2"; + vs_Owner = "1"; + ACTION = "Activate Core1_OsTask_BSW_1ms. Activate Core0_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; +ALARM Rte_ScheduleTable_ExpiryPoint3 { + vs_ID = "3"; + vs_Owner = "1"; + ACTION = "Activate Core1_OsTask_BSW_1ms. Activate Core0_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; +ALARM Rte_ScheduleTable_ExpiryPoint4 { + vs_ID = "4"; + vs_Owner = "1"; + ACTION = "Activate Core1_OsTask_BSW_1ms. Activate Core0_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; +ALARM Rte_ScheduleTable_ExpiryPoint5 { + vs_ID = "5"; + vs_Owner = "1"; + ACTION = "Activate Core1_OsTask_BSW_1ms. Activate Core0_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; +ALARM Rte_ScheduleTable_ExpiryPoint6 { + vs_ID = "6"; + vs_Owner = "1"; + ACTION = "Activate Core1_OsTask_BSW_1ms. Activate Core0_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; +ALARM Rte_ScheduleTable_ExpiryPoint7 { + vs_ID = "7"; + vs_Owner = "1"; + ACTION = "Activate Core1_OsTask_BSW_1ms. Activate Core0_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; +ALARM Rte_ScheduleTable_ExpiryPoint8 { + vs_ID = "8"; + vs_Owner = "1"; + ACTION = "Activate Core1_OsTask_BSW_1ms. Activate Core0_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; +ALARM Rte_ScheduleTable_ExpiryPoint9 { + vs_ID = "9"; + vs_Owner = "1"; + ACTION = "Activate Core1_OsTask_BSW_1ms. Activate Core0_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; +ALARM Rte_ScheduleTable_ExpiryPoint10 { + vs_ID = "10"; + vs_Owner = "1"; + ACTION = "Activate Core1_OsTask_BSW_1ms. Activate Core0_OsTask_BSW_1ms. Activate Core2_OsTask_BSW_1ms. Activate Core3_OsTask_BSW_1ms. Activate Core4_OsTask_BSW_1ms. Activate Core5_OsTask_BSW_1ms"; +}; + +Schedule Rte_ScheduleTable { + vs_ID = "1"; + vs_p_Fmt = "%d"; +}; + +Trace Trace { + vs_VERSION = "2.1.0"; + vs_p_TickDuration = 2.0; + vs_KindSize = "1"; + vs_InfoSize = "1"; + vs_TimeSize = "2"; + + vs_p_BigEndian = "0"; + vs_p_IntSize = "16"; + vs_p_MaxAbsTime = "4294967295"; + vs_p_NumCores = "6"; + vs_ErrorFmt = "%99E"; + + vs_ACTIVATIONS = "true"; + vs_RESOURCES = "true"; + vs_INTERRUPT_LOCKS = "true"; + vs_SWITCHING_OVERHEADS = "true"; + vs_TASKS_AND_ISRS = "true"; + vs_ERRORS = "true"; + vs_TASK_TRACEPOINT = "true"; + vs_TRACEPOINT = "true"; + vs_INTERVALS = "true"; + vs_MESSAGE_DATA = "true"; + vs_STARTUP_AND_SHUTDOWN = "true"; + vs_ALARMS = "true"; + vs_SCHEDULETABLES = "true"; + vs_OSEK_EVENTS = "true"; + vs_EXPIRY_POINTS = "true"; +}; + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/TC39X_SysTrace.xlsx b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/TC39X_SysTrace.xlsx new file mode 100644 index 0000000..aecdc97 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/TC39X_SysTrace.xlsx differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/blocks.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/blocks.json new file mode 100644 index 0000000..7f69667 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/blocks.json @@ -0,0 +1,130736 @@ +[ + { + "start": 7.34641237, + "end": 7.34642422, + "coreId": 0, + "status": 1, + "type": 0, + "id": 3, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.34641693, + "coreId": 0, + "status": 0 + }, + { + "start": 7.34642422, + "end": 7.34643662, + "coreId": 0, + "status": 0, + "type": 0, + "id": 10, + "endStatus": 1 + }, + { + "start": 7.34643662, + "end": 7.35072347, + "coreId": 0, + "status": 1, + "type": 0, + "id": 10, + "endStatus": 4 + }, + { + "start": 7.34670309, + "end": 7.34671157, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.34770293, + "end": 7.34771094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.34870287, + "end": 7.34871083, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.34970287, + "end": 7.34971083, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.35070289, + "end": 7.35073568, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.35071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.35071568, + "coreId": 0, + "status": 0 + }, + { + "start": 7.35072347, + "coreId": 0, + "status": 4, + "type": 0, + "id": 10 + }, + { + "start": 7.35073165, + "end": 7.35573506, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.35170294, + "end": 7.35171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.35270297, + "end": 7.35271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.35370291, + "end": 7.35371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.35470295, + "end": 7.35471091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.35570292, + "end": 7.35574727, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.35571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.35571533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.35572238, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.3557278, + "coreId": 0, + "status": 0 + }, + { + "start": 7.35573506, + "end": 7.3557647, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.35574324, + "end": 7.355759, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.35575198, + "coreId": 0, + "status": 0 + }, + { + "start": 7.3557647, + "end": 7.36574671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.35670291, + "end": 7.35671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.35770296, + "end": 7.35771092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.35870292, + "end": 7.35871088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.35970297, + "end": 7.35971093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.36070291, + "end": 7.36072317, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.36070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.36071532, + "coreId": 0, + "status": 0 + }, + { + "start": 7.36170297, + "end": 7.36171093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.36270296, + "end": 7.36271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.36370296, + "end": 7.36371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.36470291, + "end": 7.36471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.36570296, + "end": 7.36575892, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.36571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.36571534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.3657223, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.36572756, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.36573411, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.36573945, + "coreId": 0, + "status": 0 + }, + { + "start": 7.36574671, + "end": 7.36580007, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.36575489, + "end": 7.36577069, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.36576367, + "coreId": 0, + "status": 0 + }, + { + "start": 7.36577069, + "end": 7.36578283, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.36578283, + "end": 7.36579438, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.36578736, + "coreId": 0, + "status": 0 + }, + { + "start": 7.36580007, + "end": 7.37573499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.36670294, + "end": 7.36671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.36770291, + "end": 7.36771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.36870291, + "end": 7.36871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.36970291, + "end": 7.36971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.37070297, + "end": 7.37072298, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.37071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.37071538, + "coreId": 0, + "status": 0 + }, + { + "start": 7.37170293, + "end": 7.37171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.37270295, + "end": 7.37271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.37370291, + "end": 7.37371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.37470297, + "end": 7.37471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.37570296, + "end": 7.3757472, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.37571007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.37571547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.37572239, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.37572773, + "coreId": 0, + "status": 0 + }, + { + "start": 7.37573499, + "end": 7.37576466, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.37574317, + "end": 7.37575898, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.37575191, + "coreId": 0, + "status": 0 + }, + { + "start": 7.37576466, + "end": 7.38574668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.37670295, + "end": 7.37671093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.37770297, + "end": 7.37771093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.37870296, + "end": 7.37871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.37970295, + "end": 7.37971091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.38070291, + "end": 7.38072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.38070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.38071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.38170294, + "end": 7.3817109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.38270293, + "end": 7.38271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.38370294, + "end": 7.3837109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.38470297, + "end": 7.38471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.38570293, + "end": 7.38575889, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.38571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.38571531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.38572227, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.38572753, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.38573408, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.38573942, + "coreId": 0, + "status": 0 + }, + { + "start": 7.38574668, + "end": 7.38579986, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.38575486, + "end": 7.38577066, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.38576364, + "coreId": 0, + "status": 0 + }, + { + "start": 7.38577066, + "end": 7.38578279, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.38578279, + "end": 7.38579418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.38578725, + "coreId": 0, + "status": 0 + }, + { + "start": 7.38579986, + "end": 7.39573481, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.38670292, + "end": 7.38671093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.38770295, + "end": 7.38771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.38870291, + "end": 7.38871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.38970291, + "end": 7.38971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.39070296, + "end": 7.39072287, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.39071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.39071527, + "coreId": 0, + "status": 0 + }, + { + "start": 7.39170291, + "end": 7.39171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.39270294, + "end": 7.3927109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.39370291, + "end": 7.39371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.39470294, + "end": 7.3947109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.39570297, + "end": 7.39574702, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.39571008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.39571539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.39572231, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.39572755, + "coreId": 0, + "status": 0 + }, + { + "start": 7.39573481, + "end": 7.39576443, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.39574299, + "end": 7.39575875, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.39575173, + "coreId": 0, + "status": 0 + }, + { + "start": 7.39576443, + "end": 7.40574687, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.39670291, + "end": 7.39671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.39770295, + "end": 7.39771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.39870294, + "end": 7.3987109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.39970294, + "end": 7.3997109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.40070294, + "end": 7.4007231, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.40071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.40071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.40170294, + "end": 7.4017109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.40270297, + "end": 7.40271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.40370293, + "end": 7.40371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.40470291, + "end": 7.40471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.40570294, + "end": 7.40575908, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.40571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.40571541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.40572237, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.40572772, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.40573427, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.40573961, + "coreId": 0, + "status": 0 + }, + { + "start": 7.40574687, + "end": 7.40580015, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.40575505, + "end": 7.4057709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.40576383, + "coreId": 0, + "status": 0 + }, + { + "start": 7.4057709, + "end": 7.40578303, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.40578303, + "end": 7.40579447, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.40578749, + "coreId": 0, + "status": 0 + }, + { + "start": 7.40580015, + "end": 7.41573478, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.40670294, + "end": 7.40671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.40770292, + "end": 7.40771088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.40870293, + "end": 7.40871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.40970295, + "end": 7.40971091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.41070291, + "end": 7.41072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.41070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.41071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.41170296, + "end": 7.41171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.41270291, + "end": 7.41271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.41370294, + "end": 7.4137109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.41470294, + "end": 7.4147109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.41570295, + "end": 7.41574699, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.41571006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.41571536, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.41572228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.41572752, + "coreId": 0, + "status": 0 + }, + { + "start": 7.41573478, + "end": 7.41576441, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.41574296, + "end": 7.41575873, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.4157517, + "coreId": 0, + "status": 0 + }, + { + "start": 7.41576441, + "end": 7.42574693, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.41670297, + "end": 7.41671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.41770294, + "end": 7.4177109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.41870296, + "end": 7.41871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.41970294, + "end": 7.4197109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.42070294, + "end": 7.4207231, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.42071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.42071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.42170294, + "end": 7.4217109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.42270294, + "end": 7.4227109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.42370293, + "end": 7.42371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.42470294, + "end": 7.4247109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.42570292, + "end": 7.42575914, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.42570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.4257153, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.42572252, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.42572778, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.42573433, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.42573967, + "coreId": 0, + "status": 0 + }, + { + "start": 7.42574693, + "end": 7.4258002, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.42575511, + "end": 7.42577091, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.42576389, + "coreId": 0, + "status": 0 + }, + { + "start": 7.42577091, + "end": 7.42578304, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.42578304, + "end": 7.42579452, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.4257875, + "coreId": 0, + "status": 0 + }, + { + "start": 7.4258002, + "end": 7.43573513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.42670295, + "end": 7.42671096, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.42770296, + "end": 7.42771092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.42870294, + "end": 7.4287109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.42970291, + "end": 7.42971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.43070291, + "end": 7.43072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.43070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.43071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.43170293, + "end": 7.43171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.43270292, + "end": 7.43271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.43370291, + "end": 7.43371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.43470294, + "end": 7.4347109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.43570294, + "end": 7.43574734, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.43571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.43571545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.43572263, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.43572787, + "coreId": 0, + "status": 0 + }, + { + "start": 7.43573513, + "end": 7.4357648, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.43574331, + "end": 7.43575912, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.43575205, + "coreId": 0, + "status": 0 + }, + { + "start": 7.4357648, + "end": 7.44575919, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.43670291, + "end": 7.43671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.43770291, + "end": 7.43771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.43870296, + "end": 7.43871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.43970291, + "end": 7.43971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.44070297, + "end": 7.44072339, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.44071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.44071528, + "coreId": 0, + "status": 0 + }, + { + "start": 7.44170293, + "end": 7.44171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.44270296, + "end": 7.44271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.44370291, + "end": 7.44371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.44470291, + "end": 7.44471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.44570291, + "end": 7.4457714, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.44570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.44571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.44572267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.44572793, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.44573478, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.44574004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.44574659, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.44575193, + "coreId": 0, + "status": 0 + }, + { + "start": 7.44575919, + "end": 7.44583599, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.44576737, + "end": 7.44578313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 5, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.44577611, + "coreId": 0, + "status": 0 + }, + { + "start": 7.44578313, + "end": 7.44579526, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 7.44579526, + "end": 7.44580678, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.44579976, + "coreId": 0, + "status": 0 + }, + { + "start": 7.44580678, + "end": 7.44581891, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.44581891, + "end": 7.4458303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.44582337, + "coreId": 0, + "status": 0 + }, + { + "start": 7.44583599, + "end": 7.45573502, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.44670295, + "end": 7.44671096, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.44770292, + "end": 7.44771088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.44870291, + "end": 7.44871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.44970293, + "end": 7.44971089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.45070291, + "end": 7.45072292, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.45070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.45071532, + "coreId": 0, + "status": 0 + }, + { + "start": 7.45170292, + "end": 7.45171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.45270291, + "end": 7.45271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.45370294, + "end": 7.4537109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.45470292, + "end": 7.45471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.45570293, + "end": 7.45574723, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.45571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.4557155, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.45572242, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.45572776, + "coreId": 0, + "status": 0 + }, + { + "start": 7.45573502, + "end": 7.45576464, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.4557432, + "end": 7.45575896, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.45575194, + "coreId": 0, + "status": 0 + }, + { + "start": 7.45576464, + "end": 7.46574713, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.45670294, + "end": 7.45671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.45770295, + "end": 7.45771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.45870294, + "end": 7.4587109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.45970295, + "end": 7.45971091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.46070291, + "end": 7.46072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.46070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.46071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.46170293, + "end": 7.46171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.46270296, + "end": 7.46271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.46370294, + "end": 7.4637109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.46470297, + "end": 7.46471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.46570294, + "end": 7.46575934, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.46571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.46571541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.46572263, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.46572798, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.46573453, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.46573987, + "coreId": 0, + "status": 0 + }, + { + "start": 7.46574713, + "end": 7.46580041, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.46575531, + "end": 7.46577116, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.46576409, + "coreId": 0, + "status": 0 + }, + { + "start": 7.46577116, + "end": 7.46578329, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.46578329, + "end": 7.46579473, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.46578775, + "coreId": 0, + "status": 0 + }, + { + "start": 7.46580041, + "end": 7.47573525, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.46670296, + "end": 7.46671097, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.46770294, + "end": 7.4677109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.46870293, + "end": 7.46871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.46970293, + "end": 7.46971089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.47070296, + "end": 7.47072287, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.47071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.47071527, + "coreId": 0, + "status": 0 + }, + { + "start": 7.47170291, + "end": 7.47171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.47270291, + "end": 7.47271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.47370291, + "end": 7.47371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.47470297, + "end": 7.47471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.47570291, + "end": 7.47574746, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.47571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.47571532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.4757225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.47572774, + "coreId": 0, + "status": 0 + }, + { + "start": 7.47573525, + "end": 7.47576488, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.47574343, + "end": 7.4757592, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.47575217, + "coreId": 0, + "status": 0 + }, + { + "start": 7.47576488, + "end": 7.47872355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.47670291, + "end": 7.47671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.47770292, + "end": 7.47771088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.47870291, + "end": 7.47873576, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.47871002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.47871533, + "coreId": 0, + "status": 0 + }, + { + "start": 7.47872355, + "end": 7.47875317, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.47873173, + "end": 7.47874749, + "coreId": 0, + "status": 1, + "type": 0, + "id": 9, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.47874047, + "coreId": 0, + "status": 0 + }, + { + "start": 7.47875317, + "end": 7.48574666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.47970292, + "end": 7.4797109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.48070294, + "end": 7.4807231, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.48071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.48071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.48170294, + "end": 7.4817109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.48270295, + "end": 7.48271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.48370295, + "end": 7.48371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.48470297, + "end": 7.48471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.48570291, + "end": 7.48575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.48570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.48571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.48572225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.48572751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.48573406, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.4857394, + "coreId": 0, + "status": 0 + }, + { + "start": 7.48574666, + "end": 7.48579984, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.48575484, + "end": 7.48577064, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.48576362, + "coreId": 0, + "status": 0 + }, + { + "start": 7.48577064, + "end": 7.48578277, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.48578277, + "end": 7.48579416, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.48578723, + "coreId": 0, + "status": 0 + }, + { + "start": 7.48579984, + "end": 7.4957349, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.48670291, + "end": 7.48671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.48770291, + "end": 7.48771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.48870291, + "end": 7.48871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.48970291, + "end": 7.48971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.49070295, + "end": 7.49072286, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.49071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.49071526, + "coreId": 0, + "status": 0 + }, + { + "start": 7.49170291, + "end": 7.49171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.49270291, + "end": 7.49271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.49370297, + "end": 7.49371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.49470291, + "end": 7.49471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.49570297, + "end": 7.49574711, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.49571008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.49571548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.4957224, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.49572764, + "coreId": 0, + "status": 0 + }, + { + "start": 7.4957349, + "end": 7.49576457, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.49574308, + "end": 7.49575889, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.49575182, + "coreId": 0, + "status": 0 + }, + { + "start": 7.49576457, + "end": 7.50574668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.49670293, + "end": 7.49671091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.49770291, + "end": 7.49771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.49870293, + "end": 7.49871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.49970297, + "end": 7.49971093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.50070291, + "end": 7.50072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.50070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.50071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.50170291, + "end": 7.50171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.50270291, + "end": 7.50271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.50370291, + "end": 7.50371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.50470297, + "end": 7.50471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.50570293, + "end": 7.50575889, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.50571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.50571531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.50572227, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.50572753, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.50573408, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.50573942, + "coreId": 0, + "status": 0 + }, + { + "start": 7.50574668, + "end": 7.50579986, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.50575486, + "end": 7.50577066, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.50576364, + "coreId": 0, + "status": 0 + }, + { + "start": 7.50577066, + "end": 7.50578279, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.50578279, + "end": 7.50579418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.50578725, + "coreId": 0, + "status": 0 + }, + { + "start": 7.50579986, + "end": 7.51573475, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.50670294, + "end": 7.50671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.50770295, + "end": 7.50771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.50870294, + "end": 7.5087109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.50970294, + "end": 7.5097109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.51070294, + "end": 7.51072285, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.51071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.51071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.51170291, + "end": 7.51171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.51270293, + "end": 7.51271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.51370294, + "end": 7.5137109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.51470293, + "end": 7.51471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.51570291, + "end": 7.51574696, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.51571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.51571533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.51572225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.51572749, + "coreId": 0, + "status": 0 + }, + { + "start": 7.51573475, + "end": 7.51576437, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.51574293, + "end": 7.51575869, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.51575167, + "coreId": 0, + "status": 0 + }, + { + "start": 7.51576437, + "end": 7.52574713, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.51670291, + "end": 7.51671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.51770291, + "end": 7.51771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.51870294, + "end": 7.5187109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.51970291, + "end": 7.51971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.52070291, + "end": 7.52072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.52070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.52071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.52170293, + "end": 7.52171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.52270291, + "end": 7.52271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.52370291, + "end": 7.52371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.52470291, + "end": 7.52471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.52570294, + "end": 7.52575934, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.52571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.52571541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.52572263, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.52572798, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.52573453, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.52573987, + "coreId": 0, + "status": 0 + }, + { + "start": 7.52574713, + "end": 7.52580041, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.52575531, + "end": 7.52577116, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.52576409, + "coreId": 0, + "status": 0 + }, + { + "start": 7.52577116, + "end": 7.52578329, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.52578329, + "end": 7.52579473, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.52578775, + "coreId": 0, + "status": 0 + }, + { + "start": 7.52580041, + "end": 7.53573502, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.52670292, + "end": 7.52671093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.52770293, + "end": 7.52771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.52870295, + "end": 7.52871091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.52970291, + "end": 7.52971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.53070292, + "end": 7.53072283, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.53070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.53071523, + "coreId": 0, + "status": 0 + }, + { + "start": 7.53170292, + "end": 7.53171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.53270291, + "end": 7.53271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.53370292, + "end": 7.53371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.53470294, + "end": 7.5347109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.53570293, + "end": 7.53574723, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.53571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.53571534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.53572252, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.53572776, + "coreId": 0, + "status": 0 + }, + { + "start": 7.53573502, + "end": 7.53576465, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.5357432, + "end": 7.53575897, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.53575194, + "coreId": 0, + "status": 0 + }, + { + "start": 7.53576465, + "end": 7.54575909, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.53670292, + "end": 7.5367109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.53770293, + "end": 7.53771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.53870291, + "end": 7.53871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.53970293, + "end": 7.53971089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.54070297, + "end": 7.54072339, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.54071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.54071528, + "coreId": 0, + "status": 0 + }, + { + "start": 7.54170297, + "end": 7.54171093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.54270291, + "end": 7.54271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.54370294, + "end": 7.5437109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.54470297, + "end": 7.54471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.54570292, + "end": 7.5457713, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.54570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.54571539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.54572257, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.54572783, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.54573468, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.54573994, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.54574649, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.54575183, + "coreId": 0, + "status": 0 + }, + { + "start": 7.54575909, + "end": 7.54583595, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.54576727, + "end": 7.54578308, + "coreId": 0, + "status": 1, + "type": 0, + "id": 5, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.54577601, + "coreId": 0, + "status": 0 + }, + { + "start": 7.54578308, + "end": 7.54579521, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 7.54579521, + "end": 7.54580674, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.54579971, + "coreId": 0, + "status": 0 + }, + { + "start": 7.54580674, + "end": 7.54581887, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.54581887, + "end": 7.54583026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.54582333, + "coreId": 0, + "status": 0 + }, + { + "start": 7.54583595, + "end": 7.55573509, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.54670291, + "end": 7.54671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.54770295, + "end": 7.54771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.54870291, + "end": 7.54871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.54970294, + "end": 7.5497109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.55070291, + "end": 7.55072292, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.55070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.55071532, + "coreId": 0, + "status": 0 + }, + { + "start": 7.55170291, + "end": 7.55171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.55270294, + "end": 7.5527109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.55370291, + "end": 7.55371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.55470291, + "end": 7.55471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.55570291, + "end": 7.5557473, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.55571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.55571557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.55572249, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.55572783, + "coreId": 0, + "status": 0 + }, + { + "start": 7.55573509, + "end": 7.55576476, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.55574327, + "end": 7.55575908, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.55575201, + "coreId": 0, + "status": 0 + }, + { + "start": 7.55576476, + "end": 7.56574669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.55670291, + "end": 7.55671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.55770294, + "end": 7.5577109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.55870294, + "end": 7.5587109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.55970296, + "end": 7.55971092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.56070295, + "end": 7.56072311, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.56071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.56071526, + "coreId": 0, + "status": 0 + }, + { + "start": 7.56170292, + "end": 7.56171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.56270291, + "end": 7.56271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.56370291, + "end": 7.56371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.56470296, + "end": 7.56471092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.56570294, + "end": 7.5657589, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.56571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.56571532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.56572228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.56572754, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.56573409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.56573943, + "coreId": 0, + "status": 0 + }, + { + "start": 7.56574669, + "end": 7.56579987, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.56575487, + "end": 7.56577067, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.56576365, + "coreId": 0, + "status": 0 + }, + { + "start": 7.56577067, + "end": 7.5657828, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.5657828, + "end": 7.56579419, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.56578726, + "coreId": 0, + "status": 0 + }, + { + "start": 7.56579987, + "end": 7.57573476, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.56670291, + "end": 7.56671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.56770293, + "end": 7.56771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.56870293, + "end": 7.56871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.56970292, + "end": 7.56971088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.57070294, + "end": 7.57072285, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.57071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.57071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.57170292, + "end": 7.57171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.57270291, + "end": 7.57271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.57370297, + "end": 7.57371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.57470291, + "end": 7.57471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.57570292, + "end": 7.57574697, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.57571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.57571534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.57572226, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.5757275, + "coreId": 0, + "status": 0 + }, + { + "start": 7.57573476, + "end": 7.57576438, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.57574294, + "end": 7.5757587, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.57575168, + "coreId": 0, + "status": 0 + }, + { + "start": 7.57576438, + "end": 7.58574684, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.57670291, + "end": 7.57671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.57770293, + "end": 7.57771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.57870295, + "end": 7.57871091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.57970291, + "end": 7.57971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.58070295, + "end": 7.58072311, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.58071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.58071526, + "coreId": 0, + "status": 0 + }, + { + "start": 7.58170291, + "end": 7.58171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.58270295, + "end": 7.58271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.58370293, + "end": 7.58371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.58470297, + "end": 7.58471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.58570291, + "end": 7.58575905, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.58570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.58571538, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.58572234, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.58572769, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.58573424, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.58573958, + "coreId": 0, + "status": 0 + }, + { + "start": 7.58574684, + "end": 7.58580012, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.58575502, + "end": 7.58577087, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.5857638, + "coreId": 0, + "status": 0 + }, + { + "start": 7.58577087, + "end": 7.585783, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.585783, + "end": 7.58579444, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.58578746, + "coreId": 0, + "status": 0 + }, + { + "start": 7.58580012, + "end": 7.59573474, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.58670291, + "end": 7.58671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.58770297, + "end": 7.58771093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.58870292, + "end": 7.58871088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.58970294, + "end": 7.5897109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.59070291, + "end": 7.59072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.59070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.59071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.59170297, + "end": 7.59171093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.59270294, + "end": 7.5927109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.59370296, + "end": 7.59371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.59470293, + "end": 7.59471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.59570291, + "end": 7.59574695, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.59571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.59571532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.59572224, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.59572748, + "coreId": 0, + "status": 0 + }, + { + "start": 7.59573474, + "end": 7.59576437, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.59574292, + "end": 7.59575869, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.59575166, + "coreId": 0, + "status": 0 + }, + { + "start": 7.59576437, + "end": 7.60574668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.59670296, + "end": 7.59671094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.59770294, + "end": 7.5977109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.59870294, + "end": 7.5987109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.59970296, + "end": 7.59971092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.60070291, + "end": 7.60072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.60070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.60071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.60170292, + "end": 7.60171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.60270292, + "end": 7.60271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.60370295, + "end": 7.60371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.60470292, + "end": 7.60471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.60570293, + "end": 7.60575889, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.60571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.60571531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.60572227, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.60572753, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.60573408, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.60573942, + "coreId": 0, + "status": 0 + }, + { + "start": 7.60574668, + "end": 7.60579986, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.60575486, + "end": 7.60577066, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.60576364, + "coreId": 0, + "status": 0 + }, + { + "start": 7.60577066, + "end": 7.60578279, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.60578279, + "end": 7.60579418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.60578725, + "coreId": 0, + "status": 0 + }, + { + "start": 7.60579986, + "end": 7.61573486, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.60670291, + "end": 7.60671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.60770294, + "end": 7.6077109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.60870291, + "end": 7.60871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.60970297, + "end": 7.60971093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.61070291, + "end": 7.61072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.61070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.61071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.61170291, + "end": 7.61171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.61270291, + "end": 7.61271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.61370295, + "end": 7.61371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.61470291, + "end": 7.61471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.61570293, + "end": 7.61574707, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.61571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.61571544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.61572236, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.6157276, + "coreId": 0, + "status": 0 + }, + { + "start": 7.61573486, + "end": 7.61576453, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.61574304, + "end": 7.61575885, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.61575178, + "coreId": 0, + "status": 0 + }, + { + "start": 7.61576453, + "end": 7.62574692, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.61670293, + "end": 7.61671091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.61770297, + "end": 7.61771093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.61870295, + "end": 7.61871091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.61970291, + "end": 7.61971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.62070294, + "end": 7.6207231, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.62071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.62071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.62170297, + "end": 7.62171093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.62270294, + "end": 7.6227109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.62370296, + "end": 7.62371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.62470296, + "end": 7.62471092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.62570291, + "end": 7.62575913, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.62570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.62571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.62572251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.62572777, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.62573432, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.62573966, + "coreId": 0, + "status": 0 + }, + { + "start": 7.62574692, + "end": 7.62580019, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.6257551, + "end": 7.6257709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.62576388, + "coreId": 0, + "status": 0 + }, + { + "start": 7.6257709, + "end": 7.62578303, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.62578303, + "end": 7.62579451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.62578749, + "coreId": 0, + "status": 0 + }, + { + "start": 7.62580019, + "end": 7.63573506, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.62670296, + "end": 7.62671097, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.62770291, + "end": 7.62771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.62870291, + "end": 7.62871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.62970292, + "end": 7.62971088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.63070292, + "end": 7.63072283, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.63070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.63071523, + "coreId": 0, + "status": 0 + }, + { + "start": 7.63170293, + "end": 7.63171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.63270291, + "end": 7.63271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.63370291, + "end": 7.63371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.63470291, + "end": 7.63471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.63570296, + "end": 7.63574727, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.63571007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.63571538, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.63572256, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.6357278, + "coreId": 0, + "status": 0 + }, + { + "start": 7.63573506, + "end": 7.63576468, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.63574324, + "end": 7.635759, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.63575198, + "coreId": 0, + "status": 0 + }, + { + "start": 7.63576468, + "end": 7.64575919, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.63670291, + "end": 7.63671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.63770291, + "end": 7.63771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.63870292, + "end": 7.63871088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.63970296, + "end": 7.63971092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.64070294, + "end": 7.64072336, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.64071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.64071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.64170294, + "end": 7.6417109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.64270296, + "end": 7.64271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.64370293, + "end": 7.64371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.64470291, + "end": 7.64471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.64570293, + "end": 7.6457714, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.64571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.64571531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.64572249, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.64572784, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.64573469, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.64574004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.64574659, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.64575193, + "coreId": 0, + "status": 0 + }, + { + "start": 7.64575919, + "end": 7.645836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.64576737, + "end": 7.64578313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 5, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.64577611, + "coreId": 0, + "status": 0 + }, + { + "start": 7.64578313, + "end": 7.64579526, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 7.64579526, + "end": 7.64580674, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.64579976, + "coreId": 0, + "status": 0 + }, + { + "start": 7.64580674, + "end": 7.64581887, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.64581887, + "end": 7.64583031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.64582333, + "coreId": 0, + "status": 0 + }, + { + "start": 7.645836, + "end": 7.65573506, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.64670291, + "end": 7.64671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.64770297, + "end": 7.64771093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.64870294, + "end": 7.6487109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.64970294, + "end": 7.6497109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.65070295, + "end": 7.65072296, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.65071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.65071536, + "coreId": 0, + "status": 0 + }, + { + "start": 7.65170291, + "end": 7.65171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.65270293, + "end": 7.65271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.65370295, + "end": 7.65371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.65470291, + "end": 7.65471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.65570297, + "end": 7.65574727, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.65571008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.65571554, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.65572246, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.6557278, + "coreId": 0, + "status": 0 + }, + { + "start": 7.65573506, + "end": 7.65576469, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.65574324, + "end": 7.65575901, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.65575198, + "coreId": 0, + "status": 0 + }, + { + "start": 7.65576469, + "end": 7.66574666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.65670296, + "end": 7.65671094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.65770291, + "end": 7.65771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.65870296, + "end": 7.65871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.65970293, + "end": 7.65971089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.66070294, + "end": 7.6607231, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.66071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.66071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.66170293, + "end": 7.66171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.66270297, + "end": 7.66271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.66370293, + "end": 7.66371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.66470291, + "end": 7.66471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.66570291, + "end": 7.66575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.66570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.66571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.66572225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.66572751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.66573406, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.6657394, + "coreId": 0, + "status": 0 + }, + { + "start": 7.66574666, + "end": 7.66579993, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.66575484, + "end": 7.66577064, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.66576362, + "coreId": 0, + "status": 0 + }, + { + "start": 7.66577064, + "end": 7.66578277, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.66578277, + "end": 7.66579425, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.66578723, + "coreId": 0, + "status": 0 + }, + { + "start": 7.66579993, + "end": 7.67573484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.66670291, + "end": 7.66671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.66770295, + "end": 7.66771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.66870293, + "end": 7.66871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.66970293, + "end": 7.66971089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.67070292, + "end": 7.67072283, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.67070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.67071523, + "coreId": 0, + "status": 0 + }, + { + "start": 7.67170293, + "end": 7.67171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.67270292, + "end": 7.67271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.67370296, + "end": 7.67371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.67470295, + "end": 7.67471091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.67570291, + "end": 7.67574705, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.67571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.67571542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.67572234, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.67572758, + "coreId": 0, + "status": 0 + }, + { + "start": 7.67573484, + "end": 7.67576451, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.67574302, + "end": 7.67575883, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.67575176, + "coreId": 0, + "status": 0 + }, + { + "start": 7.67576451, + "end": 7.68574667, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.67670291, + "end": 7.67671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.67770292, + "end": 7.67771088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.67870296, + "end": 7.67871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.67970292, + "end": 7.67971088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.68070294, + "end": 7.6807231, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.68071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.68071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.68170291, + "end": 7.68171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.68270291, + "end": 7.68271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.68370291, + "end": 7.68371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.68470293, + "end": 7.68471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.68570292, + "end": 7.68575888, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.68570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.6857153, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.68572226, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.68572752, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.68573407, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.68573941, + "coreId": 0, + "status": 0 + }, + { + "start": 7.68574667, + "end": 7.68579985, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.68575485, + "end": 7.68577065, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.68576363, + "coreId": 0, + "status": 0 + }, + { + "start": 7.68577065, + "end": 7.68578278, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.68578278, + "end": 7.68579417, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.68578724, + "coreId": 0, + "status": 0 + }, + { + "start": 7.68579985, + "end": 7.69573477, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.68670295, + "end": 7.68671096, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.68770291, + "end": 7.68771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.68870295, + "end": 7.68871091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.68970294, + "end": 7.6897109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.69070295, + "end": 7.69072286, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.69071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.69071526, + "coreId": 0, + "status": 0 + }, + { + "start": 7.69170292, + "end": 7.69171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.69270294, + "end": 7.6927109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.69370294, + "end": 7.6937109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.69470297, + "end": 7.69471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.69570293, + "end": 7.69574698, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.69571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.69571535, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.69572227, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.69572751, + "coreId": 0, + "status": 0 + }, + { + "start": 7.69573477, + "end": 7.69576439, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.69574295, + "end": 7.69575871, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.69575169, + "coreId": 0, + "status": 0 + }, + { + "start": 7.69576439, + "end": 7.70574684, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.69670292, + "end": 7.6967109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.69770294, + "end": 7.6977109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.69870291, + "end": 7.69871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.69970294, + "end": 7.6997109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.70070291, + "end": 7.70072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.70070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.70071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.70170296, + "end": 7.70171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.70270292, + "end": 7.70271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.70370292, + "end": 7.70371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.70470293, + "end": 7.70471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.70570291, + "end": 7.70575905, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.70570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.70571538, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.70572234, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.70572769, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.70573424, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.70573958, + "coreId": 0, + "status": 0 + }, + { + "start": 7.70574684, + "end": 7.70580012, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.70575502, + "end": 7.70577087, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.7057638, + "coreId": 0, + "status": 0 + }, + { + "start": 7.70577087, + "end": 7.705783, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.705783, + "end": 7.70579444, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.70578746, + "coreId": 0, + "status": 0 + }, + { + "start": 7.70580012, + "end": 7.71573476, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.70670292, + "end": 7.70671093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.70770297, + "end": 7.70771093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.70870294, + "end": 7.7087109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.70970294, + "end": 7.7097109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.71070292, + "end": 7.71072283, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.71070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.71071523, + "coreId": 0, + "status": 0 + }, + { + "start": 7.71170294, + "end": 7.7117109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.71270291, + "end": 7.71271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.71370291, + "end": 7.71371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.71470293, + "end": 7.71471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.71570293, + "end": 7.71574697, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.71571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.71571534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.71572226, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.7157275, + "coreId": 0, + "status": 0 + }, + { + "start": 7.71573476, + "end": 7.71576439, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.71574294, + "end": 7.71575871, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.71575168, + "coreId": 0, + "status": 0 + }, + { + "start": 7.71576439, + "end": 7.72574693, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.71670294, + "end": 7.71671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.71770296, + "end": 7.71771092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.71870296, + "end": 7.71871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.71970293, + "end": 7.71971089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.72070291, + "end": 7.72072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.72070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.72071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.72170291, + "end": 7.72171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.72270292, + "end": 7.72271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.72370293, + "end": 7.72371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.72470291, + "end": 7.72471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.72570292, + "end": 7.72575914, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.72570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.7257153, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.72572252, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.72572778, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.72573433, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.72573967, + "coreId": 0, + "status": 0 + }, + { + "start": 7.72574693, + "end": 7.7258002, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.72575511, + "end": 7.72577091, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.72576389, + "coreId": 0, + "status": 0 + }, + { + "start": 7.72577091, + "end": 7.72578304, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.72578304, + "end": 7.72579452, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.7257875, + "coreId": 0, + "status": 0 + }, + { + "start": 7.7258002, + "end": 7.73573512, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.72670296, + "end": 7.72671097, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.72770295, + "end": 7.72771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.72870296, + "end": 7.72871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.72970291, + "end": 7.72971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.73070293, + "end": 7.73072284, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.73071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.73071524, + "coreId": 0, + "status": 0 + }, + { + "start": 7.73170291, + "end": 7.73171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.73270291, + "end": 7.73271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.73370291, + "end": 7.73371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.73470297, + "end": 7.73471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.73570293, + "end": 7.73574733, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.73571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.73571544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.73572262, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.73572786, + "coreId": 0, + "status": 0 + }, + { + "start": 7.73573512, + "end": 7.73576479, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.7357433, + "end": 7.73575911, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.73575204, + "coreId": 0, + "status": 0 + }, + { + "start": 7.73576479, + "end": 7.74575928, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.73670291, + "end": 7.73671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.73770295, + "end": 7.73771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.73870294, + "end": 7.7387109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.73970291, + "end": 7.73971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.74070295, + "end": 7.74072337, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.74071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.74071526, + "coreId": 0, + "status": 0 + }, + { + "start": 7.74170293, + "end": 7.74171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.74270296, + "end": 7.74271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.74370296, + "end": 7.74371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.74470291, + "end": 7.74471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.74570291, + "end": 7.74577149, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.74570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.74571538, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.74572276, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.74572802, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.74573487, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.74574013, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.74574668, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.74575202, + "coreId": 0, + "status": 0 + }, + { + "start": 7.74575928, + "end": 7.74583605, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.74576746, + "end": 7.74578327, + "coreId": 0, + "status": 1, + "type": 0, + "id": 5, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.7457762, + "coreId": 0, + "status": 0 + }, + { + "start": 7.74578327, + "end": 7.7457954, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 7.7457954, + "end": 7.74580684, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.7457999, + "coreId": 0, + "status": 0 + }, + { + "start": 7.74580684, + "end": 7.74581897, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.74581897, + "end": 7.74583036, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.74582343, + "coreId": 0, + "status": 0 + }, + { + "start": 7.74583605, + "end": 7.755735, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.74670294, + "end": 7.74671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.74770295, + "end": 7.74771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.74870293, + "end": 7.74871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.74970291, + "end": 7.74971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.75070293, + "end": 7.75072294, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.75071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.75071534, + "coreId": 0, + "status": 0 + }, + { + "start": 7.75170291, + "end": 7.75171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.75270296, + "end": 7.75271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.75370291, + "end": 7.75371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.75470294, + "end": 7.7547109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.75570291, + "end": 7.75574721, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.75571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.75571548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.7557224, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.75572774, + "coreId": 0, + "status": 0 + }, + { + "start": 7.755735, + "end": 7.75576462, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.75574318, + "end": 7.75575894, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.75575192, + "coreId": 0, + "status": 0 + }, + { + "start": 7.75576462, + "end": 7.76574715, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.75670295, + "end": 7.75671093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.75770291, + "end": 7.75771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.75870291, + "end": 7.75871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.75970296, + "end": 7.75971092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.76070291, + "end": 7.76072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.76070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.76071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.76170293, + "end": 7.76171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.76270294, + "end": 7.7627109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.76370296, + "end": 7.76371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.76470295, + "end": 7.76471091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.76570296, + "end": 7.76575936, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.76571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.76571543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.76572265, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.765728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.76573455, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.76573989, + "coreId": 0, + "status": 0 + }, + { + "start": 7.76574715, + "end": 7.76580052, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.76575533, + "end": 7.76577118, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.76576411, + "coreId": 0, + "status": 0 + }, + { + "start": 7.76577118, + "end": 7.76578331, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.76578331, + "end": 7.76579484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.76578777, + "coreId": 0, + "status": 0 + }, + { + "start": 7.76580052, + "end": 7.77573525, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.76670294, + "end": 7.76671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.76770296, + "end": 7.76771092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.76870297, + "end": 7.76871093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.76970294, + "end": 7.7697109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.77070291, + "end": 7.77072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.77070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.77071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.77170293, + "end": 7.77171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.77270295, + "end": 7.77271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.77370294, + "end": 7.7737109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.77470292, + "end": 7.77471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.77570291, + "end": 7.77574746, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.77571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.77571532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.7757225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.77572774, + "coreId": 0, + "status": 0 + }, + { + "start": 7.77573525, + "end": 7.77576488, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.77574343, + "end": 7.7757592, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.77575217, + "coreId": 0, + "status": 0 + }, + { + "start": 7.77576488, + "end": 7.7787237, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.77670291, + "end": 7.77671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.77770294, + "end": 7.7777109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.77870297, + "end": 7.77873591, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.77871008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.77871548, + "coreId": 0, + "status": 0 + }, + { + "start": 7.7787237, + "end": 7.77875337, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.77873188, + "end": 7.77874769, + "coreId": 0, + "status": 1, + "type": 0, + "id": 9, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.77874062, + "coreId": 0, + "status": 0 + }, + { + "start": 7.77875337, + "end": 7.78574666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.77970296, + "end": 7.77971094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.78070291, + "end": 7.78072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.78070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.78071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.78170292, + "end": 7.78171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.78270295, + "end": 7.78271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.78370291, + "end": 7.78371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.78470291, + "end": 7.78471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.78570292, + "end": 7.78575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.78570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.78571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.78572225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.78572751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.78573406, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.7857394, + "coreId": 0, + "status": 0 + }, + { + "start": 7.78574666, + "end": 7.78579985, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.78575484, + "end": 7.78577065, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.78576362, + "coreId": 0, + "status": 0 + }, + { + "start": 7.78577065, + "end": 7.78578278, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.78578278, + "end": 7.78579417, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.78578724, + "coreId": 0, + "status": 0 + }, + { + "start": 7.78579985, + "end": 7.79573487, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.78670294, + "end": 7.78671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.78770291, + "end": 7.78771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.78870291, + "end": 7.78871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.78970294, + "end": 7.7897109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.79070291, + "end": 7.79072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.79070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.79071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.79170291, + "end": 7.79171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.79270295, + "end": 7.79271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.79370295, + "end": 7.79371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.79470291, + "end": 7.79471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.79570294, + "end": 7.79574708, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.79571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.79571545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.79572237, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.79572761, + "coreId": 0, + "status": 0 + }, + { + "start": 7.79573487, + "end": 7.79576454, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.79574305, + "end": 7.79575886, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.79575179, + "coreId": 0, + "status": 0 + }, + { + "start": 7.79576454, + "end": 7.80574671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.79670294, + "end": 7.79671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.79770291, + "end": 7.79771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.79870291, + "end": 7.79871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.79970291, + "end": 7.79971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.80070291, + "end": 7.80072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.80070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.80071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.80170296, + "end": 7.80171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.80270294, + "end": 7.8027109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.80370292, + "end": 7.80371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.80470291, + "end": 7.80471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.80570296, + "end": 7.80575892, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.80571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.80571534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.8057223, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.80572756, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.80573411, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.80573945, + "coreId": 0, + "status": 0 + }, + { + "start": 7.80574671, + "end": 7.80579989, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.80575489, + "end": 7.80577069, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.80576367, + "coreId": 0, + "status": 0 + }, + { + "start": 7.80577069, + "end": 7.80578282, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.80578282, + "end": 7.80579421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.80578728, + "coreId": 0, + "status": 0 + }, + { + "start": 7.80579989, + "end": 7.81573477, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.80670294, + "end": 7.80671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.80770296, + "end": 7.80771092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.80870296, + "end": 7.80871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.80970291, + "end": 7.80971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.81070294, + "end": 7.81072285, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.81071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.81071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.81170291, + "end": 7.81171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.81270294, + "end": 7.8127109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.81370293, + "end": 7.81371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.81470292, + "end": 7.81471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.81570293, + "end": 7.81574698, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.81571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.81571535, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.81572227, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.81572751, + "coreId": 0, + "status": 0 + }, + { + "start": 7.81573477, + "end": 7.81576439, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.81574295, + "end": 7.81575871, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.81575169, + "coreId": 0, + "status": 0 + }, + { + "start": 7.81576439, + "end": 7.82574711, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.81670292, + "end": 7.8167109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.81770292, + "end": 7.81771088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.81870297, + "end": 7.81871093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.81970294, + "end": 7.8197109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.82070291, + "end": 7.82072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.82070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.82071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.82170292, + "end": 7.82171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.82270293, + "end": 7.82271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.82370295, + "end": 7.82371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.82470293, + "end": 7.82471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.82570292, + "end": 7.82575932, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.82570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.82571539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.82572261, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.82572796, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.82573451, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.82573985, + "coreId": 0, + "status": 0 + }, + { + "start": 7.82574711, + "end": 7.82580039, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.82575529, + "end": 7.82577114, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.82576407, + "coreId": 0, + "status": 0 + }, + { + "start": 7.82577114, + "end": 7.82578327, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.82578327, + "end": 7.82579471, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.82578773, + "coreId": 0, + "status": 0 + }, + { + "start": 7.82580039, + "end": 7.83573502, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.82670291, + "end": 7.82671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.82770291, + "end": 7.82771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.82870292, + "end": 7.82871088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.82970291, + "end": 7.82971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.83070292, + "end": 7.83072283, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.83070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.83071523, + "coreId": 0, + "status": 0 + }, + { + "start": 7.83170291, + "end": 7.83171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.83270295, + "end": 7.83271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.83370291, + "end": 7.83371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.83470294, + "end": 7.8347109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.83570293, + "end": 7.83574723, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.83571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.83571534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.83572252, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.83572776, + "coreId": 0, + "status": 0 + }, + { + "start": 7.83573502, + "end": 7.83576465, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.8357432, + "end": 7.83575897, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.83575194, + "coreId": 0, + "status": 0 + }, + { + "start": 7.83576465, + "end": 7.84575903, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.83670294, + "end": 7.83671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.83770292, + "end": 7.83771088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.83870291, + "end": 7.83871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.83970294, + "end": 7.8397109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.84070291, + "end": 7.84072333, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.84070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.84071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.84170294, + "end": 7.8417109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.84270291, + "end": 7.84271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.84370296, + "end": 7.84371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.84470294, + "end": 7.8447109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.84570295, + "end": 7.84577124, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.84571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.84571533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.84572251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.84572777, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.84573462, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.84573988, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.84574643, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.84575177, + "coreId": 0, + "status": 0 + }, + { + "start": 7.84575903, + "end": 7.84583574, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.84576721, + "end": 7.84578297, + "coreId": 0, + "status": 1, + "type": 0, + "id": 5, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.84577595, + "coreId": 0, + "status": 0 + }, + { + "start": 7.84578297, + "end": 7.8457951, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 7.8457951, + "end": 7.84580653, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.8457996, + "coreId": 0, + "status": 0 + }, + { + "start": 7.84580653, + "end": 7.84581866, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.84581866, + "end": 7.84583005, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.84582312, + "coreId": 0, + "status": 0 + }, + { + "start": 7.84583574, + "end": 7.85573509, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.84670294, + "end": 7.84671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.84770292, + "end": 7.84771088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.84870293, + "end": 7.84871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.84970294, + "end": 7.8497109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.85070291, + "end": 7.85072292, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.85070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.85071532, + "coreId": 0, + "status": 0 + }, + { + "start": 7.85170291, + "end": 7.85171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.85270297, + "end": 7.85271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.85370297, + "end": 7.85371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.85470292, + "end": 7.85471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.85570291, + "end": 7.8557473, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.85571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.85571557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.85572249, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.85572783, + "coreId": 0, + "status": 0 + }, + { + "start": 7.85573509, + "end": 7.85576476, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.85574327, + "end": 7.85575908, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.85575201, + "coreId": 0, + "status": 0 + }, + { + "start": 7.85576476, + "end": 7.86574666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.85670291, + "end": 7.85671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.85770295, + "end": 7.85771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.85870294, + "end": 7.8587109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.85970296, + "end": 7.85971092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.86070292, + "end": 7.86072308, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.86070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.86071523, + "coreId": 0, + "status": 0 + }, + { + "start": 7.86170291, + "end": 7.86171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.86270292, + "end": 7.86271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.86370296, + "end": 7.86371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.86470296, + "end": 7.86471092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.86570291, + "end": 7.86575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.86570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.86571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.86572225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.86572751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.86573406, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.8657394, + "coreId": 0, + "status": 0 + }, + { + "start": 7.86574666, + "end": 7.86579984, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.86575484, + "end": 7.86577064, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.86576362, + "coreId": 0, + "status": 0 + }, + { + "start": 7.86577064, + "end": 7.86578277, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.86578277, + "end": 7.86579416, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.86578723, + "coreId": 0, + "status": 0 + }, + { + "start": 7.86579984, + "end": 7.87573475, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.86670293, + "end": 7.86671094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.86770291, + "end": 7.86771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.86870291, + "end": 7.86871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.86970293, + "end": 7.86971089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.87070294, + "end": 7.87072285, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.87071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.87071525, + "coreId": 0, + "status": 0 + }, + { + "start": 7.87170296, + "end": 7.87171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.87270291, + "end": 7.87271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.87370291, + "end": 7.87371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.87470292, + "end": 7.87471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.87570291, + "end": 7.87574696, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.87571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.87571533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.87572225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.87572749, + "coreId": 0, + "status": 0 + }, + { + "start": 7.87573475, + "end": 7.87576437, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.87574293, + "end": 7.87575869, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.87575167, + "coreId": 0, + "status": 0 + }, + { + "start": 7.87576437, + "end": 7.88574687, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.87670295, + "end": 7.87671093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.87770291, + "end": 7.87771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.87870294, + "end": 7.8787109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.87970291, + "end": 7.87971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.88070295, + "end": 7.88072311, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.88071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.88071526, + "coreId": 0, + "status": 0 + }, + { + "start": 7.88170297, + "end": 7.88171093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.88270291, + "end": 7.88271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.88370291, + "end": 7.88371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.88470295, + "end": 7.88471091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.88570294, + "end": 7.88575908, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.88571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.88571541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.88572237, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.88572772, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.88573427, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.88573961, + "coreId": 0, + "status": 0 + }, + { + "start": 7.88574687, + "end": 7.88580015, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.88575505, + "end": 7.8857709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.88576383, + "coreId": 0, + "status": 0 + }, + { + "start": 7.8857709, + "end": 7.88578303, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.88578303, + "end": 7.88579447, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.88578749, + "coreId": 0, + "status": 0 + }, + { + "start": 7.88580015, + "end": 7.89573477, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.88670291, + "end": 7.88671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.88770292, + "end": 7.88771088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.88870291, + "end": 7.88871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.88970294, + "end": 7.8897109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.89070295, + "end": 7.89072286, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.89071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.89071526, + "coreId": 0, + "status": 0 + }, + { + "start": 7.89170296, + "end": 7.89171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.89270294, + "end": 7.8927109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.89370296, + "end": 7.89371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.89470291, + "end": 7.89471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.89570294, + "end": 7.89574698, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.89571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.89571535, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.89572227, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.89572751, + "coreId": 0, + "status": 0 + }, + { + "start": 7.89573477, + "end": 7.8957644, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.89574295, + "end": 7.89575872, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.89575169, + "coreId": 0, + "status": 0 + }, + { + "start": 7.8957644, + "end": 7.9057467, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.89670293, + "end": 7.89671091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.89770294, + "end": 7.8977109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.89870294, + "end": 7.8987109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.89970294, + "end": 7.8997109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.90070291, + "end": 7.90072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.90070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.90071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.90170296, + "end": 7.90171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.90270291, + "end": 7.90271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.90370295, + "end": 7.90371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.90470291, + "end": 7.90471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.90570295, + "end": 7.90575891, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.90571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.90571533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.90572229, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.90572755, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.9057341, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.90573944, + "coreId": 0, + "status": 0 + }, + { + "start": 7.9057467, + "end": 7.90579997, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.90575488, + "end": 7.90577068, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.90576366, + "coreId": 0, + "status": 0 + }, + { + "start": 7.90577068, + "end": 7.90578281, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.90578281, + "end": 7.90579429, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.90578727, + "coreId": 0, + "status": 0 + }, + { + "start": 7.90579997, + "end": 7.91573484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.90670294, + "end": 7.90671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.90770294, + "end": 7.9077109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.90870293, + "end": 7.90871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.90970297, + "end": 7.90971093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.91070293, + "end": 7.91072284, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.91071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.91071524, + "coreId": 0, + "status": 0 + }, + { + "start": 7.91170296, + "end": 7.91171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.91270297, + "end": 7.91271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.91370293, + "end": 7.91371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.91470291, + "end": 7.91471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.91570291, + "end": 7.91574705, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.91571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.91571542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.91572234, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.91572758, + "coreId": 0, + "status": 0 + }, + { + "start": 7.91573484, + "end": 7.91576451, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.91574302, + "end": 7.91575883, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.91575176, + "coreId": 0, + "status": 0 + }, + { + "start": 7.91576451, + "end": 7.92574692, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.91670294, + "end": 7.91671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.91770293, + "end": 7.91771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.91870295, + "end": 7.91871091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.91970294, + "end": 7.9197109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.92070292, + "end": 7.92072308, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.92070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.92071523, + "coreId": 0, + "status": 0 + }, + { + "start": 7.92170291, + "end": 7.92171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.92270291, + "end": 7.92271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.92370294, + "end": 7.9237109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.92470293, + "end": 7.92471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.92570291, + "end": 7.92575913, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.92570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.92571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.92572251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.92572777, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.92573432, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.92573966, + "coreId": 0, + "status": 0 + }, + { + "start": 7.92574692, + "end": 7.9258001, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.9257551, + "end": 7.9257709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.92576388, + "coreId": 0, + "status": 0 + }, + { + "start": 7.9257709, + "end": 7.92578303, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.92578303, + "end": 7.92579442, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.92578749, + "coreId": 0, + "status": 0 + }, + { + "start": 7.9258001, + "end": 7.93573501, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.92670291, + "end": 7.92671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.92770291, + "end": 7.92771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.92870295, + "end": 7.92871091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.92970295, + "end": 7.92971091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.93070291, + "end": 7.93072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.93070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.93071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.93170294, + "end": 7.9317109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.93270297, + "end": 7.93271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.93370292, + "end": 7.93371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.93470291, + "end": 7.93471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.93570291, + "end": 7.93574722, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.93571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.93571533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.93572251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.93572775, + "coreId": 0, + "status": 0 + }, + { + "start": 7.93573501, + "end": 7.93576463, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.93574319, + "end": 7.93575895, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.93575193, + "coreId": 0, + "status": 0 + }, + { + "start": 7.93576463, + "end": 7.94575923, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.93670293, + "end": 7.93671091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.93770295, + "end": 7.93771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.93870296, + "end": 7.93871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.93970296, + "end": 7.93971092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.94070297, + "end": 7.94072339, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.94071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.94071528, + "coreId": 0, + "status": 0 + }, + { + "start": 7.94170291, + "end": 7.94171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.94270292, + "end": 7.94271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.94370293, + "end": 7.94371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.94470296, + "end": 7.94471092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.94570295, + "end": 7.94577144, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.94571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.94571542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.9457226, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.94572795, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.9457348, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.94574008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.94574663, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.94575197, + "coreId": 0, + "status": 0 + }, + { + "start": 7.94575923, + "end": 7.94583608, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.94576741, + "end": 7.94578322, + "coreId": 0, + "status": 1, + "type": 0, + "id": 5, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.94577615, + "coreId": 0, + "status": 0 + }, + { + "start": 7.94578322, + "end": 7.94579535, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 7.94579535, + "end": 7.94580683, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.94579985, + "coreId": 0, + "status": 0 + }, + { + "start": 7.94580683, + "end": 7.94581896, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.94581896, + "end": 7.94583039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.94582342, + "coreId": 0, + "status": 0 + }, + { + "start": 7.94583608, + "end": 7.95573504, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.94670291, + "end": 7.94671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.94770296, + "end": 7.94771092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.94870293, + "end": 7.94871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.94970294, + "end": 7.9497109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.95070293, + "end": 7.95072294, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.95071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.95071534, + "coreId": 0, + "status": 0 + }, + { + "start": 7.95170292, + "end": 7.95171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.95270293, + "end": 7.95271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.95370291, + "end": 7.95371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.95470294, + "end": 7.9547109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.95570295, + "end": 7.95574725, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.95571006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.95571552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.95572244, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.95572778, + "coreId": 0, + "status": 0 + }, + { + "start": 7.95573504, + "end": 7.95576467, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.95574322, + "end": 7.95575899, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.95575196, + "coreId": 0, + "status": 0 + }, + { + "start": 7.95576467, + "end": 7.96574669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.95670291, + "end": 7.95671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.95770291, + "end": 7.95771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.95870292, + "end": 7.95871088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.95970294, + "end": 7.9597109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.96070293, + "end": 7.96072309, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.96071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.96071524, + "coreId": 0, + "status": 0 + }, + { + "start": 7.96170297, + "end": 7.96171093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.96270296, + "end": 7.96271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.96370294, + "end": 7.9637109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.96470293, + "end": 7.96471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.96570295, + "end": 7.9657589, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.96571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.96571532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.96572228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.96572754, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.96573409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.96573943, + "coreId": 0, + "status": 0 + }, + { + "start": 7.96574669, + "end": 7.96579988, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.96575487, + "end": 7.96577068, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.96576365, + "coreId": 0, + "status": 0 + }, + { + "start": 7.96577068, + "end": 7.96578281, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.96578281, + "end": 7.9657942, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.96578727, + "coreId": 0, + "status": 0 + }, + { + "start": 7.96579988, + "end": 7.97573484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.96670294, + "end": 7.96671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.96770291, + "end": 7.96771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.96870291, + "end": 7.96871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.96970293, + "end": 7.96971089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.97070293, + "end": 7.97072284, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.97071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.97071524, + "coreId": 0, + "status": 0 + }, + { + "start": 7.97170291, + "end": 7.97171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.97270291, + "end": 7.97271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.97370293, + "end": 7.97371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.97470292, + "end": 7.97471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.97570291, + "end": 7.97574705, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.97571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.97571542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.97572234, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.97572758, + "coreId": 0, + "status": 0 + }, + { + "start": 7.97573484, + "end": 7.97576451, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.97574302, + "end": 7.97575883, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.97575176, + "coreId": 0, + "status": 0 + }, + { + "start": 7.97576451, + "end": 7.98574667, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.97670293, + "end": 7.97671091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.97770297, + "end": 7.97771093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.97870297, + "end": 7.97871093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.97970294, + "end": 7.9797109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.98070297, + "end": 7.98072313, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.98071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.98071528, + "coreId": 0, + "status": 0 + }, + { + "start": 7.98170292, + "end": 7.98171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.98270291, + "end": 7.98271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.98370291, + "end": 7.98371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.98470292, + "end": 7.98471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.98570292, + "end": 7.98575888, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.98570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.9857153, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.98572226, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.98572752, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.98573407, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.98573941, + "coreId": 0, + "status": 0 + }, + { + "start": 7.98574667, + "end": 7.98579985, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.98575485, + "end": 7.98577065, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.98576363, + "coreId": 0, + "status": 0 + }, + { + "start": 7.98577065, + "end": 7.98578278, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 7.98578278, + "end": 7.98579417, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.98578724, + "coreId": 0, + "status": 0 + }, + { + "start": 7.98579985, + "end": 7.99573477, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.98670294, + "end": 7.98671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.98770293, + "end": 7.98771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.98870291, + "end": 7.98871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.98970294, + "end": 7.9897109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.99070291, + "end": 7.99072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.99070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.99071522, + "coreId": 0, + "status": 0 + }, + { + "start": 7.99170294, + "end": 7.9917109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.99270295, + "end": 7.99271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.99370296, + "end": 7.99371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.99470295, + "end": 7.99471091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.99570293, + "end": 7.99574698, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 7.99571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.99571535, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 7.99572227, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 7.99572751, + "coreId": 0, + "status": 0 + }, + { + "start": 7.99573477, + "end": 7.99576439, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.99574295, + "end": 7.99575871, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 7.99575169, + "coreId": 0, + "status": 0 + }, + { + "start": 7.99576439, + "end": 8.00574688, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 7.99670291, + "end": 7.99671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.99770293, + "end": 7.99771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.99870297, + "end": 7.99871093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 7.99970296, + "end": 7.99971092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.00070292, + "end": 8.00072308, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.00070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.00071523, + "coreId": 0, + "status": 0 + }, + { + "start": 8.00170294, + "end": 8.0017109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.00270291, + "end": 8.00271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.00370297, + "end": 8.00371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.00470291, + "end": 8.00471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.00570295, + "end": 8.00575909, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.00571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.00571542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.00572238, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.00572773, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.00573428, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.00573962, + "coreId": 0, + "status": 0 + }, + { + "start": 8.00574688, + "end": 8.00580025, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.00575506, + "end": 8.00577091, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.00576384, + "coreId": 0, + "status": 0 + }, + { + "start": 8.00577091, + "end": 8.00578304, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.00578304, + "end": 8.00579457, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.0057875, + "coreId": 0, + "status": 0 + }, + { + "start": 8.00580025, + "end": 8.01573474, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.00670295, + "end": 8.00671096, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.00770291, + "end": 8.00771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.00870294, + "end": 8.0087109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.00970297, + "end": 8.00971093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.01070292, + "end": 8.01072283, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.01070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.01071523, + "coreId": 0, + "status": 0 + }, + { + "start": 8.01170293, + "end": 8.01171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.01270291, + "end": 8.01271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.01370296, + "end": 8.01371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.01470291, + "end": 8.01471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.01570291, + "end": 8.01574695, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.01571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.01571532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.01572224, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.01572748, + "coreId": 0, + "status": 0 + }, + { + "start": 8.01573474, + "end": 8.01576437, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.01574292, + "end": 8.01575869, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.01575166, + "coreId": 0, + "status": 0 + }, + { + "start": 8.01576437, + "end": 8.02574695, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.01670295, + "end": 8.01671093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.01770291, + "end": 8.01771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.01870291, + "end": 8.01871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.01970296, + "end": 8.01971092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.02070293, + "end": 8.02072309, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.02071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.02071524, + "coreId": 0, + "status": 0 + }, + { + "start": 8.02170291, + "end": 8.02171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.02270291, + "end": 8.02271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.02370293, + "end": 8.02371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.02470294, + "end": 8.0247109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.02570294, + "end": 8.02575916, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.02571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.02571532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.02572254, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.0257278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.02573435, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.02573969, + "coreId": 0, + "status": 0 + }, + { + "start": 8.02574695, + "end": 8.02580022, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.02575513, + "end": 8.02577093, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.02576391, + "coreId": 0, + "status": 0 + }, + { + "start": 8.02577093, + "end": 8.02578306, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.02578306, + "end": 8.02579454, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.02578752, + "coreId": 0, + "status": 0 + }, + { + "start": 8.02580022, + "end": 8.03573511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.02670293, + "end": 8.02671094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.02770293, + "end": 8.02771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.02870294, + "end": 8.0287109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.02970291, + "end": 8.02971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.03070293, + "end": 8.03072284, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.03071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.03071524, + "coreId": 0, + "status": 0 + }, + { + "start": 8.03170296, + "end": 8.03171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.03270296, + "end": 8.03271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.03370291, + "end": 8.03371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.03470291, + "end": 8.03471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.03570292, + "end": 8.03574732, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.03571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.03571543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.03572261, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.03572785, + "coreId": 0, + "status": 0 + }, + { + "start": 8.03573511, + "end": 8.03576478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.03574329, + "end": 8.0357591, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.03575203, + "coreId": 0, + "status": 0 + }, + { + "start": 8.03576478, + "end": 8.04575919, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.03670296, + "end": 8.03671094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.03770294, + "end": 8.0377109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.03870291, + "end": 8.03871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.03970293, + "end": 8.03971089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.04070294, + "end": 8.04072336, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.04071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.04071525, + "coreId": 0, + "status": 0 + }, + { + "start": 8.04170291, + "end": 8.04171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.04270292, + "end": 8.04271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.04370291, + "end": 8.04371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.04470292, + "end": 8.04471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.04570291, + "end": 8.0457714, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.04570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.04571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.04572267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.04572793, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.04573478, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.04574004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.04574659, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.04575193, + "coreId": 0, + "status": 0 + }, + { + "start": 8.04575919, + "end": 8.0458359, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.04576737, + "end": 8.04578313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 5, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.04577611, + "coreId": 0, + "status": 0 + }, + { + "start": 8.04578313, + "end": 8.04579526, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.04579526, + "end": 8.04580669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.04579976, + "coreId": 0, + "status": 0 + }, + { + "start": 8.04580669, + "end": 8.04581882, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.04581882, + "end": 8.04583021, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.04582328, + "coreId": 0, + "status": 0 + }, + { + "start": 8.0458359, + "end": 8.055735, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.04670293, + "end": 8.04671094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.04770293, + "end": 8.04771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.04870297, + "end": 8.04871093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.04970297, + "end": 8.04971093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.05070293, + "end": 8.05072294, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.05071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.05071534, + "coreId": 0, + "status": 0 + }, + { + "start": 8.05170292, + "end": 8.05171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.05270291, + "end": 8.05271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.05370296, + "end": 8.05371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.05470293, + "end": 8.05471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.05570291, + "end": 8.05574721, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.05571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.05571548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.0557224, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.05572774, + "coreId": 0, + "status": 0 + }, + { + "start": 8.055735, + "end": 8.05576462, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.05574318, + "end": 8.05575894, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.05575192, + "coreId": 0, + "status": 0 + }, + { + "start": 8.05576462, + "end": 8.0657471, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.05670291, + "end": 8.05671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.05770291, + "end": 8.05771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.05870293, + "end": 8.05871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.05970294, + "end": 8.0597109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.06070297, + "end": 8.06072313, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.06071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.06071528, + "coreId": 0, + "status": 0 + }, + { + "start": 8.06170293, + "end": 8.06171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.06270291, + "end": 8.06271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.06370296, + "end": 8.06371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.06470296, + "end": 8.06471092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.06570291, + "end": 8.06575931, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.06570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.06571538, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.0657226, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.06572795, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.0657345, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.06573984, + "coreId": 0, + "status": 0 + }, + { + "start": 8.0657471, + "end": 8.06580038, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.06575528, + "end": 8.06577113, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.06576406, + "coreId": 0, + "status": 0 + }, + { + "start": 8.06577113, + "end": 8.06578326, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.06578326, + "end": 8.0657947, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.06578772, + "coreId": 0, + "status": 0 + }, + { + "start": 8.06580038, + "end": 8.07573525, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.06670295, + "end": 8.06671096, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.06770291, + "end": 8.06771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.06870291, + "end": 8.06871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.06970291, + "end": 8.06971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.07070296, + "end": 8.07072287, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.07071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.07071527, + "coreId": 0, + "status": 0 + }, + { + "start": 8.07170291, + "end": 8.07171087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.07270297, + "end": 8.07271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.07370291, + "end": 8.07371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.07470297, + "end": 8.07471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.07570291, + "end": 8.07574746, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.07571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.07571532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.0757225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.07572774, + "coreId": 0, + "status": 0 + }, + { + "start": 8.07573525, + "end": 8.07576488, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.07574343, + "end": 8.0757592, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.07575217, + "coreId": 0, + "status": 0 + }, + { + "start": 8.07576488, + "end": 8.0787236, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.07670292, + "end": 8.0767109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.07770291, + "end": 8.07771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.07870296, + "end": 8.07873581, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.07871007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.07871538, + "coreId": 0, + "status": 0 + }, + { + "start": 8.0787236, + "end": 8.07875322, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.07873178, + "end": 8.07874754, + "coreId": 0, + "status": 1, + "type": 0, + "id": 9, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.07874052, + "coreId": 0, + "status": 0 + }, + { + "start": 8.07875322, + "end": 8.08574669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.07970296, + "end": 8.07971094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.08070291, + "end": 8.08072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.08070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.08071522, + "coreId": 0, + "status": 0 + }, + { + "start": 8.08170292, + "end": 8.08171088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.08270297, + "end": 8.08271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.08370291, + "end": 8.08371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.08470292, + "end": 8.08471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.08570294, + "end": 8.0857589, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.08571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.08571532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.08572228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.08572754, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.08573409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.08573943, + "coreId": 0, + "status": 0 + }, + { + "start": 8.08574669, + "end": 8.08579987, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.08575487, + "end": 8.08577067, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.08576365, + "coreId": 0, + "status": 0 + }, + { + "start": 8.08577067, + "end": 8.0857828, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.0857828, + "end": 8.08579419, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.08578726, + "coreId": 0, + "status": 0 + }, + { + "start": 8.08579987, + "end": 8.09573487, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.08670296, + "end": 8.08671097, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.08770296, + "end": 8.08771092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.08870291, + "end": 8.08871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.08970291, + "end": 8.08971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.09070291, + "end": 8.09072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.09070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.09071522, + "coreId": 0, + "status": 0 + }, + { + "start": 8.09170293, + "end": 8.09171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.09270294, + "end": 8.0927109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.09370293, + "end": 8.09371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.09470293, + "end": 8.09471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.09570294, + "end": 8.09574708, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.09571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.09571545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.09572237, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.09572761, + "coreId": 0, + "status": 0 + }, + { + "start": 8.09573487, + "end": 8.09576454, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.09574305, + "end": 8.09575886, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.09575179, + "coreId": 0, + "status": 0 + }, + { + "start": 8.09576454, + "end": 8.10574666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.09670291, + "end": 8.09671089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.09770291, + "end": 8.09771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.09870293, + "end": 8.09871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.09970292, + "end": 8.09971088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.10070291, + "end": 8.10072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.10070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.10071522, + "coreId": 0, + "status": 0 + }, + { + "start": 8.10170294, + "end": 8.1017109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.10270294, + "end": 8.1027109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.10370297, + "end": 8.10371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.10470296, + "end": 8.10471092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.10570291, + "end": 8.10575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.10570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.10571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.10572225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.10572751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.10573406, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.1057394, + "coreId": 0, + "status": 0 + }, + { + "start": 8.10574666, + "end": 8.10579984, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.10575484, + "end": 8.10577064, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.10576362, + "coreId": 0, + "status": 0 + }, + { + "start": 8.10577064, + "end": 8.10578277, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.10578277, + "end": 8.10579416, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.10578723, + "coreId": 0, + "status": 0 + }, + { + "start": 8.10579984, + "end": 8.11573477, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.10670293, + "end": 8.10671094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.10770291, + "end": 8.10771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.10870291, + "end": 8.10871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.10970294, + "end": 8.1097109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.11070291, + "end": 8.11072282, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.11070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.11071522, + "coreId": 0, + "status": 0 + }, + { + "start": 8.11170295, + "end": 8.11171091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.11270295, + "end": 8.11271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.11370297, + "end": 8.11371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.11470293, + "end": 8.11471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.11570293, + "end": 8.11574698, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.11571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.11571535, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.11572227, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.11572751, + "coreId": 0, + "status": 0 + }, + { + "start": 8.11573477, + "end": 8.11576439, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.11574295, + "end": 8.11575871, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.11575169, + "coreId": 0, + "status": 0 + }, + { + "start": 8.11576439, + "end": 8.12574714, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.11670295, + "end": 8.11671093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.11770293, + "end": 8.11771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.11870295, + "end": 8.11871091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.11970291, + "end": 8.11971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.12070291, + "end": 8.12072307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.12070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.12071522, + "coreId": 0, + "status": 0 + }, + { + "start": 8.12170296, + "end": 8.12171092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.12270292, + "end": 8.12271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.12370291, + "end": 8.12371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.12470291, + "end": 8.12471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.12570295, + "end": 8.12575935, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.12571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.12571542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.12572264, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.12572799, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.12573454, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.12573988, + "coreId": 0, + "status": 0 + }, + { + "start": 8.12574714, + "end": 8.12580051, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.12575532, + "end": 8.12577117, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.1257641, + "coreId": 0, + "status": 0 + }, + { + "start": 8.12577117, + "end": 8.1257833, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.1257833, + "end": 8.12579483, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.12578776, + "coreId": 0, + "status": 0 + }, + { + "start": 8.12580051, + "end": 8.13573504, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.12670291, + "end": 8.12671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.12770295, + "end": 8.12771091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.12870291, + "end": 8.12871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.12970294, + "end": 8.1297109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.13070295, + "end": 8.13072286, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.13071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.13071526, + "coreId": 0, + "status": 0 + }, + { + "start": 8.13170294, + "end": 8.1317109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.13270293, + "end": 8.13271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.13370291, + "end": 8.13371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.13470295, + "end": 8.13471091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.13570295, + "end": 8.13574725, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.13571006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.13571536, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.13572254, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.13572778, + "coreId": 0, + "status": 0 + }, + { + "start": 8.13573504, + "end": 8.13576467, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.13574322, + "end": 8.13575899, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.13575196, + "coreId": 0, + "status": 0 + }, + { + "start": 8.13576467, + "end": 8.14575909, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.13670293, + "end": 8.13671091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.13770294, + "end": 8.1377109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.13870291, + "end": 8.13871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.13970291, + "end": 8.13971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.14070292, + "end": 8.14072334, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.14070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.14071523, + "coreId": 0, + "status": 0 + }, + { + "start": 8.14170297, + "end": 8.14171093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.14270294, + "end": 8.1427109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.14370291, + "end": 8.14371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.14470292, + "end": 8.14471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.14570292, + "end": 8.1457713, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.14570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.14571539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.14572257, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.14572783, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.14573468, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.14573994, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.14574649, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.14575183, + "coreId": 0, + "status": 0 + }, + { + "start": 8.14575909, + "end": 8.14583586, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.14576727, + "end": 8.14578308, + "coreId": 0, + "status": 1, + "type": 0, + "id": 5, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.14577601, + "coreId": 0, + "status": 0 + }, + { + "start": 8.14578308, + "end": 8.14579521, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.14579521, + "end": 8.14580665, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.14579971, + "coreId": 0, + "status": 0 + }, + { + "start": 8.14580665, + "end": 8.14581878, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.14581878, + "end": 8.14583017, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.14582324, + "coreId": 0, + "status": 0 + }, + { + "start": 8.14583586, + "end": 8.15573512, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.14670294, + "end": 8.14671095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.14770293, + "end": 8.14771089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.14870296, + "end": 8.14871092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.14970292, + "end": 8.14971088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.15070293, + "end": 8.15072294, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.15071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.15071534, + "coreId": 0, + "status": 0 + }, + { + "start": 8.15170295, + "end": 8.15171091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.15270294, + "end": 8.1527109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.15370294, + "end": 8.1537109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.15470297, + "end": 8.15471093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.15570294, + "end": 8.15574733, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.15571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.1557156, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.15572252, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.15572786, + "coreId": 0, + "status": 0 + }, + { + "start": 8.15573512, + "end": 8.15576479, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.1557433, + "end": 8.15575911, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.15575204, + "coreId": 0, + "status": 0 + }, + { + "start": 8.15576479, + "end": 8.16574666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.15670293, + "end": 8.15671091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.15770291, + "end": 8.15771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.15870291, + "end": 8.15871087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.15970292, + "end": 8.15971088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16070293, + "end": 8.16072309, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.16071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.16071524, + "coreId": 0, + "status": 0 + }, + { + "start": 8.16170293, + "end": 8.16171089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16270295, + "end": 8.16271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16370292, + "end": 8.16371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16470291, + "end": 8.16471087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16570291, + "end": 8.16575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.16570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.16571529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.16572225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.16572751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.16573406, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.1657394, + "coreId": 0, + "status": 0 + }, + { + "start": 8.16574666, + "end": 8.16579993, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16575484, + "end": 8.16577064, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.16576362, + "coreId": 0, + "status": 0 + }, + { + "start": 8.16577064, + "end": 8.16578277, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.16578277, + "end": 8.16579425, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "type": 5, + "id": 114, + "start": 8.16578723, + "coreId": 0, + "status": 0 + }, + { + "start": 8.16579993, + "end": 8.17576438, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16670291, + "end": 8.16671092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16770291, + "end": 8.16771087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16870293, + "end": 8.16871089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.16970291, + "end": 8.16971087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.17070294, + "end": 8.17072285, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.17071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.17071525, + "coreId": 0, + "status": 0 + }, + { + "start": 8.17170295, + "end": 8.17271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.17576438, + "end": 8.26579986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 8.18576385, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.18578751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.19572752, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.1957517, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.20576363, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.20578724, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.21572759, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.21575177, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.22576388, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.22578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.23572781, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.23575199, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.24579974, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.24582331, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.2557278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.25575198, + "coreId": 0, + "status": 0 + }, + { + "start": 8.26575486, + "end": 8.28575485, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.26577066, + "end": 8.27574303, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.26579986, + "end": 8.27576452, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.27070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.27571543, + "coreId": 0, + "status": 0 + }, + { + "start": 8.27576452, + "end": 8.28579994, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.28070998, + "coreId": 0, + "status": 0 + }, + { + "start": 8.28575485, + "end": 8.30575504, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.28577065, + "end": 8.29574294, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.28579994, + "end": 8.29576438, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.29070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.29571534, + "coreId": 0, + "status": 0 + }, + { + "start": 8.29576438, + "end": 8.30580023, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.30070998, + "coreId": 0, + "status": 0 + }, + { + "start": 8.30575504, + "end": 8.48575504, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.30577089, + "end": 8.38579416, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 8.30580023, + "end": 8.3787237, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 113, + "start": 8.31572748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.31575166, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.32576389, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.3257875, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.33572784, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.33575202, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.34579994, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.34582347, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.35572776, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.35575194, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.36576406, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.36578772, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.37572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.37575217, + "coreId": 0, + "status": 0 + }, + { + "start": 8.3787237, + "end": 8.38574665, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 8.38570998, + "coreId": 0, + "status": 0 + }, + { + "start": 8.38574665, + "end": 8.44575899, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.38770294, + "end": 8.39271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.39572237, + "coreId": 0, + "status": 0 + }, + { + "start": 8.39770297, + "end": 8.40575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.40570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.40573406, + "coreId": 0, + "status": 0 + }, + { + "start": 8.40770294, + "end": 8.41271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.41572231, + "coreId": 0, + "status": 0 + }, + { + "start": 8.41770295, + "end": 8.42575931, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.42570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.4257345, + "coreId": 0, + "status": 0 + }, + { + "start": 8.42870295, + "end": 8.4337109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.43571004, + "coreId": 0, + "status": 0 + }, + { + "start": 8.44575899, + "end": 8.47576438, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.44581871, + "end": 8.45575909, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 8.44870291, + "end": 8.4537109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.4557225, + "coreId": 0, + "status": 0 + }, + { + "start": 8.45770296, + "end": 8.46575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.46570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.46573406, + "coreId": 0, + "status": 0 + }, + { + "start": 8.46770294, + "end": 8.4727109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.47576438, + "end": 8.48580014, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.48071002, + "coreId": 0, + "status": 0 + }, + { + "start": 8.48575504, + "end": 8.58575484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.48577089, + "end": 8.49574296, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.48580014, + "end": 8.49576441, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.49071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.49571536, + "coreId": 0, + "status": 0 + }, + { + "start": 8.49576441, + "end": 8.58579993, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 8.50576362, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.50578723, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.51572761, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.51575179, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.52576391, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.52578752, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.53572775, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.53575193, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.54579982, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.54582339, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.55572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.55575192, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.56576363, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.56578725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.57572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.57575176, + "coreId": 0, + "status": 0 + }, + { + "start": 8.58575484, + "end": 8.60575505, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.58577064, + "end": 8.59574297, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.58579993, + "end": 8.59576441, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.59070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.59571537, + "coreId": 0, + "status": 0 + }, + { + "start": 8.59576441, + "end": 8.60580015, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.60070998, + "coreId": 0, + "status": 0 + }, + { + "start": 8.60575505, + "end": 8.62575511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.6057709, + "end": 8.61574298, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.60580015, + "end": 8.61576443, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.61071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.61571538, + "coreId": 0, + "status": 0 + }, + { + "start": 8.61576443, + "end": 8.67872356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 8.62071, + "coreId": 0, + "status": 0 + }, + { + "start": 8.62575511, + "end": 8.78575502, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.62577091, + "end": 8.68578279, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 8.6257875, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.63572787, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.63575205, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.64579978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.6458233, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.65572777, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.65575195, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.66576411, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.66578777, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.67572777, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.6757522, + "coreId": 0, + "status": 0 + }, + { + "start": 8.67872356, + "end": 8.68574668, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 8.68572227, + "coreId": 0, + "status": 0 + }, + { + "start": 8.68574668, + "end": 8.74575908, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.68578279, + "end": 8.69575884, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 8.68870294, + "end": 8.69371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.69572235, + "coreId": 0, + "status": 0 + }, + { + "start": 8.69770294, + "end": 8.70575888, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.70570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.70573407, + "coreId": 0, + "status": 0 + }, + { + "start": 8.70770295, + "end": 8.71271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.71572225, + "coreId": 0, + "status": 0 + }, + { + "start": 8.71770295, + "end": 8.72575931, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.72570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.7257345, + "coreId": 0, + "status": 0 + }, + { + "start": 8.72770292, + "end": 8.73271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.7357225, + "coreId": 0, + "status": 0 + }, + { + "start": 8.74575908, + "end": 8.76574667, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.74581877, + "end": 8.76578278, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.74870291, + "end": 8.7537109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.75571008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 8.76572226, + "coreId": 0, + "status": 0 + }, + { + "start": 8.76574667, + "end": 8.7757646, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.76770291, + "end": 8.77271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 8.7757646, + "end": 8.78580012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.78071, + "coreId": 0, + "status": 0 + }, + { + "start": 8.78575502, + "end": 8.80575489, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.78577087, + "end": 8.79574293, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.78580012, + "end": 8.79576438, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.79070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.79571533, + "coreId": 0, + "status": 0 + }, + { + "start": 8.79576438, + "end": 8.80579989, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.80070998, + "coreId": 0, + "status": 0 + }, + { + "start": 8.80575489, + "end": 8.88575484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.80579989, + "end": 8.88579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 8.81572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.81575176, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.82576391, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.82578752, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.83572778, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.83575196, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.84579974, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.8458234, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.85572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.85575192, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.86576368, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.86578729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.87572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.87575176, + "coreId": 0, + "status": 0 + }, + { + "start": 8.88575484, + "end": 8.90575508, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.88577064, + "end": 8.89574293, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.88579984, + "end": 8.89576437, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.89071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.89571533, + "coreId": 0, + "status": 0 + }, + { + "start": 8.89576437, + "end": 8.90580018, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.90071001, + "coreId": 0, + "status": 0 + }, + { + "start": 8.90575508, + "end": 8.9257551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.90577093, + "end": 8.91574292, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 8.90580018, + "end": 8.91576437, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.91071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.91571532, + "coreId": 0, + "status": 0 + }, + { + "start": 8.91576437, + "end": 8.97872369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 8.92070999, + "coreId": 0, + "status": 0 + }, + { + "start": 8.9257551, + "end": 9.08575502, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 8.9257709, + "end": 8.98578279, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 8.92578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.93572785, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.93575203, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.94579994, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.94582347, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.95572776, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.95575194, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.96576412, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.96578778, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 8.97572777, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 8.9757522, + "coreId": 0, + "status": 0 + }, + { + "start": 8.97872369, + "end": 8.98574667, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 8.98572226, + "coreId": 0, + "status": 0 + }, + { + "start": 8.98574667, + "end": 9.04575901, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 8.98578279, + "end": 8.99575886, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 8.98870293, + "end": 8.9937109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 8.99572237, + "coreId": 0, + "status": 0 + }, + { + "start": 8.99770297, + "end": 9.00575893, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.00571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.00573412, + "coreId": 0, + "status": 0 + }, + { + "start": 9.00770292, + "end": 9.01271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.01572226, + "coreId": 0, + "status": 0 + }, + { + "start": 9.01770295, + "end": 9.02575935, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.02571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.02573454, + "coreId": 0, + "status": 0 + }, + { + "start": 9.02770297, + "end": 9.03271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.0357225, + "coreId": 0, + "status": 0 + }, + { + "start": 9.04575901, + "end": 9.06574666, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 9.04581873, + "end": 9.06578277, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.04870294, + "end": 9.0537109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.05571008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.06572225, + "coreId": 0, + "status": 0 + }, + { + "start": 9.06574666, + "end": 9.07576439, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 9.06770294, + "end": 9.07271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 9.07576439, + "end": 9.08580012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.08071003, + "coreId": 0, + "status": 0 + }, + { + "start": 9.08575502, + "end": 9.10575485, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.08577087, + "end": 9.09574295, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.08580012, + "end": 9.0957644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.09071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.09571535, + "coreId": 0, + "status": 0 + }, + { + "start": 9.0957644, + "end": 9.10579985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.10070998, + "coreId": 0, + "status": 0 + }, + { + "start": 9.10575485, + "end": 9.18575487, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.10579985, + "end": 9.18579987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 9.11572762, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.1157518, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.1257639, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.12578751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.13572778, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.13575196, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.14579984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.14582341, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.15572779, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.15575197, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.16576362, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.16578724, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.17572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.17575176, + "coreId": 0, + "status": 0 + }, + { + "start": 9.18575487, + "end": 9.20575506, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.18577067, + "end": 9.19574297, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.18579987, + "end": 9.19576441, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.19071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.19571537, + "coreId": 0, + "status": 0 + }, + { + "start": 9.19576441, + "end": 9.20580025, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.20070998, + "coreId": 0, + "status": 0 + }, + { + "start": 9.20575506, + "end": 9.2257551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.20577091, + "end": 9.215743, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.20580025, + "end": 9.21576445, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.21071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.21571537, + "coreId": 0, + "status": 0 + }, + { + "start": 9.21576445, + "end": 9.27872359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 9.22071001, + "coreId": 0, + "status": 0 + }, + { + "start": 9.2257551, + "end": 9.38575507, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.2257709, + "end": 9.28578283, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 9.22578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.23572784, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.23575202, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.24579979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.24582331, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.25572776, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.25575194, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.26576407, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.26578773, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.27572776, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.27575219, + "coreId": 0, + "status": 0 + }, + { + "start": 9.27872359, + "end": 9.28574672, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 9.28572231, + "coreId": 0, + "status": 0 + }, + { + "start": 9.28574672, + "end": 9.34575908, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 9.28578283, + "end": 9.29575884, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 9.28870293, + "end": 9.29371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.29572235, + "coreId": 0, + "status": 0 + }, + { + "start": 9.29770295, + "end": 9.30575889, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.30571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.30573408, + "coreId": 0, + "status": 0 + }, + { + "start": 9.30770295, + "end": 9.31271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.31572225, + "coreId": 0, + "status": 0 + }, + { + "start": 9.31770297, + "end": 9.32575931, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.32570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.3257345, + "coreId": 0, + "status": 0 + }, + { + "start": 9.32770294, + "end": 9.33271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.33572254, + "coreId": 0, + "status": 0 + }, + { + "start": 9.34575908, + "end": 9.36574666, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 9.34581877, + "end": 9.36578277, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.34870294, + "end": 9.35371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.35571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.36572225, + "coreId": 0, + "status": 0 + }, + { + "start": 9.36574666, + "end": 9.37576438, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 9.36770291, + "end": 9.37271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 9.37576438, + "end": 9.38580026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.38071001, + "coreId": 0, + "status": 0 + }, + { + "start": 9.38575507, + "end": 9.40575484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.38577092, + "end": 9.39574294, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.38580026, + "end": 9.39576439, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.39070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.39571534, + "coreId": 0, + "status": 0 + }, + { + "start": 9.39576439, + "end": 9.40579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.40070998, + "coreId": 0, + "status": 0 + }, + { + "start": 9.40575484, + "end": 9.48575486, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.40579984, + "end": 9.48579986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 9.41572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.41575176, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.42576388, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.42578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.43572775, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.43575193, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.44579975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.44582332, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.45572778, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.45575196, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.46576362, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.46578723, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.47572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.47575176, + "coreId": 0, + "status": 0 + }, + { + "start": 9.48575486, + "end": 9.50575502, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.48577066, + "end": 9.49574293, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.48579986, + "end": 9.49576437, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.49071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.49571533, + "coreId": 0, + "status": 0 + }, + { + "start": 9.49576437, + "end": 9.50580012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.50070999, + "coreId": 0, + "status": 0 + }, + { + "start": 9.50575502, + "end": 9.5257551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.50577087, + "end": 9.51574295, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.50580012, + "end": 9.5157644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.51070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.51571535, + "coreId": 0, + "status": 0 + }, + { + "start": 9.5157644, + "end": 9.57872369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 9.52071003, + "coreId": 0, + "status": 0 + }, + { + "start": 9.5257551, + "end": 9.68575506, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.5257709, + "end": 9.5857828, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 9.52578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.53572784, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.53575202, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.54579996, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.54582358, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.55572776, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.55575194, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.56576408, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.56578774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.57572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.57575217, + "coreId": 0, + "status": 0 + }, + { + "start": 9.57872369, + "end": 9.58574668, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 9.58572227, + "coreId": 0, + "status": 0 + }, + { + "start": 9.58574668, + "end": 9.64575899, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 9.5857828, + "end": 9.59575885, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 9.58870293, + "end": 9.59371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.59572236, + "coreId": 0, + "status": 0 + }, + { + "start": 9.59770291, + "end": 9.60575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.60570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.60573406, + "coreId": 0, + "status": 0 + }, + { + "start": 9.60770291, + "end": 9.61271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.61572225, + "coreId": 0, + "status": 0 + }, + { + "start": 9.61770295, + "end": 9.62575932, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.62570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.62573451, + "coreId": 0, + "status": 0 + }, + { + "start": 9.62770291, + "end": 9.63271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.6357225, + "coreId": 0, + "status": 0 + }, + { + "start": 9.64575899, + "end": 9.6657467, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 9.64581862, + "end": 9.66578281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.64870291, + "end": 9.6537109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.65571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.66572229, + "coreId": 0, + "status": 0 + }, + { + "start": 9.6657467, + "end": 9.67576441, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 9.66770294, + "end": 9.67271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 9.67576441, + "end": 9.68580016, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.68071002, + "coreId": 0, + "status": 0 + }, + { + "start": 9.68575506, + "end": 9.70575484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.68577091, + "end": 9.69574292, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.68580016, + "end": 9.69576437, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.69070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.69571532, + "coreId": 0, + "status": 0 + }, + { + "start": 9.69576437, + "end": 9.70579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.70070998, + "coreId": 0, + "status": 0 + }, + { + "start": 9.70575484, + "end": 9.78575488, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.70579984, + "end": 9.78579988, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 9.71572761, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.71575179, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.72576388, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.72578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.73572781, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.73575199, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.74579983, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.7458234, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.75572776, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.75575194, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.76576361, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.76578723, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.77572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.77575176, + "coreId": 0, + "status": 0 + }, + { + "start": 9.78575488, + "end": 9.80575502, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.78577068, + "end": 9.79574295, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.78579988, + "end": 9.79576439, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.79071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.79571535, + "coreId": 0, + "status": 0 + }, + { + "start": 9.79576439, + "end": 9.80580012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.80071002, + "coreId": 0, + "status": 0 + }, + { + "start": 9.80575502, + "end": 9.82575511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.80577087, + "end": 9.81574296, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.80580012, + "end": 9.81576441, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.81071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.81571536, + "coreId": 0, + "status": 0 + }, + { + "start": 9.81576441, + "end": 9.87872355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 9.82070999, + "coreId": 0, + "status": 0 + }, + { + "start": 9.82575511, + "end": 9.98575506, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.82577091, + "end": 9.88578279, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 9.8257875, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.83572784, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.83575202, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.84579978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.8458233, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.85572777, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.85575195, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.86576412, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.86578778, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.87572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 9.87575217, + "coreId": 0, + "status": 0 + }, + { + "start": 9.87872355, + "end": 9.88574668, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 9.88572227, + "coreId": 0, + "status": 0 + }, + { + "start": 9.88574668, + "end": 9.94575914, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 9.88578279, + "end": 9.89575883, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 9.88870296, + "end": 9.89371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.89572234, + "coreId": 0, + "status": 0 + }, + { + "start": 9.89770296, + "end": 9.90575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.90570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.90573406, + "coreId": 0, + "status": 0 + }, + { + "start": 9.90770292, + "end": 9.91271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.91572227, + "coreId": 0, + "status": 0 + }, + { + "start": 9.91770291, + "end": 9.92575932, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.92570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.92573451, + "coreId": 0, + "status": 0 + }, + { + "start": 9.92770293, + "end": 9.9327109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.9357225, + "coreId": 0, + "status": 0 + }, + { + "start": 9.94575914, + "end": 9.96574669, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 9.94581892, + "end": 9.9657828, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.94870296, + "end": 9.95371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.95571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 9.96572228, + "coreId": 0, + "status": 0 + }, + { + "start": 9.96574669, + "end": 9.97576437, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 9.96770296, + "end": 9.97271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 9.97576437, + "end": 9.98580016, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.98070998, + "coreId": 0, + "status": 0 + }, + { + "start": 9.98575506, + "end": 10.00575484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 9.98577091, + "end": 9.99574295, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 9.98580016, + "end": 9.9957644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 9.99070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 9.99571535, + "coreId": 0, + "status": 0 + }, + { + "start": 9.9957644, + "end": 10.00579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.00070998, + "coreId": 0, + "status": 0 + }, + { + "start": 10.00575484, + "end": 10.02575511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.00577064, + "end": 10.01574307, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.00579984, + "end": 10.01576456, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.01071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.01571547, + "coreId": 0, + "status": 0 + }, + { + "start": 10.01576456, + "end": 10.02580011, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.02071004, + "coreId": 0, + "status": 0 + }, + { + "start": 10.02575511, + "end": 10.08575489, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.02577091, + "end": 10.07574304, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.02580011, + "end": 10.06579995, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.03070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.03571536, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.03575196, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.04579976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.04582333, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.05572776, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.05575194, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.06576364, + "coreId": 0, + "status": 0 + }, + { + "start": 10.06579995, + "end": 10.07576453, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.07071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.07571544, + "coreId": 0, + "status": 0 + }, + { + "start": 10.07576453, + "end": 10.08579989, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.08070998, + "coreId": 0, + "status": 0 + }, + { + "start": 10.08577069, + "end": 10.09574299, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.08579989, + "end": 10.09576443, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.09071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.09571539, + "coreId": 0, + "status": 0 + }, + { + "start": 10.09574299, + "end": 10.13574332, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.09576443, + "end": 10.13576481, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.10071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.10576386, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.10578752, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.11572748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.11575166, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.12576388, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.12578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.13071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.13571546, + "coreId": 0, + "status": 0 + }, + { + "start": 10.13576481, + "end": 10.14583615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.14071001, + "coreId": 0, + "status": 0 + }, + { + "start": 10.14578328, + "end": 10.24579506, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.14580694, + "end": 10.15574318, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.14583615, + "end": 10.15576462, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.15071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.15571548, + "coreId": 0, + "status": 0 + }, + { + "start": 10.15574318, + "end": 10.18578283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.15576462, + "end": 10.17872367, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 10.16071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.16576408, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.16578774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.17572776, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.17575219, + "coreId": 0, + "status": 0 + }, + { + "start": 10.17872367, + "end": 10.18574671, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 10.1857223, + "coreId": 0, + "status": 0 + }, + { + "start": 10.18574671, + "end": 10.24575899, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 10.18578283, + "end": 10.19575889, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 10.18870292, + "end": 10.19371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.19571008, + "coreId": 0, + "status": 0 + }, + { + "start": 10.19770292, + "end": 10.20575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.20570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.20573406, + "coreId": 0, + "status": 0 + }, + { + "start": 10.20770291, + "end": 10.21271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.21572229, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.22570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.2257345, + "coreId": 0, + "status": 0 + }, + { + "start": 10.22578326, + "end": 10.24583001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 10.22870291, + "end": 10.23371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.23571006, + "coreId": 0, + "status": 0 + }, + { + "start": 10.24575899, + "end": 10.26574666, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 10.24579506, + "end": 10.3257551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.24770295, + "end": 10.25271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.25572249, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.26570998, + "coreId": 0, + "status": 0 + }, + { + "start": 10.26574666, + "end": 10.28580015, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 10.26870294, + "end": 10.27371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.27575169, + "coreId": 0, + "status": 0 + }, + { + "start": 10.2857709, + "end": 10.29574297, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.28580015, + "end": 10.29576442, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.29070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.29571537, + "coreId": 0, + "status": 0 + }, + { + "start": 10.29576442, + "end": 10.31576453, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.30576364, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.30578725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.3157276, + "coreId": 0, + "status": 0 + }, + { + "start": 10.31576453, + "end": 10.3258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.32070998, + "coreId": 0, + "status": 0 + }, + { + "start": 10.3257551, + "end": 10.38575484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.3257709, + "end": 10.35574321, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.3258001, + "end": 10.34583617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.33070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.33572775, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.33575193, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.34579985, + "coreId": 0, + "status": 0 + }, + { + "start": 10.34583617, + "end": 10.35576466, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.35070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.35571551, + "coreId": 0, + "status": 0 + }, + { + "start": 10.35574321, + "end": 10.37574304, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.35576466, + "end": 10.37576453, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.36576361, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.36578723, + "coreId": 0, + "status": 0 + }, + { + "start": 10.37576453, + "end": 10.38579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.38070998, + "coreId": 0, + "status": 0 + }, + { + "start": 10.38577064, + "end": 10.41574292, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.38579984, + "end": 10.40580016, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.39070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.39572754, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.39575172, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.40576384, + "coreId": 0, + "status": 0 + }, + { + "start": 10.40580016, + "end": 10.41576437, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.41070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.41571532, + "coreId": 0, + "status": 0 + }, + { + "start": 10.41576437, + "end": 10.43576477, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.42576389, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.4257875, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.43572784, + "coreId": 0, + "status": 0 + }, + { + "start": 10.43576477, + "end": 10.4458359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.44070998, + "coreId": 0, + "status": 0 + }, + { + "start": 10.44578313, + "end": 10.60575487, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.44580669, + "end": 10.47574343, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.4458359, + "end": 10.46580038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.45070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.45572779, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.45575197, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.46576406, + "coreId": 0, + "status": 0 + }, + { + "start": 10.46580038, + "end": 10.47576488, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.47070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.47571532, + "coreId": 0, + "status": 0 + }, + { + "start": 10.47574343, + "end": 10.48578277, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.47576488, + "end": 10.47872355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 10.47872355, + "end": 10.48574666, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 10.48572225, + "coreId": 0, + "status": 0 + }, + { + "start": 10.48574666, + "end": 10.5257471, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 10.48578277, + "end": 10.49575888, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 10.48870294, + "end": 10.49371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.49571007, + "coreId": 0, + "status": 0 + }, + { + "start": 10.49770296, + "end": 10.50575888, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.50570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.50573407, + "coreId": 0, + "status": 0 + }, + { + "start": 10.50770292, + "end": 10.51371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.51571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.5257226, + "coreId": 0, + "status": 0 + }, + { + "start": 10.5257471, + "end": 10.57576438, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 10.52578326, + "end": 10.535759, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 10.52770293, + "end": 10.53271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.53572255, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.5457465, + "coreId": 0, + "status": 0 + }, + { + "start": 10.54581879, + "end": 10.56579425, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 10.54870295, + "end": 10.55371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.55571002, + "coreId": 0, + "status": 0 + }, + { + "start": 10.55870291, + "end": 10.56575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.56572225, + "coreId": 0, + "status": 0 + }, + { + "start": 10.56770295, + "end": 10.57271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 10.57576438, + "end": 10.59576437, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.58070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.5857638, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.58578746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.59572748, + "coreId": 0, + "status": 0 + }, + { + "start": 10.59576437, + "end": 10.60579987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.60070999, + "coreId": 0, + "status": 0 + }, + { + "start": 10.60575487, + "end": 10.66575485, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.60577067, + "end": 10.63574325, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.60579987, + "end": 10.62580011, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.61070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.61572764, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.61575182, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.62576389, + "coreId": 0, + "status": 0 + }, + { + "start": 10.62580011, + "end": 10.63576469, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.63071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.63571539, + "coreId": 0, + "status": 0 + }, + { + "start": 10.63576469, + "end": 10.65576463, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.64579977, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.64582334, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.65572774, + "coreId": 0, + "status": 0 + }, + { + "start": 10.65576463, + "end": 10.66579994, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.66070998, + "coreId": 0, + "status": 0 + }, + { + "start": 10.66575485, + "end": 10.7257551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.66577065, + "end": 10.69574299, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.66579994, + "end": 10.68579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.67070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.67572759, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.67575177, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.68576362, + "coreId": 0, + "status": 0 + }, + { + "start": 10.68579984, + "end": 10.69576443, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.69071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.69571539, + "coreId": 0, + "status": 0 + }, + { + "start": 10.69576443, + "end": 10.71576442, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.70576383, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.70578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.71572753, + "coreId": 0, + "status": 0 + }, + { + "start": 10.71576442, + "end": 10.7258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.72070999, + "coreId": 0, + "status": 0 + }, + { + "start": 10.7257551, + "end": 10.84579511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.7257709, + "end": 10.75574319, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.7258001, + "end": 10.74583616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.73070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.73572789, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.73575207, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.74579992, + "coreId": 0, + "status": 0 + }, + { + "start": 10.74583616, + "end": 10.75576463, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.75070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.75571549, + "coreId": 0, + "status": 0 + }, + { + "start": 10.75574319, + "end": 10.77574346, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.75576463, + "end": 10.77576491, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.76576408, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.76578774, + "coreId": 0, + "status": 0 + }, + { + "start": 10.77574346, + "end": 10.78578282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.77576491, + "end": 10.8257471, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 10.77871004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.78571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.7857341, + "coreId": 0, + "status": 0 + }, + { + "start": 10.78578282, + "end": 10.8057942, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 10.78870294, + "end": 10.79371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.79571002, + "coreId": 0, + "status": 0 + }, + { + "start": 10.79870293, + "end": 10.80575891, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.80572229, + "coreId": 0, + "status": 0 + }, + { + "start": 10.80770296, + "end": 10.81271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.81572225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.82570998, + "coreId": 0, + "status": 0 + }, + { + "start": 10.8257471, + "end": 10.86574666, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 10.82578326, + "end": 10.84583006, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 10.82870297, + "end": 10.83371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.83571002, + "coreId": 0, + "status": 0 + }, + { + "start": 10.83670293, + "end": 10.84577125, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.84574644, + "coreId": 0, + "status": 0 + }, + { + "start": 10.84579511, + "end": 10.88575505, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.84770297, + "end": 10.85271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.8557225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.86572225, + "coreId": 0, + "status": 0 + }, + { + "start": 10.86574666, + "end": 10.88580015, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 10.86870291, + "end": 10.87371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.8757517, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 10.88071002, + "coreId": 0, + "status": 0 + }, + { + "start": 10.8857709, + "end": 10.91574302, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.88580015, + "end": 10.90579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.89071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.89572754, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.89575172, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.90576362, + "coreId": 0, + "status": 0 + }, + { + "start": 10.90579984, + "end": 10.91576451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.91070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.91571542, + "coreId": 0, + "status": 0 + }, + { + "start": 10.91576451, + "end": 10.93576464, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.92576388, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.92578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.93572776, + "coreId": 0, + "status": 0 + }, + { + "start": 10.93576464, + "end": 10.94583604, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.94071001, + "coreId": 0, + "status": 0 + }, + { + "start": 10.94578318, + "end": 11.00575502, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 10.94580679, + "end": 10.97574302, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 10.94583604, + "end": 10.96579987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.95070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.95572777, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.95575195, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.96576364, + "coreId": 0, + "status": 0 + }, + { + "start": 10.96579987, + "end": 10.97576451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 10.97070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.97571542, + "coreId": 0, + "status": 0 + }, + { + "start": 10.97576451, + "end": 10.99576443, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 10.98576367, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 10.98578728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 10.99572755, + "coreId": 0, + "status": 0 + }, + { + "start": 10.99576443, + "end": 11.00580012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.00070998, + "coreId": 0, + "status": 0 + }, + { + "start": 11.00575502, + "end": 11.06575528, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.00580012, + "end": 11.0258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.01070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.01572748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.01575166, + "coreId": 0, + "status": 0 + }, + { + "start": 11.0257709, + "end": 11.03574328, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.0258001, + "end": 11.03576477, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.03071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.03571542, + "coreId": 0, + "status": 0 + }, + { + "start": 11.03576477, + "end": 11.05576462, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.04579981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.04582333, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.05572774, + "coreId": 0, + "status": 0 + }, + { + "start": 11.05576462, + "end": 11.06580038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.06071, + "coreId": 0, + "status": 0 + }, + { + "start": 11.06575528, + "end": 11.2257551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.06577113, + "end": 11.08579417, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 11.06580038, + "end": 11.07872357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 11.07071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.07572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.07575217, + "coreId": 0, + "status": 0 + }, + { + "start": 11.07872357, + "end": 11.10574667, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 11.08572226, + "coreId": 0, + "status": 0 + }, + { + "start": 11.08770291, + "end": 11.09271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.09572236, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.10570998, + "coreId": 0, + "status": 0 + }, + { + "start": 11.10574667, + "end": 11.14575911, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 11.10578278, + "end": 11.12579472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 11.10870291, + "end": 11.11371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.11571005, + "coreId": 0, + "status": 0 + }, + { + "start": 11.11770295, + "end": 11.12575933, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.12571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.12573452, + "coreId": 0, + "status": 0 + }, + { + "start": 11.12770297, + "end": 11.13271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 11.14575911, + "end": 11.19576443, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 11.14581889, + "end": 11.15575912, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 11.14870293, + "end": 11.1537109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.15571006, + "coreId": 0, + "status": 0 + }, + { + "start": 11.15770291, + "end": 11.16575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.16570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.16573406, + "coreId": 0, + "status": 0 + }, + { + "start": 11.16770294, + "end": 11.17271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.17575167, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.18576381, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.18578747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.19071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.19571538, + "coreId": 0, + "status": 0 + }, + { + "start": 11.19576443, + "end": 11.21576451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.20070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.20576362, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.20578723, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.21572758, + "coreId": 0, + "status": 0 + }, + { + "start": 11.21576451, + "end": 11.2258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.22070998, + "coreId": 0, + "status": 0 + }, + { + "start": 11.2257551, + "end": 11.28575484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.2257709, + "end": 11.25574318, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.2258001, + "end": 11.2458361, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.23071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.23572775, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.23575193, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.24579977, + "coreId": 0, + "status": 0 + }, + { + "start": 11.2458361, + "end": 11.25576463, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.25070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.25571548, + "coreId": 0, + "status": 0 + }, + { + "start": 11.25574318, + "end": 11.27574302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.25576463, + "end": 11.27576451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.26576365, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.26578726, + "coreId": 0, + "status": 0 + }, + { + "start": 11.27576451, + "end": 11.28579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.28071, + "coreId": 0, + "status": 0 + }, + { + "start": 11.28577064, + "end": 11.31574294, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.28579984, + "end": 11.30580015, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.29071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.29572749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.29575167, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.30576383, + "coreId": 0, + "status": 0 + }, + { + "start": 11.30580015, + "end": 11.31576439, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.31071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.31571534, + "coreId": 0, + "status": 0 + }, + { + "start": 11.31576439, + "end": 11.33576482, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.32576388, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.32578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.33572789, + "coreId": 0, + "status": 0 + }, + { + "start": 11.33576482, + "end": 11.3458362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.34070998, + "coreId": 0, + "status": 0 + }, + { + "start": 11.34578333, + "end": 11.50575486, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.34580699, + "end": 11.37574343, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.3458362, + "end": 11.36580043, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.35070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.35572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.35575192, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.36576411, + "coreId": 0, + "status": 0 + }, + { + "start": 11.36580043, + "end": 11.37576488, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.37071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.37571532, + "coreId": 0, + "status": 0 + }, + { + "start": 11.37574343, + "end": 11.38578277, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.37576488, + "end": 11.37872366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 11.37872366, + "end": 11.38574665, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 11.38572224, + "coreId": 0, + "status": 0 + }, + { + "start": 11.38574665, + "end": 11.4257471, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 11.38578277, + "end": 11.39575886, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 11.38870295, + "end": 11.39371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.39571005, + "coreId": 0, + "status": 0 + }, + { + "start": 11.39770291, + "end": 11.40575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.40570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.40573406, + "coreId": 0, + "status": 0 + }, + { + "start": 11.40770291, + "end": 11.41371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.41571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.4257226, + "coreId": 0, + "status": 0 + }, + { + "start": 11.4257471, + "end": 11.47576437, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 11.42578326, + "end": 11.43575897, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 11.42770293, + "end": 11.43271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.43572252, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.44574639, + "coreId": 0, + "status": 0 + }, + { + "start": 11.44581871, + "end": 11.46579419, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 11.44870293, + "end": 11.45371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.45571007, + "coreId": 0, + "status": 0 + }, + { + "start": 11.45870294, + "end": 11.4657589, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.46572228, + "coreId": 0, + "status": 0 + }, + { + "start": 11.46770293, + "end": 11.47271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 11.47576437, + "end": 11.4957644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.48071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.4857638, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.48578746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.49572751, + "coreId": 0, + "status": 0 + }, + { + "start": 11.4957644, + "end": 11.50579986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.50070999, + "coreId": 0, + "status": 0 + }, + { + "start": 11.50575486, + "end": 11.56575488, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.50577066, + "end": 11.53574322, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.50579986, + "end": 11.5258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.51071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.51572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.51575176, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.52576388, + "coreId": 0, + "status": 0 + }, + { + "start": 11.5258001, + "end": 11.53576466, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.53070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.53571536, + "coreId": 0, + "status": 0 + }, + { + "start": 11.53576466, + "end": 11.55576463, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.54579985, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.54582351, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.55572774, + "coreId": 0, + "status": 0 + }, + { + "start": 11.55576463, + "end": 11.56579989, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.56071004, + "coreId": 0, + "status": 0 + }, + { + "start": 11.56575488, + "end": 11.6257551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.56577069, + "end": 11.59574296, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.56579989, + "end": 11.58579998, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.57070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.57572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.57575176, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.58576367, + "coreId": 0, + "status": 0 + }, + { + "start": 11.58579998, + "end": 11.5957644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.59070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.59571536, + "coreId": 0, + "status": 0 + }, + { + "start": 11.5957644, + "end": 11.61576438, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.60576384, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.6057875, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.61572749, + "coreId": 0, + "status": 0 + }, + { + "start": 11.61576438, + "end": 11.6258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.62071, + "coreId": 0, + "status": 0 + }, + { + "start": 11.6257551, + "end": 11.74579521, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.6257709, + "end": 11.65574322, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.6258001, + "end": 11.6458359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.63071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.63572784, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.63575202, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.64579976, + "coreId": 0, + "status": 0 + }, + { + "start": 11.6458359, + "end": 11.65576466, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.65070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.65571552, + "coreId": 0, + "status": 0 + }, + { + "start": 11.65574322, + "end": 11.67574343, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.65576466, + "end": 11.67576488, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.66576408, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.66578774, + "coreId": 0, + "status": 0 + }, + { + "start": 11.67574343, + "end": 11.68578278, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.67576488, + "end": 11.72574712, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 11.67871005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.68570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.68573407, + "coreId": 0, + "status": 0 + }, + { + "start": 11.68578278, + "end": 11.70579418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 11.68870291, + "end": 11.69371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.69571006, + "coreId": 0, + "status": 0 + }, + { + "start": 11.69870291, + "end": 11.70575889, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.70572227, + "coreId": 0, + "status": 0 + }, + { + "start": 11.70770292, + "end": 11.71271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.71572231, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.72571, + "coreId": 0, + "status": 0 + }, + { + "start": 11.72574712, + "end": 11.76574667, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 11.72578328, + "end": 11.74583017, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 11.72870292, + "end": 11.73371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.73571002, + "coreId": 0, + "status": 0 + }, + { + "start": 11.73670292, + "end": 11.7457713, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.74574649, + "coreId": 0, + "status": 0 + }, + { + "start": 11.74579521, + "end": 11.78575504, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.74770293, + "end": 11.75271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.75572254, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.76572226, + "coreId": 0, + "status": 0 + }, + { + "start": 11.76574667, + "end": 11.78580014, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 11.76870291, + "end": 11.77371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.77575168, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 11.78070998, + "coreId": 0, + "status": 0 + }, + { + "start": 11.78577089, + "end": 11.81574307, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.78580014, + "end": 11.80579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.79070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.79572748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.79575166, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.80576362, + "coreId": 0, + "status": 0 + }, + { + "start": 11.80579984, + "end": 11.81576456, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.81070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.81571547, + "coreId": 0, + "status": 0 + }, + { + "start": 11.81576456, + "end": 11.83576463, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.8257639, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.82578751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.83572775, + "coreId": 0, + "status": 0 + }, + { + "start": 11.83576463, + "end": 11.84583602, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.84071004, + "coreId": 0, + "status": 0 + }, + { + "start": 11.84578315, + "end": 11.90575502, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.84580676, + "end": 11.87574302, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.84583602, + "end": 11.86579995, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.85070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.85572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.85575192, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.86576364, + "coreId": 0, + "status": 0 + }, + { + "start": 11.86579995, + "end": 11.87576451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.87071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.87571542, + "coreId": 0, + "status": 0 + }, + { + "start": 11.87576451, + "end": 11.89576437, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.88576364, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.88578725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.89572749, + "coreId": 0, + "status": 0 + }, + { + "start": 11.89576437, + "end": 11.90580012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.90070998, + "coreId": 0, + "status": 0 + }, + { + "start": 11.90575502, + "end": 11.96575532, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.90580012, + "end": 11.9258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.91071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.9157275, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.91575168, + "coreId": 0, + "status": 0 + }, + { + "start": 11.9257709, + "end": 11.93574329, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 11.9258001, + "end": 11.93576478, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.93071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.93571543, + "coreId": 0, + "status": 0 + }, + { + "start": 11.93576478, + "end": 11.95576462, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 11.9457999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.94582343, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.95572774, + "coreId": 0, + "status": 0 + }, + { + "start": 11.95576462, + "end": 11.96580042, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.96070999, + "coreId": 0, + "status": 0 + }, + { + "start": 11.96575532, + "end": 12.1257551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 11.96577117, + "end": 11.98579421, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 11.96580042, + "end": 11.97872368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 11.97071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 11.97572775, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 11.97575218, + "coreId": 0, + "status": 0 + }, + { + "start": 11.97872368, + "end": 12.00574666, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 11.98572228, + "coreId": 0, + "status": 0 + }, + { + "start": 11.98770291, + "end": 11.99271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 11.99572239, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.00570998, + "coreId": 0, + "status": 0 + }, + { + "start": 12.00574666, + "end": 12.04575901, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 12.00578277, + "end": 12.02579472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.00870294, + "end": 12.01371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.01571002, + "coreId": 0, + "status": 0 + }, + { + "start": 12.01770296, + "end": 12.02575933, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.02571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.02573452, + "coreId": 0, + "status": 0 + }, + { + "start": 12.02770292, + "end": 12.03271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 12.04575901, + "end": 12.0957644, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 12.04581873, + "end": 12.05575913, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.04870293, + "end": 12.05371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.05571007, + "coreId": 0, + "status": 0 + }, + { + "start": 12.05770297, + "end": 12.06575891, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.06571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.0657341, + "coreId": 0, + "status": 0 + }, + { + "start": 12.06770291, + "end": 12.07271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.07575169, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.08576383, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.08578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.09071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.09571535, + "coreId": 0, + "status": 0 + }, + { + "start": 12.0957644, + "end": 12.11576454, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.10071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.10576366, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.10578727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.11572761, + "coreId": 0, + "status": 0 + }, + { + "start": 12.11576454, + "end": 12.1258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.12071004, + "coreId": 0, + "status": 0 + }, + { + "start": 12.1257551, + "end": 12.18575484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 12.1257709, + "end": 12.15574324, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.1258001, + "end": 12.14583617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.13071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.1357278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.13575198, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.14579985, + "coreId": 0, + "status": 0 + }, + { + "start": 12.14583617, + "end": 12.15576469, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.15071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.15571554, + "coreId": 0, + "status": 0 + }, + { + "start": 12.15574324, + "end": 12.17574302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.15576469, + "end": 12.17576451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.16576364, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.16578726, + "coreId": 0, + "status": 0 + }, + { + "start": 12.17576451, + "end": 12.18579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.18070998, + "coreId": 0, + "status": 0 + }, + { + "start": 12.18577064, + "end": 12.21574294, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.18579984, + "end": 12.20580014, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.19070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.19572754, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.19575172, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.20576382, + "coreId": 0, + "status": 0 + }, + { + "start": 12.20580014, + "end": 12.21576439, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.21071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.21571534, + "coreId": 0, + "status": 0 + }, + { + "start": 12.21576439, + "end": 12.23576477, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.22576388, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.22578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.23572784, + "coreId": 0, + "status": 0 + }, + { + "start": 12.23576477, + "end": 12.24583597, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.24070998, + "coreId": 0, + "status": 0 + }, + { + "start": 12.24578318, + "end": 12.40575484, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 12.24580674, + "end": 12.27574344, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.24583597, + "end": 12.26580048, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.25070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.25572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.25575192, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.26576407, + "coreId": 0, + "status": 0 + }, + { + "start": 12.26580048, + "end": 12.27576489, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.27071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.27571533, + "coreId": 0, + "status": 0 + }, + { + "start": 12.27574344, + "end": 12.2857828, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.27576489, + "end": 12.27872355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 12.27872355, + "end": 12.28574669, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 12.28572228, + "coreId": 0, + "status": 0 + }, + { + "start": 12.28574669, + "end": 12.32574712, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 12.2857828, + "end": 12.29575884, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.28870294, + "end": 12.2937109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.29571003, + "coreId": 0, + "status": 0 + }, + { + "start": 12.29770297, + "end": 12.30575892, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.30571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.30573411, + "coreId": 0, + "status": 0 + }, + { + "start": 12.30770291, + "end": 12.31371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.31571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.32572262, + "coreId": 0, + "status": 0 + }, + { + "start": 12.32574712, + "end": 12.37576437, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 12.32578328, + "end": 12.33575895, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.32770293, + "end": 12.33271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.3357225, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.34574648, + "coreId": 0, + "status": 0 + }, + { + "start": 12.34581886, + "end": 12.36579425, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.34870293, + "end": 12.35371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.35571005, + "coreId": 0, + "status": 0 + }, + { + "start": 12.35870291, + "end": 12.36575887, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.36572225, + "coreId": 0, + "status": 0 + }, + { + "start": 12.36770294, + "end": 12.37271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 12.37576437, + "end": 12.39576437, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.38070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.38576383, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.38578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.39572748, + "coreId": 0, + "status": 0 + }, + { + "start": 12.39576437, + "end": 12.40579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.40070998, + "coreId": 0, + "status": 0 + }, + { + "start": 12.40575484, + "end": 12.46575484, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 12.40577064, + "end": 12.43574323, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.40579984, + "end": 12.4258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.41071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.41572763, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.41575181, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.42576388, + "coreId": 0, + "status": 0 + }, + { + "start": 12.4258001, + "end": 12.43576467, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.43070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.43571537, + "coreId": 0, + "status": 0 + }, + { + "start": 12.43576467, + "end": 12.45576468, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.44579979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.44582345, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.45572779, + "coreId": 0, + "status": 0 + }, + { + "start": 12.45576468, + "end": 12.46579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.46070998, + "coreId": 0, + "status": 0 + }, + { + "start": 12.46575484, + "end": 12.5257551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 12.46577064, + "end": 12.49574298, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.46579984, + "end": 12.48579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.47071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.47572758, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.47575176, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.48576362, + "coreId": 0, + "status": 0 + }, + { + "start": 12.48579984, + "end": 12.49576442, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.49071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.49571538, + "coreId": 0, + "status": 0 + }, + { + "start": 12.49576442, + "end": 12.51576442, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.50576381, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.50578747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.51572753, + "coreId": 0, + "status": 0 + }, + { + "start": 12.51576442, + "end": 12.5258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.52070998, + "coreId": 0, + "status": 0 + }, + { + "start": 12.5257551, + "end": 12.64579506, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 12.5257709, + "end": 12.55574318, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.5258001, + "end": 12.54583605, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.53070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.53572784, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.53575202, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.5457999, + "coreId": 0, + "status": 0 + }, + { + "start": 12.54583605, + "end": 12.55576462, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.55070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.55571548, + "coreId": 0, + "status": 0 + }, + { + "start": 12.55574318, + "end": 12.57574343, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.55576462, + "end": 12.57576488, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.5657641, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.56578776, + "coreId": 0, + "status": 0 + }, + { + "start": 12.57574343, + "end": 12.58578277, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.57576488, + "end": 12.6257471, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 12.57871008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.58570998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.58573405, + "coreId": 0, + "status": 0 + }, + { + "start": 12.58578277, + "end": 12.60579418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.58870293, + "end": 12.59371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.59571005, + "coreId": 0, + "status": 0 + }, + { + "start": 12.59870293, + "end": 12.60575889, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.60572227, + "coreId": 0, + "status": 0 + }, + { + "start": 12.60770293, + "end": 12.61271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.6157223, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.62570998, + "coreId": 0, + "status": 0 + }, + { + "start": 12.6257471, + "end": 12.66574666, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 12.62578326, + "end": 12.64583001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.62870296, + "end": 12.63371087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.63571002, + "coreId": 0, + "status": 0 + }, + { + "start": 12.63670294, + "end": 12.6457712, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.64574639, + "coreId": 0, + "status": 0 + }, + { + "start": 12.64579506, + "end": 12.68575502, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 12.64770295, + "end": 12.65271087, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.65572251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.66572225, + "coreId": 0, + "status": 0 + }, + { + "start": 12.66574666, + "end": 12.68580012, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 12.66870293, + "end": 12.67371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.67575167, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.68071004, + "coreId": 0, + "status": 0 + }, + { + "start": 12.68577087, + "end": 12.71574307, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.68580012, + "end": 12.70579988, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.69071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.6957275, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.69575168, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.70576366, + "coreId": 0, + "status": 0 + }, + { + "start": 12.70579988, + "end": 12.71576456, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.71071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.71571547, + "coreId": 0, + "status": 0 + }, + { + "start": 12.71576456, + "end": 12.73576464, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.72576388, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.72578749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.73572776, + "coreId": 0, + "status": 0 + }, + { + "start": 12.73576464, + "end": 12.74583607, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.74071001, + "coreId": 0, + "status": 0 + }, + { + "start": 12.74578321, + "end": 12.80575507, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 12.74580682, + "end": 12.77574302, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.74583607, + "end": 12.76579984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.75070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.75572776, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.75575194, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.76576361, + "coreId": 0, + "status": 0 + }, + { + "start": 12.76579984, + "end": 12.77576451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.77070998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.77571542, + "coreId": 0, + "status": 0 + }, + { + "start": 12.77576451, + "end": 12.79576441, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.78576366, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.78578727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.79572753, + "coreId": 0, + "status": 0 + }, + { + "start": 12.79576441, + "end": 12.80580017, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.80070999, + "coreId": 0, + "status": 0 + }, + { + "start": 12.80575507, + "end": 12.86575529, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 12.80580017, + "end": 12.8258001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.81070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.81572753, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.81575171, + "coreId": 0, + "status": 0 + }, + { + "start": 12.8257709, + "end": 12.83574328, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 12.8258001, + "end": 12.83576477, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.83070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.83571542, + "coreId": 0, + "status": 0 + }, + { + "start": 12.83576477, + "end": 12.85576462, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.8457998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.84582332, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.85572774, + "coreId": 0, + "status": 0 + }, + { + "start": 12.85576462, + "end": 12.86580048, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.86070998, + "coreId": 0, + "status": 0 + }, + { + "start": 12.86575529, + "end": 13.02575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 12.86577114, + "end": 12.88579675, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.86580048, + "end": 12.87872397, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 12.87070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.87572774, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.87575217, + "coreId": 0, + "status": 0 + }, + { + "start": 12.87872397, + "end": 12.9057478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 12.88572268, + "coreId": 0, + "status": 0 + }, + { + "start": 12.88770293, + "end": 12.89271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.89572273, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.90571004, + "coreId": 0, + "status": 0 + }, + { + "start": 12.9057478, + "end": 12.94576054, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 12.90578499, + "end": 12.92579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.90870291, + "end": 12.91371094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.91571006, + "coreId": 0, + "status": 0 + }, + { + "start": 12.91770291, + "end": 12.92576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.92570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.92573523, + "coreId": 0, + "status": 0 + }, + { + "start": 12.92770291, + "end": 12.93271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 12.94576054, + "end": 12.9957662, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 12.94582203, + "end": 12.95576053, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 12.94870294, + "end": 12.95371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.95571003, + "coreId": 0, + "status": 0 + }, + { + "start": 12.95770291, + "end": 12.96576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 12.96570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.96573479, + "coreId": 0, + "status": 0 + }, + { + "start": 12.96770295, + "end": 12.97271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 12.97575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.98576566, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 12.98579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 12.99071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 12.99571571, + "coreId": 0, + "status": 0 + }, + { + "start": 12.9957662, + "end": 13.01576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.00070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.00576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.00578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.01572814, + "coreId": 0, + "status": 0 + }, + { + "start": 13.01576615, + "end": 13.02580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.02071022, + "coreId": 0, + "status": 0 + }, + { + "start": 13.02575639, + "end": 13.08575614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.02577273, + "end": 13.05574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.02580283, + "end": 13.04583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.0307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.03572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.03575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.04580251, + "coreId": 0, + "status": 0 + }, + { + "start": 13.04583983, + "end": 13.05576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.05071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.05571567, + "coreId": 0, + "status": 0 + }, + { + "start": 13.05574409, + "end": 13.07574395, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.05576626, + "end": 13.07576616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.06576529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.06578962, + "coreId": 0, + "status": 0 + }, + { + "start": 13.07576616, + "end": 13.08580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.08071017, + "coreId": 0, + "status": 0 + }, + { + "start": 13.08577248, + "end": 13.115744, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.08580258, + "end": 13.105803, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.09070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.09572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.09575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.1057656, + "coreId": 0, + "status": 0 + }, + { + "start": 13.105803, + "end": 13.11576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.11071005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.11571568, + "coreId": 0, + "status": 0 + }, + { + "start": 13.11576617, + "end": 13.13576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.12576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.12579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.13572842, + "coreId": 0, + "status": 0 + }, + { + "start": 13.13576643, + "end": 13.14583993, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.14071017, + "coreId": 0, + "status": 0 + }, + { + "start": 13.14578544, + "end": 13.30575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.14580982, + "end": 13.17574453, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.14583993, + "end": 13.16580329, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.15071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.15572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.15575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.16576589, + "coreId": 0, + "status": 0 + }, + { + "start": 13.16580329, + "end": 13.1757667, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.17070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.1757157, + "coreId": 0, + "status": 0 + }, + { + "start": 13.17574453, + "end": 13.18578513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.1757667, + "end": 13.17872401, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 13.17872401, + "end": 13.18574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 13.1857228, + "coreId": 0, + "status": 0 + }, + { + "start": 13.18574793, + "end": 13.22574819, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 13.18578513, + "end": 13.19576048, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 13.18870295, + "end": 13.19371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.19571023, + "coreId": 0, + "status": 0 + }, + { + "start": 13.19770296, + "end": 13.20576034, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.20571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.20573481, + "coreId": 0, + "status": 0 + }, + { + "start": 13.20770294, + "end": 13.21371094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.21571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.22572297, + "coreId": 0, + "status": 0 + }, + { + "start": 13.22574819, + "end": 13.27576602, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 13.22578543, + "end": 13.23576045, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 13.22770291, + "end": 13.23271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.23572292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.24574748, + "coreId": 0, + "status": 0 + }, + { + "start": 13.24582187, + "end": 13.26579672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 13.24870297, + "end": 13.25371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.25571003, + "coreId": 0, + "status": 0 + }, + { + "start": 13.25870296, + "end": 13.26576035, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.26572265, + "coreId": 0, + "status": 0 + }, + { + "start": 13.26770295, + "end": 13.27271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 13.27576602, + "end": 13.29576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.2807102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.28576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.28578983, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.2957282, + "coreId": 0, + "status": 0 + }, + { + "start": 13.29576617, + "end": 13.30580273, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.30070999, + "coreId": 0, + "status": 0 + }, + { + "start": 13.30575629, + "end": 13.36575612, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.30577263, + "end": 13.33574415, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.30580273, + "end": 13.32580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.31071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.31572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.31575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.32576568, + "coreId": 0, + "status": 0 + }, + { + "start": 13.32580298, + "end": 13.33576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.33071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.33571557, + "coreId": 0, + "status": 0 + }, + { + "start": 13.33576631, + "end": 13.3557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.34580252, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.34582681, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.35572833, + "coreId": 0, + "status": 0 + }, + { + "start": 13.3557663, + "end": 13.36580266, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.36071016, + "coreId": 0, + "status": 0 + }, + { + "start": 13.36575612, + "end": 13.42575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.36577247, + "end": 13.39574386, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.36580266, + "end": 13.38580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.37071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.37572816, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.37575306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.38576528, + "coreId": 0, + "status": 0 + }, + { + "start": 13.38580258, + "end": 13.39576602, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.39071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.39571554, + "coreId": 0, + "status": 0 + }, + { + "start": 13.39576602, + "end": 13.4157662, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.40576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.40579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.41572823, + "coreId": 0, + "status": 0 + }, + { + "start": 13.4157662, + "end": 13.42580299, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.42071, + "coreId": 0, + "status": 0 + }, + { + "start": 13.42575655, + "end": 13.54579775, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.42577289, + "end": 13.45574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.42580299, + "end": 13.44583969, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.43071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.43572856, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.43575346, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.44580247, + "coreId": 0, + "status": 0 + }, + { + "start": 13.44583969, + "end": 13.4557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.45071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.45571572, + "coreId": 0, + "status": 0 + }, + { + "start": 13.45574414, + "end": 13.47574453, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.4557663, + "end": 13.4757667, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.46576574, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.46579012, + "coreId": 0, + "status": 0 + }, + { + "start": 13.47574453, + "end": 13.48578511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.4757667, + "end": 13.52574819, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 13.47871005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.48571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.48573496, + "coreId": 0, + "status": 0 + }, + { + "start": 13.48578511, + "end": 13.50579687, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 13.48870294, + "end": 13.49371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.49571023, + "coreId": 0, + "status": 0 + }, + { + "start": 13.49870297, + "end": 13.5057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.5057228, + "coreId": 0, + "status": 0 + }, + { + "start": 13.50770291, + "end": 13.5127111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.51572263, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.52570999, + "coreId": 0, + "status": 0 + }, + { + "start": 13.52574819, + "end": 13.56574778, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 13.52578543, + "end": 13.54583379, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 13.52870297, + "end": 13.53371094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.53571008, + "coreId": 0, + "status": 0 + }, + { + "start": 13.53670294, + "end": 13.54577312, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.54574759, + "coreId": 0, + "status": 0 + }, + { + "start": 13.54579775, + "end": 13.58575631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.54770291, + "end": 13.55271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.55572286, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.56572265, + "coreId": 0, + "status": 0 + }, + { + "start": 13.56574778, + "end": 13.58580285, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 13.56870293, + "end": 13.57371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.57575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.58071017, + "coreId": 0, + "status": 0 + }, + { + "start": 13.5857727, + "end": 13.6157441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.58580285, + "end": 13.60580273, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.59070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.59572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.59575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.60576543, + "coreId": 0, + "status": 0 + }, + { + "start": 13.60580273, + "end": 13.61576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.61071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.61571578, + "coreId": 0, + "status": 0 + }, + { + "start": 13.61576631, + "end": 13.63576628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.62576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.62579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.63572832, + "coreId": 0, + "status": 0 + }, + { + "start": 13.63576628, + "end": 13.64583979, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.64071021, + "coreId": 0, + "status": 0 + }, + { + "start": 13.6457853, + "end": 13.70575647, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.64580963, + "end": 13.67574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.64583979, + "end": 13.66580264, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.65071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.65572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.65575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.66576525, + "coreId": 0, + "status": 0 + }, + { + "start": 13.66580264, + "end": 13.67576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.67071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.67571561, + "coreId": 0, + "status": 0 + }, + { + "start": 13.67576614, + "end": 13.695766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.68576529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.68578962, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.69572804, + "coreId": 0, + "status": 0 + }, + { + "start": 13.695766, + "end": 13.70580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.70071001, + "coreId": 0, + "status": 0 + }, + { + "start": 13.70575647, + "end": 13.76575659, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.70580301, + "end": 13.72580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.71070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.71572823, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.71575313, + "coreId": 0, + "status": 0 + }, + { + "start": 13.72577288, + "end": 13.73574436, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.72580298, + "end": 13.73576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.73071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.73571578, + "coreId": 0, + "status": 0 + }, + { + "start": 13.73576657, + "end": 13.7557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.74580263, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.74582688, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.75572834, + "coreId": 0, + "status": 0 + }, + { + "start": 13.7557663, + "end": 13.76580313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.7607102, + "coreId": 0, + "status": 0 + }, + { + "start": 13.76575659, + "end": 13.92575656, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.76577298, + "end": 13.78579689, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 13.76580313, + "end": 13.77872403, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 13.77071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.77572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.77575361, + "coreId": 0, + "status": 0 + }, + { + "start": 13.77872403, + "end": 13.80574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 13.78572281, + "coreId": 0, + "status": 0 + }, + { + "start": 13.78770297, + "end": 13.79271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.79572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.80571017, + "coreId": 0, + "status": 0 + }, + { + "start": 13.80574793, + "end": 13.84576046, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 13.80578512, + "end": 13.82579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 13.80870297, + "end": 13.81371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.81571004, + "coreId": 0, + "status": 0 + }, + { + "start": 13.81770294, + "end": 13.82576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.82570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.82573523, + "coreId": 0, + "status": 0 + }, + { + "start": 13.82770294, + "end": 13.83271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 13.84576046, + "end": 13.89576622, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 13.84582189, + "end": 13.85576053, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 13.84870292, + "end": 13.85371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.85571003, + "coreId": 0, + "status": 0 + }, + { + "start": 13.85770295, + "end": 13.86576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.86570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.86573479, + "coreId": 0, + "status": 0 + }, + { + "start": 13.86770296, + "end": 13.87271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.87575296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.88576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.88578984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 13.89071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.89571573, + "coreId": 0, + "status": 0 + }, + { + "start": 13.89576622, + "end": 13.91576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.90070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.90576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.90578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.9157283, + "coreId": 0, + "status": 0 + }, + { + "start": 13.91576631, + "end": 13.925803, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.92070999, + "coreId": 0, + "status": 0 + }, + { + "start": 13.92575656, + "end": 13.98575617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 13.9257729, + "end": 13.95574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.925803, + "end": 13.94583987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.93071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.93572836, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.93575326, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.94580256, + "coreId": 0, + "status": 0 + }, + { + "start": 13.94583987, + "end": 13.9557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.95071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.95571571, + "coreId": 0, + "status": 0 + }, + { + "start": 13.95574413, + "end": 13.97574393, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.9557663, + "end": 13.97576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 13.96576527, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.96578961, + "coreId": 0, + "status": 0 + }, + { + "start": 13.97576614, + "end": 13.98580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.98071022, + "coreId": 0, + "status": 0 + }, + { + "start": 13.98577251, + "end": 14.01574401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 13.98580261, + "end": 14.005803, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 13.99071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 13.99572807, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 13.99575297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.0057656, + "coreId": 0, + "status": 0 + }, + { + "start": 14.005803, + "end": 14.01576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.01070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.01571569, + "coreId": 0, + "status": 0 + }, + { + "start": 14.01576618, + "end": 14.03576658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.02576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.02579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.03572857, + "coreId": 0, + "status": 0 + }, + { + "start": 14.03576658, + "end": 14.04583971, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.04071005, + "coreId": 0, + "status": 0 + }, + { + "start": 14.04578532, + "end": 14.20575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.0458096, + "end": 14.07574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.04583971, + "end": 14.06580313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.05071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.05572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.05575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.06576573, + "coreId": 0, + "status": 0 + }, + { + "start": 14.06580313, + "end": 14.07576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.07071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.07571568, + "coreId": 0, + "status": 0 + }, + { + "start": 14.07574451, + "end": 14.08578517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.07576668, + "end": 14.07872392, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 14.07872392, + "end": 14.08574798, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 14.08572285, + "coreId": 0, + "status": 0 + }, + { + "start": 14.08574798, + "end": 14.12574819, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 14.08578517, + "end": 14.09576049, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 14.08870294, + "end": 14.09371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.09571024, + "coreId": 0, + "status": 0 + }, + { + "start": 14.09770294, + "end": 14.10576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.10571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.10573499, + "coreId": 0, + "status": 0 + }, + { + "start": 14.10770291, + "end": 14.11371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.11571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.12572297, + "coreId": 0, + "status": 0 + }, + { + "start": 14.12574819, + "end": 14.17576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 14.12578543, + "end": 14.13576045, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 14.12770294, + "end": 14.13271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.13572292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.14574759, + "coreId": 0, + "status": 0 + }, + { + "start": 14.14582204, + "end": 14.16579673, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 14.14870297, + "end": 14.15371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.15571003, + "coreId": 0, + "status": 0 + }, + { + "start": 14.15870296, + "end": 14.16576036, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.16572266, + "coreId": 0, + "status": 0 + }, + { + "start": 14.16770295, + "end": 14.17271106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 14.17576601, + "end": 14.1957662, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.18071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.18576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.18578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.19572823, + "coreId": 0, + "status": 0 + }, + { + "start": 14.1957662, + "end": 14.20580273, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.20071003, + "coreId": 0, + "status": 0 + }, + { + "start": 14.20575629, + "end": 14.26575614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.20577263, + "end": 14.23574416, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.20580273, + "end": 14.225803, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.21071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.21572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.21575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.2257657, + "coreId": 0, + "status": 0 + }, + { + "start": 14.225803, + "end": 14.23576632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.23071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.23571558, + "coreId": 0, + "status": 0 + }, + { + "start": 14.23576632, + "end": 14.2557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.24580247, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.24582676, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.25572833, + "coreId": 0, + "status": 0 + }, + { + "start": 14.2557663, + "end": 14.26580267, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.26071016, + "coreId": 0, + "status": 0 + }, + { + "start": 14.26575614, + "end": 14.32575654, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.26577248, + "end": 14.29574387, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.26580267, + "end": 14.28580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.27071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.27572813, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.27575303, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.28576531, + "coreId": 0, + "status": 0 + }, + { + "start": 14.28580261, + "end": 14.29576603, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.29071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.29571555, + "coreId": 0, + "status": 0 + }, + { + "start": 14.29576603, + "end": 14.3157662, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.3057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.30578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.31572823, + "coreId": 0, + "status": 0 + }, + { + "start": 14.3157662, + "end": 14.32580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.32071005, + "coreId": 0, + "status": 0 + }, + { + "start": 14.32575654, + "end": 14.44579765, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.32577288, + "end": 14.35574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.32580298, + "end": 14.34583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.33070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.33572856, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.33575346, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.34580263, + "coreId": 0, + "status": 0 + }, + { + "start": 14.34583986, + "end": 14.35576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.35071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.35571571, + "coreId": 0, + "status": 0 + }, + { + "start": 14.35574413, + "end": 14.37574453, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.35576629, + "end": 14.3757667, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.36576574, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.36579012, + "coreId": 0, + "status": 0 + }, + { + "start": 14.37574453, + "end": 14.38578514, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.3757667, + "end": 14.42574819, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 14.37871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.38571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.38573498, + "coreId": 0, + "status": 0 + }, + { + "start": 14.38578514, + "end": 14.40579692, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 14.38870293, + "end": 14.39371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.39571025, + "coreId": 0, + "status": 0 + }, + { + "start": 14.39870293, + "end": 14.40576055, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.40572285, + "coreId": 0, + "status": 0 + }, + { + "start": 14.40770296, + "end": 14.41271109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.41572263, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.42570999, + "coreId": 0, + "status": 0 + }, + { + "start": 14.42574819, + "end": 14.46574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 14.42578543, + "end": 14.44583368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 14.42870295, + "end": 14.43371094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.43571006, + "coreId": 0, + "status": 0 + }, + { + "start": 14.43670291, + "end": 14.44577307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.44574754, + "coreId": 0, + "status": 0 + }, + { + "start": 14.44579765, + "end": 14.48575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.44770291, + "end": 14.45271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.45572286, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.46572266, + "coreId": 0, + "status": 0 + }, + { + "start": 14.46574779, + "end": 14.48580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 14.46870293, + "end": 14.47371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.47575297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.4807102, + "coreId": 0, + "status": 0 + }, + { + "start": 14.48577268, + "end": 14.5157441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.48580283, + "end": 14.50580273, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.49071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.49572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.49575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.50576543, + "coreId": 0, + "status": 0 + }, + { + "start": 14.50580273, + "end": 14.51576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.51071005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.51571578, + "coreId": 0, + "status": 0 + }, + { + "start": 14.51576631, + "end": 14.53576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.52576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.52579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.53572833, + "coreId": 0, + "status": 0 + }, + { + "start": 14.53576629, + "end": 14.5458399, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.54071021, + "coreId": 0, + "status": 0 + }, + { + "start": 14.54578538, + "end": 14.60575647, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.54580971, + "end": 14.57574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.5458399, + "end": 14.56580264, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.55071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.55572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.55575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.56576524, + "coreId": 0, + "status": 0 + }, + { + "start": 14.56580264, + "end": 14.57576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.57071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.57571561, + "coreId": 0, + "status": 0 + }, + { + "start": 14.57576614, + "end": 14.595766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.5857653, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.58578963, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.59572804, + "coreId": 0, + "status": 0 + }, + { + "start": 14.595766, + "end": 14.60580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.60071001, + "coreId": 0, + "status": 0 + }, + { + "start": 14.60575647, + "end": 14.6657566, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.60580301, + "end": 14.62580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.61070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.61572822, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.61575312, + "coreId": 0, + "status": 0 + }, + { + "start": 14.62577288, + "end": 14.63574436, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.62580298, + "end": 14.63576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.63071005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.63571578, + "coreId": 0, + "status": 0 + }, + { + "start": 14.63576657, + "end": 14.65576625, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.64580248, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.64582672, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.65572829, + "coreId": 0, + "status": 0 + }, + { + "start": 14.65576625, + "end": 14.66580314, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.66071018, + "coreId": 0, + "status": 0 + }, + { + "start": 14.6657566, + "end": 14.8257564, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.66577299, + "end": 14.68579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 14.66580314, + "end": 14.67872394, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 14.67071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.67572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.67575363, + "coreId": 0, + "status": 0 + }, + { + "start": 14.67872394, + "end": 14.70574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 14.68572279, + "coreId": 0, + "status": 0 + }, + { + "start": 14.68770291, + "end": 14.69271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.69572292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.70571017, + "coreId": 0, + "status": 0 + }, + { + "start": 14.70574793, + "end": 14.74576059, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 14.70578512, + "end": 14.72579749, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 14.70870291, + "end": 14.7137111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.7157102, + "coreId": 0, + "status": 0 + }, + { + "start": 14.71770296, + "end": 14.72576093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.72571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.7257354, + "coreId": 0, + "status": 0 + }, + { + "start": 14.72770294, + "end": 14.73271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 14.74576059, + "end": 14.79576617, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 14.74582208, + "end": 14.75576057, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 14.74870293, + "end": 14.75371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.75571007, + "coreId": 0, + "status": 0 + }, + { + "start": 14.75770291, + "end": 14.76576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.76570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.76573479, + "coreId": 0, + "status": 0 + }, + { + "start": 14.76770291, + "end": 14.77271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.77575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.78576565, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.78579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 14.79071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.79571568, + "coreId": 0, + "status": 0 + }, + { + "start": 14.79576617, + "end": 14.81576619, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.80070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.80576548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.80578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.81572818, + "coreId": 0, + "status": 0 + }, + { + "start": 14.81576619, + "end": 14.82580284, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.82071021, + "coreId": 0, + "status": 0 + }, + { + "start": 14.8257564, + "end": 14.88575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.82577274, + "end": 14.85574431, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.82580284, + "end": 14.84583994, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.83071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.83572849, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.83575339, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.84580262, + "coreId": 0, + "status": 0 + }, + { + "start": 14.84583994, + "end": 14.85576648, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.85070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.85571589, + "coreId": 0, + "status": 0 + }, + { + "start": 14.85574431, + "end": 14.87574393, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.85576648, + "end": 14.87576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.86576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.86578978, + "coreId": 0, + "status": 0 + }, + { + "start": 14.87576614, + "end": 14.8858026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.8807102, + "coreId": 0, + "status": 0 + }, + { + "start": 14.8857725, + "end": 14.91574401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.8858026, + "end": 14.90580313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.89071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.89572804, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.89575294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.90576564, + "coreId": 0, + "status": 0 + }, + { + "start": 14.90580313, + "end": 14.91576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.91071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.91571569, + "coreId": 0, + "status": 0 + }, + { + "start": 14.91576618, + "end": 14.9357664, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 14.92576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.92579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.93572839, + "coreId": 0, + "status": 0 + }, + { + "start": 14.9357664, + "end": 14.94583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.94071016, + "coreId": 0, + "status": 0 + }, + { + "start": 14.94578545, + "end": 15.10575616, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 14.94580974, + "end": 14.97574434, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.94583985, + "end": 14.9658033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.95070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.95572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.95575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 14.9657659, + "coreId": 0, + "status": 0 + }, + { + "start": 14.9658033, + "end": 14.97576651, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.97071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 14.97571551, + "coreId": 0, + "status": 0 + }, + { + "start": 14.97574434, + "end": 14.98578498, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 14.97576651, + "end": 14.97872424, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 14.97872424, + "end": 14.98574778, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 14.98572265, + "coreId": 0, + "status": 0 + }, + { + "start": 14.98574778, + "end": 15.02574837, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 14.98578498, + "end": 14.99576049, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 14.98870291, + "end": 14.99371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 14.99571024, + "coreId": 0, + "status": 0 + }, + { + "start": 14.99770296, + "end": 15.00576036, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.00571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.00573483, + "coreId": 0, + "status": 0 + }, + { + "start": 15.00770292, + "end": 15.01371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.01571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.02572315, + "coreId": 0, + "status": 0 + }, + { + "start": 15.02574837, + "end": 15.075766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 15.02578561, + "end": 15.03576059, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.02770291, + "end": 15.03271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.03572306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.04574748, + "coreId": 0, + "status": 0 + }, + { + "start": 15.04582187, + "end": 15.06579672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.04870291, + "end": 15.0537111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.05571021, + "coreId": 0, + "status": 0 + }, + { + "start": 15.05870297, + "end": 15.06576035, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.06572265, + "coreId": 0, + "status": 0 + }, + { + "start": 15.06770295, + "end": 15.07271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 15.075766, + "end": 15.09576621, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.08071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.08576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.08579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.09572824, + "coreId": 0, + "status": 0 + }, + { + "start": 15.09576621, + "end": 15.1058026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.10071016, + "coreId": 0, + "status": 0 + }, + { + "start": 15.10575616, + "end": 15.16575615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 15.1057725, + "end": 15.13574411, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.1058026, + "end": 15.12580284, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.11070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.11572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.11575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.12576553, + "coreId": 0, + "status": 0 + }, + { + "start": 15.12580284, + "end": 15.13576627, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.13071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.13571553, + "coreId": 0, + "status": 0 + }, + { + "start": 15.13576627, + "end": 15.15576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.14580273, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.14582702, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.15572848, + "coreId": 0, + "status": 0 + }, + { + "start": 15.15576645, + "end": 15.1658026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.16071016, + "coreId": 0, + "status": 0 + }, + { + "start": 15.16575615, + "end": 15.22575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 15.1657725, + "end": 15.19574387, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.1658026, + "end": 15.18580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.17071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.1757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.1757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.18576527, + "coreId": 0, + "status": 0 + }, + { + "start": 15.18580257, + "end": 15.19576603, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.19071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.19571555, + "coreId": 0, + "status": 0 + }, + { + "start": 15.19576603, + "end": 15.21576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.20576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.20579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.2157282, + "coreId": 0, + "status": 0 + }, + { + "start": 15.21576617, + "end": 15.22580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.22071018, + "coreId": 0, + "status": 0 + }, + { + "start": 15.22575637, + "end": 15.34579776, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 15.22577271, + "end": 15.2557441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.22580281, + "end": 15.24583987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.2307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.23572858, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.23575348, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.24580265, + "coreId": 0, + "status": 0 + }, + { + "start": 15.24583987, + "end": 15.25576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.25071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.25571568, + "coreId": 0, + "status": 0 + }, + { + "start": 15.2557441, + "end": 15.27574451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.25576626, + "end": 15.27576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.26576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.26579007, + "coreId": 0, + "status": 0 + }, + { + "start": 15.27574451, + "end": 15.28578514, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.27576668, + "end": 15.32574819, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 15.27871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.28571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.28573499, + "coreId": 0, + "status": 0 + }, + { + "start": 15.28578514, + "end": 15.30579689, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.28870292, + "end": 15.29371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.29571003, + "coreId": 0, + "status": 0 + }, + { + "start": 15.29870294, + "end": 15.30576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.30572282, + "coreId": 0, + "status": 0 + }, + { + "start": 15.30770295, + "end": 15.31271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.3157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.32570999, + "coreId": 0, + "status": 0 + }, + { + "start": 15.32574819, + "end": 15.36574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 15.32578543, + "end": 15.3458338, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.32870292, + "end": 15.33371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.33571025, + "coreId": 0, + "status": 0 + }, + { + "start": 15.33670291, + "end": 15.34577313, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.3457476, + "coreId": 0, + "status": 0 + }, + { + "start": 15.34579776, + "end": 15.38575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 15.34770292, + "end": 15.35271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.35572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.3657228, + "coreId": 0, + "status": 0 + }, + { + "start": 15.36574793, + "end": 15.38580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 15.36870295, + "end": 15.37371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.37575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.38071017, + "coreId": 0, + "status": 0 + }, + { + "start": 15.38577268, + "end": 15.41574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.38580283, + "end": 15.40580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.39071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.39572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.39575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.40576525, + "coreId": 0, + "status": 0 + }, + { + "start": 15.40580255, + "end": 15.41576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.41071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.41571561, + "coreId": 0, + "status": 0 + }, + { + "start": 15.41576614, + "end": 15.43576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.42576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.42579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.43572847, + "coreId": 0, + "status": 0 + }, + { + "start": 15.43576643, + "end": 15.44583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.44071019, + "coreId": 0, + "status": 0 + }, + { + "start": 15.44578528, + "end": 15.50575632, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 15.44580961, + "end": 15.47574394, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.44583977, + "end": 15.46580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.45071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.4557285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.4557534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.46576528, + "coreId": 0, + "status": 0 + }, + { + "start": 15.46580258, + "end": 15.47576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.4707102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.47571562, + "coreId": 0, + "status": 0 + }, + { + "start": 15.47576615, + "end": 15.495766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.48576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.48578978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.49572804, + "coreId": 0, + "status": 0 + }, + { + "start": 15.495766, + "end": 15.50580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.50071017, + "coreId": 0, + "status": 0 + }, + { + "start": 15.50575632, + "end": 15.56575659, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 15.50580286, + "end": 15.52580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.51071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.51572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.51575316, + "coreId": 0, + "status": 0 + }, + { + "start": 15.52577288, + "end": 15.5357442, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.52580298, + "end": 15.53576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.53071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.53571562, + "coreId": 0, + "status": 0 + }, + { + "start": 15.53576641, + "end": 15.55576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.54580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.54582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.55572846, + "coreId": 0, + "status": 0 + }, + { + "start": 15.55576642, + "end": 15.56580313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.56070999, + "coreId": 0, + "status": 0 + }, + { + "start": 15.56575659, + "end": 15.72575638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 15.56577298, + "end": 15.58579687, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.56580313, + "end": 15.57872421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 15.5707102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.5757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.57575345, + "coreId": 0, + "status": 0 + }, + { + "start": 15.57872421, + "end": 15.6057478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 15.58572279, + "coreId": 0, + "status": 0 + }, + { + "start": 15.58770291, + "end": 15.59271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.59572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.60571004, + "coreId": 0, + "status": 0 + }, + { + "start": 15.6057478, + "end": 15.64576067, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 15.60578499, + "end": 15.62579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.60870294, + "end": 15.61371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.6157102, + "coreId": 0, + "status": 0 + }, + { + "start": 15.61770293, + "end": 15.62576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.62570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.62573523, + "coreId": 0, + "status": 0 + }, + { + "start": 15.62770291, + "end": 15.63271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 15.64576067, + "end": 15.695766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 15.6458221, + "end": 15.65576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.64870297, + "end": 15.65371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.65571022, + "coreId": 0, + "status": 0 + }, + { + "start": 15.65770295, + "end": 15.66576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.66570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.66573479, + "coreId": 0, + "status": 0 + }, + { + "start": 15.66770292, + "end": 15.67271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.67575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.68576544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.68578982, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.69071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.69571551, + "coreId": 0, + "status": 0 + }, + { + "start": 15.695766, + "end": 15.71576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.70071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.70576544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.70578977, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.7157283, + "coreId": 0, + "status": 0 + }, + { + "start": 15.71576631, + "end": 15.72580282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.72071019, + "coreId": 0, + "status": 0 + }, + { + "start": 15.72575638, + "end": 15.78575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 15.72577272, + "end": 15.75574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.72580282, + "end": 15.74583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.73070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.73572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.73575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.74580254, + "coreId": 0, + "status": 0 + }, + { + "start": 15.74583985, + "end": 15.75576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.75071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.7557157, + "coreId": 0, + "status": 0 + }, + { + "start": 15.75574412, + "end": 15.77574414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.75576629, + "end": 15.77576635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.76576541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.76578975, + "coreId": 0, + "status": 0 + }, + { + "start": 15.77576635, + "end": 15.78580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.78071017, + "coreId": 0, + "status": 0 + }, + { + "start": 15.78577245, + "end": 15.81574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.78580255, + "end": 15.80580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.79071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.79572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.79575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.80576563, + "coreId": 0, + "status": 0 + }, + { + "start": 15.80580303, + "end": 15.81576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.81071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.81571552, + "coreId": 0, + "status": 0 + }, + { + "start": 15.81576601, + "end": 15.83576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 15.82576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.82579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.83572856, + "coreId": 0, + "status": 0 + }, + { + "start": 15.83576657, + "end": 15.84583969, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.84071017, + "coreId": 0, + "status": 0 + }, + { + "start": 15.8457853, + "end": 16.00575616, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 15.84580958, + "end": 15.87574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.84583969, + "end": 15.86580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.85071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.85572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.85575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.86576586, + "coreId": 0, + "status": 0 + }, + { + "start": 15.86580326, + "end": 15.87576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.87070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.87571568, + "coreId": 0, + "status": 0 + }, + { + "start": 15.87574451, + "end": 15.88578495, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 15.87576668, + "end": 15.87872411, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 15.87872411, + "end": 15.88574776, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 15.88572263, + "coreId": 0, + "status": 0 + }, + { + "start": 15.88574776, + "end": 15.92574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 15.88578495, + "end": 15.89576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.88870291, + "end": 15.89371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.89571022, + "coreId": 0, + "status": 0 + }, + { + "start": 15.89770293, + "end": 15.90576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.90571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.90573499, + "coreId": 0, + "status": 0 + }, + { + "start": 15.90770295, + "end": 15.91371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.91571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.92572314, + "coreId": 0, + "status": 0 + }, + { + "start": 15.92574836, + "end": 15.975766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 15.9257856, + "end": 15.93576062, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.92770293, + "end": 15.93271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.93572304, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 15.94574759, + "coreId": 0, + "status": 0 + }, + { + "start": 15.94582204, + "end": 15.96579671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 15.94870291, + "end": 15.9537111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.95571021, + "coreId": 0, + "status": 0 + }, + { + "start": 15.95870294, + "end": 15.96576034, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.96572264, + "coreId": 0, + "status": 0 + }, + { + "start": 15.96770295, + "end": 15.97271111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 15.975766, + "end": 15.99576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 15.98071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.98576565, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 15.98579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 15.9957282, + "coreId": 0, + "status": 0 + }, + { + "start": 15.99576617, + "end": 16.0058026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.00071016, + "coreId": 0, + "status": 0 + }, + { + "start": 16.00575616, + "end": 16.06575614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.0057725, + "end": 16.03574411, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.0058026, + "end": 16.02580282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.01071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.0157283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.0157532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.02576552, + "coreId": 0, + "status": 0 + }, + { + "start": 16.02580282, + "end": 16.03576627, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.03071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.03571553, + "coreId": 0, + "status": 0 + }, + { + "start": 16.03576627, + "end": 16.05576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.04580262, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.04582691, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.05572848, + "coreId": 0, + "status": 0 + }, + { + "start": 16.05576645, + "end": 16.06580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.06071019, + "coreId": 0, + "status": 0 + }, + { + "start": 16.06575614, + "end": 16.12575638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.06577248, + "end": 16.09574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.06580258, + "end": 16.08580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.07071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.0757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.0757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.08576525, + "coreId": 0, + "status": 0 + }, + { + "start": 16.08580255, + "end": 16.095766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.09071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.09571552, + "coreId": 0, + "status": 0 + }, + { + "start": 16.095766, + "end": 16.11576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.10576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.10579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.11572821, + "coreId": 0, + "status": 0 + }, + { + "start": 16.11576618, + "end": 16.12580282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.12071019, + "coreId": 0, + "status": 0 + }, + { + "start": 16.12575638, + "end": 16.24579762, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.12577272, + "end": 16.15574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.12580282, + "end": 16.14584001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.13071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.13572858, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.13575348, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.14580278, + "coreId": 0, + "status": 0 + }, + { + "start": 16.14584001, + "end": 16.1557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.15071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.15571572, + "coreId": 0, + "status": 0 + }, + { + "start": 16.15574414, + "end": 16.17574451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.1557663, + "end": 16.17576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.16576575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.16579013, + "coreId": 0, + "status": 0 + }, + { + "start": 16.17574451, + "end": 16.18578511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.17576668, + "end": 16.2257482, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 16.17871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.18571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.18573495, + "coreId": 0, + "status": 0 + }, + { + "start": 16.18578511, + "end": 16.20579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 16.18870292, + "end": 16.19371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.19571003, + "coreId": 0, + "status": 0 + }, + { + "start": 16.19870294, + "end": 16.20576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.20572279, + "coreId": 0, + "status": 0 + }, + { + "start": 16.20770297, + "end": 16.21271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.21572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.22571, + "coreId": 0, + "status": 0 + }, + { + "start": 16.2257482, + "end": 16.26574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 16.22578544, + "end": 16.24583365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 16.22870293, + "end": 16.23371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.2357102, + "coreId": 0, + "status": 0 + }, + { + "start": 16.23670295, + "end": 16.24577304, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.24574751, + "coreId": 0, + "status": 0 + }, + { + "start": 16.24579762, + "end": 16.28575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.24770293, + "end": 16.25271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.25572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.2657228, + "coreId": 0, + "status": 0 + }, + { + "start": 16.26574793, + "end": 16.28580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 16.26870295, + "end": 16.27371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.27575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.28071018, + "coreId": 0, + "status": 0 + }, + { + "start": 16.28577268, + "end": 16.31574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.28580283, + "end": 16.30580259, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.29071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.29572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.29575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.30576529, + "coreId": 0, + "status": 0 + }, + { + "start": 16.30580259, + "end": 16.31576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.31071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.31571564, + "coreId": 0, + "status": 0 + }, + { + "start": 16.31576617, + "end": 16.33576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.32576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.32579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.3357285, + "coreId": 0, + "status": 0 + }, + { + "start": 16.33576646, + "end": 16.34583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.34071016, + "coreId": 0, + "status": 0 + }, + { + "start": 16.34578538, + "end": 16.40575634, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.34580971, + "end": 16.37574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.34583986, + "end": 16.36580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.35071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.35572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.35575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.36576526, + "coreId": 0, + "status": 0 + }, + { + "start": 16.36580257, + "end": 16.37576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.3707102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.37571561, + "coreId": 0, + "status": 0 + }, + { + "start": 16.37576614, + "end": 16.39576602, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.38576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.38578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.39572806, + "coreId": 0, + "status": 0 + }, + { + "start": 16.39576602, + "end": 16.40580288, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.40071016, + "coreId": 0, + "status": 0 + }, + { + "start": 16.40575634, + "end": 16.46575659, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.40580288, + "end": 16.42580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.41071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.41572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.41575311, + "coreId": 0, + "status": 0 + }, + { + "start": 16.42577288, + "end": 16.43574421, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.42580298, + "end": 16.43576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.43071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.43571563, + "coreId": 0, + "status": 0 + }, + { + "start": 16.43576642, + "end": 16.45576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.44580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.445827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.45572846, + "coreId": 0, + "status": 0 + }, + { + "start": 16.45576642, + "end": 16.46580313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.46070999, + "coreId": 0, + "status": 0 + }, + { + "start": 16.46575659, + "end": 16.62575638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.46577298, + "end": 16.48579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 16.46580313, + "end": 16.47872413, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 16.47071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.4757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.47575345, + "coreId": 0, + "status": 0 + }, + { + "start": 16.47872413, + "end": 16.50574778, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 16.48572279, + "coreId": 0, + "status": 0 + }, + { + "start": 16.48770291, + "end": 16.49271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.49572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.50571002, + "coreId": 0, + "status": 0 + }, + { + "start": 16.50574778, + "end": 16.54576075, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 16.50578497, + "end": 16.52579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 16.50870296, + "end": 16.51371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.51571024, + "coreId": 0, + "status": 0 + }, + { + "start": 16.51770291, + "end": 16.52576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.52570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.52573523, + "coreId": 0, + "status": 0 + }, + { + "start": 16.52770292, + "end": 16.53271108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 16.54576075, + "end": 16.595766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 16.54582224, + "end": 16.55576071, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 16.54870293, + "end": 16.55371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.55571021, + "coreId": 0, + "status": 0 + }, + { + "start": 16.55770293, + "end": 16.56576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.56570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.56573479, + "coreId": 0, + "status": 0 + }, + { + "start": 16.56770292, + "end": 16.57271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.57575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.58576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.58578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.59071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.59571551, + "coreId": 0, + "status": 0 + }, + { + "start": 16.595766, + "end": 16.61576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.60071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.60576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.60578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.6157283, + "coreId": 0, + "status": 0 + }, + { + "start": 16.61576631, + "end": 16.62580282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.62071019, + "coreId": 0, + "status": 0 + }, + { + "start": 16.62575638, + "end": 16.68575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.62577272, + "end": 16.65574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.62580282, + "end": 16.6458398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.63070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.63572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.63575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.64580248, + "coreId": 0, + "status": 0 + }, + { + "start": 16.6458398, + "end": 16.65576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.65071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.6557157, + "coreId": 0, + "status": 0 + }, + { + "start": 16.65574412, + "end": 16.67574411, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.65576629, + "end": 16.67576632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.66576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.66578979, + "coreId": 0, + "status": 0 + }, + { + "start": 16.67576632, + "end": 16.68580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.68071018, + "coreId": 0, + "status": 0 + }, + { + "start": 16.68577245, + "end": 16.71574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.68580255, + "end": 16.70580304, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.69071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.69572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.69575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.70576564, + "coreId": 0, + "status": 0 + }, + { + "start": 16.70580304, + "end": 16.715766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.71071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.71571551, + "coreId": 0, + "status": 0 + }, + { + "start": 16.715766, + "end": 16.73576662, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.72576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.72579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.73572861, + "coreId": 0, + "status": 0 + }, + { + "start": 16.73576662, + "end": 16.7458399, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.74071018, + "coreId": 0, + "status": 0 + }, + { + "start": 16.7457855, + "end": 16.90575617, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.74580979, + "end": 16.77574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.7458399, + "end": 16.76580332, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.75071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.75572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.75575319, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.76576592, + "coreId": 0, + "status": 0 + }, + { + "start": 16.76580332, + "end": 16.77576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.77070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.77571568, + "coreId": 0, + "status": 0 + }, + { + "start": 16.77574451, + "end": 16.78578497, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.77576668, + "end": 16.77872419, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 16.77872419, + "end": 16.78574777, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 16.78572264, + "coreId": 0, + "status": 0 + }, + { + "start": 16.78574777, + "end": 16.82574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 16.78578497, + "end": 16.79576049, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 16.78870296, + "end": 16.7937111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.79571024, + "coreId": 0, + "status": 0 + }, + { + "start": 16.79770291, + "end": 16.80576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.80571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.80573498, + "coreId": 0, + "status": 0 + }, + { + "start": 16.80770294, + "end": 16.81371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.81571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.82572314, + "coreId": 0, + "status": 0 + }, + { + "start": 16.82574836, + "end": 16.87576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 16.8257856, + "end": 16.83576059, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 16.82770293, + "end": 16.83271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.83572306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 16.84574749, + "coreId": 0, + "status": 0 + }, + { + "start": 16.84582188, + "end": 16.8657967, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 16.84870291, + "end": 16.85371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.85571025, + "coreId": 0, + "status": 0 + }, + { + "start": 16.85870293, + "end": 16.86576033, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.86572263, + "coreId": 0, + "status": 0 + }, + { + "start": 16.86770294, + "end": 16.8727111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 16.87576601, + "end": 16.8957662, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.88070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.8857656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.88578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.89572823, + "coreId": 0, + "status": 0 + }, + { + "start": 16.8957662, + "end": 16.90580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.90071016, + "coreId": 0, + "status": 0 + }, + { + "start": 16.90575617, + "end": 16.9657561, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.90577251, + "end": 16.9357441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.90580261, + "end": 16.92580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.91071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.91572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.91575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.92576553, + "coreId": 0, + "status": 0 + }, + { + "start": 16.92580283, + "end": 16.93576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.93071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.93571552, + "coreId": 0, + "status": 0 + }, + { + "start": 16.93576626, + "end": 16.95576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 16.94580274, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.94582703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.95572849, + "coreId": 0, + "status": 0 + }, + { + "start": 16.95576646, + "end": 16.96580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.96071019, + "coreId": 0, + "status": 0 + }, + { + "start": 16.9657561, + "end": 17.02575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 16.96577245, + "end": 16.99574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 16.96580255, + "end": 16.98580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.97071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.9757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.9757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 16.98576525, + "coreId": 0, + "status": 0 + }, + { + "start": 16.98580255, + "end": 16.995766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 16.99071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 16.99571552, + "coreId": 0, + "status": 0 + }, + { + "start": 16.995766, + "end": 17.01576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.00576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.00579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.01572821, + "coreId": 0, + "status": 0 + }, + { + "start": 17.01576618, + "end": 17.02580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.02071019, + "coreId": 0, + "status": 0 + }, + { + "start": 17.02575637, + "end": 17.14579775, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.02577271, + "end": 17.0557441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.02580281, + "end": 17.04583987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.03071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.03572862, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.03575352, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.04580265, + "coreId": 0, + "status": 0 + }, + { + "start": 17.04583987, + "end": 17.05576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.05071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.05571568, + "coreId": 0, + "status": 0 + }, + { + "start": 17.0557441, + "end": 17.07574452, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.05576626, + "end": 17.07576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.06576575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.06579013, + "coreId": 0, + "status": 0 + }, + { + "start": 17.07574452, + "end": 17.08578511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.07576669, + "end": 17.12574819, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 17.07871009, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.08571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.08573496, + "coreId": 0, + "status": 0 + }, + { + "start": 17.08578511, + "end": 17.10579689, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 17.08870291, + "end": 17.09371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.09571004, + "coreId": 0, + "status": 0 + }, + { + "start": 17.09870294, + "end": 17.10576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.10572282, + "coreId": 0, + "status": 0 + }, + { + "start": 17.10770295, + "end": 17.11271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.11572282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.12570999, + "coreId": 0, + "status": 0 + }, + { + "start": 17.12574819, + "end": 17.16574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 17.12578543, + "end": 17.14583379, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 17.12870296, + "end": 17.13371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.1357102, + "coreId": 0, + "status": 0 + }, + { + "start": 17.13670295, + "end": 17.14577312, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.14574759, + "coreId": 0, + "status": 0 + }, + { + "start": 17.14579775, + "end": 17.18575631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.14770294, + "end": 17.15271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.15572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.16572283, + "coreId": 0, + "status": 0 + }, + { + "start": 17.16574796, + "end": 17.18580285, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 17.16870293, + "end": 17.17371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.17575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.18071016, + "coreId": 0, + "status": 0 + }, + { + "start": 17.1857727, + "end": 17.21574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.18580285, + "end": 17.20580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.19071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.19572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.19575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.20576525, + "coreId": 0, + "status": 0 + }, + { + "start": 17.20580255, + "end": 17.21576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.21071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.21571564, + "coreId": 0, + "status": 0 + }, + { + "start": 17.21576617, + "end": 17.23576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.22576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.22579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.23572847, + "coreId": 0, + "status": 0 + }, + { + "start": 17.23576643, + "end": 17.24583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.24071019, + "coreId": 0, + "status": 0 + }, + { + "start": 17.24578528, + "end": 17.30575634, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.24580961, + "end": 17.27574394, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.24583977, + "end": 17.26580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.25071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.2557285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.2557534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.26576528, + "coreId": 0, + "status": 0 + }, + { + "start": 17.26580258, + "end": 17.27576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.2707102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.27571562, + "coreId": 0, + "status": 0 + }, + { + "start": 17.27576615, + "end": 17.29576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.28576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.28578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.29572805, + "coreId": 0, + "status": 0 + }, + { + "start": 17.29576601, + "end": 17.30580288, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.30071016, + "coreId": 0, + "status": 0 + }, + { + "start": 17.30575634, + "end": 17.36575658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.30580288, + "end": 17.32580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.31071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.31572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.31575311, + "coreId": 0, + "status": 0 + }, + { + "start": 17.32577291, + "end": 17.33574419, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.32580301, + "end": 17.3357664, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.33071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.33571561, + "coreId": 0, + "status": 0 + }, + { + "start": 17.3357664, + "end": 17.35579007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.34580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.34582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.35572846, + "coreId": 0, + "status": 0 + }, + { + "start": 17.35579007, + "end": 17.36580312, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.36070999, + "coreId": 0, + "status": 0 + }, + { + "start": 17.36575658, + "end": 17.52575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.36577297, + "end": 17.38579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 17.36580312, + "end": 17.3787242, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 17.37071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.3757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.37575345, + "coreId": 0, + "status": 0 + }, + { + "start": 17.3787242, + "end": 17.40574781, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 17.38572278, + "coreId": 0, + "status": 0 + }, + { + "start": 17.38770291, + "end": 17.39271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.39572294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.40571005, + "coreId": 0, + "status": 0 + }, + { + "start": 17.40574781, + "end": 17.44576065, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 17.405785, + "end": 17.42579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 17.40870291, + "end": 17.41371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.41571025, + "coreId": 0, + "status": 0 + }, + { + "start": 17.41770294, + "end": 17.42576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.42570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.42573523, + "coreId": 0, + "status": 0 + }, + { + "start": 17.42770292, + "end": 17.43271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 17.44576065, + "end": 17.49576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 17.44582208, + "end": 17.45576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 17.44870293, + "end": 17.45371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.45571022, + "coreId": 0, + "status": 0 + }, + { + "start": 17.45770295, + "end": 17.46576038, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.46571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.46573485, + "coreId": 0, + "status": 0 + }, + { + "start": 17.46770291, + "end": 17.47271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.47575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.48576548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.48578986, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.49071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.49571552, + "coreId": 0, + "status": 0 + }, + { + "start": 17.49576601, + "end": 17.51576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.50070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.50576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.50578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.5157283, + "coreId": 0, + "status": 0 + }, + { + "start": 17.51576631, + "end": 17.52580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.5207102, + "coreId": 0, + "status": 0 + }, + { + "start": 17.52575637, + "end": 17.58575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.52577271, + "end": 17.55574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.52580281, + "end": 17.54583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.53070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.53572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.53575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.54580254, + "coreId": 0, + "status": 0 + }, + { + "start": 17.54583985, + "end": 17.55576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.55071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.5557157, + "coreId": 0, + "status": 0 + }, + { + "start": 17.55574412, + "end": 17.5757441, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.55576629, + "end": 17.57576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.56576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.56578979, + "coreId": 0, + "status": 0 + }, + { + "start": 17.57576631, + "end": 17.58580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.58071018, + "coreId": 0, + "status": 0 + }, + { + "start": 17.58577245, + "end": 17.61574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.58580255, + "end": 17.60580305, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.59071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.59572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.59575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.60576565, + "coreId": 0, + "status": 0 + }, + { + "start": 17.60580305, + "end": 17.61576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.61071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.61571552, + "coreId": 0, + "status": 0 + }, + { + "start": 17.61576601, + "end": 17.63576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.62576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.62579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.63572856, + "coreId": 0, + "status": 0 + }, + { + "start": 17.63576657, + "end": 17.64583969, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.64071018, + "coreId": 0, + "status": 0 + }, + { + "start": 17.6457853, + "end": 17.80575616, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.64580958, + "end": 17.67574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.64583969, + "end": 17.66580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.65071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.65572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.65575319, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.66576586, + "coreId": 0, + "status": 0 + }, + { + "start": 17.66580326, + "end": 17.67576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.67070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.67571568, + "coreId": 0, + "status": 0 + }, + { + "start": 17.67574451, + "end": 17.68578495, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.67576668, + "end": 17.67872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 17.67872412, + "end": 17.68574776, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 17.68572263, + "coreId": 0, + "status": 0 + }, + { + "start": 17.68574776, + "end": 17.72574837, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 17.68578495, + "end": 17.69576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 17.68870291, + "end": 17.69371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.69571022, + "coreId": 0, + "status": 0 + }, + { + "start": 17.69770293, + "end": 17.70576055, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.70571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.70573502, + "coreId": 0, + "status": 0 + }, + { + "start": 17.70770295, + "end": 17.71371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.71571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.72572315, + "coreId": 0, + "status": 0 + }, + { + "start": 17.72574837, + "end": 17.775766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 17.72578561, + "end": 17.73576059, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 17.72770291, + "end": 17.73271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.73572306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.74574757, + "coreId": 0, + "status": 0 + }, + { + "start": 17.74582202, + "end": 17.76579672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 17.74870291, + "end": 17.75371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.75571023, + "coreId": 0, + "status": 0 + }, + { + "start": 17.75870296, + "end": 17.76576035, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.76572265, + "coreId": 0, + "status": 0 + }, + { + "start": 17.76770295, + "end": 17.77271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 17.775766, + "end": 17.79576621, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.78070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.7857656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.78578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.79572824, + "coreId": 0, + "status": 0 + }, + { + "start": 17.79576621, + "end": 17.8058026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.80071016, + "coreId": 0, + "status": 0 + }, + { + "start": 17.80575616, + "end": 17.86575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.8057725, + "end": 17.8357441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.8058026, + "end": 17.82580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.81070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.81572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.81575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.82576551, + "coreId": 0, + "status": 0 + }, + { + "start": 17.82580281, + "end": 17.83576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.83071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.83571552, + "coreId": 0, + "status": 0 + }, + { + "start": 17.83576626, + "end": 17.85576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.84580266, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.84582695, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.85572848, + "coreId": 0, + "status": 0 + }, + { + "start": 17.85576645, + "end": 17.8658026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.86071019, + "coreId": 0, + "status": 0 + }, + { + "start": 17.86575616, + "end": 17.92575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.8657725, + "end": 17.89574387, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.8658026, + "end": 17.88580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.87071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.8757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.8757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.88576525, + "coreId": 0, + "status": 0 + }, + { + "start": 17.88580255, + "end": 17.89576603, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.89071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.89571555, + "coreId": 0, + "status": 0 + }, + { + "start": 17.89576603, + "end": 17.91576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.90576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.90579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.9157282, + "coreId": 0, + "status": 0 + }, + { + "start": 17.91576617, + "end": 17.92580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.92071018, + "coreId": 0, + "status": 0 + }, + { + "start": 17.92575637, + "end": 18.04579762, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 17.92577271, + "end": 17.9557441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.92580281, + "end": 17.94584001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.9307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.93572858, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.93575348, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.94580278, + "coreId": 0, + "status": 0 + }, + { + "start": 17.94584001, + "end": 17.95576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.95071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 17.95571568, + "coreId": 0, + "status": 0 + }, + { + "start": 17.9557441, + "end": 17.97574451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.95576626, + "end": 17.97576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 17.96576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 17.96579007, + "coreId": 0, + "status": 0 + }, + { + "start": 17.97574451, + "end": 17.98578511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 17.97576668, + "end": 18.02574819, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 17.97871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.98571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 17.98573495, + "coreId": 0, + "status": 0 + }, + { + "start": 17.98578511, + "end": 18.00579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 17.98870296, + "end": 17.99371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 17.99571003, + "coreId": 0, + "status": 0 + }, + { + "start": 17.99870294, + "end": 18.00576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.00572279, + "coreId": 0, + "status": 0 + }, + { + "start": 18.00770291, + "end": 18.01271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.01572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.02570999, + "coreId": 0, + "status": 0 + }, + { + "start": 18.02574819, + "end": 18.06574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 18.02578543, + "end": 18.04583365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 18.02870295, + "end": 18.03371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.03571025, + "coreId": 0, + "status": 0 + }, + { + "start": 18.03670291, + "end": 18.04577304, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.04574751, + "coreId": 0, + "status": 0 + }, + { + "start": 18.04579762, + "end": 18.08575631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.04770293, + "end": 18.05271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.05572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.0657228, + "coreId": 0, + "status": 0 + }, + { + "start": 18.06574793, + "end": 18.08580285, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 18.06870295, + "end": 18.0737111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.07575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.08071016, + "coreId": 0, + "status": 0 + }, + { + "start": 18.0857727, + "end": 18.11574395, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.08580285, + "end": 18.10580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.09071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.09572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.09575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.10576525, + "coreId": 0, + "status": 0 + }, + { + "start": 18.10580255, + "end": 18.11576616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.11071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.11571563, + "coreId": 0, + "status": 0 + }, + { + "start": 18.11576616, + "end": 18.13576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.12576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.12579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.13572847, + "coreId": 0, + "status": 0 + }, + { + "start": 18.13576643, + "end": 18.14583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.14071018, + "coreId": 0, + "status": 0 + }, + { + "start": 18.14578535, + "end": 18.20575632, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.14580968, + "end": 18.17574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.14583983, + "end": 18.16580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.15071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.1557285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.1557534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.16576524, + "coreId": 0, + "status": 0 + }, + { + "start": 18.16580255, + "end": 18.17576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.17071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.17571561, + "coreId": 0, + "status": 0 + }, + { + "start": 18.17576614, + "end": 18.195766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.18576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.18578978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.19572804, + "coreId": 0, + "status": 0 + }, + { + "start": 18.195766, + "end": 18.20580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.20071017, + "coreId": 0, + "status": 0 + }, + { + "start": 18.20575632, + "end": 18.26575656, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.20580286, + "end": 18.22580304, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.21071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.21572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.21575314, + "coreId": 0, + "status": 0 + }, + { + "start": 18.2257729, + "end": 18.23574422, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.22580304, + "end": 18.23576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.23071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.23571564, + "coreId": 0, + "status": 0 + }, + { + "start": 18.23576643, + "end": 18.25576647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.24580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.245827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.25572851, + "coreId": 0, + "status": 0 + }, + { + "start": 18.25576647, + "end": 18.2658031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.26071004, + "coreId": 0, + "status": 0 + }, + { + "start": 18.26575656, + "end": 18.42575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.26577295, + "end": 18.28579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 18.2658031, + "end": 18.27872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 18.27071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.2757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.27575345, + "coreId": 0, + "status": 0 + }, + { + "start": 18.27872412, + "end": 18.3057478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 18.28572279, + "coreId": 0, + "status": 0 + }, + { + "start": 18.28770291, + "end": 18.29271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.29572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.30571004, + "coreId": 0, + "status": 0 + }, + { + "start": 18.3057478, + "end": 18.3457607, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 18.30578499, + "end": 18.32579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 18.30870294, + "end": 18.31371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.3157102, + "coreId": 0, + "status": 0 + }, + { + "start": 18.31770293, + "end": 18.32576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.32570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.32573523, + "coreId": 0, + "status": 0 + }, + { + "start": 18.32770295, + "end": 18.33271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 18.3457607, + "end": 18.39576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 18.34582219, + "end": 18.35576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 18.34870291, + "end": 18.35371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.35571022, + "coreId": 0, + "status": 0 + }, + { + "start": 18.35770294, + "end": 18.36576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.36570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.36573479, + "coreId": 0, + "status": 0 + }, + { + "start": 18.36770292, + "end": 18.37271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.37575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.38576548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.38578986, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.39071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.39571552, + "coreId": 0, + "status": 0 + }, + { + "start": 18.39576601, + "end": 18.41576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.40071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.40576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.40578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.4157283, + "coreId": 0, + "status": 0 + }, + { + "start": 18.41576631, + "end": 18.42580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.42071019, + "coreId": 0, + "status": 0 + }, + { + "start": 18.42575637, + "end": 18.48575613, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.42577271, + "end": 18.45574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.42580281, + "end": 18.44583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.43070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.43572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.43575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.44580245, + "coreId": 0, + "status": 0 + }, + { + "start": 18.44583977, + "end": 18.45576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.45071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.4557157, + "coreId": 0, + "status": 0 + }, + { + "start": 18.45574412, + "end": 18.47574414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.45576629, + "end": 18.47576635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.46576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.46578976, + "coreId": 0, + "status": 0 + }, + { + "start": 18.47576635, + "end": 18.48580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.4807102, + "coreId": 0, + "status": 0 + }, + { + "start": 18.48577247, + "end": 18.51574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.48580257, + "end": 18.50580302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.49071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.49572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.49575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.50576562, + "coreId": 0, + "status": 0 + }, + { + "start": 18.50580302, + "end": 18.51576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.51071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.51571552, + "coreId": 0, + "status": 0 + }, + { + "start": 18.51576601, + "end": 18.53576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.52576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.52579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.53572856, + "coreId": 0, + "status": 0 + }, + { + "start": 18.53576657, + "end": 18.54583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.54071017, + "coreId": 0, + "status": 0 + }, + { + "start": 18.54578545, + "end": 18.70575616, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.54580974, + "end": 18.57574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.54583985, + "end": 18.56580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.55071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.55572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.55575319, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.56576586, + "coreId": 0, + "status": 0 + }, + { + "start": 18.56580326, + "end": 18.57576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.57070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.57571568, + "coreId": 0, + "status": 0 + }, + { + "start": 18.57574451, + "end": 18.58578495, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.57576668, + "end": 18.57872419, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 18.57872419, + "end": 18.58574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 18.58572262, + "coreId": 0, + "status": 0 + }, + { + "start": 18.58574775, + "end": 18.62574837, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 18.58578495, + "end": 18.59576048, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 18.58870293, + "end": 18.59371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.59571023, + "coreId": 0, + "status": 0 + }, + { + "start": 18.59770293, + "end": 18.6057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.60571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.60573497, + "coreId": 0, + "status": 0 + }, + { + "start": 18.60770292, + "end": 18.61371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.61571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.62572315, + "coreId": 0, + "status": 0 + }, + { + "start": 18.62574837, + "end": 18.675766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 18.62578561, + "end": 18.63576058, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 18.62770292, + "end": 18.63271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.63572305, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.64574748, + "coreId": 0, + "status": 0 + }, + { + "start": 18.64582187, + "end": 18.66579678, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 18.64870291, + "end": 18.6537111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.65571021, + "coreId": 0, + "status": 0 + }, + { + "start": 18.65870297, + "end": 18.66576041, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.66572267, + "coreId": 0, + "status": 0 + }, + { + "start": 18.66770291, + "end": 18.67271108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 18.675766, + "end": 18.69576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.68071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.68576565, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.68579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.6957282, + "coreId": 0, + "status": 0 + }, + { + "start": 18.69576617, + "end": 18.7058026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.70071016, + "coreId": 0, + "status": 0 + }, + { + "start": 18.70575616, + "end": 18.7657561, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.7057725, + "end": 18.7357441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.7058026, + "end": 18.72580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.71071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.71572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.71575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.72576551, + "coreId": 0, + "status": 0 + }, + { + "start": 18.72580281, + "end": 18.73576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.73071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.73571552, + "coreId": 0, + "status": 0 + }, + { + "start": 18.73576626, + "end": 18.75576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.74580273, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.74582702, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.75572848, + "coreId": 0, + "status": 0 + }, + { + "start": 18.75576645, + "end": 18.76580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.76071016, + "coreId": 0, + "status": 0 + }, + { + "start": 18.7657561, + "end": 18.82575638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.76577245, + "end": 18.79574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.76580255, + "end": 18.7858026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.77071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.7757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.7757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.7857653, + "coreId": 0, + "status": 0 + }, + { + "start": 18.7858026, + "end": 18.795766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.79071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.79571552, + "coreId": 0, + "status": 0 + }, + { + "start": 18.795766, + "end": 18.81576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.80576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.80579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.8157282, + "coreId": 0, + "status": 0 + }, + { + "start": 18.81576617, + "end": 18.82580282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.82071018, + "coreId": 0, + "status": 0 + }, + { + "start": 18.82575638, + "end": 18.94579773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.82577272, + "end": 18.8557441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.82580282, + "end": 18.84583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.83071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.83572858, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.83575348, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.84580264, + "coreId": 0, + "status": 0 + }, + { + "start": 18.84583986, + "end": 18.85576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.85071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.85571568, + "coreId": 0, + "status": 0 + }, + { + "start": 18.8557441, + "end": 18.87574451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.85576626, + "end": 18.87576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.86576575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.86579013, + "coreId": 0, + "status": 0 + }, + { + "start": 18.87574451, + "end": 18.88578514, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.87576668, + "end": 18.9257482, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 18.87871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.88571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.88573499, + "coreId": 0, + "status": 0 + }, + { + "start": 18.88578514, + "end": 18.90579689, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 18.88870293, + "end": 18.89371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.89571007, + "coreId": 0, + "status": 0 + }, + { + "start": 18.89870293, + "end": 18.90576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.90572282, + "coreId": 0, + "status": 0 + }, + { + "start": 18.90770295, + "end": 18.91271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.9157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.92571, + "coreId": 0, + "status": 0 + }, + { + "start": 18.9257482, + "end": 18.96574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 18.92578544, + "end": 18.94583377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 18.92870293, + "end": 18.93371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.93571022, + "coreId": 0, + "status": 0 + }, + { + "start": 18.93670296, + "end": 18.9457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.94574757, + "coreId": 0, + "status": 0 + }, + { + "start": 18.94579773, + "end": 18.98575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 18.94770296, + "end": 18.95271106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.95572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.96572283, + "coreId": 0, + "status": 0 + }, + { + "start": 18.96574796, + "end": 18.98580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 18.96870294, + "end": 18.9737111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 18.97575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 18.98071017, + "coreId": 0, + "status": 0 + }, + { + "start": 18.98577268, + "end": 19.01574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 18.98580283, + "end": 19.00580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 18.99071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 18.99572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 18.99575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.00576525, + "coreId": 0, + "status": 0 + }, + { + "start": 19.00580255, + "end": 19.01576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.01071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.01571561, + "coreId": 0, + "status": 0 + }, + { + "start": 19.01576614, + "end": 19.03576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.02576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.02579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.03572849, + "coreId": 0, + "status": 0 + }, + { + "start": 19.03576645, + "end": 19.04583979, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.04071016, + "coreId": 0, + "status": 0 + }, + { + "start": 19.0457853, + "end": 19.10575631, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.04580963, + "end": 19.07574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.04583979, + "end": 19.06580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.05071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.05572851, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.05575341, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.06576527, + "coreId": 0, + "status": 0 + }, + { + "start": 19.06580257, + "end": 19.07576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.07071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.07571561, + "coreId": 0, + "status": 0 + }, + { + "start": 19.07576614, + "end": 19.09576602, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.08576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.08578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.09572806, + "coreId": 0, + "status": 0 + }, + { + "start": 19.09576602, + "end": 19.10580285, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.10071016, + "coreId": 0, + "status": 0 + }, + { + "start": 19.10575631, + "end": 19.16575657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.10580285, + "end": 19.12580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.11071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.11572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.11575316, + "coreId": 0, + "status": 0 + }, + { + "start": 19.12577288, + "end": 19.13574423, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.12580298, + "end": 19.13576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.13071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.13571565, + "coreId": 0, + "status": 0 + }, + { + "start": 19.13576644, + "end": 19.15576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.14580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.14582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.15572846, + "coreId": 0, + "status": 0 + }, + { + "start": 19.15576642, + "end": 19.16580311, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.16070999, + "coreId": 0, + "status": 0 + }, + { + "start": 19.16575657, + "end": 19.32575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.16577296, + "end": 19.18579688, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 19.16580311, + "end": 19.17872421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 19.17071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.1757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.17575345, + "coreId": 0, + "status": 0 + }, + { + "start": 19.17872421, + "end": 19.20574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 19.1857228, + "coreId": 0, + "status": 0 + }, + { + "start": 19.18770291, + "end": 19.19271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.19572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.20571003, + "coreId": 0, + "status": 0 + }, + { + "start": 19.20574779, + "end": 19.24576065, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 19.20578498, + "end": 19.22579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 19.20870296, + "end": 19.21371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.21571024, + "coreId": 0, + "status": 0 + }, + { + "start": 19.21770291, + "end": 19.22576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.22570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.22573523, + "coreId": 0, + "status": 0 + }, + { + "start": 19.22770291, + "end": 19.23271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 19.24576065, + "end": 19.295766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 19.24582208, + "end": 19.25576071, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 19.24870293, + "end": 19.25371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.25571021, + "coreId": 0, + "status": 0 + }, + { + "start": 19.25770297, + "end": 19.26576037, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.26571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.26573484, + "coreId": 0, + "status": 0 + }, + { + "start": 19.26770294, + "end": 19.27271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.27575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.28576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.28578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.29071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.29571551, + "coreId": 0, + "status": 0 + }, + { + "start": 19.295766, + "end": 19.31576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.30071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.30576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.30578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.3157283, + "coreId": 0, + "status": 0 + }, + { + "start": 19.31576631, + "end": 19.32580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.32071021, + "coreId": 0, + "status": 0 + }, + { + "start": 19.32575637, + "end": 19.38575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.32577271, + "end": 19.35574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.32580281, + "end": 19.34583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.33070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.3357286, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.3357535, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.34580254, + "coreId": 0, + "status": 0 + }, + { + "start": 19.34583985, + "end": 19.35576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.35071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.3557157, + "coreId": 0, + "status": 0 + }, + { + "start": 19.35574412, + "end": 19.3757441, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.35576629, + "end": 19.37576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.36576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.36578979, + "coreId": 0, + "status": 0 + }, + { + "start": 19.37576631, + "end": 19.38580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.3807102, + "coreId": 0, + "status": 0 + }, + { + "start": 19.38577245, + "end": 19.41574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.38580255, + "end": 19.40580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.39071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.39572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.39575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.40576563, + "coreId": 0, + "status": 0 + }, + { + "start": 19.40580303, + "end": 19.415766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.41071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.41571551, + "coreId": 0, + "status": 0 + }, + { + "start": 19.415766, + "end": 19.43576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.42576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.42579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.43572856, + "coreId": 0, + "status": 0 + }, + { + "start": 19.43576657, + "end": 19.44583969, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.44071017, + "coreId": 0, + "status": 0 + }, + { + "start": 19.4457853, + "end": 19.60575615, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.44580958, + "end": 19.47574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.44583969, + "end": 19.46580332, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.45071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.45572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.45575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.46576592, + "coreId": 0, + "status": 0 + }, + { + "start": 19.46580332, + "end": 19.47576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.47070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.47571568, + "coreId": 0, + "status": 0 + }, + { + "start": 19.47574451, + "end": 19.48578497, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.47576668, + "end": 19.4787241, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 19.4787241, + "end": 19.48574778, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 19.48572265, + "coreId": 0, + "status": 0 + }, + { + "start": 19.48574778, + "end": 19.52574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 19.48578497, + "end": 19.49576048, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 19.48870296, + "end": 19.49371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.49571023, + "coreId": 0, + "status": 0 + }, + { + "start": 19.49770291, + "end": 19.50576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.50571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.50573498, + "coreId": 0, + "status": 0 + }, + { + "start": 19.50770293, + "end": 19.51371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.51571006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.52572314, + "coreId": 0, + "status": 0 + }, + { + "start": 19.52574836, + "end": 19.57576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 19.5257856, + "end": 19.53576062, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 19.52770292, + "end": 19.53271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.53572309, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.54574758, + "coreId": 0, + "status": 0 + }, + { + "start": 19.54582203, + "end": 19.56579672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 19.54870291, + "end": 19.55371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.55571024, + "coreId": 0, + "status": 0 + }, + { + "start": 19.55870293, + "end": 19.56576035, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.56572265, + "coreId": 0, + "status": 0 + }, + { + "start": 19.56770295, + "end": 19.57271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 19.57576601, + "end": 19.59576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.58071005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.5857656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.58578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.5957282, + "coreId": 0, + "status": 0 + }, + { + "start": 19.59576617, + "end": 19.60580259, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.60071016, + "coreId": 0, + "status": 0 + }, + { + "start": 19.60575615, + "end": 19.66575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.60577249, + "end": 19.6357441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.60580259, + "end": 19.62580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.61071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.61572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.61575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.62576551, + "coreId": 0, + "status": 0 + }, + { + "start": 19.62580281, + "end": 19.63576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.6307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.63571552, + "coreId": 0, + "status": 0 + }, + { + "start": 19.63576626, + "end": 19.65576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.64580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.64582696, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.65572847, + "coreId": 0, + "status": 0 + }, + { + "start": 19.65576644, + "end": 19.66580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.66071019, + "coreId": 0, + "status": 0 + }, + { + "start": 19.66575611, + "end": 19.72575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.66577245, + "end": 19.69574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.66580255, + "end": 19.68580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.67071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.67572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.67575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.68576525, + "coreId": 0, + "status": 0 + }, + { + "start": 19.68580255, + "end": 19.695766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.69071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.69571552, + "coreId": 0, + "status": 0 + }, + { + "start": 19.695766, + "end": 19.71576619, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.70576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.70579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.71572822, + "coreId": 0, + "status": 0 + }, + { + "start": 19.71576619, + "end": 19.72580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.72071018, + "coreId": 0, + "status": 0 + }, + { + "start": 19.72575637, + "end": 19.84579765, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.72577271, + "end": 19.75574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.72580281, + "end": 19.74584002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.73071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.73572862, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.73575352, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.74580279, + "coreId": 0, + "status": 0 + }, + { + "start": 19.74584002, + "end": 19.75576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.75071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.75571571, + "coreId": 0, + "status": 0 + }, + { + "start": 19.75574413, + "end": 19.77574451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.75576629, + "end": 19.77576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.76576575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.76579013, + "coreId": 0, + "status": 0 + }, + { + "start": 19.77574451, + "end": 19.78578517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.77576668, + "end": 19.82574819, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 19.77871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.78571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.78573501, + "coreId": 0, + "status": 0 + }, + { + "start": 19.78578517, + "end": 19.80579689, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 19.78870291, + "end": 19.79371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.79571003, + "coreId": 0, + "status": 0 + }, + { + "start": 19.79870293, + "end": 19.80576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.80572282, + "coreId": 0, + "status": 0 + }, + { + "start": 19.80770295, + "end": 19.81271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.81572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.82570999, + "coreId": 0, + "status": 0 + }, + { + "start": 19.82574819, + "end": 19.86574795, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 19.82578543, + "end": 19.84583368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 19.82870295, + "end": 19.83371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.8357102, + "coreId": 0, + "status": 0 + }, + { + "start": 19.83670295, + "end": 19.84577307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.84574754, + "coreId": 0, + "status": 0 + }, + { + "start": 19.84579765, + "end": 19.88575631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.84770296, + "end": 19.85271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.8557229, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.86572282, + "coreId": 0, + "status": 0 + }, + { + "start": 19.86574795, + "end": 19.88580285, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 19.86870292, + "end": 19.87371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.87575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 19.88071016, + "coreId": 0, + "status": 0 + }, + { + "start": 19.8857727, + "end": 19.91574395, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.88580285, + "end": 19.90580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.89071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.89572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.89575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.90576525, + "coreId": 0, + "status": 0 + }, + { + "start": 19.90580255, + "end": 19.91576616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.91071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.91571563, + "coreId": 0, + "status": 0 + }, + { + "start": 19.91576616, + "end": 19.93576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.92576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.92579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.93572847, + "coreId": 0, + "status": 0 + }, + { + "start": 19.93576643, + "end": 19.94583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.94071019, + "coreId": 0, + "status": 0 + }, + { + "start": 19.94578535, + "end": 20.00575632, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 19.94580968, + "end": 19.97574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 19.94583983, + "end": 19.96580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.95071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.95572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.95575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.96576526, + "coreId": 0, + "status": 0 + }, + { + "start": 19.96580257, + "end": 19.97576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 19.97071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.97571561, + "coreId": 0, + "status": 0 + }, + { + "start": 19.97576614, + "end": 19.99576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 19.98576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 19.98578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 19.99572805, + "coreId": 0, + "status": 0 + }, + { + "start": 19.99576601, + "end": 20.00580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.00071017, + "coreId": 0, + "status": 0 + }, + { + "start": 20.00575632, + "end": 20.06575658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.00580286, + "end": 20.02580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.01071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.01572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.01575315, + "coreId": 0, + "status": 0 + }, + { + "start": 20.02577291, + "end": 20.03574422, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.02580301, + "end": 20.03576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.03071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.03571564, + "coreId": 0, + "status": 0 + }, + { + "start": 20.03576643, + "end": 20.05576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.04580265, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.04582706, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.05572846, + "coreId": 0, + "status": 0 + }, + { + "start": 20.05576642, + "end": 20.06580312, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.06070999, + "coreId": 0, + "status": 0 + }, + { + "start": 20.06575658, + "end": 20.22575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.06577297, + "end": 20.08579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 20.06580312, + "end": 20.07872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 20.07071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.0757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.07575345, + "coreId": 0, + "status": 0 + }, + { + "start": 20.07872412, + "end": 20.10574781, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 20.08572279, + "coreId": 0, + "status": 0 + }, + { + "start": 20.08770291, + "end": 20.09271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.09572294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.10571005, + "coreId": 0, + "status": 0 + }, + { + "start": 20.10574781, + "end": 20.14576074, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 20.105785, + "end": 20.12579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 20.10870291, + "end": 20.11371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.11571024, + "coreId": 0, + "status": 0 + }, + { + "start": 20.11770291, + "end": 20.12576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.12570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.12573523, + "coreId": 0, + "status": 0 + }, + { + "start": 20.12770291, + "end": 20.13271108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 20.14576074, + "end": 20.195766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 20.14582223, + "end": 20.15576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 20.14870291, + "end": 20.15371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.15571022, + "coreId": 0, + "status": 0 + }, + { + "start": 20.15770294, + "end": 20.16576037, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.16571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.16573484, + "coreId": 0, + "status": 0 + }, + { + "start": 20.16770294, + "end": 20.17271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.17575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.18576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.18578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.19071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.19571551, + "coreId": 0, + "status": 0 + }, + { + "start": 20.195766, + "end": 20.21576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.20071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.20576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.20578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.21572832, + "coreId": 0, + "status": 0 + }, + { + "start": 20.21576633, + "end": 20.22580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.22071019, + "coreId": 0, + "status": 0 + }, + { + "start": 20.22575637, + "end": 20.28575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.22577271, + "end": 20.25574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.22580281, + "end": 20.24583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.23070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.23572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.23575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.24580251, + "coreId": 0, + "status": 0 + }, + { + "start": 20.24583983, + "end": 20.25576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.25071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.25571572, + "coreId": 0, + "status": 0 + }, + { + "start": 20.25574414, + "end": 20.2757441, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.25576631, + "end": 20.27576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.26576548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.26578981, + "coreId": 0, + "status": 0 + }, + { + "start": 20.27576631, + "end": 20.28580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.28071016, + "coreId": 0, + "status": 0 + }, + { + "start": 20.28577245, + "end": 20.31574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.28580255, + "end": 20.30580305, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.29071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.29572827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.29575317, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.30576565, + "coreId": 0, + "status": 0 + }, + { + "start": 20.30580305, + "end": 20.315766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.31071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.31571551, + "coreId": 0, + "status": 0 + }, + { + "start": 20.315766, + "end": 20.33576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.32576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.32579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.33572856, + "coreId": 0, + "status": 0 + }, + { + "start": 20.33576657, + "end": 20.34583984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.34071018, + "coreId": 0, + "status": 0 + }, + { + "start": 20.34578544, + "end": 20.50575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.34580973, + "end": 20.37574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.34583984, + "end": 20.36580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.35071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.35572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.35575319, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.36576586, + "coreId": 0, + "status": 0 + }, + { + "start": 20.36580326, + "end": 20.37576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.37070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.37571568, + "coreId": 0, + "status": 0 + }, + { + "start": 20.37574451, + "end": 20.38578495, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.37576668, + "end": 20.37872422, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 20.37872422, + "end": 20.38574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 20.38572262, + "coreId": 0, + "status": 0 + }, + { + "start": 20.38574775, + "end": 20.42574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 20.38578495, + "end": 20.39576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 20.38870293, + "end": 20.39371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.39571022, + "coreId": 0, + "status": 0 + }, + { + "start": 20.39770293, + "end": 20.40576055, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.40571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.40573502, + "coreId": 0, + "status": 0 + }, + { + "start": 20.40770295, + "end": 20.41371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.41571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.42572314, + "coreId": 0, + "status": 0 + }, + { + "start": 20.42574836, + "end": 20.475766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 20.4257856, + "end": 20.43576057, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 20.42770292, + "end": 20.43271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.43572304, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.44574749, + "coreId": 0, + "status": 0 + }, + { + "start": 20.44582188, + "end": 20.46579672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 20.44870291, + "end": 20.45371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.4557102, + "coreId": 0, + "status": 0 + }, + { + "start": 20.45870296, + "end": 20.46576035, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.46572265, + "coreId": 0, + "status": 0 + }, + { + "start": 20.46770295, + "end": 20.47271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 20.475766, + "end": 20.49576623, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.48071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.48576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.48579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.49572826, + "coreId": 0, + "status": 0 + }, + { + "start": 20.49576623, + "end": 20.50580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.50071016, + "coreId": 0, + "status": 0 + }, + { + "start": 20.50575611, + "end": 20.56575615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.50577245, + "end": 20.53574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.50580255, + "end": 20.52580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.51071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.51572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.51575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.52576551, + "coreId": 0, + "status": 0 + }, + { + "start": 20.52580281, + "end": 20.5357663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.5307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.53571556, + "coreId": 0, + "status": 0 + }, + { + "start": 20.5357663, + "end": 20.55576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.54580274, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.54582703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.55572849, + "coreId": 0, + "status": 0 + }, + { + "start": 20.55576646, + "end": 20.5658026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.56071019, + "coreId": 0, + "status": 0 + }, + { + "start": 20.56575615, + "end": 20.62575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.5657725, + "end": 20.59574387, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.5658026, + "end": 20.58580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.57071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.5757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.5757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.58576525, + "coreId": 0, + "status": 0 + }, + { + "start": 20.58580255, + "end": 20.59576603, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.59071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.59571555, + "coreId": 0, + "status": 0 + }, + { + "start": 20.59576603, + "end": 20.61576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.60576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.60579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.6157282, + "coreId": 0, + "status": 0 + }, + { + "start": 20.61576617, + "end": 20.62580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.62071018, + "coreId": 0, + "status": 0 + }, + { + "start": 20.62575637, + "end": 20.74579776, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.62577271, + "end": 20.65574411, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.62580281, + "end": 20.64583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.6307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.63572858, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.63575348, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.64580264, + "coreId": 0, + "status": 0 + }, + { + "start": 20.64583986, + "end": 20.65576627, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.65071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.65571569, + "coreId": 0, + "status": 0 + }, + { + "start": 20.65574411, + "end": 20.67574451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.65576627, + "end": 20.67576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.66576575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.66579013, + "coreId": 0, + "status": 0 + }, + { + "start": 20.67574451, + "end": 20.68578511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.67576668, + "end": 20.7257482, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 20.67871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.68571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.68573496, + "coreId": 0, + "status": 0 + }, + { + "start": 20.68578511, + "end": 20.70579689, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 20.68870291, + "end": 20.69371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.69571003, + "coreId": 0, + "status": 0 + }, + { + "start": 20.69870294, + "end": 20.70576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.70572282, + "coreId": 0, + "status": 0 + }, + { + "start": 20.70770295, + "end": 20.71271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.7157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.72571, + "coreId": 0, + "status": 0 + }, + { + "start": 20.7257482, + "end": 20.76574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 20.72578544, + "end": 20.7458338, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 20.72870293, + "end": 20.73371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.7357102, + "coreId": 0, + "status": 0 + }, + { + "start": 20.73670295, + "end": 20.74577313, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.7457476, + "coreId": 0, + "status": 0 + }, + { + "start": 20.74579776, + "end": 20.78575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.74770291, + "end": 20.75271106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.75572292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.7657228, + "coreId": 0, + "status": 0 + }, + { + "start": 20.76574793, + "end": 20.78580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 20.76870295, + "end": 20.77371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.77575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 20.78071017, + "coreId": 0, + "status": 0 + }, + { + "start": 20.78577268, + "end": 20.81574395, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.78580283, + "end": 20.8058026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.79071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.79572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.79575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.8057653, + "coreId": 0, + "status": 0 + }, + { + "start": 20.8058026, + "end": 20.81576616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.81071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.81571563, + "coreId": 0, + "status": 0 + }, + { + "start": 20.81576616, + "end": 20.83576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.82576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.82579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.83572849, + "coreId": 0, + "status": 0 + }, + { + "start": 20.83576645, + "end": 20.84583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.84071019, + "coreId": 0, + "status": 0 + }, + { + "start": 20.84578528, + "end": 20.90575632, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.84580961, + "end": 20.87574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.84583977, + "end": 20.86580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.85071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.85572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.85575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.86576528, + "coreId": 0, + "status": 0 + }, + { + "start": 20.86580258, + "end": 20.87576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.87071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.87571564, + "coreId": 0, + "status": 0 + }, + { + "start": 20.87576617, + "end": 20.895766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.88576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.88578978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.89572804, + "coreId": 0, + "status": 0 + }, + { + "start": 20.895766, + "end": 20.90580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.90071017, + "coreId": 0, + "status": 0 + }, + { + "start": 20.90575632, + "end": 20.96575658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.90580286, + "end": 20.92580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.91070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.91572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.91575314, + "coreId": 0, + "status": 0 + }, + { + "start": 20.92577288, + "end": 20.93574419, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 20.92580298, + "end": 20.9357664, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.93071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.93571561, + "coreId": 0, + "status": 0 + }, + { + "start": 20.9357664, + "end": 20.95576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 20.94580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.94582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.95572846, + "coreId": 0, + "status": 0 + }, + { + "start": 20.95576642, + "end": 20.96580312, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.96071003, + "coreId": 0, + "status": 0 + }, + { + "start": 20.96575658, + "end": 21.12575638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 20.96577297, + "end": 20.98579688, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 20.96580312, + "end": 20.97872421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 20.97071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 20.9757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 20.97575345, + "coreId": 0, + "status": 0 + }, + { + "start": 20.97872421, + "end": 21.0057478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 20.9857228, + "coreId": 0, + "status": 0 + }, + { + "start": 20.98770291, + "end": 20.99271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 20.99572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.00571004, + "coreId": 0, + "status": 0 + }, + { + "start": 21.0057478, + "end": 21.04576065, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 21.00578499, + "end": 21.02579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.00870294, + "end": 21.01371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.0157102, + "coreId": 0, + "status": 0 + }, + { + "start": 21.01770293, + "end": 21.02576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.02570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.02573523, + "coreId": 0, + "status": 0 + }, + { + "start": 21.02770291, + "end": 21.03271111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 21.04576065, + "end": 21.09576602, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 21.04582208, + "end": 21.05576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.04870293, + "end": 21.05371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.05571022, + "coreId": 0, + "status": 0 + }, + { + "start": 21.05770295, + "end": 21.06576037, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.06571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.06573484, + "coreId": 0, + "status": 0 + }, + { + "start": 21.06770291, + "end": 21.07271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.07575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.08576544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.08578982, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.09071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.09571553, + "coreId": 0, + "status": 0 + }, + { + "start": 21.09576602, + "end": 21.11576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.10071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.10576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.10578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.1157283, + "coreId": 0, + "status": 0 + }, + { + "start": 21.11576631, + "end": 21.12580282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.12071019, + "coreId": 0, + "status": 0 + }, + { + "start": 21.12575638, + "end": 21.18575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 21.12577272, + "end": 21.15574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.12580282, + "end": 21.14583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.13070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.13572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.13575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.14580252, + "coreId": 0, + "status": 0 + }, + { + "start": 21.14583983, + "end": 21.15576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.15071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.15571572, + "coreId": 0, + "status": 0 + }, + { + "start": 21.15574414, + "end": 21.1757441, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.15576631, + "end": 21.17576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.16576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.16578976, + "coreId": 0, + "status": 0 + }, + { + "start": 21.17576631, + "end": 21.18580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.18071017, + "coreId": 0, + "status": 0 + }, + { + "start": 21.18577245, + "end": 21.21574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.18580255, + "end": 21.20580305, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.19071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.19572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.19575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.20576565, + "coreId": 0, + "status": 0 + }, + { + "start": 21.20580305, + "end": 21.21576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.21071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.21571552, + "coreId": 0, + "status": 0 + }, + { + "start": 21.21576601, + "end": 21.23576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.22576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.22579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.23572856, + "coreId": 0, + "status": 0 + }, + { + "start": 21.23576657, + "end": 21.24583969, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.24071018, + "coreId": 0, + "status": 0 + }, + { + "start": 21.2457853, + "end": 21.40575614, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 21.24580958, + "end": 21.27574452, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.24583969, + "end": 21.26580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.25071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.25572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.25575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.26576586, + "coreId": 0, + "status": 0 + }, + { + "start": 21.26580326, + "end": 21.27576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.27070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.27571569, + "coreId": 0, + "status": 0 + }, + { + "start": 21.27574452, + "end": 21.28578494, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.27576669, + "end": 21.27872411, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 21.27872411, + "end": 21.28574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 21.28572262, + "coreId": 0, + "status": 0 + }, + { + "start": 21.28574775, + "end": 21.32574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 21.28578494, + "end": 21.29576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.28870291, + "end": 21.29371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.29571022, + "coreId": 0, + "status": 0 + }, + { + "start": 21.29770293, + "end": 21.30576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.30571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.30573498, + "coreId": 0, + "status": 0 + }, + { + "start": 21.30770294, + "end": 21.31371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.31571006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.32572314, + "coreId": 0, + "status": 0 + }, + { + "start": 21.32574836, + "end": 21.375766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 21.3257856, + "end": 21.33576059, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.32770291, + "end": 21.33271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.33572306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.34574759, + "coreId": 0, + "status": 0 + }, + { + "start": 21.34582204, + "end": 21.36579671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.34870291, + "end": 21.35371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.35571024, + "coreId": 0, + "status": 0 + }, + { + "start": 21.35870293, + "end": 21.36576034, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.36572264, + "coreId": 0, + "status": 0 + }, + { + "start": 21.36770295, + "end": 21.37271111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 21.375766, + "end": 21.39576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.38071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.38576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.38579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.3957282, + "coreId": 0, + "status": 0 + }, + { + "start": 21.39576617, + "end": 21.40580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.40071017, + "coreId": 0, + "status": 0 + }, + { + "start": 21.40575614, + "end": 21.46575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 21.40577248, + "end": 21.43574411, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.40580258, + "end": 21.42580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.41071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.41572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.41575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.42576551, + "coreId": 0, + "status": 0 + }, + { + "start": 21.42580281, + "end": 21.43576627, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.43071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.43571553, + "coreId": 0, + "status": 0 + }, + { + "start": 21.43576627, + "end": 21.45576647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.44580266, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.44582695, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.4557285, + "coreId": 0, + "status": 0 + }, + { + "start": 21.45576647, + "end": 21.4658026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.46071019, + "coreId": 0, + "status": 0 + }, + { + "start": 21.46575616, + "end": 21.52575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 21.4657725, + "end": 21.49574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.4658026, + "end": 21.4858026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.47071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.4757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.4757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.4857653, + "coreId": 0, + "status": 0 + }, + { + "start": 21.4858026, + "end": 21.495766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.49071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.49571552, + "coreId": 0, + "status": 0 + }, + { + "start": 21.495766, + "end": 21.51576619, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.50576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.50579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.51572822, + "coreId": 0, + "status": 0 + }, + { + "start": 21.51576619, + "end": 21.52580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.5207102, + "coreId": 0, + "status": 0 + }, + { + "start": 21.52575637, + "end": 21.64579759, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 21.52577271, + "end": 21.55574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.52580281, + "end": 21.54584001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.53071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.53572856, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.53575346, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.54580278, + "coreId": 0, + "status": 0 + }, + { + "start": 21.54584001, + "end": 21.55576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.55071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.55571571, + "coreId": 0, + "status": 0 + }, + { + "start": 21.55574413, + "end": 21.57574451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.55576629, + "end": 21.57576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.56576575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.56579013, + "coreId": 0, + "status": 0 + }, + { + "start": 21.57574451, + "end": 21.58578512, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.57576668, + "end": 21.6257482, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 21.57871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.58571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.58573496, + "coreId": 0, + "status": 0 + }, + { + "start": 21.58578512, + "end": 21.60579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.58870293, + "end": 21.59371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.59571003, + "coreId": 0, + "status": 0 + }, + { + "start": 21.59870294, + "end": 21.60576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.60572279, + "coreId": 0, + "status": 0 + }, + { + "start": 21.60770297, + "end": 21.61271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.6157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.62571, + "coreId": 0, + "status": 0 + }, + { + "start": 21.6257482, + "end": 21.66574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 21.62578544, + "end": 21.64583362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.62870293, + "end": 21.63371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.6357102, + "coreId": 0, + "status": 0 + }, + { + "start": 21.63670295, + "end": 21.64577301, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.64574748, + "coreId": 0, + "status": 0 + }, + { + "start": 21.64579759, + "end": 21.68575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 21.64770292, + "end": 21.65271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.65572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.6657228, + "coreId": 0, + "status": 0 + }, + { + "start": 21.66574793, + "end": 21.68580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 21.66870295, + "end": 21.67371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.67575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.68071017, + "coreId": 0, + "status": 0 + }, + { + "start": 21.68577268, + "end": 21.71574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.68580283, + "end": 21.70580259, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.69071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.69572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.69575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.70576529, + "coreId": 0, + "status": 0 + }, + { + "start": 21.70580259, + "end": 21.71576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.71071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.71571561, + "coreId": 0, + "status": 0 + }, + { + "start": 21.71576614, + "end": 21.73576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.72576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.72579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.73572849, + "coreId": 0, + "status": 0 + }, + { + "start": 21.73576645, + "end": 21.74583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.74071016, + "coreId": 0, + "status": 0 + }, + { + "start": 21.74578537, + "end": 21.80575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 21.7458097, + "end": 21.77574394, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.74583985, + "end": 21.76580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.75071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.75572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.75575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.7657653, + "coreId": 0, + "status": 0 + }, + { + "start": 21.76580261, + "end": 21.77576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.77071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.77571562, + "coreId": 0, + "status": 0 + }, + { + "start": 21.77576615, + "end": 21.79576602, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.78576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.78578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.79572806, + "coreId": 0, + "status": 0 + }, + { + "start": 21.79576602, + "end": 21.80580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.80071016, + "coreId": 0, + "status": 0 + }, + { + "start": 21.80575629, + "end": 21.86575658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 21.80580283, + "end": 21.82580302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.81071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.81572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.81575314, + "coreId": 0, + "status": 0 + }, + { + "start": 21.82577292, + "end": 21.83574421, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 21.82580302, + "end": 21.83576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.83071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.83571563, + "coreId": 0, + "status": 0 + }, + { + "start": 21.83576642, + "end": 21.85576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.84580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.845827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.85572846, + "coreId": 0, + "status": 0 + }, + { + "start": 21.85576642, + "end": 21.86580312, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.86070999, + "coreId": 0, + "status": 0 + }, + { + "start": 21.86575658, + "end": 22.02575638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 21.86577297, + "end": 21.88579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.86580312, + "end": 21.87872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 21.87071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.8757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.87575345, + "coreId": 0, + "status": 0 + }, + { + "start": 21.87872412, + "end": 21.90574781, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 21.88572279, + "coreId": 0, + "status": 0 + }, + { + "start": 21.88770291, + "end": 21.89271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.89572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.90571005, + "coreId": 0, + "status": 0 + }, + { + "start": 21.90574781, + "end": 21.94576074, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 21.905785, + "end": 21.92579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.90870291, + "end": 21.91371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.91571024, + "coreId": 0, + "status": 0 + }, + { + "start": 21.91770295, + "end": 21.92576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.92570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.92573523, + "coreId": 0, + "status": 0 + }, + { + "start": 21.92770292, + "end": 21.93271108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 21.94576074, + "end": 21.995766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 21.94582223, + "end": 21.95576071, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 21.94870294, + "end": 21.95371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.95571021, + "coreId": 0, + "status": 0 + }, + { + "start": 21.95770297, + "end": 21.96576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 21.96570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.96573479, + "coreId": 0, + "status": 0 + }, + { + "start": 21.96770292, + "end": 21.97271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 21.97575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.98576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 21.98578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 21.99071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 21.99571551, + "coreId": 0, + "status": 0 + }, + { + "start": 21.995766, + "end": 22.01576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.00071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.00576547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.0057898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.01572832, + "coreId": 0, + "status": 0 + }, + { + "start": 22.01576633, + "end": 22.02580282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.02071019, + "coreId": 0, + "status": 0 + }, + { + "start": 22.02575638, + "end": 22.08575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.02577272, + "end": 22.05574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.02580282, + "end": 22.04583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.03070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.03572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.03575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.04580245, + "coreId": 0, + "status": 0 + }, + { + "start": 22.04583977, + "end": 22.05576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.05071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.0557157, + "coreId": 0, + "status": 0 + }, + { + "start": 22.05574412, + "end": 22.07574411, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.05576629, + "end": 22.07576632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.06576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.06578979, + "coreId": 0, + "status": 0 + }, + { + "start": 22.07576632, + "end": 22.08580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.08071018, + "coreId": 0, + "status": 0 + }, + { + "start": 22.08577245, + "end": 22.11574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.08580255, + "end": 22.10580304, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.09071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.09572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.09575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.10576564, + "coreId": 0, + "status": 0 + }, + { + "start": 22.10580304, + "end": 22.11576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.11071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.11571552, + "coreId": 0, + "status": 0 + }, + { + "start": 22.11576601, + "end": 22.1357666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.12576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.12579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.13572859, + "coreId": 0, + "status": 0 + }, + { + "start": 22.1357666, + "end": 22.14583984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.14071017, + "coreId": 0, + "status": 0 + }, + { + "start": 22.14578544, + "end": 22.30575614, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.14580973, + "end": 22.17574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.14583984, + "end": 22.16580332, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.15071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.15572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.15575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.16576592, + "coreId": 0, + "status": 0 + }, + { + "start": 22.16580332, + "end": 22.17576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.17070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.17571568, + "coreId": 0, + "status": 0 + }, + { + "start": 22.17574451, + "end": 22.18578494, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.17576668, + "end": 22.17872422, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 22.17872422, + "end": 22.18574774, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 22.18572261, + "coreId": 0, + "status": 0 + }, + { + "start": 22.18574774, + "end": 22.22574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 22.18578494, + "end": 22.19576048, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 22.18870291, + "end": 22.19371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.19571023, + "coreId": 0, + "status": 0 + }, + { + "start": 22.19770291, + "end": 22.2057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.20571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.20573497, + "coreId": 0, + "status": 0 + }, + { + "start": 22.20770292, + "end": 22.21371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.21571006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.22572314, + "coreId": 0, + "status": 0 + }, + { + "start": 22.22574836, + "end": 22.27576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 22.2257856, + "end": 22.2357606, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 22.22770292, + "end": 22.23271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.23572307, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.2457475, + "coreId": 0, + "status": 0 + }, + { + "start": 22.24582189, + "end": 22.2657967, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 22.24870293, + "end": 22.25371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.25571021, + "coreId": 0, + "status": 0 + }, + { + "start": 22.25870294, + "end": 22.26576033, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.26572263, + "coreId": 0, + "status": 0 + }, + { + "start": 22.26770293, + "end": 22.27271109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 22.27576601, + "end": 22.29576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.28070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.28576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.28579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.2957282, + "coreId": 0, + "status": 0 + }, + { + "start": 22.29576617, + "end": 22.30580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.30071017, + "coreId": 0, + "status": 0 + }, + { + "start": 22.30575614, + "end": 22.36575615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.30577248, + "end": 22.33574415, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.30580258, + "end": 22.32580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.31071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.31572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.31575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.32576553, + "coreId": 0, + "status": 0 + }, + { + "start": 22.32580283, + "end": 22.33576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.33071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.33571557, + "coreId": 0, + "status": 0 + }, + { + "start": 22.33576631, + "end": 22.35576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.34580274, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.34582703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.35572849, + "coreId": 0, + "status": 0 + }, + { + "start": 22.35576646, + "end": 22.3658026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.36071019, + "coreId": 0, + "status": 0 + }, + { + "start": 22.36575615, + "end": 22.42575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.3657725, + "end": 22.39574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.3658026, + "end": 22.38580263, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.37071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.3757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.3757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.38576533, + "coreId": 0, + "status": 0 + }, + { + "start": 22.38580263, + "end": 22.395766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.39071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.39571552, + "coreId": 0, + "status": 0 + }, + { + "start": 22.395766, + "end": 22.41576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.4057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.40578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.41572821, + "coreId": 0, + "status": 0 + }, + { + "start": 22.41576618, + "end": 22.42580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.42071018, + "coreId": 0, + "status": 0 + }, + { + "start": 22.42575637, + "end": 22.54579779, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.42577271, + "end": 22.4557441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.42580281, + "end": 22.44583987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.43071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.43572862, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.43575352, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.44580265, + "coreId": 0, + "status": 0 + }, + { + "start": 22.44583987, + "end": 22.45576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.45071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.45571568, + "coreId": 0, + "status": 0 + }, + { + "start": 22.4557441, + "end": 22.47574451, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.45576626, + "end": 22.47576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.46576575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.46579013, + "coreId": 0, + "status": 0 + }, + { + "start": 22.47574451, + "end": 22.48578517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.47576668, + "end": 22.52574819, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 22.47871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.48571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.48573502, + "coreId": 0, + "status": 0 + }, + { + "start": 22.48578517, + "end": 22.50579689, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 22.48870292, + "end": 22.49371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.49571004, + "coreId": 0, + "status": 0 + }, + { + "start": 22.49870294, + "end": 22.50576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.50572282, + "coreId": 0, + "status": 0 + }, + { + "start": 22.50770295, + "end": 22.51271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.51572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.52570999, + "coreId": 0, + "status": 0 + }, + { + "start": 22.52574819, + "end": 22.56574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 22.52578543, + "end": 22.54583383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 22.52870297, + "end": 22.53371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.5357102, + "coreId": 0, + "status": 0 + }, + { + "start": 22.53670295, + "end": 22.54577316, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.54574763, + "coreId": 0, + "status": 0 + }, + { + "start": 22.54579779, + "end": 22.58575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.54770291, + "end": 22.55271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.55572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.56572283, + "coreId": 0, + "status": 0 + }, + { + "start": 22.56574796, + "end": 22.58580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 22.56870293, + "end": 22.57371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.57575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.58071016, + "coreId": 0, + "status": 0 + }, + { + "start": 22.58577268, + "end": 22.61574395, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.58580283, + "end": 22.60580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.59071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.59572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.59575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.60576525, + "coreId": 0, + "status": 0 + }, + { + "start": 22.60580255, + "end": 22.61576616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.61071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.61571563, + "coreId": 0, + "status": 0 + }, + { + "start": 22.61576616, + "end": 22.63576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.62576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.62579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.63572848, + "coreId": 0, + "status": 0 + }, + { + "start": 22.63576644, + "end": 22.64583979, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.64071016, + "coreId": 0, + "status": 0 + }, + { + "start": 22.6457853, + "end": 22.70575633, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.64580963, + "end": 22.67574394, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.64583979, + "end": 22.66580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.65071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.6557285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.6557534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.66576528, + "coreId": 0, + "status": 0 + }, + { + "start": 22.66580258, + "end": 22.67576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.6707102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.67571562, + "coreId": 0, + "status": 0 + }, + { + "start": 22.67574394, + "end": 22.69574384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.67576615, + "end": 22.695766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.68576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.68578975, + "coreId": 0, + "status": 0 + }, + { + "start": 22.695766, + "end": 22.70580287, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.70071016, + "coreId": 0, + "status": 0 + }, + { + "start": 22.70575633, + "end": 22.76575658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.70577272, + "end": 22.73574421, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.70580287, + "end": 22.72580302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.71071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.71572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.71575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.72576572, + "coreId": 0, + "status": 0 + }, + { + "start": 22.72580302, + "end": 22.73576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.73071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.73571563, + "coreId": 0, + "status": 0 + }, + { + "start": 22.73576642, + "end": 22.75576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.74580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.74582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.75572846, + "coreId": 0, + "status": 0 + }, + { + "start": 22.75576642, + "end": 22.76580312, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.76070999, + "coreId": 0, + "status": 0 + }, + { + "start": 22.76575658, + "end": 22.92575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.76577297, + "end": 22.78579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 22.76580312, + "end": 22.77872422, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 22.7707102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.7757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.77575345, + "coreId": 0, + "status": 0 + }, + { + "start": 22.77872422, + "end": 22.80574778, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 22.78572278, + "coreId": 0, + "status": 0 + }, + { + "start": 22.78770291, + "end": 22.79271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.79572292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.80572265, + "coreId": 0, + "status": 0 + }, + { + "start": 22.80574778, + "end": 22.84576065, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 22.80578497, + "end": 22.82579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 22.80870296, + "end": 22.81371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.81571025, + "coreId": 0, + "status": 0 + }, + { + "start": 22.81770291, + "end": 22.82576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.82570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.82573523, + "coreId": 0, + "status": 0 + }, + { + "start": 22.82770292, + "end": 22.83271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 22.84576065, + "end": 22.895766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 22.84582208, + "end": 22.85576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 22.84870293, + "end": 22.85371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.85571022, + "coreId": 0, + "status": 0 + }, + { + "start": 22.85770294, + "end": 22.86576037, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.86571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.86573484, + "coreId": 0, + "status": 0 + }, + { + "start": 22.86770294, + "end": 22.87271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.87575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.88576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.88578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 22.89071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.89571551, + "coreId": 0, + "status": 0 + }, + { + "start": 22.895766, + "end": 22.91576634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.90071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.90576544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.90578977, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.91572833, + "coreId": 0, + "status": 0 + }, + { + "start": 22.91576634, + "end": 22.92580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.9207102, + "coreId": 0, + "status": 0 + }, + { + "start": 22.92575637, + "end": 22.98575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 22.92580281, + "end": 22.94583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.93070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.93572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.93575337, + "coreId": 0, + "status": 0 + }, + { + "start": 22.94580968, + "end": 22.95574415, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.94583983, + "end": 22.95576632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.95071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.95571573, + "coreId": 0, + "status": 0 + }, + { + "start": 22.95576632, + "end": 22.97576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 22.96576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.96578979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.9757283, + "coreId": 0, + "status": 0 + }, + { + "start": 22.97576631, + "end": 22.98580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.98071019, + "coreId": 0, + "status": 0 + }, + { + "start": 22.98577245, + "end": 23.01574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 22.98580255, + "end": 23.00580305, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 22.99071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 22.99572827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 22.99575317, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.00576565, + "coreId": 0, + "status": 0 + }, + { + "start": 23.00580305, + "end": 23.015766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.01071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.01571551, + "coreId": 0, + "status": 0 + }, + { + "start": 23.015766, + "end": 23.03576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.02576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.02579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.03572856, + "coreId": 0, + "status": 0 + }, + { + "start": 23.03576657, + "end": 23.04583969, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.04071018, + "coreId": 0, + "status": 0 + }, + { + "start": 23.0457853, + "end": 23.20575616, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.04580958, + "end": 23.07574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.04583969, + "end": 23.06580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.05071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.05572841, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.05575331, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.06576586, + "coreId": 0, + "status": 0 + }, + { + "start": 23.06580326, + "end": 23.07576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.07070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.07571568, + "coreId": 0, + "status": 0 + }, + { + "start": 23.07574451, + "end": 23.08578497, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.07576668, + "end": 23.0787241, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 23.0787241, + "end": 23.08574778, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 23.08572265, + "coreId": 0, + "status": 0 + }, + { + "start": 23.08574778, + "end": 23.12574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 23.08578497, + "end": 23.09576048, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 23.08870293, + "end": 23.0937111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.09571023, + "coreId": 0, + "status": 0 + }, + { + "start": 23.09770291, + "end": 23.10576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.10571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.10573498, + "coreId": 0, + "status": 0 + }, + { + "start": 23.10870297, + "end": 23.11371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.11571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.12572314, + "coreId": 0, + "status": 0 + }, + { + "start": 23.12574836, + "end": 23.17576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 23.12770293, + "end": 23.13271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.13572304, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.14574758, + "coreId": 0, + "status": 0 + }, + { + "start": 23.14582203, + "end": 23.16579672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 23.14870291, + "end": 23.15371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.15571023, + "coreId": 0, + "status": 0 + }, + { + "start": 23.15870296, + "end": 23.16576035, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.16572265, + "coreId": 0, + "status": 0 + }, + { + "start": 23.16770295, + "end": 23.17271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 23.17576601, + "end": 23.19576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.18071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.1857656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.18578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.1957282, + "coreId": 0, + "status": 0 + }, + { + "start": 23.19576617, + "end": 23.2058026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.20071016, + "coreId": 0, + "status": 0 + }, + { + "start": 23.20575616, + "end": 23.26575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.2057725, + "end": 23.23574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.2058026, + "end": 23.22580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.21071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.21572836, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.21575326, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.22576551, + "coreId": 0, + "status": 0 + }, + { + "start": 23.22580281, + "end": 23.2357663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.2307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.23571556, + "coreId": 0, + "status": 0 + }, + { + "start": 23.2357663, + "end": 23.25576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.24580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.24582696, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.25572848, + "coreId": 0, + "status": 0 + }, + { + "start": 23.25576645, + "end": 23.2658026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.26071019, + "coreId": 0, + "status": 0 + }, + { + "start": 23.26575616, + "end": 23.32575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.2657725, + "end": 23.29574386, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.2658026, + "end": 23.28580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.27071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.2757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.2757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.28576527, + "coreId": 0, + "status": 0 + }, + { + "start": 23.28580257, + "end": 23.29576602, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.29071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.29571554, + "coreId": 0, + "status": 0 + }, + { + "start": 23.29576602, + "end": 23.31576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.30576561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.30578999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.3157282, + "coreId": 0, + "status": 0 + }, + { + "start": 23.31576617, + "end": 23.32580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.32071018, + "coreId": 0, + "status": 0 + }, + { + "start": 23.32575637, + "end": 23.44579762, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.32580281, + "end": 23.34584002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.3307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.33572858, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.33575348, + "coreId": 0, + "status": 0 + }, + { + "start": 23.34580991, + "end": 23.35574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.34584002, + "end": 23.35576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.35071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.35571571, + "coreId": 0, + "status": 0 + }, + { + "start": 23.35574413, + "end": 23.38578511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.35576629, + "end": 23.37576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.36576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.36579007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.37572846, + "coreId": 0, + "status": 0 + }, + { + "start": 23.37576668, + "end": 23.4257482, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 23.37871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.38571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.38573495, + "coreId": 0, + "status": 0 + }, + { + "start": 23.38578511, + "end": 23.40579689, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 23.38870291, + "end": 23.39371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.39571003, + "coreId": 0, + "status": 0 + }, + { + "start": 23.39870294, + "end": 23.40576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.40572282, + "coreId": 0, + "status": 0 + }, + { + "start": 23.40770295, + "end": 23.41271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.41572282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.42571, + "coreId": 0, + "status": 0 + }, + { + "start": 23.4257482, + "end": 23.46574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 23.42578544, + "end": 23.44583365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 23.42870293, + "end": 23.43371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.43571022, + "coreId": 0, + "status": 0 + }, + { + "start": 23.43770292, + "end": 23.44577304, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.44574751, + "coreId": 0, + "status": 0 + }, + { + "start": 23.44579762, + "end": 23.48575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.44770294, + "end": 23.45271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.45572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.4657228, + "coreId": 0, + "status": 0 + }, + { + "start": 23.46574793, + "end": 23.48580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 23.46870295, + "end": 23.47371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.47575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.48071018, + "coreId": 0, + "status": 0 + }, + { + "start": 23.48577268, + "end": 23.51574395, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.48580283, + "end": 23.5058026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.49071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.49572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.49575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.5057653, + "coreId": 0, + "status": 0 + }, + { + "start": 23.5058026, + "end": 23.51576616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.51071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.51571563, + "coreId": 0, + "status": 0 + }, + { + "start": 23.51576616, + "end": 23.53576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.52576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.52579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.53572848, + "coreId": 0, + "status": 0 + }, + { + "start": 23.53576644, + "end": 23.54583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.54071019, + "coreId": 0, + "status": 0 + }, + { + "start": 23.54578535, + "end": 23.60575632, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.54580968, + "end": 23.57574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.54583983, + "end": 23.56580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.55071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.55572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.55575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.56576527, + "coreId": 0, + "status": 0 + }, + { + "start": 23.56580258, + "end": 23.57576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.57071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.57571564, + "coreId": 0, + "status": 0 + }, + { + "start": 23.57574396, + "end": 23.59574384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.57576617, + "end": 23.595766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.58576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.58578978, + "coreId": 0, + "status": 0 + }, + { + "start": 23.595766, + "end": 23.60580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.60071017, + "coreId": 0, + "status": 0 + }, + { + "start": 23.60575632, + "end": 23.66575659, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.60577271, + "end": 23.63574419, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.60580286, + "end": 23.62580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.61071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.61572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.61575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.62576568, + "coreId": 0, + "status": 0 + }, + { + "start": 23.62580298, + "end": 23.6357664, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.63071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.63571561, + "coreId": 0, + "status": 0 + }, + { + "start": 23.6357664, + "end": 23.65576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.64580269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.64582702, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.65572846, + "coreId": 0, + "status": 0 + }, + { + "start": 23.65576642, + "end": 23.66580313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.66070999, + "coreId": 0, + "status": 0 + }, + { + "start": 23.66575659, + "end": 23.82575638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.66577298, + "end": 23.68579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 23.66580313, + "end": 23.67872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 23.67071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.6757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.67575345, + "coreId": 0, + "status": 0 + }, + { + "start": 23.67872412, + "end": 23.70574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 23.68572279, + "coreId": 0, + "status": 0 + }, + { + "start": 23.68770291, + "end": 23.69271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.69572292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.70572266, + "coreId": 0, + "status": 0 + }, + { + "start": 23.70574779, + "end": 23.74576074, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 23.70578498, + "end": 23.72579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 23.70870296, + "end": 23.71371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.71571024, + "coreId": 0, + "status": 0 + }, + { + "start": 23.71770291, + "end": 23.72576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.72570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.72573523, + "coreId": 0, + "status": 0 + }, + { + "start": 23.72770291, + "end": 23.7327111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 23.74576074, + "end": 23.795766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 23.74582223, + "end": 23.75576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 23.74870294, + "end": 23.75371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.75571022, + "coreId": 0, + "status": 0 + }, + { + "start": 23.75770295, + "end": 23.76576037, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.76571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.76573484, + "coreId": 0, + "status": 0 + }, + { + "start": 23.76770294, + "end": 23.77271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.77575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.78576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.78578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 23.79071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.79571551, + "coreId": 0, + "status": 0 + }, + { + "start": 23.795766, + "end": 23.81576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.80071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.80576547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.8057898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.8157283, + "coreId": 0, + "status": 0 + }, + { + "start": 23.81576631, + "end": 23.82580282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.82071019, + "coreId": 0, + "status": 0 + }, + { + "start": 23.82575638, + "end": 23.88575615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.82580282, + "end": 23.84583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.83070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.83572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.83575337, + "coreId": 0, + "status": 0 + }, + { + "start": 23.84580961, + "end": 23.85574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.84583977, + "end": 23.8557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.85071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.85571571, + "coreId": 0, + "status": 0 + }, + { + "start": 23.8557663, + "end": 23.87576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.86576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.86578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.8757283, + "coreId": 0, + "status": 0 + }, + { + "start": 23.87576631, + "end": 23.88580259, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.88071016, + "coreId": 0, + "status": 0 + }, + { + "start": 23.88577249, + "end": 23.91574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.88580259, + "end": 23.90580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.89070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.89572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.89575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.90576563, + "coreId": 0, + "status": 0 + }, + { + "start": 23.90580303, + "end": 23.91576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.91071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.91571552, + "coreId": 0, + "status": 0 + }, + { + "start": 23.91576601, + "end": 23.93576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 23.92576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.92579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.93572856, + "coreId": 0, + "status": 0 + }, + { + "start": 23.93576657, + "end": 23.94583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.94071017, + "coreId": 0, + "status": 0 + }, + { + "start": 23.94578546, + "end": 24.10575614, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 23.94580975, + "end": 23.97574452, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.94583986, + "end": 23.96580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.95071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.95572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.95575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 23.96576586, + "coreId": 0, + "status": 0 + }, + { + "start": 23.96580326, + "end": 23.97576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.97070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 23.97571569, + "coreId": 0, + "status": 0 + }, + { + "start": 23.97574452, + "end": 23.98578495, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 23.97576669, + "end": 23.97872422, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 23.97872422, + "end": 23.98574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 23.98572262, + "coreId": 0, + "status": 0 + }, + { + "start": 23.98574775, + "end": 24.02574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 23.98578495, + "end": 23.99576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 23.98870291, + "end": 23.99371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 23.99571022, + "coreId": 0, + "status": 0 + }, + { + "start": 23.99770293, + "end": 24.00576053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.0057102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.005735, + "coreId": 0, + "status": 0 + }, + { + "start": 24.00870291, + "end": 24.01371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.01571008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.02572314, + "coreId": 0, + "status": 0 + }, + { + "start": 24.02574836, + "end": 24.075766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 24.02770292, + "end": 24.03271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.03572306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.04574751, + "coreId": 0, + "status": 0 + }, + { + "start": 24.0458219, + "end": 24.06579669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 24.04870294, + "end": 24.05371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.05571021, + "coreId": 0, + "status": 0 + }, + { + "start": 24.05870294, + "end": 24.06576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.06572262, + "coreId": 0, + "status": 0 + }, + { + "start": 24.06770292, + "end": 24.07271111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 24.075766, + "end": 24.09576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.08070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.08576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.08579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.0957282, + "coreId": 0, + "status": 0 + }, + { + "start": 24.09576617, + "end": 24.10580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.10071017, + "coreId": 0, + "status": 0 + }, + { + "start": 24.10575614, + "end": 24.1657561, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 24.10577248, + "end": 24.13574411, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.10580258, + "end": 24.12580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.11071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.11572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.11575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.12576551, + "coreId": 0, + "status": 0 + }, + { + "start": 24.12580281, + "end": 24.13576627, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.13071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.13571553, + "coreId": 0, + "status": 0 + }, + { + "start": 24.13576627, + "end": 24.15576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.14580275, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.14582704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.15572848, + "coreId": 0, + "status": 0 + }, + { + "start": 24.15576645, + "end": 24.16580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.16071016, + "coreId": 0, + "status": 0 + }, + { + "start": 24.1657561, + "end": 24.22575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 24.16577245, + "end": 24.19574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.16580255, + "end": 24.18580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.17071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.1757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.1757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.18576525, + "coreId": 0, + "status": 0 + }, + { + "start": 24.18580255, + "end": 24.195766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.19071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.19571552, + "coreId": 0, + "status": 0 + }, + { + "start": 24.195766, + "end": 24.21576619, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.20576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.20579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.21572822, + "coreId": 0, + "status": 0 + }, + { + "start": 24.21576619, + "end": 24.22580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.22071016, + "coreId": 0, + "status": 0 + }, + { + "start": 24.22575637, + "end": 24.34579773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 24.22580281, + "end": 24.24583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.23071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.23572859, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.23575349, + "coreId": 0, + "status": 0 + }, + { + "start": 24.24580975, + "end": 24.2557441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.24583986, + "end": 24.25576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.25071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.25571568, + "coreId": 0, + "status": 0 + }, + { + "start": 24.2557441, + "end": 24.28578511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.25576626, + "end": 24.27576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.26576575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.26579013, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.27572846, + "coreId": 0, + "status": 0 + }, + { + "start": 24.27576668, + "end": 24.3257482, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 24.27871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.28571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.28573496, + "coreId": 0, + "status": 0 + }, + { + "start": 24.28578511, + "end": 24.30579689, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 24.28870291, + "end": 24.29371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.29571003, + "coreId": 0, + "status": 0 + }, + { + "start": 24.29870293, + "end": 24.30576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.30572282, + "coreId": 0, + "status": 0 + }, + { + "start": 24.30770295, + "end": 24.31271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.3157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.32571, + "coreId": 0, + "status": 0 + }, + { + "start": 24.3257482, + "end": 24.36574797, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 24.32578544, + "end": 24.34583377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 24.32870293, + "end": 24.33371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.3357102, + "coreId": 0, + "status": 0 + }, + { + "start": 24.33770291, + "end": 24.3457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.34574757, + "coreId": 0, + "status": 0 + }, + { + "start": 24.34579773, + "end": 24.38575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 24.34770297, + "end": 24.35271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.35572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.36572284, + "coreId": 0, + "status": 0 + }, + { + "start": 24.36574797, + "end": 24.38580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 24.36870291, + "end": 24.3737111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.37575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.38071017, + "coreId": 0, + "status": 0 + }, + { + "start": 24.38577268, + "end": 24.41574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.38580283, + "end": 24.40580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.39071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.39572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.39575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.40576525, + "coreId": 0, + "status": 0 + }, + { + "start": 24.40580255, + "end": 24.41576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.41071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.41571561, + "coreId": 0, + "status": 0 + }, + { + "start": 24.41576614, + "end": 24.43576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.42576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.42579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.4357285, + "coreId": 0, + "status": 0 + }, + { + "start": 24.43576646, + "end": 24.44583978, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.44071016, + "coreId": 0, + "status": 0 + }, + { + "start": 24.44578529, + "end": 24.50575634, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 24.44580962, + "end": 24.47574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.44583978, + "end": 24.46580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.45071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.45572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.45575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.46576531, + "coreId": 0, + "status": 0 + }, + { + "start": 24.46580261, + "end": 24.47576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.47071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.47571561, + "coreId": 0, + "status": 0 + }, + { + "start": 24.47574393, + "end": 24.49574384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.47576614, + "end": 24.495766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.48576548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.48578981, + "coreId": 0, + "status": 0 + }, + { + "start": 24.495766, + "end": 24.50580288, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.50071016, + "coreId": 0, + "status": 0 + }, + { + "start": 24.50575634, + "end": 24.56575657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 24.50577273, + "end": 24.53574421, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.50580288, + "end": 24.52580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.51071005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.51572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.51575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.52576571, + "coreId": 0, + "status": 0 + }, + { + "start": 24.52580301, + "end": 24.53576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.53071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.53571563, + "coreId": 0, + "status": 0 + }, + { + "start": 24.53576642, + "end": 24.55576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.54580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.54582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.55572846, + "coreId": 0, + "status": 0 + }, + { + "start": 24.55576642, + "end": 24.56580311, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.56070999, + "coreId": 0, + "status": 0 + }, + { + "start": 24.56575657, + "end": 24.72575638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 24.56577296, + "end": 24.58579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 24.56580311, + "end": 24.57872424, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 24.57071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.5757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.57575345, + "coreId": 0, + "status": 0 + }, + { + "start": 24.57872424, + "end": 24.60574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 24.58572278, + "coreId": 0, + "status": 0 + }, + { + "start": 24.58770291, + "end": 24.59271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.59572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.60572266, + "coreId": 0, + "status": 0 + }, + { + "start": 24.60574779, + "end": 24.64576065, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 24.60578498, + "end": 24.62579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 24.60870296, + "end": 24.61371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.61571024, + "coreId": 0, + "status": 0 + }, + { + "start": 24.61770291, + "end": 24.62576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.62570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.62573523, + "coreId": 0, + "status": 0 + }, + { + "start": 24.62770291, + "end": 24.63271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 24.64576065, + "end": 24.695766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 24.64582208, + "end": 24.65576071, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 24.64870293, + "end": 24.65371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.65571021, + "coreId": 0, + "status": 0 + }, + { + "start": 24.65770293, + "end": 24.66576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.66570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.66573479, + "coreId": 0, + "status": 0 + }, + { + "start": 24.66770292, + "end": 24.67271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.67575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.68576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.68578983, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.69071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.69571551, + "coreId": 0, + "status": 0 + }, + { + "start": 24.695766, + "end": 24.71576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.70071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.70576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.70578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.7157283, + "coreId": 0, + "status": 0 + }, + { + "start": 24.71576631, + "end": 24.72580282, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.72071019, + "coreId": 0, + "status": 0 + }, + { + "start": 24.72575638, + "end": 24.78575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 24.72580282, + "end": 24.74583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.73070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.73572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.73575337, + "coreId": 0, + "status": 0 + }, + { + "start": 24.74580971, + "end": 24.75574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.74583986, + "end": 24.75576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.75071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.7557157, + "coreId": 0, + "status": 0 + }, + { + "start": 24.75576629, + "end": 24.77576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.76576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.76578979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.7757283, + "coreId": 0, + "status": 0 + }, + { + "start": 24.77576631, + "end": 24.78580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.7807102, + "coreId": 0, + "status": 0 + }, + { + "start": 24.78577245, + "end": 24.81574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.78580255, + "end": 24.80580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.79071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.79572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.79575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.80576563, + "coreId": 0, + "status": 0 + }, + { + "start": 24.80580303, + "end": 24.815766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.81071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.81571551, + "coreId": 0, + "status": 0 + }, + { + "start": 24.815766, + "end": 24.8357666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 24.82576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.82579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.83572859, + "coreId": 0, + "status": 0 + }, + { + "start": 24.8357666, + "end": 24.84583969, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.84071017, + "coreId": 0, + "status": 0 + }, + { + "start": 24.8457853, + "end": 25.00575616, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 24.84580958, + "end": 24.87574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.84583969, + "end": 24.86580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.85071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.85572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.85575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.86576586, + "coreId": 0, + "status": 0 + }, + { + "start": 24.86580326, + "end": 24.87576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.87070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.87571568, + "coreId": 0, + "status": 0 + }, + { + "start": 24.87574451, + "end": 24.88578497, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 24.87576668, + "end": 24.8787241, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 24.8787241, + "end": 24.88574778, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 24.88572265, + "coreId": 0, + "status": 0 + }, + { + "start": 24.88574778, + "end": 24.92574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 24.88578497, + "end": 24.89576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 24.88870296, + "end": 24.89371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.89571022, + "coreId": 0, + "status": 0 + }, + { + "start": 24.89770293, + "end": 24.9057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.90571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.90573497, + "coreId": 0, + "status": 0 + }, + { + "start": 24.90870295, + "end": 24.91371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.91571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.92572314, + "coreId": 0, + "status": 0 + }, + { + "start": 24.92574836, + "end": 24.975766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 24.92770292, + "end": 24.93271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.93572306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 24.94574758, + "coreId": 0, + "status": 0 + }, + { + "start": 24.94582203, + "end": 24.96579672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 24.94870291, + "end": 24.95371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.95571023, + "coreId": 0, + "status": 0 + }, + { + "start": 24.95870293, + "end": 24.96576035, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.96572265, + "coreId": 0, + "status": 0 + }, + { + "start": 24.96770294, + "end": 24.97271109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 24.975766, + "end": 24.99576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 24.98071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.98576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 24.98579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 24.9957282, + "coreId": 0, + "status": 0 + }, + { + "start": 24.99576617, + "end": 25.0058026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.00071016, + "coreId": 0, + "status": 0 + }, + { + "start": 25.00575616, + "end": 25.06575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.0057725, + "end": 25.03574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.0058026, + "end": 25.02580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.01071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.01572836, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.01575326, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.02576551, + "coreId": 0, + "status": 0 + }, + { + "start": 25.02580281, + "end": 25.0357663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.03071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.03571556, + "coreId": 0, + "status": 0 + }, + { + "start": 25.0357663, + "end": 25.05576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.04580266, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.04582695, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.05572847, + "coreId": 0, + "status": 0 + }, + { + "start": 25.05576644, + "end": 25.06580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.06071019, + "coreId": 0, + "status": 0 + }, + { + "start": 25.06575611, + "end": 25.12575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.06577245, + "end": 25.09574387, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.06580255, + "end": 25.08580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.07071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.0757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.0757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.08576525, + "coreId": 0, + "status": 0 + }, + { + "start": 25.08580255, + "end": 25.09576603, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.09071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.09571555, + "coreId": 0, + "status": 0 + }, + { + "start": 25.09576603, + "end": 25.11576623, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.1057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.10578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.11572826, + "coreId": 0, + "status": 0 + }, + { + "start": 25.11576623, + "end": 25.12580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.12071018, + "coreId": 0, + "status": 0 + }, + { + "start": 25.12575637, + "end": 25.24579765, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.12580281, + "end": 25.14584001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.13071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.13572862, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.13575352, + "coreId": 0, + "status": 0 + }, + { + "start": 25.1458099, + "end": 25.15574411, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.14584001, + "end": 25.15576627, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.15071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.15571569, + "coreId": 0, + "status": 0 + }, + { + "start": 25.15574411, + "end": 25.18578517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.15576627, + "end": 25.17576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.16576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.16579007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.17572846, + "coreId": 0, + "status": 0 + }, + { + "start": 25.17576668, + "end": 25.22574819, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 25.17871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.18571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.18573501, + "coreId": 0, + "status": 0 + }, + { + "start": 25.18578517, + "end": 25.20579687, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 25.18870292, + "end": 25.19371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.19571004, + "coreId": 0, + "status": 0 + }, + { + "start": 25.19870297, + "end": 25.2057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.2057228, + "coreId": 0, + "status": 0 + }, + { + "start": 25.20770295, + "end": 25.21271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.21572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.22570999, + "coreId": 0, + "status": 0 + }, + { + "start": 25.22574819, + "end": 25.26574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 25.22578543, + "end": 25.24583368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 25.22870295, + "end": 25.23371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.2357102, + "coreId": 0, + "status": 0 + }, + { + "start": 25.23770291, + "end": 25.24577307, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.24574754, + "coreId": 0, + "status": 0 + }, + { + "start": 25.24579765, + "end": 25.28575631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.24770296, + "end": 25.25271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.2557229, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.26572283, + "coreId": 0, + "status": 0 + }, + { + "start": 25.26574796, + "end": 25.28580285, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 25.26870293, + "end": 25.27371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.27575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.28071016, + "coreId": 0, + "status": 0 + }, + { + "start": 25.2857727, + "end": 25.31574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.28580285, + "end": 25.30580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.29071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.29572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.29575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.30576525, + "coreId": 0, + "status": 0 + }, + { + "start": 25.30580255, + "end": 25.31576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.31071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.31571564, + "coreId": 0, + "status": 0 + }, + { + "start": 25.31576617, + "end": 25.33576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.32576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.32579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.33572847, + "coreId": 0, + "status": 0 + }, + { + "start": 25.33576643, + "end": 25.34583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.34071016, + "coreId": 0, + "status": 0 + }, + { + "start": 25.34578537, + "end": 25.40575634, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.3458097, + "end": 25.37574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.34583985, + "end": 25.36580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.35071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.35572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.35575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.36576524, + "coreId": 0, + "status": 0 + }, + { + "start": 25.36580255, + "end": 25.37576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.37071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.37571561, + "coreId": 0, + "status": 0 + }, + { + "start": 25.37574393, + "end": 25.39574384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.37576614, + "end": 25.395766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.38576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.38578975, + "coreId": 0, + "status": 0 + }, + { + "start": 25.395766, + "end": 25.40580288, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.40071016, + "coreId": 0, + "status": 0 + }, + { + "start": 25.40575634, + "end": 25.46575658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.40577273, + "end": 25.43574422, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.40580288, + "end": 25.42580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.41071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.41572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.41575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.42576571, + "coreId": 0, + "status": 0 + }, + { + "start": 25.42580301, + "end": 25.43576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.43071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.43571564, + "coreId": 0, + "status": 0 + }, + { + "start": 25.43576643, + "end": 25.45576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.44580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.445827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.45572848, + "coreId": 0, + "status": 0 + }, + { + "start": 25.45576644, + "end": 25.46580312, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.46071, + "coreId": 0, + "status": 0 + }, + { + "start": 25.46575658, + "end": 25.62575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.46577297, + "end": 25.48579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 25.46580312, + "end": 25.47872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 25.47071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.4757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.47575345, + "coreId": 0, + "status": 0 + }, + { + "start": 25.47872412, + "end": 25.5057478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 25.48572279, + "coreId": 0, + "status": 0 + }, + { + "start": 25.48770291, + "end": 25.49271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.49572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.50572267, + "coreId": 0, + "status": 0 + }, + { + "start": 25.5057478, + "end": 25.54576074, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 25.50578499, + "end": 25.52579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 25.50870294, + "end": 25.51371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.51571026, + "coreId": 0, + "status": 0 + }, + { + "start": 25.51770294, + "end": 25.52576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.52570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.52573523, + "coreId": 0, + "status": 0 + }, + { + "start": 25.52770292, + "end": 25.53271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 25.54576074, + "end": 25.595766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 25.54582223, + "end": 25.55576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 25.54870294, + "end": 25.55371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.55571022, + "coreId": 0, + "status": 0 + }, + { + "start": 25.55770294, + "end": 25.56576037, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.56571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.56573484, + "coreId": 0, + "status": 0 + }, + { + "start": 25.56770296, + "end": 25.57271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.57575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.58576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.58578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.59071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.59571551, + "coreId": 0, + "status": 0 + }, + { + "start": 25.595766, + "end": 25.61576637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.60071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.60576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.60578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.61572836, + "coreId": 0, + "status": 0 + }, + { + "start": 25.61576637, + "end": 25.62580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.62071019, + "coreId": 0, + "status": 0 + }, + { + "start": 25.62575637, + "end": 25.68575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.62580281, + "end": 25.64583978, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.63070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.63572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.63575337, + "coreId": 0, + "status": 0 + }, + { + "start": 25.64580962, + "end": 25.65574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.64583978, + "end": 25.65576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.65071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.65571572, + "coreId": 0, + "status": 0 + }, + { + "start": 25.65576631, + "end": 25.67576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.66576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.66578979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.6757283, + "coreId": 0, + "status": 0 + }, + { + "start": 25.67576631, + "end": 25.68580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.68071017, + "coreId": 0, + "status": 0 + }, + { + "start": 25.68577245, + "end": 25.71574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.68580255, + "end": 25.70580302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.69071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.69572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.69575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.70576562, + "coreId": 0, + "status": 0 + }, + { + "start": 25.70580302, + "end": 25.715766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.71071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.71571551, + "coreId": 0, + "status": 0 + }, + { + "start": 25.715766, + "end": 25.73576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.72576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.72579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.73572856, + "coreId": 0, + "status": 0 + }, + { + "start": 25.73576657, + "end": 25.74583984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.74071018, + "coreId": 0, + "status": 0 + }, + { + "start": 25.74578544, + "end": 25.90575616, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.74580973, + "end": 25.77574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.74583984, + "end": 25.76580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.75071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.75572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.75575319, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.76576586, + "coreId": 0, + "status": 0 + }, + { + "start": 25.76580326, + "end": 25.77576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.77070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.77571568, + "coreId": 0, + "status": 0 + }, + { + "start": 25.77574451, + "end": 25.78578496, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.77576668, + "end": 25.77872419, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 25.77872419, + "end": 25.78574776, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 25.78572263, + "coreId": 0, + "status": 0 + }, + { + "start": 25.78574776, + "end": 25.82574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 25.78578496, + "end": 25.79576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 25.78870296, + "end": 25.79371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.79571022, + "coreId": 0, + "status": 0 + }, + { + "start": 25.79770293, + "end": 25.80576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.80571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.80573499, + "coreId": 0, + "status": 0 + }, + { + "start": 25.80870297, + "end": 25.81371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.81571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.82572314, + "coreId": 0, + "status": 0 + }, + { + "start": 25.82574836, + "end": 25.875766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 25.82770291, + "end": 25.83271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.83572307, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 25.8457475, + "coreId": 0, + "status": 0 + }, + { + "start": 25.84582189, + "end": 25.86579671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 25.84870293, + "end": 25.8537111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.85571024, + "coreId": 0, + "status": 0 + }, + { + "start": 25.85870293, + "end": 25.86576034, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.86572264, + "coreId": 0, + "status": 0 + }, + { + "start": 25.86770295, + "end": 25.87271111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 25.875766, + "end": 25.89576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.88071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.88576561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.88578999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.8957282, + "coreId": 0, + "status": 0 + }, + { + "start": 25.89576617, + "end": 25.9058026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.90071016, + "coreId": 0, + "status": 0 + }, + { + "start": 25.90575616, + "end": 25.96575615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.9057725, + "end": 25.9357441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.9058026, + "end": 25.92580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.91071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.91572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.91575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.92576551, + "coreId": 0, + "status": 0 + }, + { + "start": 25.92580281, + "end": 25.93576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.93071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.93571552, + "coreId": 0, + "status": 0 + }, + { + "start": 25.93576626, + "end": 25.95576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 25.94580273, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.94582702, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.95572848, + "coreId": 0, + "status": 0 + }, + { + "start": 25.95576645, + "end": 25.9658026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.96071019, + "coreId": 0, + "status": 0 + }, + { + "start": 25.96575615, + "end": 26.02575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 25.9657725, + "end": 25.99574387, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 25.9658026, + "end": 25.98580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.97071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.9757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.9757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 25.98576525, + "coreId": 0, + "status": 0 + }, + { + "start": 25.98580255, + "end": 25.99576603, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 25.99071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 25.99571555, + "coreId": 0, + "status": 0 + }, + { + "start": 25.99576603, + "end": 26.01576622, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.00576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.00579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.01572825, + "coreId": 0, + "status": 0 + }, + { + "start": 26.01576622, + "end": 26.02580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.0207102, + "coreId": 0, + "status": 0 + }, + { + "start": 26.02575637, + "end": 26.14579776, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.02580281, + "end": 26.04583987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.0307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.03572858, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.03575348, + "coreId": 0, + "status": 0 + }, + { + "start": 26.04580976, + "end": 26.0557441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.04583987, + "end": 26.05576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.05071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.05571568, + "coreId": 0, + "status": 0 + }, + { + "start": 26.0557441, + "end": 26.08578514, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.05576626, + "end": 26.07576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.06576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.06579007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.07572846, + "coreId": 0, + "status": 0 + }, + { + "start": 26.07576668, + "end": 26.12574819, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 26.07871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.08571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.08573499, + "coreId": 0, + "status": 0 + }, + { + "start": 26.08578514, + "end": 26.10579689, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 26.08870292, + "end": 26.09371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.09571004, + "coreId": 0, + "status": 0 + }, + { + "start": 26.09870294, + "end": 26.10576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.10572282, + "coreId": 0, + "status": 0 + }, + { + "start": 26.10770295, + "end": 26.11271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.1157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.12570999, + "coreId": 0, + "status": 0 + }, + { + "start": 26.12574819, + "end": 26.16574793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 26.12578543, + "end": 26.1458338, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 26.12870292, + "end": 26.13371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.13571025, + "coreId": 0, + "status": 0 + }, + { + "start": 26.13770296, + "end": 26.14577313, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.1457476, + "coreId": 0, + "status": 0 + }, + { + "start": 26.14579776, + "end": 26.18575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.14770296, + "end": 26.15271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.15572286, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.1657228, + "coreId": 0, + "status": 0 + }, + { + "start": 26.16574793, + "end": 26.18580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 26.16870295, + "end": 26.17371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.17575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.18071017, + "coreId": 0, + "status": 0 + }, + { + "start": 26.18577268, + "end": 26.21574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.18580283, + "end": 26.20580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.19071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.19572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.19575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.20576525, + "coreId": 0, + "status": 0 + }, + { + "start": 26.20580255, + "end": 26.21576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.21071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.21571564, + "coreId": 0, + "status": 0 + }, + { + "start": 26.21576617, + "end": 26.23576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.22576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.22579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.23572848, + "coreId": 0, + "status": 0 + }, + { + "start": 26.23576644, + "end": 26.24583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.24071019, + "coreId": 0, + "status": 0 + }, + { + "start": 26.24578528, + "end": 26.30575632, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.24580961, + "end": 26.27574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.24583977, + "end": 26.26580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.25071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.25572849, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.25575339, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.26576528, + "coreId": 0, + "status": 0 + }, + { + "start": 26.26580258, + "end": 26.27576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.2707102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.27571564, + "coreId": 0, + "status": 0 + }, + { + "start": 26.27574396, + "end": 26.29574384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.27576617, + "end": 26.295766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.28576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.28578978, + "coreId": 0, + "status": 0 + }, + { + "start": 26.295766, + "end": 26.30580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.30071017, + "coreId": 0, + "status": 0 + }, + { + "start": 26.30575632, + "end": 26.36575659, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.30577271, + "end": 26.3357442, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.30580286, + "end": 26.32580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.31070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.31572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.31575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.32576568, + "coreId": 0, + "status": 0 + }, + { + "start": 26.32580298, + "end": 26.33576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.33071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.33571562, + "coreId": 0, + "status": 0 + }, + { + "start": 26.33576641, + "end": 26.35576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.34580283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.34582717, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.35572846, + "coreId": 0, + "status": 0 + }, + { + "start": 26.35576642, + "end": 26.36580313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.36070999, + "coreId": 0, + "status": 0 + }, + { + "start": 26.36575659, + "end": 26.52575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.36577298, + "end": 26.38579688, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 26.36580313, + "end": 26.37872424, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 26.37071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.3757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.37575345, + "coreId": 0, + "status": 0 + }, + { + "start": 26.37872424, + "end": 26.40574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 26.3857228, + "coreId": 0, + "status": 0 + }, + { + "start": 26.38770291, + "end": 26.39271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.39572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.40572266, + "coreId": 0, + "status": 0 + }, + { + "start": 26.40574779, + "end": 26.44576065, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 26.40578498, + "end": 26.42579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 26.40870295, + "end": 26.41371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.41571026, + "coreId": 0, + "status": 0 + }, + { + "start": 26.41770294, + "end": 26.42576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.42570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.42573523, + "coreId": 0, + "status": 0 + }, + { + "start": 26.42770291, + "end": 26.4327111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 26.44576065, + "end": 26.495766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 26.44582208, + "end": 26.45576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 26.44870293, + "end": 26.45371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.45571022, + "coreId": 0, + "status": 0 + }, + { + "start": 26.45770295, + "end": 26.46576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.46570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.46573479, + "coreId": 0, + "status": 0 + }, + { + "start": 26.46770292, + "end": 26.47271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.47575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.48576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.48578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.49071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.49571551, + "coreId": 0, + "status": 0 + }, + { + "start": 26.495766, + "end": 26.51576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.50070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.50576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.50578979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.5157283, + "coreId": 0, + "status": 0 + }, + { + "start": 26.51576631, + "end": 26.52580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.52071019, + "coreId": 0, + "status": 0 + }, + { + "start": 26.52575637, + "end": 26.58575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.52580281, + "end": 26.54583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.53070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.53572849, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.53575339, + "coreId": 0, + "status": 0 + }, + { + "start": 26.5458097, + "end": 26.55574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.54583985, + "end": 26.55576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.55071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.5557157, + "coreId": 0, + "status": 0 + }, + { + "start": 26.55576629, + "end": 26.57576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.56576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.56578976, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.5757283, + "coreId": 0, + "status": 0 + }, + { + "start": 26.57576631, + "end": 26.58580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.58071017, + "coreId": 0, + "status": 0 + }, + { + "start": 26.58577245, + "end": 26.61574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.58580255, + "end": 26.60580302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.59070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.59572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.59575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.60576562, + "coreId": 0, + "status": 0 + }, + { + "start": 26.60580302, + "end": 26.61576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.61071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.61571552, + "coreId": 0, + "status": 0 + }, + { + "start": 26.61576601, + "end": 26.63576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.62576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.62579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.63572856, + "coreId": 0, + "status": 0 + }, + { + "start": 26.63576657, + "end": 26.64583971, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.64071017, + "coreId": 0, + "status": 0 + }, + { + "start": 26.64578532, + "end": 26.80575616, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.6458096, + "end": 26.67574451, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.64583971, + "end": 26.66580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.65071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.65572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.65575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.66576586, + "coreId": 0, + "status": 0 + }, + { + "start": 26.66580326, + "end": 26.67576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.67070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.67571568, + "coreId": 0, + "status": 0 + }, + { + "start": 26.67574451, + "end": 26.68578497, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.67576668, + "end": 26.6787241, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 26.6787241, + "end": 26.68574778, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 26.68572265, + "coreId": 0, + "status": 0 + }, + { + "start": 26.68574778, + "end": 26.72574836, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 26.68578497, + "end": 26.69576048, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 26.68870293, + "end": 26.69371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.69571023, + "coreId": 0, + "status": 0 + }, + { + "start": 26.69770293, + "end": 26.7057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.70571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.70573497, + "coreId": 0, + "status": 0 + }, + { + "start": 26.70870296, + "end": 26.71371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.71571006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.72572314, + "coreId": 0, + "status": 0 + }, + { + "start": 26.72574836, + "end": 26.775766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 26.72770291, + "end": 26.73271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.73572308, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.74574759, + "coreId": 0, + "status": 0 + }, + { + "start": 26.74582204, + "end": 26.76579671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 26.74870291, + "end": 26.75371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.75571024, + "coreId": 0, + "status": 0 + }, + { + "start": 26.75870293, + "end": 26.76576034, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.76572264, + "coreId": 0, + "status": 0 + }, + { + "start": 26.76770295, + "end": 26.77271111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 26.775766, + "end": 26.79576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.78071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.7857656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.78578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.7957282, + "coreId": 0, + "status": 0 + }, + { + "start": 26.79576617, + "end": 26.80580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.80071016, + "coreId": 0, + "status": 0 + }, + { + "start": 26.80575616, + "end": 26.86575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.8057725, + "end": 26.83574411, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.80580261, + "end": 26.82580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.81071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.81572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.81575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.82576551, + "coreId": 0, + "status": 0 + }, + { + "start": 26.82580281, + "end": 26.83576627, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.83071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.83571553, + "coreId": 0, + "status": 0 + }, + { + "start": 26.83576627, + "end": 26.85576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.84580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.84582696, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.85572848, + "coreId": 0, + "status": 0 + }, + { + "start": 26.85576645, + "end": 26.8658026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.86071019, + "coreId": 0, + "status": 0 + }, + { + "start": 26.86575616, + "end": 26.92575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.8657725, + "end": 26.89574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.8658026, + "end": 26.88580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.87071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.8757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.8757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.88576525, + "coreId": 0, + "status": 0 + }, + { + "start": 26.88580255, + "end": 26.895766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.89071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.89571552, + "coreId": 0, + "status": 0 + }, + { + "start": 26.895766, + "end": 26.91576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.90576562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.90579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.91572821, + "coreId": 0, + "status": 0 + }, + { + "start": 26.91576618, + "end": 26.92580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.92071019, + "coreId": 0, + "status": 0 + }, + { + "start": 26.92575637, + "end": 27.04579762, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 26.92580281, + "end": 26.94584003, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.93071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.93572861, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.93575351, + "coreId": 0, + "status": 0 + }, + { + "start": 26.94580992, + "end": 26.95574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.94584003, + "end": 26.95576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.95071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.95571571, + "coreId": 0, + "status": 0 + }, + { + "start": 26.95574413, + "end": 26.98578511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 26.95576629, + "end": 26.97576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 26.96576575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 26.96579013, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 26.97572846, + "coreId": 0, + "status": 0 + }, + { + "start": 26.97576668, + "end": 27.0257482, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 26.97871006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.98571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 26.98573495, + "coreId": 0, + "status": 0 + }, + { + "start": 26.98578511, + "end": 27.00579687, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 26.98870292, + "end": 26.99371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 26.99571004, + "coreId": 0, + "status": 0 + }, + { + "start": 26.99870297, + "end": 27.0057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.0057228, + "coreId": 0, + "status": 0 + }, + { + "start": 27.00770295, + "end": 27.01271089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.0157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.02571, + "coreId": 0, + "status": 0 + }, + { + "start": 27.0257482, + "end": 27.06574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 27.02578544, + "end": 27.04583365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 27.02870293, + "end": 27.03371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.0357102, + "coreId": 0, + "status": 0 + }, + { + "start": 27.03770291, + "end": 27.04577304, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.04574751, + "coreId": 0, + "status": 0 + }, + { + "start": 27.04579762, + "end": 27.08575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.04770293, + "end": 27.05271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.05572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.06572283, + "coreId": 0, + "status": 0 + }, + { + "start": 27.06574796, + "end": 27.08580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 27.06870294, + "end": 27.07371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.07575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.08071018, + "coreId": 0, + "status": 0 + }, + { + "start": 27.08577268, + "end": 27.11574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.08580283, + "end": 27.10580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.09071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.09572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.09575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.10576525, + "coreId": 0, + "status": 0 + }, + { + "start": 27.10580255, + "end": 27.11576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.11071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.11571564, + "coreId": 0, + "status": 0 + }, + { + "start": 27.11576617, + "end": 27.13576647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.12576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.12579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.13572851, + "coreId": 0, + "status": 0 + }, + { + "start": 27.13576647, + "end": 27.14583984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.14071016, + "coreId": 0, + "status": 0 + }, + { + "start": 27.14578536, + "end": 27.20575632, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.14580969, + "end": 27.17574394, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.14583984, + "end": 27.16580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.15071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.15572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.15575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.16576526, + "coreId": 0, + "status": 0 + }, + { + "start": 27.16580257, + "end": 27.17576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.1707102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.17571562, + "coreId": 0, + "status": 0 + }, + { + "start": 27.17574394, + "end": 27.19574385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.17576615, + "end": 27.19576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.18576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.18578978, + "coreId": 0, + "status": 0 + }, + { + "start": 27.19576601, + "end": 27.20580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.20071017, + "coreId": 0, + "status": 0 + }, + { + "start": 27.20575632, + "end": 27.26575658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.20577271, + "end": 27.23574421, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.20580286, + "end": 27.22580298, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.21071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.21572826, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.21575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.22576568, + "coreId": 0, + "status": 0 + }, + { + "start": 27.22580298, + "end": 27.23576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.23071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.23571563, + "coreId": 0, + "status": 0 + }, + { + "start": 27.23576642, + "end": 27.25576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.24580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.245827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.25572846, + "coreId": 0, + "status": 0 + }, + { + "start": 27.25576642, + "end": 27.26580312, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.26070999, + "coreId": 0, + "status": 0 + }, + { + "start": 27.26575658, + "end": 27.42575642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.26577297, + "end": 27.28579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 27.26580312, + "end": 27.27872411, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 27.27071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.27572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.27575344, + "coreId": 0, + "status": 0 + }, + { + "start": 27.27872411, + "end": 27.3057478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 27.28572279, + "coreId": 0, + "status": 0 + }, + { + "start": 27.28770291, + "end": 27.29271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.29572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.30572267, + "coreId": 0, + "status": 0 + }, + { + "start": 27.3057478, + "end": 27.34576075, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 27.30578499, + "end": 27.32579724, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 27.30870291, + "end": 27.31371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.31571024, + "coreId": 0, + "status": 0 + }, + { + "start": 27.31770291, + "end": 27.32576077, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.32571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.32573524, + "coreId": 0, + "status": 0 + }, + { + "start": 27.32770292, + "end": 27.33271108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 27.34576075, + "end": 27.39576604, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 27.34582224, + "end": 27.35576074, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 27.34870297, + "end": 27.35371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.35571024, + "coreId": 0, + "status": 0 + }, + { + "start": 27.35770292, + "end": 27.36576037, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.36571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.36573484, + "coreId": 0, + "status": 0 + }, + { + "start": 27.36770292, + "end": 27.37271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.37575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.38576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.38578984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.3907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.39571551, + "coreId": 0, + "status": 0 + }, + { + "start": 27.39576604, + "end": 27.41576634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.40071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.40576544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.40578977, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.41572833, + "coreId": 0, + "status": 0 + }, + { + "start": 27.41576634, + "end": 27.42580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.42071016, + "coreId": 0, + "status": 0 + }, + { + "start": 27.42575642, + "end": 27.48575617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.42580286, + "end": 27.44583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.43071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.43572853, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.43575343, + "coreId": 0, + "status": 0 + }, + { + "start": 27.44580961, + "end": 27.45574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.44583977, + "end": 27.45576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.45071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.45571567, + "coreId": 0, + "status": 0 + }, + { + "start": 27.45576626, + "end": 27.47576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.46576547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.4657898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.47572832, + "coreId": 0, + "status": 0 + }, + { + "start": 27.47576633, + "end": 27.48580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.48071019, + "coreId": 0, + "status": 0 + }, + { + "start": 27.48577251, + "end": 27.51574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.48580261, + "end": 27.50580305, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.49071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.49572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.49575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.50576565, + "coreId": 0, + "status": 0 + }, + { + "start": 27.50580305, + "end": 27.515766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.51071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.51571551, + "coreId": 0, + "status": 0 + }, + { + "start": 27.515766, + "end": 27.53576658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.52576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.52579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.53572857, + "coreId": 0, + "status": 0 + }, + { + "start": 27.53576658, + "end": 27.54583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.54071016, + "coreId": 0, + "status": 0 + }, + { + "start": 27.54578545, + "end": 27.70575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.54580974, + "end": 27.57574454, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.54583985, + "end": 27.56580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.55071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.55572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.55575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.56576586, + "coreId": 0, + "status": 0 + }, + { + "start": 27.56580326, + "end": 27.57576671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.57071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.57571571, + "coreId": 0, + "status": 0 + }, + { + "start": 27.57574454, + "end": 27.58578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.57576671, + "end": 27.57872421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 27.57872421, + "end": 27.58574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 27.58572266, + "coreId": 0, + "status": 0 + }, + { + "start": 27.58574779, + "end": 27.62574838, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 27.58578499, + "end": 27.59576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 27.58870291, + "end": 27.59371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.59571022, + "coreId": 0, + "status": 0 + }, + { + "start": 27.59770297, + "end": 27.60576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.60571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.60573498, + "coreId": 0, + "status": 0 + }, + { + "start": 27.60870297, + "end": 27.61371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.61571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.62572316, + "coreId": 0, + "status": 0 + }, + { + "start": 27.62574838, + "end": 27.67576605, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 27.62770292, + "end": 27.6327109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.63572304, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.64574751, + "coreId": 0, + "status": 0 + }, + { + "start": 27.6458219, + "end": 27.66579672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 27.64870291, + "end": 27.65371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.6557102, + "coreId": 0, + "status": 0 + }, + { + "start": 27.65870291, + "end": 27.66576035, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.66572265, + "coreId": 0, + "status": 0 + }, + { + "start": 27.66770292, + "end": 27.67271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 27.67576605, + "end": 27.69576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.68071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.68576561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.68578999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.6957282, + "coreId": 0, + "status": 0 + }, + { + "start": 27.69576617, + "end": 27.70580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.70071017, + "coreId": 0, + "status": 0 + }, + { + "start": 27.70575611, + "end": 27.7657561, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.70577245, + "end": 27.7357441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.70580255, + "end": 27.72580287, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.71071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.71572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.71575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.72576557, + "coreId": 0, + "status": 0 + }, + { + "start": 27.72580287, + "end": 27.73576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.73071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.73571552, + "coreId": 0, + "status": 0 + }, + { + "start": 27.73576626, + "end": 27.75576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.74580269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.74582707, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.75572847, + "coreId": 0, + "status": 0 + }, + { + "start": 27.75576644, + "end": 27.76580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.76071019, + "coreId": 0, + "status": 0 + }, + { + "start": 27.7657561, + "end": 27.82575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.76577245, + "end": 27.79574385, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.76580255, + "end": 27.78580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.77071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.77572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.77575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.78576527, + "coreId": 0, + "status": 0 + }, + { + "start": 27.78580257, + "end": 27.79576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.7907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.79571553, + "coreId": 0, + "status": 0 + }, + { + "start": 27.79576601, + "end": 27.81576602, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.8057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.80578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.81572805, + "coreId": 0, + "status": 0 + }, + { + "start": 27.81576602, + "end": 27.82580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.82071016, + "coreId": 0, + "status": 0 + }, + { + "start": 27.82575639, + "end": 27.94579773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.82580283, + "end": 27.84583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.83071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.83572859, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.83575349, + "coreId": 0, + "status": 0 + }, + { + "start": 27.84580975, + "end": 27.85574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.84583986, + "end": 27.85576625, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.85071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.85571567, + "coreId": 0, + "status": 0 + }, + { + "start": 27.85574409, + "end": 27.88578512, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.85576625, + "end": 27.87576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.86576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.86579009, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.87572847, + "coreId": 0, + "status": 0 + }, + { + "start": 27.87576669, + "end": 27.92574824, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 27.87871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.88571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.88573497, + "coreId": 0, + "status": 0 + }, + { + "start": 27.88578512, + "end": 27.90579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 27.88870293, + "end": 27.89371094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.89571003, + "coreId": 0, + "status": 0 + }, + { + "start": 27.89870293, + "end": 27.90576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.90572279, + "coreId": 0, + "status": 0 + }, + { + "start": 27.90770291, + "end": 27.91271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.91572285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.92571004, + "coreId": 0, + "status": 0 + }, + { + "start": 27.92574824, + "end": 27.96574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 27.92578548, + "end": 27.94583377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 27.92870294, + "end": 27.93371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.9357102, + "coreId": 0, + "status": 0 + }, + { + "start": 27.93770291, + "end": 27.9457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.94574757, + "coreId": 0, + "status": 0 + }, + { + "start": 27.94579773, + "end": 27.98575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 27.94770293, + "end": 27.95271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.95572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.96572283, + "coreId": 0, + "status": 0 + }, + { + "start": 27.96574796, + "end": 27.98580288, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 27.96870297, + "end": 27.97371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 27.97575313, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 27.98071019, + "coreId": 0, + "status": 0 + }, + { + "start": 27.98577273, + "end": 28.01574394, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 27.98580288, + "end": 28.00580256, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 27.99071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 27.9957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 27.9957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.00576526, + "coreId": 0, + "status": 0 + }, + { + "start": 28.00580256, + "end": 28.01576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.01071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.01571562, + "coreId": 0, + "status": 0 + }, + { + "start": 28.01576615, + "end": 28.03576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.02576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.02579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.03572847, + "coreId": 0, + "status": 0 + }, + { + "start": 28.03576643, + "end": 28.04583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.04071019, + "coreId": 0, + "status": 0 + }, + { + "start": 28.04578528, + "end": 28.10575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.04580961, + "end": 28.07574397, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.04583977, + "end": 28.06580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.05070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.05572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.05575336, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.06576525, + "coreId": 0, + "status": 0 + }, + { + "start": 28.06580255, + "end": 28.07576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.07071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.07571565, + "coreId": 0, + "status": 0 + }, + { + "start": 28.07574397, + "end": 28.09574385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.07576618, + "end": 28.09576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.08576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.08578975, + "coreId": 0, + "status": 0 + }, + { + "start": 28.09576601, + "end": 28.10580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.10071017, + "coreId": 0, + "status": 0 + }, + { + "start": 28.10575629, + "end": 28.16575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.10577268, + "end": 28.1357442, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.10580283, + "end": 28.12580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.11071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.11572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.11575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.12576573, + "coreId": 0, + "status": 0 + }, + { + "start": 28.12580303, + "end": 28.13576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.13071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.13571562, + "coreId": 0, + "status": 0 + }, + { + "start": 28.13576641, + "end": 28.15576647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.14580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.14582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.15572851, + "coreId": 0, + "status": 0 + }, + { + "start": 28.15576647, + "end": 28.16580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.16070999, + "coreId": 0, + "status": 0 + }, + { + "start": 28.16575655, + "end": 28.3257564, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.16577294, + "end": 28.18579692, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 28.16580309, + "end": 28.17872418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 28.17071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.17572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.17575347, + "coreId": 0, + "status": 0 + }, + { + "start": 28.17872418, + "end": 28.20574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 28.18572284, + "coreId": 0, + "status": 0 + }, + { + "start": 28.18770292, + "end": 28.19271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.19572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.20572262, + "coreId": 0, + "status": 0 + }, + { + "start": 28.20574775, + "end": 28.24576061, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 28.20578494, + "end": 28.22579728, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 28.20870293, + "end": 28.21371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.21571025, + "coreId": 0, + "status": 0 + }, + { + "start": 28.21770293, + "end": 28.22576081, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.22571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.22573528, + "coreId": 0, + "status": 0 + }, + { + "start": 28.22770291, + "end": 28.23271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 28.24576061, + "end": 28.29576603, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 28.24582213, + "end": 28.25576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 28.24870295, + "end": 28.25371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.25571022, + "coreId": 0, + "status": 0 + }, + { + "start": 28.25770295, + "end": 28.26576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.26570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.26573479, + "coreId": 0, + "status": 0 + }, + { + "start": 28.26770294, + "end": 28.27271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.27575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.28576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.28578984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.29071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.29571554, + "coreId": 0, + "status": 0 + }, + { + "start": 28.29576603, + "end": 28.31576636, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.30071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.30576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.30578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.31572835, + "coreId": 0, + "status": 0 + }, + { + "start": 28.31576636, + "end": 28.32580284, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.32071017, + "coreId": 0, + "status": 0 + }, + { + "start": 28.3257564, + "end": 28.38575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.32580284, + "end": 28.34583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.33071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.33572853, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.33575343, + "coreId": 0, + "status": 0 + }, + { + "start": 28.34580968, + "end": 28.35574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.34583983, + "end": 28.3557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.35071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.35571571, + "coreId": 0, + "status": 0 + }, + { + "start": 28.3557663, + "end": 28.37576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.36576541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.36578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.37572832, + "coreId": 0, + "status": 0 + }, + { + "start": 28.37576633, + "end": 28.3858026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.38071019, + "coreId": 0, + "status": 0 + }, + { + "start": 28.3857725, + "end": 28.41574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.3858026, + "end": 28.40580304, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.39071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.39572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.39575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.40576564, + "coreId": 0, + "status": 0 + }, + { + "start": 28.40580304, + "end": 28.415766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.41071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.41571551, + "coreId": 0, + "status": 0 + }, + { + "start": 28.415766, + "end": 28.43576661, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.4257657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.42579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.4357286, + "coreId": 0, + "status": 0 + }, + { + "start": 28.43576661, + "end": 28.44583969, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.44071019, + "coreId": 0, + "status": 0 + }, + { + "start": 28.4457853, + "end": 28.60575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.44580958, + "end": 28.47574454, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.44583969, + "end": 28.46580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.4507102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.45572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.45575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.46576586, + "coreId": 0, + "status": 0 + }, + { + "start": 28.46580326, + "end": 28.47576671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.47071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.47571571, + "coreId": 0, + "status": 0 + }, + { + "start": 28.47574454, + "end": 28.48578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.47576671, + "end": 28.47872413, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 28.47872413, + "end": 28.4857478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 28.48572267, + "coreId": 0, + "status": 0 + }, + { + "start": 28.4857478, + "end": 28.52574838, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 28.48578499, + "end": 28.49576046, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 28.48870291, + "end": 28.49371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.49571021, + "coreId": 0, + "status": 0 + }, + { + "start": 28.49770297, + "end": 28.50576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.50571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.50573498, + "coreId": 0, + "status": 0 + }, + { + "start": 28.50870297, + "end": 28.51371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.51571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.52572316, + "coreId": 0, + "status": 0 + }, + { + "start": 28.52574838, + "end": 28.57576603, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 28.52770292, + "end": 28.53271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.5357231, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.54574758, + "coreId": 0, + "status": 0 + }, + { + "start": 28.54582203, + "end": 28.56579669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 28.54870291, + "end": 28.55371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.55571021, + "coreId": 0, + "status": 0 + }, + { + "start": 28.55870291, + "end": 28.56576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.56572262, + "coreId": 0, + "status": 0 + }, + { + "start": 28.56770294, + "end": 28.57271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 28.57576603, + "end": 28.59576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.58071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.58576561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.58578999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.5957282, + "coreId": 0, + "status": 0 + }, + { + "start": 28.59576617, + "end": 28.60580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.60071017, + "coreId": 0, + "status": 0 + }, + { + "start": 28.60575611, + "end": 28.66575612, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.60577245, + "end": 28.63574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.60580255, + "end": 28.62580284, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.61071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.61572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.61575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.62576554, + "coreId": 0, + "status": 0 + }, + { + "start": 28.62580284, + "end": 28.63576628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.63071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.63571554, + "coreId": 0, + "status": 0 + }, + { + "start": 28.63576628, + "end": 28.65576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.64580262, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.645827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.65572846, + "coreId": 0, + "status": 0 + }, + { + "start": 28.65576643, + "end": 28.66580256, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.66071019, + "coreId": 0, + "status": 0 + }, + { + "start": 28.66575612, + "end": 28.72575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.66577246, + "end": 28.69574385, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.66580256, + "end": 28.68580256, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.67071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.67572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.67575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.68576526, + "coreId": 0, + "status": 0 + }, + { + "start": 28.68580256, + "end": 28.69576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.6907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.69571553, + "coreId": 0, + "status": 0 + }, + { + "start": 28.69576601, + "end": 28.71576603, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.7057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.70578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.71572806, + "coreId": 0, + "status": 0 + }, + { + "start": 28.71576603, + "end": 28.72580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.72071016, + "coreId": 0, + "status": 0 + }, + { + "start": 28.72575637, + "end": 28.84579759, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.72580281, + "end": 28.74584001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.73071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.73572859, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.73575349, + "coreId": 0, + "status": 0 + }, + { + "start": 28.7458099, + "end": 28.75574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.74584001, + "end": 28.7557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.75071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.75571572, + "coreId": 0, + "status": 0 + }, + { + "start": 28.75574414, + "end": 28.78578513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.7557663, + "end": 28.77576672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.7657657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.76579008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.7757285, + "coreId": 0, + "status": 0 + }, + { + "start": 28.77576672, + "end": 28.82574822, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 28.77871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.78571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.78573497, + "coreId": 0, + "status": 0 + }, + { + "start": 28.78578513, + "end": 28.80579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 28.78870292, + "end": 28.79371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.79571004, + "coreId": 0, + "status": 0 + }, + { + "start": 28.79870296, + "end": 28.80576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.80572279, + "coreId": 0, + "status": 0 + }, + { + "start": 28.80770291, + "end": 28.81271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.81572279, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.82571002, + "coreId": 0, + "status": 0 + }, + { + "start": 28.82574822, + "end": 28.86574798, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 28.82578546, + "end": 28.84583362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 28.82870296, + "end": 28.83371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.83571025, + "coreId": 0, + "status": 0 + }, + { + "start": 28.83770295, + "end": 28.84577301, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.84574748, + "coreId": 0, + "status": 0 + }, + { + "start": 28.84579759, + "end": 28.88575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.84770293, + "end": 28.85271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.85572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.86572285, + "coreId": 0, + "status": 0 + }, + { + "start": 28.86574798, + "end": 28.88580288, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 28.86870293, + "end": 28.87371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.87575313, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 28.88071019, + "coreId": 0, + "status": 0 + }, + { + "start": 28.88577273, + "end": 28.91574395, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.88580288, + "end": 28.90580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.89071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.8957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.8957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.90576525, + "coreId": 0, + "status": 0 + }, + { + "start": 28.90580255, + "end": 28.91576616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.91071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.91571563, + "coreId": 0, + "status": 0 + }, + { + "start": 28.91576616, + "end": 28.93576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.9257657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.92579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.93572848, + "coreId": 0, + "status": 0 + }, + { + "start": 28.93576644, + "end": 28.94583984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.94071019, + "coreId": 0, + "status": 0 + }, + { + "start": 28.94578536, + "end": 29.00575634, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 28.94580969, + "end": 28.97574397, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.94583984, + "end": 28.96580256, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.95070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.95572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.95575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.96576525, + "coreId": 0, + "status": 0 + }, + { + "start": 28.96580256, + "end": 28.97576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 28.97071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 28.97571565, + "coreId": 0, + "status": 0 + }, + { + "start": 28.97574397, + "end": 28.99574384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 28.97576618, + "end": 28.995766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 28.98576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 28.98578975, + "coreId": 0, + "status": 0 + }, + { + "start": 28.995766, + "end": 29.00580288, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.00071019, + "coreId": 0, + "status": 0 + }, + { + "start": 29.00575634, + "end": 29.06575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.00577273, + "end": 29.0357442, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.00580288, + "end": 29.02580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.01071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.01572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.01575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.02576571, + "coreId": 0, + "status": 0 + }, + { + "start": 29.02580301, + "end": 29.03576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.03071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.03571562, + "coreId": 0, + "status": 0 + }, + { + "start": 29.03576641, + "end": 29.05576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.04580264, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.04582697, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.05572849, + "coreId": 0, + "status": 0 + }, + { + "start": 29.05576645, + "end": 29.06580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.06071004, + "coreId": 0, + "status": 0 + }, + { + "start": 29.06575655, + "end": 29.22575643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.06577294, + "end": 29.0857969, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 29.06580309, + "end": 29.07872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 29.07071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.07572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.07575347, + "coreId": 0, + "status": 0 + }, + { + "start": 29.07872412, + "end": 29.10574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 29.08572283, + "coreId": 0, + "status": 0 + }, + { + "start": 29.08770295, + "end": 29.09271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.09572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.10572262, + "coreId": 0, + "status": 0 + }, + { + "start": 29.10574775, + "end": 29.14576071, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 29.10578494, + "end": 29.12579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 29.10870292, + "end": 29.11371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.11571025, + "coreId": 0, + "status": 0 + }, + { + "start": 29.11770294, + "end": 29.12576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.12570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.12573523, + "coreId": 0, + "status": 0 + }, + { + "start": 29.12770293, + "end": 29.13271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 29.14576071, + "end": 29.19576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 29.14582229, + "end": 29.1557607, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 29.14870295, + "end": 29.15371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.1557102, + "coreId": 0, + "status": 0 + }, + { + "start": 29.15770293, + "end": 29.16576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.16570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.16573479, + "coreId": 0, + "status": 0 + }, + { + "start": 29.16770294, + "end": 29.17271093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.17575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.18576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.18578984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.1907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.19571552, + "coreId": 0, + "status": 0 + }, + { + "start": 29.19576601, + "end": 29.21576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.20071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.20576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.20578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.2157283, + "coreId": 0, + "status": 0 + }, + { + "start": 29.21576631, + "end": 29.22580287, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.22071016, + "coreId": 0, + "status": 0 + }, + { + "start": 29.22575643, + "end": 29.28575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.22580287, + "end": 29.24583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.23071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.23572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.23575337, + "coreId": 0, + "status": 0 + }, + { + "start": 29.24580961, + "end": 29.2557441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.24583977, + "end": 29.25576627, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.25071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.25571568, + "coreId": 0, + "status": 0 + }, + { + "start": 29.25576627, + "end": 29.27576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.26576547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.2657898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.27572832, + "coreId": 0, + "status": 0 + }, + { + "start": 29.27576633, + "end": 29.28580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.28071021, + "coreId": 0, + "status": 0 + }, + { + "start": 29.28577245, + "end": 29.31574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.28580255, + "end": 29.30580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.29071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.29572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.29575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.30576563, + "coreId": 0, + "status": 0 + }, + { + "start": 29.30580303, + "end": 29.315766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.31071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.31571551, + "coreId": 0, + "status": 0 + }, + { + "start": 29.315766, + "end": 29.3357666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.32576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.32579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.33572859, + "coreId": 0, + "status": 0 + }, + { + "start": 29.3357666, + "end": 29.34583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.34071019, + "coreId": 0, + "status": 0 + }, + { + "start": 29.34578545, + "end": 29.50575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.34580974, + "end": 29.37574453, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.34583985, + "end": 29.36580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.35071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.35572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.35575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.36576586, + "coreId": 0, + "status": 0 + }, + { + "start": 29.36580326, + "end": 29.3757667, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.37070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.3757157, + "coreId": 0, + "status": 0 + }, + { + "start": 29.37574453, + "end": 29.38578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.3757667, + "end": 29.37872422, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 29.37872422, + "end": 29.38574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 29.38572266, + "coreId": 0, + "status": 0 + }, + { + "start": 29.38574779, + "end": 29.4257484, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 29.38578499, + "end": 29.39576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 29.38870291, + "end": 29.39371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.39571022, + "coreId": 0, + "status": 0 + }, + { + "start": 29.39770297, + "end": 29.40576053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.4057102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.405735, + "coreId": 0, + "status": 0 + }, + { + "start": 29.40870291, + "end": 29.41371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.41571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.42572318, + "coreId": 0, + "status": 0 + }, + { + "start": 29.4257484, + "end": 29.47576606, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 29.42770294, + "end": 29.43271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.43572304, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.44574751, + "coreId": 0, + "status": 0 + }, + { + "start": 29.4458219, + "end": 29.46579669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 29.44870291, + "end": 29.45371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.4557102, + "coreId": 0, + "status": 0 + }, + { + "start": 29.45870295, + "end": 29.46576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.46572262, + "coreId": 0, + "status": 0 + }, + { + "start": 29.46770295, + "end": 29.47271106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 29.47576606, + "end": 29.49576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.48071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.48576564, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.48579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.4957282, + "coreId": 0, + "status": 0 + }, + { + "start": 29.49576617, + "end": 29.50580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.50071016, + "coreId": 0, + "status": 0 + }, + { + "start": 29.50575611, + "end": 29.5657561, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.50577245, + "end": 29.5357441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.50580255, + "end": 29.52580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.51071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.51572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.51575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.52576551, + "coreId": 0, + "status": 0 + }, + { + "start": 29.52580281, + "end": 29.53576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.53071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.53571552, + "coreId": 0, + "status": 0 + }, + { + "start": 29.53576626, + "end": 29.55576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.5458027, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.54582708, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.55572848, + "coreId": 0, + "status": 0 + }, + { + "start": 29.55576645, + "end": 29.56580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.56071016, + "coreId": 0, + "status": 0 + }, + { + "start": 29.5657561, + "end": 29.62575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.56577245, + "end": 29.59574385, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.56580255, + "end": 29.58580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.57071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.57572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.57575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.58576525, + "coreId": 0, + "status": 0 + }, + { + "start": 29.58580255, + "end": 29.59576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.59071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.59571553, + "coreId": 0, + "status": 0 + }, + { + "start": 29.59576601, + "end": 29.61576603, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.6057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.60578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.61572806, + "coreId": 0, + "status": 0 + }, + { + "start": 29.61576603, + "end": 29.62580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.62071016, + "coreId": 0, + "status": 0 + }, + { + "start": 29.62575639, + "end": 29.74579773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.62580283, + "end": 29.64583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.63071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.63572862, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.63575352, + "coreId": 0, + "status": 0 + }, + { + "start": 29.64580975, + "end": 29.65574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.64583986, + "end": 29.65576625, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.65071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.65571567, + "coreId": 0, + "status": 0 + }, + { + "start": 29.65574409, + "end": 29.68578513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.65576625, + "end": 29.67576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.66576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.66579007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.67572846, + "coreId": 0, + "status": 0 + }, + { + "start": 29.67576668, + "end": 29.72574825, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 29.67871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.68571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.68573498, + "coreId": 0, + "status": 0 + }, + { + "start": 29.68578513, + "end": 29.70579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 29.68870292, + "end": 29.69371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.69571003, + "coreId": 0, + "status": 0 + }, + { + "start": 29.69870297, + "end": 29.70576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.70572279, + "coreId": 0, + "status": 0 + }, + { + "start": 29.70770291, + "end": 29.71271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.71572284, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.72571005, + "coreId": 0, + "status": 0 + }, + { + "start": 29.72574825, + "end": 29.76574797, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 29.72578549, + "end": 29.74583377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 29.72870295, + "end": 29.7337111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.73571024, + "coreId": 0, + "status": 0 + }, + { + "start": 29.73770293, + "end": 29.7457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.74574757, + "coreId": 0, + "status": 0 + }, + { + "start": 29.74579773, + "end": 29.78575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.74770293, + "end": 29.75271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.75572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.76572284, + "coreId": 0, + "status": 0 + }, + { + "start": 29.76574797, + "end": 29.78580288, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 29.76870293, + "end": 29.77371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.77575313, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 29.78071019, + "coreId": 0, + "status": 0 + }, + { + "start": 29.78577273, + "end": 29.81574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.78580288, + "end": 29.80580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.79071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.7957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.7957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.80576525, + "coreId": 0, + "status": 0 + }, + { + "start": 29.80580255, + "end": 29.81576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.81071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.81571564, + "coreId": 0, + "status": 0 + }, + { + "start": 29.81576617, + "end": 29.83576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.82576573, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.82579006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.8357285, + "coreId": 0, + "status": 0 + }, + { + "start": 29.83576646, + "end": 29.8458398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.84071019, + "coreId": 0, + "status": 0 + }, + { + "start": 29.84578531, + "end": 29.90575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.84580964, + "end": 29.87574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.8458398, + "end": 29.86580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.85071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.85572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.85575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.86576527, + "coreId": 0, + "status": 0 + }, + { + "start": 29.86580257, + "end": 29.87576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.87071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.87571564, + "coreId": 0, + "status": 0 + }, + { + "start": 29.87574396, + "end": 29.89574385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.87576617, + "end": 29.89576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.88576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.88578975, + "coreId": 0, + "status": 0 + }, + { + "start": 29.89576601, + "end": 29.90580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.90071017, + "coreId": 0, + "status": 0 + }, + { + "start": 29.90575629, + "end": 29.96575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.90577268, + "end": 29.93574421, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 29.90580283, + "end": 29.92580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.91071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.91572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.91575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.92576573, + "coreId": 0, + "status": 0 + }, + { + "start": 29.92580303, + "end": 29.93576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.93071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.93571563, + "coreId": 0, + "status": 0 + }, + { + "start": 29.93576642, + "end": 29.95576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 29.94580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.94582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.95572849, + "coreId": 0, + "status": 0 + }, + { + "start": 29.95576645, + "end": 29.96580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.96071004, + "coreId": 0, + "status": 0 + }, + { + "start": 29.96575655, + "end": 30.12575642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 29.96577294, + "end": 29.98579687, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 29.96580309, + "end": 29.97872418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 29.97071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 29.97572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 29.97575347, + "coreId": 0, + "status": 0 + }, + { + "start": 29.97872418, + "end": 30.00574776, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 29.98572279, + "coreId": 0, + "status": 0 + }, + { + "start": 29.98770296, + "end": 29.99271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 29.99572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.00572263, + "coreId": 0, + "status": 0 + }, + { + "start": 30.00574776, + "end": 30.04576061, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 30.00578495, + "end": 30.02579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 30.00870292, + "end": 30.01371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.01571024, + "coreId": 0, + "status": 0 + }, + { + "start": 30.01770294, + "end": 30.02576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.02570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.02573523, + "coreId": 0, + "status": 0 + }, + { + "start": 30.02770294, + "end": 30.03271106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 30.04576061, + "end": 30.095766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 30.04582213, + "end": 30.05576073, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 30.04870296, + "end": 30.05371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.05571023, + "coreId": 0, + "status": 0 + }, + { + "start": 30.05770297, + "end": 30.06576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.06570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.06573479, + "coreId": 0, + "status": 0 + }, + { + "start": 30.06770295, + "end": 30.07271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.07575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.08576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.08578984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.0907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.09571551, + "coreId": 0, + "status": 0 + }, + { + "start": 30.095766, + "end": 30.11576634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.10071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.10576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.10578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.11572833, + "coreId": 0, + "status": 0 + }, + { + "start": 30.11576634, + "end": 30.12580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.12071016, + "coreId": 0, + "status": 0 + }, + { + "start": 30.12575642, + "end": 30.18575617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 30.12580286, + "end": 30.14583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.13071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.13572853, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.13575343, + "coreId": 0, + "status": 0 + }, + { + "start": 30.14580968, + "end": 30.15574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.14583983, + "end": 30.15576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.15071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.15571567, + "coreId": 0, + "status": 0 + }, + { + "start": 30.15576626, + "end": 30.17576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.16576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.1657898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.17572832, + "coreId": 0, + "status": 0 + }, + { + "start": 30.17576633, + "end": 30.18580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.18071019, + "coreId": 0, + "status": 0 + }, + { + "start": 30.18577251, + "end": 30.21574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.18580261, + "end": 30.20580305, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.19071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.19572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.19575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.20576565, + "coreId": 0, + "status": 0 + }, + { + "start": 30.20580305, + "end": 30.215766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.21071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.21571551, + "coreId": 0, + "status": 0 + }, + { + "start": 30.215766, + "end": 30.2357666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.22576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.22579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.23572859, + "coreId": 0, + "status": 0 + }, + { + "start": 30.2357666, + "end": 30.2458397, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.24071019, + "coreId": 0, + "status": 0 + }, + { + "start": 30.24578531, + "end": 30.40575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 30.24580959, + "end": 30.27574452, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.2458397, + "end": 30.26580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.25071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.25572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.25575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.26576586, + "coreId": 0, + "status": 0 + }, + { + "start": 30.26580326, + "end": 30.27576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.27070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.27571569, + "coreId": 0, + "status": 0 + }, + { + "start": 30.27574452, + "end": 30.28578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.27576669, + "end": 30.27872415, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 30.27872415, + "end": 30.2857478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 30.28572267, + "coreId": 0, + "status": 0 + }, + { + "start": 30.2857478, + "end": 30.3257484, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 30.28578499, + "end": 30.29576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 30.28870291, + "end": 30.29371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.29571022, + "coreId": 0, + "status": 0 + }, + { + "start": 30.29770297, + "end": 30.3057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.30571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.30573497, + "coreId": 0, + "status": 0 + }, + { + "start": 30.30870297, + "end": 30.31371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.31571007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.32572318, + "coreId": 0, + "status": 0 + }, + { + "start": 30.3257484, + "end": 30.37576605, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 30.32770293, + "end": 30.33271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.3357231, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.34574757, + "coreId": 0, + "status": 0 + }, + { + "start": 30.34582202, + "end": 30.36579669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 30.34870292, + "end": 30.35371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.35571022, + "coreId": 0, + "status": 0 + }, + { + "start": 30.35870292, + "end": 30.36576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.36572262, + "coreId": 0, + "status": 0 + }, + { + "start": 30.36770294, + "end": 30.37271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 30.37576605, + "end": 30.39576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.38071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.38576561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.38578999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.3957282, + "coreId": 0, + "status": 0 + }, + { + "start": 30.39576617, + "end": 30.40580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.40071017, + "coreId": 0, + "status": 0 + }, + { + "start": 30.40575611, + "end": 30.46575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 30.40577245, + "end": 30.43574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.40580255, + "end": 30.42580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.41071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.41572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.41575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.42576553, + "coreId": 0, + "status": 0 + }, + { + "start": 30.42580283, + "end": 30.43576628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.43071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.43571554, + "coreId": 0, + "status": 0 + }, + { + "start": 30.43576628, + "end": 30.45576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.44580262, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.445827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.45572846, + "coreId": 0, + "status": 0 + }, + { + "start": 30.45576643, + "end": 30.46580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.46071018, + "coreId": 0, + "status": 0 + }, + { + "start": 30.46575611, + "end": 30.52575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 30.46577245, + "end": 30.49574385, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.46580255, + "end": 30.48580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.47071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.47572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.47575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.48576525, + "coreId": 0, + "status": 0 + }, + { + "start": 30.48580255, + "end": 30.49576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.49071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.49571553, + "coreId": 0, + "status": 0 + }, + { + "start": 30.49576601, + "end": 30.51576602, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.5057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.50578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.51572805, + "coreId": 0, + "status": 0 + }, + { + "start": 30.51576602, + "end": 30.52580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.52071016, + "coreId": 0, + "status": 0 + }, + { + "start": 30.52575639, + "end": 30.64579759, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 30.52580283, + "end": 30.54584001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.53071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.53572859, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.53575349, + "coreId": 0, + "status": 0 + }, + { + "start": 30.5458099, + "end": 30.55574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.54584001, + "end": 30.5557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.55071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.55571572, + "coreId": 0, + "status": 0 + }, + { + "start": 30.55574414, + "end": 30.58578513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.5557663, + "end": 30.57576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.5657657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.56579008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.57572847, + "coreId": 0, + "status": 0 + }, + { + "start": 30.57576669, + "end": 30.62574824, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 30.57871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.58571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.58573497, + "coreId": 0, + "status": 0 + }, + { + "start": 30.58578513, + "end": 30.60579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 30.58870293, + "end": 30.59371094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.59571003, + "coreId": 0, + "status": 0 + }, + { + "start": 30.59870293, + "end": 30.60576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.60572279, + "coreId": 0, + "status": 0 + }, + { + "start": 30.60770291, + "end": 30.61271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.61572285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.62571004, + "coreId": 0, + "status": 0 + }, + { + "start": 30.62574824, + "end": 30.66574797, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 30.62578548, + "end": 30.64583362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 30.62870295, + "end": 30.6337111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.63571021, + "coreId": 0, + "status": 0 + }, + { + "start": 30.63770291, + "end": 30.64577301, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.64574748, + "coreId": 0, + "status": 0 + }, + { + "start": 30.64579759, + "end": 30.68575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 30.64770293, + "end": 30.65271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.65572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.66572284, + "coreId": 0, + "status": 0 + }, + { + "start": 30.66574797, + "end": 30.68580288, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 30.66870293, + "end": 30.67371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.67575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.68071019, + "coreId": 0, + "status": 0 + }, + { + "start": 30.68577273, + "end": 30.71574393, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.68580288, + "end": 30.70580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.69071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.6957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.6957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.70576525, + "coreId": 0, + "status": 0 + }, + { + "start": 30.70580255, + "end": 30.71576614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.71071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.71571561, + "coreId": 0, + "status": 0 + }, + { + "start": 30.71576614, + "end": 30.73576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.72576572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.72579005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.73572847, + "coreId": 0, + "status": 0 + }, + { + "start": 30.73576643, + "end": 30.74583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.74071019, + "coreId": 0, + "status": 0 + }, + { + "start": 30.74578535, + "end": 30.80575634, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 30.74580968, + "end": 30.77574397, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.74583983, + "end": 30.76580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.75071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.75572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.75575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.76576524, + "coreId": 0, + "status": 0 + }, + { + "start": 30.76580255, + "end": 30.77576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.77071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.77571565, + "coreId": 0, + "status": 0 + }, + { + "start": 30.77574397, + "end": 30.79574385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.77576618, + "end": 30.79576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.78576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.78578975, + "coreId": 0, + "status": 0 + }, + { + "start": 30.79576601, + "end": 30.80580288, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.8007102, + "coreId": 0, + "status": 0 + }, + { + "start": 30.80575634, + "end": 30.86575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 30.80577273, + "end": 30.8357442, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 30.80580288, + "end": 30.82580306, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.81070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.81572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.81575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.82576572, + "coreId": 0, + "status": 0 + }, + { + "start": 30.82580306, + "end": 30.83576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.83071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.83571562, + "coreId": 0, + "status": 0 + }, + { + "start": 30.83576641, + "end": 30.85576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.84580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.845827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.85572846, + "coreId": 0, + "status": 0 + }, + { + "start": 30.85576642, + "end": 30.86580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.86071004, + "coreId": 0, + "status": 0 + }, + { + "start": 30.86575655, + "end": 31.02575642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 30.86577294, + "end": 30.88579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 30.86580309, + "end": 30.87872409, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 30.87071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.87572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.87575347, + "coreId": 0, + "status": 0 + }, + { + "start": 30.87872409, + "end": 30.90574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 30.88572279, + "coreId": 0, + "status": 0 + }, + { + "start": 30.88770295, + "end": 30.89271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.89572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.90572262, + "coreId": 0, + "status": 0 + }, + { + "start": 30.90574775, + "end": 30.9457607, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 30.90578494, + "end": 30.92579724, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 30.90870293, + "end": 30.91371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.91571025, + "coreId": 0, + "status": 0 + }, + { + "start": 30.91770293, + "end": 30.92576077, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.92570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.92573524, + "coreId": 0, + "status": 0 + }, + { + "start": 30.92770295, + "end": 30.93271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 30.9457607, + "end": 30.995766, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 30.94582228, + "end": 30.95576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 30.94870296, + "end": 30.95371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.95571022, + "coreId": 0, + "status": 0 + }, + { + "start": 30.95770295, + "end": 30.96576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 30.96570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.96573479, + "coreId": 0, + "status": 0 + }, + { + "start": 30.96770294, + "end": 30.9727109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 30.97575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.98576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 30.98578983, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 30.99071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 30.99571551, + "coreId": 0, + "status": 0 + }, + { + "start": 30.995766, + "end": 31.01576635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.00071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.00576547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.0057898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.01572834, + "coreId": 0, + "status": 0 + }, + { + "start": 31.01576635, + "end": 31.02580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.02071016, + "coreId": 0, + "status": 0 + }, + { + "start": 31.02575642, + "end": 31.08575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.02580286, + "end": 31.04583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.03071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.03572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.03575337, + "coreId": 0, + "status": 0 + }, + { + "start": 31.04580961, + "end": 31.05574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.04583977, + "end": 31.05576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.05071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.05571567, + "coreId": 0, + "status": 0 + }, + { + "start": 31.05576626, + "end": 31.07576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.06576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.06578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.07572832, + "coreId": 0, + "status": 0 + }, + { + "start": 31.07576633, + "end": 31.0858026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.08071021, + "coreId": 0, + "status": 0 + }, + { + "start": 31.0857725, + "end": 31.11574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.0858026, + "end": 31.10580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.09071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.09572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.09575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.10576563, + "coreId": 0, + "status": 0 + }, + { + "start": 31.10580303, + "end": 31.11576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.1107102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.11571552, + "coreId": 0, + "status": 0 + }, + { + "start": 31.11576601, + "end": 31.13576659, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.12576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.12579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.13572858, + "coreId": 0, + "status": 0 + }, + { + "start": 31.13576659, + "end": 31.14583984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.14071016, + "coreId": 0, + "status": 0 + }, + { + "start": 31.14578544, + "end": 31.30575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.14580973, + "end": 31.17574454, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.14583984, + "end": 31.16580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.15071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.15572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.15575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.16576586, + "coreId": 0, + "status": 0 + }, + { + "start": 31.16580326, + "end": 31.17576671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.17071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.17571571, + "coreId": 0, + "status": 0 + }, + { + "start": 31.17574454, + "end": 31.18578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.17576671, + "end": 31.17872422, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 31.17872422, + "end": 31.18574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 31.18572266, + "coreId": 0, + "status": 0 + }, + { + "start": 31.18574779, + "end": 31.22574837, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 31.18578499, + "end": 31.19576046, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 31.18870291, + "end": 31.19371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.19571021, + "coreId": 0, + "status": 0 + }, + { + "start": 31.19770297, + "end": 31.20576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.20571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.20573498, + "coreId": 0, + "status": 0 + }, + { + "start": 31.20870297, + "end": 31.2137109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.21571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.22572315, + "coreId": 0, + "status": 0 + }, + { + "start": 31.22574837, + "end": 31.27576603, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 31.22770291, + "end": 31.23271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.23572305, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.24574749, + "coreId": 0, + "status": 0 + }, + { + "start": 31.24582188, + "end": 31.26579669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 31.24870293, + "end": 31.25371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.25571021, + "coreId": 0, + "status": 0 + }, + { + "start": 31.25870291, + "end": 31.26576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.26572262, + "coreId": 0, + "status": 0 + }, + { + "start": 31.26770294, + "end": 31.27271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 31.27576603, + "end": 31.29576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.28071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.28576561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.28578999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.2957282, + "coreId": 0, + "status": 0 + }, + { + "start": 31.29576617, + "end": 31.30580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.30071017, + "coreId": 0, + "status": 0 + }, + { + "start": 31.30575611, + "end": 31.3657561, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.30577245, + "end": 31.33574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.30580255, + "end": 31.32580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.31071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.31572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.31575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.32576551, + "coreId": 0, + "status": 0 + }, + { + "start": 31.32580281, + "end": 31.33576628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.33071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.33571554, + "coreId": 0, + "status": 0 + }, + { + "start": 31.33576628, + "end": 31.35576648, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.3458027, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.34582708, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.35572851, + "coreId": 0, + "status": 0 + }, + { + "start": 31.35576648, + "end": 31.36580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.36071016, + "coreId": 0, + "status": 0 + }, + { + "start": 31.3657561, + "end": 31.42575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.36577245, + "end": 31.39574385, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.36580255, + "end": 31.38580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.37071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.37572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.37575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.38576528, + "coreId": 0, + "status": 0 + }, + { + "start": 31.38580258, + "end": 31.39576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.3907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.39571553, + "coreId": 0, + "status": 0 + }, + { + "start": 31.39576601, + "end": 31.415766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.4057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.40578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.41572803, + "coreId": 0, + "status": 0 + }, + { + "start": 31.415766, + "end": 31.42580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.42071016, + "coreId": 0, + "status": 0 + }, + { + "start": 31.42575637, + "end": 31.54579773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.42580281, + "end": 31.44583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.43071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.43572859, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.43575349, + "coreId": 0, + "status": 0 + }, + { + "start": 31.44580975, + "end": 31.45574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.44583986, + "end": 31.45576625, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.45071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.45571567, + "coreId": 0, + "status": 0 + }, + { + "start": 31.45574409, + "end": 31.48578513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.45576625, + "end": 31.47576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.4657657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.46579008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.47572847, + "coreId": 0, + "status": 0 + }, + { + "start": 31.47576669, + "end": 31.52574823, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 31.47871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.48571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.48573498, + "coreId": 0, + "status": 0 + }, + { + "start": 31.48578513, + "end": 31.50579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 31.48870292, + "end": 31.49371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.49571004, + "coreId": 0, + "status": 0 + }, + { + "start": 31.49870296, + "end": 31.50576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.50572279, + "coreId": 0, + "status": 0 + }, + { + "start": 31.50770291, + "end": 31.51271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.51572279, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.52571003, + "coreId": 0, + "status": 0 + }, + { + "start": 31.52574823, + "end": 31.56574798, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 31.52578547, + "end": 31.54583377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 31.52870294, + "end": 31.53371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.53571026, + "coreId": 0, + "status": 0 + }, + { + "start": 31.53770292, + "end": 31.5457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.54574757, + "coreId": 0, + "status": 0 + }, + { + "start": 31.54579773, + "end": 31.58575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.54770293, + "end": 31.55271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.55572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.56572285, + "coreId": 0, + "status": 0 + }, + { + "start": 31.56574798, + "end": 31.58580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 31.56870293, + "end": 31.57371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.57575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.58071019, + "coreId": 0, + "status": 0 + }, + { + "start": 31.58577268, + "end": 31.61574394, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.58580283, + "end": 31.60580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.59071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.5957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.5957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.60576525, + "coreId": 0, + "status": 0 + }, + { + "start": 31.60580255, + "end": 31.61576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.61071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.61571562, + "coreId": 0, + "status": 0 + }, + { + "start": 31.61576615, + "end": 31.63576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.6257657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.62579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.63572848, + "coreId": 0, + "status": 0 + }, + { + "start": 31.63576644, + "end": 31.64583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.64071018, + "coreId": 0, + "status": 0 + }, + { + "start": 31.64578528, + "end": 31.70575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.64580961, + "end": 31.67574398, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.64583977, + "end": 31.66580256, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.65070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.65572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.65575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.66576526, + "coreId": 0, + "status": 0 + }, + { + "start": 31.66580256, + "end": 31.67576619, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.67071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.67571566, + "coreId": 0, + "status": 0 + }, + { + "start": 31.67574398, + "end": 31.69574384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.67576619, + "end": 31.695766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.68576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.68578975, + "coreId": 0, + "status": 0 + }, + { + "start": 31.695766, + "end": 31.70580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.70071019, + "coreId": 0, + "status": 0 + }, + { + "start": 31.70575629, + "end": 31.76575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.70577268, + "end": 31.7357442, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.70580283, + "end": 31.72580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.71071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.71572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.71575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.72576571, + "coreId": 0, + "status": 0 + }, + { + "start": 31.72580301, + "end": 31.73576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.73071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.73571562, + "coreId": 0, + "status": 0 + }, + { + "start": 31.73576641, + "end": 31.75576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.74580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.74582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.75572849, + "coreId": 0, + "status": 0 + }, + { + "start": 31.75576645, + "end": 31.76580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.76071004, + "coreId": 0, + "status": 0 + }, + { + "start": 31.76575655, + "end": 31.92575642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.76577294, + "end": 31.78579692, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 31.76580309, + "end": 31.77872418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 31.77071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.77572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.77575347, + "coreId": 0, + "status": 0 + }, + { + "start": 31.77872418, + "end": 31.80574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 31.78572284, + "coreId": 0, + "status": 0 + }, + { + "start": 31.78770292, + "end": 31.7927109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.79572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.80572262, + "coreId": 0, + "status": 0 + }, + { + "start": 31.80574775, + "end": 31.84576062, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 31.80578494, + "end": 31.82579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 31.80870292, + "end": 31.81371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.81571025, + "coreId": 0, + "status": 0 + }, + { + "start": 31.81770294, + "end": 31.82576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.82570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.82573523, + "coreId": 0, + "status": 0 + }, + { + "start": 31.82770293, + "end": 31.83271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 31.84576062, + "end": 31.89576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 31.84582214, + "end": 31.85576071, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 31.84870295, + "end": 31.85371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.85571021, + "coreId": 0, + "status": 0 + }, + { + "start": 31.85770295, + "end": 31.86576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.86570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.86573479, + "coreId": 0, + "status": 0 + }, + { + "start": 31.86770294, + "end": 31.87271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.87575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.88576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.88578984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 31.8907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.89571552, + "coreId": 0, + "status": 0 + }, + { + "start": 31.89576601, + "end": 31.91576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.90071005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.90576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.90578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.9157283, + "coreId": 0, + "status": 0 + }, + { + "start": 31.91576631, + "end": 31.92580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.92071016, + "coreId": 0, + "status": 0 + }, + { + "start": 31.92575642, + "end": 31.98575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 31.92580286, + "end": 31.94583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.93071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.93572851, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.93575341, + "coreId": 0, + "status": 0 + }, + { + "start": 31.94580968, + "end": 31.95574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.94583983, + "end": 31.95576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.9507102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.95571567, + "coreId": 0, + "status": 0 + }, + { + "start": 31.95576626, + "end": 31.97576632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 31.96576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.9657898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.97572831, + "coreId": 0, + "status": 0 + }, + { + "start": 31.97576632, + "end": 31.98580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.98071019, + "coreId": 0, + "status": 0 + }, + { + "start": 31.98577245, + "end": 32.01574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 31.98580255, + "end": 32.00580304, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 31.99071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 31.99572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 31.99575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.00576564, + "coreId": 0, + "status": 0 + }, + { + "start": 32.00580304, + "end": 32.015766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.01071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.01571551, + "coreId": 0, + "status": 0 + }, + { + "start": 32.015766, + "end": 32.0357666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.02576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.02579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.03572859, + "coreId": 0, + "status": 0 + }, + { + "start": 32.0357666, + "end": 32.0458397, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.04071019, + "coreId": 0, + "status": 0 + }, + { + "start": 32.04578531, + "end": 32.20575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.04580959, + "end": 32.07574453, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.0458397, + "end": 32.06580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.05071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.05572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.05575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.06576586, + "coreId": 0, + "status": 0 + }, + { + "start": 32.06580326, + "end": 32.0757667, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.07070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.0757157, + "coreId": 0, + "status": 0 + }, + { + "start": 32.07574453, + "end": 32.08578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.0757667, + "end": 32.07872413, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 32.07872413, + "end": 32.0857478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 32.08572267, + "coreId": 0, + "status": 0 + }, + { + "start": 32.0857478, + "end": 32.12574841, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 32.08578499, + "end": 32.09576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 32.08870291, + "end": 32.09371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.09571022, + "coreId": 0, + "status": 0 + }, + { + "start": 32.09770297, + "end": 32.10576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.10571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.10573498, + "coreId": 0, + "status": 0 + }, + { + "start": 32.10870297, + "end": 32.11371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.11571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.12572319, + "coreId": 0, + "status": 0 + }, + { + "start": 32.12574841, + "end": 32.17576603, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 32.12770295, + "end": 32.13271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.13572307, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.1457476, + "coreId": 0, + "status": 0 + }, + { + "start": 32.14582205, + "end": 32.16579671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 32.14870292, + "end": 32.15371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.1557102, + "coreId": 0, + "status": 0 + }, + { + "start": 32.15870295, + "end": 32.16576034, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.16572264, + "coreId": 0, + "status": 0 + }, + { + "start": 32.16770292, + "end": 32.17271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 32.17576603, + "end": 32.19576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.18071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.18576564, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.18579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.19572821, + "coreId": 0, + "status": 0 + }, + { + "start": 32.19576618, + "end": 32.20580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.20071019, + "coreId": 0, + "status": 0 + }, + { + "start": 32.20575611, + "end": 32.26575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.20577245, + "end": 32.23574415, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.20580255, + "end": 32.22580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.21071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.21572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.21575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.22576551, + "coreId": 0, + "status": 0 + }, + { + "start": 32.22580281, + "end": 32.23576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.23071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.23571557, + "coreId": 0, + "status": 0 + }, + { + "start": 32.23576631, + "end": 32.25576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.24580262, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.245827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.25572846, + "coreId": 0, + "status": 0 + }, + { + "start": 32.25576643, + "end": 32.26580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.26071016, + "coreId": 0, + "status": 0 + }, + { + "start": 32.26575611, + "end": 32.32575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.26577245, + "end": 32.29574385, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.26580255, + "end": 32.28580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.27071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.27572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.27575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.28576527, + "coreId": 0, + "status": 0 + }, + { + "start": 32.28580257, + "end": 32.29576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.2907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.29571553, + "coreId": 0, + "status": 0 + }, + { + "start": 32.29576601, + "end": 32.31576603, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.3057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.30578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.31572806, + "coreId": 0, + "status": 0 + }, + { + "start": 32.31576603, + "end": 32.32580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.32071016, + "coreId": 0, + "status": 0 + }, + { + "start": 32.32575639, + "end": 32.44579764, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.32580283, + "end": 32.34584001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.33071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.33572862, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.33575353, + "coreId": 0, + "status": 0 + }, + { + "start": 32.3458099, + "end": 32.35574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.34584001, + "end": 32.3557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.35071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.35571572, + "coreId": 0, + "status": 0 + }, + { + "start": 32.35574414, + "end": 32.38578513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.3557663, + "end": 32.37576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.36576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.36579007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.37572847, + "coreId": 0, + "status": 0 + }, + { + "start": 32.37576669, + "end": 32.42574825, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 32.37871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.38571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.38573497, + "coreId": 0, + "status": 0 + }, + { + "start": 32.38578513, + "end": 32.40579688, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 32.38870293, + "end": 32.39371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.39571003, + "coreId": 0, + "status": 0 + }, + { + "start": 32.39870297, + "end": 32.40576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.40572281, + "coreId": 0, + "status": 0 + }, + { + "start": 32.40770291, + "end": 32.41271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.41572284, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.42571005, + "coreId": 0, + "status": 0 + }, + { + "start": 32.42574825, + "end": 32.46574798, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 32.42578549, + "end": 32.44583367, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 32.42870295, + "end": 32.43371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.43571024, + "coreId": 0, + "status": 0 + }, + { + "start": 32.43770293, + "end": 32.44577301, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.44574748, + "coreId": 0, + "status": 0 + }, + { + "start": 32.44579764, + "end": 32.48575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.44770294, + "end": 32.45271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.45572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.46572285, + "coreId": 0, + "status": 0 + }, + { + "start": 32.46574798, + "end": 32.48580288, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 32.46870293, + "end": 32.47371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.47575313, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.48071019, + "coreId": 0, + "status": 0 + }, + { + "start": 32.48577273, + "end": 32.51574394, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.48580288, + "end": 32.50580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.49071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.4957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.4957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.50576525, + "coreId": 0, + "status": 0 + }, + { + "start": 32.50580255, + "end": 32.51576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.51071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.51571562, + "coreId": 0, + "status": 0 + }, + { + "start": 32.51576615, + "end": 32.53576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.5257657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.52579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.53572849, + "coreId": 0, + "status": 0 + }, + { + "start": 32.53576645, + "end": 32.54583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.54071019, + "coreId": 0, + "status": 0 + }, + { + "start": 32.54578538, + "end": 32.60575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.54580971, + "end": 32.57574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.54583986, + "end": 32.56580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.55070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.55572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.55575336, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.56576524, + "coreId": 0, + "status": 0 + }, + { + "start": 32.56580255, + "end": 32.57576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.57071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.57571564, + "coreId": 0, + "status": 0 + }, + { + "start": 32.57574396, + "end": 32.59574385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.57576617, + "end": 32.59576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.58576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.58578975, + "coreId": 0, + "status": 0 + }, + { + "start": 32.59576601, + "end": 32.60580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.60071017, + "coreId": 0, + "status": 0 + }, + { + "start": 32.60575629, + "end": 32.66575656, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.60577268, + "end": 32.63574419, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.60580283, + "end": 32.62580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.61071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.61572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.61575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.62576573, + "coreId": 0, + "status": 0 + }, + { + "start": 32.62580303, + "end": 32.6357664, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.63071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.63571561, + "coreId": 0, + "status": 0 + }, + { + "start": 32.6357664, + "end": 32.65576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.64580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.645827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.6557285, + "coreId": 0, + "status": 0 + }, + { + "start": 32.65576646, + "end": 32.6658031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.66070999, + "coreId": 0, + "status": 0 + }, + { + "start": 32.66575656, + "end": 32.82575642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.66577295, + "end": 32.68579686, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 32.6658031, + "end": 32.67872409, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 32.67071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.67572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.67575347, + "coreId": 0, + "status": 0 + }, + { + "start": 32.67872409, + "end": 32.70574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 32.68572279, + "coreId": 0, + "status": 0 + }, + { + "start": 32.68770294, + "end": 32.6927109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.69572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.70572262, + "coreId": 0, + "status": 0 + }, + { + "start": 32.70574775, + "end": 32.7457607, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 32.70578494, + "end": 32.72579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 32.70870292, + "end": 32.71371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.71571024, + "coreId": 0, + "status": 0 + }, + { + "start": 32.71770294, + "end": 32.72576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.72570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.72573523, + "coreId": 0, + "status": 0 + }, + { + "start": 32.72770294, + "end": 32.73271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 32.7457607, + "end": 32.79576603, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 32.74582228, + "end": 32.75576071, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 32.74870293, + "end": 32.75371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.75571021, + "coreId": 0, + "status": 0 + }, + { + "start": 32.75770295, + "end": 32.76576033, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.76571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.7657348, + "coreId": 0, + "status": 0 + }, + { + "start": 32.76770295, + "end": 32.77271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.77575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.78576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.78578984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 32.79071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.79571554, + "coreId": 0, + "status": 0 + }, + { + "start": 32.79576603, + "end": 32.81576634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.80071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.80576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.80578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.81572833, + "coreId": 0, + "status": 0 + }, + { + "start": 32.81576634, + "end": 32.82580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.82071016, + "coreId": 0, + "status": 0 + }, + { + "start": 32.82575642, + "end": 32.88575617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.82580286, + "end": 32.84583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.83070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.83572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.83575338, + "coreId": 0, + "status": 0 + }, + { + "start": 32.84580961, + "end": 32.85574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.84583977, + "end": 32.85576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.85071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.85571567, + "coreId": 0, + "status": 0 + }, + { + "start": 32.85576626, + "end": 32.87576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.86576547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.8657898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.87572832, + "coreId": 0, + "status": 0 + }, + { + "start": 32.87576633, + "end": 32.88580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.88071019, + "coreId": 0, + "status": 0 + }, + { + "start": 32.88577251, + "end": 32.91574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.88580261, + "end": 32.90580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.89071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.89572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.89575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.90576561, + "coreId": 0, + "status": 0 + }, + { + "start": 32.90580301, + "end": 32.915766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.9107102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.91571551, + "coreId": 0, + "status": 0 + }, + { + "start": 32.915766, + "end": 32.93576658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 32.92576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.92579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.93572857, + "coreId": 0, + "status": 0 + }, + { + "start": 32.93576658, + "end": 32.94583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.94071016, + "coreId": 0, + "status": 0 + }, + { + "start": 32.94578545, + "end": 33.10575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 32.94580974, + "end": 32.97574452, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.94583985, + "end": 32.96580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.95071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.95572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.95575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 32.96576586, + "coreId": 0, + "status": 0 + }, + { + "start": 32.96580326, + "end": 32.97576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.97070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 32.97571569, + "coreId": 0, + "status": 0 + }, + { + "start": 32.97574452, + "end": 32.98578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 32.97576669, + "end": 32.97872421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 32.97872421, + "end": 32.98574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 32.98572266, + "coreId": 0, + "status": 0 + }, + { + "start": 32.98574779, + "end": 33.02574838, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 32.98578499, + "end": 32.99576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 32.98870291, + "end": 32.99371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 32.99571022, + "coreId": 0, + "status": 0 + }, + { + "start": 32.99770297, + "end": 33.0057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.00571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.00573497, + "coreId": 0, + "status": 0 + }, + { + "start": 33.00870297, + "end": 33.01371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.01571007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.02572316, + "coreId": 0, + "status": 0 + }, + { + "start": 33.02574838, + "end": 33.07576605, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 33.02770291, + "end": 33.03271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.03572305, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.04574748, + "coreId": 0, + "status": 0 + }, + { + "start": 33.04582187, + "end": 33.06579672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 33.04870291, + "end": 33.05371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.0557102, + "coreId": 0, + "status": 0 + }, + { + "start": 33.05870295, + "end": 33.06576035, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.06572265, + "coreId": 0, + "status": 0 + }, + { + "start": 33.06770292, + "end": 33.07271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 33.07576605, + "end": 33.09576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.08071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.08576561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.08578999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.0957282, + "coreId": 0, + "status": 0 + }, + { + "start": 33.09576617, + "end": 33.10580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.10071017, + "coreId": 0, + "status": 0 + }, + { + "start": 33.10575611, + "end": 33.1657561, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 33.10577245, + "end": 33.13574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.10580255, + "end": 33.12580285, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.11071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.11572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.11575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.12576555, + "coreId": 0, + "status": 0 + }, + { + "start": 33.12580285, + "end": 33.13576628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.13071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.13571554, + "coreId": 0, + "status": 0 + }, + { + "start": 33.13576628, + "end": 33.15576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.14580271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.14582709, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.15572847, + "coreId": 0, + "status": 0 + }, + { + "start": 33.15576644, + "end": 33.16580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.16071019, + "coreId": 0, + "status": 0 + }, + { + "start": 33.1657561, + "end": 33.22575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 33.16577245, + "end": 33.19574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.16580255, + "end": 33.18580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.17071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.17572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.17575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.18576528, + "coreId": 0, + "status": 0 + }, + { + "start": 33.18580258, + "end": 33.195766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.19071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.19571552, + "coreId": 0, + "status": 0 + }, + { + "start": 33.195766, + "end": 33.215766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.2057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.20578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.21572803, + "coreId": 0, + "status": 0 + }, + { + "start": 33.215766, + "end": 33.22580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.22071016, + "coreId": 0, + "status": 0 + }, + { + "start": 33.22575639, + "end": 33.34579773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 33.22580283, + "end": 33.24583987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.23071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.23572859, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.23575349, + "coreId": 0, + "status": 0 + }, + { + "start": 33.24580976, + "end": 33.25574415, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.24583987, + "end": 33.25576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.25071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.25571573, + "coreId": 0, + "status": 0 + }, + { + "start": 33.25574415, + "end": 33.28578512, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.25576631, + "end": 33.27576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.26576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.26579009, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.27572847, + "coreId": 0, + "status": 0 + }, + { + "start": 33.27576669, + "end": 33.32574824, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 33.27871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.28571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.28573497, + "coreId": 0, + "status": 0 + }, + { + "start": 33.28578512, + "end": 33.30579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 33.28870293, + "end": 33.29371094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.29571003, + "coreId": 0, + "status": 0 + }, + { + "start": 33.29870293, + "end": 33.30576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.30572279, + "coreId": 0, + "status": 0 + }, + { + "start": 33.30770291, + "end": 33.31271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.31572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.32571004, + "coreId": 0, + "status": 0 + }, + { + "start": 33.32574824, + "end": 33.36574797, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 33.32578548, + "end": 33.34583377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 33.32870295, + "end": 33.3337111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.33571021, + "coreId": 0, + "status": 0 + }, + { + "start": 33.33770291, + "end": 33.3457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.34574757, + "coreId": 0, + "status": 0 + }, + { + "start": 33.34579773, + "end": 33.38575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 33.34770293, + "end": 33.35271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.35572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.36572284, + "coreId": 0, + "status": 0 + }, + { + "start": 33.36574797, + "end": 33.38580288, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 33.36870293, + "end": 33.37371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.37575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.38071019, + "coreId": 0, + "status": 0 + }, + { + "start": 33.38577273, + "end": 33.41574397, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.38580288, + "end": 33.40580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.39071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.3957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.3957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.40576525, + "coreId": 0, + "status": 0 + }, + { + "start": 33.40580255, + "end": 33.41576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.41071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.41571565, + "coreId": 0, + "status": 0 + }, + { + "start": 33.41576618, + "end": 33.43576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.42576573, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.42579006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.43572849, + "coreId": 0, + "status": 0 + }, + { + "start": 33.43576645, + "end": 33.4458398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.4407102, + "coreId": 0, + "status": 0 + }, + { + "start": 33.44578531, + "end": 33.50575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 33.44580964, + "end": 33.47574397, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.4458398, + "end": 33.46580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.45071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.45572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.45575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.46576525, + "coreId": 0, + "status": 0 + }, + { + "start": 33.46580255, + "end": 33.47576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.47071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.47571565, + "coreId": 0, + "status": 0 + }, + { + "start": 33.47574397, + "end": 33.49574385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.47576618, + "end": 33.49576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.48576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.48578978, + "coreId": 0, + "status": 0 + }, + { + "start": 33.49576601, + "end": 33.50580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.5007102, + "coreId": 0, + "status": 0 + }, + { + "start": 33.50575629, + "end": 33.56575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 33.50577268, + "end": 33.5357442, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.50580283, + "end": 33.52580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.51071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.51572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.51575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.52576573, + "coreId": 0, + "status": 0 + }, + { + "start": 33.52580303, + "end": 33.53576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.53071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.53571562, + "coreId": 0, + "status": 0 + }, + { + "start": 33.53576641, + "end": 33.55576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.54580281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.54582715, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.55572849, + "coreId": 0, + "status": 0 + }, + { + "start": 33.55576645, + "end": 33.56580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.56071004, + "coreId": 0, + "status": 0 + }, + { + "start": 33.56575655, + "end": 33.72575641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 33.56577294, + "end": 33.58579691, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 33.56580309, + "end": 33.57872418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 33.57071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.57572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.57575348, + "coreId": 0, + "status": 0 + }, + { + "start": 33.57872418, + "end": 33.60574776, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 33.58572283, + "coreId": 0, + "status": 0 + }, + { + "start": 33.58770292, + "end": 33.59271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.59572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.60572263, + "coreId": 0, + "status": 0 + }, + { + "start": 33.60574776, + "end": 33.64576061, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 33.60578495, + "end": 33.62579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 33.60870293, + "end": 33.61371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.61571025, + "coreId": 0, + "status": 0 + }, + { + "start": 33.61770293, + "end": 33.62576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.62570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.62573523, + "coreId": 0, + "status": 0 + }, + { + "start": 33.62770294, + "end": 33.63271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 33.64576061, + "end": 33.69576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 33.64582213, + "end": 33.65576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 33.64870296, + "end": 33.65371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.65571022, + "coreId": 0, + "status": 0 + }, + { + "start": 33.65770295, + "end": 33.66576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.66570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.66573479, + "coreId": 0, + "status": 0 + }, + { + "start": 33.66770294, + "end": 33.6727109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.67575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.68576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.68578983, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.69071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.69571552, + "coreId": 0, + "status": 0 + }, + { + "start": 33.69576601, + "end": 33.71576635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.70071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.70576544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.70578977, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.71572834, + "coreId": 0, + "status": 0 + }, + { + "start": 33.71576635, + "end": 33.72580285, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.72071016, + "coreId": 0, + "status": 0 + }, + { + "start": 33.72575641, + "end": 33.78575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 33.72580285, + "end": 33.74583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.73070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.73572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.73575338, + "coreId": 0, + "status": 0 + }, + { + "start": 33.74580968, + "end": 33.75574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.74583983, + "end": 33.7557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.75071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.75571571, + "coreId": 0, + "status": 0 + }, + { + "start": 33.7557663, + "end": 33.77576635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.76576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.7657898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.77572834, + "coreId": 0, + "status": 0 + }, + { + "start": 33.77576635, + "end": 33.7858026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.78071016, + "coreId": 0, + "status": 0 + }, + { + "start": 33.7857725, + "end": 33.81574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.7858026, + "end": 33.80580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.79071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.79572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.79575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.80576563, + "coreId": 0, + "status": 0 + }, + { + "start": 33.80580303, + "end": 33.815766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.81071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.81571551, + "coreId": 0, + "status": 0 + }, + { + "start": 33.815766, + "end": 33.83576663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 33.825766, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.82579033, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.83572862, + "coreId": 0, + "status": 0 + }, + { + "start": 33.83576663, + "end": 33.8458397, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.84071018, + "coreId": 0, + "status": 0 + }, + { + "start": 33.84578531, + "end": 34.00575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 33.84580959, + "end": 33.87574454, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.8458397, + "end": 33.86580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.85071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.85572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.85575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.86576586, + "coreId": 0, + "status": 0 + }, + { + "start": 33.86580326, + "end": 33.87576671, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.87071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.87571571, + "coreId": 0, + "status": 0 + }, + { + "start": 33.87574454, + "end": 33.88578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 33.87576671, + "end": 33.87872413, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 33.87872413, + "end": 33.8857478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 33.88572267, + "coreId": 0, + "status": 0 + }, + { + "start": 33.8857478, + "end": 33.92574837, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 33.88578499, + "end": 33.89576045, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 33.88870291, + "end": 33.89371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.8957102, + "coreId": 0, + "status": 0 + }, + { + "start": 33.89770297, + "end": 33.90576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.90571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.90573499, + "coreId": 0, + "status": 0 + }, + { + "start": 33.90870291, + "end": 33.91371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.91571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.92572315, + "coreId": 0, + "status": 0 + }, + { + "start": 33.92574837, + "end": 33.97576603, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 33.92770292, + "end": 33.93271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.93572306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 33.94574758, + "coreId": 0, + "status": 0 + }, + { + "start": 33.94582203, + "end": 33.96579669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 33.94870291, + "end": 33.95371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.9557102, + "coreId": 0, + "status": 0 + }, + { + "start": 33.95870295, + "end": 33.96576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.96572262, + "coreId": 0, + "status": 0 + }, + { + "start": 33.96770295, + "end": 33.97271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 33.97576603, + "end": 33.99576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 33.98071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.98576561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 33.98578999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 33.9957282, + "coreId": 0, + "status": 0 + }, + { + "start": 33.99576617, + "end": 34.00580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.00071017, + "coreId": 0, + "status": 0 + }, + { + "start": 34.00575611, + "end": 34.06575612, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.00577245, + "end": 34.03574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.00580255, + "end": 34.02580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.01071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.01572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.01575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.02576556, + "coreId": 0, + "status": 0 + }, + { + "start": 34.02580286, + "end": 34.03576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.03071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.03571555, + "coreId": 0, + "status": 0 + }, + { + "start": 34.03576629, + "end": 34.05576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.04580262, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.045827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.05572849, + "coreId": 0, + "status": 0 + }, + { + "start": 34.05576646, + "end": 34.06580256, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.06071016, + "coreId": 0, + "status": 0 + }, + { + "start": 34.06575612, + "end": 34.12575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.06577246, + "end": 34.09574384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.06580256, + "end": 34.08580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.07071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.07572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.07575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.08576528, + "coreId": 0, + "status": 0 + }, + { + "start": 34.08580258, + "end": 34.095766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.09071022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.09571552, + "coreId": 0, + "status": 0 + }, + { + "start": 34.095766, + "end": 34.115766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.1057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.10578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.11572803, + "coreId": 0, + "status": 0 + }, + { + "start": 34.115766, + "end": 34.12580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.12071016, + "coreId": 0, + "status": 0 + }, + { + "start": 34.12575637, + "end": 34.24579759, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.12580281, + "end": 34.14584001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.13071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.13572862, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.13575352, + "coreId": 0, + "status": 0 + }, + { + "start": 34.1458099, + "end": 34.15574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.14584001, + "end": 34.1557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.15071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.15571572, + "coreId": 0, + "status": 0 + }, + { + "start": 34.15574414, + "end": 34.18578513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.1557663, + "end": 34.17576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.16576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.16579009, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.17572847, + "coreId": 0, + "status": 0 + }, + { + "start": 34.17576669, + "end": 34.22574823, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 34.17871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.18571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.18573497, + "coreId": 0, + "status": 0 + }, + { + "start": 34.18578513, + "end": 34.20579688, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 34.18870293, + "end": 34.19371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.19571004, + "coreId": 0, + "status": 0 + }, + { + "start": 34.19870293, + "end": 34.20576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.20572281, + "coreId": 0, + "status": 0 + }, + { + "start": 34.20770291, + "end": 34.21271094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.21572279, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.22571003, + "coreId": 0, + "status": 0 + }, + { + "start": 34.22574823, + "end": 34.26574797, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 34.22578547, + "end": 34.24583362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 34.22870294, + "end": 34.23371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.23571026, + "coreId": 0, + "status": 0 + }, + { + "start": 34.23770292, + "end": 34.24577301, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.24574748, + "coreId": 0, + "status": 0 + }, + { + "start": 34.24579759, + "end": 34.28575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.24770293, + "end": 34.25271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.25572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.26572284, + "coreId": 0, + "status": 0 + }, + { + "start": 34.26574797, + "end": 34.28580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 34.26870291, + "end": 34.27371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.27575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.28071021, + "coreId": 0, + "status": 0 + }, + { + "start": 34.28577268, + "end": 34.31574395, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.28580283, + "end": 34.30580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.29071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.2957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.2957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.30576525, + "coreId": 0, + "status": 0 + }, + { + "start": 34.30580255, + "end": 34.31576616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.31071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.31571563, + "coreId": 0, + "status": 0 + }, + { + "start": 34.31576616, + "end": 34.33576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.3257657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.32579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.33572848, + "coreId": 0, + "status": 0 + }, + { + "start": 34.33576644, + "end": 34.34583984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.34071019, + "coreId": 0, + "status": 0 + }, + { + "start": 34.34578536, + "end": 34.40575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.34580969, + "end": 34.37574399, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.34583984, + "end": 34.36580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.35070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.35572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.35575336, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.36576524, + "coreId": 0, + "status": 0 + }, + { + "start": 34.36580255, + "end": 34.3757662, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.37071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.37571567, + "coreId": 0, + "status": 0 + }, + { + "start": 34.37574399, + "end": 34.39574385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.3757662, + "end": 34.39576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.38576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.38578979, + "coreId": 0, + "status": 0 + }, + { + "start": 34.39576601, + "end": 34.40580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.40071019, + "coreId": 0, + "status": 0 + }, + { + "start": 34.40575629, + "end": 34.46575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.40577268, + "end": 34.4357442, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.40580283, + "end": 34.42580302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.41071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.41572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.41575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.42576572, + "coreId": 0, + "status": 0 + }, + { + "start": 34.42580302, + "end": 34.43576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.43071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.43571562, + "coreId": 0, + "status": 0 + }, + { + "start": 34.43576641, + "end": 34.45576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.44580267, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.445827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.4557285, + "coreId": 0, + "status": 0 + }, + { + "start": 34.45576646, + "end": 34.46580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.46071001, + "coreId": 0, + "status": 0 + }, + { + "start": 34.46575655, + "end": 34.6257564, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.46577294, + "end": 34.48579691, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 34.46580309, + "end": 34.47872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 34.47071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.47572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.47575347, + "coreId": 0, + "status": 0 + }, + { + "start": 34.47872412, + "end": 34.50574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 34.48572284, + "coreId": 0, + "status": 0 + }, + { + "start": 34.48770293, + "end": 34.49271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.49572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.50572262, + "coreId": 0, + "status": 0 + }, + { + "start": 34.50574775, + "end": 34.5457607, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 34.50578494, + "end": 34.52579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 34.50870294, + "end": 34.51371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.51571025, + "coreId": 0, + "status": 0 + }, + { + "start": 34.51770294, + "end": 34.52576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.52570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.52573523, + "coreId": 0, + "status": 0 + }, + { + "start": 34.52770294, + "end": 34.53271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 34.5457607, + "end": 34.59576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 34.54582228, + "end": 34.55576074, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 34.54870296, + "end": 34.55371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.55571024, + "coreId": 0, + "status": 0 + }, + { + "start": 34.55770294, + "end": 34.56576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.56570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.56573479, + "coreId": 0, + "status": 0 + }, + { + "start": 34.56770294, + "end": 34.57271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.57575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.58576547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.58578985, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.5907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.59571552, + "coreId": 0, + "status": 0 + }, + { + "start": 34.59576601, + "end": 34.61576634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.60071005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.60576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.60578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.61572833, + "coreId": 0, + "status": 0 + }, + { + "start": 34.61576634, + "end": 34.62580284, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.62071017, + "coreId": 0, + "status": 0 + }, + { + "start": 34.6257564, + "end": 34.68575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.62580284, + "end": 34.64583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.63071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.63572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.63575337, + "coreId": 0, + "status": 0 + }, + { + "start": 34.64580961, + "end": 34.65574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.64583977, + "end": 34.6557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.65071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.65571571, + "coreId": 0, + "status": 0 + }, + { + "start": 34.6557663, + "end": 34.67576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.66576548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.66578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.67572832, + "coreId": 0, + "status": 0 + }, + { + "start": 34.67576633, + "end": 34.6858026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.68071021, + "coreId": 0, + "status": 0 + }, + { + "start": 34.6857725, + "end": 34.71574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.6858026, + "end": 34.70580304, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.69071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.69572822, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.69575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.70576564, + "coreId": 0, + "status": 0 + }, + { + "start": 34.70580304, + "end": 34.715766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.71071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.71571551, + "coreId": 0, + "status": 0 + }, + { + "start": 34.715766, + "end": 34.73576657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.72576571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.72579004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.73572856, + "coreId": 0, + "status": 0 + }, + { + "start": 34.73576657, + "end": 34.74583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.74071019, + "coreId": 0, + "status": 0 + }, + { + "start": 34.74578545, + "end": 34.90575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.74580974, + "end": 34.77574455, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.74583985, + "end": 34.76580327, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.75071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.75572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.75575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.76576587, + "coreId": 0, + "status": 0 + }, + { + "start": 34.76580327, + "end": 34.77576672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.77070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.77571572, + "coreId": 0, + "status": 0 + }, + { + "start": 34.77574455, + "end": 34.78578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.77576672, + "end": 34.77872421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 34.77872421, + "end": 34.78574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 34.78572266, + "coreId": 0, + "status": 0 + }, + { + "start": 34.78574779, + "end": 34.82574837, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 34.78578499, + "end": 34.79576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 34.78870291, + "end": 34.79371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.79571022, + "coreId": 0, + "status": 0 + }, + { + "start": 34.79770297, + "end": 34.80576053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.8057102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.805735, + "coreId": 0, + "status": 0 + }, + { + "start": 34.80870291, + "end": 34.81371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.81571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.82572315, + "coreId": 0, + "status": 0 + }, + { + "start": 34.82574837, + "end": 34.87576603, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 34.82770292, + "end": 34.83271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.83572307, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 34.84574751, + "coreId": 0, + "status": 0 + }, + { + "start": 34.8458219, + "end": 34.86579669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 34.84870292, + "end": 34.85371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.8557102, + "coreId": 0, + "status": 0 + }, + { + "start": 34.85870291, + "end": 34.86576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.86572262, + "coreId": 0, + "status": 0 + }, + { + "start": 34.86770294, + "end": 34.87271107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 34.87576603, + "end": 34.89576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.88071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.88576564, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.88579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.8957282, + "coreId": 0, + "status": 0 + }, + { + "start": 34.89576617, + "end": 34.90580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.90071018, + "coreId": 0, + "status": 0 + }, + { + "start": 34.90575611, + "end": 34.9657561, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.90577245, + "end": 34.93574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.90580255, + "end": 34.92580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.91071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.91572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.91575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.92576551, + "coreId": 0, + "status": 0 + }, + { + "start": 34.92580281, + "end": 34.93576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.93071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.93571555, + "coreId": 0, + "status": 0 + }, + { + "start": 34.93576629, + "end": 34.95576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 34.94580269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.94582707, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.95572849, + "coreId": 0, + "status": 0 + }, + { + "start": 34.95576646, + "end": 34.96580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.96071016, + "coreId": 0, + "status": 0 + }, + { + "start": 34.9657561, + "end": 35.02575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 34.96577245, + "end": 34.99574385, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 34.96580255, + "end": 34.98580257, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.97071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.97572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.97575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 34.98576527, + "coreId": 0, + "status": 0 + }, + { + "start": 34.98580257, + "end": 34.99576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 34.9907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 34.99571553, + "coreId": 0, + "status": 0 + }, + { + "start": 34.99576601, + "end": 35.015766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.0057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.00578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.01572803, + "coreId": 0, + "status": 0 + }, + { + "start": 35.015766, + "end": 35.02580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.02071016, + "coreId": 0, + "status": 0 + }, + { + "start": 35.02575637, + "end": 35.14579773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.02580281, + "end": 35.04583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.03071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.03572856, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.03575346, + "coreId": 0, + "status": 0 + }, + { + "start": 35.04580975, + "end": 35.05574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.04583986, + "end": 35.05576625, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.05071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.05571567, + "coreId": 0, + "status": 0 + }, + { + "start": 35.05574409, + "end": 35.08578513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.05576625, + "end": 35.07576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.06576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.06579007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.07572846, + "coreId": 0, + "status": 0 + }, + { + "start": 35.07576668, + "end": 35.12574822, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 35.07871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.08571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.08573498, + "coreId": 0, + "status": 0 + }, + { + "start": 35.08578513, + "end": 35.10579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 35.08870293, + "end": 35.09371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.09571003, + "coreId": 0, + "status": 0 + }, + { + "start": 35.09870291, + "end": 35.10576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.10572279, + "coreId": 0, + "status": 0 + }, + { + "start": 35.10770291, + "end": 35.11271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.11572282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.12571002, + "coreId": 0, + "status": 0 + }, + { + "start": 35.12574822, + "end": 35.16574797, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 35.12578546, + "end": 35.14583377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 35.12870297, + "end": 35.13371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.13571024, + "coreId": 0, + "status": 0 + }, + { + "start": 35.13770294, + "end": 35.1457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.14574757, + "coreId": 0, + "status": 0 + }, + { + "start": 35.14579773, + "end": 35.18575635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.14770294, + "end": 35.15271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.15572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.16572284, + "coreId": 0, + "status": 0 + }, + { + "start": 35.16574797, + "end": 35.18580289, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 35.16870293, + "end": 35.17371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.17575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.18071019, + "coreId": 0, + "status": 0 + }, + { + "start": 35.18577274, + "end": 35.21574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.18580289, + "end": 35.20580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.19071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.1957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.1957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.20576525, + "coreId": 0, + "status": 0 + }, + { + "start": 35.20580255, + "end": 35.21576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.21071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.21571564, + "coreId": 0, + "status": 0 + }, + { + "start": 35.21576617, + "end": 35.23576645, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.2257657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.22579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.23572849, + "coreId": 0, + "status": 0 + }, + { + "start": 35.23576645, + "end": 35.2458398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.24071019, + "coreId": 0, + "status": 0 + }, + { + "start": 35.24578531, + "end": 35.30575629, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.24580964, + "end": 35.27574396, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.2458398, + "end": 35.26580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.25071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.25572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.25575336, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.26576528, + "coreId": 0, + "status": 0 + }, + { + "start": 35.26580258, + "end": 35.27576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.27071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.27571564, + "coreId": 0, + "status": 0 + }, + { + "start": 35.27574396, + "end": 35.29574386, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.27576617, + "end": 35.29576602, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.28576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.28578975, + "coreId": 0, + "status": 0 + }, + { + "start": 35.29576602, + "end": 35.30580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.30071017, + "coreId": 0, + "status": 0 + }, + { + "start": 35.30575629, + "end": 35.36575657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.30577268, + "end": 35.3357442, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.30580283, + "end": 35.32580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.31071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.31572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.31575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.32576573, + "coreId": 0, + "status": 0 + }, + { + "start": 35.32580303, + "end": 35.33576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.33071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.33571562, + "coreId": 0, + "status": 0 + }, + { + "start": 35.33576641, + "end": 35.35576647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.34580278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.34582712, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.35572851, + "coreId": 0, + "status": 0 + }, + { + "start": 35.35576647, + "end": 35.36580311, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.36070999, + "coreId": 0, + "status": 0 + }, + { + "start": 35.36575657, + "end": 35.5257564, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.36577296, + "end": 35.38579687, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 35.36580311, + "end": 35.37872418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 35.37071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.37572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.37575348, + "coreId": 0, + "status": 0 + }, + { + "start": 35.37872418, + "end": 35.40574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 35.38572279, + "coreId": 0, + "status": 0 + }, + { + "start": 35.38770296, + "end": 35.39271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.39572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.40572262, + "coreId": 0, + "status": 0 + }, + { + "start": 35.40574775, + "end": 35.44576061, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 35.40578494, + "end": 35.42579723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 35.40870293, + "end": 35.41371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.41571025, + "coreId": 0, + "status": 0 + }, + { + "start": 35.41770294, + "end": 35.42576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.42570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.42573523, + "coreId": 0, + "status": 0 + }, + { + "start": 35.42770294, + "end": 35.43271106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 35.44576061, + "end": 35.49576601, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 35.44582213, + "end": 35.45576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 35.44870293, + "end": 35.45371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.45571022, + "coreId": 0, + "status": 0 + }, + { + "start": 35.45770296, + "end": 35.46576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.46570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.46573479, + "coreId": 0, + "status": 0 + }, + { + "start": 35.46770295, + "end": 35.47271092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.47575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.48576544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.48578982, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.4907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.49571552, + "coreId": 0, + "status": 0 + }, + { + "start": 35.49576601, + "end": 35.51576636, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.50071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.50576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.50578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.51572835, + "coreId": 0, + "status": 0 + }, + { + "start": 35.51576636, + "end": 35.52580284, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.52071017, + "coreId": 0, + "status": 0 + }, + { + "start": 35.5257564, + "end": 35.58575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.52580284, + "end": 35.54583983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.53071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.53572852, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.53575342, + "coreId": 0, + "status": 0 + }, + { + "start": 35.54580968, + "end": 35.55574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.54583983, + "end": 35.55576629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.5507102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.5557157, + "coreId": 0, + "status": 0 + }, + { + "start": 35.55576629, + "end": 35.57576633, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.56576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.56578979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.57572832, + "coreId": 0, + "status": 0 + }, + { + "start": 35.57576633, + "end": 35.5858026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.58071019, + "coreId": 0, + "status": 0 + }, + { + "start": 35.5857725, + "end": 35.61574383, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.5858026, + "end": 35.60580305, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.59071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.59572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.59575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.60576565, + "coreId": 0, + "status": 0 + }, + { + "start": 35.60580305, + "end": 35.615766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.61071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.61571551, + "coreId": 0, + "status": 0 + }, + { + "start": 35.615766, + "end": 35.63576663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.62576568, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.62579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.63572862, + "coreId": 0, + "status": 0 + }, + { + "start": 35.63576663, + "end": 35.64583972, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.64071019, + "coreId": 0, + "status": 0 + }, + { + "start": 35.64578532, + "end": 35.80575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.64580961, + "end": 35.67574453, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.64583972, + "end": 35.66580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.65071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.65572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.65575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.66576586, + "coreId": 0, + "status": 0 + }, + { + "start": 35.66580326, + "end": 35.6757667, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.67070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.6757157, + "coreId": 0, + "status": 0 + }, + { + "start": 35.67574453, + "end": 35.68578499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.6757667, + "end": 35.67872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 35.67872412, + "end": 35.6857478, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 35.68572267, + "coreId": 0, + "status": 0 + }, + { + "start": 35.6857478, + "end": 35.72574839, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 35.68578499, + "end": 35.69576045, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 35.68870291, + "end": 35.69371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.6957102, + "coreId": 0, + "status": 0 + }, + { + "start": 35.69770297, + "end": 35.7057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.70571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.70573497, + "coreId": 0, + "status": 0 + }, + { + "start": 35.70870297, + "end": 35.71371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.71571007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.72572317, + "coreId": 0, + "status": 0 + }, + { + "start": 35.72574839, + "end": 35.77576604, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 35.72770292, + "end": 35.7327109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.73572304, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.7457476, + "coreId": 0, + "status": 0 + }, + { + "start": 35.74582205, + "end": 35.76579669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 35.74870291, + "end": 35.75371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.7557102, + "coreId": 0, + "status": 0 + }, + { + "start": 35.75870295, + "end": 35.76576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.76572262, + "coreId": 0, + "status": 0 + }, + { + "start": 35.76770294, + "end": 35.77271108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 35.77576604, + "end": 35.79576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.78071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.78576565, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.78579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.79572821, + "coreId": 0, + "status": 0 + }, + { + "start": 35.79576618, + "end": 35.80580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.80071018, + "coreId": 0, + "status": 0 + }, + { + "start": 35.80575611, + "end": 35.86575612, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.80577245, + "end": 35.83574412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.80580255, + "end": 35.82580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.81071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.81572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.81575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.82576556, + "coreId": 0, + "status": 0 + }, + { + "start": 35.82580286, + "end": 35.83576628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.83071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.83571554, + "coreId": 0, + "status": 0 + }, + { + "start": 35.83576628, + "end": 35.85576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.84580262, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.845827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.85572849, + "coreId": 0, + "status": 0 + }, + { + "start": 35.85576646, + "end": 35.86580256, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.86071016, + "coreId": 0, + "status": 0 + }, + { + "start": 35.86575612, + "end": 35.92575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.86577246, + "end": 35.89574385, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.86580256, + "end": 35.88580256, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.87070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.87572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.87575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.88576526, + "coreId": 0, + "status": 0 + }, + { + "start": 35.88580256, + "end": 35.89576601, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.8907102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.89571553, + "coreId": 0, + "status": 0 + }, + { + "start": 35.89576601, + "end": 35.915766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.9057656, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.90578998, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.91572803, + "coreId": 0, + "status": 0 + }, + { + "start": 35.915766, + "end": 35.92580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.92071016, + "coreId": 0, + "status": 0 + }, + { + "start": 35.92575639, + "end": 36.04579759, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 35.92580283, + "end": 35.94584001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.9307102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.93572856, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.93575346, + "coreId": 0, + "status": 0 + }, + { + "start": 35.9458099, + "end": 35.9557441, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.94584001, + "end": 35.95576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.95071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.95571568, + "coreId": 0, + "status": 0 + }, + { + "start": 35.9557441, + "end": 35.98578513, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 35.95576626, + "end": 35.97576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 35.9657657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 35.96579008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 35.97572847, + "coreId": 0, + "status": 0 + }, + { + "start": 35.97576669, + "end": 36.02574825, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 35.97871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.98571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 35.98573497, + "coreId": 0, + "status": 0 + }, + { + "start": 35.98578513, + "end": 36.00579686, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 35.98870293, + "end": 35.99371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 35.99571004, + "coreId": 0, + "status": 0 + }, + { + "start": 35.99870293, + "end": 36.00576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.00572279, + "coreId": 0, + "status": 0 + }, + { + "start": 36.00770291, + "end": 36.01271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.01572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.02571005, + "coreId": 0, + "status": 0 + }, + { + "start": 36.02574825, + "end": 36.06574797, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 36.02578549, + "end": 36.04583362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.02870296, + "end": 36.03371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.03571026, + "coreId": 0, + "status": 0 + }, + { + "start": 36.03770292, + "end": 36.04577301, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.04574748, + "coreId": 0, + "status": 0 + }, + { + "start": 36.04770294, + "end": 36.05271105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.05572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.06572284, + "coreId": 0, + "status": 0 + }, + { + "start": 36.06574797, + "end": 36.07576621, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 36.06770291, + "end": 36.07271088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 36.07576621, + "end": 36.12580308, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 36.08576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.08578984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.09071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.09571569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.10576525, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.10578958, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.11071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.11571561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.11575303, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.12576569, + "coreId": 0, + "status": 0 + }, + { + "start": 36.12580308, + "end": 36.14583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.13070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.13571572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.1357534, + "coreId": 0, + "status": 0 + }, + { + "start": 36.14578538, + "end": 36.16575613, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.14583986, + "end": 36.16580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.15070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.15572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.15575336, + "coreId": 0, + "status": 0 + }, + { + "start": 36.16575613, + "end": 36.18575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.16580258, + "end": 36.18580272, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.17071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.17572818, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.17575308, + "coreId": 0, + "status": 0 + }, + { + "start": 36.18575628, + "end": 36.20575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.18580272, + "end": 36.20580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.19071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.19572806, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.19575296, + "coreId": 0, + "status": 0 + }, + { + "start": 36.20575629, + "end": 36.22575659, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.20580283, + "end": 36.22580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.21071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.21572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.21575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.22070999, + "coreId": 0, + "status": 0 + }, + { + "start": 36.22580303, + "end": 36.24583998, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.2357284, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.2357533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.24071019, + "coreId": 0, + "status": 0 + }, + { + "start": 36.2457855, + "end": 36.26575655, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.24583998, + "end": 36.26580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.2557285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.2557534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.26070999, + "coreId": 0, + "status": 0 + }, + { + "start": 36.26575655, + "end": 36.38575632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.26577294, + "end": 36.28578511, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 36.26580309, + "end": 36.41576635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.27572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.27575348, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.2787102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.28571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.28573496, + "coreId": 0, + "status": 0 + }, + { + "start": 36.28578511, + "end": 36.29576046, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.28870294, + "end": 36.2937111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.29571021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.30570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.30573479, + "coreId": 0, + "status": 0 + }, + { + "start": 36.30578494, + "end": 36.31576036, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.30870293, + "end": 36.31371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.31571025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.32571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.32573528, + "coreId": 0, + "status": 0 + }, + { + "start": 36.32578548, + "end": 36.33576042, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.32870293, + "end": 36.33371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.33572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.34574774, + "coreId": 0, + "status": 0 + }, + { + "start": 36.34582228, + "end": 36.35576075, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.34870293, + "end": 36.35371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.35571025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.36571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.3657348, + "coreId": 0, + "status": 0 + }, + { + "start": 36.36870292, + "end": 36.37371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 36.37575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.38071004, + "coreId": 0, + "status": 0 + }, + { + "start": 36.38575632, + "end": 36.40575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.38577271, + "end": 36.47574414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.39572806, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.39575296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.40071003, + "coreId": 0, + "status": 0 + }, + { + "start": 36.40575628, + "end": 36.42575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 36.40578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.41572834, + "coreId": 0, + "status": 0 + }, + { + "start": 36.41576635, + "end": 36.43576644, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.42071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.42578986, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.43572848, + "coreId": 0, + "status": 0 + }, + { + "start": 36.43576644, + "end": 36.45576627, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.44071, + "coreId": 0, + "status": 0 + }, + { + "start": 36.44578528, + "end": 36.6457976, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 36.44582674, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.4557283, + "coreId": 0, + "status": 0 + }, + { + "start": 36.45576627, + "end": 36.47576635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.46071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.46576547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.4657898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.47571582, + "coreId": 0, + "status": 0 + }, + { + "start": 36.47574414, + "end": 36.49574401, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 36.47576635, + "end": 36.49576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.48071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.4857653, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.48578963, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.49071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.49571569, + "coreId": 0, + "status": 0 + }, + { + "start": 36.49576617, + "end": 36.52580307, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 36.50576563, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.50579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.51071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.51571551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.51575293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.52576568, + "coreId": 0, + "status": 0 + }, + { + "start": 36.52580307, + "end": 36.54583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.53071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.53571581, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.53575349, + "coreId": 0, + "status": 0 + }, + { + "start": 36.54583985, + "end": 36.56580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.55071021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.55571569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.55575321, + "coreId": 0, + "status": 0 + }, + { + "start": 36.56577311, + "end": 36.58579683, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.56580326, + "end": 36.57872421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 36.57071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.57571571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.57575364, + "coreId": 0, + "status": 0 + }, + { + "start": 36.57872421, + "end": 36.68580301, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.58571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.58573483, + "coreId": 0, + "status": 0 + }, + { + "start": 36.58870291, + "end": 36.59371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.5957102, + "coreId": 0, + "status": 0 + }, + { + "start": 36.59670291, + "end": 36.60576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.60571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.60573499, + "coreId": 0, + "status": 0 + }, + { + "start": 36.60870291, + "end": 36.61371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.61571004, + "coreId": 0, + "status": 0 + }, + { + "start": 36.61670296, + "end": 36.62576094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.62571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.62573541, + "coreId": 0, + "status": 0 + }, + { + "start": 36.62870296, + "end": 36.63371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.63571021, + "coreId": 0, + "status": 0 + }, + { + "start": 36.63770291, + "end": 36.64577302, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.64574749, + "coreId": 0, + "status": 0 + }, + { + "start": 36.6457976, + "end": 36.68575647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.64870294, + "end": 36.65371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.65571022, + "coreId": 0, + "status": 0 + }, + { + "start": 36.65670291, + "end": 36.66576034, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.66571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.66573481, + "coreId": 0, + "status": 0 + }, + { + "start": 36.66870292, + "end": 36.67371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 36.67575298, + "coreId": 0, + "status": 0 + }, + { + "start": 36.68575647, + "end": 36.70575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.68580301, + "end": 36.70580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.69071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.6957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.6957531, + "coreId": 0, + "status": 0 + }, + { + "start": 36.70575611, + "end": 36.72575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.70580255, + "end": 36.72580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.71071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 36.71572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.71575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.72070999, + "coreId": 0, + "status": 0 + }, + { + "start": 36.72580281, + "end": 36.74584009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.73572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.73575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.74071001, + "coreId": 0, + "status": 0 + }, + { + "start": 36.74578552, + "end": 36.7657561, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.74584009, + "end": 36.76580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.75572851, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.75575341, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.76071016, + "coreId": 0, + "status": 0 + }, + { + "start": 36.7657561, + "end": 36.78575612, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.76580255, + "end": 36.78580256, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.77572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.77575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.78071004, + "coreId": 0, + "status": 0 + }, + { + "start": 36.78575612, + "end": 36.80575646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.78580256, + "end": 36.80580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.79572805, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.79575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.8007102, + "coreId": 0, + "status": 0 + }, + { + "start": 36.80575646, + "end": 36.82575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.80580309, + "end": 36.82580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.81572803, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.81575293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.82071016, + "coreId": 0, + "status": 0 + }, + { + "start": 36.82580281, + "end": 36.88574793, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 113, + "start": 36.83572856, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.83575346, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.84070999, + "coreId": 0, + "status": 0 + }, + { + "start": 36.84578547, + "end": 36.86575656, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.85572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.85575319, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.86071016, + "coreId": 0, + "status": 0 + }, + { + "start": 36.86575656, + "end": 36.98575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 36.86577295, + "end": 36.88578512, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.87572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.87575362, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.87871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.88571017, + "coreId": 0, + "status": 0 + }, + { + "start": 36.88574793, + "end": 36.90574794, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 36.88578512, + "end": 36.89576028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.88870292, + "end": 36.89371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.89571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.90571018, + "coreId": 0, + "status": 0 + }, + { + "start": 36.90574794, + "end": 37.03576649, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 36.90578513, + "end": 36.91576031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.90870293, + "end": 36.91371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.9157102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.92571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.92573526, + "coreId": 0, + "status": 0 + }, + { + "start": 36.92578546, + "end": 36.93576062, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.92870296, + "end": 36.93371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.93571025, + "coreId": 0, + "status": 0 + }, + { + "start": 36.93770295, + "end": 36.9457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.94574757, + "coreId": 0, + "status": 0 + }, + { + "start": 36.94582202, + "end": 36.95576054, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 36.94870293, + "end": 36.95371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 36.95571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.96571021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.96573501, + "coreId": 0, + "status": 0 + }, + { + "start": 36.96870293, + "end": 36.97371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 36.97575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 36.98071019, + "coreId": 0, + "status": 0 + }, + { + "start": 36.98575634, + "end": 37.00575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 36.9957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 36.9957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.00071004, + "coreId": 0, + "status": 0 + }, + { + "start": 37.00575611, + "end": 37.02575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.01572814, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.01575304, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.02070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.03572853, + "coreId": 0, + "status": 0 + }, + { + "start": 37.03576649, + "end": 37.11576622, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.04071019, + "coreId": 0, + "status": 0 + }, + { + "start": 37.04578529, + "end": 37.06575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.05572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.05575338, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.06070999, + "coreId": 0, + "status": 0 + }, + { + "start": 37.06575611, + "end": 37.08575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.07572816, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.07575306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.08071001, + "coreId": 0, + "status": 0 + }, + { + "start": 37.08575628, + "end": 37.10575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.08577262, + "end": 37.17574438, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.09572808, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.09575298, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.10071017, + "coreId": 0, + "status": 0 + }, + { + "start": 37.10575629, + "end": 37.1257566, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 37.10578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.11572825, + "coreId": 0, + "status": 0 + }, + { + "start": 37.11576622, + "end": 37.13576642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.12070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.12579007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.13572841, + "coreId": 0, + "status": 0 + }, + { + "start": 37.13576642, + "end": 37.15576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.1407102, + "coreId": 0, + "status": 0 + }, + { + "start": 37.14578561, + "end": 37.28575631, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 37.14582712, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.1557285, + "coreId": 0, + "status": 0 + }, + { + "start": 37.15576646, + "end": 37.17576655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.16071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.16576569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.16579007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.17571555, + "coreId": 0, + "status": 0 + }, + { + "start": 37.17574438, + "end": 37.18578516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 37.17576655, + "end": 37.18574796, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 37.1787102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.18572283, + "coreId": 0, + "status": 0 + }, + { + "start": 37.18574796, + "end": 37.20574776, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 37.18578516, + "end": 37.19576045, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 37.18670291, + "end": 37.19271091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.19572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.20572263, + "coreId": 0, + "status": 0 + }, + { + "start": 37.20574776, + "end": 37.22574819, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 37.20578495, + "end": 37.21576036, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 37.20870294, + "end": 37.21471089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.21572284, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.22570999, + "coreId": 0, + "status": 0 + }, + { + "start": 37.22574819, + "end": 37.26574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 37.22578543, + "end": 37.2357604, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 37.22870297, + "end": 37.23471108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.23572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.24574765, + "coreId": 0, + "status": 0 + }, + { + "start": 37.24582213, + "end": 37.25576074, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 37.24870295, + "end": 37.25371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.25572307, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.26570999, + "coreId": 0, + "status": 0 + }, + { + "start": 37.26574775, + "end": 37.31576631, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 37.26870291, + "end": 37.27371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 37.27575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.28071001, + "coreId": 0, + "status": 0 + }, + { + "start": 37.28575631, + "end": 37.30575682, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.2857727, + "end": 37.37574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.29572804, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.29575294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.30071005, + "coreId": 0, + "status": 0 + }, + { + "start": 37.30575682, + "end": 37.32575642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 37.30579032, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.3157283, + "coreId": 0, + "status": 0 + }, + { + "start": 37.31576631, + "end": 37.33576649, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.32071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.32578989, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.33572853, + "coreId": 0, + "status": 0 + }, + { + "start": 37.33576649, + "end": 37.35576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.34071, + "coreId": 0, + "status": 0 + }, + { + "start": 37.34578535, + "end": 37.54579773, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 37.34582681, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.35572829, + "coreId": 0, + "status": 0 + }, + { + "start": 37.35576626, + "end": 37.37578999, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.36071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.36576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.3657898, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.37571581, + "coreId": 0, + "status": 0 + }, + { + "start": 37.37574413, + "end": 37.39574402, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 37.37578999, + "end": 37.39576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.38071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.3857653, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.38578963, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.39071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.3957157, + "coreId": 0, + "status": 0 + }, + { + "start": 37.39576618, + "end": 37.4258031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 37.40576564, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.40579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.41071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.41571551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.41575293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.42576571, + "coreId": 0, + "status": 0 + }, + { + "start": 37.4258031, + "end": 37.44583971, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.43071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.43571581, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.43575349, + "coreId": 0, + "status": 0 + }, + { + "start": 37.44583971, + "end": 37.46580327, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.45071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.45571569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.45575321, + "coreId": 0, + "status": 0 + }, + { + "start": 37.46577312, + "end": 37.48579683, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 37.46580327, + "end": 37.47872415, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 37.47070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.47571572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.47575365, + "coreId": 0, + "status": 0 + }, + { + "start": 37.47872415, + "end": 37.58580304, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.48571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.48573484, + "coreId": 0, + "status": 0 + }, + { + "start": 37.48870291, + "end": 37.49371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.4957102, + "coreId": 0, + "status": 0 + }, + { + "start": 37.49670295, + "end": 37.50576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.50571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.50573496, + "coreId": 0, + "status": 0 + }, + { + "start": 37.50870297, + "end": 37.51371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.51571003, + "coreId": 0, + "status": 0 + }, + { + "start": 37.51670295, + "end": 37.52576097, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.5257102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.52573544, + "coreId": 0, + "status": 0 + }, + { + "start": 37.52870291, + "end": 37.53371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.5357102, + "coreId": 0, + "status": 0 + }, + { + "start": 37.53770291, + "end": 37.5457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.54574757, + "coreId": 0, + "status": 0 + }, + { + "start": 37.54579773, + "end": 37.5857565, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.54870291, + "end": 37.55371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.5557102, + "coreId": 0, + "status": 0 + }, + { + "start": 37.55670293, + "end": 37.56576033, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.56571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.5657348, + "coreId": 0, + "status": 0 + }, + { + "start": 37.56870292, + "end": 37.5737109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 37.57575297, + "coreId": 0, + "status": 0 + }, + { + "start": 37.5857565, + "end": 37.60575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.58580304, + "end": 37.60580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.59070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.59572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.59575311, + "coreId": 0, + "status": 0 + }, + { + "start": 37.60575611, + "end": 37.62575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.60580255, + "end": 37.62580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.61071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.61572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.61575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.62070999, + "coreId": 0, + "status": 0 + }, + { + "start": 37.62580281, + "end": 37.64584004, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.63572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.63575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.64071001, + "coreId": 0, + "status": 0 + }, + { + "start": 37.64578546, + "end": 37.66575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.64584004, + "end": 37.66580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.65572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.65575337, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.66071016, + "coreId": 0, + "status": 0 + }, + { + "start": 37.66575611, + "end": 37.68575617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.66580255, + "end": 37.68580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.6757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.6757532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.68071004, + "coreId": 0, + "status": 0 + }, + { + "start": 37.68575617, + "end": 37.70575646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.68580261, + "end": 37.70580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.69572805, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.69575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.70071019, + "coreId": 0, + "status": 0 + }, + { + "start": 37.70575646, + "end": 37.72575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.70580309, + "end": 37.72580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.71572806, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.71575296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.72071016, + "coreId": 0, + "status": 0 + }, + { + "start": 37.72580281, + "end": 37.78574793, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 113, + "start": 37.73572862, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.73575352, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.74070999, + "coreId": 0, + "status": 0 + }, + { + "start": 37.74578561, + "end": 37.76575656, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.75572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.75575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.76071016, + "coreId": 0, + "status": 0 + }, + { + "start": 37.76575656, + "end": 37.88575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.76577295, + "end": 37.78578513, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.77572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.77575365, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.77871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.78571018, + "coreId": 0, + "status": 0 + }, + { + "start": 37.78574793, + "end": 37.80574794, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 37.78578513, + "end": 37.79576028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 37.78870293, + "end": 37.79371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.79571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.80571018, + "coreId": 0, + "status": 0 + }, + { + "start": 37.80574794, + "end": 37.93576644, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 37.80578513, + "end": 37.81576034, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 37.80870293, + "end": 37.81371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.81571023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.82571002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.82573526, + "coreId": 0, + "status": 0 + }, + { + "start": 37.82578546, + "end": 37.83576061, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 37.82870297, + "end": 37.83371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.83571024, + "coreId": 0, + "status": 0 + }, + { + "start": 37.83770294, + "end": 37.84577301, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.84574748, + "coreId": 0, + "status": 0 + }, + { + "start": 37.84582187, + "end": 37.85576053, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 37.84870294, + "end": 37.85371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.85571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.86571021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.86573501, + "coreId": 0, + "status": 0 + }, + { + "start": 37.86870293, + "end": 37.87371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 37.87575313, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.88071019, + "coreId": 0, + "status": 0 + }, + { + "start": 37.88575634, + "end": 37.90575612, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.8957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.8957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.90070999, + "coreId": 0, + "status": 0 + }, + { + "start": 37.90575612, + "end": 37.92575656, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.91572813, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.91575303, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.92071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 37.93572848, + "coreId": 0, + "status": 0 + }, + { + "start": 37.93576644, + "end": 38.01576622, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 37.94071019, + "coreId": 0, + "status": 0 + }, + { + "start": 37.94578538, + "end": 37.96575613, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.95572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.95575336, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.96071004, + "coreId": 0, + "status": 0 + }, + { + "start": 37.96575613, + "end": 37.98575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.97572816, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.97575306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 37.98071001, + "coreId": 0, + "status": 0 + }, + { + "start": 37.98575628, + "end": 38.00575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 37.98577262, + "end": 38.07574437, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 37.99572805, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 37.99575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.00071016, + "coreId": 0, + "status": 0 + }, + { + "start": 38.00575629, + "end": 38.02575656, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.00578981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.01572825, + "coreId": 0, + "status": 0 + }, + { + "start": 38.01576622, + "end": 38.03576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.02071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.02579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.0357284, + "coreId": 0, + "status": 0 + }, + { + "start": 38.03576641, + "end": 38.05576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.04071019, + "coreId": 0, + "status": 0 + }, + { + "start": 38.0457855, + "end": 38.18575632, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.045827, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.0557285, + "coreId": 0, + "status": 0 + }, + { + "start": 38.05576646, + "end": 38.07576654, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.06070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.0657657, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.06579008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.07571554, + "coreId": 0, + "status": 0 + }, + { + "start": 38.07574437, + "end": 38.08578517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 38.07576654, + "end": 38.08574798, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 38.0787102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.08572285, + "coreId": 0, + "status": 0 + }, + { + "start": 38.08574798, + "end": 38.10574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 38.08578517, + "end": 38.09576045, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.08670291, + "end": 38.0927109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.09572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.10572262, + "coreId": 0, + "status": 0 + }, + { + "start": 38.10574775, + "end": 38.12574819, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 38.10578494, + "end": 38.11576035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.10870293, + "end": 38.11471088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.11572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.12570999, + "coreId": 0, + "status": 0 + }, + { + "start": 38.12574819, + "end": 38.16574776, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 38.12578543, + "end": 38.13576042, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.12870296, + "end": 38.13471111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.13572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.14574775, + "coreId": 0, + "status": 0 + }, + { + "start": 38.14582229, + "end": 38.15576071, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.14870296, + "end": 38.15371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.15572304, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.16571, + "coreId": 0, + "status": 0 + }, + { + "start": 38.16574776, + "end": 38.21576631, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 38.16870292, + "end": 38.1737111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.17575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.18071001, + "coreId": 0, + "status": 0 + }, + { + "start": 38.18575632, + "end": 38.20575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 38.18577271, + "end": 38.27574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.19572803, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.19575293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.20071002, + "coreId": 0, + "status": 0 + }, + { + "start": 38.20575628, + "end": 38.22575643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.20578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.2157283, + "coreId": 0, + "status": 0 + }, + { + "start": 38.21576631, + "end": 38.23576647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.22071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.2257899, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.23572851, + "coreId": 0, + "status": 0 + }, + { + "start": 38.23576647, + "end": 38.25576631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.24071002, + "coreId": 0, + "status": 0 + }, + { + "start": 38.24578564, + "end": 38.36575672, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.2458271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.25572834, + "coreId": 0, + "status": 0 + }, + { + "start": 38.25576631, + "end": 38.27576634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.26071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.26576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.26578979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.27571581, + "coreId": 0, + "status": 0 + }, + { + "start": 38.27574413, + "end": 38.29574401, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 38.27576634, + "end": 38.29576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.28071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.2857653, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.28578963, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.29071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.29571569, + "coreId": 0, + "status": 0 + }, + { + "start": 38.29576617, + "end": 38.3258031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.30576565, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.30579003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.31071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.31571551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.31575293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.32576571, + "coreId": 0, + "status": 0 + }, + { + "start": 38.3258031, + "end": 38.34583985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.33071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.33571583, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.33575351, + "coreId": 0, + "status": 0 + }, + { + "start": 38.34583985, + "end": 38.36580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.35071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.35571571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.35575323, + "coreId": 0, + "status": 0 + }, + { + "start": 38.36575672, + "end": 38.44579762, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 38.36577311, + "end": 38.38579683, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.36580326, + "end": 38.37872423, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 38.37071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.3757285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.37575365, + "coreId": 0, + "status": 0 + }, + { + "start": 38.37872423, + "end": 38.48580301, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.38571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.38573483, + "coreId": 0, + "status": 0 + }, + { + "start": 38.38870291, + "end": 38.39371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.39571022, + "coreId": 0, + "status": 0 + }, + { + "start": 38.39670291, + "end": 38.4057605, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.40571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.40573497, + "coreId": 0, + "status": 0 + }, + { + "start": 38.40870297, + "end": 38.41371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.41571006, + "coreId": 0, + "status": 0 + }, + { + "start": 38.41770293, + "end": 38.42576097, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.4257102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.42573544, + "coreId": 0, + "status": 0 + }, + { + "start": 38.42870294, + "end": 38.43371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.43571022, + "coreId": 0, + "status": 0 + }, + { + "start": 38.43770293, + "end": 38.44577304, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.44574751, + "coreId": 0, + "status": 0 + }, + { + "start": 38.44579762, + "end": 38.48575647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 38.44870291, + "end": 38.45371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.4557102, + "coreId": 0, + "status": 0 + }, + { + "start": 38.45670293, + "end": 38.46576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.46570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.46573479, + "coreId": 0, + "status": 0 + }, + { + "start": 38.46870294, + "end": 38.4737109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.47575297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.48071003, + "coreId": 0, + "status": 0 + }, + { + "start": 38.48575647, + "end": 38.50575615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 38.48580301, + "end": 38.50580259, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.49572821, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.49575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.50071019, + "coreId": 0, + "status": 0 + }, + { + "start": 38.50575615, + "end": 38.52575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 38.50580259, + "end": 38.52580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.51572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.51575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.52070999, + "coreId": 0, + "status": 0 + }, + { + "start": 38.52580281, + "end": 38.54584009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.53572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.53575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.54071001, + "coreId": 0, + "status": 0 + }, + { + "start": 38.54578552, + "end": 38.5657561, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 38.54584009, + "end": 38.56580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.55572849, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.55575339, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.56071016, + "coreId": 0, + "status": 0 + }, + { + "start": 38.5657561, + "end": 38.58575614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 38.56580255, + "end": 38.6557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.57572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.57575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.58071004, + "coreId": 0, + "status": 0 + }, + { + "start": 38.58575614, + "end": 38.60575646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.59572805, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.59575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.60071017, + "coreId": 0, + "status": 0 + }, + { + "start": 38.60575646, + "end": 38.62575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.61572806, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.61575296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.62071017, + "coreId": 0, + "status": 0 + }, + { + "start": 38.62577273, + "end": 38.68578513, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.63572856, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.63575346, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.64071005, + "coreId": 0, + "status": 0 + }, + { + "start": 38.64578548, + "end": 38.66575656, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.64582689, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.65572834, + "coreId": 0, + "status": 0 + }, + { + "start": 38.6557663, + "end": 38.67576669, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.66071016, + "coreId": 0, + "status": 0 + }, + { + "start": 38.66575656, + "end": 38.78575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.66579008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.67572847, + "coreId": 0, + "status": 0 + }, + { + "start": 38.67576669, + "end": 38.68574794, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 38.67871003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.68571018, + "coreId": 0, + "status": 0 + }, + { + "start": 38.68574794, + "end": 38.70574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 38.68578513, + "end": 38.69576028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.68870293, + "end": 38.69471109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.69572271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.7057102, + "coreId": 0, + "status": 0 + }, + { + "start": 38.70574796, + "end": 38.72574825, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 38.70578515, + "end": 38.71576031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.70870295, + "end": 38.71371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.71572279, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.72571005, + "coreId": 0, + "status": 0 + }, + { + "start": 38.72574825, + "end": 38.81576618, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 38.72578549, + "end": 38.73576063, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.72870294, + "end": 38.73371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.73571026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.74574757, + "coreId": 0, + "status": 0 + }, + { + "start": 38.74582202, + "end": 38.75576054, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.74870294, + "end": 38.75371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.75571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.7657102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.765735, + "coreId": 0, + "status": 0 + }, + { + "start": 38.76870293, + "end": 38.77371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 38.77575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.78071019, + "coreId": 0, + "status": 0 + }, + { + "start": 38.78575634, + "end": 38.80575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.7957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.7957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.80071004, + "coreId": 0, + "status": 0 + }, + { + "start": 38.80575611, + "end": 38.82575659, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.81572817, + "coreId": 0, + "status": 0 + }, + { + "start": 38.81576618, + "end": 38.87576618, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.82071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.83572849, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.83575339, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.84071019, + "coreId": 0, + "status": 0 + }, + { + "start": 38.84578529, + "end": 38.86575614, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.85572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.85575336, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.86070999, + "coreId": 0, + "status": 0 + }, + { + "start": 38.86575614, + "end": 38.88575631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.87572817, + "coreId": 0, + "status": 0 + }, + { + "start": 38.87576618, + "end": 38.93576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.88071003, + "coreId": 0, + "status": 0 + }, + { + "start": 38.88575631, + "end": 38.90575634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.89572805, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.89575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.9007102, + "coreId": 0, + "status": 0 + }, + { + "start": 38.90575634, + "end": 38.92575657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.91572828, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.91575318, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.92070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 38.9357284, + "coreId": 0, + "status": 0 + }, + { + "start": 38.93576641, + "end": 38.98574795, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 38.94071018, + "coreId": 0, + "status": 0 + }, + { + "start": 38.94578564, + "end": 38.96575655, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.95572849, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.95575339, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.96071004, + "coreId": 0, + "status": 0 + }, + { + "start": 38.96575655, + "end": 39.08575632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 38.96577294, + "end": 38.98578515, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 38.97572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 38.97575347, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.9787102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 38.9857102, + "coreId": 0, + "status": 0 + }, + { + "start": 38.98574795, + "end": 39.00574775, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 38.98578515, + "end": 38.99576045, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 38.98870294, + "end": 38.99371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 38.99572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.00570999, + "coreId": 0, + "status": 0 + }, + { + "start": 39.00574775, + "end": 39.11576635, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 39.00578494, + "end": 39.01576035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 39.00870293, + "end": 39.01371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.01571024, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.02570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.02573523, + "coreId": 0, + "status": 0 + }, + { + "start": 39.02578543, + "end": 39.0357604, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 39.02870297, + "end": 39.03371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.03571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.04574765, + "coreId": 0, + "status": 0 + }, + { + "start": 39.04582213, + "end": 39.05576072, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 39.04870295, + "end": 39.05371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.05571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.06570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.06573479, + "coreId": 0, + "status": 0 + }, + { + "start": 39.06870291, + "end": 39.0737111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.07575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.08071004, + "coreId": 0, + "status": 0 + }, + { + "start": 39.08575632, + "end": 39.10575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.08577271, + "end": 39.15574448, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.09572806, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.09575296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.10071003, + "coreId": 0, + "status": 0 + }, + { + "start": 39.10575628, + "end": 39.12575642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.10578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.11572834, + "coreId": 0, + "status": 0 + }, + { + "start": 39.11576635, + "end": 39.13576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.12071016, + "coreId": 0, + "status": 0 + }, + { + "start": 39.12575642, + "end": 39.26575672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.12578989, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.13572847, + "coreId": 0, + "status": 0 + }, + { + "start": 39.13576643, + "end": 39.15576668, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.14071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.14580252, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.14582681, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.1557159, + "coreId": 0, + "status": 0 + }, + { + "start": 39.15574448, + "end": 39.17574414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 39.15576668, + "end": 39.17576635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.16071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.16576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.16578979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.17070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.17571582, + "coreId": 0, + "status": 0 + }, + { + "start": 39.17576635, + "end": 39.20580303, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.1857653, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.18578963, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.19071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.19571569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.19575311, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.20576563, + "coreId": 0, + "status": 0 + }, + { + "start": 39.20580303, + "end": 39.22580307, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.21071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.21571551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.21575293, + "coreId": 0, + "status": 0 + }, + { + "start": 39.22580307, + "end": 39.2458397, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.23071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.2357158, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.23575348, + "coreId": 0, + "status": 0 + }, + { + "start": 39.2458397, + "end": 39.26580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.25071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.25572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.25575324, + "coreId": 0, + "status": 0 + }, + { + "start": 39.26575672, + "end": 39.34579776, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.26577311, + "end": 39.28579683, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 39.26580326, + "end": 39.27872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 39.27071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.27572849, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.27575364, + "coreId": 0, + "status": 0 + }, + { + "start": 39.27872412, + "end": 39.38580303, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.28571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.28573484, + "coreId": 0, + "status": 0 + }, + { + "start": 39.28870291, + "end": 39.29371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.2957102, + "coreId": 0, + "status": 0 + }, + { + "start": 39.29670291, + "end": 39.30576051, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.30571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.30573498, + "coreId": 0, + "status": 0 + }, + { + "start": 39.30870297, + "end": 39.3137109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.31571004, + "coreId": 0, + "status": 0 + }, + { + "start": 39.31770295, + "end": 39.32576094, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.32571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.32573541, + "coreId": 0, + "status": 0 + }, + { + "start": 39.32870296, + "end": 39.33371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.33571026, + "coreId": 0, + "status": 0 + }, + { + "start": 39.33770291, + "end": 39.34577313, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.3457476, + "coreId": 0, + "status": 0 + }, + { + "start": 39.34579776, + "end": 39.38575649, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.34870292, + "end": 39.35371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.35571022, + "coreId": 0, + "status": 0 + }, + { + "start": 39.35770296, + "end": 39.36576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.36570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.36573479, + "coreId": 0, + "status": 0 + }, + { + "start": 39.36870295, + "end": 39.3737109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.37575297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.38071, + "coreId": 0, + "status": 0 + }, + { + "start": 39.38575649, + "end": 39.40575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.38580303, + "end": 39.40580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.3957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.3957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.40071017, + "coreId": 0, + "status": 0 + }, + { + "start": 39.40575611, + "end": 39.42575642, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.40580255, + "end": 39.42580286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.41572835, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.41575325, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.42070999, + "coreId": 0, + "status": 0 + }, + { + "start": 39.42580286, + "end": 39.44584004, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.43572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.43575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.44071, + "coreId": 0, + "status": 0 + }, + { + "start": 39.44578546, + "end": 39.46575611, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.44584004, + "end": 39.46580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.4557285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.4557534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.46071016, + "coreId": 0, + "status": 0 + }, + { + "start": 39.46575611, + "end": 39.48575614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.46580255, + "end": 39.53576663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.47572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.47575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.48071003, + "coreId": 0, + "status": 0 + }, + { + "start": 39.48575614, + "end": 39.50575646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.49572805, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.49575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.50071018, + "coreId": 0, + "status": 0 + }, + { + "start": 39.50575646, + "end": 39.52575639, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.51572809, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.51575299, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.52071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.53572862, + "coreId": 0, + "status": 0 + }, + { + "start": 39.53576663, + "end": 39.58574792, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 39.54070999, + "coreId": 0, + "status": 0 + }, + { + "start": 39.54578561, + "end": 39.56575656, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.55572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.55575319, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.56071016, + "coreId": 0, + "status": 0 + }, + { + "start": 39.56575656, + "end": 39.68575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.56577295, + "end": 39.58578512, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.57572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.57575361, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.57871004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.58571017, + "coreId": 0, + "status": 0 + }, + { + "start": 39.58574792, + "end": 39.60574794, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 39.58578512, + "end": 39.59576028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 39.58870292, + "end": 39.59371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.59572271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.60571018, + "coreId": 0, + "status": 0 + }, + { + "start": 39.60574794, + "end": 39.71576615, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 39.60578513, + "end": 39.61576031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 39.60870293, + "end": 39.61371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.6157102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.62571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.62573533, + "coreId": 0, + "status": 0 + }, + { + "start": 39.62578553, + "end": 39.63576062, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 39.62870294, + "end": 39.63371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.63571025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.64574749, + "coreId": 0, + "status": 0 + }, + { + "start": 39.64582188, + "end": 39.65576053, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 39.64870291, + "end": 39.65371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.65571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.66571021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.66573501, + "coreId": 0, + "status": 0 + }, + { + "start": 39.66870293, + "end": 39.67371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.67575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.68071019, + "coreId": 0, + "status": 0 + }, + { + "start": 39.68575629, + "end": 39.70575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.68577268, + "end": 39.75574426, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.6957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.6957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.70071002, + "coreId": 0, + "status": 0 + }, + { + "start": 39.70575611, + "end": 39.72575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.70578958, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.71572814, + "coreId": 0, + "status": 0 + }, + { + "start": 39.71576615, + "end": 39.73576649, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.72070999, + "coreId": 0, + "status": 0 + }, + { + "start": 39.72575655, + "end": 39.86575657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.72579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.73572853, + "coreId": 0, + "status": 0 + }, + { + "start": 39.73576649, + "end": 39.75576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.74071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.74580253, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.74582682, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.75571584, + "coreId": 0, + "status": 0 + }, + { + "start": 39.75574426, + "end": 39.77574396, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 39.75576643, + "end": 39.77576617, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.76070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.76576524, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.76578958, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.77071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.77571564, + "coreId": 0, + "status": 0 + }, + { + "start": 39.77576617, + "end": 39.80580283, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.78576542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.78578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.79071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.79571553, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.79575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.80576543, + "coreId": 0, + "status": 0 + }, + { + "start": 39.80580283, + "end": 39.82580302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.81071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.81571572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.81575314, + "coreId": 0, + "status": 0 + }, + { + "start": 39.82580302, + "end": 39.84583998, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.83071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.83571562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.8357533, + "coreId": 0, + "status": 0 + }, + { + "start": 39.84583998, + "end": 39.86580313, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.85071005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.8557285, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.8557534, + "coreId": 0, + "status": 0 + }, + { + "start": 39.86575657, + "end": 39.94579791, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.86577298, + "end": 39.8857969, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 39.86580313, + "end": 39.87872412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 39.87071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 39.87572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.87575347, + "coreId": 0, + "status": 0 + }, + { + "start": 39.87872412, + "end": 39.98580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.8857102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.885735, + "coreId": 0, + "status": 0 + }, + { + "start": 39.88870294, + "end": 39.89371111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.8957102, + "coreId": 0, + "status": 0 + }, + { + "start": 39.89670295, + "end": 39.90576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.90570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.90573479, + "coreId": 0, + "status": 0 + }, + { + "start": 39.90870293, + "end": 39.91371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.91571025, + "coreId": 0, + "status": 0 + }, + { + "start": 39.91770294, + "end": 39.92576076, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.92570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.92573523, + "coreId": 0, + "status": 0 + }, + { + "start": 39.92870297, + "end": 39.93371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.93571003, + "coreId": 0, + "status": 0 + }, + { + "start": 39.93770291, + "end": 39.94577328, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.94574775, + "coreId": 0, + "status": 0 + }, + { + "start": 39.94579791, + "end": 39.98575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.94870296, + "end": 39.95371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.95571023, + "coreId": 0, + "status": 0 + }, + { + "start": 39.95770297, + "end": 39.96576032, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 39.96570999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.96573479, + "coreId": 0, + "status": 0 + }, + { + "start": 39.96870291, + "end": 39.97371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 39.97575316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 39.98071004, + "coreId": 0, + "status": 0 + }, + { + "start": 39.98575629, + "end": 40.00575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 39.98580283, + "end": 40.00580272, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 39.99572804, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 39.99575294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.00071005, + "coreId": 0, + "status": 0 + }, + { + "start": 40.00575628, + "end": 40.02575641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.00580272, + "end": 40.02580285, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.0157283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.0157532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.02071016, + "coreId": 0, + "status": 0 + }, + { + "start": 40.02580285, + "end": 40.04583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.03572853, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.03575343, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.04071002, + "coreId": 0, + "status": 0 + }, + { + "start": 40.04578528, + "end": 40.06575633, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.04583977, + "end": 40.06580277, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.0557283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.0557532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.06071002, + "coreId": 0, + "status": 0 + }, + { + "start": 40.06575633, + "end": 40.08575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.06580277, + "end": 40.1357666, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.07572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.07575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.08071016, + "coreId": 0, + "status": 0 + }, + { + "start": 40.08575611, + "end": 40.10575648, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.09572822, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.09575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.10071002, + "coreId": 0, + "status": 0 + }, + { + "start": 40.10575648, + "end": 40.12575657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.11572803, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.11575293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.12071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.13572859, + "coreId": 0, + "status": 0 + }, + { + "start": 40.1357666, + "end": 40.18574779, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 40.14071019, + "coreId": 0, + "status": 0 + }, + { + "start": 40.14578545, + "end": 40.16575672, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.15572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.15575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.16071017, + "coreId": 0, + "status": 0 + }, + { + "start": 40.16575672, + "end": 40.28575647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.16577311, + "end": 40.18578499, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.17572851, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.17575366, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.17871023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.18571004, + "coreId": 0, + "status": 0 + }, + { + "start": 40.18574779, + "end": 40.20574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 40.18578499, + "end": 40.19576047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 40.18870291, + "end": 40.19371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.1957229, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.2057102, + "coreId": 0, + "status": 0 + }, + { + "start": 40.20574796, + "end": 40.31576636, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 40.20578515, + "end": 40.21576015, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 40.20870291, + "end": 40.21371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.21571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.22571021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.22573545, + "coreId": 0, + "status": 0 + }, + { + "start": 40.22578565, + "end": 40.23576057, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 40.22870291, + "end": 40.23371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.2357102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.24574751, + "coreId": 0, + "status": 0 + }, + { + "start": 40.2458219, + "end": 40.2557607, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 40.24870291, + "end": 40.25371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.2557102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.26571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.26573485, + "coreId": 0, + "status": 0 + }, + { + "start": 40.26870293, + "end": 40.27371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 40.27575299, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.28071002, + "coreId": 0, + "status": 0 + }, + { + "start": 40.28575647, + "end": 40.30575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.28577286, + "end": 40.35574429, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.2957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.2957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.30071017, + "coreId": 0, + "status": 0 + }, + { + "start": 40.30575611, + "end": 40.32575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 40.30578958, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.31572835, + "coreId": 0, + "status": 0 + }, + { + "start": 40.31576636, + "end": 40.33576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.32071002, + "coreId": 0, + "status": 0 + }, + { + "start": 40.32575637, + "end": 40.46575657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 40.32578984, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.3357283, + "coreId": 0, + "status": 0 + }, + { + "start": 40.33576626, + "end": 40.35576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.34070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.34580269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.34582707, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.35571587, + "coreId": 0, + "status": 0 + }, + { + "start": 40.35574429, + "end": 40.37574411, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 40.35576646, + "end": 40.37576632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.36071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.36576524, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.36578958, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.37071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.37571579, + "coreId": 0, + "status": 0 + }, + { + "start": 40.37576632, + "end": 40.40580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 40.38576525, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.38578958, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.39071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.39571553, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.39575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.4057656, + "coreId": 0, + "status": 0 + }, + { + "start": 40.40580309, + "end": 40.42580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.41071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.41571551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.41575293, + "coreId": 0, + "status": 0 + }, + { + "start": 40.42580281, + "end": 40.44583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.43071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.43571578, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.43575346, + "coreId": 0, + "status": 0 + }, + { + "start": 40.44583986, + "end": 40.46580311, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.45071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.4557283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.4557532, + "coreId": 0, + "status": 0 + }, + { + "start": 40.46575657, + "end": 40.54579773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.46577296, + "end": 40.48579689, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 40.46580311, + "end": 40.47872392, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 40.47071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.47572847, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.47575362, + "coreId": 0, + "status": 0 + }, + { + "start": 40.47872392, + "end": 40.58580283, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.48571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.48573499, + "coreId": 0, + "status": 0 + }, + { + "start": 40.48870293, + "end": 40.49371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.49571003, + "coreId": 0, + "status": 0 + }, + { + "start": 40.49670292, + "end": 40.50576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.50571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.50573496, + "coreId": 0, + "status": 0 + }, + { + "start": 40.50870293, + "end": 40.51371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.51571024, + "coreId": 0, + "status": 0 + }, + { + "start": 40.51770294, + "end": 40.52576082, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.52571005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.52573529, + "coreId": 0, + "status": 0 + }, + { + "start": 40.52870297, + "end": 40.53371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.53571025, + "coreId": 0, + "status": 0 + }, + { + "start": 40.53770295, + "end": 40.5457731, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.54574757, + "coreId": 0, + "status": 0 + }, + { + "start": 40.54579773, + "end": 40.58575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.54870294, + "end": 40.55371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.55571003, + "coreId": 0, + "status": 0 + }, + { + "start": 40.55770291, + "end": 40.56576054, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.56571021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.56573501, + "coreId": 0, + "status": 0 + }, + { + "start": 40.56870293, + "end": 40.57371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 40.57575313, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.58071019, + "coreId": 0, + "status": 0 + }, + { + "start": 40.58575629, + "end": 40.60575611, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.58580283, + "end": 40.60580255, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.5957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.5957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.60071001, + "coreId": 0, + "status": 0 + }, + { + "start": 40.60575611, + "end": 40.62575656, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.60580255, + "end": 40.62580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.61572815, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.61575305, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.62071003, + "coreId": 0, + "status": 0 + }, + { + "start": 40.62580309, + "end": 40.6458398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.63572849, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.63575339, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.64071019, + "coreId": 0, + "status": 0 + }, + { + "start": 40.64578531, + "end": 40.66575614, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.6458398, + "end": 40.66580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.65572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.65575336, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.66071004, + "coreId": 0, + "status": 0 + }, + { + "start": 40.66575614, + "end": 40.68575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.66580258, + "end": 40.73576641, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.67572816, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.67575306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.68071001, + "coreId": 0, + "status": 0 + }, + { + "start": 40.68575628, + "end": 40.70575629, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.69572805, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.69575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.70071017, + "coreId": 0, + "status": 0 + }, + { + "start": 40.70575629, + "end": 40.72575657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.71572825, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.71575315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.72070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.7357284, + "coreId": 0, + "status": 0 + }, + { + "start": 40.73576641, + "end": 40.78574779, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 40.74071019, + "coreId": 0, + "status": 0 + }, + { + "start": 40.74578561, + "end": 40.76575655, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.75572849, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.75575339, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.76071001, + "coreId": 0, + "status": 0 + }, + { + "start": 40.76575655, + "end": 40.88575646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.76577294, + "end": 40.78578499, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.77572848, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.77575363, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.77871005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.78571004, + "coreId": 0, + "status": 0 + }, + { + "start": 40.78574779, + "end": 40.80574779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 40.78578499, + "end": 40.79576045, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 40.78870294, + "end": 40.79371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.79572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.80571003, + "coreId": 0, + "status": 0 + }, + { + "start": 40.80574779, + "end": 40.91576635, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 40.80578498, + "end": 40.81576034, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 40.80870294, + "end": 40.81371109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.81571023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.82571001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.82573525, + "coreId": 0, + "status": 0 + }, + { + "start": 40.82578545, + "end": 40.8357606, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 40.82870291, + "end": 40.83371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.83571023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.84574765, + "coreId": 0, + "status": 0 + }, + { + "start": 40.84582213, + "end": 40.85576076, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 40.84870291, + "end": 40.85371107, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.85571026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.86571021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.86573501, + "coreId": 0, + "status": 0 + }, + { + "start": 40.86870293, + "end": 40.87371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 40.87575313, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.88071021, + "coreId": 0, + "status": 0 + }, + { + "start": 40.88575646, + "end": 40.90575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 40.88577285, + "end": 40.95574415, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 40.89572823, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.89575313, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.90071016, + "coreId": 0, + "status": 0 + }, + { + "start": 40.90575628, + "end": 40.92575654, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 40.90578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.91572834, + "coreId": 0, + "status": 0 + }, + { + "start": 40.91576635, + "end": 40.9357663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.92071016, + "coreId": 0, + "status": 0 + }, + { + "start": 40.92575654, + "end": 41.06575675, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 40.92579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.93572834, + "coreId": 0, + "status": 0 + }, + { + "start": 40.9357663, + "end": 40.95576632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.94071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.94580269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.94582698, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.95571573, + "coreId": 0, + "status": 0 + }, + { + "start": 40.95574415, + "end": 40.97574394, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 40.95576632, + "end": 40.97576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 40.96071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.96576543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.96578977, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.97070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.97571562, + "coreId": 0, + "status": 0 + }, + { + "start": 40.97576615, + "end": 41.00580304, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 40.98576545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.98578978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 40.99071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 40.99571554, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 40.99575296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.00576564, + "coreId": 0, + "status": 0 + }, + { + "start": 41.00580304, + "end": 41.02580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.01071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.01571557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.01575299, + "coreId": 0, + "status": 0 + }, + { + "start": 41.02580309, + "end": 41.04583986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.03071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.03571562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.0357533, + "coreId": 0, + "status": 0 + }, + { + "start": 41.04583986, + "end": 41.06580329, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.05071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.05572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.05575321, + "coreId": 0, + "status": 0 + }, + { + "start": 41.06575675, + "end": 41.1457979, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.06577314, + "end": 41.08579695, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 41.06580329, + "end": 41.07872414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 41.0707102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.07572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.07575346, + "coreId": 0, + "status": 0 + }, + { + "start": 41.07872414, + "end": 41.18580305, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.08571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.08573496, + "coreId": 0, + "status": 0 + }, + { + "start": 41.08870294, + "end": 41.09371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.09571007, + "coreId": 0, + "status": 0 + }, + { + "start": 41.09670291, + "end": 41.10576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.10571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.10573496, + "coreId": 0, + "status": 0 + }, + { + "start": 41.10870292, + "end": 41.11371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.11571005, + "coreId": 0, + "status": 0 + }, + { + "start": 41.11770295, + "end": 41.12576099, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.12571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.12573546, + "coreId": 0, + "status": 0 + }, + { + "start": 41.12870295, + "end": 41.13371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.13571003, + "coreId": 0, + "status": 0 + }, + { + "start": 41.13770293, + "end": 41.14577327, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.14574774, + "coreId": 0, + "status": 0 + }, + { + "start": 41.1457979, + "end": 41.18575651, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.14870292, + "end": 41.1537109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.15571003, + "coreId": 0, + "status": 0 + }, + { + "start": 41.15770293, + "end": 41.16576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.16571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.16573496, + "coreId": 0, + "status": 0 + }, + { + "start": 41.16870291, + "end": 41.17371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 41.17575312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.18071002, + "coreId": 0, + "status": 0 + }, + { + "start": 41.18575651, + "end": 41.20575614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.18580305, + "end": 41.20580258, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.1957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.1957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.20071002, + "coreId": 0, + "status": 0 + }, + { + "start": 41.20575614, + "end": 41.22575637, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.20580258, + "end": 41.22580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.21572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.21575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.22071016, + "coreId": 0, + "status": 0 + }, + { + "start": 41.22580281, + "end": 41.24583977, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.23572853, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.23575343, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.2407102, + "coreId": 0, + "status": 0 + }, + { + "start": 41.24578528, + "end": 41.26575617, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.24583977, + "end": 41.26580261, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.25572846, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.25575336, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.26071019, + "coreId": 0, + "status": 0 + }, + { + "start": 41.26575617, + "end": 41.28575632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.26580261, + "end": 41.33576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.27572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.27575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.28071019, + "coreId": 0, + "status": 0 + }, + { + "start": 41.28575632, + "end": 41.30575651, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.29572804, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.29575294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.3007102, + "coreId": 0, + "status": 0 + }, + { + "start": 41.30575651, + "end": 41.32575654, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.31572803, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.31575293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.32071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.33572842, + "coreId": 0, + "status": 0 + }, + { + "start": 41.33576643, + "end": 41.38574791, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 41.34071017, + "coreId": 0, + "status": 0 + }, + { + "start": 41.34578564, + "end": 41.36575674, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.35572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.35575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.36071019, + "coreId": 0, + "status": 0 + }, + { + "start": 41.36575674, + "end": 41.48575649, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.36577313, + "end": 41.38578511, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.37572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.37575349, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.3787102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.38571016, + "coreId": 0, + "status": 0 + }, + { + "start": 41.38574791, + "end": 41.40574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 41.38578511, + "end": 41.39576045, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 41.38870295, + "end": 41.3937111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.39572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.4057102, + "coreId": 0, + "status": 0 + }, + { + "start": 41.40574796, + "end": 41.51576618, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 41.40578515, + "end": 41.41576037, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 41.40870291, + "end": 41.41371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.41571026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.42571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.4257354, + "coreId": 0, + "status": 0 + }, + { + "start": 41.4257856, + "end": 41.43576044, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 41.42870294, + "end": 41.43371106, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.43571007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.44574765, + "coreId": 0, + "status": 0 + }, + { + "start": 41.44582204, + "end": 41.45576059, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 41.44870296, + "end": 41.45371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.45571009, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.46571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.46573498, + "coreId": 0, + "status": 0 + }, + { + "start": 41.46870293, + "end": 41.47371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 41.47575296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.48071019, + "coreId": 0, + "status": 0 + }, + { + "start": 41.48575649, + "end": 41.50575631, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.48577288, + "end": 41.55574413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.49572803, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.49575293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.50071022, + "coreId": 0, + "status": 0 + }, + { + "start": 41.50575631, + "end": 41.52575655, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 41.50578978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.51572817, + "coreId": 0, + "status": 0 + }, + { + "start": 41.51576618, + "end": 41.53576628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.52071016, + "coreId": 0, + "status": 0 + }, + { + "start": 41.52575655, + "end": 41.66575677, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 41.52579002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.53572832, + "coreId": 0, + "status": 0 + }, + { + "start": 41.53576628, + "end": 41.5557663, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.5407102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.54580269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.54582698, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.55571571, + "coreId": 0, + "status": 0 + }, + { + "start": 41.55574413, + "end": 41.57574394, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 41.5557663, + "end": 41.57576615, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.5607102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.56576544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.56578978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.57071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.57571562, + "coreId": 0, + "status": 0 + }, + { + "start": 41.57576615, + "end": 41.6058031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 41.58576544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.58578977, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.59071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.59571552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.59575294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.6057656, + "coreId": 0, + "status": 0 + }, + { + "start": 41.6058031, + "end": 41.62580302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.61071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.61571553, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.61575295, + "coreId": 0, + "status": 0 + }, + { + "start": 41.62580302, + "end": 41.64583996, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.63071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.63571561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.63575329, + "coreId": 0, + "status": 0 + }, + { + "start": 41.64583996, + "end": 41.6658034, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.65071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.65572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.65575319, + "coreId": 0, + "status": 0 + }, + { + "start": 41.66575677, + "end": 41.74579792, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.66577316, + "end": 41.68579687, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 41.6658034, + "end": 41.67872411, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 41.67071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.67572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.67575348, + "coreId": 0, + "status": 0 + }, + { + "start": 41.67872411, + "end": 41.78580309, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.68571017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.68573497, + "coreId": 0, + "status": 0 + }, + { + "start": 41.68870296, + "end": 41.69371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.69571004, + "coreId": 0, + "status": 0 + }, + { + "start": 41.69670293, + "end": 41.70576055, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.70571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.70573502, + "coreId": 0, + "status": 0 + }, + { + "start": 41.70870291, + "end": 41.71371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.71571003, + "coreId": 0, + "status": 0 + }, + { + "start": 41.71770293, + "end": 41.72576095, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.72571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.72573542, + "coreId": 0, + "status": 0 + }, + { + "start": 41.72870292, + "end": 41.73371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.73571006, + "coreId": 0, + "status": 0 + }, + { + "start": 41.73770291, + "end": 41.74577329, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.74574776, + "coreId": 0, + "status": 0 + }, + { + "start": 41.74579792, + "end": 41.78575646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.74870294, + "end": 41.75371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.75571005, + "coreId": 0, + "status": 0 + }, + { + "start": 41.75770294, + "end": 41.76576055, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.76571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.76573502, + "coreId": 0, + "status": 0 + }, + { + "start": 41.76870291, + "end": 41.77371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 41.77575296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.78071018, + "coreId": 0, + "status": 0 + }, + { + "start": 41.78575646, + "end": 41.80575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.78580309, + "end": 41.80580281, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.79572807, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.79575297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.8007102, + "coreId": 0, + "status": 0 + }, + { + "start": 41.80575628, + "end": 41.82575657, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.80580281, + "end": 41.82580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.81572818, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.81575308, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.82071003, + "coreId": 0, + "status": 0 + }, + { + "start": 41.82580301, + "end": 41.84583995, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.83572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.83575323, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.84071002, + "coreId": 0, + "status": 0 + }, + { + "start": 41.84578546, + "end": 41.86575631, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.84583995, + "end": 41.86580275, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.85572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.85575319, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.86071002, + "coreId": 0, + "status": 0 + }, + { + "start": 41.86575631, + "end": 41.88575616, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.86580275, + "end": 41.93576646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.87572834, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.87575324, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.88071001, + "coreId": 0, + "status": 0 + }, + { + "start": 41.88575616, + "end": 41.90575646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.89572824, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.89575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.90071, + "coreId": 0, + "status": 0 + }, + { + "start": 41.90575646, + "end": 41.92575659, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.91572805, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.91575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.92070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 41.93572845, + "coreId": 0, + "status": 0 + }, + { + "start": 41.93576646, + "end": 41.98574791, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 41.94071, + "coreId": 0, + "status": 0 + }, + { + "start": 41.94578561, + "end": 41.96575675, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.95572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.95575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.96071003, + "coreId": 0, + "status": 0 + }, + { + "start": 41.96575675, + "end": 42.08575648, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 41.96577314, + "end": 41.98578511, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 41.97572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 41.97575344, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.97871024, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 41.98571016, + "coreId": 0, + "status": 0 + }, + { + "start": 41.98574791, + "end": 42.00574795, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 41.98578511, + "end": 41.99576032, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 41.98870294, + "end": 41.99371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 41.99572275, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.00571019, + "coreId": 0, + "status": 0 + }, + { + "start": 42.00574795, + "end": 42.11576634, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 42.00578514, + "end": 42.01576019, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 42.00870295, + "end": 42.01371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.01571008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.02571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.0257354, + "coreId": 0, + "status": 0 + }, + { + "start": 42.0257856, + "end": 42.03576043, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 42.02870295, + "end": 42.03371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.03571006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.04574765, + "coreId": 0, + "status": 0 + }, + { + "start": 42.04582204, + "end": 42.05576054, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 42.04870291, + "end": 42.05371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.05571004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.06571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.06573498, + "coreId": 0, + "status": 0 + }, + { + "start": 42.06870291, + "end": 42.07371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 42.07575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.08071002, + "coreId": 0, + "status": 0 + }, + { + "start": 42.08575648, + "end": 42.10575614, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.08577287, + "end": 42.15574426, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.0957282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.0957531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.10071001, + "coreId": 0, + "status": 0 + }, + { + "start": 42.10575614, + "end": 42.12575638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 42.10578961, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.11572833, + "coreId": 0, + "status": 0 + }, + { + "start": 42.11576634, + "end": 42.13576648, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.12071016, + "coreId": 0, + "status": 0 + }, + { + "start": 42.12575638, + "end": 42.26575676, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 42.12578985, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.13572852, + "coreId": 0, + "status": 0 + }, + { + "start": 42.13576648, + "end": 42.15576643, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.1407102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.14580252, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.14582681, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.15571584, + "coreId": 0, + "status": 0 + }, + { + "start": 42.15574426, + "end": 42.17574413, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 42.15576643, + "end": 42.17576634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.1607102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.16576529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.16578963, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.17070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.17571581, + "coreId": 0, + "status": 0 + }, + { + "start": 42.17576634, + "end": 42.20580314, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 42.18576546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.18578979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.19070999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.19571552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.19575294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.20576565, + "coreId": 0, + "status": 0 + }, + { + "start": 42.20580314, + "end": 42.22580307, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.21071001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.21571557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.21575299, + "coreId": 0, + "status": 0 + }, + { + "start": 42.22580307, + "end": 42.24583989, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.23071003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.23571564, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.23575332, + "coreId": 0, + "status": 0 + }, + { + "start": 42.24583989, + "end": 42.26580339, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.25071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.25572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.25575322, + "coreId": 0, + "status": 0 + }, + { + "start": 42.26575676, + "end": 42.34579792, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.26577315, + "end": 42.28579695, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 42.26580339, + "end": 42.27872413, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 42.27071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.2757283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.27575345, + "coreId": 0, + "status": 0 + }, + { + "start": 42.27872413, + "end": 42.38580304, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.28571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.28573496, + "coreId": 0, + "status": 0 + }, + { + "start": 42.28870293, + "end": 42.29371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.2957102, + "coreId": 0, + "status": 0 + }, + { + "start": 42.29670293, + "end": 42.30576052, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.30571019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.30573499, + "coreId": 0, + "status": 0 + }, + { + "start": 42.30870293, + "end": 42.31371108, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.3157102, + "coreId": 0, + "status": 0 + }, + { + "start": 42.31770291, + "end": 42.32576093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.32571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.3257354, + "coreId": 0, + "status": 0 + }, + { + "start": 42.32870293, + "end": 42.3337111, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.33571004, + "coreId": 0, + "status": 0 + }, + { + "start": 42.33770295, + "end": 42.34577329, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.34574776, + "coreId": 0, + "status": 0 + }, + { + "start": 42.34579792, + "end": 42.3857565, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.34870296, + "end": 42.35371105, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.35571009, + "coreId": 0, + "status": 0 + }, + { + "start": 42.35770291, + "end": 42.36576053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.3657102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.365735, + "coreId": 0, + "status": 0 + }, + { + "start": 42.36870291, + "end": 42.37371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 42.37575296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.38071016, + "coreId": 0, + "status": 0 + }, + { + "start": 42.3857565, + "end": 42.40575632, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.38580304, + "end": 42.40580276, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.39572803, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.39575293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.40071022, + "coreId": 0, + "status": 0 + }, + { + "start": 42.40575632, + "end": 42.42575656, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.40580276, + "end": 42.42580309, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.41572815, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.41575305, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.42071016, + "coreId": 0, + "status": 0 + }, + { + "start": 42.42580309, + "end": 42.44583996, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.4357283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.4357532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.4407102, + "coreId": 0, + "status": 0 + }, + { + "start": 42.44578547, + "end": 42.46575631, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.44583996, + "end": 42.46580275, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.45572831, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.45575321, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.46071019, + "coreId": 0, + "status": 0 + }, + { + "start": 42.46575631, + "end": 42.48575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.46580275, + "end": 42.5357664, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.47572816, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.47575306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.48071016, + "coreId": 0, + "status": 0 + }, + { + "start": 42.48575628, + "end": 42.50575647, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.49572807, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.49575297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.50071018, + "coreId": 0, + "status": 0 + }, + { + "start": 42.50575647, + "end": 42.52575658, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.51572805, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.51575295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.52071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.53572839, + "coreId": 0, + "status": 0 + }, + { + "start": 42.5357664, + "end": 42.58574791, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 42.54071016, + "coreId": 0, + "status": 0 + }, + { + "start": 42.54578561, + "end": 42.56575675, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.55572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.55575322, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.56071017, + "coreId": 0, + "status": 0 + }, + { + "start": 42.56575675, + "end": 42.68575646, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.56577314, + "end": 42.58578511, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.57572833, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.57575348, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.5787102, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.58571016, + "coreId": 0, + "status": 0 + }, + { + "start": 42.58574791, + "end": 42.60574796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 42.58578511, + "end": 42.59576029, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 42.58870296, + "end": 42.59371092, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.59572272, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.6057102, + "coreId": 0, + "status": 0 + }, + { + "start": 42.60574796, + "end": 42.71576616, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 42.60578515, + "end": 42.61576014, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 42.60870291, + "end": 42.61371091, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.61571003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.62571018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.62573542, + "coreId": 0, + "status": 0 + }, + { + "start": 42.62578562, + "end": 42.63576044, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 42.62870292, + "end": 42.63371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.63571007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.64574765, + "coreId": 0, + "status": 0 + }, + { + "start": 42.64582204, + "end": 42.65576058, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 42.64870297, + "end": 42.6537109, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.65571008, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.66571022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.66573502, + "coreId": 0, + "status": 0 + }, + { + "start": 42.66870291, + "end": 42.67371093, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 42.67575297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.6807102, + "coreId": 0, + "status": 0 + }, + { + "start": 42.68575646, + "end": 42.70575628, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.68577285, + "end": 42.75574409, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.69572807, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.69575297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.70071022, + "coreId": 0, + "status": 0 + }, + { + "start": 42.70575628, + "end": 42.72575654, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 42.70578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.71572815, + "coreId": 0, + "status": 0 + }, + { + "start": 42.71576616, + "end": 42.73576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.72071002, + "coreId": 0, + "status": 0 + }, + { + "start": 42.72575654, + "end": 42.86575672, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 42.72579001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.7357283, + "coreId": 0, + "status": 0 + }, + { + "start": 42.73576626, + "end": 42.75576626, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.74071004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.74580269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.74582698, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.75571567, + "coreId": 0, + "status": 0 + }, + { + "start": 42.75574409, + "end": 42.77574414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 42.75576626, + "end": 42.77576635, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.76071002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.76576541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.76578975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.77071018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.77571582, + "coreId": 0, + "status": 0 + }, + { + "start": 42.77576635, + "end": 42.80580302, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 42.78576527, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.7857896, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.79071019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.79571572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.79575314, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.80576562, + "coreId": 0, + "status": 0 + }, + { + "start": 42.80580302, + "end": 42.82580301, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.81071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.81571554, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.81575296, + "coreId": 0, + "status": 0 + }, + { + "start": 42.82580301, + "end": 42.84583994, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.83071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.83571561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.83575329, + "coreId": 0, + "status": 0 + }, + { + "start": 42.84583994, + "end": 42.86580326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.85071017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.85572832, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.85575322, + "coreId": 0, + "status": 0 + }, + { + "start": 42.86575672, + "end": 42.94579791, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.86577311, + "end": 42.88579695, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 42.86580326, + "end": 42.87872413, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 42.87071016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 42.87572829, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.87575344, + "coreId": 0, + "status": 0 + }, + { + "start": 42.87872413, + "end": 42.97577347, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.88571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.88573496, + "coreId": 0, + "status": 0 + }, + { + "start": 42.88870291, + "end": 42.89371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.89571007, + "coreId": 0, + "status": 0 + }, + { + "start": 42.89670291, + "end": 42.90576049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.90571016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.90573496, + "coreId": 0, + "status": 0 + }, + { + "start": 42.90870292, + "end": 42.91371089, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.91571007, + "coreId": 0, + "status": 0 + }, + { + "start": 42.91770292, + "end": 42.92576098, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.92571021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.92573545, + "coreId": 0, + "status": 0 + }, + { + "start": 42.92870295, + "end": 42.93371088, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.93571006, + "coreId": 0, + "status": 0 + }, + { + "start": 42.93770291, + "end": 42.94577328, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.94574775, + "coreId": 0, + "status": 0 + }, + { + "start": 42.94579791, + "end": 42.98576374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.94870293, + "end": 42.95371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.95571732, + "coreId": 0, + "status": 0 + }, + { + "start": 42.9577102, + "end": 42.96576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.96571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 42.96574225, + "coreId": 0, + "status": 0 + }, + { + "start": 42.96771022, + "end": 42.97271837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 42.97577347, + "end": 42.98581029, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 42.98071728, + "coreId": 0, + "status": 0 + }, + { + "start": 42.98576374, + "end": 43.08576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 42.98581029, + "end": 43.07577368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 42.99573547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 42.99576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.00577253, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.00579686, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.01573561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.01576052, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.02577278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.02579711, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.03573575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.03576066, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.04580972, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.04583401, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.05573578, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.05576069, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.06577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.06579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.07573556, + "coreId": 0, + "status": 0 + }, + { + "start": 43.07577368, + "end": 43.0858101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.08071742, + "coreId": 0, + "status": 0 + }, + { + "start": 43.08576356, + "end": 43.10576376, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.08577991, + "end": 43.0957511, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.0858101, + "end": 43.09577327, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.09071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.09572278, + "coreId": 0, + "status": 0 + }, + { + "start": 43.09577327, + "end": 43.1058104, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.10071742, + "coreId": 0, + "status": 0 + }, + { + "start": 43.10576376, + "end": 43.16576401, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.10578016, + "end": 43.15575135, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.1058104, + "end": 43.14584734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.11071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.11572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.1157602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.12577298, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.12579731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.13573566, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.13576057, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.14581011, + "coreId": 0, + "status": 0 + }, + { + "start": 43.14584734, + "end": 43.15577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.1507173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.15572293, + "coreId": 0, + "status": 0 + }, + { + "start": 43.15577352, + "end": 43.16581065, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.16071742, + "coreId": 0, + "status": 0 + }, + { + "start": 43.16576401, + "end": 43.24580509, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.16578041, + "end": 43.1757516, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.16581065, + "end": 43.17577378, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.17071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.17572277, + "coreId": 0, + "status": 0 + }, + { + "start": 43.1757516, + "end": 43.18579242, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.17577378, + "end": 43.18575521, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 43.17871752, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.18573008, + "coreId": 0, + "status": 0 + }, + { + "start": 43.18575521, + "end": 43.20575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 43.18579242, + "end": 43.20579238, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.18871022, + "end": 43.19371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.19571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.20573005, + "coreId": 0, + "status": 0 + }, + { + "start": 43.20575518, + "end": 43.22575562, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 43.20579238, + "end": 43.22579287, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.20871017, + "end": 43.21371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.21571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.2257304, + "coreId": 0, + "status": 0 + }, + { + "start": 43.22575562, + "end": 43.27577327, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 43.22579287, + "end": 43.2357677, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 43.22871023, + "end": 43.23371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.23571732, + "coreId": 0, + "status": 0 + }, + { + "start": 43.23771018, + "end": 43.2457805, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.24575497, + "coreId": 0, + "status": 0 + }, + { + "start": 43.24580509, + "end": 43.28576377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.24771023, + "end": 43.25271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.25573014, + "coreId": 0, + "status": 0 + }, + { + "start": 43.25771017, + "end": 43.26576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.26571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.26574224, + "coreId": 0, + "status": 0 + }, + { + "start": 43.26771017, + "end": 43.27271835, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 43.27577327, + "end": 43.28581041, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.28071745, + "coreId": 0, + "status": 0 + }, + { + "start": 43.28576377, + "end": 43.32576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.28581041, + "end": 43.32581036, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.29071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.29573534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.29576025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.30577272, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.30579705, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.31573543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.31576034, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.32071745, + "coreId": 0, + "status": 0 + }, + { + "start": 43.32578017, + "end": 43.33575141, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.32581036, + "end": 43.33577358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.33071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.33572283, + "coreId": 0, + "status": 0 + }, + { + "start": 43.33577358, + "end": 43.3458474, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.34071743, + "coreId": 0, + "status": 0 + }, + { + "start": 43.34579283, + "end": 43.40576376, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.34581725, + "end": 43.3957511, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.3458474, + "end": 43.38580999, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.35071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.35572293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.35576046, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.36577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.36579702, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.3757354, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.37576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.38577269, + "coreId": 0, + "status": 0 + }, + { + "start": 43.38580999, + "end": 43.39577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.39071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.39572278, + "coreId": 0, + "status": 0 + }, + { + "start": 43.39577326, + "end": 43.4058103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.40071725, + "coreId": 0, + "status": 0 + }, + { + "start": 43.40576376, + "end": 43.46576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.40578015, + "end": 43.41575109, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.4058103, + "end": 43.41577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.41071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.41572277, + "coreId": 0, + "status": 0 + }, + { + "start": 43.41575109, + "end": 43.45575138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.41577326, + "end": 43.45577354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.42071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.42577297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.4257973, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.43573566, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.43576056, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.44580992, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.44583425, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.45071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.45572296, + "coreId": 0, + "status": 0 + }, + { + "start": 43.45577354, + "end": 43.46581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.46071742, + "coreId": 0, + "status": 0 + }, + { + "start": 43.46576398, + "end": 43.5458052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.46578037, + "end": 43.47575161, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.46581052, + "end": 43.47577378, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.47071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.47572278, + "coreId": 0, + "status": 0 + }, + { + "start": 43.47575161, + "end": 43.48579241, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.47577378, + "end": 43.48575522, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 43.47871751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.48573009, + "coreId": 0, + "status": 0 + }, + { + "start": 43.48575522, + "end": 43.50575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 43.48579241, + "end": 43.50579237, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.4887102, + "end": 43.49371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.49571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.50573005, + "coreId": 0, + "status": 0 + }, + { + "start": 43.50575518, + "end": 43.52575562, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 43.50579237, + "end": 43.52579286, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.50871017, + "end": 43.51371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.51571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.5257304, + "coreId": 0, + "status": 0 + }, + { + "start": 43.52575562, + "end": 43.57577329, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 43.52579286, + "end": 43.53576766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 43.52871023, + "end": 43.53371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.53571729, + "coreId": 0, + "status": 0 + }, + { + "start": 43.5377102, + "end": 43.54578057, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.54575504, + "coreId": 0, + "status": 0 + }, + { + "start": 43.5458052, + "end": 43.58576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.54771017, + "end": 43.55271837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.55573012, + "coreId": 0, + "status": 0 + }, + { + "start": 43.55771019, + "end": 43.56576775, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.56571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.56574222, + "coreId": 0, + "status": 0 + }, + { + "start": 43.56771017, + "end": 43.57271832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 43.57577329, + "end": 43.58581026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.5807173, + "coreId": 0, + "status": 0 + }, + { + "start": 43.58576372, + "end": 43.6257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.58581026, + "end": 43.62581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.59071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.5957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.5957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.60577272, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.60579705, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.61573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.61576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.62071742, + "coreId": 0, + "status": 0 + }, + { + "start": 43.62578014, + "end": 43.63575139, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.62581033, + "end": 43.63577355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.63071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.63572281, + "coreId": 0, + "status": 0 + }, + { + "start": 43.63577355, + "end": 43.6458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.6407173, + "coreId": 0, + "status": 0 + }, + { + "start": 43.64579271, + "end": 43.70576378, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.64581704, + "end": 43.69575116, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.6458472, + "end": 43.68580999, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.65071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.65572295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.65576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.66577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.66579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.67573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.67576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.68577269, + "coreId": 0, + "status": 0 + }, + { + "start": 43.68580999, + "end": 43.69577332, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.69071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.69572284, + "coreId": 0, + "status": 0 + }, + { + "start": 43.69577332, + "end": 43.70581032, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.70071726, + "coreId": 0, + "status": 0 + }, + { + "start": 43.70576378, + "end": 43.76576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.70578017, + "end": 43.71575111, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.70581032, + "end": 43.71577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.71071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.71572279, + "coreId": 0, + "status": 0 + }, + { + "start": 43.71575111, + "end": 43.75575138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.71577328, + "end": 43.75577354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.72071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.72577296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.72579729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.7357357, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.7357606, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.7458101, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.74583444, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.75071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.75572296, + "coreId": 0, + "status": 0 + }, + { + "start": 43.75577354, + "end": 43.76581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.76071745, + "coreId": 0, + "status": 0 + }, + { + "start": 43.76576398, + "end": 43.88576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.76578037, + "end": 43.7757516, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.76581052, + "end": 43.77577377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.77071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.77572277, + "coreId": 0, + "status": 0 + }, + { + "start": 43.7757516, + "end": 43.78579239, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.77577377, + "end": 43.78575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 43.7787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.78573006, + "coreId": 0, + "status": 0 + }, + { + "start": 43.78575519, + "end": 43.80575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 43.78579239, + "end": 43.80579237, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.78871017, + "end": 43.79371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.79571731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.80573005, + "coreId": 0, + "status": 0 + }, + { + "start": 43.80575518, + "end": 43.82575568, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 43.80579237, + "end": 43.82579292, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.80871019, + "end": 43.81371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.81571735, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.82573046, + "coreId": 0, + "status": 0 + }, + { + "start": 43.82575568, + "end": 43.84576791, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 43.82579292, + "end": 43.84582934, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.8287102, + "end": 43.83371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.83571729, + "coreId": 0, + "status": 0 + }, + { + "start": 43.84576791, + "end": 43.87577346, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 43.84582934, + "end": 43.85576799, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 43.84871017, + "end": 43.85371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.85571749, + "coreId": 0, + "status": 0 + }, + { + "start": 43.85771022, + "end": 43.86576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.86571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.86574225, + "coreId": 0, + "status": 0 + }, + { + "start": 43.86771021, + "end": 43.87271836, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 43.87577346, + "end": 43.88581011, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.88071726, + "coreId": 0, + "status": 0 + }, + { + "start": 43.88577996, + "end": 43.8957513, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.88581011, + "end": 43.89577347, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.89071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.89572298, + "coreId": 0, + "status": 0 + }, + { + "start": 43.8957513, + "end": 43.93575159, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.89577347, + "end": 43.93577375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.90071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.90577251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.90579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.91573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.91576048, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.9257728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.92579713, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.93071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.93572301, + "coreId": 0, + "status": 0 + }, + { + "start": 43.93577375, + "end": 43.94584711, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.94071742, + "coreId": 0, + "status": 0 + }, + { + "start": 43.94579263, + "end": 44.00576376, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 43.94581696, + "end": 43.97575138, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 43.94584711, + "end": 43.97577359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 43.95071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.95572313, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.95576065, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.9657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.96579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 43.97071731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.97572306, + "coreId": 0, + "status": 0 + }, + { + "start": 43.97577359, + "end": 43.99577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 43.98577273, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 43.98579706, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 43.9957353, + "coreId": 0, + "status": 0 + }, + { + "start": 43.99577326, + "end": 44.00581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.00071748, + "coreId": 0, + "status": 0 + }, + { + "start": 44.00576376, + "end": 44.06576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.00578015, + "end": 44.03575148, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.00581039, + "end": 44.02581025, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.01071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.01573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.01576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.02577295, + "coreId": 0, + "status": 0 + }, + { + "start": 44.02581025, + "end": 44.03577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.03071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.0357229, + "coreId": 0, + "status": 0 + }, + { + "start": 44.03577369, + "end": 44.05577351, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.04580991, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.04583424, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.05573555, + "coreId": 0, + "status": 0 + }, + { + "start": 44.05577351, + "end": 44.06581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.06071743, + "coreId": 0, + "status": 0 + }, + { + "start": 44.06576398, + "end": 44.22576383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.06578037, + "end": 44.08580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 44.06581052, + "end": 44.07873139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 44.07071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.07573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.0757607, + "coreId": 0, + "status": 0 + }, + { + "start": 44.07873139, + "end": 44.10575519, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 44.08574222, + "coreId": 0, + "status": 0 + }, + { + "start": 44.08771019, + "end": 44.09271817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.09573002, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.10573006, + "coreId": 0, + "status": 0 + }, + { + "start": 44.10575519, + "end": 44.14576796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 44.10579238, + "end": 44.11576744, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 44.1087102, + "end": 44.11371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.11571733, + "coreId": 0, + "status": 0 + }, + { + "start": 44.11771022, + "end": 44.12576819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.12571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.12574266, + "coreId": 0, + "status": 0 + }, + { + "start": 44.12771017, + "end": 44.13271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.13571733, + "coreId": 0, + "status": 0 + }, + { + "start": 44.14576796, + "end": 44.18581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 44.14582945, + "end": 44.15576785, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 44.14871021, + "end": 44.15471837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.15573018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.16571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.16574223, + "coreId": 0, + "status": 0 + }, + { + "start": 44.16579238, + "end": 44.19575109, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.16871018, + "end": 44.17371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.1757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.18577286, + "coreId": 0, + "status": 0 + }, + { + "start": 44.18581026, + "end": 44.19577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.19071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.19572277, + "coreId": 0, + "status": 0 + }, + { + "start": 44.19577326, + "end": 44.21577346, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.20577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.20579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.21573545, + "coreId": 0, + "status": 0 + }, + { + "start": 44.21577346, + "end": 44.22581036, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.22071745, + "coreId": 0, + "status": 0 + }, + { + "start": 44.22576383, + "end": 44.28576359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.22578017, + "end": 44.25575137, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.22581036, + "end": 44.2458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.23071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.23573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.23576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.24580988, + "coreId": 0, + "status": 0 + }, + { + "start": 44.2458472, + "end": 44.27577342, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.25071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.25572295, + "coreId": 0, + "status": 0 + }, + { + "start": 44.25575137, + "end": 44.27575121, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.2657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.26579703, + "coreId": 0, + "status": 0 + }, + { + "start": 44.27577342, + "end": 44.28581003, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.28071742, + "coreId": 0, + "status": 0 + }, + { + "start": 44.28577993, + "end": 44.31575109, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.28581003, + "end": 44.30581032, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.29071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.29573533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.29576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.30577292, + "coreId": 0, + "status": 0 + }, + { + "start": 44.30581032, + "end": 44.31577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.31071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.31572277, + "coreId": 0, + "status": 0 + }, + { + "start": 44.31577326, + "end": 44.33577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.32577294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.32579727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.33573565, + "coreId": 0, + "status": 0 + }, + { + "start": 44.33577366, + "end": 44.34584736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.34071747, + "coreId": 0, + "status": 0 + }, + { + "start": 44.34579287, + "end": 44.50576337, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.34584736, + "end": 44.36581054, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.35071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.35573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.35576047, + "coreId": 0, + "status": 0 + }, + { + "start": 44.36578039, + "end": 44.37575166, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.36581054, + "end": 44.37577383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.37071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.37572283, + "coreId": 0, + "status": 0 + }, + { + "start": 44.37575166, + "end": 44.38579239, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.37577383, + "end": 44.38575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 44.37871748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.38573006, + "coreId": 0, + "status": 0 + }, + { + "start": 44.38575519, + "end": 44.47577346, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 44.38579239, + "end": 44.39576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 44.38871017, + "end": 44.39371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.39571731, + "coreId": 0, + "status": 0 + }, + { + "start": 44.39771022, + "end": 44.40576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.40571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.40574223, + "coreId": 0, + "status": 0 + }, + { + "start": 44.4087102, + "end": 44.41371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.41571734, + "coreId": 0, + "status": 0 + }, + { + "start": 44.41871019, + "end": 44.42576824, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.42573045, + "coreId": 0, + "status": 0 + }, + { + "start": 44.42771017, + "end": 44.43271835, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.43573016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.44575494, + "coreId": 0, + "status": 0 + }, + { + "start": 44.44582933, + "end": 44.46580414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 44.44871018, + "end": 44.45371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.45571748, + "coreId": 0, + "status": 0 + }, + { + "start": 44.45871017, + "end": 44.46576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.46574224, + "coreId": 0, + "status": 0 + }, + { + "start": 44.46771021, + "end": 44.47271835, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 44.47577346, + "end": 44.49577349, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.48071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.48577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.48579709, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.49573552, + "coreId": 0, + "status": 0 + }, + { + "start": 44.49577349, + "end": 44.50580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.50071743, + "coreId": 0, + "status": 0 + }, + { + "start": 44.50576337, + "end": 44.56576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.50577971, + "end": 44.53575158, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.50580981, + "end": 44.5258101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.51071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.51573562, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.51576052, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.5257728, + "coreId": 0, + "status": 0 + }, + { + "start": 44.5258101, + "end": 44.53577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.53071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.535723, + "coreId": 0, + "status": 0 + }, + { + "start": 44.53575158, + "end": 44.55575156, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.53577374, + "end": 44.55577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.54580978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.54583407, + "coreId": 0, + "status": 0 + }, + { + "start": 44.55577373, + "end": 44.56581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.56071742, + "coreId": 0, + "status": 0 + }, + { + "start": 44.56576355, + "end": 44.62576386, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.5657799, + "end": 44.59575112, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.56581009, + "end": 44.58581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.57071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.57573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.57576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.58577268, + "coreId": 0, + "status": 0 + }, + { + "start": 44.58581007, + "end": 44.59577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.59071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.5957228, + "coreId": 0, + "status": 0 + }, + { + "start": 44.59577328, + "end": 44.61577329, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.6057729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.60579728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.61573532, + "coreId": 0, + "status": 0 + }, + { + "start": 44.61577329, + "end": 44.6258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.62071745, + "coreId": 0, + "status": 0 + }, + { + "start": 44.62576386, + "end": 44.74580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.6257802, + "end": 44.65575136, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.6258103, + "end": 44.64584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.63071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.63573569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.63576059, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.64580991, + "coreId": 0, + "status": 0 + }, + { + "start": 44.64584722, + "end": 44.67577377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.65071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.65572294, + "coreId": 0, + "status": 0 + }, + { + "start": 44.65575136, + "end": 44.6757516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.66577318, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.66579756, + "coreId": 0, + "status": 0 + }, + { + "start": 44.6757516, + "end": 44.6857924, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.67577377, + "end": 44.72575566, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 44.67871751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.68571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.68574225, + "coreId": 0, + "status": 0 + }, + { + "start": 44.6857924, + "end": 44.70580414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 44.68871017, + "end": 44.69371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.69571734, + "coreId": 0, + "status": 0 + }, + { + "start": 44.69871018, + "end": 44.70576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.70573007, + "coreId": 0, + "status": 0 + }, + { + "start": 44.70771017, + "end": 44.71271819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.71572993, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.72571746, + "coreId": 0, + "status": 0 + }, + { + "start": 44.72575566, + "end": 44.76575519, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 44.7257929, + "end": 44.7458412, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 44.72871019, + "end": 44.73371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.73571733, + "coreId": 0, + "status": 0 + }, + { + "start": 44.73771017, + "end": 44.74578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.745755, + "coreId": 0, + "status": 0 + }, + { + "start": 44.74580516, + "end": 44.78576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.74771021, + "end": 44.75271832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.75573013, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.76573006, + "coreId": 0, + "status": 0 + }, + { + "start": 44.76575519, + "end": 44.78581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 44.76871018, + "end": 44.77371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.7757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 44.78071745, + "coreId": 0, + "status": 0 + }, + { + "start": 44.78578011, + "end": 44.8157512, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.78581026, + "end": 44.80581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.79071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.7957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.7957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.80577271, + "coreId": 0, + "status": 0 + }, + { + "start": 44.80581001, + "end": 44.81577341, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.81071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.81572288, + "coreId": 0, + "status": 0 + }, + { + "start": 44.8157512, + "end": 44.83575141, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.81577341, + "end": 44.83577357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.82577296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.82579729, + "coreId": 0, + "status": 0 + }, + { + "start": 44.83577357, + "end": 44.8458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.8407173, + "coreId": 0, + "status": 0 + }, + { + "start": 44.84579271, + "end": 44.90576374, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.84581704, + "end": 44.87575121, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.8458472, + "end": 44.86581012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.85071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.85573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.85576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.86577273, + "coreId": 0, + "status": 0 + }, + { + "start": 44.86581012, + "end": 44.87577342, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.87071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.87572289, + "coreId": 0, + "status": 0 + }, + { + "start": 44.87577342, + "end": 44.89577329, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.88577274, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.88579707, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.89573533, + "coreId": 0, + "status": 0 + }, + { + "start": 44.89577329, + "end": 44.90581028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.9007173, + "coreId": 0, + "status": 0 + }, + { + "start": 44.90576374, + "end": 44.96576401, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.90578013, + "end": 44.93575145, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.90581028, + "end": 44.92581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.91071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.91573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.91576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.92577294, + "coreId": 0, + "status": 0 + }, + { + "start": 44.92581033, + "end": 44.93577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.93071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.93572287, + "coreId": 0, + "status": 0 + }, + { + "start": 44.93575145, + "end": 44.95575135, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 44.93577366, + "end": 44.95577351, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 44.94581004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.94583438, + "coreId": 0, + "status": 0 + }, + { + "start": 44.95577351, + "end": 44.96581055, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.96071744, + "coreId": 0, + "status": 0 + }, + { + "start": 44.96576401, + "end": 45.12576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 44.9657804, + "end": 44.98580421, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 44.96581055, + "end": 44.9787315, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 44.97071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 44.97573561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 44.97576076, + "coreId": 0, + "status": 0 + }, + { + "start": 44.9787315, + "end": 45.00575522, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 44.98573004, + "coreId": 0, + "status": 0 + }, + { + "start": 44.9877102, + "end": 44.99271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 44.99572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.00571746, + "coreId": 0, + "status": 0 + }, + { + "start": 45.00575522, + "end": 45.04576792, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 45.00579241, + "end": 45.0258047, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 45.00871022, + "end": 45.01371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.01571734, + "coreId": 0, + "status": 0 + }, + { + "start": 45.01771018, + "end": 45.02576823, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.02571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.0257427, + "coreId": 0, + "status": 0 + }, + { + "start": 45.02771019, + "end": 45.03271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 45.04576792, + "end": 45.09577346, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 45.04582935, + "end": 45.05576799, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 45.04871018, + "end": 45.05371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.05571749, + "coreId": 0, + "status": 0 + }, + { + "start": 45.05771022, + "end": 45.06576779, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.06571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.06574226, + "coreId": 0, + "status": 0 + }, + { + "start": 45.06771022, + "end": 45.07271834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.0757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.0857727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.08579708, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.09071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.09572297, + "coreId": 0, + "status": 0 + }, + { + "start": 45.09577346, + "end": 45.11577359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.10071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.10577251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.10579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.11573558, + "coreId": 0, + "status": 0 + }, + { + "start": 45.11577359, + "end": 45.12581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.12071745, + "coreId": 0, + "status": 0 + }, + { + "start": 45.12576365, + "end": 45.18576354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 45.12581009, + "end": 45.14584711, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.13071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.13573578, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.13576068, + "coreId": 0, + "status": 0 + }, + { + "start": 45.14581696, + "end": 45.15575156, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.14584711, + "end": 45.15577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.15071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.15572314, + "coreId": 0, + "status": 0 + }, + { + "start": 45.15577373, + "end": 45.17577362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.1657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.16579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.17573561, + "coreId": 0, + "status": 0 + }, + { + "start": 45.17577362, + "end": 45.18581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.18071746, + "coreId": 0, + "status": 0 + }, + { + "start": 45.18577988, + "end": 45.21575115, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.18581007, + "end": 45.20581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.19071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.19573533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.19576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.20577289, + "coreId": 0, + "status": 0 + }, + { + "start": 45.20581038, + "end": 45.21577332, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.21071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.21572283, + "coreId": 0, + "status": 0 + }, + { + "start": 45.21575115, + "end": 45.23575145, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.21577332, + "end": 45.23577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.225773, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.22579733, + "coreId": 0, + "status": 0 + }, + { + "start": 45.23577366, + "end": 45.24584723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.24071744, + "coreId": 0, + "status": 0 + }, + { + "start": 45.24579275, + "end": 45.40576358, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 45.24581712, + "end": 45.27575166, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.24584723, + "end": 45.26581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.25071731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.25573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.25576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.26577312, + "coreId": 0, + "status": 0 + }, + { + "start": 45.26581052, + "end": 45.27577383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.27071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.27572283, + "coreId": 0, + "status": 0 + }, + { + "start": 45.27575166, + "end": 45.2857924, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.27577383, + "end": 45.28575521, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 45.27871748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.28573008, + "coreId": 0, + "status": 0 + }, + { + "start": 45.28575521, + "end": 45.37577326, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 45.2857924, + "end": 45.2957676, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 45.28871017, + "end": 45.29371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.29571735, + "coreId": 0, + "status": 0 + }, + { + "start": 45.29771018, + "end": 45.30576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.30571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.30574224, + "coreId": 0, + "status": 0 + }, + { + "start": 45.3087102, + "end": 45.31371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.31571734, + "coreId": 0, + "status": 0 + }, + { + "start": 45.31871017, + "end": 45.32576822, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.32573043, + "coreId": 0, + "status": 0 + }, + { + "start": 45.3277102, + "end": 45.33271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.33573018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.34575506, + "coreId": 0, + "status": 0 + }, + { + "start": 45.34582951, + "end": 45.36580422, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 45.34871018, + "end": 45.35371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.3557173, + "coreId": 0, + "status": 0 + }, + { + "start": 45.35671019, + "end": 45.36576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.36571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.36574223, + "coreId": 0, + "status": 0 + }, + { + "start": 45.36771023, + "end": 45.37271834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 45.37577326, + "end": 45.39577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.38577286, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.38579724, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.39573531, + "coreId": 0, + "status": 0 + }, + { + "start": 45.39577328, + "end": 45.40581002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.40071747, + "coreId": 0, + "status": 0 + }, + { + "start": 45.40576358, + "end": 45.46576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 45.40581002, + "end": 45.4258104, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.41071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.41573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.41576029, + "coreId": 0, + "status": 0 + }, + { + "start": 45.42578017, + "end": 45.43575139, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.4258104, + "end": 45.43577355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.43071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.43572281, + "coreId": 0, + "status": 0 + }, + { + "start": 45.43577355, + "end": 45.45577354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.44580988, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.44583417, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.45573557, + "coreId": 0, + "status": 0 + }, + { + "start": 45.45577354, + "end": 45.46581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.46071742, + "coreId": 0, + "status": 0 + }, + { + "start": 45.46576356, + "end": 45.52576381, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 45.4657799, + "end": 45.4957511, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.46581009, + "end": 45.48581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.47071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.47573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.47576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.48577271, + "coreId": 0, + "status": 0 + }, + { + "start": 45.48581001, + "end": 45.49577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.49071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.49572278, + "coreId": 0, + "status": 0 + }, + { + "start": 45.49577326, + "end": 45.51577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.50577292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.5057973, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.51573531, + "coreId": 0, + "status": 0 + }, + { + "start": 45.51577328, + "end": 45.52581034, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.52071742, + "coreId": 0, + "status": 0 + }, + { + "start": 45.52576381, + "end": 45.64580506, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 45.52581034, + "end": 45.54584738, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.53071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.53573565, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.53576055, + "coreId": 0, + "status": 0 + }, + { + "start": 45.54581727, + "end": 45.55575137, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.54584738, + "end": 45.55577353, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.55071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.55572295, + "coreId": 0, + "status": 0 + }, + { + "start": 45.55575137, + "end": 45.58579237, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.55577353, + "end": 45.57577378, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.56577315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.56579753, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.57573556, + "coreId": 0, + "status": 0 + }, + { + "start": 45.57577378, + "end": 45.62575566, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 45.5787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.58571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.58574221, + "coreId": 0, + "status": 0 + }, + { + "start": 45.58579237, + "end": 45.60580421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 45.5887102, + "end": 45.59371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.59571731, + "coreId": 0, + "status": 0 + }, + { + "start": 45.5987102, + "end": 45.60576775, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.60573005, + "coreId": 0, + "status": 0 + }, + { + "start": 45.60771018, + "end": 45.61271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.61572992, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.62573044, + "coreId": 0, + "status": 0 + }, + { + "start": 45.62575566, + "end": 45.6657552, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 45.6257929, + "end": 45.64584109, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 45.6287102, + "end": 45.63371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.63571732, + "coreId": 0, + "status": 0 + }, + { + "start": 45.63771017, + "end": 45.64578048, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.64575495, + "coreId": 0, + "status": 0 + }, + { + "start": 45.64580506, + "end": 45.68576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 45.64771018, + "end": 45.65271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.65573033, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.66573007, + "coreId": 0, + "status": 0 + }, + { + "start": 45.6657552, + "end": 45.67577345, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 45.6687102, + "end": 45.67371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 45.67577345, + "end": 45.6858101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.68071729, + "coreId": 0, + "status": 0 + }, + { + "start": 45.68577995, + "end": 45.71575139, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.6858101, + "end": 45.70580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.69071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.69573549, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.69576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.70577251, + "coreId": 0, + "status": 0 + }, + { + "start": 45.70580981, + "end": 45.7157736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.71071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.71572307, + "coreId": 0, + "status": 0 + }, + { + "start": 45.71575139, + "end": 45.73575159, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.7157736, + "end": 45.73577375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.72071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.7257728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.72579713, + "coreId": 0, + "status": 0 + }, + { + "start": 45.73577375, + "end": 45.74584709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.74071745, + "coreId": 0, + "status": 0 + }, + { + "start": 45.74579261, + "end": 45.80576376, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 45.74581694, + "end": 45.7757514, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.74584709, + "end": 45.76581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.75071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.75573576, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.75576066, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.76577269, + "coreId": 0, + "status": 0 + }, + { + "start": 45.76581009, + "end": 45.77577361, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.77071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.77572308, + "coreId": 0, + "status": 0 + }, + { + "start": 45.77577361, + "end": 45.79577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.78577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.78579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.79573532, + "coreId": 0, + "status": 0 + }, + { + "start": 45.79577328, + "end": 45.80581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.80071742, + "coreId": 0, + "status": 0 + }, + { + "start": 45.80576376, + "end": 45.86576404, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 45.80581039, + "end": 45.8258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.81071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.81573532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.81576022, + "coreId": 0, + "status": 0 + }, + { + "start": 45.8257802, + "end": 45.8357515, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.8258103, + "end": 45.83577371, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.83071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.83572292, + "coreId": 0, + "status": 0 + }, + { + "start": 45.83577371, + "end": 45.85577351, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.84580991, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.84583424, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.85573555, + "coreId": 0, + "status": 0 + }, + { + "start": 45.85577351, + "end": 45.86581058, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.86071744, + "coreId": 0, + "status": 0 + }, + { + "start": 45.86576404, + "end": 46.02576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 45.86578043, + "end": 45.88580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 45.86581058, + "end": 45.87873138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 45.87071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.87573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.87576074, + "coreId": 0, + "status": 0 + }, + { + "start": 45.87873138, + "end": 45.90575521, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 45.88573005, + "coreId": 0, + "status": 0 + }, + { + "start": 45.88771019, + "end": 45.89271817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.89573004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.90573008, + "coreId": 0, + "status": 0 + }, + { + "start": 45.90575521, + "end": 45.94576796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 45.9057924, + "end": 45.92580467, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 45.9087102, + "end": 45.91371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.91571735, + "coreId": 0, + "status": 0 + }, + { + "start": 45.91771022, + "end": 45.9257682, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.92571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.92574267, + "coreId": 0, + "status": 0 + }, + { + "start": 45.92771018, + "end": 45.93271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 45.94576796, + "end": 45.99577327, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 45.94582945, + "end": 45.95576785, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 45.94871021, + "end": 45.95371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.95571735, + "coreId": 0, + "status": 0 + }, + { + "start": 45.95771019, + "end": 45.96576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 45.96571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.96574223, + "coreId": 0, + "status": 0 + }, + { + "start": 45.9677102, + "end": 45.97371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 45.9757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.98577287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 45.98579725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 45.99071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 45.99572278, + "coreId": 0, + "status": 0 + }, + { + "start": 45.9957511, + "end": 46.0157512, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 45.99577327, + "end": 46.01577341, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.00071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.00577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.00579704, + "coreId": 0, + "status": 0 + }, + { + "start": 46.01577341, + "end": 46.02581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.02071748, + "coreId": 0, + "status": 0 + }, + { + "start": 46.02576382, + "end": 46.08576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.02578016, + "end": 46.05575137, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.02581035, + "end": 46.04584721, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.03071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.03573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.03576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.04580989, + "coreId": 0, + "status": 0 + }, + { + "start": 46.04584721, + "end": 46.05577354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.05071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.05572295, + "coreId": 0, + "status": 0 + }, + { + "start": 46.05577354, + "end": 46.07577342, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.06577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.06579702, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.07573541, + "coreId": 0, + "status": 0 + }, + { + "start": 46.07577342, + "end": 46.08581002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.08071745, + "coreId": 0, + "status": 0 + }, + { + "start": 46.08577992, + "end": 46.11575109, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.08581002, + "end": 46.10581029, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.09071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.09573533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.09576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.10577289, + "coreId": 0, + "status": 0 + }, + { + "start": 46.10581029, + "end": 46.13577367, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.11071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.11572277, + "coreId": 0, + "status": 0 + }, + { + "start": 46.11575109, + "end": 46.13575146, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.12577294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.12579727, + "coreId": 0, + "status": 0 + }, + { + "start": 46.13577367, + "end": 46.14584739, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.14071746, + "coreId": 0, + "status": 0 + }, + { + "start": 46.1457929, + "end": 46.30576337, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.14581728, + "end": 46.1757516, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.14584739, + "end": 46.16581055, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.15071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.15573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.15576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.16577315, + "coreId": 0, + "status": 0 + }, + { + "start": 46.16581055, + "end": 46.17577377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.17071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.17572277, + "coreId": 0, + "status": 0 + }, + { + "start": 46.1757516, + "end": 46.18579239, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.17577377, + "end": 46.17873148, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 46.17873148, + "end": 46.18575519, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 46.18573006, + "coreId": 0, + "status": 0 + }, + { + "start": 46.18575519, + "end": 46.22575566, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 46.18579239, + "end": 46.19576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 46.1887102, + "end": 46.19371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.19571731, + "coreId": 0, + "status": 0 + }, + { + "start": 46.19771022, + "end": 46.20576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.20571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.20574225, + "coreId": 0, + "status": 0 + }, + { + "start": 46.2077102, + "end": 46.21371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.21571734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.22573044, + "coreId": 0, + "status": 0 + }, + { + "start": 46.22575566, + "end": 46.27577343, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 46.22771019, + "end": 46.23271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.23573016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.24575495, + "coreId": 0, + "status": 0 + }, + { + "start": 46.24582934, + "end": 46.26580415, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 46.24871017, + "end": 46.25371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.25571749, + "coreId": 0, + "status": 0 + }, + { + "start": 46.25871017, + "end": 46.26576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.26573008, + "coreId": 0, + "status": 0 + }, + { + "start": 46.26771021, + "end": 46.27271835, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 46.27577343, + "end": 46.29577346, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.28071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.28577272, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.2857971, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.29573549, + "coreId": 0, + "status": 0 + }, + { + "start": 46.29577346, + "end": 46.30580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.30071743, + "coreId": 0, + "status": 0 + }, + { + "start": 46.30576337, + "end": 46.36576368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.30577971, + "end": 46.33575157, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.30580981, + "end": 46.32581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.31071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.31573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.31576048, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.32577278, + "coreId": 0, + "status": 0 + }, + { + "start": 46.32581008, + "end": 46.33577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.33071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.33572299, + "coreId": 0, + "status": 0 + }, + { + "start": 46.33577373, + "end": 46.35577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.3458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.34583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.35573576, + "coreId": 0, + "status": 0 + }, + { + "start": 46.35577373, + "end": 46.36581028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.36071742, + "coreId": 0, + "status": 0 + }, + { + "start": 46.36576368, + "end": 46.42576386, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.36578009, + "end": 46.39575112, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.36581028, + "end": 46.38581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.37071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.3757356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.3757605, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.38577269, + "coreId": 0, + "status": 0 + }, + { + "start": 46.38581008, + "end": 46.41577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.39071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.3957228, + "coreId": 0, + "status": 0 + }, + { + "start": 46.39575112, + "end": 46.41575111, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.4057729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.40579728, + "coreId": 0, + "status": 0 + }, + { + "start": 46.41577328, + "end": 46.4258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.42071745, + "coreId": 0, + "status": 0 + }, + { + "start": 46.42576386, + "end": 46.54580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.4257802, + "end": 46.45575138, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.4258103, + "end": 46.44584723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.43071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.43573571, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.43576061, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.44580992, + "coreId": 0, + "status": 0 + }, + { + "start": 46.44584723, + "end": 46.45577354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.45071731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.45572296, + "coreId": 0, + "status": 0 + }, + { + "start": 46.45575138, + "end": 46.48579242, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.45577354, + "end": 46.4757738, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.46577312, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.4657975, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.47573558, + "coreId": 0, + "status": 0 + }, + { + "start": 46.4757738, + "end": 46.52575562, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 46.47871748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.48571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.48574227, + "coreId": 0, + "status": 0 + }, + { + "start": 46.48579242, + "end": 46.50580414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 46.48871023, + "end": 46.49371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.49571735, + "coreId": 0, + "status": 0 + }, + { + "start": 46.49871019, + "end": 46.50576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.50573007, + "coreId": 0, + "status": 0 + }, + { + "start": 46.50771018, + "end": 46.51271819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.5157299, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.5257304, + "coreId": 0, + "status": 0 + }, + { + "start": 46.52575562, + "end": 46.56575519, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 46.52579286, + "end": 46.5357677, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 46.52871019, + "end": 46.53371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.53571733, + "coreId": 0, + "status": 0 + }, + { + "start": 46.53771017, + "end": 46.54578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.545755, + "coreId": 0, + "status": 0 + }, + { + "start": 46.54580516, + "end": 46.58576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.54771021, + "end": 46.55271832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.55573013, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.56573006, + "coreId": 0, + "status": 0 + }, + { + "start": 46.56575519, + "end": 46.57577327, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 46.56871018, + "end": 46.57471833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 46.57577327, + "end": 46.58581026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.58071746, + "coreId": 0, + "status": 0 + }, + { + "start": 46.58578011, + "end": 46.61575119, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.58581026, + "end": 46.60581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.59071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.5957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.5957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.60577271, + "coreId": 0, + "status": 0 + }, + { + "start": 46.60581001, + "end": 46.6157734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.61071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.61572287, + "coreId": 0, + "status": 0 + }, + { + "start": 46.6157734, + "end": 46.63577355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.62577294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.62579727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.63573559, + "coreId": 0, + "status": 0 + }, + { + "start": 46.63577355, + "end": 46.6458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.64071731, + "coreId": 0, + "status": 0 + }, + { + "start": 46.64579271, + "end": 46.70576377, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.64581704, + "end": 46.67575121, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.6458472, + "end": 46.66581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.65071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.65573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.65576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.6657727, + "coreId": 0, + "status": 0 + }, + { + "start": 46.66581009, + "end": 46.67577342, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.67071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.67572289, + "coreId": 0, + "status": 0 + }, + { + "start": 46.67575121, + "end": 46.6957511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.67577342, + "end": 46.69577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.6857727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.68579703, + "coreId": 0, + "status": 0 + }, + { + "start": 46.69577326, + "end": 46.70581031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.70071729, + "coreId": 0, + "status": 0 + }, + { + "start": 46.70576377, + "end": 46.76576401, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.70578016, + "end": 46.73575145, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.70581031, + "end": 46.72581034, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.71071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.71573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.71576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.72577295, + "coreId": 0, + "status": 0 + }, + { + "start": 46.72581034, + "end": 46.73577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.73071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.73572287, + "coreId": 0, + "status": 0 + }, + { + "start": 46.73577366, + "end": 46.75577353, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.74581004, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.74583438, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.75573557, + "coreId": 0, + "status": 0 + }, + { + "start": 46.75577353, + "end": 46.76581055, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.76071743, + "coreId": 0, + "status": 0 + }, + { + "start": 46.76576401, + "end": 46.92576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.7657804, + "end": 46.78580421, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 46.76581055, + "end": 46.77873148, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 46.77071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.77573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.7757607, + "coreId": 0, + "status": 0 + }, + { + "start": 46.77873148, + "end": 46.80575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 46.78573004, + "coreId": 0, + "status": 0 + }, + { + "start": 46.7877102, + "end": 46.79271832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.79572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.80573005, + "coreId": 0, + "status": 0 + }, + { + "start": 46.80575518, + "end": 46.84576791, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 46.80579237, + "end": 46.81576744, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 46.80871017, + "end": 46.81371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.81571733, + "coreId": 0, + "status": 0 + }, + { + "start": 46.81771018, + "end": 46.82576823, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.82571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.8257427, + "coreId": 0, + "status": 0 + }, + { + "start": 46.82771017, + "end": 46.83271834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.83571729, + "coreId": 0, + "status": 0 + }, + { + "start": 46.84576791, + "end": 46.8858101, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 46.84582934, + "end": 46.85576797, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 46.84871017, + "end": 46.8537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.8557303, + "coreId": 0, + "status": 0 + }, + { + "start": 46.85771019, + "end": 46.86576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.86571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 46.86574225, + "coreId": 0, + "status": 0 + }, + { + "start": 46.86871017, + "end": 46.87371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.8757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.8857727, + "coreId": 0, + "status": 0 + }, + { + "start": 46.8858101, + "end": 46.89577347, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.89071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.89572298, + "coreId": 0, + "status": 0 + }, + { + "start": 46.89577347, + "end": 46.91577357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.90577251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.90579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.91573556, + "coreId": 0, + "status": 0 + }, + { + "start": 46.91577357, + "end": 46.92581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.92071745, + "coreId": 0, + "status": 0 + }, + { + "start": 46.92576365, + "end": 46.98576354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 46.92577999, + "end": 46.95575156, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.92581009, + "end": 46.94584711, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.93071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.93573579, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.93576069, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.9458098, + "coreId": 0, + "status": 0 + }, + { + "start": 46.94584711, + "end": 46.95577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.95071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.95572314, + "coreId": 0, + "status": 0 + }, + { + "start": 46.95575156, + "end": 46.97575138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.95577373, + "end": 46.97577359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 46.9657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.96579704, + "coreId": 0, + "status": 0 + }, + { + "start": 46.97577359, + "end": 46.98581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.98071742, + "coreId": 0, + "status": 0 + }, + { + "start": 46.98577988, + "end": 47.01575109, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 46.98581007, + "end": 47.00581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 46.99071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 46.99573532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 46.99576022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.0057729, + "coreId": 0, + "status": 0 + }, + { + "start": 47.00581039, + "end": 47.01577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.01071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.01572277, + "coreId": 0, + "status": 0 + }, + { + "start": 47.01577326, + "end": 47.03577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.025773, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.02579733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.03573572, + "coreId": 0, + "status": 0 + }, + { + "start": 47.03577373, + "end": 47.04584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.04071745, + "coreId": 0, + "status": 0 + }, + { + "start": 47.04579274, + "end": 47.20576357, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.04581711, + "end": 47.0757516, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.04584722, + "end": 47.06581058, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.05071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.05573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.05576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.06577318, + "coreId": 0, + "status": 0 + }, + { + "start": 47.06581058, + "end": 47.07577377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.07071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.07572277, + "coreId": 0, + "status": 0 + }, + { + "start": 47.0757516, + "end": 47.08579242, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.07577377, + "end": 47.0787314, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 47.0787314, + "end": 47.08575523, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 47.0857301, + "coreId": 0, + "status": 0 + }, + { + "start": 47.08575523, + "end": 47.12575563, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 47.08579242, + "end": 47.0957676, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 47.0887102, + "end": 47.09371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.09571735, + "coreId": 0, + "status": 0 + }, + { + "start": 47.09771018, + "end": 47.10576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.10571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.10574225, + "coreId": 0, + "status": 0 + }, + { + "start": 47.1087102, + "end": 47.11371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.11571733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.12573041, + "coreId": 0, + "status": 0 + }, + { + "start": 47.12575563, + "end": 47.17577327, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 47.12771018, + "end": 47.13271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.13573018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.145755, + "coreId": 0, + "status": 0 + }, + { + "start": 47.14582945, + "end": 47.16580424, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 47.14871022, + "end": 47.15371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.15571731, + "coreId": 0, + "status": 0 + }, + { + "start": 47.15871017, + "end": 47.16576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.16574225, + "coreId": 0, + "status": 0 + }, + { + "start": 47.16771017, + "end": 47.17271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 47.17577327, + "end": 47.19577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.18071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.18577287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.18579725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.19573529, + "coreId": 0, + "status": 0 + }, + { + "start": 47.19577326, + "end": 47.20581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.20071744, + "coreId": 0, + "status": 0 + }, + { + "start": 47.20576357, + "end": 47.26576354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.20577991, + "end": 47.23575139, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.20581001, + "end": 47.22581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.21071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.21573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.21576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.225773, + "coreId": 0, + "status": 0 + }, + { + "start": 47.22581039, + "end": 47.23577355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.23071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.23572281, + "coreId": 0, + "status": 0 + }, + { + "start": 47.23577355, + "end": 47.25577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.24580991, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.2458342, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.25573555, + "coreId": 0, + "status": 0 + }, + { + "start": 47.25577352, + "end": 47.26581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.26071742, + "coreId": 0, + "status": 0 + }, + { + "start": 47.26576354, + "end": 47.32576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.26581007, + "end": 47.28580999, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.27071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.27573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.27576031, + "coreId": 0, + "status": 0 + }, + { + "start": 47.28577989, + "end": 47.2957511, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.28580999, + "end": 47.29577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.29071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.29572278, + "coreId": 0, + "status": 0 + }, + { + "start": 47.29577326, + "end": 47.31577327, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.30577288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.30579726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.3157353, + "coreId": 0, + "status": 0 + }, + { + "start": 47.31577327, + "end": 47.32581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.32071742, + "coreId": 0, + "status": 0 + }, + { + "start": 47.32576382, + "end": 47.44580507, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.32578016, + "end": 47.35575137, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.32581035, + "end": 47.34584737, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.33071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.33573565, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.33576055, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.34581005, + "coreId": 0, + "status": 0 + }, + { + "start": 47.34584737, + "end": 47.35577353, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.35071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.35572295, + "coreId": 0, + "status": 0 + }, + { + "start": 47.35575137, + "end": 47.3757516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.35577353, + "end": 47.37577377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.36577315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.36579753, + "coreId": 0, + "status": 0 + }, + { + "start": 47.3757516, + "end": 47.38579237, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.37577377, + "end": 47.42575566, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 47.3787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.38571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.38574221, + "coreId": 0, + "status": 0 + }, + { + "start": 47.38579237, + "end": 47.40580421, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 47.38871019, + "end": 47.39371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.39571731, + "coreId": 0, + "status": 0 + }, + { + "start": 47.3987102, + "end": 47.40576775, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.40573005, + "coreId": 0, + "status": 0 + }, + { + "start": 47.40771018, + "end": 47.41271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.41572993, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.42571746, + "coreId": 0, + "status": 0 + }, + { + "start": 47.42575566, + "end": 47.46575521, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 47.4257929, + "end": 47.4458411, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 47.4287102, + "end": 47.43371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.43571732, + "coreId": 0, + "status": 0 + }, + { + "start": 47.43671022, + "end": 47.44578049, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.44575496, + "coreId": 0, + "status": 0 + }, + { + "start": 47.44580507, + "end": 47.48576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.44771018, + "end": 47.45271835, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.45573031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.46573008, + "coreId": 0, + "status": 0 + }, + { + "start": 47.46575521, + "end": 47.48581012, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 47.46871017, + "end": 47.47371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.47576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.48071726, + "coreId": 0, + "status": 0 + }, + { + "start": 47.48577997, + "end": 47.51575141, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.48581012, + "end": 47.50580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.49071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.49573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.49576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.50577251, + "coreId": 0, + "status": 0 + }, + { + "start": 47.50580981, + "end": 47.51577362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.51071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.51572309, + "coreId": 0, + "status": 0 + }, + { + "start": 47.51577362, + "end": 47.53577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.52577277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.5257971, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.53573578, + "coreId": 0, + "status": 0 + }, + { + "start": 47.53577374, + "end": 47.54584709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.54071743, + "coreId": 0, + "status": 0 + }, + { + "start": 47.54579261, + "end": 47.60576376, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.54584709, + "end": 47.5658101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.55071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.55573576, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.55576066, + "coreId": 0, + "status": 0 + }, + { + "start": 47.56577991, + "end": 47.57575142, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.5658101, + "end": 47.57577363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.57071731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.5757231, + "coreId": 0, + "status": 0 + }, + { + "start": 47.57577363, + "end": 47.59577329, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.58577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.58579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.59573533, + "coreId": 0, + "status": 0 + }, + { + "start": 47.59577329, + "end": 47.60581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.60071748, + "coreId": 0, + "status": 0 + }, + { + "start": 47.60576376, + "end": 47.66576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.60578015, + "end": 47.6357515, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.60581039, + "end": 47.62581026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.61071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.61573532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.61576022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.62577296, + "coreId": 0, + "status": 0 + }, + { + "start": 47.62581026, + "end": 47.63577371, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.63071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.63572292, + "coreId": 0, + "status": 0 + }, + { + "start": 47.63577371, + "end": 47.65577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.64580992, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.64583425, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.65573556, + "coreId": 0, + "status": 0 + }, + { + "start": 47.65577352, + "end": 47.66581061, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.66071748, + "coreId": 0, + "status": 0 + }, + { + "start": 47.66576398, + "end": 47.82576368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.66578037, + "end": 47.68580417, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 47.66581061, + "end": 47.67873119, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 47.67071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.67573576, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.67576091, + "coreId": 0, + "status": 0 + }, + { + "start": 47.67873119, + "end": 47.70575501, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 47.68574227, + "coreId": 0, + "status": 0 + }, + { + "start": 47.68771019, + "end": 47.69271833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.69572997, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.70572988, + "coreId": 0, + "status": 0 + }, + { + "start": 47.70575501, + "end": 47.74576779, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 47.7057922, + "end": 47.71576745, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 47.70871017, + "end": 47.71371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.71571734, + "coreId": 0, + "status": 0 + }, + { + "start": 47.7177102, + "end": 47.72576806, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.72571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.72574253, + "coreId": 0, + "status": 0 + }, + { + "start": 47.7277102, + "end": 47.73271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.7357173, + "coreId": 0, + "status": 0 + }, + { + "start": 47.74576779, + "end": 47.78581036, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 47.74582928, + "end": 47.75576779, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 47.74871018, + "end": 47.75471834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.75573012, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.76571727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.76574207, + "coreId": 0, + "status": 0 + }, + { + "start": 47.76579222, + "end": 47.79575129, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.7687102, + "end": 47.77371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.77576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.78577287, + "coreId": 0, + "status": 0 + }, + { + "start": 47.78581036, + "end": 47.79577346, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.79071731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.79572297, + "coreId": 0, + "status": 0 + }, + { + "start": 47.79577346, + "end": 47.81577362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.8057727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.80579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.81573561, + "coreId": 0, + "status": 0 + }, + { + "start": 47.81577362, + "end": 47.82581012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.82071746, + "coreId": 0, + "status": 0 + }, + { + "start": 47.82576368, + "end": 47.88576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.82578002, + "end": 47.85575153, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.82581012, + "end": 47.84584703, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.83071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.83573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.83576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.84580971, + "coreId": 0, + "status": 0 + }, + { + "start": 47.84584703, + "end": 47.87577359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.85071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.85572311, + "coreId": 0, + "status": 0 + }, + { + "start": 47.85575153, + "end": 47.87575138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.86577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.86579704, + "coreId": 0, + "status": 0 + }, + { + "start": 47.87577359, + "end": 47.88580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.88071725, + "coreId": 0, + "status": 0 + }, + { + "start": 47.88577971, + "end": 47.91575109, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.88580981, + "end": 47.90581021, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.89071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.8957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.8957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.90577272, + "coreId": 0, + "status": 0 + }, + { + "start": 47.90581021, + "end": 47.91577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.91071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.91572277, + "coreId": 0, + "status": 0 + }, + { + "start": 47.91577326, + "end": 47.93577367, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 47.92577278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.92579711, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.93573566, + "coreId": 0, + "status": 0 + }, + { + "start": 47.93577367, + "end": 47.94584736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.94071745, + "coreId": 0, + "status": 0 + }, + { + "start": 47.94579287, + "end": 48.10576354, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 47.94584736, + "end": 47.96581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.95071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.95573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 47.95576062, + "coreId": 0, + "status": 0 + }, + { + "start": 47.96578037, + "end": 47.97575179, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.96581052, + "end": 47.97577396, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.97071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 47.97572296, + "coreId": 0, + "status": 0 + }, + { + "start": 47.97575179, + "end": 47.98579237, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 47.97577396, + "end": 47.98575517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 47.97871734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 47.98573004, + "coreId": 0, + "status": 0 + }, + { + "start": 47.98575517, + "end": 48.07577326, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 47.98579237, + "end": 47.99576773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 47.98871018, + "end": 47.99371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 47.99571748, + "coreId": 0, + "status": 0 + }, + { + "start": 47.99771017, + "end": 48.00576759, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.00571726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.00574206, + "coreId": 0, + "status": 0 + }, + { + "start": 48.00871017, + "end": 48.01371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.01571733, + "coreId": 0, + "status": 0 + }, + { + "start": 48.0187102, + "end": 48.02576822, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.02573043, + "coreId": 0, + "status": 0 + }, + { + "start": 48.02771021, + "end": 48.03271818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.03573031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.04575491, + "coreId": 0, + "status": 0 + }, + { + "start": 48.0458293, + "end": 48.06580395, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 48.04871017, + "end": 48.05371834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.05571751, + "coreId": 0, + "status": 0 + }, + { + "start": 48.05871018, + "end": 48.06576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.06574205, + "coreId": 0, + "status": 0 + }, + { + "start": 48.0677102, + "end": 48.07271834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 48.07577326, + "end": 48.09577347, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.08071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.08577272, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.0857971, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.0957355, + "coreId": 0, + "status": 0 + }, + { + "start": 48.09577347, + "end": 48.10580998, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.10071728, + "coreId": 0, + "status": 0 + }, + { + "start": 48.10576354, + "end": 48.16576353, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 48.10577988, + "end": 48.1357514, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.10580998, + "end": 48.12581024, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.11071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.11573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.11576046, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.12577294, + "coreId": 0, + "status": 0 + }, + { + "start": 48.12581024, + "end": 48.13577356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.13071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.13572282, + "coreId": 0, + "status": 0 + }, + { + "start": 48.1357514, + "end": 48.15575154, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.13577356, + "end": 48.15577371, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.14580981, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.1458341, + "coreId": 0, + "status": 0 + }, + { + "start": 48.15577371, + "end": 48.16580998, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.16071727, + "coreId": 0, + "status": 0 + }, + { + "start": 48.16576353, + "end": 48.22576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 48.16577988, + "end": 48.19575112, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.16580998, + "end": 48.18580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.17071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.17573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.17576046, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.18577251, + "coreId": 0, + "status": 0 + }, + { + "start": 48.18580981, + "end": 48.19577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.19071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.1957228, + "coreId": 0, + "status": 0 + }, + { + "start": 48.19577328, + "end": 48.21577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.20577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.20579707, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.21573531, + "coreId": 0, + "status": 0 + }, + { + "start": 48.21577328, + "end": 48.22581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.22071742, + "coreId": 0, + "status": 0 + }, + { + "start": 48.22576363, + "end": 48.34580522, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 48.22577997, + "end": 48.25575155, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.22581007, + "end": 48.24584724, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.23071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.23573569, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.23576059, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.24580993, + "coreId": 0, + "status": 0 + }, + { + "start": 48.24584724, + "end": 48.275774, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.25071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.25572313, + "coreId": 0, + "status": 0 + }, + { + "start": 48.25575155, + "end": 48.27575183, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.26577316, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.26579754, + "coreId": 0, + "status": 0 + }, + { + "start": 48.27575183, + "end": 48.2857924, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.275774, + "end": 48.32575563, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 48.27871729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.28571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.28574225, + "coreId": 0, + "status": 0 + }, + { + "start": 48.2857924, + "end": 48.305804, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 48.2887102, + "end": 48.29371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.29571751, + "coreId": 0, + "status": 0 + }, + { + "start": 48.29871017, + "end": 48.30576763, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.30572993, + "coreId": 0, + "status": 0 + }, + { + "start": 48.30771021, + "end": 48.31271834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.31572988, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.32571743, + "coreId": 0, + "status": 0 + }, + { + "start": 48.32575563, + "end": 48.36575504, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 48.32579287, + "end": 48.34584135, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 48.32871023, + "end": 48.33371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.33571747, + "coreId": 0, + "status": 0 + }, + { + "start": 48.33771023, + "end": 48.34578059, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.34575506, + "coreId": 0, + "status": 0 + }, + { + "start": 48.34580522, + "end": 48.38576359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 48.34771021, + "end": 48.35271814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.35573029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.36572991, + "coreId": 0, + "status": 0 + }, + { + "start": 48.36575504, + "end": 48.38583351, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 48.36871019, + "end": 48.37371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.37576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.38071742, + "coreId": 0, + "status": 0 + }, + { + "start": 48.38580336, + "end": 48.41575139, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.38583351, + "end": 48.40580999, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.39071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.39573551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.39576041, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.40577269, + "coreId": 0, + "status": 0 + }, + { + "start": 48.40580999, + "end": 48.4157736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.41071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.41572307, + "coreId": 0, + "status": 0 + }, + { + "start": 48.41575139, + "end": 48.43575136, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.4157736, + "end": 48.43577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.42577298, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.42579731, + "coreId": 0, + "status": 0 + }, + { + "start": 48.43577352, + "end": 48.44584705, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.44071742, + "coreId": 0, + "status": 0 + }, + { + "start": 48.44579256, + "end": 48.50576355, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 48.44581689, + "end": 48.47575136, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.44584705, + "end": 48.46581, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.45071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.45573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.45576062, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.4657727, + "coreId": 0, + "status": 0 + }, + { + "start": 48.46581, + "end": 48.47577357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.47071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.47572304, + "coreId": 0, + "status": 0 + }, + { + "start": 48.47577357, + "end": 48.49577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.48577253, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.48579686, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.49573532, + "coreId": 0, + "status": 0 + }, + { + "start": 48.49577328, + "end": 48.50581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.50071743, + "coreId": 0, + "status": 0 + }, + { + "start": 48.50576355, + "end": 48.56576403, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 48.50577994, + "end": 48.5357515, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.50581009, + "end": 48.52581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.51071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.51573533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.51576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.52577277, + "coreId": 0, + "status": 0 + }, + { + "start": 48.52581007, + "end": 48.53577371, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.53071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.53572292, + "coreId": 0, + "status": 0 + }, + { + "start": 48.5357515, + "end": 48.55575138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.53577371, + "end": 48.55577354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.54580989, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.54583414, + "coreId": 0, + "status": 0 + }, + { + "start": 48.55577354, + "end": 48.56581066, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.56071748, + "coreId": 0, + "status": 0 + }, + { + "start": 48.56576403, + "end": 48.72576367, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 48.56578042, + "end": 48.58580423, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 48.56581066, + "end": 48.57873127, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 48.57071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.57573576, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.57576091, + "coreId": 0, + "status": 0 + }, + { + "start": 48.57873127, + "end": 48.60575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 48.58573006, + "coreId": 0, + "status": 0 + }, + { + "start": 48.58771017, + "end": 48.59271818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.59573014, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.60571742, + "coreId": 0, + "status": 0 + }, + { + "start": 48.60575518, + "end": 48.64576791, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 48.60579237, + "end": 48.62580449, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 48.60871022, + "end": 48.61371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.61571732, + "coreId": 0, + "status": 0 + }, + { + "start": 48.6177102, + "end": 48.62576802, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.62571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.62574249, + "coreId": 0, + "status": 0 + }, + { + "start": 48.62771019, + "end": 48.63271818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 48.64576791, + "end": 48.69577326, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 48.64582943, + "end": 48.65576796, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 48.64871022, + "end": 48.65371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.65571746, + "coreId": 0, + "status": 0 + }, + { + "start": 48.6577102, + "end": 48.66576763, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.6657173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.6657421, + "coreId": 0, + "status": 0 + }, + { + "start": 48.66771021, + "end": 48.6727182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.6757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.68577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.68579707, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.69071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.69572277, + "coreId": 0, + "status": 0 + }, + { + "start": 48.69577326, + "end": 48.71577361, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.70071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.70577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.70579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.7157356, + "coreId": 0, + "status": 0 + }, + { + "start": 48.71577361, + "end": 48.72581011, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.72071742, + "coreId": 0, + "status": 0 + }, + { + "start": 48.72576367, + "end": 48.78576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 48.72581011, + "end": 48.7458471, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.73071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.73573574, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.73576064, + "coreId": 0, + "status": 0 + }, + { + "start": 48.74581695, + "end": 48.75575135, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.7458471, + "end": 48.75577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.75071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.75572293, + "coreId": 0, + "status": 0 + }, + { + "start": 48.75577352, + "end": 48.77577359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.76577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.76579705, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.77573558, + "coreId": 0, + "status": 0 + }, + { + "start": 48.77577359, + "end": 48.78580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.78071742, + "coreId": 0, + "status": 0 + }, + { + "start": 48.78577971, + "end": 48.81575109, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.78580981, + "end": 48.80581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.79071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.79573551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.79576041, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.80577269, + "coreId": 0, + "status": 0 + }, + { + "start": 48.80581009, + "end": 48.81577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.81071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.81572277, + "coreId": 0, + "status": 0 + }, + { + "start": 48.81575109, + "end": 48.83575162, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.81577326, + "end": 48.83577383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.825773, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.82579733, + "coreId": 0, + "status": 0 + }, + { + "start": 48.83577383, + "end": 48.84584695, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.84071744, + "coreId": 0, + "status": 0 + }, + { + "start": 48.84579256, + "end": 49.00576337, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 48.84581684, + "end": 48.87575163, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.84584695, + "end": 48.86581055, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.85071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.85573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.85576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.86577315, + "coreId": 0, + "status": 0 + }, + { + "start": 48.86581055, + "end": 48.8757738, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.87071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.8757228, + "coreId": 0, + "status": 0 + }, + { + "start": 48.87575163, + "end": 48.8857922, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 48.8757738, + "end": 48.88575501, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 48.8787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.88572988, + "coreId": 0, + "status": 0 + }, + { + "start": 48.88575501, + "end": 48.97577326, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 48.8857922, + "end": 48.89576775, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 48.88871021, + "end": 48.89371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.8957175, + "coreId": 0, + "status": 0 + }, + { + "start": 48.89771023, + "end": 48.90576761, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.90571728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.90574208, + "coreId": 0, + "status": 0 + }, + { + "start": 48.9087102, + "end": 48.91371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.91571734, + "coreId": 0, + "status": 0 + }, + { + "start": 48.91871021, + "end": 48.9257682, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.92573041, + "coreId": 0, + "status": 0 + }, + { + "start": 48.9277102, + "end": 48.93271817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.93573033, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.94575483, + "coreId": 0, + "status": 0 + }, + { + "start": 48.94582928, + "end": 48.96580401, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 48.9487102, + "end": 48.95371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.95571747, + "coreId": 0, + "status": 0 + }, + { + "start": 48.95671019, + "end": 48.96576764, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 48.96571731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 48.96574211, + "coreId": 0, + "status": 0 + }, + { + "start": 48.96771017, + "end": 48.97271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 48.97577326, + "end": 48.99577343, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 48.98577292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 48.9857973, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 48.99573546, + "coreId": 0, + "status": 0 + }, + { + "start": 48.99577343, + "end": 49.00580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.00071747, + "coreId": 0, + "status": 0 + }, + { + "start": 49.00576337, + "end": 49.06576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.00580981, + "end": 49.0258101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.01071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.0157356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.0157605, + "coreId": 0, + "status": 0 + }, + { + "start": 49.02578, + "end": 49.03575136, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.0258101, + "end": 49.03577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.03071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.03572278, + "coreId": 0, + "status": 0 + }, + { + "start": 49.03577352, + "end": 49.05577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 49.04580989, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.04583427, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.05573576, + "coreId": 0, + "status": 0 + }, + { + "start": 49.05577373, + "end": 49.06580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.06071745, + "coreId": 0, + "status": 0 + }, + { + "start": 49.06576337, + "end": 49.12576367, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.06577971, + "end": 49.09575111, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.06580981, + "end": 49.08580983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.07071732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.0757356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.0757605, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.08577253, + "coreId": 0, + "status": 0 + }, + { + "start": 49.08580983, + "end": 49.09577327, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.09071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.09572279, + "coreId": 0, + "status": 0 + }, + { + "start": 49.09577327, + "end": 49.11577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 49.1057729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.10579728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.11573529, + "coreId": 0, + "status": 0 + }, + { + "start": 49.11577326, + "end": 49.12581011, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.12071747, + "coreId": 0, + "status": 0 + }, + { + "start": 49.12576367, + "end": 49.24580491, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.12581011, + "end": 49.14584727, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.13071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.13573583, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.13576073, + "coreId": 0, + "status": 0 + }, + { + "start": 49.14581716, + "end": 49.15575135, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.14584727, + "end": 49.15577351, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.15071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.15572293, + "coreId": 0, + "status": 0 + }, + { + "start": 49.15575135, + "end": 49.18579241, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.15577351, + "end": 49.17577397, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 49.16577295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.16579733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.17573575, + "coreId": 0, + "status": 0 + }, + { + "start": 49.17577397, + "end": 49.22575549, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 49.17871734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.18571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.18574225, + "coreId": 0, + "status": 0 + }, + { + "start": 49.18579241, + "end": 49.20580416, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 49.1887102, + "end": 49.19371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.19571731, + "coreId": 0, + "status": 0 + }, + { + "start": 49.19871017, + "end": 49.20576779, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.20573009, + "coreId": 0, + "status": 0 + }, + { + "start": 49.20771019, + "end": 49.21271818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.21573009, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.22573027, + "coreId": 0, + "status": 0 + }, + { + "start": 49.22575549, + "end": 49.26575522, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 49.22579273, + "end": 49.24584094, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 49.22871022, + "end": 49.23371834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.23571748, + "coreId": 0, + "status": 0 + }, + { + "start": 49.23771017, + "end": 49.24578033, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.2457548, + "coreId": 0, + "status": 0 + }, + { + "start": 49.24580491, + "end": 49.28576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.2477102, + "end": 49.25271832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.25573012, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.26573009, + "coreId": 0, + "status": 0 + }, + { + "start": 49.26575522, + "end": 49.27577343, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 49.2687102, + "end": 49.27371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 49.27577343, + "end": 49.28581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.28071746, + "coreId": 0, + "status": 0 + }, + { + "start": 49.28577994, + "end": 49.31575119, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.28581009, + "end": 49.30580984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.29071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.2957355, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.2957604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.30577254, + "coreId": 0, + "status": 0 + }, + { + "start": 49.30580984, + "end": 49.3157734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.31071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.31572287, + "coreId": 0, + "status": 0 + }, + { + "start": 49.31575119, + "end": 49.33575153, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.3157734, + "end": 49.33577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.32071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.32577295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.32579728, + "coreId": 0, + "status": 0 + }, + { + "start": 49.33577369, + "end": 49.34584714, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.34071746, + "coreId": 0, + "status": 0 + }, + { + "start": 49.34579266, + "end": 49.40576355, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.34581699, + "end": 49.37575119, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.34584714, + "end": 49.36580982, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.35071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.35573574, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.35576064, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.36577251, + "coreId": 0, + "status": 0 + }, + { + "start": 49.36580982, + "end": 49.3757734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.37071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.37572287, + "coreId": 0, + "status": 0 + }, + { + "start": 49.3757734, + "end": 49.39577329, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 49.38577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.38579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.39573533, + "coreId": 0, + "status": 0 + }, + { + "start": 49.39577329, + "end": 49.40581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.40071747, + "coreId": 0, + "status": 0 + }, + { + "start": 49.40576355, + "end": 49.46576381, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.40581009, + "end": 49.42581028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.41071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.4157355, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.4157604, + "coreId": 0, + "status": 0 + }, + { + "start": 49.42578018, + "end": 49.43575145, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.42581028, + "end": 49.43577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.43071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.43572287, + "coreId": 0, + "status": 0 + }, + { + "start": 49.43577366, + "end": 49.4557737, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 49.4458099, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.44583423, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.45573574, + "coreId": 0, + "status": 0 + }, + { + "start": 49.4557737, + "end": 49.46581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.4607173, + "coreId": 0, + "status": 0 + }, + { + "start": 49.46576381, + "end": 49.62576367, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.4657802, + "end": 49.48580416, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 49.46581035, + "end": 49.47873138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 49.47071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.47573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.47576073, + "coreId": 0, + "status": 0 + }, + { + "start": 49.47873138, + "end": 49.50575504, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 49.48573009, + "coreId": 0, + "status": 0 + }, + { + "start": 49.48771018, + "end": 49.49271816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.49573019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.50572991, + "coreId": 0, + "status": 0 + }, + { + "start": 49.50575504, + "end": 49.54576796, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 49.50579223, + "end": 49.52580449, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 49.50871018, + "end": 49.51371836, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.51571747, + "coreId": 0, + "status": 0 + }, + { + "start": 49.51771021, + "end": 49.52576802, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.52571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.52574249, + "coreId": 0, + "status": 0 + }, + { + "start": 49.52771023, + "end": 49.53271834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 49.54576796, + "end": 49.59577326, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 49.54582945, + "end": 49.55576796, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 49.54871023, + "end": 49.55371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.55571746, + "coreId": 0, + "status": 0 + }, + { + "start": 49.55771017, + "end": 49.56576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.56571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.56574205, + "coreId": 0, + "status": 0 + }, + { + "start": 49.56771017, + "end": 49.57371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 49.57576043, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.58577272, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.5857971, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.59071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.59572277, + "coreId": 0, + "status": 0 + }, + { + "start": 49.59575109, + "end": 49.61575138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.59577326, + "end": 49.61577359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.60071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.60577273, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.60579706, + "coreId": 0, + "status": 0 + }, + { + "start": 49.61577359, + "end": 49.62581011, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.62071743, + "coreId": 0, + "status": 0 + }, + { + "start": 49.62576367, + "end": 49.68576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.62578001, + "end": 49.65575135, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.62581011, + "end": 49.64584709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.63071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.63573577, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.63576067, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.64580977, + "coreId": 0, + "status": 0 + }, + { + "start": 49.64584709, + "end": 49.65577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.65071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.65572293, + "coreId": 0, + "status": 0 + }, + { + "start": 49.65577352, + "end": 49.67577357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 49.66577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.66579702, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.67573556, + "coreId": 0, + "status": 0 + }, + { + "start": 49.67577357, + "end": 49.68580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.68071746, + "coreId": 0, + "status": 0 + }, + { + "start": 49.68577971, + "end": 49.71575109, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.68580981, + "end": 49.7058103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.69071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.69573551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.69576041, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.7057729, + "coreId": 0, + "status": 0 + }, + { + "start": 49.7058103, + "end": 49.73577383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.71071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.71572277, + "coreId": 0, + "status": 0 + }, + { + "start": 49.71575109, + "end": 49.73575162, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 49.72577296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.72579729, + "coreId": 0, + "status": 0 + }, + { + "start": 49.73577383, + "end": 49.74584711, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.74071746, + "coreId": 0, + "status": 0 + }, + { + "start": 49.74579271, + "end": 49.9057634, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.745817, + "end": 49.7757518, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.74584711, + "end": 49.76581055, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.75071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.75573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.75576048, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.76577315, + "coreId": 0, + "status": 0 + }, + { + "start": 49.76581055, + "end": 49.77577397, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.77071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.77572297, + "coreId": 0, + "status": 0 + }, + { + "start": 49.7757518, + "end": 49.78579221, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.77577397, + "end": 49.77873146, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 49.77873146, + "end": 49.78575501, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 49.78572988, + "coreId": 0, + "status": 0 + }, + { + "start": 49.78575501, + "end": 49.82575566, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 49.78579221, + "end": 49.79576771, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 49.78871017, + "end": 49.79371834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.79571746, + "coreId": 0, + "status": 0 + }, + { + "start": 49.79771019, + "end": 49.80576779, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.80571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.80574226, + "coreId": 0, + "status": 0 + }, + { + "start": 49.80771018, + "end": 49.81371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.8157173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.82573044, + "coreId": 0, + "status": 0 + }, + { + "start": 49.82575566, + "end": 49.8757733, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 49.82771019, + "end": 49.83271819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.8357303, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 49.84575474, + "coreId": 0, + "status": 0 + }, + { + "start": 49.84582913, + "end": 49.865804, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 49.8487102, + "end": 49.85371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.85571751, + "coreId": 0, + "status": 0 + }, + { + "start": 49.85871019, + "end": 49.86576763, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.86572993, + "coreId": 0, + "status": 0 + }, + { + "start": 49.86771017, + "end": 49.87271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 49.8757733, + "end": 49.89577345, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.88071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.8857729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.88579728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.89573548, + "coreId": 0, + "status": 0 + }, + { + "start": 49.89577345, + "end": 49.90580984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.90071745, + "coreId": 0, + "status": 0 + }, + { + "start": 49.9057634, + "end": 49.96576338, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.90577974, + "end": 49.93575136, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.90580984, + "end": 49.9258101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.91071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.91573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.91576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.9257728, + "coreId": 0, + "status": 0 + }, + { + "start": 49.9258101, + "end": 49.93577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.93071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.93572278, + "coreId": 0, + "status": 0 + }, + { + "start": 49.93577352, + "end": 49.9557737, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 49.94580996, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.94583425, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.95573573, + "coreId": 0, + "status": 0 + }, + { + "start": 49.9557737, + "end": 49.96580983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.96071744, + "coreId": 0, + "status": 0 + }, + { + "start": 49.96576338, + "end": 50.02576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 49.96577973, + "end": 49.99575113, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 49.96580983, + "end": 49.98580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.97071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.97573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.97576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 49.98577251, + "coreId": 0, + "status": 0 + }, + { + "start": 49.98580981, + "end": 50.01577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 49.99071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 49.99572281, + "coreId": 0, + "status": 0 + }, + { + "start": 49.99575113, + "end": 50.01575109, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.0057729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.00579728, + "coreId": 0, + "status": 0 + }, + { + "start": 50.01577326, + "end": 50.02581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.02071748, + "coreId": 0, + "status": 0 + }, + { + "start": 50.02576363, + "end": 50.145805, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.02577997, + "end": 50.05575135, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.02581007, + "end": 50.04584716, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.03071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.03573584, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.03576074, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.04580994, + "coreId": 0, + "status": 0 + }, + { + "start": 50.04584716, + "end": 50.05577351, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.05071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.05572293, + "coreId": 0, + "status": 0 + }, + { + "start": 50.05575135, + "end": 50.0857922, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.05577351, + "end": 50.07577397, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.06577315, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.06579753, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.07573575, + "coreId": 0, + "status": 0 + }, + { + "start": 50.07577397, + "end": 50.12575548, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 50.07871733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.08571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.08574205, + "coreId": 0, + "status": 0 + }, + { + "start": 50.0857922, + "end": 50.10580425, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 50.0887102, + "end": 50.09371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.0957173, + "coreId": 0, + "status": 0 + }, + { + "start": 50.09871017, + "end": 50.10576779, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.10573009, + "coreId": 0, + "status": 0 + }, + { + "start": 50.1077102, + "end": 50.1127182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.11573006, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.12573026, + "coreId": 0, + "status": 0 + }, + { + "start": 50.12575548, + "end": 50.16575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 50.12579272, + "end": 50.13576786, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 50.12871018, + "end": 50.13371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.13571749, + "coreId": 0, + "status": 0 + }, + { + "start": 50.13771022, + "end": 50.14578037, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.14575484, + "coreId": 0, + "status": 0 + }, + { + "start": 50.145805, + "end": 50.18576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.14771018, + "end": 50.15271834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.15573016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.16573005, + "coreId": 0, + "status": 0 + }, + { + "start": 50.16575518, + "end": 50.17577348, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 50.16871023, + "end": 50.17471814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 50.17577348, + "end": 50.18581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.18071748, + "coreId": 0, + "status": 0 + }, + { + "start": 50.18577994, + "end": 50.2157512, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.18581009, + "end": 50.20580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.19071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.19573547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.19576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.20577251, + "coreId": 0, + "status": 0 + }, + { + "start": 50.20580981, + "end": 50.21577341, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.21071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.21572288, + "coreId": 0, + "status": 0 + }, + { + "start": 50.21577341, + "end": 50.23577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.22577298, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.22579731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.23573573, + "coreId": 0, + "status": 0 + }, + { + "start": 50.23577369, + "end": 50.24584706, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.24071745, + "coreId": 0, + "status": 0 + }, + { + "start": 50.24579257, + "end": 50.30576359, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.2458169, + "end": 50.27575125, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.24584706, + "end": 50.26580987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.25071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.25573575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.25576065, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.26577257, + "coreId": 0, + "status": 0 + }, + { + "start": 50.26580987, + "end": 50.27577346, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.27071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.27572293, + "coreId": 0, + "status": 0 + }, + { + "start": 50.27575125, + "end": 50.2957511, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.27577346, + "end": 50.29577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.28577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.28579701, + "coreId": 0, + "status": 0 + }, + { + "start": 50.29577326, + "end": 50.30581013, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.30071742, + "coreId": 0, + "status": 0 + }, + { + "start": 50.30576359, + "end": 50.36576384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.30577998, + "end": 50.33575151, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.30581013, + "end": 50.32581028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.31071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.31573547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.31576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.32577298, + "coreId": 0, + "status": 0 + }, + { + "start": 50.32581028, + "end": 50.33577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.33071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.33572293, + "coreId": 0, + "status": 0 + }, + { + "start": 50.33577372, + "end": 50.35577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.34581007, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.34583441, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.35573577, + "coreId": 0, + "status": 0 + }, + { + "start": 50.35577373, + "end": 50.36581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.36071725, + "coreId": 0, + "status": 0 + }, + { + "start": 50.36576384, + "end": 50.52576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.36578023, + "end": 50.38580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 50.36581038, + "end": 50.37873147, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 50.37071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.37573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.37576074, + "coreId": 0, + "status": 0 + }, + { + "start": 50.37873147, + "end": 50.40575503, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 50.38573004, + "coreId": 0, + "status": 0 + }, + { + "start": 50.38771019, + "end": 50.39271814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.39573018, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.4057299, + "coreId": 0, + "status": 0 + }, + { + "start": 50.40575503, + "end": 50.44576793, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 50.40579222, + "end": 50.41576758, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 50.40871023, + "end": 50.41371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.41571747, + "coreId": 0, + "status": 0 + }, + { + "start": 50.41771017, + "end": 50.42576822, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.42571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.42574269, + "coreId": 0, + "status": 0 + }, + { + "start": 50.42771023, + "end": 50.43271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.43571729, + "coreId": 0, + "status": 0 + }, + { + "start": 50.44576793, + "end": 50.48581009, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 50.44582936, + "end": 50.45576796, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 50.44871018, + "end": 50.45371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.45573029, + "coreId": 0, + "status": 0 + }, + { + "start": 50.45771022, + "end": 50.46576762, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.46571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.46574209, + "coreId": 0, + "status": 0 + }, + { + "start": 50.46871019, + "end": 50.47371835, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.47576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.48577269, + "coreId": 0, + "status": 0 + }, + { + "start": 50.48581009, + "end": 50.49577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.49071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.49572277, + "coreId": 0, + "status": 0 + }, + { + "start": 50.49577326, + "end": 50.51577357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.50577273, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.50579706, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.51573556, + "coreId": 0, + "status": 0 + }, + { + "start": 50.51577357, + "end": 50.5258101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.52071742, + "coreId": 0, + "status": 0 + }, + { + "start": 50.52576366, + "end": 50.58576343, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.52578, + "end": 50.55575135, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.5258101, + "end": 50.54584711, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.53071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.53573576, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.53576066, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.5458098, + "coreId": 0, + "status": 0 + }, + { + "start": 50.54584711, + "end": 50.55577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.55071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.55572293, + "coreId": 0, + "status": 0 + }, + { + "start": 50.55575135, + "end": 50.57575137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.55577352, + "end": 50.57577358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.56577272, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.56579706, + "coreId": 0, + "status": 0 + }, + { + "start": 50.57577358, + "end": 50.58580987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.58071745, + "coreId": 0, + "status": 0 + }, + { + "start": 50.58577977, + "end": 50.61575111, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.58580987, + "end": 50.60581031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.59071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.59573548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.59576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.60577291, + "coreId": 0, + "status": 0 + }, + { + "start": 50.60581031, + "end": 50.61577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.61071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.61572279, + "coreId": 0, + "status": 0 + }, + { + "start": 50.61577328, + "end": 50.63577388, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.62577294, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.62579727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.63573587, + "coreId": 0, + "status": 0 + }, + { + "start": 50.63577388, + "end": 50.64584695, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.64071745, + "coreId": 0, + "status": 0 + }, + { + "start": 50.64579256, + "end": 50.80576337, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.64581684, + "end": 50.67575177, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.64584695, + "end": 50.66581063, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.65071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.65573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.65576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.66577314, + "coreId": 0, + "status": 0 + }, + { + "start": 50.66581063, + "end": 50.67577394, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.67071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.67572294, + "coreId": 0, + "status": 0 + }, + { + "start": 50.67575177, + "end": 50.68579221, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.67577394, + "end": 50.67873141, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 50.67873141, + "end": 50.68575502, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 50.68572989, + "coreId": 0, + "status": 0 + }, + { + "start": 50.68575502, + "end": 50.72575568, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 50.68579221, + "end": 50.69576776, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 50.68871017, + "end": 50.69371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.69571751, + "coreId": 0, + "status": 0 + }, + { + "start": 50.69771017, + "end": 50.70576779, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.70571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.70574226, + "coreId": 0, + "status": 0 + }, + { + "start": 50.70871018, + "end": 50.7137182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.7157173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.72573046, + "coreId": 0, + "status": 0 + }, + { + "start": 50.72575568, + "end": 50.77577332, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 50.72771021, + "end": 50.73271814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.73573034, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.74575487, + "coreId": 0, + "status": 0 + }, + { + "start": 50.74582932, + "end": 50.76580399, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 50.74871021, + "end": 50.75371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.7557175, + "coreId": 0, + "status": 0 + }, + { + "start": 50.75871017, + "end": 50.76576762, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.76574209, + "coreId": 0, + "status": 0 + }, + { + "start": 50.76771019, + "end": 50.77271832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 50.77577332, + "end": 50.79577347, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.78071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.78577287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.78579725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.7957355, + "coreId": 0, + "status": 0 + }, + { + "start": 50.79577347, + "end": 50.80580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.80071746, + "coreId": 0, + "status": 0 + }, + { + "start": 50.80576337, + "end": 50.86576341, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.80577971, + "end": 50.83575137, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.80580981, + "end": 50.8258101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.81071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.81573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.81576046, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.8257728, + "coreId": 0, + "status": 0 + }, + { + "start": 50.8258101, + "end": 50.83577353, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.83071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.83572279, + "coreId": 0, + "status": 0 + }, + { + "start": 50.83577353, + "end": 50.85577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.84580991, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.8458342, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.85573577, + "coreId": 0, + "status": 0 + }, + { + "start": 50.85577374, + "end": 50.86580985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.86071747, + "coreId": 0, + "status": 0 + }, + { + "start": 50.86576341, + "end": 50.92576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.86580985, + "end": 50.88580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.87071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.87573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.87576047, + "coreId": 0, + "status": 0 + }, + { + "start": 50.88577971, + "end": 50.89575113, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.88580981, + "end": 50.89577329, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.89071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.89572281, + "coreId": 0, + "status": 0 + }, + { + "start": 50.89577329, + "end": 50.91577344, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.90577292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.9057973, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.91573547, + "coreId": 0, + "status": 0 + }, + { + "start": 50.91577344, + "end": 50.92581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.92071746, + "coreId": 0, + "status": 0 + }, + { + "start": 50.92576363, + "end": 51.04580488, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 50.92577997, + "end": 50.95575135, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.92581007, + "end": 50.94584732, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.93071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.93573582, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.93576072, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.94581009, + "coreId": 0, + "status": 0 + }, + { + "start": 50.94584732, + "end": 50.95577351, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.95071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 50.95572293, + "coreId": 0, + "status": 0 + }, + { + "start": 50.95575135, + "end": 50.97575178, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.95577351, + "end": 50.97577395, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 50.96577298, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 50.96579736, + "coreId": 0, + "status": 0 + }, + { + "start": 50.97575178, + "end": 50.98579237, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 50.97577395, + "end": 51.02575545, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 50.97871729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.98571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 50.98574221, + "coreId": 0, + "status": 0 + }, + { + "start": 50.98579237, + "end": 51.00580417, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 50.98871019, + "end": 50.99371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 50.99571734, + "coreId": 0, + "status": 0 + }, + { + "start": 50.99871023, + "end": 51.0057678, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.0057301, + "coreId": 0, + "status": 0 + }, + { + "start": 51.00771017, + "end": 51.01271817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.01573005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.02571725, + "coreId": 0, + "status": 0 + }, + { + "start": 51.02575545, + "end": 51.06575522, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 51.02579269, + "end": 51.04584091, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 51.02871017, + "end": 51.03371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.0357175, + "coreId": 0, + "status": 0 + }, + { + "start": 51.03671017, + "end": 51.0457803, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.04575477, + "coreId": 0, + "status": 0 + }, + { + "start": 51.04580488, + "end": 51.08576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.0477102, + "end": 51.05271832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.05573015, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.06573009, + "coreId": 0, + "status": 0 + }, + { + "start": 51.06575522, + "end": 51.08581009, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 51.06871022, + "end": 51.07371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.07576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.08071742, + "coreId": 0, + "status": 0 + }, + { + "start": 51.08577994, + "end": 51.11575119, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.08581009, + "end": 51.10580983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.09071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.09573547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.09576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.10577253, + "coreId": 0, + "status": 0 + }, + { + "start": 51.10580983, + "end": 51.1157734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.11071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.11572287, + "coreId": 0, + "status": 0 + }, + { + "start": 51.1157734, + "end": 51.13577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.12577298, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.12579731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.13573573, + "coreId": 0, + "status": 0 + }, + { + "start": 51.13577369, + "end": 51.14584714, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.14071746, + "coreId": 0, + "status": 0 + }, + { + "start": 51.14579266, + "end": 51.2057636, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.14584714, + "end": 51.16580985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.15071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.15573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.15576062, + "coreId": 0, + "status": 0 + }, + { + "start": 51.16577975, + "end": 51.17575125, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.16580985, + "end": 51.17577346, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.17071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.17572293, + "coreId": 0, + "status": 0 + }, + { + "start": 51.17577346, + "end": 51.19577328, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.18577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.18579702, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.19573532, + "coreId": 0, + "status": 0 + }, + { + "start": 51.19577328, + "end": 51.20581014, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.20071742, + "coreId": 0, + "status": 0 + }, + { + "start": 51.2057636, + "end": 51.26576385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.20577999, + "end": 51.23575151, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.20581014, + "end": 51.22581027, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.21071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.21573548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.21576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.22577297, + "coreId": 0, + "status": 0 + }, + { + "start": 51.22581027, + "end": 51.23577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.23071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.23572293, + "coreId": 0, + "status": 0 + }, + { + "start": 51.23577372, + "end": 51.2557737, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.24580996, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.2458342, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.25573574, + "coreId": 0, + "status": 0 + }, + { + "start": 51.2557737, + "end": 51.26581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.26071727, + "coreId": 0, + "status": 0 + }, + { + "start": 51.26576385, + "end": 51.42576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.26578024, + "end": 51.28580414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 51.26581039, + "end": 51.27873124, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 51.27071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.27573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.2757607, + "coreId": 0, + "status": 0 + }, + { + "start": 51.27873124, + "end": 51.30575502, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 51.28574224, + "coreId": 0, + "status": 0 + }, + { + "start": 51.28771022, + "end": 51.29271814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.29573014, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.30572989, + "coreId": 0, + "status": 0 + }, + { + "start": 51.30575502, + "end": 51.345768, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 51.30579221, + "end": 51.31576761, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 51.3087102, + "end": 51.31371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.3157175, + "coreId": 0, + "status": 0 + }, + { + "start": 51.31771019, + "end": 51.32576805, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.32571728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.32574252, + "coreId": 0, + "status": 0 + }, + { + "start": 51.3277102, + "end": 51.33271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.33571735, + "coreId": 0, + "status": 0 + }, + { + "start": 51.345768, + "end": 51.38581015, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 51.34582949, + "end": 51.35576799, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 51.34871022, + "end": 51.35471814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.35573032, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.3657173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.3657421, + "coreId": 0, + "status": 0 + }, + { + "start": 51.36579225, + "end": 51.39575112, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.36871019, + "end": 51.37371837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.37576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.38577275, + "coreId": 0, + "status": 0 + }, + { + "start": 51.38581015, + "end": 51.39577329, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.39071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.3957228, + "coreId": 0, + "status": 0 + }, + { + "start": 51.39577329, + "end": 51.4157736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.40577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.40579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.41573559, + "coreId": 0, + "status": 0 + }, + { + "start": 51.4157736, + "end": 51.42581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.42071745, + "coreId": 0, + "status": 0 + }, + { + "start": 51.42576363, + "end": 51.48576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.42577997, + "end": 51.45575138, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.42581007, + "end": 51.44584704, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.43071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.43573577, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.43576067, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.44580972, + "coreId": 0, + "status": 0 + }, + { + "start": 51.44584704, + "end": 51.47577357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.45071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.45572296, + "coreId": 0, + "status": 0 + }, + { + "start": 51.45575138, + "end": 51.47575136, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.46577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.46579702, + "coreId": 0, + "status": 0 + }, + { + "start": 51.47577357, + "end": 51.48580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.48071746, + "coreId": 0, + "status": 0 + }, + { + "start": 51.48577971, + "end": 51.51575115, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.48580981, + "end": 51.5058103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.49071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.49573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.49576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.5057729, + "coreId": 0, + "status": 0 + }, + { + "start": 51.5058103, + "end": 51.51577332, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.51071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.51572283, + "coreId": 0, + "status": 0 + }, + { + "start": 51.51577332, + "end": 51.53577383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.52577297, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.5257973, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.53573582, + "coreId": 0, + "status": 0 + }, + { + "start": 51.53577383, + "end": 51.54584725, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.54071742, + "coreId": 0, + "status": 0 + }, + { + "start": 51.54579276, + "end": 51.70576338, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.54584725, + "end": 51.56581061, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.55071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.55573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.55576047, + "coreId": 0, + "status": 0 + }, + { + "start": 51.56578037, + "end": 51.5757516, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.56581061, + "end": 51.57577377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.57071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.57572277, + "coreId": 0, + "status": 0 + }, + { + "start": 51.5757516, + "end": 51.5857922, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.57577377, + "end": 51.585755, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 51.57871746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.58572987, + "coreId": 0, + "status": 0 + }, + { + "start": 51.585755, + "end": 51.67577326, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 51.5857922, + "end": 51.59576774, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 51.58871019, + "end": 51.59371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.59571749, + "coreId": 0, + "status": 0 + }, + { + "start": 51.59771018, + "end": 51.60576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.60571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.60574205, + "coreId": 0, + "status": 0 + }, + { + "start": 51.60871017, + "end": 51.61371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.61571731, + "coreId": 0, + "status": 0 + }, + { + "start": 51.61871022, + "end": 51.62576824, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.62573045, + "coreId": 0, + "status": 0 + }, + { + "start": 51.62771022, + "end": 51.63271818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.6357303, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.64575478, + "coreId": 0, + "status": 0 + }, + { + "start": 51.64582917, + "end": 51.66580395, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 51.64871017, + "end": 51.65371837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.65571751, + "coreId": 0, + "status": 0 + }, + { + "start": 51.65871017, + "end": 51.66576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.66574205, + "coreId": 0, + "status": 0 + }, + { + "start": 51.66771017, + "end": 51.67271837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 51.67577326, + "end": 51.69577343, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.68071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.68577286, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.68579724, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.69573546, + "coreId": 0, + "status": 0 + }, + { + "start": 51.69577343, + "end": 51.70580982, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.70071743, + "coreId": 0, + "status": 0 + }, + { + "start": 51.70576338, + "end": 51.7657634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.70577972, + "end": 51.7357514, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.70580982, + "end": 51.72581013, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.71071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.71573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.71576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.72577283, + "coreId": 0, + "status": 0 + }, + { + "start": 51.72581013, + "end": 51.73577356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.73071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.73572282, + "coreId": 0, + "status": 0 + }, + { + "start": 51.7357514, + "end": 51.75575157, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.73577356, + "end": 51.75577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.74580999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.74583428, + "coreId": 0, + "status": 0 + }, + { + "start": 51.75577374, + "end": 51.76580985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.76071745, + "coreId": 0, + "status": 0 + }, + { + "start": 51.7657634, + "end": 51.82576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.76577975, + "end": 51.79575114, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.76580985, + "end": 51.78580983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.77071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.77573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.77576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.78577253, + "coreId": 0, + "status": 0 + }, + { + "start": 51.78580983, + "end": 51.7957733, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.79071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.79572282, + "coreId": 0, + "status": 0 + }, + { + "start": 51.7957733, + "end": 51.81577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.80577286, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.80579724, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.81573529, + "coreId": 0, + "status": 0 + }, + { + "start": 51.81577326, + "end": 51.8258101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.82071745, + "coreId": 0, + "status": 0 + }, + { + "start": 51.82576366, + "end": 51.94580499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.82578, + "end": 51.85575138, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.8258101, + "end": 51.84584712, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.83071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.83573582, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.83576072, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.8458099, + "coreId": 0, + "status": 0 + }, + { + "start": 51.84584712, + "end": 51.87577414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.85071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.85572296, + "coreId": 0, + "status": 0 + }, + { + "start": 51.85575138, + "end": 51.87575197, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.86577295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.86579733, + "coreId": 0, + "status": 0 + }, + { + "start": 51.87575197, + "end": 51.88579237, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.87577414, + "end": 51.92575551, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 51.87871734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.88571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.88574222, + "coreId": 0, + "status": 0 + }, + { + "start": 51.88579237, + "end": 51.90580414, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 51.88871019, + "end": 51.89371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.89571733, + "coreId": 0, + "status": 0 + }, + { + "start": 51.89871017, + "end": 51.90576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.90573007, + "coreId": 0, + "status": 0 + }, + { + "start": 51.90771022, + "end": 51.91271816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.91573005, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.92571731, + "coreId": 0, + "status": 0 + }, + { + "start": 51.92575551, + "end": 51.96575524, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 51.92579275, + "end": 51.94584103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 51.92871022, + "end": 51.93371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.9357175, + "coreId": 0, + "status": 0 + }, + { + "start": 51.93771019, + "end": 51.94578036, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.94575483, + "coreId": 0, + "status": 0 + }, + { + "start": 51.94580499, + "end": 51.98576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 51.94771018, + "end": 51.95271836, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.95573013, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.96573011, + "coreId": 0, + "status": 0 + }, + { + "start": 51.96575524, + "end": 51.98581009, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 51.96871019, + "end": 51.97371834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 51.9757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 51.98071745, + "coreId": 0, + "status": 0 + }, + { + "start": 51.98577994, + "end": 52.01575119, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 51.98581009, + "end": 52.00580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 51.99071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 51.99573549, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 51.99576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.00577251, + "coreId": 0, + "status": 0 + }, + { + "start": 52.00580981, + "end": 52.0157734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.01071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.01572287, + "coreId": 0, + "status": 0 + }, + { + "start": 52.01575119, + "end": 52.03575153, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.0157734, + "end": 52.03577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.02577296, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.02579729, + "coreId": 0, + "status": 0 + }, + { + "start": 52.03577369, + "end": 52.04584705, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.04071745, + "coreId": 0, + "status": 0 + }, + { + "start": 52.04579256, + "end": 52.10576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.04581689, + "end": 52.07575119, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.04584705, + "end": 52.06580987, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.0507173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.05573577, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.05576067, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.06577257, + "coreId": 0, + "status": 0 + }, + { + "start": 52.06580987, + "end": 52.0757734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.07071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.07572287, + "coreId": 0, + "status": 0 + }, + { + "start": 52.0757734, + "end": 52.09577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.08577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.08579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.0957353, + "coreId": 0, + "status": 0 + }, + { + "start": 52.09577326, + "end": 52.1058101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.10071743, + "coreId": 0, + "status": 0 + }, + { + "start": 52.10576356, + "end": 52.16576383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.10577995, + "end": 52.13575145, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.1058101, + "end": 52.12581029, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.11071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.11573549, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.11576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.12577299, + "coreId": 0, + "status": 0 + }, + { + "start": 52.12581029, + "end": 52.13577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.13071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.13572287, + "coreId": 0, + "status": 0 + }, + { + "start": 52.13575145, + "end": 52.15575157, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.13577366, + "end": 52.15577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.14581009, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.14583443, + "coreId": 0, + "status": 0 + }, + { + "start": 52.15577373, + "end": 52.16581037, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.16071731, + "coreId": 0, + "status": 0 + }, + { + "start": 52.16576383, + "end": 52.32576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.16578022, + "end": 52.18580416, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 52.16581037, + "end": 52.17873144, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 52.17071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.17573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.17576071, + "coreId": 0, + "status": 0 + }, + { + "start": 52.17873144, + "end": 52.20575501, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 52.18573008, + "coreId": 0, + "status": 0 + }, + { + "start": 52.18771021, + "end": 52.19271816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.19573016, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.20571725, + "coreId": 0, + "status": 0 + }, + { + "start": 52.20575501, + "end": 52.24576788, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 52.2057922, + "end": 52.22580454, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 52.20871021, + "end": 52.21371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.21571751, + "coreId": 0, + "status": 0 + }, + { + "start": 52.2177102, + "end": 52.22576807, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.2257173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.22574254, + "coreId": 0, + "status": 0 + }, + { + "start": 52.22771017, + "end": 52.23271833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 52.24576788, + "end": 52.29577328, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 52.2458294, + "end": 52.25576799, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 52.2487102, + "end": 52.25371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.25571749, + "coreId": 0, + "status": 0 + }, + { + "start": 52.25771017, + "end": 52.26576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.26571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.26574205, + "coreId": 0, + "status": 0 + }, + { + "start": 52.26771018, + "end": 52.27271814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.2757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.28577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.28579707, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.29071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.29572279, + "coreId": 0, + "status": 0 + }, + { + "start": 52.29577328, + "end": 52.31577361, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.30071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.30577273, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.30579706, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.3157356, + "coreId": 0, + "status": 0 + }, + { + "start": 52.31577361, + "end": 52.32581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.32071745, + "coreId": 0, + "status": 0 + }, + { + "start": 52.32576365, + "end": 52.3857634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.32581009, + "end": 52.34584709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.33071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.33573574, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.33576064, + "coreId": 0, + "status": 0 + }, + { + "start": 52.34581694, + "end": 52.35575138, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.34584709, + "end": 52.35577355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.35071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.35572296, + "coreId": 0, + "status": 0 + }, + { + "start": 52.35577355, + "end": 52.37577357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.36577272, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.36579706, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.37573556, + "coreId": 0, + "status": 0 + }, + { + "start": 52.37577357, + "end": 52.38580984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.38071745, + "coreId": 0, + "status": 0 + }, + { + "start": 52.38577974, + "end": 52.41575109, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.38580984, + "end": 52.4058101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.39071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.39573547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.39576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.4057727, + "coreId": 0, + "status": 0 + }, + { + "start": 52.4058101, + "end": 52.41577326, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.41071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.41572277, + "coreId": 0, + "status": 0 + }, + { + "start": 52.41575109, + "end": 52.43575162, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.41577326, + "end": 52.43577383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.425773, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.42579733, + "coreId": 0, + "status": 0 + }, + { + "start": 52.43577383, + "end": 52.44584695, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.44071745, + "coreId": 0, + "status": 0 + }, + { + "start": 52.44579256, + "end": 52.60576337, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.44581684, + "end": 52.47575163, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.44584695, + "end": 52.46581056, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.45071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.45573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.45576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.46577316, + "coreId": 0, + "status": 0 + }, + { + "start": 52.46581056, + "end": 52.4757738, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.47071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.4757228, + "coreId": 0, + "status": 0 + }, + { + "start": 52.47575163, + "end": 52.48579224, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.4757738, + "end": 52.48575505, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 52.47871749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.48572992, + "coreId": 0, + "status": 0 + }, + { + "start": 52.48575505, + "end": 52.57577326, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 52.48579224, + "end": 52.49576776, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 52.48871022, + "end": 52.49371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.49571751, + "coreId": 0, + "status": 0 + }, + { + "start": 52.49771017, + "end": 52.50576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.50571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.50574205, + "coreId": 0, + "status": 0 + }, + { + "start": 52.5087102, + "end": 52.51371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.51571732, + "coreId": 0, + "status": 0 + }, + { + "start": 52.5187102, + "end": 52.52576823, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.52573044, + "coreId": 0, + "status": 0 + }, + { + "start": 52.52771023, + "end": 52.53271819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.5357303, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.54575484, + "coreId": 0, + "status": 0 + }, + { + "start": 52.54582929, + "end": 52.56580401, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 52.5487102, + "end": 52.55371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.55571747, + "coreId": 0, + "status": 0 + }, + { + "start": 52.55671019, + "end": 52.56576764, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.56571731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.56574211, + "coreId": 0, + "status": 0 + }, + { + "start": 52.56771017, + "end": 52.57271831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 52.57577326, + "end": 52.59577345, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.5857729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.58579728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.59573548, + "coreId": 0, + "status": 0 + }, + { + "start": 52.59577345, + "end": 52.60580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.60071748, + "coreId": 0, + "status": 0 + }, + { + "start": 52.60576337, + "end": 52.66576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.60580981, + "end": 52.62581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.61071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.61573561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.61576051, + "coreId": 0, + "status": 0 + }, + { + "start": 52.62577997, + "end": 52.63575139, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.62581007, + "end": 52.63577355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.63071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.63572281, + "coreId": 0, + "status": 0 + }, + { + "start": 52.63577355, + "end": 52.65577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.6458099, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.64583428, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.65573577, + "coreId": 0, + "status": 0 + }, + { + "start": 52.65577374, + "end": 52.66580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.66071745, + "coreId": 0, + "status": 0 + }, + { + "start": 52.66576337, + "end": 52.72576367, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.66577971, + "end": 52.69575115, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.66580981, + "end": 52.68580984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.67071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.67573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.67576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.68577254, + "coreId": 0, + "status": 0 + }, + { + "start": 52.68580984, + "end": 52.69577331, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.69071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.69572283, + "coreId": 0, + "status": 0 + }, + { + "start": 52.69577331, + "end": 52.71577332, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.7057729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.70579728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.71573535, + "coreId": 0, + "status": 0 + }, + { + "start": 52.71577332, + "end": 52.72581011, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.72071747, + "coreId": 0, + "status": 0 + }, + { + "start": 52.72576367, + "end": 52.84580491, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.72581011, + "end": 52.74584729, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.73071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.73573584, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.73576074, + "coreId": 0, + "status": 0 + }, + { + "start": 52.74581718, + "end": 52.75575138, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.74584729, + "end": 52.75577354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.75071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.75572296, + "coreId": 0, + "status": 0 + }, + { + "start": 52.75575138, + "end": 52.78579242, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.75577354, + "end": 52.77577398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 52.76577295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.76579733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.77573576, + "coreId": 0, + "status": 0 + }, + { + "start": 52.77577398, + "end": 52.82575548, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 52.77871732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.78571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.78574226, + "coreId": 0, + "status": 0 + }, + { + "start": 52.78579242, + "end": 52.80580418, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 52.78871022, + "end": 52.79371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.79571734, + "coreId": 0, + "status": 0 + }, + { + "start": 52.79871021, + "end": 52.80576781, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.80573011, + "coreId": 0, + "status": 0 + }, + { + "start": 52.80771017, + "end": 52.81271818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.81573011, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.82573026, + "coreId": 0, + "status": 0 + }, + { + "start": 52.82575548, + "end": 52.86575522, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 52.82579272, + "end": 52.84584094, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 52.82871021, + "end": 52.83371837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.83571747, + "coreId": 0, + "status": 0 + }, + { + "start": 52.83771018, + "end": 52.84578033, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.8457548, + "coreId": 0, + "status": 0 + }, + { + "start": 52.84580491, + "end": 52.88576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.8477102, + "end": 52.85271832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.85573012, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.86573009, + "coreId": 0, + "status": 0 + }, + { + "start": 52.86575522, + "end": 52.87577343, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 52.86871017, + "end": 52.87371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "start": 52.87577343, + "end": 52.88581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.88071747, + "coreId": 0, + "status": 0 + }, + { + "start": 52.88577994, + "end": 52.91575123, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.88581009, + "end": 52.90580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.8907173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.89573551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.89576041, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.90577251, + "coreId": 0, + "status": 0 + }, + { + "start": 52.90580981, + "end": 52.91577344, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.91071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.91572291, + "coreId": 0, + "status": 0 + }, + { + "start": 52.91575123, + "end": 52.93575153, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 52.91577344, + "end": 52.93577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.92071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.92577298, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.92579731, + "coreId": 0, + "status": 0 + }, + { + "start": 52.93577369, + "end": 52.94584709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.94071743, + "coreId": 0, + "status": 0 + }, + { + "start": 52.94579261, + "end": 52.96576339, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.94584709, + "end": 52.96580984, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 52.95071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 52.95573574, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.95576064, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.96071748, + "coreId": 0, + "status": 0 + }, + { + "start": 52.96576339, + "end": 52.98576354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.96580984, + "end": 52.98580998, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 52.97573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.97576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 52.98071725, + "coreId": 0, + "status": 0 + }, + { + "start": 52.98576354, + "end": 53.00576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 52.98580998, + "end": 53.00581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 52.9957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 52.9957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.00071746, + "coreId": 0, + "status": 0 + }, + { + "start": 53.00576355, + "end": 53.02576384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.00581009, + "end": 53.02581028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.01573551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.01576041, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.02071725, + "coreId": 0, + "status": 0 + }, + { + "start": 53.02581028, + "end": 53.08575523, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 113, + "start": 53.03573566, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.03576056, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.04071742, + "coreId": 0, + "status": 0 + }, + { + "start": 53.04579274, + "end": 53.06576384, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.05573575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.05576065, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.0607173, + "coreId": 0, + "status": 0 + }, + { + "start": 53.06576384, + "end": 53.18576359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.06578023, + "end": 53.08579242, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.07573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.07576073, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.07871746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.08571747, + "coreId": 0, + "status": 0 + }, + { + "start": 53.08575523, + "end": 53.10575504, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 53.08579242, + "end": 53.09576772, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.08871017, + "end": 53.09371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.09571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.10571728, + "coreId": 0, + "status": 0 + }, + { + "start": 53.10575504, + "end": 53.2157736, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 53.10579223, + "end": 53.11576758, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.10871019, + "end": 53.11371837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.11571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.12571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.12574249, + "coreId": 0, + "status": 0 + }, + { + "start": 53.12579269, + "end": 53.13576766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.12871018, + "end": 53.13371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.13571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.14575501, + "coreId": 0, + "status": 0 + }, + { + "start": 53.14582946, + "end": 53.15576798, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.14871017, + "end": 53.15371837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.15571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.16571728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.16574208, + "coreId": 0, + "status": 0 + }, + { + "start": 53.16871017, + "end": 53.17371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 53.1757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.18071725, + "coreId": 0, + "status": 0 + }, + { + "start": 53.18576359, + "end": 53.20576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.19573533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.19576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.20071729, + "coreId": 0, + "status": 0 + }, + { + "start": 53.20576358, + "end": 53.22576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.21573559, + "coreId": 0, + "status": 0 + }, + { + "start": 53.2157736, + "end": 53.27577357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.22071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.23573574, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.23576064, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.24071729, + "coreId": 0, + "status": 0 + }, + { + "start": 53.2457926, + "end": 53.26576358, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.25573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.25576046, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.26071725, + "coreId": 0, + "status": 0 + }, + { + "start": 53.26576358, + "end": 53.28576341, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.27573556, + "coreId": 0, + "status": 0 + }, + { + "start": 53.27577357, + "end": 53.33577383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.28071748, + "coreId": 0, + "status": 0 + }, + { + "start": 53.28576341, + "end": 53.30576376, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.29573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.29576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.30071725, + "coreId": 0, + "status": 0 + }, + { + "start": 53.30576376, + "end": 53.32576383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.31573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.31576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.32071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.33573582, + "coreId": 0, + "status": 0 + }, + { + "start": 53.33577383, + "end": 53.38575503, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 53.34071747, + "coreId": 0, + "status": 0 + }, + { + "start": 53.34579276, + "end": 53.36576404, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.35573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.35576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.36071744, + "coreId": 0, + "status": 0 + }, + { + "start": 53.36576404, + "end": 53.48576377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.36578043, + "end": 53.38579223, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.37573577, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.37576092, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.37871751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.38571728, + "coreId": 0, + "status": 0 + }, + { + "start": 53.38575503, + "end": 53.40575523, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 53.38579223, + "end": 53.39576774, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.3887102, + "end": 53.39371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.39573017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.40571747, + "coreId": 0, + "status": 0 + }, + { + "start": 53.40575523, + "end": 53.51577358, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 53.40579242, + "end": 53.41576745, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.40871017, + "end": 53.41371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.41571734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.42571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.42574271, + "coreId": 0, + "status": 0 + }, + { + "start": 53.42579291, + "end": 53.43576783, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.42871021, + "end": 53.43371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.43571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.44575474, + "coreId": 0, + "status": 0 + }, + { + "start": 53.44582913, + "end": 53.45576801, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.44871017, + "end": 53.45371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.45571751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.46571727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.46574207, + "coreId": 0, + "status": 0 + }, + { + "start": 53.46871019, + "end": 53.47371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 53.47576024, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.48071729, + "coreId": 0, + "status": 0 + }, + { + "start": 53.48576377, + "end": 53.50576341, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.48578016, + "end": 53.55575155, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.49573548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.49576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.50071742, + "coreId": 0, + "status": 0 + }, + { + "start": 53.50576341, + "end": 53.52576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 53.50579688, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.51573557, + "coreId": 0, + "status": 0 + }, + { + "start": 53.51577358, + "end": 53.53577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.52071729, + "coreId": 0, + "status": 0 + }, + { + "start": 53.52576366, + "end": 53.66576404, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 53.52579713, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.53573556, + "coreId": 0, + "status": 0 + }, + { + "start": 53.53577352, + "end": 53.55577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.54071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.54580997, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.54583426, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.55572313, + "coreId": 0, + "status": 0 + }, + { + "start": 53.55575155, + "end": 53.5757514, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 53.55577372, + "end": 53.57577361, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.56071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.5657725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.56579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.5707173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.57572308, + "coreId": 0, + "status": 0 + }, + { + "start": 53.57577361, + "end": 53.60581031, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 53.58577251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.58579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.59071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.59572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.59576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.60577291, + "coreId": 0, + "status": 0 + }, + { + "start": 53.60581031, + "end": 53.62581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.61071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.61572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.61576019, + "coreId": 0, + "status": 0 + }, + { + "start": 53.62581007, + "end": 53.64584712, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.63071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.63572306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.63576074, + "coreId": 0, + "status": 0 + }, + { + "start": 53.64584712, + "end": 53.66581067, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.65071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.65573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.65576045, + "coreId": 0, + "status": 0 + }, + { + "start": 53.66576404, + "end": 53.74580501, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.66578043, + "end": 53.68580395, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.66581067, + "end": 53.67873121, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 53.67071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.67573573, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.67576088, + "coreId": 0, + "status": 0 + }, + { + "start": 53.67873121, + "end": 53.78581009, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.68571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.68574205, + "coreId": 0, + "status": 0 + }, + { + "start": 53.6887102, + "end": 53.69371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.6957173, + "coreId": 0, + "status": 0 + }, + { + "start": 53.69671019, + "end": 53.70576779, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.70571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.70574226, + "coreId": 0, + "status": 0 + }, + { + "start": 53.70871017, + "end": 53.71371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.71571746, + "coreId": 0, + "status": 0 + }, + { + "start": 53.71771019, + "end": 53.72576805, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.72571728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.72574252, + "coreId": 0, + "status": 0 + }, + { + "start": 53.72871017, + "end": 53.73371843, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.73571752, + "coreId": 0, + "status": 0 + }, + { + "start": 53.73771018, + "end": 53.74578038, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.74575485, + "coreId": 0, + "status": 0 + }, + { + "start": 53.74580501, + "end": 53.78576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.74871017, + "end": 53.75371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.75571729, + "coreId": 0, + "status": 0 + }, + { + "start": 53.75771021, + "end": 53.76576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.76571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.76574224, + "coreId": 0, + "status": 0 + }, + { + "start": 53.76871023, + "end": 53.77371834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 53.77576041, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.78071748, + "coreId": 0, + "status": 0 + }, + { + "start": 53.78576355, + "end": 53.80576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.78581009, + "end": 53.80580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.7957355, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.7957604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.80071725, + "coreId": 0, + "status": 0 + }, + { + "start": 53.80576337, + "end": 53.82576385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.80580981, + "end": 53.82581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.81573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.81576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.82071728, + "coreId": 0, + "status": 0 + }, + { + "start": 53.82581038, + "end": 53.84584706, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.83573573, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.83576063, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.84071745, + "coreId": 0, + "status": 0 + }, + { + "start": 53.84579257, + "end": 53.86576339, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.84584706, + "end": 53.86580983, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.85573577, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.85576067, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.86071728, + "coreId": 0, + "status": 0 + }, + { + "start": 53.86576339, + "end": 53.88576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.86580983, + "end": 53.93577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.87573543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.87576033, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.88071728, + "coreId": 0, + "status": 0 + }, + { + "start": 53.88576357, + "end": 53.90576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.89573534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.89576024, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.90071745, + "coreId": 0, + "status": 0 + }, + { + "start": 53.90576358, + "end": 53.92576384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.91573547, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.91576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.92071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 53.93573571, + "coreId": 0, + "status": 0 + }, + { + "start": 53.93577372, + "end": 53.9857552, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 53.94071742, + "coreId": 0, + "status": 0 + }, + { + "start": 53.9457929, + "end": 53.96576386, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.95573575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.95576065, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.96071728, + "coreId": 0, + "status": 0 + }, + { + "start": 53.96576386, + "end": 54.08576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 53.96578025, + "end": 53.9857924, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 53.9757356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 53.97576075, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.97871751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 53.98571745, + "coreId": 0, + "status": 0 + }, + { + "start": 53.9857552, + "end": 54.00575504, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 53.9857924, + "end": 53.99576771, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 53.98871017, + "end": 53.99371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 53.99573014, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.00571728, + "coreId": 0, + "status": 0 + }, + { + "start": 54.00575504, + "end": 54.11577357, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 54.00579223, + "end": 54.01576758, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 54.00871019, + "end": 54.01371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.01571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.02571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.0257427, + "coreId": 0, + "status": 0 + }, + { + "start": 54.0257929, + "end": 54.03576767, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 54.02871017, + "end": 54.03371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.0357173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.04575495, + "coreId": 0, + "status": 0 + }, + { + "start": 54.04582934, + "end": 54.05576796, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 54.04871017, + "end": 54.05371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.05571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.06571728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.06574208, + "coreId": 0, + "status": 0 + }, + { + "start": 54.06871023, + "end": 54.07371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.07576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.08071726, + "coreId": 0, + "status": 0 + }, + { + "start": 54.08576355, + "end": 54.10576359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.08577994, + "end": 54.15575135, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.0957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.0957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.10071727, + "coreId": 0, + "status": 0 + }, + { + "start": 54.10576359, + "end": 54.12576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.10579706, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.11573556, + "coreId": 0, + "status": 0 + }, + { + "start": 54.11577357, + "end": 54.13577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.12071742, + "coreId": 0, + "status": 0 + }, + { + "start": 54.12576366, + "end": 54.265764, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.12579713, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.13573573, + "coreId": 0, + "status": 0 + }, + { + "start": 54.13577369, + "end": 54.15577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.14071731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.14580978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.14583407, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.15572293, + "coreId": 0, + "status": 0 + }, + { + "start": 54.15575135, + "end": 54.1757514, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 54.15577352, + "end": 54.17577362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.16071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.16577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.16579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.17071731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.17572308, + "coreId": 0, + "status": 0 + }, + { + "start": 54.17577362, + "end": 54.20581028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.18577253, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.18579686, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.19071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.195723, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.19576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.20577288, + "coreId": 0, + "status": 0 + }, + { + "start": 54.20581028, + "end": 54.22581037, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.21071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.21572279, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.21576021, + "coreId": 0, + "status": 0 + }, + { + "start": 54.22581037, + "end": 54.24584698, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.23071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.23572308, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.23576076, + "coreId": 0, + "status": 0 + }, + { + "start": 54.24584698, + "end": 54.26581063, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.25071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.25573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.25576049, + "coreId": 0, + "status": 0 + }, + { + "start": 54.265764, + "end": 54.34580503, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.26578039, + "end": 54.285804, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 54.26581063, + "end": 54.2787314, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 54.27071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.27573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.27576087, + "coreId": 0, + "status": 0 + }, + { + "start": 54.2787314, + "end": 54.3858104, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.2857173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.2857421, + "coreId": 0, + "status": 0 + }, + { + "start": 54.28871019, + "end": 54.29371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.2957175, + "coreId": 0, + "status": 0 + }, + { + "start": 54.29671017, + "end": 54.30576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.30571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.30574225, + "coreId": 0, + "status": 0 + }, + { + "start": 54.30871017, + "end": 54.31371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.31571729, + "coreId": 0, + "status": 0 + }, + { + "start": 54.31771017, + "end": 54.32576822, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.32571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.32574269, + "coreId": 0, + "status": 0 + }, + { + "start": 54.32871019, + "end": 54.33371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.33571746, + "coreId": 0, + "status": 0 + }, + { + "start": 54.33771021, + "end": 54.3457804, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.34575487, + "coreId": 0, + "status": 0 + }, + { + "start": 54.34580503, + "end": 54.38576377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.34871022, + "end": 54.35371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.35571751, + "coreId": 0, + "status": 0 + }, + { + "start": 54.35771017, + "end": 54.36576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.36571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.36574205, + "coreId": 0, + "status": 0 + }, + { + "start": 54.36871019, + "end": 54.37371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.37576026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.38071725, + "coreId": 0, + "status": 0 + }, + { + "start": 54.38576377, + "end": 54.40576342, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.3858104, + "end": 54.40580986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.39573546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.39576036, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.40071742, + "coreId": 0, + "status": 0 + }, + { + "start": 54.40576342, + "end": 54.42576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.40580986, + "end": 54.4258101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.41573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.41576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.42071747, + "coreId": 0, + "status": 0 + }, + { + "start": 54.4258101, + "end": 54.44584724, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.43573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.43576046, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.44071729, + "coreId": 0, + "status": 0 + }, + { + "start": 54.44579275, + "end": 54.46576342, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.44584724, + "end": 54.46580986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.45573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.45576062, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.46071742, + "coreId": 0, + "status": 0 + }, + { + "start": 54.46576342, + "end": 54.48576338, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.46580986, + "end": 54.53577386, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.47573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.47576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.48071725, + "coreId": 0, + "status": 0 + }, + { + "start": 54.48576338, + "end": 54.50576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.49573533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.49576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.50071747, + "coreId": 0, + "status": 0 + }, + { + "start": 54.50576372, + "end": 54.52576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.51573546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.51576036, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.52071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.53573585, + "coreId": 0, + "status": 0 + }, + { + "start": 54.53577386, + "end": 54.58575517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 54.54071726, + "coreId": 0, + "status": 0 + }, + { + "start": 54.5457929, + "end": 54.56576381, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.55573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.55576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.56071746, + "coreId": 0, + "status": 0 + }, + { + "start": 54.56576381, + "end": 54.6857636, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.5657802, + "end": 54.58579237, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.57573573, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.57576088, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.57871729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.58571742, + "coreId": 0, + "status": 0 + }, + { + "start": 54.58575517, + "end": 54.60575524, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 54.58579237, + "end": 54.5957676, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 54.58871019, + "end": 54.59371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.59573003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.60571748, + "coreId": 0, + "status": 0 + }, + { + "start": 54.60575524, + "end": 54.7157734, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 54.60579243, + "end": 54.61576763, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 54.60871017, + "end": 54.61371837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.61571752, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.62571727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.62574251, + "coreId": 0, + "status": 0 + }, + { + "start": 54.62579271, + "end": 54.63576786, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 54.62871019, + "end": 54.63371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.63571749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.64575474, + "coreId": 0, + "status": 0 + }, + { + "start": 54.64582913, + "end": 54.65576783, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 54.64871018, + "end": 54.65371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.65571733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.66571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.66574226, + "coreId": 0, + "status": 0 + }, + { + "start": 54.66871019, + "end": 54.67371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.67576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.68071742, + "coreId": 0, + "status": 0 + }, + { + "start": 54.6857636, + "end": 54.7057634, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.68577999, + "end": 54.75575156, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.6957355, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.6957604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.70071748, + "coreId": 0, + "status": 0 + }, + { + "start": 54.7057634, + "end": 54.72576384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.70579687, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.71573539, + "coreId": 0, + "status": 0 + }, + { + "start": 54.7157734, + "end": 54.73577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.72071725, + "coreId": 0, + "status": 0 + }, + { + "start": 54.72576384, + "end": 54.86576383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.72579731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.73573573, + "coreId": 0, + "status": 0 + }, + { + "start": 54.73577369, + "end": 54.75577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.74071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.74580983, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.74583412, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.75572314, + "coreId": 0, + "status": 0 + }, + { + "start": 54.75575156, + "end": 54.77575122, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 54.75577373, + "end": 54.77577343, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.76071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.7657725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.76579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.77071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.7757229, + "coreId": 0, + "status": 0 + }, + { + "start": 54.77577343, + "end": 54.80581014, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.78577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.78579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.79071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.79572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.79576025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.80577274, + "coreId": 0, + "status": 0 + }, + { + "start": 54.80581014, + "end": 54.8258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.81071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.81572295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.81576037, + "coreId": 0, + "status": 0 + }, + { + "start": 54.8258103, + "end": 54.84584718, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.83071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.83572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.83576055, + "coreId": 0, + "status": 0 + }, + { + "start": 54.84584718, + "end": 54.86581037, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.85071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.85573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.85576062, + "coreId": 0, + "status": 0 + }, + { + "start": 54.86576383, + "end": 54.94580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.86578022, + "end": 54.88580417, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 54.86581037, + "end": 54.87873124, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 54.87071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 54.87573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.8757607, + "coreId": 0, + "status": 0 + }, + { + "start": 54.87873124, + "end": 54.98581009, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.88571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.88574227, + "coreId": 0, + "status": 0 + }, + { + "start": 54.88871022, + "end": 54.89371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.89571749, + "coreId": 0, + "status": 0 + }, + { + "start": 54.89671018, + "end": 54.90576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.90571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.90574205, + "coreId": 0, + "status": 0 + }, + { + "start": 54.90871023, + "end": 54.91371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.91571749, + "coreId": 0, + "status": 0 + }, + { + "start": 54.91771018, + "end": 54.92576805, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.92571728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.92574252, + "coreId": 0, + "status": 0 + }, + { + "start": 54.92871021, + "end": 54.93371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.93571729, + "coreId": 0, + "status": 0 + }, + { + "start": 54.93771021, + "end": 54.94578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.945755, + "coreId": 0, + "status": 0 + }, + { + "start": 54.94580516, + "end": 54.98576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.94871017, + "end": 54.95371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.9557175, + "coreId": 0, + "status": 0 + }, + { + "start": 54.95771017, + "end": 54.96576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 54.96571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.96574205, + "coreId": 0, + "status": 0 + }, + { + "start": 54.96871021, + "end": 54.97371837, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 54.97576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 54.98071731, + "coreId": 0, + "status": 0 + }, + { + "start": 54.98576355, + "end": 55.0057636, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 54.98581009, + "end": 55.00581004, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 54.99573532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 54.99576022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.00071728, + "coreId": 0, + "status": 0 + }, + { + "start": 55.0057636, + "end": 55.02576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.00581004, + "end": 55.02581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.01573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.01576046, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.02071743, + "coreId": 0, + "status": 0 + }, + { + "start": 55.02581009, + "end": 55.04584706, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.03573576, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.03576066, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.04071725, + "coreId": 0, + "status": 0 + }, + { + "start": 55.04579257, + "end": 55.06576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.04584706, + "end": 55.06581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.05573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.05576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.06071726, + "coreId": 0, + "status": 0 + }, + { + "start": 55.06576356, + "end": 55.08576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.06581009, + "end": 55.13577383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.07573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.07576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.08071745, + "coreId": 0, + "status": 0 + }, + { + "start": 55.08576337, + "end": 55.10576375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.09573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.09576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.10071729, + "coreId": 0, + "status": 0 + }, + { + "start": 55.10576375, + "end": 55.12576386, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.11573535, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.11576025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.12071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.13573582, + "coreId": 0, + "status": 0 + }, + { + "start": 55.13577383, + "end": 55.18575503, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 55.14071742, + "coreId": 0, + "status": 0 + }, + { + "start": 55.14579275, + "end": 55.16576403, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.1557356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.1557605, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.16071725, + "coreId": 0, + "status": 0 + }, + { + "start": 55.16576403, + "end": 55.28576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.16578042, + "end": 55.18579223, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.17573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.17576073, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.17871749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.18571728, + "coreId": 0, + "status": 0 + }, + { + "start": 55.18575503, + "end": 55.20575501, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 55.18579223, + "end": 55.19576774, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 55.1887102, + "end": 55.19371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.19573017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.20571725, + "coreId": 0, + "status": 0 + }, + { + "start": 55.20575501, + "end": 55.31577361, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 55.2057922, + "end": 55.21576744, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 55.20871017, + "end": 55.21371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.21571733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.22571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.2257427, + "coreId": 0, + "status": 0 + }, + { + "start": 55.2257929, + "end": 55.23576788, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 55.22871023, + "end": 55.23371834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.23571751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.24575476, + "coreId": 0, + "status": 0 + }, + { + "start": 55.24582915, + "end": 55.25576801, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 55.24871018, + "end": 55.25371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.25571751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.2657173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.2657421, + "coreId": 0, + "status": 0 + }, + { + "start": 55.2687102, + "end": 55.27371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 55.2757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.28071729, + "coreId": 0, + "status": 0 + }, + { + "start": 55.28576372, + "end": 55.30576339, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.28578011, + "end": 55.35575157, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.29573546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.29576036, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.30071746, + "coreId": 0, + "status": 0 + }, + { + "start": 55.30576339, + "end": 55.32576367, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 55.30579686, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.3157356, + "coreId": 0, + "status": 0 + }, + { + "start": 55.31577361, + "end": 55.33577356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.32071726, + "coreId": 0, + "status": 0 + }, + { + "start": 55.32576367, + "end": 55.46576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 55.32579714, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.3357356, + "coreId": 0, + "status": 0 + }, + { + "start": 55.33577356, + "end": 55.35577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.34071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.34580999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.34583428, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.35572315, + "coreId": 0, + "status": 0 + }, + { + "start": 55.35575157, + "end": 55.37575138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 55.35577374, + "end": 55.37577359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.36071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.36577253, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.36579687, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.37071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.37572306, + "coreId": 0, + "status": 0 + }, + { + "start": 55.37577359, + "end": 55.40581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 55.38577251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.38579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.39071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.39572282, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.39576024, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.40577286, + "coreId": 0, + "status": 0 + }, + { + "start": 55.40581035, + "end": 55.4258101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.41071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.41572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.41576019, + "coreId": 0, + "status": 0 + }, + { + "start": 55.4258101, + "end": 55.44584712, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.43071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.43572307, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.43576075, + "coreId": 0, + "status": 0 + }, + { + "start": 55.44584712, + "end": 55.46581036, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.45071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.45573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.45576047, + "coreId": 0, + "status": 0 + }, + { + "start": 55.46576382, + "end": 55.54580499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.46578021, + "end": 55.48580414, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 55.46581036, + "end": 55.47873123, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 55.47071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.47573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.47576087, + "coreId": 0, + "status": 0 + }, + { + "start": 55.47873123, + "end": 55.58581012, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.48571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.48574224, + "coreId": 0, + "status": 0 + }, + { + "start": 55.4887102, + "end": 55.49371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.49571731, + "coreId": 0, + "status": 0 + }, + { + "start": 55.4967102, + "end": 55.5057678, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.50571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.50574227, + "coreId": 0, + "status": 0 + }, + { + "start": 55.50871019, + "end": 55.51371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.51571746, + "coreId": 0, + "status": 0 + }, + { + "start": 55.51771021, + "end": 55.52576802, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.52571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.52574249, + "coreId": 0, + "status": 0 + }, + { + "start": 55.5287102, + "end": 55.53371835, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.5357175, + "coreId": 0, + "status": 0 + }, + { + "start": 55.53771018, + "end": 55.54578036, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.54575483, + "coreId": 0, + "status": 0 + }, + { + "start": 55.54580499, + "end": 55.58576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.54871017, + "end": 55.55371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.5557173, + "coreId": 0, + "status": 0 + }, + { + "start": 55.55771023, + "end": 55.56576779, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.56571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.56574226, + "coreId": 0, + "status": 0 + }, + { + "start": 55.56871021, + "end": 55.57371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 55.57576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.58071745, + "coreId": 0, + "status": 0 + }, + { + "start": 55.58576358, + "end": 55.60576342, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.58581012, + "end": 55.60580986, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.59573549, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.59576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.60071728, + "coreId": 0, + "status": 0 + }, + { + "start": 55.60576342, + "end": 55.62576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.60580986, + "end": 55.62581026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.61573543, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.61576033, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.62071729, + "coreId": 0, + "status": 0 + }, + { + "start": 55.62581026, + "end": 55.64584707, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.63573573, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.63576063, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.64071745, + "coreId": 0, + "status": 0 + }, + { + "start": 55.64579258, + "end": 55.66576337, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.64584707, + "end": 55.66580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.65573577, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.65576067, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.66071725, + "coreId": 0, + "status": 0 + }, + { + "start": 55.66576337, + "end": 55.6857636, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.66580981, + "end": 55.73577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.67573542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.67576032, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.68071728, + "coreId": 0, + "status": 0 + }, + { + "start": 55.6857636, + "end": 55.70576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.69573533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.69576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.70071746, + "coreId": 0, + "status": 0 + }, + { + "start": 55.70576356, + "end": 55.72576383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.71573549, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.71576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.7207173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.73573565, + "coreId": 0, + "status": 0 + }, + { + "start": 55.73577366, + "end": 55.78575521, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 55.74071742, + "coreId": 0, + "status": 0 + }, + { + "start": 55.74579291, + "end": 55.76576381, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.75573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.75576062, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.76071727, + "coreId": 0, + "status": 0 + }, + { + "start": 55.76576381, + "end": 55.88576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.7657802, + "end": 55.78579241, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.77573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.77576071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.77871746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.78571746, + "coreId": 0, + "status": 0 + }, + { + "start": 55.78575521, + "end": 55.80575505, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 55.78579241, + "end": 55.79576771, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 55.7887102, + "end": 55.79371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.79573014, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.80571729, + "coreId": 0, + "status": 0 + }, + { + "start": 55.80575505, + "end": 55.91577361, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 55.80579224, + "end": 55.81576761, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 55.80871017, + "end": 55.81371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.8157175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.82571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.82574253, + "coreId": 0, + "status": 0 + }, + { + "start": 55.82579273, + "end": 55.83576769, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 55.8287102, + "end": 55.83371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.83571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.84575493, + "coreId": 0, + "status": 0 + }, + { + "start": 55.84582941, + "end": 55.85576796, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 55.84871019, + "end": 55.85371836, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.85571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.86571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.86574205, + "coreId": 0, + "status": 0 + }, + { + "start": 55.8687102, + "end": 55.87371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 55.8757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.88071728, + "coreId": 0, + "status": 0 + }, + { + "start": 55.88576355, + "end": 55.90576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 55.88577994, + "end": 55.95575136, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 55.89573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.89576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.90071725, + "coreId": 0, + "status": 0 + }, + { + "start": 55.90576358, + "end": 55.92576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 55.90579705, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.9157356, + "coreId": 0, + "status": 0 + }, + { + "start": 55.91577361, + "end": 55.9357737, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.92071745, + "coreId": 0, + "status": 0 + }, + { + "start": 55.92576366, + "end": 56.06576442, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 55.92579713, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.93573574, + "coreId": 0, + "status": 0 + }, + { + "start": 55.9357737, + "end": 55.95577353, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.94071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.94580978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.94583407, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.95572294, + "coreId": 0, + "status": 0 + }, + { + "start": 55.95575136, + "end": 55.97575137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 55.95577353, + "end": 55.97577358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 55.96071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.96577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.96579705, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.97071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.97572305, + "coreId": 0, + "status": 0 + }, + { + "start": 55.97577358, + "end": 56.00581011, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 55.98577254, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.98579687, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 55.99071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 55.99572295, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 55.99576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.00577271, + "coreId": 0, + "status": 0 + }, + { + "start": 56.00581011, + "end": 56.02581025, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.01071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.0157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.01576022, + "coreId": 0, + "status": 0 + }, + { + "start": 56.02581025, + "end": 56.04584695, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.03071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.03572308, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.03576076, + "coreId": 0, + "status": 0 + }, + { + "start": 56.04584695, + "end": 56.06581109, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.05071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.05573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.05576048, + "coreId": 0, + "status": 0 + }, + { + "start": 56.06576442, + "end": 56.14580499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.06578084, + "end": 56.08580399, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 56.06581109, + "end": 56.07873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 56.07071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.07573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.0757607, + "coreId": 0, + "status": 0 + }, + { + "start": 56.07873137, + "end": 56.18581029, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.08571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.08574209, + "coreId": 0, + "status": 0 + }, + { + "start": 56.08871021, + "end": 56.09371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.0957175, + "coreId": 0, + "status": 0 + }, + { + "start": 56.09671017, + "end": 56.10576763, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.1057173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.1057421, + "coreId": 0, + "status": 0 + }, + { + "start": 56.10871021, + "end": 56.11371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.11571735, + "coreId": 0, + "status": 0 + }, + { + "start": 56.1177102, + "end": 56.12576822, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.12571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.12574269, + "coreId": 0, + "status": 0 + }, + { + "start": 56.12871019, + "end": 56.13371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.13571746, + "coreId": 0, + "status": 0 + }, + { + "start": 56.13771018, + "end": 56.14578036, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.14575483, + "coreId": 0, + "status": 0 + }, + { + "start": 56.14580499, + "end": 56.18576375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.1487102, + "end": 56.15371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.15571746, + "coreId": 0, + "status": 0 + }, + { + "start": 56.1577102, + "end": 56.1657676, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.16571727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.16574207, + "coreId": 0, + "status": 0 + }, + { + "start": 56.16871019, + "end": 56.17371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 56.1757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.18071729, + "coreId": 0, + "status": 0 + }, + { + "start": 56.18576375, + "end": 56.20576341, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.18581029, + "end": 56.20580985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.1957355, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.1957604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.20071746, + "coreId": 0, + "status": 0 + }, + { + "start": 56.20576341, + "end": 56.22576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.20580985, + "end": 56.2258101, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.2157356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.2157605, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.22071728, + "coreId": 0, + "status": 0 + }, + { + "start": 56.2258101, + "end": 56.24584734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.23573561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.23576051, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.24071728, + "coreId": 0, + "status": 0 + }, + { + "start": 56.24579276, + "end": 56.26576337, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.24584734, + "end": 56.26580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.25573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.25576062, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.26071748, + "coreId": 0, + "status": 0 + }, + { + "start": 56.26576337, + "end": 56.28576339, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.26580981, + "end": 56.33577384, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.27573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.27576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.2807173, + "coreId": 0, + "status": 0 + }, + { + "start": 56.28576339, + "end": 56.30576377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.2957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.2957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.30071742, + "coreId": 0, + "status": 0 + }, + { + "start": 56.30576377, + "end": 56.32576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.31573534, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.31576024, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.32071746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.33573583, + "coreId": 0, + "status": 0 + }, + { + "start": 56.33577384, + "end": 56.3857552, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 56.3407173, + "coreId": 0, + "status": 0 + }, + { + "start": 56.34579287, + "end": 56.36576381, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.35573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.35576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.36071742, + "coreId": 0, + "status": 0 + }, + { + "start": 56.36576381, + "end": 56.48576359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.3657802, + "end": 56.3857924, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.37573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.37576087, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.37871731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.38571745, + "coreId": 0, + "status": 0 + }, + { + "start": 56.3857552, + "end": 56.40575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 56.3857924, + "end": 56.3957676, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 56.38871019, + "end": 56.39371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.39573003, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.40571742, + "coreId": 0, + "status": 0 + }, + { + "start": 56.40575518, + "end": 56.51577345, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 56.40579237, + "end": 56.41576762, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 56.40871017, + "end": 56.41371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.41571751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.42571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.42574249, + "coreId": 0, + "status": 0 + }, + { + "start": 56.42579269, + "end": 56.43576784, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 56.42871018, + "end": 56.43371836, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.43571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.4457548, + "coreId": 0, + "status": 0 + }, + { + "start": 56.44582919, + "end": 56.45576779, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 56.44871017, + "end": 56.45371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.45571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.46571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.46574226, + "coreId": 0, + "status": 0 + }, + { + "start": 56.46871023, + "end": 56.47371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 56.47576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.48071747, + "coreId": 0, + "status": 0 + }, + { + "start": 56.48576359, + "end": 56.50576341, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.48577998, + "end": 56.55575152, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.4957355, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.4957604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.50071725, + "coreId": 0, + "status": 0 + }, + { + "start": 56.50576341, + "end": 56.52576383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 56.50579688, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.51573544, + "coreId": 0, + "status": 0 + }, + { + "start": 56.51577345, + "end": 56.53577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.52071729, + "coreId": 0, + "status": 0 + }, + { + "start": 56.52576383, + "end": 56.66576381, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 56.5257973, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.53573576, + "coreId": 0, + "status": 0 + }, + { + "start": 56.53577372, + "end": 56.55577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.54071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.54580978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.54583407, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.5557231, + "coreId": 0, + "status": 0 + }, + { + "start": 56.55575152, + "end": 56.57575119, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 56.55577369, + "end": 56.5757734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.56071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.56577253, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.56579687, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.57071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.57572287, + "coreId": 0, + "status": 0 + }, + { + "start": 56.5757734, + "end": 56.60581012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 56.58577271, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.58579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.59071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.59572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.59576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.60577272, + "coreId": 0, + "status": 0 + }, + { + "start": 56.60581012, + "end": 56.62581028, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.61071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.61572299, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.61576041, + "coreId": 0, + "status": 0 + }, + { + "start": 56.62581028, + "end": 56.64584721, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.63071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.63572288, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.63576056, + "coreId": 0, + "status": 0 + }, + { + "start": 56.64584721, + "end": 56.66581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.65071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.65573573, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.65576063, + "coreId": 0, + "status": 0 + }, + { + "start": 56.66576381, + "end": 56.74580518, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.6657802, + "end": 56.68580416, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 56.66581035, + "end": 56.67873135, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 56.67071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.67573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.67576073, + "coreId": 0, + "status": 0 + }, + { + "start": 56.67873135, + "end": 56.78581012, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.68571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.68574226, + "coreId": 0, + "status": 0 + }, + { + "start": 56.68871018, + "end": 56.69371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.69571748, + "coreId": 0, + "status": 0 + }, + { + "start": 56.69671017, + "end": 56.70576761, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.70571728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.70574208, + "coreId": 0, + "status": 0 + }, + { + "start": 56.70871019, + "end": 56.71371836, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.71571747, + "coreId": 0, + "status": 0 + }, + { + "start": 56.7177102, + "end": 56.72576808, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.72571731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.72574255, + "coreId": 0, + "status": 0 + }, + { + "start": 56.7287102, + "end": 56.73371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.73571729, + "coreId": 0, + "status": 0 + }, + { + "start": 56.73771017, + "end": 56.74578055, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.74575502, + "coreId": 0, + "status": 0 + }, + { + "start": 56.74580518, + "end": 56.78576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.74871017, + "end": 56.75371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.75571748, + "coreId": 0, + "status": 0 + }, + { + "start": 56.75771017, + "end": 56.76576758, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.76571725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.76574205, + "coreId": 0, + "status": 0 + }, + { + "start": 56.76871017, + "end": 56.77371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 56.7757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.78071725, + "coreId": 0, + "status": 0 + }, + { + "start": 56.78576358, + "end": 56.80576354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.78581012, + "end": 56.80580998, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.79573535, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.79576025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.80071727, + "coreId": 0, + "status": 0 + }, + { + "start": 56.80576354, + "end": 56.82576368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.80580998, + "end": 56.82581012, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.81573561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.81576051, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.82071742, + "coreId": 0, + "status": 0 + }, + { + "start": 56.82581012, + "end": 56.84584709, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.83573574, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.83576064, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.84071729, + "coreId": 0, + "status": 0 + }, + { + "start": 56.8457926, + "end": 56.86576354, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.84584709, + "end": 56.86580998, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.85573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.85576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.8607173, + "coreId": 0, + "status": 0 + }, + { + "start": 56.86576354, + "end": 56.88576341, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.86580998, + "end": 56.93577383, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.87573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.87576046, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.88071747, + "coreId": 0, + "status": 0 + }, + { + "start": 56.88576341, + "end": 56.90576378, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.89573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.89576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.90071725, + "coreId": 0, + "status": 0 + }, + { + "start": 56.90576378, + "end": 56.92576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.9157353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.9157602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.92071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 56.93573582, + "coreId": 0, + "status": 0 + }, + { + "start": 56.93577383, + "end": 56.985755, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 56.94071747, + "coreId": 0, + "status": 0 + }, + { + "start": 56.9457927, + "end": 56.96576404, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.95573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.95576048, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.96071746, + "coreId": 0, + "status": 0 + }, + { + "start": 56.96576404, + "end": 57.08576376, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 56.96578043, + "end": 56.9857922, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 56.97573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 56.97576087, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.97871746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 56.98571725, + "coreId": 0, + "status": 0 + }, + { + "start": 56.985755, + "end": 57.00575523, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 56.9857922, + "end": 56.99576774, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 56.9887102, + "end": 56.99371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 56.99573017, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.00571747, + "coreId": 0, + "status": 0 + }, + { + "start": 57.00575523, + "end": 57.11577358, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 57.00579242, + "end": 57.01576743, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 57.00871017, + "end": 57.01371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.01571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.02571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.02574271, + "coreId": 0, + "status": 0 + }, + { + "start": 57.02579291, + "end": 57.03576783, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 57.02871022, + "end": 57.03371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.03571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.04575477, + "coreId": 0, + "status": 0 + }, + { + "start": 57.04582916, + "end": 57.05576801, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 57.0487102, + "end": 57.05371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.05571751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.0657173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.0657421, + "coreId": 0, + "status": 0 + }, + { + "start": 57.06871019, + "end": 57.07371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.0757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.08071725, + "coreId": 0, + "status": 0 + }, + { + "start": 57.08576376, + "end": 57.10576342, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.08578015, + "end": 57.15575152, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.09573548, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.09576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.10071742, + "coreId": 0, + "status": 0 + }, + { + "start": 57.10576342, + "end": 57.12576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.10579689, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.11573557, + "coreId": 0, + "status": 0 + }, + { + "start": 57.11577358, + "end": 57.13577352, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.1207173, + "coreId": 0, + "status": 0 + }, + { + "start": 57.12576363, + "end": 57.26576404, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.1257971, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.13573556, + "coreId": 0, + "status": 0 + }, + { + "start": 57.13577352, + "end": 57.15577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.14071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.14581001, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.1458343, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.1557231, + "coreId": 0, + "status": 0 + }, + { + "start": 57.15575152, + "end": 57.17575139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 57.15577369, + "end": 57.1757736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.16071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.1657725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.16579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.17071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.17572307, + "coreId": 0, + "status": 0 + }, + { + "start": 57.1757736, + "end": 57.20581032, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.18577251, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.18579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.19071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.19572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.19576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.20577292, + "coreId": 0, + "status": 0 + }, + { + "start": 57.20581032, + "end": 57.22581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.21071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.21572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.21576019, + "coreId": 0, + "status": 0 + }, + { + "start": 57.22581007, + "end": 57.24584716, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.23071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.23572306, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.23576074, + "coreId": 0, + "status": 0 + }, + { + "start": 57.24584716, + "end": 57.26581067, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.25071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.25573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.25576048, + "coreId": 0, + "status": 0 + }, + { + "start": 57.26576404, + "end": 57.34580499, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.26578043, + "end": 57.28580397, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 57.26581067, + "end": 57.27873121, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 57.27071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.27573572, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.27576087, + "coreId": 0, + "status": 0 + }, + { + "start": 57.27873121, + "end": 57.38581015, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.28571727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.28574207, + "coreId": 0, + "status": 0 + }, + { + "start": 57.2887102, + "end": 57.29371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.29571729, + "coreId": 0, + "status": 0 + }, + { + "start": 57.29671018, + "end": 57.3057678, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.30571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.30574227, + "coreId": 0, + "status": 0 + }, + { + "start": 57.30871019, + "end": 57.31371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.31571746, + "coreId": 0, + "status": 0 + }, + { + "start": 57.31771019, + "end": 57.32576805, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.32571728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.32574252, + "coreId": 0, + "status": 0 + }, + { + "start": 57.32871017, + "end": 57.33371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.33571749, + "coreId": 0, + "status": 0 + }, + { + "start": 57.33771023, + "end": 57.34578036, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.34575483, + "coreId": 0, + "status": 0 + }, + { + "start": 57.34580499, + "end": 57.38576361, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.34871018, + "end": 57.35371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.35571731, + "coreId": 0, + "status": 0 + }, + { + "start": 57.35771018, + "end": 57.3657678, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.36571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.36574227, + "coreId": 0, + "status": 0 + }, + { + "start": 57.36871019, + "end": 57.37371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.37576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.38071748, + "coreId": 0, + "status": 0 + }, + { + "start": 57.38576361, + "end": 57.40576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.38581015, + "end": 57.40580981, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.39573546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.39576036, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.40071725, + "coreId": 0, + "status": 0 + }, + { + "start": 57.40576337, + "end": 57.42576385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.40580981, + "end": 57.42581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.41573544, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.41576034, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.42071725, + "coreId": 0, + "status": 0 + }, + { + "start": 57.42581038, + "end": 57.44584707, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.43573576, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.43576066, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.44071745, + "coreId": 0, + "status": 0 + }, + { + "start": 57.44579254, + "end": 57.46576341, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.44584707, + "end": 57.46580985, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.45573577, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.45576067, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.46071725, + "coreId": 0, + "status": 0 + }, + { + "start": 57.46576341, + "end": 57.48576354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.46580985, + "end": 57.53577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.47573545, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.47576035, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.48071725, + "coreId": 0, + "status": 0 + }, + { + "start": 57.48576354, + "end": 57.50576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.49573533, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.49576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.50071748, + "coreId": 0, + "status": 0 + }, + { + "start": 57.50576355, + "end": 57.52576385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.51573546, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.51576036, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.52071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.53573571, + "coreId": 0, + "status": 0 + }, + { + "start": 57.53577372, + "end": 57.58575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 57.54071745, + "coreId": 0, + "status": 0 + }, + { + "start": 57.5457929, + "end": 57.56576382, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.55573576, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.55576066, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.56071728, + "coreId": 0, + "status": 0 + }, + { + "start": 57.56576382, + "end": 57.68576377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.56578021, + "end": 57.58579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.57573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.5757607, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.57871749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.58571744, + "coreId": 0, + "status": 0 + }, + { + "start": 57.58575519, + "end": 57.60575503, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 57.58579239, + "end": 57.59576771, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 57.58871022, + "end": 57.59371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.59573014, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.60571727, + "coreId": 0, + "status": 0 + }, + { + "start": 57.60575503, + "end": 57.71577343, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 57.60579222, + "end": 57.61576757, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 57.60871022, + "end": 57.61371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.61571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.62571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.6257427, + "coreId": 0, + "status": 0 + }, + { + "start": 57.6257929, + "end": 57.63576766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 57.6287102, + "end": 57.63371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.63571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.64575495, + "coreId": 0, + "status": 0 + }, + { + "start": 57.64582934, + "end": 57.65576798, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 57.64871017, + "end": 57.65371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.65571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.66571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.66574224, + "coreId": 0, + "status": 0 + }, + { + "start": 57.66871017, + "end": 57.67371834, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.67576022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.68071743, + "coreId": 0, + "status": 0 + }, + { + "start": 57.68576377, + "end": 57.70576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.68578016, + "end": 57.75575137, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.69573532, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.69576022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.70071748, + "coreId": 0, + "status": 0 + }, + { + "start": 57.70576357, + "end": 57.72576381, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.70579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.71573542, + "coreId": 0, + "status": 0 + }, + { + "start": 57.71577343, + "end": 57.73577355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.72071746, + "coreId": 0, + "status": 0 + }, + { + "start": 57.72576381, + "end": 57.86576399, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.72579728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.73573559, + "coreId": 0, + "status": 0 + }, + { + "start": 57.73577355, + "end": 57.75577354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.74071748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.74580999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.74583437, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.75572295, + "coreId": 0, + "status": 0 + }, + { + "start": 57.75575137, + "end": 57.77575119, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 57.75577354, + "end": 57.7757734, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.76071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.7657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.76579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.77071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.77572287, + "coreId": 0, + "status": 0 + }, + { + "start": 57.7757734, + "end": 57.80581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.78577274, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.78579707, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.79071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.79572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.79576025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.8057729, + "coreId": 0, + "status": 0 + }, + { + "start": 57.80581039, + "end": 57.82581027, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.81071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.81572279, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.81576021, + "coreId": 0, + "status": 0 + }, + { + "start": 57.82581027, + "end": 57.84584723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.83071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.83572289, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.83576057, + "coreId": 0, + "status": 0 + }, + { + "start": 57.84584723, + "end": 57.86581053, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.85071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.85573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.85576049, + "coreId": 0, + "status": 0 + }, + { + "start": 57.86576399, + "end": 57.94580519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.86578038, + "end": 57.88580416, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 57.86581053, + "end": 57.87873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 57.87071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 57.87573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.8757607, + "coreId": 0, + "status": 0 + }, + { + "start": 57.87873137, + "end": 57.98581029, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.88571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.88574226, + "coreId": 0, + "status": 0 + }, + { + "start": 57.88871017, + "end": 57.8937182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.89571729, + "coreId": 0, + "status": 0 + }, + { + "start": 57.8967102, + "end": 57.90576781, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.90571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.90574228, + "coreId": 0, + "status": 0 + }, + { + "start": 57.90871018, + "end": 57.91371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.91571733, + "coreId": 0, + "status": 0 + }, + { + "start": 57.9177102, + "end": 57.92576819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.92571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.92574266, + "coreId": 0, + "status": 0 + }, + { + "start": 57.92871023, + "end": 57.93371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.93571729, + "coreId": 0, + "status": 0 + }, + { + "start": 57.93771022, + "end": 57.94578056, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.94575503, + "coreId": 0, + "status": 0 + }, + { + "start": 57.94580519, + "end": 57.98576375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.9487102, + "end": 57.9537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.95571729, + "coreId": 0, + "status": 0 + }, + { + "start": 57.95771019, + "end": 57.96576775, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 57.96571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.96574222, + "coreId": 0, + "status": 0 + }, + { + "start": 57.96871017, + "end": 57.97371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 57.97576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 57.98071728, + "coreId": 0, + "status": 0 + }, + { + "start": 57.98576375, + "end": 58.00576359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 57.98581029, + "end": 58.00581003, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 57.99573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 57.99576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.00071747, + "coreId": 0, + "status": 0 + }, + { + "start": 58.00576359, + "end": 58.0257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.00581003, + "end": 58.02581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.01573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.01576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.02071745, + "coreId": 0, + "status": 0 + }, + { + "start": 58.02581033, + "end": 58.0458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.0357356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.0357605, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.04071731, + "coreId": 0, + "status": 0 + }, + { + "start": 58.04579271, + "end": 58.06576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.0458472, + "end": 58.06581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.05573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.05576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.06071743, + "coreId": 0, + "status": 0 + }, + { + "start": 58.06576356, + "end": 58.08576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.06581009, + "end": 58.13577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.07573542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.07576032, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.08071744, + "coreId": 0, + "status": 0 + }, + { + "start": 58.08576357, + "end": 58.10576374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.0957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.0957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.10071728, + "coreId": 0, + "status": 0 + }, + { + "start": 58.10576374, + "end": 58.1257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.11573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.11576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.12071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.13573565, + "coreId": 0, + "status": 0 + }, + { + "start": 58.13577366, + "end": 58.18575517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 58.14071745, + "coreId": 0, + "status": 0 + }, + { + "start": 58.1457929, + "end": 58.165764, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.15573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.15576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.16071744, + "coreId": 0, + "status": 0 + }, + { + "start": 58.165764, + "end": 58.28576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.16578039, + "end": 58.18579237, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.17573561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.17576076, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.17871748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.18571742, + "coreId": 0, + "status": 0 + }, + { + "start": 58.18575517, + "end": 58.20575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 58.18579237, + "end": 58.19576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 58.1887102, + "end": 58.19371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.19572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.20571742, + "coreId": 0, + "status": 0 + }, + { + "start": 58.20575518, + "end": 58.31577363, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 58.20579237, + "end": 58.21576743, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 58.20871019, + "end": 58.21371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.21571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.22571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.22574269, + "coreId": 0, + "status": 0 + }, + { + "start": 58.22579289, + "end": 58.23576769, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 58.22871023, + "end": 58.23371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.23571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.24575495, + "coreId": 0, + "status": 0 + }, + { + "start": 58.24582934, + "end": 58.25576797, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 58.24871017, + "end": 58.2537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.25571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.26571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.26574228, + "coreId": 0, + "status": 0 + }, + { + "start": 58.26871021, + "end": 58.27371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 58.27576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.28071729, + "coreId": 0, + "status": 0 + }, + { + "start": 58.28576355, + "end": 58.30576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.28577994, + "end": 58.35575156, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.29573551, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.29576041, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.30071747, + "coreId": 0, + "status": 0 + }, + { + "start": 58.30576337, + "end": 58.32576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 58.30579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.31573562, + "coreId": 0, + "status": 0 + }, + { + "start": 58.31577363, + "end": 58.33577375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.32071746, + "coreId": 0, + "status": 0 + }, + { + "start": 58.32576366, + "end": 58.46576404, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 58.32579713, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.33573579, + "coreId": 0, + "status": 0 + }, + { + "start": 58.33577375, + "end": 58.35577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.34071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.34580979, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.34583408, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.35572314, + "coreId": 0, + "status": 0 + }, + { + "start": 58.35575156, + "end": 58.37575139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 58.35577373, + "end": 58.3757736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.36071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.36577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.36579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.37071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.37572307, + "coreId": 0, + "status": 0 + }, + { + "start": 58.3757736, + "end": 58.40581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 58.38577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.38579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.39071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.39572278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.39578358, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.40577286, + "coreId": 0, + "status": 0 + }, + { + "start": 58.40581035, + "end": 58.42581026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.41071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.41572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.41576019, + "coreId": 0, + "status": 0 + }, + { + "start": 58.42581026, + "end": 58.44584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.43071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.43572292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.4357606, + "coreId": 0, + "status": 0 + }, + { + "start": 58.44584722, + "end": 58.46581058, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.45071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.45573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.45576045, + "coreId": 0, + "status": 0 + }, + { + "start": 58.46576404, + "end": 58.54580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.46578043, + "end": 58.48580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 58.46581058, + "end": 58.47873138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 58.47071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.47573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.47576074, + "coreId": 0, + "status": 0 + }, + { + "start": 58.47873138, + "end": 58.58581027, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.48571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.48574222, + "coreId": 0, + "status": 0 + }, + { + "start": 58.4887102, + "end": 58.49371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.49571734, + "coreId": 0, + "status": 0 + }, + { + "start": 58.49671018, + "end": 58.50576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.50571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.50574225, + "coreId": 0, + "status": 0 + }, + { + "start": 58.5087102, + "end": 58.51371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.51571735, + "coreId": 0, + "status": 0 + }, + { + "start": 58.51771022, + "end": 58.5257682, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.52571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.52574267, + "coreId": 0, + "status": 0 + }, + { + "start": 58.5287102, + "end": 58.53371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.53571733, + "coreId": 0, + "status": 0 + }, + { + "start": 58.53771017, + "end": 58.54578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.545755, + "coreId": 0, + "status": 0 + }, + { + "start": 58.54580516, + "end": 58.58576373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.54871021, + "end": 58.55371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.55571734, + "coreId": 0, + "status": 0 + }, + { + "start": 58.55771023, + "end": 58.56576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.56571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.56574223, + "coreId": 0, + "status": 0 + }, + { + "start": 58.5687102, + "end": 58.57371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 58.5757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.58071747, + "coreId": 0, + "status": 0 + }, + { + "start": 58.58576373, + "end": 58.60576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.58581027, + "end": 58.60581002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.5957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.5957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.60071745, + "coreId": 0, + "status": 0 + }, + { + "start": 58.60576358, + "end": 58.62576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.60581002, + "end": 58.62581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.61573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.61576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.62071748, + "coreId": 0, + "status": 0 + }, + { + "start": 58.62581035, + "end": 58.6458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.63573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.63576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.6407173, + "coreId": 0, + "status": 0 + }, + { + "start": 58.64579271, + "end": 58.66576355, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.6458472, + "end": 58.66581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.65573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.65576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.66071744, + "coreId": 0, + "status": 0 + }, + { + "start": 58.66576355, + "end": 58.68576354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.66581008, + "end": 58.73577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.67573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.67576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.68071744, + "coreId": 0, + "status": 0 + }, + { + "start": 58.68576354, + "end": 58.70576375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.6957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.6957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.70071726, + "coreId": 0, + "status": 0 + }, + { + "start": 58.70576375, + "end": 58.72576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.7157353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.7157602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.72071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.73573565, + "coreId": 0, + "status": 0 + }, + { + "start": 58.73577366, + "end": 58.78575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 58.74071745, + "coreId": 0, + "status": 0 + }, + { + "start": 58.74579287, + "end": 58.76576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.75573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.75576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.76071744, + "coreId": 0, + "status": 0 + }, + { + "start": 58.76576401, + "end": 58.88576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.7657804, + "end": 58.78579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.77573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.7757607, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.7787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.78571744, + "coreId": 0, + "status": 0 + }, + { + "start": 58.78575519, + "end": 58.80575521, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 58.78579239, + "end": 58.79576757, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 58.78871017, + "end": 58.79371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.79573, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.80571745, + "coreId": 0, + "status": 0 + }, + { + "start": 58.80575521, + "end": 58.91577362, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 58.8057924, + "end": 58.81576745, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 58.80871021, + "end": 58.81371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.81571734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.82571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.8257427, + "coreId": 0, + "status": 0 + }, + { + "start": 58.8257929, + "end": 58.83576769, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 58.82871022, + "end": 58.83371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.83571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.84575495, + "coreId": 0, + "status": 0 + }, + { + "start": 58.84582934, + "end": 58.85576799, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 58.84871017, + "end": 58.85371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.85571749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.86571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.86574222, + "coreId": 0, + "status": 0 + }, + { + "start": 58.8687102, + "end": 58.87371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 58.87576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.88071725, + "coreId": 0, + "status": 0 + }, + { + "start": 58.88576356, + "end": 58.90576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 58.88577995, + "end": 58.95575155, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 58.89573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.89576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.90071743, + "coreId": 0, + "status": 0 + }, + { + "start": 58.90576337, + "end": 58.92576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 58.90579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.91573561, + "coreId": 0, + "status": 0 + }, + { + "start": 58.91577362, + "end": 58.93577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.92071746, + "coreId": 0, + "status": 0 + }, + { + "start": 58.92576365, + "end": 59.06576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 58.92579712, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.93573577, + "coreId": 0, + "status": 0 + }, + { + "start": 58.93577373, + "end": 58.95577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.94071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.9458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.94583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.95572313, + "coreId": 0, + "status": 0 + }, + { + "start": 58.95575155, + "end": 58.97575141, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 58.95577372, + "end": 58.97577362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 58.96071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.9657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.96579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.9707173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.97572309, + "coreId": 0, + "status": 0 + }, + { + "start": 58.97577362, + "end": 59.00581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 58.98577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.98579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 58.99071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 58.99572284, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 58.99576026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.00577286, + "coreId": 0, + "status": 0 + }, + { + "start": 59.00581035, + "end": 59.0258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.01071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.01572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.01576019, + "coreId": 0, + "status": 0 + }, + { + "start": 59.0258103, + "end": 59.04584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.03071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.03572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.03576055, + "coreId": 0, + "status": 0 + }, + { + "start": 59.04584722, + "end": 59.06581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.05071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.05573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.05576045, + "coreId": 0, + "status": 0 + }, + { + "start": 59.06576398, + "end": 59.14580519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.06578037, + "end": 59.08580418, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 59.06581052, + "end": 59.07873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 59.07071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.07573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.07576072, + "coreId": 0, + "status": 0 + }, + { + "start": 59.07873137, + "end": 59.18581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.08571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.08574228, + "coreId": 0, + "status": 0 + }, + { + "start": 59.08871022, + "end": 59.09371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.09571735, + "coreId": 0, + "status": 0 + }, + { + "start": 59.09671019, + "end": 59.10576775, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.10571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.10574222, + "coreId": 0, + "status": 0 + }, + { + "start": 59.10871023, + "end": 59.11371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.11571731, + "coreId": 0, + "status": 0 + }, + { + "start": 59.11771019, + "end": 59.12576819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.12571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.12574266, + "coreId": 0, + "status": 0 + }, + { + "start": 59.12871019, + "end": 59.13371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.13571733, + "coreId": 0, + "status": 0 + }, + { + "start": 59.13771017, + "end": 59.14578056, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.14575503, + "coreId": 0, + "status": 0 + }, + { + "start": 59.14580519, + "end": 59.18576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.1487102, + "end": 59.15371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.1557173, + "coreId": 0, + "status": 0 + }, + { + "start": 59.15771018, + "end": 59.16576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.16571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.16574223, + "coreId": 0, + "status": 0 + }, + { + "start": 59.16871018, + "end": 59.17371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 59.17576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.18071746, + "coreId": 0, + "status": 0 + }, + { + "start": 59.18576372, + "end": 59.20576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.18581026, + "end": 59.20581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.19573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.19576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.20071743, + "coreId": 0, + "status": 0 + }, + { + "start": 59.20576357, + "end": 59.2257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.20581001, + "end": 59.22581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.21573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.21576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.22071745, + "coreId": 0, + "status": 0 + }, + { + "start": 59.22581033, + "end": 59.2458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.2357356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.2357605, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.24071731, + "coreId": 0, + "status": 0 + }, + { + "start": 59.24579271, + "end": 59.26576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.2458472, + "end": 59.26581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.25573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.25576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.26071742, + "coreId": 0, + "status": 0 + }, + { + "start": 59.26576356, + "end": 59.28576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.26581009, + "end": 59.33577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.27573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.27576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.28071742, + "coreId": 0, + "status": 0 + }, + { + "start": 59.28576356, + "end": 59.30576377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.2957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.2957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.30071729, + "coreId": 0, + "status": 0 + }, + { + "start": 59.30576377, + "end": 59.32576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.31573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.31576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.32071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.33573565, + "coreId": 0, + "status": 0 + }, + { + "start": 59.33577366, + "end": 59.38575517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 59.34071745, + "coreId": 0, + "status": 0 + }, + { + "start": 59.34579287, + "end": 59.36576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.35573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.35576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.36071743, + "coreId": 0, + "status": 0 + }, + { + "start": 59.36576401, + "end": 59.48576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.3657804, + "end": 59.38579237, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.37573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.3757607, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.3787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.38571742, + "coreId": 0, + "status": 0 + }, + { + "start": 59.38575517, + "end": 59.40575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 59.38579237, + "end": 59.39576754, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 59.38871021, + "end": 59.3937182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.39572997, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.40571742, + "coreId": 0, + "status": 0 + }, + { + "start": 59.40575518, + "end": 59.51577363, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 59.40579237, + "end": 59.41576745, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 59.40871019, + "end": 59.41371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.41571734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.42571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.4257427, + "coreId": 0, + "status": 0 + }, + { + "start": 59.4257929, + "end": 59.43576766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 59.4287102, + "end": 59.43371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.43571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.44575495, + "coreId": 0, + "status": 0 + }, + { + "start": 59.44582934, + "end": 59.45576797, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 59.44871018, + "end": 59.4537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.45571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.46571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.46574224, + "coreId": 0, + "status": 0 + }, + { + "start": 59.4687102, + "end": 59.47371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 59.47576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.48071729, + "coreId": 0, + "status": 0 + }, + { + "start": 59.48576356, + "end": 59.50576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.48577995, + "end": 59.55575156, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.4957355, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.4957604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.50071742, + "coreId": 0, + "status": 0 + }, + { + "start": 59.50576337, + "end": 59.52576364, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 59.50579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.51573562, + "coreId": 0, + "status": 0 + }, + { + "start": 59.51577363, + "end": 59.53577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.52071746, + "coreId": 0, + "status": 0 + }, + { + "start": 59.52576364, + "end": 59.66576399, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 59.52579711, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.53573577, + "coreId": 0, + "status": 0 + }, + { + "start": 59.53577373, + "end": 59.55577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.54071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.5458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.54583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.55572314, + "coreId": 0, + "status": 0 + }, + { + "start": 59.55575156, + "end": 59.57575142, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 59.55577373, + "end": 59.57577363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.56071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.56577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.56579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.57071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.5757231, + "coreId": 0, + "status": 0 + }, + { + "start": 59.57577363, + "end": 59.60581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 59.58577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.58579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.59071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.59572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.59576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.60577289, + "coreId": 0, + "status": 0 + }, + { + "start": 59.60581038, + "end": 59.6258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.61071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.6157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.61576022, + "coreId": 0, + "status": 0 + }, + { + "start": 59.6258103, + "end": 59.64584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.63071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.63572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.63576055, + "coreId": 0, + "status": 0 + }, + { + "start": 59.64584722, + "end": 59.66581053, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.65071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.65573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.65576046, + "coreId": 0, + "status": 0 + }, + { + "start": 59.66576399, + "end": 59.74580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.66578038, + "end": 59.68580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 59.66581053, + "end": 59.67873138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 59.67071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.67573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.67576074, + "coreId": 0, + "status": 0 + }, + { + "start": 59.67873138, + "end": 59.78581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.68571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.68574222, + "coreId": 0, + "status": 0 + }, + { + "start": 59.6887102, + "end": 59.69371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.69571734, + "coreId": 0, + "status": 0 + }, + { + "start": 59.69671018, + "end": 59.70576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.70571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.70574224, + "coreId": 0, + "status": 0 + }, + { + "start": 59.7087102, + "end": 59.71371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.71571733, + "coreId": 0, + "status": 0 + }, + { + "start": 59.71771022, + "end": 59.72576823, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.72571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.7257427, + "coreId": 0, + "status": 0 + }, + { + "start": 59.72871019, + "end": 59.73371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.73571733, + "coreId": 0, + "status": 0 + }, + { + "start": 59.73771017, + "end": 59.74578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.745755, + "coreId": 0, + "status": 0 + }, + { + "start": 59.74580516, + "end": 59.78576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.74871022, + "end": 59.75371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.75571731, + "coreId": 0, + "status": 0 + }, + { + "start": 59.75771019, + "end": 59.76576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.76571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.76574223, + "coreId": 0, + "status": 0 + }, + { + "start": 59.7687102, + "end": 59.77371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 59.7757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.78071745, + "coreId": 0, + "status": 0 + }, + { + "start": 59.78576372, + "end": 59.80576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.78581026, + "end": 59.80581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.79573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.79576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.80071743, + "coreId": 0, + "status": 0 + }, + { + "start": 59.80576357, + "end": 59.82576386, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.80581001, + "end": 59.82581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.81573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.81576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.82071744, + "coreId": 0, + "status": 0 + }, + { + "start": 59.82581039, + "end": 59.84584723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.83573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.83576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.84071731, + "coreId": 0, + "status": 0 + }, + { + "start": 59.84579274, + "end": 59.86576354, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.84584723, + "end": 59.86581007, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.85573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.85576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.86071744, + "coreId": 0, + "status": 0 + }, + { + "start": 59.86576354, + "end": 59.88576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.86581007, + "end": 59.93577368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.87573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.87576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.88071745, + "coreId": 0, + "status": 0 + }, + { + "start": 59.88576358, + "end": 59.90576375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.8957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.8957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.90071726, + "coreId": 0, + "status": 0 + }, + { + "start": 59.90576375, + "end": 59.9257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.91573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.91576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.92071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 59.93573567, + "coreId": 0, + "status": 0 + }, + { + "start": 59.93577368, + "end": 59.98575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 59.94071747, + "coreId": 0, + "status": 0 + }, + { + "start": 59.94579287, + "end": 59.96576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.95573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.95576048, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.96071746, + "coreId": 0, + "status": 0 + }, + { + "start": 59.96576401, + "end": 60.08576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 59.9657804, + "end": 59.98579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 59.97573561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 59.97576076, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.97871748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 59.98571744, + "coreId": 0, + "status": 0 + }, + { + "start": 59.98575519, + "end": 60.00575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 59.98579239, + "end": 59.99576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 59.98871017, + "end": 59.99371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 59.99572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.00571742, + "coreId": 0, + "status": 0 + }, + { + "start": 60.00575518, + "end": 60.11577361, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 60.00579237, + "end": 60.01576745, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 60.00871019, + "end": 60.01371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.01571734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.02571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.0257427, + "coreId": 0, + "status": 0 + }, + { + "start": 60.0257929, + "end": 60.03576769, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 60.0287102, + "end": 60.03371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.03571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.04575496, + "coreId": 0, + "status": 0 + }, + { + "start": 60.04582935, + "end": 60.05576798, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 60.04871018, + "end": 60.05371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.05571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.06571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.06574225, + "coreId": 0, + "status": 0 + }, + { + "start": 60.06871017, + "end": 60.07371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.07576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.08071729, + "coreId": 0, + "status": 0 + }, + { + "start": 60.08576358, + "end": 60.10576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.08577997, + "end": 60.15575155, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.09573549, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.09576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.10071743, + "coreId": 0, + "status": 0 + }, + { + "start": 60.10576337, + "end": 60.12576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.10579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.1157356, + "coreId": 0, + "status": 0 + }, + { + "start": 60.11577361, + "end": 60.13577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.12071746, + "coreId": 0, + "status": 0 + }, + { + "start": 60.12576365, + "end": 60.26576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.12579712, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.13573578, + "coreId": 0, + "status": 0 + }, + { + "start": 60.13577374, + "end": 60.15577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.14071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.1458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.14583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.15572313, + "coreId": 0, + "status": 0 + }, + { + "start": 60.15575155, + "end": 60.1757514, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 60.15577372, + "end": 60.17577361, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.16071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.1657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.16579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.1707173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.17572308, + "coreId": 0, + "status": 0 + }, + { + "start": 60.17577361, + "end": 60.20581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.18577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.18579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.19071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.19572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.19576025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.20577286, + "coreId": 0, + "status": 0 + }, + { + "start": 60.20581035, + "end": 60.2258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.21071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.21572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.21576025, + "coreId": 0, + "status": 0 + }, + { + "start": 60.2258103, + "end": 60.24584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.23071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.23572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.23576055, + "coreId": 0, + "status": 0 + }, + { + "start": 60.24584722, + "end": 60.26581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.25071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.25573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.25576045, + "coreId": 0, + "status": 0 + }, + { + "start": 60.26576398, + "end": 60.3458052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.26578037, + "end": 60.28580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 60.26581052, + "end": 60.27873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 60.27071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.27573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.27576074, + "coreId": 0, + "status": 0 + }, + { + "start": 60.27873137, + "end": 60.38581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.28571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.28574222, + "coreId": 0, + "status": 0 + }, + { + "start": 60.28871023, + "end": 60.29371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.29571735, + "coreId": 0, + "status": 0 + }, + { + "start": 60.29671019, + "end": 60.30576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.30571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.30574223, + "coreId": 0, + "status": 0 + }, + { + "start": 60.30871019, + "end": 60.31371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.31571732, + "coreId": 0, + "status": 0 + }, + { + "start": 60.31771017, + "end": 60.32576822, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.32571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.32574269, + "coreId": 0, + "status": 0 + }, + { + "start": 60.32871021, + "end": 60.33371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.33571733, + "coreId": 0, + "status": 0 + }, + { + "start": 60.33771017, + "end": 60.34578057, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.34575504, + "coreId": 0, + "status": 0 + }, + { + "start": 60.3458052, + "end": 60.38576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.34871017, + "end": 60.3537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.3557173, + "coreId": 0, + "status": 0 + }, + { + "start": 60.35771018, + "end": 60.36576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.36571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.36574223, + "coreId": 0, + "status": 0 + }, + { + "start": 60.36871018, + "end": 60.37371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.3757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.38071747, + "coreId": 0, + "status": 0 + }, + { + "start": 60.38576372, + "end": 60.40576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.38581026, + "end": 60.40581002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.39573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.39576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.40071744, + "coreId": 0, + "status": 0 + }, + { + "start": 60.40576358, + "end": 60.42576386, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.40581002, + "end": 60.42581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.41573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.41576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.42071745, + "coreId": 0, + "status": 0 + }, + { + "start": 60.42581039, + "end": 60.4458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.43573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.43576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.44071728, + "coreId": 0, + "status": 0 + }, + { + "start": 60.44579271, + "end": 60.46576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.4458472, + "end": 60.46581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.45573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.45576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.46071742, + "coreId": 0, + "status": 0 + }, + { + "start": 60.46576356, + "end": 60.48576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.46581009, + "end": 60.53577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.47573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.47576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.48071745, + "coreId": 0, + "status": 0 + }, + { + "start": 60.48576355, + "end": 60.50576378, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.4957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.4957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.50071728, + "coreId": 0, + "status": 0 + }, + { + "start": 60.50576378, + "end": 60.52576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.51573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.51576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.52071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.53573565, + "coreId": 0, + "status": 0 + }, + { + "start": 60.53577366, + "end": 60.58575517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 60.54071744, + "coreId": 0, + "status": 0 + }, + { + "start": 60.54579287, + "end": 60.56576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.55573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.55576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.56071743, + "coreId": 0, + "status": 0 + }, + { + "start": 60.56576401, + "end": 60.68576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.5657804, + "end": 60.58579237, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.57573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.57576071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.5787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.58571742, + "coreId": 0, + "status": 0 + }, + { + "start": 60.58575517, + "end": 60.60575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 60.58579237, + "end": 60.59576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 60.5887102, + "end": 60.59371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.59572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.60571742, + "coreId": 0, + "status": 0 + }, + { + "start": 60.60575518, + "end": 60.71577363, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 60.60579237, + "end": 60.61576745, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 60.60871019, + "end": 60.61371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.61571734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.62571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.6257427, + "coreId": 0, + "status": 0 + }, + { + "start": 60.6257929, + "end": 60.63576766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 60.6287102, + "end": 60.63371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.63571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.64575495, + "coreId": 0, + "status": 0 + }, + { + "start": 60.64582934, + "end": 60.65576797, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 60.64871017, + "end": 60.6537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.65571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.66571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.66574223, + "coreId": 0, + "status": 0 + }, + { + "start": 60.6687102, + "end": 60.67371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.6757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.68071725, + "coreId": 0, + "status": 0 + }, + { + "start": 60.68576356, + "end": 60.70576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.68577995, + "end": 60.75575156, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.6957355, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.6957604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.70071742, + "coreId": 0, + "status": 0 + }, + { + "start": 60.70576337, + "end": 60.72576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.70579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.71573562, + "coreId": 0, + "status": 0 + }, + { + "start": 60.71577363, + "end": 60.73577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.72071746, + "coreId": 0, + "status": 0 + }, + { + "start": 60.72576365, + "end": 60.865764, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.72579712, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.73573578, + "coreId": 0, + "status": 0 + }, + { + "start": 60.73577374, + "end": 60.75577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.74071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.7458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.74583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.75572314, + "coreId": 0, + "status": 0 + }, + { + "start": 60.75575156, + "end": 60.77575138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 60.75577373, + "end": 60.77577359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.76071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.76577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.76579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.77071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.77572306, + "coreId": 0, + "status": 0 + }, + { + "start": 60.77577359, + "end": 60.80581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.78577273, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.78579706, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.79071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.79572284, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.79576026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.80577286, + "coreId": 0, + "status": 0 + }, + { + "start": 60.80581035, + "end": 60.82581024, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.81071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.81572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.81576019, + "coreId": 0, + "status": 0 + }, + { + "start": 60.82581024, + "end": 60.84584721, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.83071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.83572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.83576059, + "coreId": 0, + "status": 0 + }, + { + "start": 60.84584721, + "end": 60.86581054, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.85071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.85573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.85576045, + "coreId": 0, + "status": 0 + }, + { + "start": 60.865764, + "end": 60.94580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.86578039, + "end": 60.88580416, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 60.86581054, + "end": 60.87873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 60.87071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 60.87573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.87576073, + "coreId": 0, + "status": 0 + }, + { + "start": 60.87873137, + "end": 60.98581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.88571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.88574226, + "coreId": 0, + "status": 0 + }, + { + "start": 60.88871017, + "end": 60.89371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.89571734, + "coreId": 0, + "status": 0 + }, + { + "start": 60.89671018, + "end": 60.90576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.90571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.90574224, + "coreId": 0, + "status": 0 + }, + { + "start": 60.90871019, + "end": 60.91371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.91571732, + "coreId": 0, + "status": 0 + }, + { + "start": 60.91771017, + "end": 60.92576821, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.92571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.92574268, + "coreId": 0, + "status": 0 + }, + { + "start": 60.92871021, + "end": 60.93371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.93571733, + "coreId": 0, + "status": 0 + }, + { + "start": 60.93771017, + "end": 60.94578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.945755, + "coreId": 0, + "status": 0 + }, + { + "start": 60.94580516, + "end": 60.98576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.94871021, + "end": 60.95371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.95571729, + "coreId": 0, + "status": 0 + }, + { + "start": 60.95771017, + "end": 60.9657678, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 60.96571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.96574227, + "coreId": 0, + "status": 0 + }, + { + "start": 60.96871022, + "end": 60.97371816, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 60.9757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 60.98071745, + "coreId": 0, + "status": 0 + }, + { + "start": 60.98576372, + "end": 61.00576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 60.98581026, + "end": 61.00581002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 60.99573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 60.99576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.00071748, + "coreId": 0, + "status": 0 + }, + { + "start": 61.00576358, + "end": 61.02576385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.00581002, + "end": 61.02581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.01573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.01576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.02071742, + "coreId": 0, + "status": 0 + }, + { + "start": 61.02581038, + "end": 61.0458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.03573561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.03576051, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.0407173, + "coreId": 0, + "status": 0 + }, + { + "start": 61.04579271, + "end": 61.06576355, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.0458472, + "end": 61.06581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.05573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.05576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.06071742, + "coreId": 0, + "status": 0 + }, + { + "start": 61.06576355, + "end": 61.08576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.06581008, + "end": 61.13577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.07573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.07576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.08071744, + "coreId": 0, + "status": 0 + }, + { + "start": 61.08576357, + "end": 61.10576377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.09573536, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.09576026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.10071729, + "coreId": 0, + "status": 0 + }, + { + "start": 61.10576377, + "end": 61.12576381, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.1157353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.11576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.12071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.13573565, + "coreId": 0, + "status": 0 + }, + { + "start": 61.13577366, + "end": 61.18575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 61.14071746, + "coreId": 0, + "status": 0 + }, + { + "start": 61.14579287, + "end": 61.165764, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.15573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.15576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.16071743, + "coreId": 0, + "status": 0 + }, + { + "start": 61.165764, + "end": 61.28576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.16578039, + "end": 61.18579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.17573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.17576071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.1787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.18571744, + "coreId": 0, + "status": 0 + }, + { + "start": 61.18575519, + "end": 61.20575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 61.18579239, + "end": 61.19576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 61.18871017, + "end": 61.19371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.19572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.20571742, + "coreId": 0, + "status": 0 + }, + { + "start": 61.20575518, + "end": 61.31577363, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 61.20579237, + "end": 61.21576744, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 61.20871019, + "end": 61.21371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.21571733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.22571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.22574269, + "coreId": 0, + "status": 0 + }, + { + "start": 61.22579289, + "end": 61.23576768, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 61.22871023, + "end": 61.23371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.23571731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.24575494, + "coreId": 0, + "status": 0 + }, + { + "start": 61.24582933, + "end": 61.25576798, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 61.24871017, + "end": 61.25371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.25571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.26571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.26574225, + "coreId": 0, + "status": 0 + }, + { + "start": 61.26871017, + "end": 61.27371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 61.2757604, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.28071727, + "coreId": 0, + "status": 0 + }, + { + "start": 61.28576356, + "end": 61.30576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.28577995, + "end": 61.35575157, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.29573549, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.29576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.30071742, + "coreId": 0, + "status": 0 + }, + { + "start": 61.30576337, + "end": 61.32576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 61.30579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.31573562, + "coreId": 0, + "status": 0 + }, + { + "start": 61.31577363, + "end": 61.33577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.32071746, + "coreId": 0, + "status": 0 + }, + { + "start": 61.32576363, + "end": 61.46576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 61.3257971, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.33573578, + "coreId": 0, + "status": 0 + }, + { + "start": 61.33577374, + "end": 61.35577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.34071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.3458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.34583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.35572315, + "coreId": 0, + "status": 0 + }, + { + "start": 61.35575157, + "end": 61.37575137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 61.35577374, + "end": 61.37577358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.36071744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.36577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.36579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.37071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.37572305, + "coreId": 0, + "status": 0 + }, + { + "start": 61.37577358, + "end": 61.40581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 61.38577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.38579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.39071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.39572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.39576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.4057729, + "coreId": 0, + "status": 0 + }, + { + "start": 61.40581039, + "end": 61.4258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.41071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.4157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.41576022, + "coreId": 0, + "status": 0 + }, + { + "start": 61.4258103, + "end": 61.44584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.43071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.43572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.43576059, + "coreId": 0, + "status": 0 + }, + { + "start": 61.44584722, + "end": 61.46581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.45071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.45573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.45576045, + "coreId": 0, + "status": 0 + }, + { + "start": 61.46576398, + "end": 61.54580519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.46578037, + "end": 61.48580413, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 61.46581052, + "end": 61.47873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 61.47071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.47573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.47576074, + "coreId": 0, + "status": 0 + }, + { + "start": 61.47873137, + "end": 61.58581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.48571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.48574222, + "coreId": 0, + "status": 0 + }, + { + "start": 61.4887102, + "end": 61.49371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.49571734, + "coreId": 0, + "status": 0 + }, + { + "start": 61.49671018, + "end": 61.50576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.50571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.50574224, + "coreId": 0, + "status": 0 + }, + { + "start": 61.50871019, + "end": 61.51371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.51571731, + "coreId": 0, + "status": 0 + }, + { + "start": 61.51771018, + "end": 61.52576822, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.52571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.52574269, + "coreId": 0, + "status": 0 + }, + { + "start": 61.52871021, + "end": 61.53371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.53571732, + "coreId": 0, + "status": 0 + }, + { + "start": 61.53771019, + "end": 61.54578056, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.54575503, + "coreId": 0, + "status": 0 + }, + { + "start": 61.54580519, + "end": 61.58576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.54871022, + "end": 61.55371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.55571729, + "coreId": 0, + "status": 0 + }, + { + "start": 61.55771017, + "end": 61.56576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.56571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.56574223, + "coreId": 0, + "status": 0 + }, + { + "start": 61.56871018, + "end": 61.5737182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 61.57576022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.58071742, + "coreId": 0, + "status": 0 + }, + { + "start": 61.58576372, + "end": 61.60576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.58581026, + "end": 61.60581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.59573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.59576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.60071745, + "coreId": 0, + "status": 0 + }, + { + "start": 61.60576357, + "end": 61.6257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.60581001, + "end": 61.62581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.6157354, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.6157603, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.62071744, + "coreId": 0, + "status": 0 + }, + { + "start": 61.62581033, + "end": 61.6458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.63573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.63576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.6407173, + "coreId": 0, + "status": 0 + }, + { + "start": 61.64579271, + "end": 61.66576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.6458472, + "end": 61.66581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.65573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.65576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.66071742, + "coreId": 0, + "status": 0 + }, + { + "start": 61.66576356, + "end": 61.68576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.66581009, + "end": 61.73577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.67573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.67576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.68071744, + "coreId": 0, + "status": 0 + }, + { + "start": 61.68576358, + "end": 61.70576376, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.6957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.6957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.70071725, + "coreId": 0, + "status": 0 + }, + { + "start": 61.70576376, + "end": 61.72576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.71573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.71576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.72071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.73573565, + "coreId": 0, + "status": 0 + }, + { + "start": 61.73577366, + "end": 61.78575517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 61.74071744, + "coreId": 0, + "status": 0 + }, + { + "start": 61.74579288, + "end": 61.76576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.75573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.75576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.76071745, + "coreId": 0, + "status": 0 + }, + { + "start": 61.76576401, + "end": 61.88576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.7657804, + "end": 61.78579237, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.77573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.7757607, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.77871749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.78571742, + "coreId": 0, + "status": 0 + }, + { + "start": 61.78575517, + "end": 61.80575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 61.78579237, + "end": 61.79576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 61.7887102, + "end": 61.79371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.79572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.80571742, + "coreId": 0, + "status": 0 + }, + { + "start": 61.80575518, + "end": 61.91577362, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 61.80579237, + "end": 61.8157674, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 61.80871018, + "end": 61.81371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.81571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.82571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.82574269, + "coreId": 0, + "status": 0 + }, + { + "start": 61.82579289, + "end": 61.83576773, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 61.82871017, + "end": 61.83371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.83571734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.84575494, + "coreId": 0, + "status": 0 + }, + { + "start": 61.84582933, + "end": 61.85576799, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 61.84871017, + "end": 61.85371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.85571749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.86571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.86574225, + "coreId": 0, + "status": 0 + }, + { + "start": 61.86871017, + "end": 61.87371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 61.87576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.88071729, + "coreId": 0, + "status": 0 + }, + { + "start": 61.88576355, + "end": 61.90576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 61.88577994, + "end": 61.95575154, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 61.89573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.89576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.90071743, + "coreId": 0, + "status": 0 + }, + { + "start": 61.90576337, + "end": 61.92576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 61.90579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.91573561, + "coreId": 0, + "status": 0 + }, + { + "start": 61.91577362, + "end": 61.93577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.92071746, + "coreId": 0, + "status": 0 + }, + { + "start": 61.92576365, + "end": 62.06576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 61.92579712, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.93573578, + "coreId": 0, + "status": 0 + }, + { + "start": 61.93577374, + "end": 61.95577371, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.94071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.9458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.94583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.95572312, + "coreId": 0, + "status": 0 + }, + { + "start": 61.95575154, + "end": 61.97575137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 61.95577371, + "end": 61.97577358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 61.96071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.9657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.96579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.9707173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.97572305, + "coreId": 0, + "status": 0 + }, + { + "start": 61.97577358, + "end": 62.00581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 61.98577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.98579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 61.99071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 61.99572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 61.99576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.00577289, + "coreId": 0, + "status": 0 + }, + { + "start": 62.00581038, + "end": 62.02581026, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.01071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.01572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.01576025, + "coreId": 0, + "status": 0 + }, + { + "start": 62.02581026, + "end": 62.04584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.03071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.03572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.03576059, + "coreId": 0, + "status": 0 + }, + { + "start": 62.04584722, + "end": 62.06581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.05071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.05573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.05576045, + "coreId": 0, + "status": 0 + }, + { + "start": 62.06576398, + "end": 62.14580519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.06578037, + "end": 62.08580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 62.06581052, + "end": 62.07873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 62.07071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.07573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.07576073, + "coreId": 0, + "status": 0 + }, + { + "start": 62.07873137, + "end": 62.18581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.08571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.08574222, + "coreId": 0, + "status": 0 + }, + { + "start": 62.08871023, + "end": 62.09371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.09571734, + "coreId": 0, + "status": 0 + }, + { + "start": 62.09671018, + "end": 62.10576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.10571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.10574223, + "coreId": 0, + "status": 0 + }, + { + "start": 62.1087102, + "end": 62.11371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.11571733, + "coreId": 0, + "status": 0 + }, + { + "start": 62.11771022, + "end": 62.12576819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.12571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.12574266, + "coreId": 0, + "status": 0 + }, + { + "start": 62.12871019, + "end": 62.13371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.13571733, + "coreId": 0, + "status": 0 + }, + { + "start": 62.13771017, + "end": 62.14578056, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.14575503, + "coreId": 0, + "status": 0 + }, + { + "start": 62.14580519, + "end": 62.18576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.14871019, + "end": 62.15371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.15571734, + "coreId": 0, + "status": 0 + }, + { + "start": 62.15771023, + "end": 62.16576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.16571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.16574223, + "coreId": 0, + "status": 0 + }, + { + "start": 62.16871018, + "end": 62.17371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 62.1757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.18071747, + "coreId": 0, + "status": 0 + }, + { + "start": 62.18576372, + "end": 62.20576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.18581026, + "end": 62.20581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.19573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.19576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.20071748, + "coreId": 0, + "status": 0 + }, + { + "start": 62.20576357, + "end": 62.22576385, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.20581001, + "end": 62.22581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.2157354, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.2157603, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.22071748, + "coreId": 0, + "status": 0 + }, + { + "start": 62.22581038, + "end": 62.2458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.23573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.23576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.2407173, + "coreId": 0, + "status": 0 + }, + { + "start": 62.24579271, + "end": 62.26576355, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.2458472, + "end": 62.26581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.25573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.25576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.26071744, + "coreId": 0, + "status": 0 + }, + { + "start": 62.26576355, + "end": 62.28576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.26581008, + "end": 62.33577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.27573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.27576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.28071745, + "coreId": 0, + "status": 0 + }, + { + "start": 62.28576358, + "end": 62.30576377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.29573536, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.29576026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.30071729, + "coreId": 0, + "status": 0 + }, + { + "start": 62.30576377, + "end": 62.3257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.3157353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.3157602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.32071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.33573565, + "coreId": 0, + "status": 0 + }, + { + "start": 62.33577366, + "end": 62.38575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 62.34071745, + "coreId": 0, + "status": 0 + }, + { + "start": 62.3457929, + "end": 62.36576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.35573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.35576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.36071743, + "coreId": 0, + "status": 0 + }, + { + "start": 62.36576401, + "end": 62.48576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.3657804, + "end": 62.38579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.37573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.37576071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.37871751, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.38571744, + "coreId": 0, + "status": 0 + }, + { + "start": 62.38575519, + "end": 62.40575521, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 62.38579239, + "end": 62.39576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 62.38871017, + "end": 62.39371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.39572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.40571745, + "coreId": 0, + "status": 0 + }, + { + "start": 62.40575521, + "end": 62.51577362, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 62.4057924, + "end": 62.41576743, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 62.40871021, + "end": 62.41371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.41571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.42571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.42574269, + "coreId": 0, + "status": 0 + }, + { + "start": 62.42579289, + "end": 62.43576766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 62.42871023, + "end": 62.43371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.43571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.44575496, + "coreId": 0, + "status": 0 + }, + { + "start": 62.44582935, + "end": 62.45576797, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 62.44871018, + "end": 62.4537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.45571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.46571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.46574224, + "coreId": 0, + "status": 0 + }, + { + "start": 62.4687102, + "end": 62.47371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 62.47576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.48071728, + "coreId": 0, + "status": 0 + }, + { + "start": 62.48576355, + "end": 62.50576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.48577994, + "end": 62.55575156, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.49573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.49576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.50071743, + "coreId": 0, + "status": 0 + }, + { + "start": 62.50576337, + "end": 62.52576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 62.50579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.51573561, + "coreId": 0, + "status": 0 + }, + { + "start": 62.51577362, + "end": 62.53577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.52071746, + "coreId": 0, + "status": 0 + }, + { + "start": 62.52576363, + "end": 62.665764, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 62.5257971, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.53573577, + "coreId": 0, + "status": 0 + }, + { + "start": 62.53577373, + "end": 62.55577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.54071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.5458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.54583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.55572314, + "coreId": 0, + "status": 0 + }, + { + "start": 62.55575156, + "end": 62.57575139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 62.55577373, + "end": 62.5757736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.56071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.56577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.56579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.57071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.57572307, + "coreId": 0, + "status": 0 + }, + { + "start": 62.5757736, + "end": 62.60581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 62.58577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.58579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.59071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.59572278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.5957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.60577289, + "coreId": 0, + "status": 0 + }, + { + "start": 62.60581038, + "end": 62.6258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.61071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.61572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.61576019, + "coreId": 0, + "status": 0 + }, + { + "start": 62.6258103, + "end": 62.64584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.63071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.63572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.63576059, + "coreId": 0, + "status": 0 + }, + { + "start": 62.64584722, + "end": 62.66581054, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.65071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.65573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.65576046, + "coreId": 0, + "status": 0 + }, + { + "start": 62.665764, + "end": 62.74580519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.66578039, + "end": 62.68580415, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 62.66581054, + "end": 62.67873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 62.67071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.67573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.67576074, + "coreId": 0, + "status": 0 + }, + { + "start": 62.67873137, + "end": 62.78581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.68571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.68574225, + "coreId": 0, + "status": 0 + }, + { + "start": 62.68871017, + "end": 62.69371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.69571734, + "coreId": 0, + "status": 0 + }, + { + "start": 62.69671018, + "end": 62.70576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.70571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.70574224, + "coreId": 0, + "status": 0 + }, + { + "start": 62.70871019, + "end": 62.71371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.71571733, + "coreId": 0, + "status": 0 + }, + { + "start": 62.71771023, + "end": 62.72576823, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.72571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.7257427, + "coreId": 0, + "status": 0 + }, + { + "start": 62.72871022, + "end": 62.73371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.73571732, + "coreId": 0, + "status": 0 + }, + { + "start": 62.73771017, + "end": 62.74578056, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.74575503, + "coreId": 0, + "status": 0 + }, + { + "start": 62.74580519, + "end": 62.78576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.74871019, + "end": 62.75371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.75571734, + "coreId": 0, + "status": 0 + }, + { + "start": 62.75771023, + "end": 62.76576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.76571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.76574223, + "coreId": 0, + "status": 0 + }, + { + "start": 62.76871018, + "end": 62.77371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 62.7757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.78071745, + "coreId": 0, + "status": 0 + }, + { + "start": 62.78576372, + "end": 62.80576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.78581026, + "end": 62.80581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.79573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.79576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.80071742, + "coreId": 0, + "status": 0 + }, + { + "start": 62.80576357, + "end": 62.8257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.80581001, + "end": 62.82581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.8157354, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.8157603, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.82071745, + "coreId": 0, + "status": 0 + }, + { + "start": 62.82581033, + "end": 62.8458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.83573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.83576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.84071729, + "coreId": 0, + "status": 0 + }, + { + "start": 62.84579271, + "end": 62.86576355, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.8458472, + "end": 62.86581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.85573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.85576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.86071742, + "coreId": 0, + "status": 0 + }, + { + "start": 62.86576355, + "end": 62.88576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.86581008, + "end": 62.93577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.87573542, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.87576032, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.88071744, + "coreId": 0, + "status": 0 + }, + { + "start": 62.88576357, + "end": 62.90576376, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.8957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.8957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.90071725, + "coreId": 0, + "status": 0 + }, + { + "start": 62.90576376, + "end": 62.92576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.91573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.91576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.92071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 62.93573568, + "coreId": 0, + "status": 0 + }, + { + "start": 62.93577369, + "end": 62.98575518, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 62.94071745, + "coreId": 0, + "status": 0 + }, + { + "start": 62.94579287, + "end": 62.96576402, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.95573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.95576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.96071743, + "coreId": 0, + "status": 0 + }, + { + "start": 62.96576402, + "end": 63.08576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 62.96578041, + "end": 62.98579238, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 62.97573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 62.97576071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.97871749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 62.98571743, + "coreId": 0, + "status": 0 + }, + { + "start": 62.98575518, + "end": 63.0057552, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 62.98579238, + "end": 62.99576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 62.98871023, + "end": 62.99371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 62.99572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.00571744, + "coreId": 0, + "status": 0 + }, + { + "start": 63.0057552, + "end": 63.11577362, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 63.00579239, + "end": 63.01576745, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 63.0087102, + "end": 63.01371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.01571734, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.02571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.0257427, + "coreId": 0, + "status": 0 + }, + { + "start": 63.0257929, + "end": 63.03576769, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 63.02871022, + "end": 63.03371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.03571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.04575495, + "coreId": 0, + "status": 0 + }, + { + "start": 63.04582934, + "end": 63.05576799, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 63.04871017, + "end": 63.05371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.05571749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.06571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.06574223, + "coreId": 0, + "status": 0 + }, + { + "start": 63.06871023, + "end": 63.07371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.07576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.08071725, + "coreId": 0, + "status": 0 + }, + { + "start": 63.08576355, + "end": 63.10576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.08577994, + "end": 63.15575155, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.09573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.09576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.10071743, + "coreId": 0, + "status": 0 + }, + { + "start": 63.10576337, + "end": 63.12576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.10579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.11573561, + "coreId": 0, + "status": 0 + }, + { + "start": 63.11577362, + "end": 63.13577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.12071746, + "coreId": 0, + "status": 0 + }, + { + "start": 63.12576365, + "end": 63.26576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.12579712, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.13573577, + "coreId": 0, + "status": 0 + }, + { + "start": 63.13577373, + "end": 63.15577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.14071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.1458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.14583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.15572313, + "coreId": 0, + "status": 0 + }, + { + "start": 63.15575155, + "end": 63.1757514, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 63.15577372, + "end": 63.17577361, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.16071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.1657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.16579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.1707173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.17572308, + "coreId": 0, + "status": 0 + }, + { + "start": 63.17577361, + "end": 63.20581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.18577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.18579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.19071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.19572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.19576025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.20577286, + "coreId": 0, + "status": 0 + }, + { + "start": 63.20581035, + "end": 63.2258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.21071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.21572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.21576025, + "coreId": 0, + "status": 0 + }, + { + "start": 63.2258103, + "end": 63.24584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.23071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.23572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.23576055, + "coreId": 0, + "status": 0 + }, + { + "start": 63.24584722, + "end": 63.26581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.25071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.25573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.25576045, + "coreId": 0, + "status": 0 + }, + { + "start": 63.26576398, + "end": 63.34580519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.26578037, + "end": 63.28580415, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 63.26581052, + "end": 63.27873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 63.27071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.27573558, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.27576073, + "coreId": 0, + "status": 0 + }, + { + "start": 63.27873137, + "end": 63.38581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.28571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.28574225, + "coreId": 0, + "status": 0 + }, + { + "start": 63.28871017, + "end": 63.29371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.29571735, + "coreId": 0, + "status": 0 + }, + { + "start": 63.29671019, + "end": 63.30576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.30571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.30574224, + "coreId": 0, + "status": 0 + }, + { + "start": 63.3087102, + "end": 63.31371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.31571733, + "coreId": 0, + "status": 0 + }, + { + "start": 63.31771022, + "end": 63.32576819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.32571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.32574266, + "coreId": 0, + "status": 0 + }, + { + "start": 63.32871019, + "end": 63.33371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.33571733, + "coreId": 0, + "status": 0 + }, + { + "start": 63.33771017, + "end": 63.34578056, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.34575503, + "coreId": 0, + "status": 0 + }, + { + "start": 63.34580519, + "end": 63.38576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.34871019, + "end": 63.35371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.35571735, + "coreId": 0, + "status": 0 + }, + { + "start": 63.35771019, + "end": 63.36576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.36571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.36574223, + "coreId": 0, + "status": 0 + }, + { + "start": 63.36871018, + "end": 63.37371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.3757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.38071747, + "coreId": 0, + "status": 0 + }, + { + "start": 63.38576372, + "end": 63.40576359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.38581026, + "end": 63.40581003, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.39573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.39576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.40071748, + "coreId": 0, + "status": 0 + }, + { + "start": 63.40576359, + "end": 63.4257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.40581003, + "end": 63.42581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.41573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.41576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.42071745, + "coreId": 0, + "status": 0 + }, + { + "start": 63.42581033, + "end": 63.4458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.43573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.43576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.4407173, + "coreId": 0, + "status": 0 + }, + { + "start": 63.44579271, + "end": 63.46576355, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.4458472, + "end": 63.46581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.45573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.45576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.46071744, + "coreId": 0, + "status": 0 + }, + { + "start": 63.46576355, + "end": 63.48576359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.46581008, + "end": 63.53577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.47573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.47576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.48071742, + "coreId": 0, + "status": 0 + }, + { + "start": 63.48576359, + "end": 63.50576378, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.4957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.4957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.50071728, + "coreId": 0, + "status": 0 + }, + { + "start": 63.50576378, + "end": 63.52576381, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.51573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.51576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.52071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.53573565, + "coreId": 0, + "status": 0 + }, + { + "start": 63.53577366, + "end": 63.58575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 63.54071745, + "coreId": 0, + "status": 0 + }, + { + "start": 63.54579287, + "end": 63.56576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.55573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.55576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.56071743, + "coreId": 0, + "status": 0 + }, + { + "start": 63.56576401, + "end": 63.68576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.5657804, + "end": 63.58579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.57573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.57576071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.5787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.58571744, + "coreId": 0, + "status": 0 + }, + { + "start": 63.58575519, + "end": 63.60575521, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 63.58579239, + "end": 63.59576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 63.58871017, + "end": 63.59371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.59572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.60571745, + "coreId": 0, + "status": 0 + }, + { + "start": 63.60575521, + "end": 63.71577363, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 63.6057924, + "end": 63.61576744, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 63.60871022, + "end": 63.61371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.61571733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.62571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.62574271, + "coreId": 0, + "status": 0 + }, + { + "start": 63.62579291, + "end": 63.63576769, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 63.6287102, + "end": 63.63371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.63571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.64575495, + "coreId": 0, + "status": 0 + }, + { + "start": 63.64582934, + "end": 63.65576797, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 63.64871017, + "end": 63.6537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.65571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.66571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.66574228, + "coreId": 0, + "status": 0 + }, + { + "start": 63.66871021, + "end": 63.67371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.67576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.68071726, + "coreId": 0, + "status": 0 + }, + { + "start": 63.68576357, + "end": 63.70576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.68577996, + "end": 63.75575157, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.69573549, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.69576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.70071742, + "coreId": 0, + "status": 0 + }, + { + "start": 63.70576337, + "end": 63.72576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.70579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.71573562, + "coreId": 0, + "status": 0 + }, + { + "start": 63.71577363, + "end": 63.73577375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.72071746, + "coreId": 0, + "status": 0 + }, + { + "start": 63.72576366, + "end": 63.86576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.72579713, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.73573579, + "coreId": 0, + "status": 0 + }, + { + "start": 63.73577375, + "end": 63.75577374, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.74071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.74580978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.74583407, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.75572315, + "coreId": 0, + "status": 0 + }, + { + "start": 63.75575157, + "end": 63.77575139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 63.75577374, + "end": 63.7757736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.76071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.76577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.76579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.77071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.77572307, + "coreId": 0, + "status": 0 + }, + { + "start": 63.7757736, + "end": 63.80581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.78577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.78579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.79071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.79572278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.7957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.8057729, + "coreId": 0, + "status": 0 + }, + { + "start": 63.80581039, + "end": 63.82581025, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.81071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.8157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.81576022, + "coreId": 0, + "status": 0 + }, + { + "start": 63.82581025, + "end": 63.84584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.83071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.83572292, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.8357606, + "coreId": 0, + "status": 0 + }, + { + "start": 63.84584722, + "end": 63.86581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.85071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.85573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.85576046, + "coreId": 0, + "status": 0 + }, + { + "start": 63.86576398, + "end": 63.94580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.86578037, + "end": 63.88580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 63.86581052, + "end": 63.87873139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 63.87071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 63.8757356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.87576075, + "coreId": 0, + "status": 0 + }, + { + "start": 63.87873139, + "end": 63.98581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.88571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.88574222, + "coreId": 0, + "status": 0 + }, + { + "start": 63.8887102, + "end": 63.89371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.89571734, + "coreId": 0, + "status": 0 + }, + { + "start": 63.89671018, + "end": 63.90576779, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.90571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.90574226, + "coreId": 0, + "status": 0 + }, + { + "start": 63.90871019, + "end": 63.91371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.91571734, + "coreId": 0, + "status": 0 + }, + { + "start": 63.91771022, + "end": 63.92576823, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.92571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.9257427, + "coreId": 0, + "status": 0 + }, + { + "start": 63.92871019, + "end": 63.93371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.93571733, + "coreId": 0, + "status": 0 + }, + { + "start": 63.93771017, + "end": 63.94578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.945755, + "coreId": 0, + "status": 0 + }, + { + "start": 63.94580516, + "end": 63.98576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.94871022, + "end": 63.95371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.9557173, + "coreId": 0, + "status": 0 + }, + { + "start": 63.95771018, + "end": 63.96576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 63.96571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.96574223, + "coreId": 0, + "status": 0 + }, + { + "start": 63.9687102, + "end": 63.97371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 63.9757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 63.98071745, + "coreId": 0, + "status": 0 + }, + { + "start": 63.98576372, + "end": 64.00576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 63.98581026, + "end": 64.00581002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 63.9957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 63.9957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.00071743, + "coreId": 0, + "status": 0 + }, + { + "start": 64.00576358, + "end": 64.02576386, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.00581002, + "end": 64.02581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.01573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.01576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.02071744, + "coreId": 0, + "status": 0 + }, + { + "start": 64.02581039, + "end": 64.0458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.03573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.03576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.04071729, + "coreId": 0, + "status": 0 + }, + { + "start": 64.04579271, + "end": 64.06576355, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.0458472, + "end": 64.06581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.05573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.05576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.06071743, + "coreId": 0, + "status": 0 + }, + { + "start": 64.06576355, + "end": 64.08576354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.06581008, + "end": 64.13577368, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.07573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.07576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.08071744, + "coreId": 0, + "status": 0 + }, + { + "start": 64.08576354, + "end": 64.10576375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.0957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.0957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.10071726, + "coreId": 0, + "status": 0 + }, + { + "start": 64.10576375, + "end": 64.1257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.11573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.11576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.12071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.13573567, + "coreId": 0, + "status": 0 + }, + { + "start": 64.13577368, + "end": 64.18575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 64.14071745, + "coreId": 0, + "status": 0 + }, + { + "start": 64.14579287, + "end": 64.16576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.15573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.15576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.16071744, + "coreId": 0, + "status": 0 + }, + { + "start": 64.16576401, + "end": 64.28576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.1657804, + "end": 64.18579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.17573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.17576071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.17871749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.18571744, + "coreId": 0, + "status": 0 + }, + { + "start": 64.18575519, + "end": 64.20575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 64.18579239, + "end": 64.19576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 64.1887102, + "end": 64.19371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.19572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.20571742, + "coreId": 0, + "status": 0 + }, + { + "start": 64.20575518, + "end": 64.31577362, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 64.20579237, + "end": 64.2157674, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 64.20871018, + "end": 64.21371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.21571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.22571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.2257427, + "coreId": 0, + "status": 0 + }, + { + "start": 64.2257929, + "end": 64.23576769, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 64.22871022, + "end": 64.23371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.23571732, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.24575494, + "coreId": 0, + "status": 0 + }, + { + "start": 64.24582933, + "end": 64.25576798, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 64.24871017, + "end": 64.25371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.25571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.26571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.26574224, + "coreId": 0, + "status": 0 + }, + { + "start": 64.2687102, + "end": 64.27371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 64.27576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.28071729, + "coreId": 0, + "status": 0 + }, + { + "start": 64.28576356, + "end": 64.30576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.28577995, + "end": 64.35575155, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.29573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.29576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.30071743, + "coreId": 0, + "status": 0 + }, + { + "start": 64.30576337, + "end": 64.32576365, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 64.30579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.31573561, + "coreId": 0, + "status": 0 + }, + { + "start": 64.31577362, + "end": 64.33577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.32071746, + "coreId": 0, + "status": 0 + }, + { + "start": 64.32576365, + "end": 64.46576404, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 64.32579712, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.33573577, + "coreId": 0, + "status": 0 + }, + { + "start": 64.33577373, + "end": 64.35577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.34071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.3458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.34583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.35572313, + "coreId": 0, + "status": 0 + }, + { + "start": 64.35575155, + "end": 64.37575141, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 64.35577372, + "end": 64.37577362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.36071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.3657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.36579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.3707173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.37572309, + "coreId": 0, + "status": 0 + }, + { + "start": 64.37577362, + "end": 64.40581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 64.38577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.38579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.39071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.39572281, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.39576023, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.40577286, + "coreId": 0, + "status": 0 + }, + { + "start": 64.40581035, + "end": 64.4258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.41071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.4157228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.41576022, + "coreId": 0, + "status": 0 + }, + { + "start": 64.4258103, + "end": 64.44584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.43071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.43572293, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.43576061, + "coreId": 0, + "status": 0 + }, + { + "start": 64.44584722, + "end": 64.46581058, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.45071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.45573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.45576045, + "coreId": 0, + "status": 0 + }, + { + "start": 64.46576404, + "end": 64.54580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.46578043, + "end": 64.48580417, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 64.46581058, + "end": 64.47873137, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 64.47071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.47573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.47576074, + "coreId": 0, + "status": 0 + }, + { + "start": 64.47873137, + "end": 64.58581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.48571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.48574227, + "coreId": 0, + "status": 0 + }, + { + "start": 64.4887102, + "end": 64.49371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.49571735, + "coreId": 0, + "status": 0 + }, + { + "start": 64.49671019, + "end": 64.50576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.50571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.50574224, + "coreId": 0, + "status": 0 + }, + { + "start": 64.50871019, + "end": 64.51371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.51571733, + "coreId": 0, + "status": 0 + }, + { + "start": 64.51771023, + "end": 64.52576822, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.52571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.52574269, + "coreId": 0, + "status": 0 + }, + { + "start": 64.52871022, + "end": 64.53371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.53571735, + "coreId": 0, + "status": 0 + }, + { + "start": 64.53771017, + "end": 64.54578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.545755, + "coreId": 0, + "status": 0 + }, + { + "start": 64.54580516, + "end": 64.58576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.54871021, + "end": 64.55371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.5557173, + "coreId": 0, + "status": 0 + }, + { + "start": 64.55771018, + "end": 64.56576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.56571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.56574223, + "coreId": 0, + "status": 0 + }, + { + "start": 64.56871018, + "end": 64.57371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 64.5757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.58071747, + "coreId": 0, + "status": 0 + }, + { + "start": 64.58576372, + "end": 64.60576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.58581026, + "end": 64.60581002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.59573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.59576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.60071744, + "coreId": 0, + "status": 0 + }, + { + "start": 64.60576358, + "end": 64.6257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.60581002, + "end": 64.62581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.61573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.61576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.62071745, + "coreId": 0, + "status": 0 + }, + { + "start": 64.62581033, + "end": 64.6458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.63573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.63576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.64071725, + "coreId": 0, + "status": 0 + }, + { + "start": 64.64579271, + "end": 64.66576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.6458472, + "end": 64.66581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.65573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.65576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.66071742, + "coreId": 0, + "status": 0 + }, + { + "start": 64.66576356, + "end": 64.68576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.66581009, + "end": 64.73577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.67573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.67576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.68071742, + "coreId": 0, + "status": 0 + }, + { + "start": 64.68576356, + "end": 64.70576377, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.69573535, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.69576025, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.70071728, + "coreId": 0, + "status": 0 + }, + { + "start": 64.70576377, + "end": 64.72576381, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.71573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.71576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.72071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.73573565, + "coreId": 0, + "status": 0 + }, + { + "start": 64.73577366, + "end": 64.78575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 64.74071745, + "coreId": 0, + "status": 0 + }, + { + "start": 64.74579287, + "end": 64.76576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.75573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.75576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.76071743, + "coreId": 0, + "status": 0 + }, + { + "start": 64.76576401, + "end": 64.88576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.7657804, + "end": 64.78579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.77573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.7757607, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.77871749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.78571744, + "coreId": 0, + "status": 0 + }, + { + "start": 64.78575519, + "end": 64.80575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 64.78579239, + "end": 64.79576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 64.78871017, + "end": 64.79371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.79572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.80571742, + "coreId": 0, + "status": 0 + }, + { + "start": 64.80575518, + "end": 64.91577362, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 64.80579237, + "end": 64.81576744, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 64.80871019, + "end": 64.81371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.81571733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.82571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.8257427, + "coreId": 0, + "status": 0 + }, + { + "start": 64.8257929, + "end": 64.83576766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 64.82871023, + "end": 64.83371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.83571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.84575494, + "coreId": 0, + "status": 0 + }, + { + "start": 64.84582933, + "end": 64.85576797, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 64.84871017, + "end": 64.8537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.85571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.86571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.86574225, + "coreId": 0, + "status": 0 + }, + { + "start": 64.86871017, + "end": 64.87371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 64.87576037, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.88071725, + "coreId": 0, + "status": 0 + }, + { + "start": 64.88576356, + "end": 64.90576339, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 64.88577995, + "end": 64.95575156, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 64.89573549, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.89576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.90071743, + "coreId": 0, + "status": 0 + }, + { + "start": 64.90576339, + "end": 64.92576366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 64.90579686, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.91573561, + "coreId": 0, + "status": 0 + }, + { + "start": 64.91577362, + "end": 64.93577375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.92071746, + "coreId": 0, + "status": 0 + }, + { + "start": 64.92576366, + "end": 65.06576404, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 64.92579713, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.93573579, + "coreId": 0, + "status": 0 + }, + { + "start": 64.93577375, + "end": 64.95577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.94071745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.94580978, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.94583407, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.95572314, + "coreId": 0, + "status": 0 + }, + { + "start": 64.95575156, + "end": 64.97575139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 64.95577373, + "end": 64.9757736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 64.96071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.96577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.96579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.97071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.97572307, + "coreId": 0, + "status": 0 + }, + { + "start": 64.9757736, + "end": 65.00581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 64.98577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.98579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 64.99071729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 64.9957228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 64.99576022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.0057729, + "coreId": 0, + "status": 0 + }, + { + "start": 65.00581039, + "end": 65.0258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.01071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.01572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.01576019, + "coreId": 0, + "status": 0 + }, + { + "start": 65.0258103, + "end": 65.04584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.03071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.03572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.03576059, + "coreId": 0, + "status": 0 + }, + { + "start": 65.04584722, + "end": 65.06581058, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.05071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.05573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.05576045, + "coreId": 0, + "status": 0 + }, + { + "start": 65.06576404, + "end": 65.14580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.06578043, + "end": 65.08580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 65.06581058, + "end": 65.07873139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 65.07071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.0757356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.07576075, + "coreId": 0, + "status": 0 + }, + { + "start": 65.07873139, + "end": 65.18581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.08571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.08574222, + "coreId": 0, + "status": 0 + }, + { + "start": 65.0887102, + "end": 65.09371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.09571734, + "coreId": 0, + "status": 0 + }, + { + "start": 65.09671018, + "end": 65.10576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.10571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.10574224, + "coreId": 0, + "status": 0 + }, + { + "start": 65.1087102, + "end": 65.11371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.11571733, + "coreId": 0, + "status": 0 + }, + { + "start": 65.11771022, + "end": 65.1257682, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.12571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.12574267, + "coreId": 0, + "status": 0 + }, + { + "start": 65.1287102, + "end": 65.13371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.13571733, + "coreId": 0, + "status": 0 + }, + { + "start": 65.13771017, + "end": 65.14578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.145755, + "coreId": 0, + "status": 0 + }, + { + "start": 65.14580516, + "end": 65.18576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.14871022, + "end": 65.15371819, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.1557173, + "coreId": 0, + "status": 0 + }, + { + "start": 65.15771018, + "end": 65.16576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.16571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.16574223, + "coreId": 0, + "status": 0 + }, + { + "start": 65.16871023, + "end": 65.17371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 65.1757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.18071747, + "coreId": 0, + "status": 0 + }, + { + "start": 65.18576372, + "end": 65.20576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.18581026, + "end": 65.20581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.1957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.1957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.20071743, + "coreId": 0, + "status": 0 + }, + { + "start": 65.20576357, + "end": 65.22576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.20581001, + "end": 65.22581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.21573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.21576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.22071748, + "coreId": 0, + "status": 0 + }, + { + "start": 65.22581035, + "end": 65.2458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.23573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.23576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.2407173, + "coreId": 0, + "status": 0 + }, + { + "start": 65.24579271, + "end": 65.26576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.2458472, + "end": 65.26581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.25573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.25576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.26071742, + "coreId": 0, + "status": 0 + }, + { + "start": 65.26576356, + "end": 65.28576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.26581009, + "end": 65.33577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.27573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.27576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.28071745, + "coreId": 0, + "status": 0 + }, + { + "start": 65.28576355, + "end": 65.30576375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.29573536, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.29576026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.30071729, + "coreId": 0, + "status": 0 + }, + { + "start": 65.30576375, + "end": 65.32576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.3157353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.3157602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.32071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.33573565, + "coreId": 0, + "status": 0 + }, + { + "start": 65.33577366, + "end": 65.38575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 65.34071747, + "coreId": 0, + "status": 0 + }, + { + "start": 65.34579288, + "end": 65.365764, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.35573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.35576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.36071743, + "coreId": 0, + "status": 0 + }, + { + "start": 65.365764, + "end": 65.48576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.36578039, + "end": 65.38579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.37573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.37576071, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.3787175, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.38571744, + "coreId": 0, + "status": 0 + }, + { + "start": 65.38575519, + "end": 65.40575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 65.38579239, + "end": 65.39576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 65.38871017, + "end": 65.39371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.39572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.40571742, + "coreId": 0, + "status": 0 + }, + { + "start": 65.40575518, + "end": 65.51577362, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 65.40579237, + "end": 65.4157674, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 65.40871018, + "end": 65.41371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.41571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.42571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.4257427, + "coreId": 0, + "status": 0 + }, + { + "start": 65.4257929, + "end": 65.43576768, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 65.42871023, + "end": 65.43371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.43571731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.44575495, + "coreId": 0, + "status": 0 + }, + { + "start": 65.44582934, + "end": 65.45576798, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 65.44871017, + "end": 65.45371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.45571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.46571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.46574224, + "coreId": 0, + "status": 0 + }, + { + "start": 65.4687102, + "end": 65.47371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 65.47576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.48071728, + "coreId": 0, + "status": 0 + }, + { + "start": 65.48576356, + "end": 65.50576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.48577995, + "end": 65.55575155, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.49573553, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.49576043, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.50071746, + "coreId": 0, + "status": 0 + }, + { + "start": 65.50576337, + "end": 65.52576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 65.50579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.51573561, + "coreId": 0, + "status": 0 + }, + { + "start": 65.51577362, + "end": 65.53577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.52071746, + "coreId": 0, + "status": 0 + }, + { + "start": 65.52576363, + "end": 65.66576404, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 65.5257971, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.53573577, + "coreId": 0, + "status": 0 + }, + { + "start": 65.53577373, + "end": 65.55577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.54071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.5458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.54583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.55572313, + "coreId": 0, + "status": 0 + }, + { + "start": 65.55575155, + "end": 65.57575138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 65.55577372, + "end": 65.57577359, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.56071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.56577269, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.56579703, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.57071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.57572306, + "coreId": 0, + "status": 0 + }, + { + "start": 65.57577359, + "end": 65.60581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 65.58577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.58579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.59071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.5957228, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.59576022, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.60577286, + "coreId": 0, + "status": 0 + }, + { + "start": 65.60581035, + "end": 65.6258103, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.61071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.61572283, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.61576025, + "coreId": 0, + "status": 0 + }, + { + "start": 65.6258103, + "end": 65.64584723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.63071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.6357229, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.63576058, + "coreId": 0, + "status": 0 + }, + { + "start": 65.64584723, + "end": 65.66581058, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.65071731, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.65573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.65576049, + "coreId": 0, + "status": 0 + }, + { + "start": 65.66576404, + "end": 65.7458052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.66578043, + "end": 65.68580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 65.66581058, + "end": 65.67873138, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 65.67071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.6757356, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.67576075, + "coreId": 0, + "status": 0 + }, + { + "start": 65.67873138, + "end": 65.78581027, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.68571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.68574222, + "coreId": 0, + "status": 0 + }, + { + "start": 65.68871023, + "end": 65.69371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.69571735, + "coreId": 0, + "status": 0 + }, + { + "start": 65.69671019, + "end": 65.70576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.70571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.70574224, + "coreId": 0, + "status": 0 + }, + { + "start": 65.7087102, + "end": 65.71371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.71571731, + "coreId": 0, + "status": 0 + }, + { + "start": 65.71771019, + "end": 65.7257682, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.72571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.72574267, + "coreId": 0, + "status": 0 + }, + { + "start": 65.7287102, + "end": 65.73371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.73571734, + "coreId": 0, + "status": 0 + }, + { + "start": 65.73771017, + "end": 65.74578057, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.74575504, + "coreId": 0, + "status": 0 + }, + { + "start": 65.7458052, + "end": 65.78576373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.74871017, + "end": 65.7537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.7557173, + "coreId": 0, + "status": 0 + }, + { + "start": 65.75771018, + "end": 65.76576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.76571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.76574223, + "coreId": 0, + "status": 0 + }, + { + "start": 65.76871018, + "end": 65.77371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 65.7757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.78071747, + "coreId": 0, + "status": 0 + }, + { + "start": 65.78576373, + "end": 65.80576358, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.78581027, + "end": 65.80581002, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.79573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.79576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.80071744, + "coreId": 0, + "status": 0 + }, + { + "start": 65.80576358, + "end": 65.8257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.80581002, + "end": 65.82581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.8157354, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.8157603, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.82071744, + "coreId": 0, + "status": 0 + }, + { + "start": 65.82581033, + "end": 65.8458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.83573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.83576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.84071731, + "coreId": 0, + "status": 0 + }, + { + "start": 65.84579271, + "end": 65.86576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.8458472, + "end": 65.86581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.85573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.85576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.86071744, + "coreId": 0, + "status": 0 + }, + { + "start": 65.86576356, + "end": 65.88576354, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.86581009, + "end": 65.93577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.87573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.87576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.88071745, + "coreId": 0, + "status": 0 + }, + { + "start": 65.88576354, + "end": 65.90576378, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.8957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.8957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.90071728, + "coreId": 0, + "status": 0 + }, + { + "start": 65.90576378, + "end": 65.92576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.91573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.91576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.92071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 65.93573565, + "coreId": 0, + "status": 0 + }, + { + "start": 65.93577366, + "end": 65.98575517, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 65.94071743, + "coreId": 0, + "status": 0 + }, + { + "start": 65.94579287, + "end": 65.96576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.95573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.95576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.96071745, + "coreId": 0, + "status": 0 + }, + { + "start": 65.96576401, + "end": 66.08576355, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 65.9657804, + "end": 65.98579237, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 65.97573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 65.9757607, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.97871749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 65.98571742, + "coreId": 0, + "status": 0 + }, + { + "start": 65.98575517, + "end": 66.00575521, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 65.98579237, + "end": 65.99576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 65.98871017, + "end": 65.99371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 65.99572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.00571745, + "coreId": 0, + "status": 0 + }, + { + "start": 66.00575521, + "end": 66.11577363, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 66.0057924, + "end": 66.0157674, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 66.00871021, + "end": 66.01371818, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.01571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.02571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.02574269, + "coreId": 0, + "status": 0 + }, + { + "start": 66.02579289, + "end": 66.03576766, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 66.02871023, + "end": 66.03371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.03571729, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.04575495, + "coreId": 0, + "status": 0 + }, + { + "start": 66.04582934, + "end": 66.05576797, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 66.04871017, + "end": 66.0537182, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.05571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.06571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.06574225, + "coreId": 0, + "status": 0 + }, + { + "start": 66.0687102, + "end": 66.07371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.07576039, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.08071729, + "coreId": 0, + "status": 0 + }, + { + "start": 66.08576355, + "end": 66.10576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.08577994, + "end": 66.15575155, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.09573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.09576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.10071743, + "coreId": 0, + "status": 0 + }, + { + "start": 66.10576337, + "end": 66.12576364, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.10579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.11573562, + "coreId": 0, + "status": 0 + }, + { + "start": 66.11577363, + "end": 66.13577375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.12071746, + "coreId": 0, + "status": 0 + }, + { + "start": 66.12576364, + "end": 66.265764, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.12579711, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.13573579, + "coreId": 0, + "status": 0 + }, + { + "start": 66.13577375, + "end": 66.15577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.14071747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.1458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.14583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.15572313, + "coreId": 0, + "status": 0 + }, + { + "start": 66.15575155, + "end": 66.17575139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 66.15577372, + "end": 66.1757736, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.16071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.1657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.16579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.17071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.17572307, + "coreId": 0, + "status": 0 + }, + { + "start": 66.1757736, + "end": 66.20581038, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.18577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.18579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.19071728, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.19572278, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.1957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.20577289, + "coreId": 0, + "status": 0 + }, + { + "start": 66.20581038, + "end": 66.22581024, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.21071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.21572279, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.21576021, + "coreId": 0, + "status": 0 + }, + { + "start": 66.22581024, + "end": 66.24584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.23071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.23572287, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.23576055, + "coreId": 0, + "status": 0 + }, + { + "start": 66.24584722, + "end": 66.26581054, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.25071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.25573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.25576046, + "coreId": 0, + "status": 0 + }, + { + "start": 66.265764, + "end": 66.34580516, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.26578039, + "end": 66.28580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 66.26581054, + "end": 66.27873139, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 66.27071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.27573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.2757607, + "coreId": 0, + "status": 0 + }, + { + "start": 66.27873139, + "end": 66.38581026, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.28571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.28574222, + "coreId": 0, + "status": 0 + }, + { + "start": 66.2887102, + "end": 66.29371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.29571734, + "coreId": 0, + "status": 0 + }, + { + "start": 66.29671018, + "end": 66.30576778, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.30571745, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.30574225, + "coreId": 0, + "status": 0 + }, + { + "start": 66.3087102, + "end": 66.31371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.31571734, + "coreId": 0, + "status": 0 + }, + { + "start": 66.31771022, + "end": 66.3257682, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.32571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.32574267, + "coreId": 0, + "status": 0 + }, + { + "start": 66.3287102, + "end": 66.33371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.33571733, + "coreId": 0, + "status": 0 + }, + { + "start": 66.33771017, + "end": 66.34578053, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.345755, + "coreId": 0, + "status": 0 + }, + { + "start": 66.34580516, + "end": 66.38576372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.34871021, + "end": 66.35371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.35571735, + "coreId": 0, + "status": 0 + }, + { + "start": 66.35771019, + "end": 66.36576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.36571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.36574223, + "coreId": 0, + "status": 0 + }, + { + "start": 66.3687102, + "end": 66.37371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.3757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.38071747, + "coreId": 0, + "status": 0 + }, + { + "start": 66.38576372, + "end": 66.40576364, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.38581026, + "end": 66.40581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.39573529, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.39576019, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.40071744, + "coreId": 0, + "status": 0 + }, + { + "start": 66.40576364, + "end": 66.42576386, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.40581008, + "end": 66.42581039, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.41573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.41576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.42071745, + "coreId": 0, + "status": 0 + }, + { + "start": 66.42581039, + "end": 66.44584723, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.43573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.43576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.44071731, + "coreId": 0, + "status": 0 + }, + { + "start": 66.44579274, + "end": 66.46576355, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.44584723, + "end": 66.46581008, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.45573555, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.45576045, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.46071742, + "coreId": 0, + "status": 0 + }, + { + "start": 66.46576355, + "end": 66.48576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.46581008, + "end": 66.53577369, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.47573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.47576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.48071744, + "coreId": 0, + "status": 0 + }, + { + "start": 66.48576357, + "end": 66.50576375, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.4957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.4957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.50071726, + "coreId": 0, + "status": 0 + }, + { + "start": 66.50576375, + "end": 66.5257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.5157353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.5157602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.52071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.53573568, + "coreId": 0, + "status": 0 + }, + { + "start": 66.53577369, + "end": 66.58575519, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 66.54071742, + "coreId": 0, + "status": 0 + }, + { + "start": 66.54579287, + "end": 66.56576401, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.55573557, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.55576047, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.56071744, + "coreId": 0, + "status": 0 + }, + { + "start": 66.56576401, + "end": 66.68576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.5657804, + "end": 66.58579239, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.57573561, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.57576076, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.57871749, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.58571744, + "coreId": 0, + "status": 0 + }, + { + "start": 66.58575519, + "end": 66.60575518, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "start": 66.58579239, + "end": 66.59576756, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 66.58871017, + "end": 66.59371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.59572999, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.60571742, + "coreId": 0, + "status": 0 + }, + { + "start": 66.60575518, + "end": 66.71577363, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "start": 66.60579237, + "end": 66.61576744, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 66.60871019, + "end": 66.61371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.61571733, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.62571747, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.62574271, + "coreId": 0, + "status": 0 + }, + { + "start": 66.62579291, + "end": 66.63576775, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 66.6287102, + "end": 66.63371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.63571738, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.64575495, + "coreId": 0, + "status": 0 + }, + { + "start": 66.64582934, + "end": 66.65576798, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 66.64871018, + "end": 66.65371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.65571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.66571748, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.66574228, + "coreId": 0, + "status": 0 + }, + { + "start": 66.6687102, + "end": 66.67371831, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.67576038, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.68071725, + "coreId": 0, + "status": 0 + }, + { + "start": 66.68576356, + "end": 66.70576337, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.68577995, + "end": 66.75575155, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.69573552, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.69576042, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.70071743, + "coreId": 0, + "status": 0 + }, + { + "start": 66.70576337, + "end": 66.72576363, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.70579684, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.71573562, + "coreId": 0, + "status": 0 + }, + { + "start": 66.71577363, + "end": 66.73577373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.72071746, + "coreId": 0, + "status": 0 + }, + { + "start": 66.72576363, + "end": 66.86576398, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.7257971, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.73573577, + "coreId": 0, + "status": 0 + }, + { + "start": 66.73577373, + "end": 66.75577372, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.74071743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.7458098, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.74583409, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.75572313, + "coreId": 0, + "status": 0 + }, + { + "start": 66.75575155, + "end": 66.77575141, + "coreId": 0, + "status": 1, + "type": 0, + "id": 4, + "endStatus": 1 + }, + { + "start": 66.75577372, + "end": 66.77577362, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.76071742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.7657727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.76579704, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.7707173, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.77572309, + "coreId": 0, + "status": 0 + }, + { + "start": 66.77577362, + "end": 66.80581035, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.78577268, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.78579701, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.79071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.79572284, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.79576026, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.80577286, + "coreId": 0, + "status": 0 + }, + { + "start": 66.80581035, + "end": 66.82581024, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.81071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.81572277, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.81576019, + "coreId": 0, + "status": 0 + }, + { + "start": 66.82581024, + "end": 66.84584722, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.83071726, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.83572291, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.83576059, + "coreId": 0, + "status": 0 + }, + { + "start": 66.84584722, + "end": 66.86581052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.85071727, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.85573556, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.85576046, + "coreId": 0, + "status": 0 + }, + { + "start": 66.86576398, + "end": 66.9458052, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.86578037, + "end": 66.88580412, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4, + "endStatus": 5 + }, + { + "start": 66.86581052, + "end": 66.87873141, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 4 + }, + { + "type": 5, + "id": 112, + "start": 66.87071725, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 113, + "start": 66.87573575, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.8757609, + "coreId": 0, + "status": 0 + }, + { + "start": 66.87873141, + "end": 66.98581027, + "coreId": 0, + "status": 4, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.88571742, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.88574222, + "coreId": 0, + "status": 0 + }, + { + "start": 66.88871023, + "end": 66.89371833, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.89571735, + "coreId": 0, + "status": 0 + }, + { + "start": 66.89671019, + "end": 66.90576777, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.90571744, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.90574224, + "coreId": 0, + "status": 0 + }, + { + "start": 66.90871019, + "end": 66.91371832, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.91571733, + "coreId": 0, + "status": 0 + }, + { + "start": 66.91771023, + "end": 66.92576823, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.92571746, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.9257427, + "coreId": 0, + "status": 0 + }, + { + "start": 66.92871022, + "end": 66.93371815, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.93571733, + "coreId": 0, + "status": 0 + }, + { + "start": 66.93771017, + "end": 66.94578057, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.94575504, + "coreId": 0, + "status": 0 + }, + { + "start": 66.9458052, + "end": 66.98576373, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.94871017, + "end": 66.95371817, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.95571729, + "coreId": 0, + "status": 0 + }, + { + "start": 66.95771017, + "end": 66.96576776, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 112, + "start": 66.96571743, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.96574223, + "coreId": 0, + "status": 0 + }, + { + "start": 66.9687102, + "end": 66.97371814, + "coreId": 0, + "status": 0, + "type": 1, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 114, + "start": 66.9757602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 66.98071747, + "coreId": 0, + "status": 0 + }, + { + "start": 66.98576373, + "end": 67.00576357, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 66.98581027, + "end": 67.00581001, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 66.9957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 66.9957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 67.00071744, + "coreId": 0, + "status": 0 + }, + { + "start": 67.00576357, + "end": 67.0257638, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 67.00581001, + "end": 67.02581033, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 67.01573539, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 67.01576029, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 67.02071742, + "coreId": 0, + "status": 0 + }, + { + "start": 67.02581033, + "end": 67.0458472, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 67.03573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 67.03576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 67.0407173, + "coreId": 0, + "status": 0 + }, + { + "start": 67.04579271, + "end": 67.06576356, + "coreId": 0, + "status": 0, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 67.0458472, + "end": 67.06581009, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 67.05573559, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 67.05576049, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 67.06071742, + "coreId": 0, + "status": 0 + }, + { + "start": 67.06576356, + "end": 67.08576356, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "start": 67.06581009, + "end": 67.13577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 67.07573541, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 67.07576031, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 67.08071742, + "coreId": 0, + "status": 0 + }, + { + "start": 67.08576356, + "end": 67.10576378, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 67.0957353, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 67.0957602, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 67.10071729, + "coreId": 0, + "status": 0 + }, + { + "start": 67.10576378, + "end": 67.12576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1, + "endStatus": 1 + }, + { + "type": 5, + "id": 113, + "start": 67.11573531, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 114, + "start": 67.11576021, + "coreId": 0, + "status": 0 + }, + { + "type": 5, + "id": 112, + "start": 67.12071742, + "coreId": 0, + "status": 0 + }, + { + "start": 67.12576382, + "coreId": 0, + "status": 1, + "type": 0, + "id": 1 + }, + { + "start": 67.12578016, + "coreId": 0, + "status": 0, + "type": 0, + "id": 4 + }, + { + "type": 5, + "id": 113, + "start": 67.13573565, + "coreId": 0, + "status": 0 + }, + { + "start": 67.13577366, + "coreId": 0, + "status": 1, + "type": 0, + "id": 0 + } +] \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/demo.xlsx b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/demo.xlsx new file mode 100644 index 0000000..6f2dc91 Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/demo.xlsx differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/demo1.xlsx b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/demo1.xlsx new file mode 100644 index 0000000..480424d Binary files /dev/null and b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/demo1.xlsx differ diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/parse.spec.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/parse.spec.ts new file mode 100644 index 0000000..19b18e4 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/parse.spec.ts @@ -0,0 +1,52 @@ +import { describe, it, expect, beforeEach, afterEach } from 'vitest' + +import path from 'path' +import fs from 'fs' +// import os2block from '../../src/main/ostrace/os2graph' +import { parseORTI } from '../../src/renderer/src/database/ortiParse' + +it('parse ORTI file1', () => { + const orti = parseORTI(fs.readFileSync(path.resolve(__dirname, './Os_Trace.orti'), 'utf-8')) + expect(orti).toBeDefined() + console.log(orti.errors[0]) + expect(orti.errors.length).toBe(0) + // // console.log(orti.data) + // fs.writeFileSync(path.resolve(__dirname, './Os_Trace.orti.json'), JSON.stringify(orti.data, null, 2)) +}) +it('parse ORTI file2', () => { + const orti = parseORTI(fs.readFileSync(path.resolve(__dirname, './sample.orti'), 'utf-8')) + expect(orti).toBeDefined() + expect(orti.errors).toBeDefined() + console.log(orti.errors[0]) + expect(orti.errors.length).toBe(0) + // console.log(orti.data) + fs.writeFileSync( + path.resolve(__dirname, './sample.orti.json'), + JSON.stringify(orti.data, null, 2) + ) +}) + +it('parse ORTI file3', () => { + const orti = parseORTI( + fs.readFileSync(path.resolve(__dirname, './Os_Trace_比赛demo.orti'), 'utf-8') + ) + expect(orti).toBeDefined() + expect(orti.errors).toBeDefined() + console.log(orti.errors[0]) + expect(orti.errors.length).toBe(0) + // console.log(orti.data) + fs.writeFileSync( + path.resolve(__dirname, './Os_Trace_比赛demo.orti.json'), + JSON.stringify(orti.data, null, 2) + ) +}) + +it.skip('parse ORTI file4', () => { + const orti = parseORTI(fs.readFileSync(path.resolve(__dirname, './RTAOS.rta'), 'utf-8')) + expect(orti).toBeDefined() + expect(orti.errors).toBeDefined() + console.log(orti.errors[0]) + expect(orti.errors.length).toBe(0) + // console.log(orti.data) + fs.writeFileSync(path.resolve(__dirname, './RTAOS.rta.json'), JSON.stringify(orti.data, null, 2)) +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/sample.orti b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/sample.orti new file mode 100644 index 0000000..6229296 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/sample.orti @@ -0,0 +1,293 @@ +/***********************/ + /* Declaration Section */ + /***********************/ + VERSION { KOIL = "2.1"; OSSEMANTICS = "ORTI", "2.1"; }; + IMPLEMENTATION VendorX_ORTI { + OS { + ENUM [ + "basicTaskFirst" = "&(gTaskControlBlocks[0])", + "extendedTaskFirst" = "&(gTaskControlBlocks[1])", + "extendedTaskSecond" = "&(gTaskControlBlocks[2])" + ] RUNNINGTASK, "Running Task Identification"; + ENUM "unsigned char" [ + "51" = 0, + "50" = 1, + "30" = 2, + "10" = 3 + ] RUNNINGTASKPRIORITY, "Priority of Running Task"; + ENUM "unsigned char" [ + "NO_ISR" = 0, + "Timer2Int" = 1, + "CanRxInt" = 2, + "CanTxInt" = 3 + ] RUNNINGISR2, "Running ISR of category 2"; + TOTRACE ENUM "unsigned char" [ + "ActivateTask" = 2, + "TerminateTask" = 4, + "ChainTask" = 6, + "Schedule" = 8, + "StartOS" = 52, + "ShutdownOS" = 54 + ] SERVICETRACE, "OS Services Watch"; + ENUM "unsigned char" [ + "E_OK" = 0, + "E_OS_ACCESS" = 1, + "E_OS_CALLEVEL" = 2, + "E_OS_ID" = 3, + "E_OS_LIMIT" = 4, + "E_OS_NOFUNC" = 5, + "E_OS_RESOURCE" = 6, + "E_OS_STATE" = 7, + "E_OS_VALUE" = 8 + ] LASTERROR, "Last OSEK error"; + ENUM "unsigned char" [ + "DEFAULT_APPMODE" = 0, + "DIAGNIOSTIC_MODE" = 1 + ] CURRENTAPPMODE, "Current application mode"; + }, "OS"; + + TASK { + ENUM "unsigned char" [ + "51" = 0, + "50" = 1, + "30" = 2, + "10" = 3 + ] PRIORITY , "Actual Prio"; + ENUM "unsigned char" [ + "READY"=0, + "RUNNING"=1, + "WAITING"=2, + "READY"=3, + "SUSPENDED"=4, + "TERMINATED"=5 + ] STATE, "Current State"; + ENUM "unsigned short *" [ + "Stack0" : taskStack0 = "&(taskStack0[0])", + "Stack1" : taskStack1 = "&(taskStack1[0])", + "Stack2" : taskStack2 = "&(taskStack2[0])" + ] STACK, "Task Stack"; + CTYPE "unsigned char" REMAININGACTIVATIONS, "Remaining task activations"; + ENUM "unsigned short *" [ + "Context 0" : Context_0 = 0, + "Context 1" : Context_1 = 1, + "Context 2" : Context_2 = 2 + ] CONTEXT, "Task Context"; + STRING vs_Home_Priority, "Home Priority"; + STRING vs_Task_Type, "Task Type"; /* BASIC / EXTENDED */ + STRING vs_Schedule, "Schedule"; /* non preemptive, full preemptive */ + CTYPE "unsigned short" vs_Event_Mask, "Wait Mask"; + CTYPE "unsigned short" vs_Event_Flags, "Event Flags"; + STRING vs_max_Activations, "max. Activations"; + }, "Tasks"; + STACK { + CTYPE SIZE, "Stack Size (Byte)"; + CTYPE "unsigned short *" BASEADDRESS, "Base Address"; + STRING STACKDIRECTION, "Stack Direction"; + CTYPE "unsigned short" FILLPATTERN, "Stack Fill Pattern"; + }, "Stacks"; + ALARM { + CTYPE "unsigned long" ALARMTIME, "Alarm Time"; + CTYPE "unsigned long" CYCLETIME, "Cycle Time"; + ENUM [ + "STOPPED" = 0, + "RUNNING" = 1 + ] STATE, "Alarm state"; + STRING ACTION, "Action"; + STRING COUNTER, "Counter"; + }, "Alarms"; + CONTEXT { + CTYPE "unsigned long" _CPU_R0, "CPU register R0"; + CTYPE "unsigned long" _CPU_R1, "CPU register R1"; + CTYPE "unsigned long" _CPU_R2, "CPU register R2"; + CTYPE "unsigned long" _CPU_R3, "CPU register R3"; + CTYPE "unsigned long" _CPU_PC, "CPU register PC"; + CTYPE "unsigned long" _CPU_SR, "CPU register SR"; + CTYPE "unsigned char" VALID; + }, "Task Context"; + RESOURCE { + ENUM "unsigned char" [ + "UNLOCKED" = 0, + "LOCKED" = 1 + ] STATE, "Resource State"; + ENUM "unsigned char" [ + "Task basicTaskFirst" = 0, + "Task extendedTaskSecond" = 1, + "ISR Timer2Int" = 2 + ] LOCKER, "Resource Locker"; + STRING PRIORITY, "Ceiling priority"; + }, "Resources"; + MESSAGECONTAINER { + STRING MSGNAME, "Message Name"; + STRING MSGTYPE, "Message Type"; + CTYPE QUEUESIZE, "Queue Size"; + CTYPE QUEUECOUNT, "Entry Count"; + CTYPE FIRSTELEMENT, "First Message"; + }, "Message Container"; + vs_ISR { + STRING vs_Priority, "Priority"; + }, "ISRs"; +}; /* END OF IMPLEMENTATION */ + + +/***********************/ +/* Information Section */ +/***********************/ + +OS VendorX_arch { + RUNNINGTASK = "gActiveTaskTcb"; + RUNNINGTASKPRIORITY = "osRunTaskPrio"; + RUNNINGISR2 = "osORTIIsr2Id"; + SERVICETRACE = "osORTIServiceId"; + LASTERROR = "Last_OSEK_err"; + CURRENTAPPMODE = "osAppMode"; +}; + +TASK basicTaskFirst { + PRIORITY = "(gTaskControlBlocks[0].actualPrio)"; + STATE = "(gTaskControlBlocks[0].taskState)"; + STACK = "&(taskStack0[0])"; + REMAININGACTIVATIONS = "(gTaskControlBlocks[0].actCount)"; + CONTEXT = "0"; + vs_Home_Priority = "10"; + vs_Task_Type = "BASIC"; + vs_Schedule = "FULL Preemptive"; + vs_Event_Mask = "0"; + vs_Event_Flags = "0"; + vs_max_Activations = "1"; +}; + +TASK extendedTaskFirst { + PRIORITY = "(gTaskControlBlocks[1].actualPrio)"; + STATE = "(gTaskControlBlocks[1].taskState)"; + STACK = "&(taskStack1[0])"; + REMAININGACTIVATIONS = "(gTaskControlBlocks[1].actCount)"; + CONTEXT = "1"; + vs_Home_Priority = "30"; + vs_Task_Type = "EXTENDED"; + vs_Schedule = "FULL Preemptive"; + vs_Event_Mask = "(gTaskControlBlocks[1].eventMask)"; + vs_Event_Flags = "(gTaskControlBlocks[1].eventFlag)"; + vs_max_Activations = "1"; +}; + +TASK extendedTaskSecond { + PRIORITY = "(gTaskControlBlocks[2].actualPrio)"; + STATE = "(gTaskControlBlocks[2].taskState)"; + STACK = "&(taskStack2[0])"; + REMAININGACTIVATIONS = "(gTaskControlBlocks[2].actCount)"; + CONTEXT = "2"; + vs_Home_Priority = "50"; + vs_Task_Type = "EXTENDED"; + vs_Schedule = "FULL Preemptive"; + vs_Event_Mask = "(gTaskControlBlocks[2].eventMask)"; + vs_Event_Flags = "(gTaskControlBlocks[2].eventFlag)"; + vs_max_Activations = "1"; +}; + + +STACK taskStack0 { + SIZE = "128"; + STACKDIRECTION = "UP"; + BASEADDRESS = "&(taskStack0[0])"; + FILLPATTERN = "0xAA55"; +}; + +STACK taskStack1 { + SIZE = "128"; + STACKDIRECTION = "UP"; + BASEADDRESS = "&(taskStack1[0])"; + FILLPATTERN = "0xAA55"; +}; + +STACK taskStack2 { + SIZE = "256"; + STACKDIRECTION = "UP"; + BASEADDRESS = "&(taskStack2[0])"; + FILLPATTERN = "0xAA55"; +}; + +ALARM myFirstAlarm { + ALARMTIME = "gAlarm[0].alarmTime"; + CYCLETIME = "gAlarm[0].cycleTime"; + STATE = "(gAlarm[0].alarmTime == 0)?0:1"; + ACTION = "ActivateTask basicTaskFirst"; + COUNTER = "SystemTimer"; +}; + +RESOURCE resBasic { + STATE = "(gResource[0].resourceCounter != 0)?1:0"; + LOCKER = "gResource[0].owner"; + PRIORITY = "TASK: 51"; +}; + +RESOURCE resTimerData { + STATE = "(gResource[1].resourceCounter != 0)?1:0"; + LOCKER = "gResource[1].owner"; + PRIORITY = "ISR: 3"; +}; + +CONTEXT Context_0 { + _CPU_R0 = "((unsigned long *)(gTaskControlBlocks[0].sp))[5]"; + _CPU_R1 = "((unsigned long *)(gTaskControlBlocks[0].sp))[4]"; + _CPU_R2 = "((unsigned long *)(gTaskControlBlocks[0].sp))[3]"; + _CPU_R3 = "((unsigned long *)(gTaskControlBlocks[0].sp))[2]"; + _CPU_PC = "((unsigned long *)(gTaskControlBlocks[0].sp))[1]"; + _CPU_SR = "((unsigned long *)(gTaskControlBlocks[0].sp))[0]"; + VALID = "(gTaskControlBlocks[0].taskState != 1) && (gTaskControlBlocks[0].taskState != 4)"; +}; + +CONTEXT Context_1 { + _CPU_R0 = "((unsigned long *)(gTaskControlBlocks[1].sp))[5]"; + _CPU_R1 = "((unsigned long *)(gTaskControlBlocks[1].sp))[4]"; + _CPU_R2 = "((unsigned long *)(gTaskControlBlocks[1].sp))[3]"; + _CPU_R3 = "((unsigned long *)(gTaskControlBlocks[1].sp))[2]"; + _CPU_PC = "((unsigned long *)(gTaskControlBlocks[1].sp))[1]"; + _CPU_SR = "((unsigned long *)(gTaskControlBlocks[1].sp))[0]"; + VALID = "(gTaskControlBlocks[1].taskState != 1) && (gTaskControlBlocks[1].taskState != 4)"; +}; + +CONTEXT Context_2 { + _CPU_R0 = "((unsigned long *)(gTaskControlBlocks[2].sp))[5]"; + _CPU_R1 = "((unsigned long *)(gTaskControlBlocks[2].sp))[4]"; + _CPU_R2 = "((unsigned long *)(gTaskControlBlocks[2].sp))[3]"; + _CPU_R3 = "((unsigned long *)(gTaskControlBlocks[2].sp))[2]"; + _CPU_PC = "((unsigned long *)(gTaskControlBlocks[2].sp))[1]"; + _CPU_SR = "((unsigned long *)(gTaskControlBlocks[2].sp))[0]"; + VALID = "(gTaskControlBlocks[2].taskState != 1) && (gTaskControlBlocks[2].taskState != 4)"; +}; + +MESSAGECONTAINER DrvTx_Msg_0_3 { + MSGNAME = "DrvTx"; + MSGTYPE = "QUEUED"; + QUEUESIZE = "5"; + QUEUECOUNT = "osQMsg[0].msgCount"; + FIRSTELEMENT = "osQMsg[0].rdPtr"; +}; + +MESSAGECONTAINER DataA_Msg_1_3 { + MSGNAME = "DataA"; + MSGTYPE = "UNQUEUED"; + QUEUESIZE = "1"; + QUEUECOUNT = "1"; + FIRSTELEMENT = "osUnqMsg[0].msgPtr"; +}; + +MESSAGECONTAINER DataA_Msg_1_4 { + MSGNAME = "DataA"; + MSGTYPE = "UNQUEUED"; + QUEUESIZE = "1"; + QUEUECOUNT = "1"; + FIRSTELEMENT = "osUnqMsg[0].msgPtr"; +}; + +vs_ISR Timer2Int { + vs_Priority = "3"; +}; + +vs_ISR CanRxInt { + vs_Priority = "1"; +}; + +vs_ISR CanTxInt { + vs_Priority = "7"; +}; \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/sample.orti.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/sample.orti.json new file mode 100644 index 0000000..6e0748e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/viewer/sample.orti.json @@ -0,0 +1,1171 @@ +{ + "id": "", + "name": "", + "cpuFreq": 100, + "version": { + "koil": "2.1", + "osSemantics": { + "type": "ORTI", + "version": "2.1" + } + }, + "implementation": { + "name": "VendorX_ORTI", + "os": { + "RUNNINGTASK": { + "name": "RUNNINGTASK", + "values": { + "basicTaskFirst": "&(gTaskControlBlocks[0])", + "extendedTaskFirst": "&(gTaskControlBlocks[1])", + "extendedTaskSecond": "&(gTaskControlBlocks[2])" + }, + "variableName": "RUNNINGTASK", + "description": "Running Task Identification", + "isArray": false, + "totrace": false + }, + "RUNNINGTASKPRIORITY": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "10": 3, + "30": 2, + "50": 1, + "51": 0 + }, + "variableName": "RUNNINGTASKPRIORITY", + "description": "Priority of Running Task", + "isArray": false, + "totrace": false + }, + "RUNNINGISR2": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "NO_ISR": 0, + "Timer2Int": 1, + "CanRxInt": 2, + "CanTxInt": 3 + }, + "variableName": "RUNNINGISR2", + "description": "Running ISR of category 2", + "isArray": false, + "totrace": false + }, + "SERVICETRACE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "ActivateTask": 2, + "TerminateTask": 4, + "ChainTask": 6, + "Schedule": 8, + "StartOS": 52, + "ShutdownOS": 54 + }, + "variableName": "SERVICETRACE", + "description": "OS Services Watch", + "isArray": false, + "totrace": true + }, + "LASTERROR": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "E_OK": 0, + "E_OS_ACCESS": 1, + "E_OS_CALLEVEL": 2, + "E_OS_ID": 3, + "E_OS_LIMIT": 4, + "E_OS_NOFUNC": 5, + "E_OS_RESOURCE": 6, + "E_OS_STATE": 7, + "E_OS_VALUE": 8 + }, + "variableName": "LASTERROR", + "description": "Last OSEK error", + "isArray": false, + "totrace": false + }, + "CURRENTAPPMODE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "DEFAULT_APPMODE": 0, + "DIAGNIOSTIC_MODE": 1 + }, + "variableName": "CURRENTAPPMODE", + "description": "Current application mode", + "isArray": false, + "totrace": false + } + }, + "task": { + "PRIORITY": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "10": 3, + "30": 2, + "50": 1, + "51": 0 + }, + "variableName": "PRIORITY", + "description": "Actual Prio", + "isArray": false, + "totrace": false + }, + "STATE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "READY": 3, + "RUNNING": 1, + "WAITING": 2, + "SUSPENDED": 4, + "TERMINATED": 5 + }, + "variableName": "STATE", + "description": "Current State", + "isArray": false, + "totrace": false + }, + "STACK": { + "name": "unsigned short *", + "type": "unsigned short *", + "values": { + "Stack0": "&(taskStack0[0])", + "Stack1": "&(taskStack1[0])", + "Stack2": "&(taskStack2[0])" + }, + "variableName": "STACK", + "description": "Task Stack", + "isArray": false, + "totrace": false + }, + "REMAININGACTIVATIONS": { + "type": "unsigned char", + "variableName": "REMAININGACTIVATIONS", + "description": "Remaining task activations", + "isArray": false + }, + "CONTEXT": { + "name": "unsigned short *", + "type": "unsigned short *", + "values": { + "Context 0": 0, + "Context 1": 1, + "Context 2": 2 + }, + "variableName": "CONTEXT", + "description": "Task Context", + "isArray": false, + "totrace": false + }, + "vs_Home_Priority": { + "type": "string", + "variableName": "vs_Home_Priority", + "description": "Home Priority" + }, + "vs_Task_Type": { + "type": "string", + "variableName": "vs_Task_Type", + "description": "Task Type" + }, + "vs_Schedule": { + "type": "string", + "variableName": "vs_Schedule", + "description": "Schedule" + }, + "vs_Event_Mask": { + "type": "unsigned short", + "variableName": "vs_Event_Mask", + "description": "Wait Mask", + "isArray": false + }, + "vs_Event_Flags": { + "type": "unsigned short", + "variableName": "vs_Event_Flags", + "description": "Event Flags", + "isArray": false + }, + "vs_max_Activations": { + "type": "string", + "variableName": "vs_max_Activations", + "description": "max. Activations" + } + }, + "stack": { + "SIZE": { + "type": "", + "variableName": "SIZE", + "description": "Stack Size (Byte)", + "isArray": false + }, + "BASEADDRESS": { + "type": "unsigned short *", + "variableName": "BASEADDRESS", + "description": "Base Address", + "isArray": false + }, + "STACKDIRECTION": { + "type": "string", + "variableName": "STACKDIRECTION", + "description": "Stack Direction" + }, + "FILLPATTERN": { + "type": "unsigned short", + "variableName": "FILLPATTERN", + "description": "Stack Fill Pattern", + "isArray": false + } + }, + "alarm": { + "ALARMTIME": { + "type": "unsigned long", + "variableName": "ALARMTIME", + "description": "Alarm Time", + "isArray": false + }, + "CYCLETIME": { + "type": "unsigned long", + "variableName": "CYCLETIME", + "description": "Cycle Time", + "isArray": false + }, + "STATE": { + "name": "STATE", + "values": { + "STOPPED": 0, + "RUNNING": 1 + }, + "variableName": "STATE", + "description": "Alarm state", + "isArray": false, + "totrace": false + }, + "ACTION": { + "type": "string", + "variableName": "ACTION", + "description": "Action" + }, + "COUNTER": { + "type": "string", + "variableName": "COUNTER", + "description": "Counter" + } + }, + "resource": { + "STATE": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "UNLOCKED": 0, + "LOCKED": 1 + }, + "variableName": "STATE", + "description": "Resource State", + "isArray": false, + "totrace": false + }, + "LOCKER": { + "name": "unsigned char", + "type": "unsigned char", + "values": { + "Task basicTaskFirst": 0, + "Task extendedTaskSecond": 1, + "ISR Timer2Int": 2 + }, + "variableName": "LOCKER", + "description": "Resource Locker", + "isArray": false, + "totrace": false + }, + "PRIORITY": { + "type": "string", + "variableName": "PRIORITY", + "description": "Ceiling priority" + } + }, + "isr": { + "vs_Priority": { + "type": "string", + "variableName": "vs_Priority", + "description": "Priority" + } + }, + "config": {} + }, + "osInstance": { + "name": "VendorX_arch", + "coreNum": 0, + "coreConfigs": [] + }, + "tasks": [ + { + "name": "basicTaskFirst", + "priority": "(gTaskControlBlocks[0].actualPrio)", + "state": "(gTaskControlBlocks[0].taskState)", + "stack": "&(taskStack0[0])", + "remainingActivations": "(gTaskControlBlocks[0].actCount)", + "homePriority": "10", + "taskType": "BASIC", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "extendedTaskFirst", + "priority": "(gTaskControlBlocks[1].actualPrio)", + "state": "(gTaskControlBlocks[1].taskState)", + "stack": "&(taskStack1[0])", + "remainingActivations": "(gTaskControlBlocks[1].actCount)", + "homePriority": "30", + "taskType": "EXTENDED", + "schedule": "FULL", + "maxActivations": "1" + }, + { + "name": "extendedTaskSecond", + "priority": "(gTaskControlBlocks[2].actualPrio)", + "state": "(gTaskControlBlocks[2].taskState)", + "stack": "&(taskStack2[0])", + "remainingActivations": "(gTaskControlBlocks[2].actCount)", + "homePriority": "50", + "taskType": "EXTENDED", + "schedule": "FULL", + "maxActivations": "1" + } + ], + "stacks": [ + { + "name": "taskStack0", + "size": "128", + "stackDirection": "UP", + "baseAddress": "&(taskStack0[0])", + "fillPattern": 43605 + }, + { + "name": "taskStack1", + "size": "128", + "stackDirection": "UP", + "baseAddress": "&(taskStack1[0])", + "fillPattern": 43605 + }, + { + "name": "taskStack2", + "size": "256", + "stackDirection": "UP", + "baseAddress": "&(taskStack2[0])", + "fillPattern": 43605 + } + ], + "resources": [ + { + "name": "resBasic", + "state": "(gResource[0].resourceCounter != 0)?1:0", + "locker": "gResource[0].owner", + "priority": "TASK: 51" + }, + { + "name": "resTimerData", + "state": "(gResource[1].resourceCounter != 0)?1:0", + "locker": "gResource[1].owner", + "priority": "ISR: 3" + } + ], + "alarms": [ + { + "name": "myFirstAlarm", + "alarmTime": "gAlarm[0].alarmTime", + "cycleTime": "gAlarm[0].cycleTime", + "state": "(gAlarm[0].alarmTime == 0)?0:1", + "action": "ActivateTask basicTaskFirst", + "counter": "SystemTimer" + } + ], + "isrs": [ + { + "name": "Timer2Int", + "priority": "3", + "type": "", + "state": "" + }, + { + "name": "CanRxInt", + "priority": "1", + "type": "", + "state": "" + }, + { + "name": "CanTxInt", + "priority": "7", + "type": "", + "state": "" + } + ], + "configs": [], + "coreConfigs": [ + { + "id": 0, + "name": "basicTaskFirst", + "coreId": 0, + "type": 0, + "color": "rgb(107,130,35)" + }, + { + "id": 1, + "name": "extendedTaskFirst", + "coreId": 0, + "type": 0, + "color": "rgb(159,113,167)" + }, + { + "id": 2, + "name": "extendedTaskSecond", + "coreId": 0, + "type": 0, + "color": "rgb(163,63,48)" + }, + { + "id": 0, + "name": "Timer2Int", + "coreId": 0, + "type": 1, + "color": "rgb(167,139,183)" + }, + { + "id": 0, + "name": "CanRxInt", + "coreId": 0, + "type": 1, + "color": "rgb(239,25,113)" + }, + { + "id": 0, + "name": "CanTxInt", + "coreId": 0, + "type": 1, + "color": "rgb(101,51,37)" + } + ], + "resourceConfigs": [ + { + "id": 0, + "name": "resBasic", + "coreId": 0 + }, + { + "id": 1, + "name": "resTimerData", + "coreId": 0 + } + ], + "serviceConfigs": [ + { + "id": 0, + "name": "GetApplicationID Start" + }, + { + "id": 1, + "name": "GetApplicationID Return" + }, + { + "id": 2, + "name": "GetISRID Start" + }, + { + "id": 3, + "name": "GetISRID Return" + }, + { + "id": 4, + "name": "CallTrustedFunction Start" + }, + { + "id": 5, + "name": "CallTrustedFunction Return" + }, + { + "id": 6, + "name": "CheckISRMemoryAccess Start" + }, + { + "id": 7, + "name": "CheckISRMemoryAccess Return" + }, + { + "id": 8, + "name": "CheckTaskMemoryAccess Start" + }, + { + "id": 9, + "name": "CheckTaskMemoryAccess Return" + }, + { + "id": 10, + "name": "CheckObjectAccess Start" + }, + { + "id": 11, + "name": "CheckObjectAccess Return" + }, + { + "id": 12, + "name": "CheckObjectOwnership Start" + }, + { + "id": 13, + "name": "CheckObjectOwnership Return" + }, + { + "id": 14, + "name": "StartScheduleTableRel Start" + }, + { + "id": 15, + "name": "StartScheduleTableRel Return" + }, + { + "id": 16, + "name": "StartScheduleTableAbs Start" + }, + { + "id": 17, + "name": "StartScheduleTableAbs Return" + }, + { + "id": 18, + "name": "StopScheduleTable Start" + }, + { + "id": 19, + "name": "StopScheduleTable Return" + }, + { + "id": 20, + "name": "NextScheduleTable Start" + }, + { + "id": 21, + "name": "NextScheduleTable Return" + }, + { + "id": 22, + "name": "StartScheduleTableSynchron Start" + }, + { + "id": 23, + "name": "StartScheduleTableSynchron Return" + }, + { + "id": 24, + "name": "SyncScheduleTable Start" + }, + { + "id": 25, + "name": "SyncScheduleTable Return" + }, + { + "id": 26, + "name": "SetScheduleTableAsync Start" + }, + { + "id": 27, + "name": "SetScheduleTableAsync Return" + }, + { + "id": 28, + "name": "GetScheduleTableStatus Start" + }, + { + "id": 29, + "name": "GetScheduleTableStatus Return" + }, + { + "id": 30, + "name": "IncrementCounter Start" + }, + { + "id": 31, + "name": "IncrementCounter Return" + }, + { + "id": 32, + "name": "GetCounterValue Start" + }, + { + "id": 33, + "name": "GetCounterValue Return" + }, + { + "id": 34, + "name": "GetElapsedValue Start" + }, + { + "id": 35, + "name": "GetElapsedValue Return" + }, + { + "id": 36, + "name": "TerminateApplication Start" + }, + { + "id": 37, + "name": "TerminateApplication Return" + }, + { + "id": 38, + "name": "AllowAccess Start" + }, + { + "id": 39, + "name": "AllowAccess Return" + }, + { + "id": 40, + "name": "GetApplicationState Start" + }, + { + "id": 41, + "name": "GetApplicationState Return" + }, + { + "id": 42, + "name": "GetNumberOfActivatedCores Start" + }, + { + "id": 43, + "name": "GetNumberOfActivatedCores Return" + }, + { + "id": 44, + "name": "GetCoreID Start" + }, + { + "id": 45, + "name": "GetCoreID Return" + }, + { + "id": 46, + "name": "StartCore Start" + }, + { + "id": 47, + "name": "StartCore Return" + }, + { + "id": 48, + "name": "StartNonAutosarCore Start" + }, + { + "id": 49, + "name": "StartNonAutosarCore Return" + }, + { + "id": 50, + "name": "GetSpinlock Start" + }, + { + "id": 51, + "name": "GetSpinlock Return" + }, + { + "id": 52, + "name": "ReleaseSpinlock Start" + }, + { + "id": 53, + "name": "ReleaseSpinlock Return" + }, + { + "id": 54, + "name": "TryToGetSpinlock Start" + }, + { + "id": 55, + "name": "TryToGetSpinlock Return" + }, + { + "id": 56, + "name": "ShutdownAllCores Start" + }, + { + "id": 57, + "name": "ShutdownAllCores Return" + }, + { + "id": 58, + "name": "ControlIdle Start" + }, + { + "id": 59, + "name": "ControlIdle Return" + }, + { + "id": 60, + "name": "IocSend Start" + }, + { + "id": 61, + "name": "IocSend Return" + }, + { + "id": 62, + "name": "IocWrite Start" + }, + { + "id": 63, + "name": "IocWrite Return" + }, + { + "id": 64, + "name": "IocSendGroup Start" + }, + { + "id": 65, + "name": "IocSendGroup Return" + }, + { + "id": 66, + "name": "IocWriteGroup Start" + }, + { + "id": 67, + "name": "IocWriteGroup Return" + }, + { + "id": 68, + "name": "IocReceive Start" + }, + { + "id": 69, + "name": "IocReceive Return" + }, + { + "id": 70, + "name": "IocRead Start" + }, + { + "id": 71, + "name": "IocRead Return" + }, + { + "id": 72, + "name": "IocReceiveGroup Start" + }, + { + "id": 73, + "name": "IocReceiveGroup Return" + }, + { + "id": 74, + "name": "IocReadGroup Start" + }, + { + "id": 75, + "name": "IocReadGroup Return" + }, + { + "id": 76, + "name": "IocEmptyQueue Start" + }, + { + "id": 77, + "name": "IocEmptyQueue Return" + }, + { + "id": 78, + "name": "GetCurrentApplicationID Start" + }, + { + "id": 79, + "name": "GetCurrentApplicationID Return" + }, + { + "id": 80, + "name": "ReadPeripheral8 Start" + }, + { + "id": 81, + "name": "ReadPeripheral8 Return" + }, + { + "id": 82, + "name": "ReadPeripheral16 Start" + }, + { + "id": 83, + "name": "ReadPeripheral16 Return" + }, + { + "id": 84, + "name": "ReadPeripheral32 Start" + }, + { + "id": 85, + "name": "ReadPeripheral32 Return" + }, + { + "id": 86, + "name": "WritePeripheral8 Start" + }, + { + "id": 87, + "name": "WritePeripheral8 Return" + }, + { + "id": 88, + "name": "WritePeripheral16 Start" + }, + { + "id": 89, + "name": "WritePeripheral16 Return" + }, + { + "id": 90, + "name": "WritePeripheral32 Start" + }, + { + "id": 91, + "name": "WritePeripheral32 Return" + }, + { + "id": 92, + "name": "ModifyPeripheral8 Start" + }, + { + "id": 93, + "name": "ModifyPeripheral8 Return" + }, + { + "id": 94, + "name": "ModifyPeripheral32 Start" + }, + { + "id": 95, + "name": "ModifyPeripheral32 Return" + }, + { + "id": 96, + "name": "DisableInterruptSource Start" + }, + { + "id": 97, + "name": "DisableInterruptSource Return" + }, + { + "id": 98, + "name": "EnableInterruptSource Start" + }, + { + "id": 99, + "name": "EnableInterruptSource Return" + }, + { + "id": 100, + "name": "ClearPendingInterrupt Start" + }, + { + "id": 101, + "name": "ClearPendingInterrupt Return" + }, + { + "id": 102, + "name": "ActivateTaskAsyn Start" + }, + { + "id": 103, + "name": "ActivateTaskAsyn Return" + }, + { + "id": 104, + "name": "SetEventAsyn Start" + }, + { + "id": 105, + "name": "SetEventAsyn Return" + }, + { + "id": 106, + "name": "ModifyPeripheral16 Start" + }, + { + "id": 107, + "name": "ModifyPeripheral16 Return" + }, + { + "id": 108, + "name": "WaitAllEvents Start" + }, + { + "id": 109, + "name": "WaitAllEvents Return" + }, + { + "id": 110, + "name": "IocCallBackNotify Start" + }, + { + "id": 111, + "name": "IocCallBackNotify Return" + }, + { + "id": 112, + "name": "ActivateTask Start" + }, + { + "id": 113, + "name": "ActivateTask Return" + }, + { + "id": 114, + "name": "TerminateTask Start" + }, + { + "id": 115, + "name": "TerminateTask Return" + }, + { + "id": 116, + "name": "ChainTask Start" + }, + { + "id": 117, + "name": "ChainTask Return" + }, + { + "id": 118, + "name": "Schedule Start" + }, + { + "id": 119, + "name": "Schedule Return" + }, + { + "id": 120, + "name": "GetTaskID Start" + }, + { + "id": 121, + "name": "GetTaskID Return" + }, + { + "id": 122, + "name": "GetTaskState Start" + }, + { + "id": 123, + "name": "GetTaskState Return" + }, + { + "id": 124, + "name": "EnableAllInterrupts Start" + }, + { + "id": 125, + "name": "EnableAllInterrupts Return" + }, + { + "id": 126, + "name": "DisableAllInterrupts Start" + }, + { + "id": 127, + "name": "DisableAllInterrupts Return" + }, + { + "id": 128, + "name": "ResumeAllInterrupts Start" + }, + { + "id": 129, + "name": "ResumeAllInterrupts Return" + }, + { + "id": 130, + "name": "SuspendAllInterrupts Start" + }, + { + "id": 131, + "name": "SuspendAllInterrupts Return" + }, + { + "id": 132, + "name": "ResumeOSInterrupts Start" + }, + { + "id": 133, + "name": "ResumeOSInterrupts Return" + }, + { + "id": 134, + "name": "SuspendOSInterrupts Start" + }, + { + "id": 135, + "name": "SuspendOSInterrupts Return" + }, + { + "id": 136, + "name": "GetResource Start" + }, + { + "id": 137, + "name": "GetResource Return" + }, + { + "id": 138, + "name": "ReleaseResource Start" + }, + { + "id": 139, + "name": "ReleaseResource Return" + }, + { + "id": 140, + "name": "SetEvent Start" + }, + { + "id": 141, + "name": "SetEvent Return" + }, + { + "id": 142, + "name": "ClearEvent Start" + }, + { + "id": 143, + "name": "ClearEvent Return" + }, + { + "id": 144, + "name": "GetEvent Start" + }, + { + "id": 145, + "name": "GetEvent Return" + }, + { + "id": 146, + "name": "WaitEvent Start" + }, + { + "id": 147, + "name": "WaitEvent Return" + }, + { + "id": 148, + "name": "GetAlarmBase Start" + }, + { + "id": 149, + "name": "GetAlarmBase Return" + }, + { + "id": 150, + "name": "GetAlarm Start" + }, + { + "id": 151, + "name": "GetAlarm Return" + }, + { + "id": 152, + "name": "SetRelAlarm Start" + }, + { + "id": 153, + "name": "SetRelAlarm Return" + }, + { + "id": 154, + "name": "SetAbsAlarm Start" + }, + { + "id": 155, + "name": "SetAbsAlarm Return" + }, + { + "id": 156, + "name": "CancelAlarm Start" + }, + { + "id": 157, + "name": "CancelAlarm Return" + }, + { + "id": 158, + "name": "GetActiveApplicationMode Start" + }, + { + "id": 159, + "name": "GetActiveApplicationMode Return" + }, + { + "id": 160, + "name": "StartOS Start" + }, + { + "id": 161, + "name": "StartOS Return" + }, + { + "id": 162, + "name": "ShutdownOS Start" + }, + { + "id": 163, + "name": "ShutdownOS Return" + } + ], + "hostConfigs": [ + { + "id": 0, + "name": "ErrorHook Start" + }, + { + "id": 1, + "name": "ErrorHook Return" + }, + { + "id": 2, + "name": "PostTaskHook Start" + }, + { + "id": 3, + "name": "PostTaskHook Return" + }, + { + "id": 4, + "name": "PreTaskHook Start" + }, + { + "id": 5, + "name": "PreTaskHook Return" + }, + { + "id": 6, + "name": "ProtectionHook Start" + }, + { + "id": 7, + "name": "ProtectionHook Return" + }, + { + "id": 8, + "name": "StartupHook Start" + }, + { + "id": 9, + "name": "StartupHook Return" + }, + { + "id": 10, + "name": "ShutdownHook Start" + }, + { + "id": 11, + "name": "ShutdownHook Return" + } + ] +} \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/vsomeip/helloworld-local.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/vsomeip/helloworld-local.json new file mode 100644 index 0000000..af82ae6 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/test/vsomeip/helloworld-local.json @@ -0,0 +1,34 @@ +{ + "unicast": "127.0.0.1", + "logging": { + "level": "info", + "dlt": "false", + "file" : { "enable" : "true", "path" : "./vsomeip.log" } + }, + "tracing" : + { + "enable" : "true", + "sd_enable" : "true" + }, + "applications": [ + { + "name": "hello_world_service", + "id": "0x4444" + }, + { + "name": "hello_world_client", + "id": "0x5555" + } + ], + "services": [ + { + "service": "0x1111", + "instance": "0x2222", + "unreliable": "30509" + } + ], + "routing": "routingmanagerd", + "service-discovery": { + "enable": "false" + } +} \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/convert.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/convert.js new file mode 100644 index 0000000..5913730 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/convert.js @@ -0,0 +1,273 @@ +const fs = require('fs') +const path = require('path') + +// Frame structure from parser.ts +const FRAME_HEADER = Buffer.from([0x5a, 0x5b, 0x5c, 0x5d]) +const FRAME_HEADER_SIZE = 4 +const DATA_LENGTH = 12 +const FRAME_LENGTH = FRAME_HEADER_SIZE + DATA_LENGTH + +// Parse command line arguments +const args = process.argv.slice(2) +const mode = args[0] || 'to-csv' // 'to-csv' or 'to-bin' + +if (mode === 'to-bin') { + // Convert CSV to binary + convertCsvToBin() +} else { + // Convert binary/txt to CSV (default) + convertBinToCsv() +} + +function convertCsvToBin() { + console.log('=== Converting CSV to binary ===\n') + + const csvPath = path.resolve(__dirname, './a.csv') + const binPath = path.resolve(__dirname, './a.bin') + + if (!fs.existsSync(csvPath)) { + console.error('❌ Error: a.csv not found!') + process.exit(1) + } + + // Read CSV file + const csvContent = fs.readFileSync(csvPath, 'utf-8') + const lines = csvContent.trim().split('\n') + + // Skip header + const header = lines[0] + const dataLines = lines.slice(1) + + console.log(`CSV header: ${header}`) + console.log(`Data rows: ${dataLines.length}\n`) + + // Create buffer for all frames + const totalSize = dataLines.length * FRAME_LENGTH + const buffer = Buffer.alloc(totalSize) + let offset = 0 + let frameCount = 0 + + for (const line of dataLines) { + const fields = line.split(',') + + if (fields.length < 7) { + console.log(`Warning: Skipping invalid line ${frameCount + 1}: ${line}`) + continue + } + + // Parse CSV fields: index,timestamp,type,type_id,type_status,coreID,crc + const index = parseInt(fields[0]) + const timestamp = parseInt(fields[1]) + const type = parseInt(fields[2]) + const typeId = parseInt(fields[3]) + const typeStatus = parseInt(fields[4]) + const coreID = parseInt(fields[5]) + const crc = parseInt(fields[6]) + + // Write frame header + FRAME_HEADER.copy(buffer, offset) + offset += FRAME_HEADER_SIZE + + // Write frame data (12 bytes) + // timestamp (4 bytes LSB) + buffer.writeUInt32LE(timestamp, offset) + offset += 4 + + // typeId (2 bytes LSB) + buffer.writeUInt16LE(typeId, offset) + offset += 2 + + // typeStatus (2 bytes LSB) + buffer.writeUInt16LE(typeStatus, offset) + offset += 2 + + // index (1 byte) + buffer.writeUInt8(index, offset) + offset += 1 + + // type (1 byte) + buffer.writeUInt8(type, offset) + offset += 1 + + // coreID (1 byte) + buffer.writeUInt8(coreID, offset) + offset += 1 + + // crc (1 byte) + buffer.writeUInt8(crc, offset) + offset += 1 + + frameCount++ + } + + // Write binary file + fs.writeFileSync(binPath, buffer.slice(0, offset)) + + console.log('=== Conversion Complete ===') + console.log(`Total frames written: ${frameCount}`) + console.log(`Output file: ${binPath} (${offset} bytes)`) + console.log('\n✅ CSV to binary conversion done!') +} + +function convertBinToCsv() { + console.log('=== Step 1: Convert HEX text to binary ===') + + // Check if a.txt exists + const txtPath = path.resolve(__dirname, './a.txt') + const binPath = path.resolve(__dirname, './a.bin') + let buffer + + if (fs.existsSync(txtPath)) { + // Read and convert hex string to binary + const hexString = fs.readFileSync(txtPath, 'utf-8') + const hexArray = hexString.split(' ').filter(h => h.length > 0) + + buffer = Buffer.from(hexArray.map(h => parseInt(h, 16))) + + // Write to a.bin + fs.writeFileSync(binPath, buffer) + console.log(`✓ Converted ${hexArray.length} bytes from a.txt to a.bin`) + } else if (fs.existsSync(binPath)) { + // If a.txt doesn't exist but a.bin does, just read a.bin + buffer = fs.readFileSync(binPath) + console.log(`✓ Using existing a.bin (${buffer.length} bytes)`) + } else { + console.error('❌ Error: Neither a.txt nor a.bin found!') + process.exit(1) + } + + console.log('\n=== Step 2: Parse binary and convert to CSV ===') + + // Output CSV file + const csvPath = path.resolve(__dirname, './a.csv') + const csvLines = [] + + // CSV header - index放前面 + csvLines.push('index,timestamp,type,type_id,type_status,coreID,crc') + + let position = 0 + let frameCount = 0 + let errorCount = 0 + let lastIndex = undefined + const indexErrors = [] // Store index discontinuity errors + + console.log(`Total buffer size: ${buffer.length} bytes`) + console.log('Starting to parse frames...\n') + + while (position < buffer.length) { + // Search for frame header + let headerIndex = -1 + for (let i = position; i <= buffer.length - FRAME_HEADER_SIZE; i++) { + if ( + buffer[i] === FRAME_HEADER[0] && + buffer[i + 1] === FRAME_HEADER[1] && + buffer[i + 2] === FRAME_HEADER[2] && + buffer[i + 3] === FRAME_HEADER[3] + ) { + headerIndex = i + break + } + } + + // No more frame headers found + if (headerIndex === -1) { + if (position < buffer.length) { + console.log(`Skipped ${buffer.length - position} trailing bytes without valid frame header`) + } + break + } + + // Skip bytes before frame header + if (headerIndex > position) { + console.log(`Skipped ${headerIndex - position} bytes before frame at position ${headerIndex}`) + errorCount++ + } + + position = headerIndex + + // Check if we have enough data for a complete frame + if (position + FRAME_LENGTH > buffer.length) { + console.log(`Incomplete frame at position ${position}, only ${buffer.length - position} bytes remaining`) + break + } + + // Extract frame data (skip header) + const block = buffer.subarray(position + FRAME_HEADER_SIZE, position + FRAME_LENGTH) + + // Parse according to the structure in parser.ts: + // timestamp (4 bytes LSB), typeId (2 bytes LSB), typeStatus (2 bytes LSB), + // index (1 byte), type (1 byte), coreID (1 byte), crc (1 byte) + const timestamp = block.readUInt32LE(0) + const typeId = block.readUInt16LE(4) + const typeStatus = block.readUInt16LE(6) + const index = block.readUInt8(8) + const type = block.readUInt8(9) + const coreID = block.readUInt8(10) + const crc = block.readUInt8(11) + + // Validate frame (simple check - type should be 0-5) + if (type > 5) { + console.log(`Warning: Invalid type ${type} at frame ${frameCount}, index ${index}`) + errorCount++ + } + + // Check index continuity (uint8: 0-255 循环) + if (lastIndex !== undefined) { + const expectedIndex = (lastIndex + 1) & 0xff // 0-255循环 + if (index !== expectedIndex) { + const error = { + frameNumber: frameCount + 1, + csvLine: csvLines.length + 1, // +1 for header + expectedIndex: expectedIndex, + actualIndex: index, + lastIndex: lastIndex, + timestamp: timestamp + } + indexErrors.push(error) + console.log(`❌ Index discontinuity at frame ${error.frameNumber} (CSV line ${error.csvLine}): expected ${expectedIndex}, got ${index}`) + } + } + lastIndex = index + + // Add to CSV - index放前面 + csvLines.push(`${index},${timestamp},${type},${typeId},${typeStatus},${coreID},${crc}`) + + frameCount++ + position += FRAME_LENGTH + } + + // Write CSV file + fs.writeFileSync(csvPath, csvLines.join('\n'), 'utf-8') + + console.log('\n=== Conversion Complete ===') + console.log(`Total frames parsed: ${frameCount}`) + console.log(`Frame errors/warnings: ${errorCount}`) + console.log(`Index discontinuities found: ${indexErrors.length}`) + console.log(`Output files:`) + console.log(` - Binary: ${binPath}`) + console.log(` - CSV: ${csvPath} (${csvLines.length - 1} data rows)`) + + // Write index error report if there are any + if (indexErrors.length > 0) { + const errorReportPath = path.resolve(__dirname, './index_errors.txt') + const errorLines = [ + '=== Index Discontinuity Report ===', + `Total discontinuities: ${indexErrors.length}`, + '', + 'Frame# | CSV Line | Expected | Actual | Last Index | Timestamp', + '-------|----------|----------|--------|------------|----------' + ] + + indexErrors.forEach(err => { + errorLines.push( + `${String(err.frameNumber).padStart(6)} | ${String(err.csvLine).padStart(8)} | ${String(err.expectedIndex).padStart(8)} | ${String(err.actualIndex).padStart(6)} | ${String(err.lastIndex).padStart(10)} | ${err.timestamp}` + ) + }) + + fs.writeFileSync(errorReportPath, errorLines.join('\n'), 'utf-8') + console.log(` - Error report: ${errorReportPath}`) + } + + console.log('\n✅ All done!') +} + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/nodeConvert.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/nodeConvert.js new file mode 100644 index 0000000..2dccfc3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/nodeConvert.js @@ -0,0 +1,31 @@ +// 用法: node xxx.js 源目录 目标目录 +const fs = require('fs'); +const path = require('path'); + +function copyAndRenameToHtml(srcDir, destDir) { + if (!fs.existsSync(destDir)) { + fs.mkdirSync(destDir, { recursive: true }); + } + const items = fs.readdirSync(srcDir, { withFileTypes: true }); + for (const item of items) { + const srcPath = path.join(srcDir, item.name); + if (item.isDirectory()) { + // 递归处理子文件夹 + copyAndRenameToHtml(srcPath, path.join(destDir, item.name)); + } else if (item.isFile()) { + // 修改后缀为 .html + const baseName = path.parse(item.name).name; + const destPath = path.join(destDir, baseName + '.ts.html'); + fs.copyFileSync(srcPath, destPath); + } + } +} + +// 获取命令行参数 +const [,, srcDir, destDir] = process.argv; +if (!srcDir || !destDir) { + console.log('用法: node xxx.js 源目录 目标目录'); + process.exit(1); +} +copyAndRenameToHtml(srcDir, destDir); +console.log('处理完成!'); \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/release_note.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/release_note.js new file mode 100644 index 0000000..1c564eb --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/release_note.js @@ -0,0 +1,96 @@ +const path = require('path') +const yaml = require('js-yaml') +const fsP = require('fs/promises') +const fs = require('fs') +const cp = require('child_process') +const util = require('util') +const exec = util.promisify(cp.exec) + +async function make_release_note_all() { + try { + // 获取并处理Git标签列表 + const ret = await exec('"git" tag -l --sort=-v:refname') + let tagList = ret.stdout.match(/v\d+\.\d+\.\d+/g) // 匹配形如 'v1.0.0' 的版本号 + + if (!tagList) { + console.error('No tags found for release note generation.') + return + } + + //tag start from v0.8.4, ignore before v0.8.4 + tagList = tagList.splice(0, tagList.indexOf('v0.8.4') + 1) + + // 读取现有文件内容 + const releaseNotePath = path.join(__dirname, '..', 'docs', 'en', 'dev', 'releases_note.md') + let existingContent = '' + let fileExists = false + try { + existingContent = await fsP.readFile(releaseNotePath, 'utf-8') + fileExists = true + } catch (error) { + console.log('No existing release note file found, creating new one') + } + + // 检查当前commit是否有tag + const { stdout: currentTag } = await exec('"git" tag --points-at HEAD') + const hasCurrentTag = currentTag.trim() !== '' + + let newContent = '' + + if (!hasCurrentTag) { + // 如果当前commit没有tag,添加Unreleased部分 + const latestTag = tagList[0] + newContent += `## Unreleased\n` + newContent += `Changes since ${latestTag}:\n\n` + + // 获取从最新tag到现在的提交记录 + const LOG_FORMAT = '%Cgreen*%Creset %s' + const latestLogs = await exec( + `"git" log --no-merges ${latestTag}..HEAD --format="${LOG_FORMAT}" --date=short` + ) + + // 处理最新的提交记录 + for (let log of latestLogs.stdout.split('\n')) { + if (/^\s*\*\s+\[(.*?)\]:/.test(log)) { + log = log.replace(/(https:\/\/\S+)/g, '[$1]($1)') + for (let i = 1; i < log.length; i++) { + if (log[i] === '[' && i != 0 && log[i+1]!='h') { + newContent += '\n* ' + } + newContent += log[i] + } + } + } + newContent += '\n---\n\n' + } + + // 合并新内容和现有内容 + let finalContent + if (fileExists) { + // 如果文件存在,保留标题,只替换内容部分 + const titleMatch = existingContent.match(/^# EcuBus-Pro Release Notes\r?\n/) + if (titleMatch) { + // 保留标题,移除现有内容,添加新内容 + finalContent = titleMatch[0] + newContent + existingContent.replace(/^# EcuBus-Pro Release Notes\r?\n/, '') + } else { + // 如果没有找到标题,添加标题 + finalContent = '# EcuBus-Pro Release Notes\n\n' + newContent + existingContent + } + } else { + // 如果文件不存在,创建新文件并添加标题 + finalContent = '# EcuBus-Pro Release Notes\n\n' + newContent + existingContent + } + + // 写入Markdown文件 + await fsP.writeFile(releaseNotePath, finalContent) + } catch (error) { + console.error('Error generating release note:', error) + } +} + +module.exports = make_release_note_all +if (require.main === module) { + make_release_note_all() +} + + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/udp_multicast_send.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/udp_multicast_send.js new file mode 100644 index 0000000..4774abf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/udp_multicast_send.js @@ -0,0 +1,125 @@ +const dgram = require('dgram'); + +// 配置参数 +const INTERFACE_IP = '192.168.6.63'; // 网卡 IP +const MULTICAST_ADDRESS = '224.224.224.245'; // 组播地址 +const PORT = 30490; // 端口号 + +// 创建 UDP socket +const socket = dgram.createSocket({ type: 'udp4', reuseAddr: true }); + +// Socket 错误处理 +socket.on('error', (err) => { + console.error('Socket error:', err); + socket.close(); +}); + +// Socket 消息监听(用于接收组播数据) +socket.on('message', (msg, rinfo) => { + console.log(`[${new Date().toISOString()}] Received multicast message:`); + console.log(` From: ${rinfo.address}:${rinfo.port}`); + console.log(` Length: ${msg.length} bytes`); + console.log(` Data (hex): ${msg.toString('hex')}`); + console.log(` Data (string): ${msg.toString('utf8')}`); + console.log('---'); +}); + +// Socket 监听完成 +socket.on('listening', () => { + const address = socket.address(); + console.log(`Socket listening on ${address.address}:${address.port}`); + console.log(`Interface: ${INTERFACE_IP}`); + console.log(`Multicast address: ${MULTICAST_ADDRESS}:${PORT}`); +}); + +// 绑定到端口(在 Windows 上绑定到 0.0.0.0 可能更可靠) +// 注意:某些情况下绑定到特定 IP 可能不工作,可以尝试绑定到 0.0.0.0 +socket.bind(PORT, () => { + try { + // 设置组播 TTL (Time To Live) - 仅用于发送 + socket.setMulticastTTL(128); + + // 设置组播接口(绑定到指定的网卡)- 用于发送 + // 在 Windows 上,可以尝试使用接口索引或 IP 地址 + try { + socket.setMulticastInterface(INTERFACE_IP); + console.log(`Multicast interface set to: ${INTERFACE_IP}`); + } catch (err) { + console.warn(`Warning: Could not set multicast interface: ${err.message}`); + console.warn('Trying without explicit interface setting...'); + } + + // 必须加入组播组才能接收数据! + try { + socket.addMembership(MULTICAST_ADDRESS, INTERFACE_IP); + console.log(`Joined multicast group: ${MULTICAST_ADDRESS} on interface ${INTERFACE_IP}`); + } catch (err) { + console.warn(`Warning: Could not join multicast on specific interface: ${err.message}`); + console.warn('Trying to join without specifying interface...'); + try { + socket.addMembership(MULTICAST_ADDRESS); + console.log(`Joined multicast group: ${MULTICAST_ADDRESS} (default interface)`); + } catch (err2) { + console.error('Failed to join multicast group:', err2); + throw err2; + } + } + + // 设置组播回环(允许接收自己发送的数据) + // socket.setMulticastLoopback(true); + + console.log('Socket bound and ready for multicast receiving/sending'); + console.log('Waiting for multicast messages...\n'); + + // 发送组播消息示例(可选) + // sendMulticastMessage('Hello from UDP multicast sender!'); + + // 定期发送消息(可选) + // setInterval(() => { + // const message = `Multicast message at ${new Date().toISOString()}`; + // sendMulticastMessage(message); + // }, 1000); + } catch (err) { + console.error('Error setting up multicast:', err); + socket.close(); + process.exit(1); + } +}); + +// 发送组播消息的函数 +function sendMulticastMessage(message) { + const messageBuffer = Buffer.from(message); + + socket.send( + messageBuffer, + 0, + messageBuffer.length, + PORT, + MULTICAST_ADDRESS, + (err) => { + if (err) { + console.error('Error sending multicast message:', err); + } else { + console.log(`Sent multicast message: ${message}`); + } + } + ); +} + +// 优雅退出处理 +process.on('SIGINT', () => { + console.log('\nClosing socket...'); + socket.close(() => { + console.log('Socket closed'); + process.exit(0); + }); +}); + +process.on('SIGTERM', () => { + console.log('\nClosing socket...'); + socket.close(() => { + console.log('Socket closed'); + process.exit(0); + }); +}); + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/upload.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/upload.js new file mode 100644 index 0000000..4555c30 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/upload.js @@ -0,0 +1,85 @@ +const OSS = require('ali-oss') +const path = require('path') +const fsP = require('fs').promises +const make_release_note_all = require('./release_note') + + + +require('dotenv').config() +const sw = new OSS({ + endpoint: 'oss-accelerate.aliyuncs.com', + accessKeyId: process.env.ALIYUN_ACCESS_KEY_ID, + accessKeySecret: process.env.ALIYUN_ACCESS_KEY_SECRET, + bucket: 'ecubus' +}) + +const yml = require('yaml') + + + +async function putDir(dir,prefix) { + const files = await fsP.readdir(dir, { withFileTypes: true }) + for (const file of files) { + const filePath = path.join(dir, file.name) + if (file.isDirectory()) { + await putDir(filePath,`${prefix}/${file.name}`) + } else { + await sw.put(`${prefix}/${file.name}`, filePath) + console.log(`${prefix}/${file.name} pushed ok`) + } + } +} + +async function put(list) { + console.log(list) + //put dist folder + if(list.includes('--page')){ + const dist = path.join(__dirname, '..', '.vitepress','dist') + await putDir(dist,'app/dist') + const api = path.join(__dirname, '..', 'resources', 'docs','scriptApi') + await putDir(api,'app/scriptApi') + } + + + + + // tag need match v\d+\.\d+\.\d+$ + if(list.includes('--note')){ + // await make_release_note_all() + const releasePath = path.join(__dirname, '..', 'docs', 'en', 'dev', 'releases_note.md') + await sw.put('app/releases_note.md', releasePath) + console.log('releases_note.md pushed ok') + } + + if(list.includes('--app')){ + + const yamlPath = path.join(__dirname, '..', 'dist', 'latest.yml') + await sw.put(`app/latest.yml`, yamlPath) + console.log('latest.yml pushed ok') + + //read yaml + const content = await fsP.readFile(yamlPath, 'utf-8') + const yaml = yml.parse(content) + + const version = yaml.version + const options = { + partSize: 1000 * 1024, //设置分片大小 + timeout: 120000 //设置超时时间 + } + const exePath = path.join(__dirname, '..', 'dist', `EcuBus-Pro ${version}.exe`) + + await sw.multipartUpload(`app/EcuBus-Pro ${version}.exe`, exePath, options) + console.log('EcuBus-Pro.exe pushed ok') + + //symbol link + //await sw.putSymlink(`app/EcuBus-Pro.exe`, `app/EcuBus-Pro ${version}.exe`); + + const blockPath = path.join(__dirname, '..', 'dist', `EcuBus-Pro ${version}.exe.blockmap`) + await sw.put(`app/EcuBus-Pro ${version}.exe.blockmap`, blockPath) + console.log('EcuBus-Pro.exe.blockmap pushed ok') + } + + process.exit(0) +} +put(process.argv.slice(2)) + diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/ws.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/ws.js new file mode 100644 index 0000000..b8710fa --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tools/ws.js @@ -0,0 +1,19 @@ +const socket = new WebSocket('ws://localhost:9002'); +// Executes when the connection is successfully established. +socket.addEventListener('open', event => { + console.log('WebSocket connection established!'); + // Sends a message to the WebSocket server. + socket.send('Hello Server!'); +}); +// Listen for messages and executes when a message is received from the server. +socket.addEventListener('message', event => { + console.log('Message from server: ', event.data); +}); +// Executes when the connection is closed, providing the close code and reason. +socket.addEventListener('close', event => { + console.log('WebSocket connection closed:', event.code, event.reason); +}); +// Executes if an error occurs during the WebSocket communication. +socket.addEventListener('error', error => { + console.error('WebSocket error:', error); +}); diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.json new file mode 100644 index 0000000..976ad4b --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.json @@ -0,0 +1,5 @@ +{ + "files": [], + "references": [{ "path": "./tsconfig.node.json" }, { "path": "./tsconfig.web.json" }] + +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.node.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.node.json new file mode 100644 index 0000000..afe2f95 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.node.json @@ -0,0 +1,35 @@ +{ + "extends": "@electron-toolkit/tsconfig/tsconfig.node.json", + "include": [ + "electron.vite.config.*", + "src/main/**/*.ts", + "src/cli/**/*.ts", + "src/preload/**/*", + "test/**/*.ts", + "src/renderer/src/database/**/*.ts", + "src/renderer/src/worker/**/*.ts", + "src/renderer/src/views/ostrace/**/*.ts" + ], + "compilerOptions": { + "moduleResolution": "bundler", + "composite": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "resolveJsonModule": true, + "isolatedModules": true, + "noImplicitAny":true, + "forceConsistentCasingInFileNames": true, + "allowSyntheticDefaultImports":true, + "strict": true, + "types": [ + "electron-vite/node" + ], + "paths": { + "*": ["./*"], + "nodeCan/*": [ + "./src/main/share/*" + ] + } + }, + +} \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.sdk.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.sdk.json new file mode 100644 index 0000000..273bab0 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.sdk.json @@ -0,0 +1,20 @@ +{ + "extends": "@electron-toolkit/tsconfig/tsconfig.web.json", + "include": [ + "src/renderer/src/plugin-sdk/**/*.ts", + "src/preload/*.d.ts", + ], + "compilerOptions": { + "composite": false, + "baseUrl": ".", + "noUnusedLocals": false, + "noUnusedParameters": false, + "resolveJsonModule": true, + "skipLibCheck": true, + "paths": { + "@r/*": [ + "src/renderer/src/*" + ] + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.web.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.web.json new file mode 100644 index 0000000..b0d000e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.web.json @@ -0,0 +1,26 @@ +{ + "extends": "@electron-toolkit/tsconfig/tsconfig.web.json", + "include": [ + "src/renderer/src/env.d.ts", + "src/renderer/src/**/*", + "src/renderer/src/**/*.vue", + "src/preload/*.d.ts", + "src/main/share/*", + ], + "files": ["package.json"], + "compilerOptions": { + "composite": true, + "baseUrl": ".", + "noUnusedLocals":false, + "noUnusedParameters":false, + "resolveJsonModule": true, + "paths": { + "@r/*": [ + "src/renderer/src/*" + ], + "nodeCan/*": [ + "src/main/share/*" + ] + } + } +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.worker.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.worker.json new file mode 100644 index 0000000..dc75ceb --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/tsconfig.worker.json @@ -0,0 +1,48 @@ +{ + "compilerOptions": { + "composite": true, + "target": "esnext", + "module": "esnext", + "sourceMap": false, + "strict": true, + "jsx": "preserve", + "allowJs": true, + "esModuleInterop": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "declaration": true, + "types": ["node"], + "baseUrl": ".", + "outDir": "./dist", + "paths": { + "nodeCan/*": [ + "src/main/share/*" + ], + "src/*": [ + "./src/*" + ] + } + }, + "ts-node": { + "compilerOptions": { + "module": "commonjs" + } + }, + "include": [ + "src/main/share/*.ts", + "src/main/worker/*.d.ts", + "src/main/worker/*.ts", + "src/renderer/src/database/dbc/*.ts", + "src/renderer/src/database/ldf/*.ts" + ], + "exclude": [ + "src/main/pluginCilent.ts", + "src/renderer/src/database/ldfParse.ts", + "src/renderer/src/database/dbcParse.ts", + "src/renderer/src/database/dbc/parse.ts", + "src/renderer/src/database/ortiParse.ts" + ] +} \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/typedoc.json b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/typedoc.json new file mode 100644 index 0000000..905e86d --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/typedoc.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "entryPoints": ["./src/main/worker/index.ts"], + "disableSources": true, + "out": "./resources/docs/scriptApi", + "name": "EcuBus-Pro Script API Documentation", + "readme": "docs/en/um/script/script.md", + "skipErrorChecking": true, + "navigationLinks": { + "Home": "https://app.whyengineer.com", + "GitHub": "https://github.com/ecubus/EcuBus-Pro" + }, + "favicon": "./resources/icon.png", + "navigation": { + "includeCategories": true + }, + "hostedBaseUrl": "https://app.whyengineer.com/scriptApi" +} diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/vite.sdk.config.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/vite.sdk.config.ts new file mode 100644 index 0000000..46f5ab5 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/vite.sdk.config.ts @@ -0,0 +1,68 @@ +import { resolve } from 'path' +import { defineConfig } from 'vite' +import dts from 'vite-plugin-dts' +import { copyFileSync, mkdirSync } from 'fs' +import { dirname } from 'path' + +export default defineConfig({ + // 禁止复制 public 目录(库模式不需要静态资源) + publicDir: false, + build: { + lib: { + // 入口文件 + entry: resolve(__dirname, 'src/renderer/src/plugin-sdk/index.ts'), + // 只生成ESM格式 + formats: ['es'], + // 输出文件名 + fileName: 'index' + }, + rollupOptions: { + // 确保外部化依赖,不打包进库中 + external: ['vue'] + }, + // 输出目录 + outDir: resolve(__dirname, 'src/renderer/src/plugin-sdk/dist'), + // 清空输出目录 + emptyOutDir: true, + // 生成sourcemap + sourcemap: true, + // 目标环境 + target: 'esnext' + }, + resolve: { + alias: { + '@r': resolve(__dirname, 'src/renderer/src') + } + }, + plugins: [ + // 生成.d.ts类型声明文件 + dts({ + tsconfigPath: resolve(__dirname, 'tsconfig.sdk.json'), + outDir: resolve(__dirname, 'src/renderer/src/plugin-sdk/dist'), + rollupTypes: true, + copyDtsFiles: false, + logLevel: 'error', + // 内联打包 mitt 的类型定义 + bundledPackages: ['mitt'] + }), + // 自动复制生成的文件到 resources 目录 + { + name: 'copy-sdk-to-resources', + closeBundle() { + const sourceFile = resolve(__dirname, 'src/renderer/src/plugin-sdk/dist/index.mjs') + const targetFile = resolve(__dirname, 'resources/lib/js/sdk.mjs') + const targetDir = dirname(targetFile) + + try { + // 确保目标目录存在 + mkdirSync(targetDir, { recursive: true }) + // 复制文件 + copyFileSync(sourceFile, targetFile) + console.log(`✓ SDK 已复制到: ${targetFile}`) + } catch (error) { + console.error('复制 SDK 文件失败:', error) + } + } + } + ] +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/vitest.config.ts b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/vitest.config.ts new file mode 100644 index 0000000..db8ef4f --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/vitest.config.ts @@ -0,0 +1,69 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import path, { resolve } from 'path' +import fs from 'fs/promises' +import { normalizePath, Plugin } from 'vite' + +export const nodejsPolarsDirnamePlugin = () => { + const name = 'nodejs-polars-dirname-plugin' + return { + name, + + transform(code: string, id: string) { + // aim for the node_modules/nodejs-polars/bin/native-polars.js file + if (id.endsWith('.node')) { + const file = path.basename(id) + return ` + // create a custom require function to load .node files + import { createRequire } from 'module'; + const customRequire = createRequire(import.meta.url) + + // load the .node file expecting it to be in the same directory as the output bundle + const content = customRequire('./${file}') + + // export the content straight back out again + export default content + ` + } else if (id.includes('?asset')) { + const file = path.basename(id) + // Remove query parameters + const cleanFile = file.split('?')[0] + return ` + import { join } from 'path' + export default join(__dirname, "${cleanFile}") + ` + } else if (id.includes('?asarUnpack')) { + const file = path.basename(id) + // Remove query parameters + const cleanFile = file.split('?')[0] + return ` + import { join } from 'path' + export default join(__dirname, "${cleanFile}") + ` + } + // else return the original code (leave code unrelated to nodejs-polars untouched) + return code + } + } +} + +//export default mergeConfig(config.main as any, defineConfig({ +export default defineConfig({ + resolve: { + alias: { + '@r': resolve('src/renderer/src'), + nodeCan: resolve(__dirname, 'src/main/share'), + src: resolve(__dirname, 'src') + } + }, + test: { + // 全局设置文件,在所有测试文件运行前执行 + setupFiles: ['./test/setup.ts'] + // 或者使用 setupFilesAfterEnv,在测试环境设置后执行 + // setupFilesAfterEnv: ['./test/setup-after-env.ts'], + // 全局设置,在整个测试套件开始前执行一次 + // globalSetup: './test/global-setup.ts', + // 全局清理,在整个测试套件结束后执行一次 + // globalTeardown: './test/global-teardown.ts', + }, + plugins: [nodejsPolarsDirnamePlugin()] +}) diff --git a/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/webpack.config.js b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/webpack.config.js new file mode 100644 index 0000000..16b0942 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/EcuBus-Pro/webpack.config.js @@ -0,0 +1,248 @@ +const path = require('path'); +const webpack = require('webpack'); +const fs=require('fs'); +const { rollup } = require('rollup'); +const nodeResolve = require('@rollup/plugin-node-resolve'); +const dts = require('rollup-plugin-dts').default; +// const {generateDtsBundle}=require('dts-bundle-generator'); + +async function bundleDts( + input, + output + ) { + try { + // 创建 bundle + const bundle = await rollup({ + input, + plugins: [ + nodeResolve(), + dts() + ] + }); + + // 写入文件 + await bundle.write({ + file: output, + format: 'es' + }); + + // 清理 + await bundle.close(); + + console.log('Successfully bundled .d.ts files'); + } catch (error) { + console.error('Error bundling .d.ts files:', error); + throw error; + } + } +class MyCustomPlugin { + apply(compiler) { + // 当Webpack完成构建过程后执行 + compiler.hooks.done.tap('MyCustomPlugin',async (stats) => { + + // Copy bundled artifacts (single worker bundle + plugin bundle) + const jsList=['index.js','index.js.map','plugin.js','plugin.js.map'] + for(const js of jsList){ + const src = path.resolve(__dirname,'dist',js) + const dest = path.resolve(__dirname,'resources','lib','js',js) + if(fs.existsSync(src)){ + fs.copyFileSync(src,dest) + } + } + + + if(process.platform=='win32'){ + //check sa.node exists + if(fs.existsSync(path.resolve(__dirname,'dist','sa.node'))){ + fs.copyFileSync(path.resolve(__dirname,'dist','sa.node'),path.resolve(__dirname,'resources','lib','js','sa.node')) + } + } + // //copy precision_timer.node + // fs.copyFileSync(path.resolve(__dirname,'dist','precision_timer.node'),path.resolve(__dirname,'resources','lib','js','precision_timer.node')) + + + + // Copy canopen .d.ts files to dist so rollup can resolve them + const canopenSrcDir = path.resolve(__dirname,'src/main/worker/canopen') + const canopenDistDir = path.resolve(__dirname,'dist/src/main/worker/canopen') + fs.cpSync(canopenSrcDir, canopenDistDir, { + recursive: true, + filter: (src) => fs.statSync(src).isDirectory() || src.endsWith('.d.ts') + }) + + // merge worker typings into one worker.d.ts + const workerDtsEntry = path.resolve(__dirname,'dist','src/main/worker','index.d.ts') + const workerBundledDts = path.resolve(__dirname,'dist','src/main/worker','index.bundled.d.ts') + + await bundleDts(workerDtsEntry,workerBundledDts) + let content=fs.readFileSync(workerBundledDts,'utf-8') + const globalDtsPath = path.resolve(__dirname,'src','main','worker','global.d.ts') + if(fs.existsSync(globalDtsPath) && !content.includes('declare global {')){ + let globalContent = fs.readFileSync(globalDtsPath,'utf-8') + globalContent = globalContent + .replace(/\/\* eslint-disable no-var \*\/\r?\n?/g,'') + .replace(/import\s+\{[^}]+\}\s+from\s+['"][^'"]+['"]\s*;?\r?\n?/g,'') + .replace(/export\s+\{\}\s*;?\r?\n?/g,'') + .trim() + content = `${globalContent}\n\n${content}` + } + //reaplace + // content=content.replace("import { ServiceItem } from '../share/uds';",'') + // content=content.replace("service: ServiceItem;","") + // content=content.replace('declare const selfDescribe: typeof describe.only;','declare const selfDescribe: typeof describe;') + // content=content.replace("constructor(service: ServiceItem, isRequest: boolean, data?: Buffer);","") + content=content.replace('declare const serviceList: readonly ["{{{serviceName}}}"];', +`declare const serviceList: readonly [ + {{#each this.services}} + "{{this}}", + {{/each}} +];` + ) + content=content.replace('declare const testerList: readonly ["{{{testerName}}}"];', +`declare const testerList: readonly [ + {{#each this.testers}} + "{{this}}", + {{/each}} +];`) + content=content.replace('declare const allServicesSend: readonly ["{{{serviceName}}}.send"];', +`declare const allServicesSend: readonly [ + {{#each this.services}} + "{{this}}.send", + {{/each}} +];`) + content=content.replace('declare const allServicesPreSend: readonly ["{{{serviceName}}}.preSend"];', +`declare const allServicesPreSend: readonly [ + {{#each this.services}} + "{{this}}.preSend", + {{/each}} +];`) + content=content.replace('declare const allServicesRecv: readonly ["{{{serviceName}}}.recv"];', +`declare const allServicesRecv: readonly [ + {{#each this.services}} + "{{this}}.recv", + {{/each}} +];`) + content=content.replace( +`interface Jobs { + string: (data: Buffer) => string; +}`, +`interface Jobs { +{{#each this.jobs}} + "{{this.name}}": ({{#each this.param}}{{this}},{{/each}}) => DiagRequest[]|Promise; +{{/each}} +}`) + + content=content.replace( + `declare const allSignal: readonly ["{{{signalName}}}"];`, +`declare const allSignal: readonly [ + {{#each this.signals}} + "{{this}}", + {{/each}} +];`) + + + content=content.replace( +`type VariableMap = { + stub: number; +};`, +`type VariableMap = { + "*":number|string|number[], + {{#each this.variables}} + "{{this.name}}":{{this.type}}, + {{/each}} +};`) + + content=content.replace('declare const allUdsSeq: readonly ["{{{udsSeqName}}}"];', +`declare const allUdsSeq: readonly [ + {{#each this.udsSeqName}} + "{{this}}", + {{/each}} +]; + +{{#each this.frames}} +export interface {{this.name}} { + {{#each this.signals}} + {{this.name}}:{{#if (eq ../type 'can')}}CanSignal{{else}}LinSignaal{{/if}}, + {{/each}} +} +{{/each}} +`) + fs.writeFileSync(path.resolve(__dirname,'src','main','share','index.d.ts.html'),content) + + //bundle plugin.d.ts + const pluginFile=path.resolve(__dirname,'dist','src/main/plugin-sdk','index.d.ts') + await bundleDts(pluginFile,path.resolve(__dirname,'src','main','plugin-sdk','dist','index.d.ts')) + + //copy plugin.js to plugin-sdk dist directory + fs.copyFileSync(path.resolve(__dirname,'dist','plugin.js'),path.resolve(__dirname,'src','main','plugin-sdk','dist','index.cjs')) + + // fs.writeFileSync(path.resolve(__dirname,'src','share','cryptoExt.d.ts.html'),v[0]) + console.log('构建过程完成!'); + + }); + } +} + + + +module.exports = { + entry: { + index:path.resolve(__dirname,'src/main/worker') + '/index.ts', + plugin:path.resolve(__dirname,'src/main/plugin-sdk') + '/index.ts', + + }, + output: { + path: path.resolve(__dirname,'dist'), + filename: '[name].js', + library: { + type: 'commonjs', + }, + sourceMapFilename: '[name].js.map' + }, + externalsPresets: { + node: true, + }, + target: 'node', + plugins: [ + new MyCustomPlugin(), + // 添加条件编译插件 + new webpack.DefinePlugin({ + 'process.platform': JSON.stringify(process.platform), + }) + ], + module: { + rules: [ + { + test: /\.node$/, + use: [{ + loader: 'node-loader', + options: { + name: '[name].[ext]', + } + }] + }, + { + test: /\.ts$/, + use: [{ + loader: 'ts-loader', + options: { + configFile: "tsconfig.worker.json", + compilerOptions: { + sourceMap: true + } + } + }], + exclude: /node_modules/, + }, + + ] + }, + resolve: { + extensions: ['.js', '.ts'], + alias: { + 'src': path.resolve(__dirname, 'src'), + 'nodeCan': path.resolve(__dirname, 'src/main/share') + }, + }, + devtool: 'source-map' +}; \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/binary-parser b/08_Collected_MultiPROG_Scripts/GitHub/binary-parser new file mode 160000 index 0000000..d7dc356 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/binary-parser @@ -0,0 +1 @@ +Subproject commit d7dc356679f393e767ef11f6c9eddfb0240e89e6 diff --git a/08_Collected_MultiPROG_Scripts/GitHub/gist_bryc_checksums/bryc_checksum_algorithms.js b/08_Collected_MultiPROG_Scripts/GitHub/gist_bryc_checksums/bryc_checksum_algorithms.js new file mode 100644 index 0000000..7ad42bf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/gist_bryc_checksums/bryc_checksum_algorithms.js @@ -0,0 +1,83 @@ +// BSD-16 +// From: en.wikipedia.org/wiki/BSD_checksum +function bsd16(data) { + for(var i = 0, c = 0; i < data.length; i++) { + c = (c>>1) + ((c&1) << 15); + c += data[i]; + c &= 0xffff; + } + return c; +} + +// Fletcher-16 +// Modulo 255 version, might be incorrect/incomplete. From: en.wikipedia.org/wiki/Fletcher's_checksum +function fletcher16a(data) { + var a = 0, b = 0; + for (var i = 0; i < data.length; i++) { + a = (a + data[i]) % 255; + b = (b + a) % 255; + } + return a | (b << 8); +} + +// Fletcher-16 +// More complicated version +function fletcher16(buf) { + var sum1 = 0xff, sum2 = 0xff; + var i = 0; + var len = buf.length; + + while (len) { + var tlen = len > 20 ? 20 : len; + len -= tlen; + do { + sum2 += sum1 += buf[i++]; + } while (--tlen); + sum1 = (sum1 & 0xff) + (sum1 >> 8); + sum2 = (sum2 & 0xff) + (sum2 >> 8); + } + sum1 = (sum1 & 0xff) + (sum1 >> 8); + sum2 = (sum2 & 0xff) + (sum2 >> 8); + return sum2 << 8 | sum1; +} + +// Fletcher-32 +// May operate on 16-bit words (not bytes). +function fletcher32(data) { + var _sum1 = 0xffff, _sum2 = 0xffff; + var words = data.length; + var dataIndex = 0; + while (words) { + var tlen = words > 359 ? 359 : words; + words -= tlen; + do { + _sum2 += _sum1 += data[dataIndex++]; + } while (--tlen); + _sum1 = ((_sum1 & 0xffff) >>> 0) + (_sum1 >>> 16); + _sum2 = ((_sum2 & 0xffff) >>> 0) + (_sum2 >>> 16); + } + _sum1 = ((_sum1 & 0xffff) >>> 0) + (_sum1 >>> 16); + _sum2 = ((_sum2 & 0xffff) >>> 0) + (_sum2 >>> 16); + return ((_sum2 << 16) >>> 0 | _sum1) >>> 0; +} + +// Adler-32 +function adler32(data) { + var a = 1, b = 0; + for (var i = 0; i < data.length; i++) { + a = (a + data[i]) % 65521; + b = (b + a) % 65521; + } + return a | (b << 16); +} + +// FNV-32 (0 = FNV-0, 1 = FNV-1, 2 = FNV-1a) +function fnv32(data, mode = 2) { + var hash = mode ? 0x811c9dc5 : 0; + for (var i = 0; i < data.length; i++) { + (mode == 2) && (hash ^= data[i]); + hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24); + (mode < 2) && (hash ^= data[i]); + } + return hash >>> 0; +} \ No newline at end of file diff --git a/08_Collected_MultiPROG_Scripts/GitHub/gist_diachedelic_crc32/diachedelic_crc32.js b/08_Collected_MultiPROG_Scripts/GitHub/gist_diachedelic_crc32/diachedelic_crc32.js new file mode 100644 index 0000000..42c34e3 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/GitHub/gist_diachedelic_crc32/diachedelic_crc32.js @@ -0,0 +1,40 @@ +// A CRC32 checksum implementation. It can be used to detect data corruption. +// The 'byte_array' parameter is a Uint8Array, the return value is a signed 32 +// bit integer. If you are checksumming a stream of data, pass the last known +// checksum as the 'checksum' parameter. + +/*jslint bitwise */ + +const table = (function () { + let values = new Int32Array(256); + let value_nr = 0; + while (value_nr < 256) { + let c = value_nr; + let iteration = 0; + while (iteration < 8) { + c = ( + c & 1 + ? 0xEDB88320 ^ (c >>> 1) + : c >>> 1 + ); + iteration += 1; + } + values[value_nr] = c; + value_nr += 1; + } + return values; +}()); + +function crc32(byte_array, checksum = 0) { + checksum ^= 0xFFFFFFFF; + let byte_nr = 0; + while (byte_nr < byte_array.length) { + checksum = (checksum >>> 8) ^ table[ + (checksum ^ byte_array[byte_nr]) & 0xFF + ]; + byte_nr += 1; + } + return checksum ^ 0xFFFFFFFF; +} + +export default Object.freeze(crc32); diff --git a/08_Collected_MultiPROG_Scripts/Original/01_read_only_inspector.mjs b/08_Collected_MultiPROG_Scripts/Original/01_read_only_inspector.mjs new file mode 100644 index 0000000..fdff63e --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/01_read_only_inspector.mjs @@ -0,0 +1,2 @@ +import { bytesToHex, asciiPreview, countByte, crc32 } from "../binary_utils.mjs"; +export function inspect(data){return {length:data.length,first32:bytesToHex(data.slice(0,32)),ascii:asciiPreview(data.slice(0,64)),ffBytes:countByte(data,0xFF),crc32:crc32(data).toString(16).padStart(8,"0").toUpperCase()};} diff --git a/08_Collected_MultiPROG_Scripts/Original/02_double_read_verifier.mjs b/08_Collected_MultiPROG_Scripts/Original/02_double_read_verifier.mjs new file mode 100644 index 0000000..34352da --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/02_double_read_verifier.mjs @@ -0,0 +1,2 @@ +import { constantTimeEqual, crc32 } from "../binary_utils.mjs"; +export function verifyTwoReads(a,b){return {sameLength:a.length===b.length,identical:constantTimeEqual(a,b),crcA:crc32(a),crcB:crc32(b)};} diff --git a/08_Collected_MultiPROG_Scripts/Original/03_pattern_inventory.mjs b/08_Collected_MultiPROG_Scripts/Original/03_pattern_inventory.mjs new file mode 100644 index 0000000..73c0153 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/03_pattern_inventory.mjs @@ -0,0 +1,2 @@ +import { findPattern, hexToBytes } from "../binary_utils.mjs"; +export function inventory(data,patterns){return patterns.map(p=>({label:p.label,offsets:findPattern(data,hexToBytes(p.hex))}));} diff --git a/08_Collected_MultiPROG_Scripts/Original/04_allowlisted_patch_demo.mjs b/08_Collected_MultiPROG_Scripts/Original/04_allowlisted_patch_demo.mjs new file mode 100644 index 0000000..c1e41fd --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/04_allowlisted_patch_demo.mjs @@ -0,0 +1,3 @@ +import { cloneBytes, allowListedWrite, diffRanges } from "../binary_utils.mjs"; +// Synthetic demonstration only. No vehicle-security data or real module offsets. +export function demo(input){const output=cloneBytes(input);allowListedWrite(output,4,new Uint8Array([0xAA,0x55]),[{start:4,end:5}]);return {output,changes:diffRanges(input,output)};} diff --git a/08_Collected_MultiPROG_Scripts/Original/05_checksum_test_vectors.mjs b/08_Collected_MultiPROG_Scripts/Original/05_checksum_test_vectors.mjs new file mode 100644 index 0000000..9a0b867 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/05_checksum_test_vectors.mjs @@ -0,0 +1,2 @@ +import { hexToBytes,crc16CcittFalse,crc32,adler32 } from "../binary_utils.mjs"; +export function selfTest(){const d=new TextEncoder().encode("123456789");return {crc16Ok:crc16CcittFalse(d)===0x29B1,crc32Ok:crc32(d)===0xCBF43926,adler32:adler32(d)};} diff --git a/08_Collected_MultiPROG_Scripts/Original/06_authorized_job_record_validator.mjs b/08_Collected_MultiPROG_Scripts/Original/06_authorized_job_record_validator.mjs new file mode 100644 index 0000000..441c3d9 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/06_authorized_job_record_validator.mjs @@ -0,0 +1,2 @@ +const REQUIRED=["caseId","customerName","vehicleVin","proofOfOwnershipRef","authorizationRef","technician","timestampUtc","requestedService"]; +export function validateAuthorizedJob(job){const missing=REQUIRED.filter(k=>!String(job[k]??"").trim());const vinOk=/^[A-HJ-NPR-Z0-9]{17}$/.test(String(job.vehicleVin||"").toUpperCase());return {valid:missing.length===0&&vinOk,missing,vinOk};} diff --git a/08_Collected_MultiPROG_Scripts/Original/07_key_inventory_audit.mjs b/08_Collected_MultiPROG_Scripts/Original/07_key_inventory_audit.mjs new file mode 100644 index 0000000..b141227 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/07_key_inventory_audit.mjs @@ -0,0 +1,2 @@ +// Administrative inventory only. Does not calculate, extract, clone, generate or program credentials. +export function auditKeyInventory(entries){return entries.map((e,i)=>({row:i+1,assetTag:String(e.assetTag||""),type:String(e.type||""),source:String(e.source||""),sealed:Boolean(e.sealed),assigned:Boolean(e.assigned),notes:String(e.notes||"")}));} diff --git a/08_Collected_MultiPROG_Scripts/Original/08_redacted_security_report.mjs b/08_Collected_MultiPROG_Scripts/Original/08_redacted_security_report.mjs new file mode 100644 index 0000000..c1ab527 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/08_redacted_security_report.mjs @@ -0,0 +1,2 @@ +export function redact(value,keepLast=4){const s=String(value??"");return s.length<=keepLast?"*".repeat(s.length):"*".repeat(s.length-keepLast)+s.slice(-keepLast);} +export function securityReport(job){return {caseId:job.caseId,vin:redact(job.vehicleVin,6),authorizationRef:redact(job.authorizationRef,4),technician:job.technician,timestampUtc:job.timestampUtc,status:job.status};} diff --git a/08_Collected_MultiPROG_Scripts/Original/09_immo_case_intake_validator.mjs b/08_Collected_MultiPROG_Scripts/Original/09_immo_case_intake_validator.mjs new file mode 100644 index 0000000..4211931 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/09_immo_case_intake_validator.mjs @@ -0,0 +1,19 @@ +/* Authorized-shop administrative example. + Does not read, derive, calculate, program, clone, or bypass immobilizer credentials. */ +const REQUIRED = [ + "caseId", "timestampUtc", "technician", "customerName", "vehicleVin", + "proofOfOwnershipRef", "authorizationRef", "requestedService" +]; + +export function validateImmoCase(caseRecord) { + const missing = REQUIRED.filter(k => !String(caseRecord[k] ?? "").trim()); + const vin = String(caseRecord.vehicleVin ?? "").trim().toUpperCase(); + const vinValid = /^[A-HJ-NPR-Z0-9]{17}$/.test(vin); + const authorizationValid = Boolean(String(caseRecord.authorizationRef ?? "").trim()); + return { + valid: missing.length === 0 && vinValid && authorizationValid, + missing, + vinValid, + authorizationValid + }; +} diff --git a/08_Collected_MultiPROG_Scripts/Original/10_immo_module_read_consistency.mjs b/08_Collected_MultiPROG_Scripts/Original/10_immo_module_read_consistency.mjs new file mode 100644 index 0000000..ec8ff43 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/10_immo_module_read_consistency.mjs @@ -0,0 +1,18 @@ +/* Confirms that two authorized module reads are identical. + It does not locate or expose security fields. */ +import { constantTimeEqual, crc32, diffRanges } from "../../binary_utils.mjs"; + +export function compareAuthorizedReads(readA, readB) { + if (readA.length !== readB.length) { + return { valid: false, reason: "Different file lengths", lengthA: readA.length, lengthB: readB.length }; + } + const identical = constantTimeEqual(readA, readB); + return { + valid: identical, + identical, + length: readA.length, + crc32A: crc32(readA).toString(16).padStart(8, "0").toUpperCase(), + crc32B: crc32(readB).toString(16).padStart(8, "0").toUpperCase(), + changedRanges: identical ? [] : diffRanges(readA, readB) + }; +} diff --git a/08_Collected_MultiPROG_Scripts/Original/11_immo_dump_quality_report.mjs b/08_Collected_MultiPROG_Scripts/Original/11_immo_dump_quality_report.mjs new file mode 100644 index 0000000..878e4ed --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/11_immo_dump_quality_report.mjs @@ -0,0 +1,18 @@ +/* Generic dump-quality report for authorized repair intake. + Does not identify, decode, or reveal immobilizer secrets. */ +import { countByte, crc32, asciiPreview } from "../../binary_utils.mjs"; + +export function buildDumpQualityReport(data) { + if (!data.length) return { valid: false, reason: "Empty input" }; + const ff = countByte(data, 0xFF); + const zero = countByte(data, 0x00); + return { + valid: true, + length: data.length, + crc32: crc32(data).toString(16).padStart(8, "0").toUpperCase(), + ffPercent: Number((ff * 100 / data.length).toFixed(2)), + zeroPercent: Number((zero * 100 / data.length).toFixed(2)), + printablePreview: asciiPreview(data.slice(0, 64)), + warning: ff === data.length || zero === data.length ? "Input appears blank or erased" : "" + }; +} diff --git a/08_Collected_MultiPROG_Scripts/Original/12_authorized_key_count_reconciliation.mjs b/08_Collected_MultiPROG_Scripts/Original/12_authorized_key_count_reconciliation.mjs new file mode 100644 index 0000000..ca552d7 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/12_authorized_key_count_reconciliation.mjs @@ -0,0 +1,16 @@ +/* Reconciles physical key inventory for a documented job. + Does not generate, clone, learn, or program keys. */ +export function reconcileKeys(record) { + const received = Number(record.keysReceived ?? 0); + const returned = Number(record.keysReturned ?? 0); + const added = Number(record.newKeysIssued ?? 0); + const retained = Number(record.keysRetainedByShop ?? 0); + const expectedReturn = received + added - retained; + return { + received, returned, added, retained, expectedReturn, + balanced: Number.isInteger(received) && Number.isInteger(returned) && + Number.isInteger(added) && Number.isInteger(retained) && + [received, returned, added, retained].every(v => v >= 0) && + returned === expectedReturn + }; +} diff --git a/08_Collected_MultiPROG_Scripts/Original/13_security_value_redactor.mjs b/08_Collected_MultiPROG_Scripts/Original/13_security_value_redactor.mjs new file mode 100644 index 0000000..636affc --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/13_security_value_redactor.mjs @@ -0,0 +1,17 @@ +/* Redacts sensitive values in shop reports. + Raw security values should not appear in general logs. */ +export function redactSecurityValue(value, visibleTail = 4) { + const text = String(value ?? ""); + const keep = Math.max(0, Math.min(Number(visibleTail) || 0, text.length)); + return "*".repeat(text.length - keep) + text.slice(text.length - keep); +} + +export function redactRecord(record, fields) { + const copy = { ...record }; + for (const field of fields) { + if (Object.prototype.hasOwnProperty.call(copy, field)) { + copy[field] = redactSecurityValue(copy[field]); + } + } + return copy; +} diff --git a/08_Collected_MultiPROG_Scripts/Original/14_immo_backup_naming_policy.mjs b/08_Collected_MultiPROG_Scripts/Original/14_immo_backup_naming_policy.mjs new file mode 100644 index 0000000..5140b43 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/14_immo_backup_naming_policy.mjs @@ -0,0 +1,12 @@ +/* Produces a consistent, sanitized filename for authorized backups. */ +function safe(value) { + return String(value ?? "unknown").trim().replace(/[^A-Za-z0-9._-]+/g, "_").slice(0, 50); +} + +export function buildBackupName(meta) { + const stamp = safe(meta.timestampUtc).replace(/[:]/g, "-"); + return [ + safe(meta.caseId), safe(meta.vehicleVin), safe(meta.module), + safe(meta.memoryRegion), safe(meta.readNumber), stamp + ].join("_") + ".bin"; +} diff --git a/08_Collected_MultiPROG_Scripts/Original/15_immo_change_scope_guard.mjs b/08_Collected_MultiPROG_Scripts/Original/15_immo_change_scope_guard.mjs new file mode 100644 index 0000000..80845bf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/15_immo_change_scope_guard.mjs @@ -0,0 +1,18 @@ +/* Generic change-scope guard for an explicitly authorized repair plan. + Uses synthetic/configured ranges only. No real module offsets are included. */ +import { diffRanges } from "../../binary_utils.mjs"; + +function rangeInside(change, allowed) { + return change.start >= allowed.start && change.end <= allowed.end; +} + +export function validateAuthorizedChangeScope(original, modified, allowedRanges) { + const changes = diffRanges(original, modified); + const violations = changes.filter(c => !allowedRanges.some(a => rangeInside(c, a))); + return { + valid: violations.length === 0, + changes, + violations, + changedBytes: changes.reduce((n, r) => n + r.length, 0) + }; +} diff --git a/08_Collected_MultiPROG_Scripts/Original/16_immo_service_completion_audit.mjs b/08_Collected_MultiPROG_Scripts/Original/16_immo_service_completion_audit.mjs new file mode 100644 index 0000000..75c00b8 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/16_immo_service_completion_audit.mjs @@ -0,0 +1,14 @@ +/* Final administrative gate before returning the vehicle or module. */ +export function auditCompletion(job) { + const checks = { + authorizationOnFile: Boolean(job.authorizationRef), + ownershipVerified: Boolean(job.proofOfOwnershipRef), + originalBackupPreserved: Boolean(job.originalBackupHash), + duplicateReadsMatched: job.duplicateReadsMatched === true, + physicalKeysReconciled: job.physicalKeysReconciled === true, + customerAcknowledged: Boolean(job.customerAcknowledgmentRef), + securityDataRedacted: job.securityDataRedacted === true, + technicianSigned: Boolean(job.technicianSignatureRef) + }; + return { complete: Object.values(checks).every(Boolean), checks }; +} diff --git a/08_Collected_MultiPROG_Scripts/Original/binary_utils.mjs b/08_Collected_MultiPROG_Scripts/Original/binary_utils.mjs new file mode 100644 index 0000000..481ef62 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/binary_utils.mjs @@ -0,0 +1,41 @@ +/* Dependency-free binary utilities for offline testing and authorized repair work. + Verify Multi-PROG host compatibility and API signatures in Local Script > Help. */ +export function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} +export function assertRange(data, offset, length) { + requireBytes(data); + if (!Number.isInteger(offset)||!Number.isInteger(length)||offset<0||length<0||offset+length>data.length) throw new RangeError("Range outside buffer"); +} +export function cloneBytes(data){ requireBytes(data); return new Uint8Array(data); } +export function sliceBytes(data,offset,length){ assertRange(data,offset,length); return data.slice(offset,offset+length); } +export function bytesToHex(data,separator=" "){ requireBytes(data); return Array.from(data,b=>b.toString(16).padStart(2,"0")).join(separator).toUpperCase(); } +export function hexToBytes(text){ + const s=String(text).replace(/[^0-9a-f]/gi,""); + if(s.length%2) throw new Error("Hex text must contain complete bytes"); + const out=new Uint8Array(s.length/2); for(let i=0;ib>=32&&b<=126?String.fromCharCode(b):replacement).join(""); } +export function readU16LE(d,o){assertRange(d,o,2);return d[o]|(d[o+1]<<8);} +export function readU16BE(d,o){assertRange(d,o,2);return (d[o]<<8)|d[o+1];} +export function readU32LE(d,o){assertRange(d,o,4);return (d[o]|d[o+1]<<8|d[o+2]<<16|d[o+3]<<24)>>>0;} +export function readU32BE(d,o){assertRange(d,o,4);return ((d[o]<<24)|(d[o+1]<<16)|(d[o+2]<<8)|d[o+3])>>>0;} +export function writeU16LE(d,o,v){assertRange(d,o,2);d[o]=v&255;d[o+1]=(v>>>8)&255;} +export function writeU16BE(d,o,v){assertRange(d,o,2);d[o]=(v>>>8)&255;d[o+1]=v&255;} +export function writeU32LE(d,o,v){assertRange(d,o,4);for(let i=0;i<4;i++)d[o+i]=(v>>>(8*i))&255;} +export function writeU32BE(d,o,v){assertRange(d,o,4);for(let i=0;i<4;i++)d[o+i]=(v>>>(8*(3-i)))&255;} +export function findPattern(data,pattern,start=0){requireBytes(data);requireBytes(pattern);const hits=[];for(let i=start;i<=data.length-pattern.length;i++){let ok=true;for(let j=0;j=0){const e=a[i]===b[i]?i-1:i;out.push({start:s,end:e,length:e-s+1});s=-1;}}return out;} +export function changedByteCount(a,b){return diffRanges(a,b).reduce((n,r)=>n+r.length,0);} +export function sum8(data){requireBytes(data);let s=0;for(const b of data)s=(s+b)&255;return s;} +export function xor8(data){requireBytes(data);let x=0;for(const b of data)x^=b;return x;} +export function crc16CcittFalse(data){requireBytes(data);let crc=0xFFFF;for(const b of data){crc^=b<<8;for(let i=0;i<8;i++)crc=((crc&0x8000)?(crc<<1)^0x1021:crc<<1)&0xFFFF;}return crc;} +export function crc32(data){requireBytes(data);let crc=0xFFFFFFFF;for(const b of data){crc^=b;for(let i=0;i<8;i++)crc=(crc>>>1)^((crc&1)?0xEDB88320:0);}return (crc^0xFFFFFFFF)>>>0;} +export function adler32(data){requireBytes(data);let a=1,b=0;for(const v of data){a=(a+v)%65521;b=(b+a)%65521;}return ((b<<16)|a)>>>0;} +export function bcdToInt(byte){const hi=(byte>>>4)&15,lo=byte&15;if(hi>9||lo>9)throw new Error("Invalid BCD");return hi*10+lo;} +export function intToBcd(value){if(!Number.isInteger(value)||value<0||value>99)throw new RangeError("BCD value must be 0..99");return ((Math.floor(value/10)<<4)|(value%10));} +export function constantTimeEqual(a,b){requireBytes(a);requireBytes(b);if(a.length!==b.length)return false;let d=0;for(let i=0;ioffset>=r.start&&offset+newBytes.length-1<=r.end);if(!ok)throw new Error("Write is outside allow-list");copy.set(newBytes,offset);return copy;} diff --git a/08_Collected_MultiPROG_Scripts/Original/multiprog_safe_template.mjs b/08_Collected_MultiPROG_Scripts/Original/multiprog_safe_template.mjs new file mode 100644 index 0000000..b9f9be1 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/multiprog_safe_template.mjs @@ -0,0 +1,20 @@ +/* SAFE MULTI-PROG ADAPTATION TEMPLATE + This file intentionally uses placeholders. Replace them only with exact functions + documented in your installed Multi-PROG Local Script > Help. */ + +function inspectCurrentBuffer() { + // const data = HOST_READ_CURRENT_BUFFER(); + // if (!data || data.length !== EXPECTED_SIZE) { HOST_MESSAGE("Unexpected size"); return; } + // Perform read-only inspection and display metadata. +} + +function exportValidatedCopy() { + // 1. Read current buffer. + // 2. Clone it. + // 3. Apply only an explicitly authorized, allow-listed transformation. + // 4. Generate a diff report. + // 5. Refuse output unless every invariant passes. + // 6. Save to a new filename. Never overwrite the original. +} + +// HOST_ADD_FUNCTION_BUTTON("Inspect", inspectCurrentBuffer); diff --git a/08_Collected_MultiPROG_Scripts/Original/test_binary_utils.mjs b/08_Collected_MultiPROG_Scripts/Original/test_binary_utils.mjs new file mode 100644 index 0000000..65337f5 --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/Original/test_binary_utils.mjs @@ -0,0 +1,7 @@ +import { strict as assert } from "node:assert"; +import { crc32, diffRanges, hex } from "../binary_utils.mjs"; +const v=new TextEncoder().encode("123456789"); +assert.equal(crc32(v),0xCBF43926); +assert.equal(hex(new Uint8Array([0,15,255])),"00 0F FF"); +assert.deepEqual(diffRanges(new Uint8Array([1,2,3,4]),new Uint8Array([1,9,8,4])),[{start:1,end:2,length:2}]); +console.log("All tests passed"); diff --git a/08_Collected_MultiPROG_Scripts/README.md b/08_Collected_MultiPROG_Scripts/README.md new file mode 100644 index 0000000..012cfcf --- /dev/null +++ b/08_Collected_MultiPROG_Scripts/README.md @@ -0,0 +1,12 @@ +# Collected Multi-PROG script examples + +This folder gathers Multi-PROG-related .mjs examples into a dedicated local collection under the XHorse MultiPROG Ultimate Kit. + +## Contents +- local_examples/: copied starter-kit examples from the kit's existing Script Starter Kit +- external_repo/: a cloned copy of the public CarKeyGuyNL/Multi-Prog-Scripts repository + +## Notes +- Review the contents for license, authorization and safety requirements before use. +- Keep immutable originals and validate any changes on a spare bench module. +- These files are collected for research and documentation purposes only. diff --git a/09_Collected_JS/README.md b/09_Collected_JS/README.md new file mode 100644 index 0000000..c9915a3 --- /dev/null +++ b/09_Collected_JS/README.md @@ -0,0 +1,20 @@ +# Collected JavaScript Utilities + +Original, dependency-free reference implementations of well-known public algorithms (binary parsing, checksums, encoding, hashing). These are written from scratch against public specifications and test vectors — not copied from third-party licensed libraries. + +External libraries with similar functionality are cataloged as links only, with license/attribution left to the source project, in [`02_Resource_Catalog/links.md`](../02_Resource_Catalog/links.md). + +## Layout + +- `binary/` — DataView/Uint8Array reader helper and a small declarative struct parser. +- `checksums/` — CRC-8/16/32/32C/64, Fletcher-16/32. +- `encoding/` — Hex, BCD, ASCII, UTF-8 helpers. +- `hashing/` — SHA-1, SHA-256, MD5 reference implementations. +- `administrative/` — Safe metadata cataloging helpers for indexing script structure without enabling credential extraction. +- `tests/test_vectors.mjs` — Self-test against standard published check values (e.g. CRC/hash of the ASCII string `"123456789"`). + +## Notes + +- All functions operate on `Uint8Array` and avoid Node-only APIs so they can be adapted for other JavaScript hosts, subject to verifying exact API signatures in the installed Multi-PROG Local Script Help. +- These are educational/reference implementations. Independently verify against `tests/test_vectors.mjs` and the CRC RevEng catalogue link before relying on them. +- No cryptographic key material, immobilizer algorithms, or device-specific offsets are included. diff --git a/09_Collected_JS/administrative/script_catalog.mjs b/09_Collected_JS/administrative/script_catalog.mjs new file mode 100644 index 0000000..6b4263c --- /dev/null +++ b/09_Collected_JS/administrative/script_catalog.mjs @@ -0,0 +1,50 @@ +function toText(value) { + return String(value ?? ""); +} + +function lineNumberAtIndex(source, index) { + if (index <= 0) return 1; + return source.slice(0, index).split(/\r?\n/).length; +} + +export function buildScriptIndex(sourceText, options = {}) { + const source = toText(sourceText); + const path = toText(options.path || ""); + const headerMatch = source.match(/^\/\*([\s\S]*?)\*\//m); + const functions = [...source.matchAll(/(?:export\s+)?function\s+([A-Za-z_$][\w$]*)\s*\(/g)].map((match) => ({ + name: match[1], + line: lineNumberAtIndex(source, match.index ?? 0) + })); + const classes = [...source.matchAll(/class\s+([A-Za-z_$][\w$]*)/g)].map((match) => ({ + name: match[1], + line: lineNumberAtIndex(source, match.index ?? 0) + })); + const imports = [...source.matchAll(/import\s+(?:[^"']+?\s+from\s+)?["']([^"']+)["']/g)].map((match) => ({ + specifier: match[1] + })); + const exports = [...source.matchAll(/export\s+(?:function|class|const|let|var)\s+([A-Za-z_$][\w$]*)/g)].map((match) => ({ + name: match[1] + })); + return { + path, + lineCount: source.split(/\r?\n/).length, + headerComment: headerMatch ? headerMatch[1].trim() : "", + functions, + classes, + imports, + exports + }; +} + +export function extractFunctionNames(sourceText) { + return buildScriptIndex(sourceText).functions.map((entry) => entry.name); +} + +export function summarizeScriptIndex(index) { + const parts = []; + if (index.path) parts.push(`Path: ${index.path}`); + parts.push(`Lines: ${index.lineCount}`); + parts.push(`Functions: ${index.functions.length}`); + if (index.headerComment) parts.push(`Header: ${index.headerComment}`); + return parts.join(" | "); +} diff --git a/09_Collected_JS/binary/dataview_helpers.mjs b/09_Collected_JS/binary/dataview_helpers.mjs new file mode 100644 index 0000000..e848cc6 --- /dev/null +++ b/09_Collected_JS/binary/dataview_helpers.mjs @@ -0,0 +1,27 @@ +/* Minimal stateful binary reader over a Uint8Array, similar in spirit to jBinary/binary-parser readers. */ +export class BinaryReader { + constructor(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + this.data = data; + this.view = new DataView(data.buffer, data.byteOffset, data.byteLength); + this.pos = 0; + } + get remaining() { return this.data.length - this.pos; } + seek(pos) { this.pos = pos; return this; } + skip(n) { this.pos += n; return this; } + readUint8() { const v = this.view.getUint8(this.pos); this.pos += 1; return v; } + readInt8() { const v = this.view.getInt8(this.pos); this.pos += 1; return v; } + readUint16LE() { const v = this.view.getUint16(this.pos, true); this.pos += 2; return v; } + readUint16BE() { const v = this.view.getUint16(this.pos, false); this.pos += 2; return v; } + readUint32LE() { const v = this.view.getUint32(this.pos, true); this.pos += 4; return v; } + readUint32BE() { const v = this.view.getUint32(this.pos, false); this.pos += 4; return v; } + readBytes(n) { const v = this.data.slice(this.pos, this.pos + n); this.pos += n; return v; } + readCString(maxLen = this.remaining) { + const start = this.pos; + let end = start; + while (end < start + maxLen && this.data[end] !== 0) end++; + const text = new TextDecoder().decode(this.data.slice(start, end)); + this.pos = Math.min(end + 1, this.data.length); + return text; + } +} diff --git a/09_Collected_JS/binary/struct_reader.mjs b/09_Collected_JS/binary/struct_reader.mjs new file mode 100644 index 0000000..e1bbd88 --- /dev/null +++ b/09_Collected_JS/binary/struct_reader.mjs @@ -0,0 +1,35 @@ +import { BinaryReader } from "./dataview_helpers.mjs"; + +/* Small declarative struct parser, e.g.: + parseStruct(data, [ + { name: "header", type: "u8", count: 4 }, + { name: "length", type: "u16le" }, + { name: "label", type: "cstring", maxLen: 16 } + ]) +*/ +const READERS = { + u8: r => r.readUint8(), + i8: r => r.readInt8(), + u16le: r => r.readUint16LE(), + u16be: r => r.readUint16BE(), + u32le: r => r.readUint32LE(), + u32be: r => r.readUint32BE(), + cstring: (r, field) => r.readCString(field.maxLen), + bytes: (r, field) => r.readBytes(field.length) +}; + +export function parseStruct(data, fields) { + const reader = new BinaryReader(data); + const out = {}; + for (const field of fields) { + const readOne = READERS[field.type]; + if (!readOne) throw new Error(`Unknown field type: ${field.type}`); + if (field.count) { + out[field.name] = Array.from({ length: field.count }, () => readOne(reader, field)); + } else { + out[field.name] = readOne(reader, field); + } + } + out.$bytesRead = reader.pos; + return out; +} diff --git a/09_Collected_JS/checksums/adler32.mjs b/09_Collected_JS/checksums/adler32.mjs new file mode 100644 index 0000000..cc97825 --- /dev/null +++ b/09_Collected_JS/checksums/adler32.mjs @@ -0,0 +1,17 @@ +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +const MOD_ADLER = 65521; + +/* Adler-32 (zlib). Check value for "123456789" is 0x091E01DE. */ +export function adler32(data) { + requireBytes(data); + let a = 1, b = 0; + for (const byte of data) { + a = (a + byte) % MOD_ADLER; + b = (b + a) % MOD_ADLER; + } + return ((b << 16) | a) >>> 0; +} diff --git a/09_Collected_JS/checksums/crc16.mjs b/09_Collected_JS/checksums/crc16.mjs new file mode 100644 index 0000000..1a4ca23 --- /dev/null +++ b/09_Collected_JS/checksums/crc16.mjs @@ -0,0 +1,30 @@ +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +/* CRC-16/CCITT-FALSE (poly 0x1021, init 0xFFFF, no reflect). Check value for "123456789" is 0x29B1. */ +export function crc16CcittFalse(data) { + requireBytes(data); + let crc = 0xFFFF; + for (const b of data) { + crc ^= b << 8; + for (let i = 0; i < 8; i++) { + crc = (crc & 0x8000) ? ((crc << 1) ^ 0x1021) & 0xFFFF : (crc << 1) & 0xFFFF; + } + } + return crc; +} + +/* CRC-16/MODBUS (poly 0x8005 reflected as 0xA001, init 0xFFFF, reflected). Check value for "123456789" is 0x4B37. */ +export function crc16Modbus(data) { + requireBytes(data); + let crc = 0xFFFF; + for (const byte of data) { + crc ^= byte; + for (let i = 0; i < 8; i++) { + crc = (crc & 1) ? (crc >>> 1) ^ 0xA001 : crc >>> 1; + } + } + return crc & 0xFFFF; +} diff --git a/09_Collected_JS/checksums/crc32.mjs b/09_Collected_JS/checksums/crc32.mjs new file mode 100644 index 0000000..45a97d7 --- /dev/null +++ b/09_Collected_JS/checksums/crc32.mjs @@ -0,0 +1,37 @@ +export function normalizeBytes(data) { + if (data instanceof Uint8Array) return data; + if (ArrayBuffer.isView(data)) return new Uint8Array(data.buffer, data.byteOffset, data.byteLength); + if (data instanceof ArrayBuffer) return new Uint8Array(data); + if (typeof data === "string") return new TextEncoder().encode(data); + throw new TypeError("Uint8Array, ArrayBuffer, typed array, or string required"); +} + +function requireBytes(data) { + return normalizeBytes(data); +} + +/* CRC-32 (IEEE 802.3, poly 0xEDB88320 reflected, init 0xFFFFFFFF). Check value for "123456789" is 0xCBF43926. */ +export function crc32(data) { + const bytes = requireBytes(data); + let crc = 0xFFFFFFFF; + for (const b of bytes) { + crc ^= b; + for (let i = 0; i < 8; i++) { + crc = (crc >>> 1) ^ ((crc & 1) ? 0xEDB88320 : 0); + } + } + return (crc ^ 0xFFFFFFFF) >>> 0; +} + +/* CRC-32C (Castagnoli, poly 0x82F63B78 reflected, init 0xFFFFFFFF). Check value for "123456789" is 0xE3069283. */ +export function crc32c(data) { + const bytes = requireBytes(data); + let crc = 0xFFFFFFFF; + for (const b of bytes) { + crc ^= b; + for (let i = 0; i < 8; i++) { + crc = (crc & 1) ? (crc >>> 1) ^ 0x82F63B78 : crc >>> 1; + } + } + return (crc ^ 0xFFFFFFFF) >>> 0; +} diff --git a/09_Collected_JS/checksums/crc64.mjs b/09_Collected_JS/checksums/crc64.mjs new file mode 100644 index 0000000..c54bf7f --- /dev/null +++ b/09_Collected_JS/checksums/crc64.mjs @@ -0,0 +1,21 @@ +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +const POLY = 0xC96C5795D7870F42n; +const MASK64 = 0xFFFFFFFFFFFFFFFFn; + +/* CRC-64/XZ (poly 0x42F0E1EBA9EA3693 reflected, init all-ones, reflected). Check value for "123456789" is 0x995DC9BBDF1939FA. + Uses BigInt; returns a zero-padded 16-hex-digit string since the value exceeds safe integer range. */ +export function crc64Xz(data) { + requireBytes(data); + let crc = MASK64; + for (const b of data) { + crc ^= BigInt(b); + for (let i = 0; i < 8; i++) { + crc = (crc & 1n) ? ((crc >> 1n) ^ POLY) & MASK64 : (crc >> 1n) & MASK64; + } + } + return ((crc ^ MASK64) & MASK64).toString(16).padStart(16, "0"); +} diff --git a/09_Collected_JS/checksums/crc8.mjs b/09_Collected_JS/checksums/crc8.mjs new file mode 100644 index 0000000..a1558fc --- /dev/null +++ b/09_Collected_JS/checksums/crc8.mjs @@ -0,0 +1,17 @@ +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +/* CRC-8 (poly 0x07, init 0x00, no reflect, no xorout). Check value for ASCII "123456789" is 0xF4. */ +export function crc8(data, poly = 0x07, init = 0x00) { + requireBytes(data); + let crc = init & 0xFF; + for (const b of data) { + crc ^= b; + for (let i = 0; i < 8; i++) { + crc = (crc & 0x80) ? ((crc << 1) ^ poly) & 0xFF : (crc << 1) & 0xFF; + } + } + return crc; +} diff --git a/09_Collected_JS/checksums/fletcher.mjs b/09_Collected_JS/checksums/fletcher.mjs new file mode 100644 index 0000000..2a9505f --- /dev/null +++ b/09_Collected_JS/checksums/fletcher.mjs @@ -0,0 +1,29 @@ +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +/* Fletcher-16 over bytes (modulus 255). */ +export function fletcher16(data) { + requireBytes(data); + let sum1 = 0, sum2 = 0; + for (const b of data) { + sum1 = (sum1 + b) % 255; + sum2 = (sum2 + sum1) % 255; + } + return ((sum2 << 8) | sum1) >>> 0; +} + +/* Fletcher-32 over 16-bit little-endian words (modulus 65535). */ +export function fletcher32(data) { + requireBytes(data); + const words = []; + for (let i = 0; i + 1 < data.length; i += 2) words.push(data[i] | (data[i + 1] << 8)); + if (data.length % 2 === 1) words.push(data[data.length - 1]); + let sum1 = 0, sum2 = 0; + for (const w of words) { + sum1 = (sum1 + w) % 65535; + sum2 = (sum2 + sum1) % 65535; + } + return ((sum2 << 16) | sum1) >>> 0; +} diff --git a/09_Collected_JS/encoding/ascii.mjs b/09_Collected_JS/encoding/ascii.mjs new file mode 100644 index 0000000..187a066 --- /dev/null +++ b/09_Collected_JS/encoding/ascii.mjs @@ -0,0 +1,22 @@ +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +export function isPrintableAscii(byte) { + return byte >= 32 && byte <= 126; +} + +export function asciiPreview(data, replacement = ".") { + requireBytes(data); + return Array.from(data, b => (isPrintableAscii(b) ? String.fromCharCode(b) : replacement)).join(""); +} + +export function encodeAscii(text) { + const out = new Uint8Array(text.length); + for (let i = 0; i < text.length; i++) { + const code = text.charCodeAt(i); + out[i] = code <= 127 ? code : 0x3F; // '?' for non-ASCII input + } + return out; +} diff --git a/09_Collected_JS/encoding/bcd.mjs b/09_Collected_JS/encoding/bcd.mjs new file mode 100644 index 0000000..d73a69a --- /dev/null +++ b/09_Collected_JS/encoding/bcd.mjs @@ -0,0 +1,23 @@ +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +export function bcdByteToInt(byte) { + const hi = (byte >>> 4) & 0xF, lo = byte & 0xF; + if (hi > 9 || lo > 9) throw new Error("Invalid BCD nibble"); + return hi * 10 + lo; +} + +export function intToBcdByte(value) { + if (!Number.isInteger(value) || value < 0 || value > 99) throw new RangeError("BCD value must be 0..99"); + return ((Math.floor(value / 10) << 4) | (value % 10)) & 0xFF; +} + +/* Decodes a run of packed-BCD bytes into a decimal digit string, e.g. [0x20,0x26] -> "2026". */ +export function bcdBytesToDigitString(data) { + requireBytes(data); + let out = ""; + for (const b of data) out += String(bcdByteToInt(b)).padStart(2, "0"); + return out; +} diff --git a/09_Collected_JS/encoding/hex.mjs b/09_Collected_JS/encoding/hex.mjs new file mode 100644 index 0000000..59020da --- /dev/null +++ b/09_Collected_JS/encoding/hex.mjs @@ -0,0 +1,17 @@ +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +export function encodeHex(data, separator = "") { + requireBytes(data); + return Array.from(data, b => b.toString(16).padStart(2, "0")).join(separator).toUpperCase(); +} + +export function decodeHex(text) { + const s = String(text).replace(/[^0-9a-f]/gi, ""); + if (s.length % 2) throw new Error("Hex text must contain complete bytes"); + const out = new Uint8Array(s.length / 2); + for (let i = 0; i < out.length; i++) out[i] = parseInt(s.slice(i * 2, i * 2 + 2), 16); + return out; +} diff --git a/09_Collected_JS/encoding/utf8.mjs b/09_Collected_JS/encoding/utf8.mjs new file mode 100644 index 0000000..2c50feb --- /dev/null +++ b/09_Collected_JS/encoding/utf8.mjs @@ -0,0 +1,9 @@ +/* Thin wrappers over the standard TextEncoder/TextDecoder for consistent use across examples. */ +export function encodeUtf8(text) { + return new TextEncoder().encode(String(text)); +} + +export function decodeUtf8(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return new TextDecoder("utf-8", { fatal: false }).decode(data); +} diff --git a/09_Collected_JS/hashing/_pad.mjs b/09_Collected_JS/hashing/_pad.mjs new file mode 100644 index 0000000..057ed04 --- /dev/null +++ b/09_Collected_JS/hashing/_pad.mjs @@ -0,0 +1,14 @@ +/* Shared Merkle-Damgard padding for SHA-1/SHA-256: append 0x80, zero-pad to 56 mod 64, append 64-bit big-endian bit length. + Assumes message length fits in 32 bits of bit-length (fine for typical EEPROM/flash dump sizes). */ +export function padMessageBE(data) { + let k = data.length + 1; + while (k % 64 !== 56) k++; + const total = k + 8; + const msg = new Uint8Array(total); + msg.set(data); + msg[data.length] = 0x80; + const dv = new DataView(msg.buffer); + dv.setUint32(total - 8, 0); + dv.setUint32(total - 4, (data.length * 8) >>> 0); + return msg; +} diff --git a/09_Collected_JS/hashing/md5.mjs b/09_Collected_JS/hashing/md5.mjs new file mode 100644 index 0000000..a08cbb6 --- /dev/null +++ b/09_Collected_JS/hashing/md5.mjs @@ -0,0 +1,59 @@ +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +function rotl(x, n) { return (x << n) | (x >>> (32 - n)); } + +const S = [ + 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, + 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, + 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, + 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21 +]; +const K = new Int32Array(64); +for (let i = 0; i < 64; i++) K[i] = (Math.floor(Math.abs(Math.sin(i + 1)) * 0x100000000)) | 0; + +function padMessageLE(data) { + let k = data.length + 1; + while (k % 64 !== 56) k++; + const total = k + 8; + const msg = new Uint8Array(total); + msg.set(data); + msg[data.length] = 0x80; + const dv = new DataView(msg.buffer); + dv.setUint32(total - 8, (data.length * 8) >>> 0, true); + dv.setUint32(total - 4, 0, true); + return msg; +} + +function toHexLE(v) { + let s = ""; + for (let i = 0; i < 4; i++) s += ((v >>> (i * 8)) & 0xFF).toString(16).padStart(2, "0"); + return s; +} + +/* MD5 reference implementation (RFC 1321). Check value for "abc" is 900150983cd24fb0d6963f7d28e17f72. */ +export function md5(data) { + requireBytes(data); + const msg = padMessageLE(data); + const dv = new DataView(msg.buffer); + let a0 = 0x67452301, b0 = 0xefcdab89, c0 = 0x98badcfe, d0 = 0x10325476; + const M = new Uint32Array(16); + for (let off = 0; off < msg.length; off += 64) { + for (let j = 0; j < 16; j++) M[j] = dv.getUint32(off + j * 4, true); + let A = a0, B = b0, C = c0, D = d0; + for (let i = 0; i < 64; i++) { + let F, g; + if (i < 16) { F = (B & C) | ((~B) & D); g = i; } + else if (i < 32) { F = (D & B) | ((~D) & C); g = (5 * i + 1) % 16; } + else if (i < 48) { F = B ^ C ^ D; g = (3 * i + 5) % 16; } + else { F = C ^ (B | (~D)); g = (7 * i) % 16; } + F = (F + A + K[i] + M[g]) >>> 0; + A = D; D = C; C = B; + B = (B + rotl(F, S[i])) >>> 0; + } + a0 = (a0 + A) >>> 0; b0 = (b0 + B) >>> 0; c0 = (c0 + C) >>> 0; d0 = (d0 + D) >>> 0; + } + return toHexLE(a0) + toHexLE(b0) + toHexLE(c0) + toHexLE(d0); +} diff --git a/09_Collected_JS/hashing/sha1.mjs b/09_Collected_JS/hashing/sha1.mjs new file mode 100644 index 0000000..495e3cc --- /dev/null +++ b/09_Collected_JS/hashing/sha1.mjs @@ -0,0 +1,36 @@ +import { padMessageBE } from "./_pad.mjs"; + +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +function rotl(x, n) { return (x << n) | (x >>> (32 - n)); } + +/* SHA-1 reference implementation (FIPS 180-4). Check value for "abc" is a9993e364706816aba3e25717850c26c9cd0d89. */ +export function sha1(data) { + requireBytes(data); + const msg = padMessageBE(data); + const dv = new DataView(msg.buffer); + let h0 = 0x67452301, h1 = 0xEFCDAB89, h2 = 0x98BADCFE, h3 = 0x10325476, h4 = 0xC3D2E1F0; + const w = new Uint32Array(80); + for (let off = 0; off < msg.length; off += 64) { + for (let t = 0; t < 16; t++) w[t] = dv.getUint32(off + t * 4); + for (let t = 16; t < 80; t++) { + const v = w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]; + w[t] = rotl(v, 1); + } + let a = h0, b = h1, c = h2, d = h3, e = h4; + for (let t = 0; t < 80; t++) { + let f, k; + if (t < 20) { f = (b & c) | ((~b) & d); k = 0x5A827999; } + else if (t < 40) { f = b ^ c ^ d; k = 0x6ED9EBA1; } + else if (t < 60) { f = (b & c) | (b & d) | (c & d); k = 0x8F1BBCDC; } + else { f = b ^ c ^ d; k = 0xCA62C1D6; } + const temp = (rotl(a, 5) + f + e + k + w[t]) >>> 0; + e = d; d = c; c = rotl(b, 30); b = a; a = temp; + } + h0 = (h0 + a) >>> 0; h1 = (h1 + b) >>> 0; h2 = (h2 + c) >>> 0; h3 = (h3 + d) >>> 0; h4 = (h4 + e) >>> 0; + } + return [h0, h1, h2, h3, h4].map(v => v.toString(16).padStart(8, "0")).join(""); +} diff --git a/09_Collected_JS/hashing/sha256.mjs b/09_Collected_JS/hashing/sha256.mjs new file mode 100644 index 0000000..9b2a5e0 --- /dev/null +++ b/09_Collected_JS/hashing/sha256.mjs @@ -0,0 +1,53 @@ +import { padMessageBE } from "./_pad.mjs"; + +function requireBytes(data) { + if (!(data instanceof Uint8Array)) throw new TypeError("Uint8Array required"); + return data; +} + +const K = new Uint32Array([ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +]); + +function rotr(x, n) { return (x >>> n) | (x << (32 - n)); } + +/* SHA-256 reference implementation (FIPS 180-4). Check value for "abc" is ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. */ +export function sha256(data) { + requireBytes(data); + const H = new Uint32Array([ + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 + ]); + const msg = padMessageBE(data); + const dv = new DataView(msg.buffer); + const W = new Uint32Array(64); + for (let off = 0; off < msg.length; off += 64) { + for (let t = 0; t < 16; t++) W[t] = dv.getUint32(off + t * 4); + for (let t = 16; t < 64; t++) { + const s0 = rotr(W[t - 15], 7) ^ rotr(W[t - 15], 18) ^ (W[t - 15] >>> 3); + const s1 = rotr(W[t - 2], 17) ^ rotr(W[t - 2], 19) ^ (W[t - 2] >>> 10); + W[t] = (W[t - 16] + s0 + W[t - 7] + s1) >>> 0; + } + let [a, b, c, d, e, f, g, h] = H; + for (let t = 0; t < 64; t++) { + const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25); + const ch = (e & f) ^ ((~e) & g); + const temp1 = (h + S1 + ch + K[t] + W[t]) >>> 0; + const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22); + const maj = (a & b) ^ (a & c) ^ (b & c); + const temp2 = (S0 + maj) >>> 0; + h = g; g = f; f = e; e = (d + temp1) >>> 0; + d = c; c = b; b = a; a = (temp1 + temp2) >>> 0; + } + H[0] = (H[0] + a) >>> 0; H[1] = (H[1] + b) >>> 0; H[2] = (H[2] + c) >>> 0; H[3] = (H[3] + d) >>> 0; + H[4] = (H[4] + e) >>> 0; H[5] = (H[5] + f) >>> 0; H[6] = (H[6] + g) >>> 0; H[7] = (H[7] + h) >>> 0; + } + return Array.from(H, v => v.toString(16).padStart(8, "0")).join(""); +} diff --git a/09_Collected_JS/tests/test_admin_utils.mjs b/09_Collected_JS/tests/test_admin_utils.mjs new file mode 100644 index 0000000..e0b56a0 --- /dev/null +++ b/09_Collected_JS/tests/test_admin_utils.mjs @@ -0,0 +1,21 @@ +import assert from "node:assert/strict"; +import { crc32, crc32c, normalizeBytes } from "../checksums/crc32.mjs"; +import { buildScriptIndex, extractFunctionNames, summarizeScriptIndex } from "../administrative/script_catalog.mjs"; + +const bytes = normalizeBytes("123456789"); +assert.deepEqual(Array.from(bytes), [0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39]); +assert.equal(crc32(bytes), 0xCBF43926); +assert.equal(crc32c(bytes), 0xE3069283); + +const source = `/* Safe administrative note */ +export function openCase() {} +function reviewDump() {} +export const STATUS = "ready"; +`; +const index = buildScriptIndex(source, { path: "sample.js" }); +assert.deepEqual(extractFunctionNames(source), ["openCase", "reviewDump"]); +assert.equal(index.headerComment, "Safe administrative note"); +assert.equal(index.functions[0].line, 2); +assert.match(summarizeScriptIndex(index), /Functions: 2/); + +console.log("Administrative utility tests passed"); diff --git a/09_Collected_JS/tests/test_vectors.mjs b/09_Collected_JS/tests/test_vectors.mjs new file mode 100644 index 0000000..8c021d0 --- /dev/null +++ b/09_Collected_JS/tests/test_vectors.mjs @@ -0,0 +1,32 @@ +import { crc8 } from "../checksums/crc8.mjs"; +import { crc16CcittFalse, crc16Modbus } from "../checksums/crc16.mjs"; +import { crc32, crc32c } from "../checksums/crc32.mjs"; +import { crc64Xz } from "../checksums/crc64.mjs"; +import { adler32 } from "../checksums/adler32.mjs"; +import { sha1 } from "../hashing/sha1.mjs"; +import { sha256 } from "../hashing/sha256.mjs"; +import { md5 } from "../hashing/md5.mjs"; + +/* Self-test against standard published check values. Run with: node test_vectors.mjs */ +export function runSelfTest() { + const check = new TextEncoder().encode("123456789"); + const abc = new TextEncoder().encode("abc"); + const results = { + crc8: crc8(check) === 0xF4, + crc16CcittFalse: crc16CcittFalse(check) === 0x29B1, + crc16Modbus: crc16Modbus(check) === 0x4B37, + crc32: crc32(check) === 0xCBF43926, + crc32c: crc32c(check) === 0xE3069283, + crc64Xz: crc64Xz(check) === "995dc9bbdf1939fa", + adler32: adler32(check) === 0x091E01DE, + sha1: sha1(abc) === "a9993e364706816aba3e25717850c26c9cd0d89", + sha256: sha256(abc) === "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad", + md5: md5(abc) === "900150983cd24fb0d6963f7d28e17f72" + }; + results.allPassed = Object.values(results).every(Boolean); + return results; +} + +if (import.meta.url === `file://${process.argv[1]}`) { + console.log(runSelfTest()); +} diff --git a/13_Research_Expansion/DISCOVERED_APIS.md b/13_Research_Expansion/DISCOVERED_APIS.md new file mode 100644 index 0000000..28ad2c7 --- /dev/null +++ b/13_Research_Expansion/DISCOVERED_APIS.md @@ -0,0 +1,31 @@ +# Discovered APIs (from public manuals/tutorials only) + +This document lists Multi-PROG Local Script host API names **mentioned in the publicly linked manuals and tutorials** cataloged in [`02_Resource_Catalog/links.md`](../02_Resource_Catalog/links.md). Names are **unverified** — no third-party scripts were decompiled or scraped to produce this list. Always confirm exact signatures, parameters, and behavior in your installed Multi-PROG **Local Script > Help** before writing real host-facing code. + +## Editor / lifecycle + +- `AddFunctionButton(label, callback)` — registers a button in the script's function panel (name as referenced in community tutorials; confirm exact casing/signature locally). +- Local Script editor supports import, test, correct, and lock/publish workflow steps (per the official manual and blog walkthrough). +- "Released Features" — the manual's term for the published/available function set exposed to the script. + +## Data I/O + +- `ReadData(...)` — reads bytes from the currently loaded buffer/device (name referenced in manual mirror; confirm arguments). +- `WriteData(...)` — writes bytes to the currently loaded buffer/device (name referenced in manual mirror; confirm arguments and safety prompts). +- File dialogs for opening/saving working copies are referenced in the manual mirror. + +## Conversion / comparison helpers + +- `Hex2Dec(...)` — hex-to-decimal conversion helper referenced in community material. +- `areEqual(...)` — buffer/array equality helper referenced in community material. + +## Checksum / crypto references in the manual + +- The manual mirror lists sample entries referencing AES, DES, and SHA-256 in the context of supported checksum/verification routines. No algorithm parameters, keys, or offsets are included here — see [`09_Collected_JS/`](../09_Collected_JS/) for independent, generic reference implementations of common hash/checksum algorithms. +- A visual "green C" indicator and a checksum/verification prompt appear during supported writes (per the checksum workflow guides). + +## How to verify before use + +1. Open Multi-PROG's Local Script editor and use **Help** to list the actual exposed API and exact signatures on your installed version. +2. Cross-reference against the manual PDF and mirror linked in the resource catalog. +3. Never assume an API name or behavior from a third-party blog/forum post without confirming it locally. diff --git a/13_Research_Expansion/MASTER_SCRIPT_CATALOG.csv b/13_Research_Expansion/MASTER_SCRIPT_CATALOG.csv new file mode 100644 index 0000000..814702a --- /dev/null +++ b/13_Research_Expansion/MASTER_SCRIPT_CATALOG.csv @@ -0,0 +1,50 @@ +File,Category,Module,Purpose,Functions,Source +03_Script_Starter_Kit/binary_utils.mjs,Core utility,Generic,Dependency-free binary helpers,requireBytes;assertRange;cloneBytes;sliceBytes;bytesToHex;hexToBytes;asciiPreview;readU16LE;readU16BE;readU32LE;readU32BE;writeU16LE;writeU16BE;writeU32LE;writeU32BE;findPattern;countByte;isBlank;diffRanges;changedByteCount;sum8;xor8;crc16CcittFalse;crc32;adler32;bcdToInt;intToBcd;constantTimeEqual;allowListedWrite,Authored in this kit +03_Script_Starter_Kit/templates/multiprog_safe_template.mjs,Template,Generic,Placeholder-only host adaptation template,inspectCurrentBuffer;exportValidatedCopy,Authored in this kit +03_Script_Starter_Kit/examples/01_read_only_inspector.mjs,Example,Generic,Read-only buffer metadata,inspect,Authored in this kit +03_Script_Starter_Kit/examples/02_double_read_verifier.mjs,Example,Generic,Dual-read consistency check,verifyTwoReads,Authored in this kit +03_Script_Starter_Kit/examples/03_pattern_inventory.mjs,Example,Generic,Pattern offset inventory,inventory,Authored in this kit +03_Script_Starter_Kit/examples/04_allowlisted_patch_demo.mjs,Example,Generic,Synthetic allow-listed write demo,demo,Authored in this kit +03_Script_Starter_Kit/examples/05_checksum_test_vectors.mjs,Example,Generic,Checksum self-test,selfTest,Authored in this kit +03_Script_Starter_Kit/examples/06_authorized_job_record_validator.mjs,Example,Generic,Job record validation,validateAuthorizedJob,Authored in this kit +03_Script_Starter_Kit/examples/07_key_inventory_audit.mjs,Example,Generic,Administrative key inventory listing,auditKeyInventory,Authored in this kit +03_Script_Starter_Kit/examples/08_redacted_security_report.mjs,Example,Generic,Redacted report builder,redact;securityReport,Authored in this kit +03_Script_Starter_Kit/examples/immobilizer_authorized_safe/09_immo_case_intake_validator.mjs,Example,Immobilizer,Case/authorization/VIN validation,validateImmoCase,Authored in this kit +03_Script_Starter_Kit/examples/immobilizer_authorized_safe/10_immo_module_read_consistency.mjs,Example,Immobilizer,Dual-read consistency check,verifyModuleReadConsistency,Authored in this kit +03_Script_Starter_Kit/examples/immobilizer_authorized_safe/11_immo_dump_quality_report.mjs,Example,Immobilizer,Dump quality assessment,assessDumpQuality,Authored in this kit +03_Script_Starter_Kit/examples/immobilizer_authorized_safe/12_authorized_key_count_reconciliation.mjs,Example,Immobilizer,Physical key count reconciliation,reconcileKeyCount,Authored in this kit +03_Script_Starter_Kit/examples/immobilizer_authorized_safe/13_security_value_redactor.mjs,Example,Immobilizer,Redacted value/report builder,redactSecurityValue;redactRecord,Authored in this kit +03_Script_Starter_Kit/examples/immobilizer_authorized_safe/14_immo_backup_naming_policy.mjs,Example,Immobilizer,Sanitized backup filename builder,buildBackupName,Authored in this kit +03_Script_Starter_Kit/examples/immobilizer_authorized_safe/15_immo_change_scope_guard.mjs,Example,Immobilizer,Allow-listed change-scope validator,validateAuthorizedChangeScope,Authored in this kit +03_Script_Starter_Kit/examples/immobilizer_authorized_safe/16_immo_service_completion_audit.mjs,Example,Immobilizer,Final completion checklist,auditCompletion,Authored in this kit +03_Script_Starter_Kit/examples/airbag_authorized_safe/17_airbag_case_intake_validator.mjs,Example,Airbag/SRS,Case/authorization/VIN validation,validateAirbagCase,Authored in this kit +03_Script_Starter_Kit/examples/airbag_authorized_safe/18_airbag_module_read_consistency.mjs,Example,Airbag/SRS,Dual-read consistency check,verifyAirbagReadConsistency,Authored in this kit +03_Script_Starter_Kit/examples/airbag_authorized_safe/19_airbag_crash_data_disclosure_redactor.mjs,Example,Airbag/SRS,Redacted status report,redactAirbagValue;airbagStatusReport,Authored in this kit +03_Script_Starter_Kit/examples/airbag_authorized_safe/20_airbag_backup_naming_policy.mjs,Example,Airbag/SRS,Sanitized backup filename builder,buildAirbagBackupName,Authored in this kit +03_Script_Starter_Kit/examples/airbag_authorized_safe/21_airbag_service_completion_audit.mjs,Example,Airbag/SRS,Final completion checklist,auditAirbagCompletion,Authored in this kit +03_Script_Starter_Kit/examples/ecu_authorized_safe/22_ecu_case_intake_validator.mjs,Example,ECU,Case/authorization/VIN validation,validateEcuCase,Authored in this kit +03_Script_Starter_Kit/examples/ecu_authorized_safe/23_ecu_calibration_read_consistency.mjs,Example,ECU,Dual-read consistency check,verifyEcuReadConsistency,Authored in this kit +03_Script_Starter_Kit/examples/ecu_authorized_safe/24_ecu_partnumber_crosscheck.mjs,Example,ECU,Read-only declared part-number comparison,crosscheckPartNumber,Authored in this kit +03_Script_Starter_Kit/examples/ecu_authorized_safe/25_ecu_change_scope_guard.mjs,Example,ECU,Allow-listed change-scope validator,validateAuthorizedEcuChangeScope,Authored in this kit +03_Script_Starter_Kit/examples/ecu_authorized_safe/26_ecu_service_completion_audit.mjs,Example,ECU,Final completion checklist,auditEcuCompletion,Authored in this kit +03_Script_Starter_Kit/examples/other_modules_authorized_safe/27_module_case_intake_validator.mjs,Example,BCM/Cluster/TCU,Case/authorization/VIN validation,validateModuleCase,Authored in this kit +03_Script_Starter_Kit/examples/other_modules_authorized_safe/28_module_read_consistency.mjs,Example,BCM/Cluster/TCU,Dual-read consistency check,verifyModuleReadConsistency,Authored in this kit +03_Script_Starter_Kit/examples/other_modules_authorized_safe/29_module_backup_naming_policy.mjs,Example,BCM/Cluster/TCU,Sanitized backup filename builder,buildModuleBackupName,Authored in this kit +03_Script_Starter_Kit/examples/other_modules_authorized_safe/30_module_change_scope_guard.mjs,Example,BCM/Cluster/TCU,Allow-listed change-scope validator,validateAuthorizedModuleChangeScope,Authored in this kit +03_Script_Starter_Kit/examples/other_modules_authorized_safe/31_module_service_completion_audit.mjs,Example,BCM/Cluster/TCU,Final completion checklist,auditModuleCompletion,Authored in this kit +09_Collected_JS/binary/dataview_helpers.mjs,Library,Binary parsing,Stateful DataView/Uint8Array reader,BinaryReader,Authored in this kit +09_Collected_JS/binary/struct_reader.mjs,Library,Binary parsing,Declarative struct parser,parseStruct,Authored in this kit +09_Collected_JS/checksums/crc8.mjs,Library,Checksum,CRC-8,crc8,Authored in this kit +09_Collected_JS/checksums/crc16.mjs,Library,Checksum,CRC-16 CCITT-FALSE/MODBUS,crc16CcittFalse;crc16Modbus,Authored in this kit +09_Collected_JS/checksums/crc32.mjs,Library,Checksum,CRC-32/CRC-32C,crc32;crc32c,Authored in this kit +09_Collected_JS/checksums/crc64.mjs,Library,Checksum,CRC-64/XZ,crc64Xz,Authored in this kit +09_Collected_JS/checksums/fletcher.mjs,Library,Checksum,Fletcher-16/32,fletcher16;fletcher32,Authored in this kit +09_Collected_JS/checksums/adler32.mjs,Library,Checksum,Adler-32,adler32,Authored in this kit +09_Collected_JS/encoding/hex.mjs,Library,Encoding,Hex encode/decode,encodeHex;decodeHex,Authored in this kit +09_Collected_JS/encoding/bcd.mjs,Library,Encoding,Packed BCD helpers,bcdByteToInt;intToBcdByte;bcdBytesToDigitString,Authored in this kit +09_Collected_JS/encoding/ascii.mjs,Library,Encoding,ASCII helpers,isPrintableAscii;asciiPreview;encodeAscii,Authored in this kit +09_Collected_JS/encoding/utf8.mjs,Library,Encoding,UTF-8 helpers,encodeUtf8;decodeUtf8,Authored in this kit +09_Collected_JS/hashing/sha1.mjs,Library,Hashing,SHA-1,sha1,Authored in this kit +09_Collected_JS/hashing/sha256.mjs,Library,Hashing,SHA-256,sha256,Authored in this kit +09_Collected_JS/hashing/md5.mjs,Library,Hashing,MD5,md5,Authored in this kit +09_Collected_JS/tests/test_vectors.mjs,Test,Generic,Self-test against published check values,runSelfTest,Authored in this kit diff --git a/13_Research_Expansion/MASTER_SCRIPT_CATALOG.md b/13_Research_Expansion/MASTER_SCRIPT_CATALOG.md new file mode 100644 index 0000000..5e86ebf --- /dev/null +++ b/13_Research_Expansion/MASTER_SCRIPT_CATALOG.md @@ -0,0 +1,86 @@ +# Master Script Catalog + +Catalog of the safe, authored example scripts in this kit. This lists original safe/authorized-workflow examples only — it does not include third-party device scripts, which remain link-only in [`02_Resource_Catalog/links.md`](../02_Resource_Catalog/links.md). + +See [`MASTER_SCRIPT_CATALOG.csv`](MASTER_SCRIPT_CATALOG.csv) for the machine-readable version. + +## `03_Script_Starter_Kit/` + +| File | Category | Purpose | +|---|---|---| +| `binary_utils.mjs` | Core utility | Dependency-free Uint8Array helpers: range checks, hex/BCD/ASCII conversion, endian reads/writes, pattern search, diff, CRC16/CRC32/Adler32, allow-listed write | +| `templates/multiprog_safe_template.mjs` | Template | Placeholder-only adaptation template pointing to Local Script Help for real host calls | +| `tests/test_binary_utils.mjs` | Test | Sanity tests for `binary_utils.mjs` | + +### `examples/` (generic) + +| File | Purpose | +|---|---| +| `01_read_only_inspector.mjs` | Read-only buffer metadata (length, hex preview, ASCII preview, CRC32) | +| `02_double_read_verifier.mjs` | Confirms two reads of the same buffer match | +| `03_pattern_inventory.mjs` | Locates configured hex patterns and reports offsets | +| `04_allowlisted_patch_demo.mjs` | Synthetic allow-listed write + diff demonstration | +| `05_checksum_test_vectors.mjs` | Self-test of CRC16/CRC32/Adler32 against standard vectors | +| `06_authorized_job_record_validator.mjs` | Validates required fields on a job record | +| `07_key_inventory_audit.mjs` | Administrative key-inventory listing (no credential handling) | +| `08_redacted_security_report.mjs` | Redacts sensitive fields before reporting | + +### `examples/immobilizer_authorized_safe/` + +| File | Purpose | +|---|---| +| `09_immo_case_intake_validator.mjs` | Case/authorization/VIN validation | +| `10_immo_module_read_consistency.mjs` | Dual-read consistency check | +| `11_immo_dump_quality_report.mjs` | Dump quality assessment | +| `12_authorized_key_count_reconciliation.mjs` | Physical key count reconciliation | +| `13_security_value_redactor.mjs` | Redacts sensitive values from records | +| `14_immo_backup_naming_policy.mjs` | Sanitized backup filename builder | +| `15_immo_change_scope_guard.mjs` | Allow-listed change-scope diff validator | +| `16_immo_service_completion_audit.mjs` | Final completion checklist | + +### `examples/airbag_authorized_safe/` + +| File | Purpose | +|---|---| +| `17_airbag_case_intake_validator.mjs` | Case/authorization/VIN validation | +| `18_airbag_module_read_consistency.mjs` | Dual-read consistency check | +| `19_airbag_crash_data_disclosure_redactor.mjs` | Redacted status report (crash data left unaltered) | +| `20_airbag_backup_naming_policy.mjs` | Sanitized backup filename builder | +| `21_airbag_service_completion_audit.mjs` | Final completion checklist including "crash data unaltered" gate | + +### `examples/ecu_authorized_safe/` + +| File | Purpose | +|---|---| +| `22_ecu_case_intake_validator.mjs` | Case/authorization/VIN validation | +| `23_ecu_calibration_read_consistency.mjs` | Dual-read consistency check | +| `24_ecu_partnumber_crosscheck.mjs` | Read-only declared part-number comparison | +| `25_ecu_change_scope_guard.mjs` | Allow-listed change-scope diff validator | +| `26_ecu_service_completion_audit.mjs` | Final completion checklist | + +### `examples/other_modules_authorized_safe/` (BCM / instrument cluster / TCU) + +| File | Purpose | +|---|---| +| `27_module_case_intake_validator.mjs` | Case/authorization/VIN validation | +| `28_module_read_consistency.mjs` | Dual-read consistency check | +| `29_module_backup_naming_policy.mjs` | Sanitized backup filename builder | +| `30_module_change_scope_guard.mjs` | Allow-listed change-scope diff validator | +| `31_module_service_completion_audit.mjs` | Final completion checklist including "mileage field unchanged" gate | + +## `09_Collected_JS/` (original reference implementations) + +| File | Purpose | +|---|---| +| `binary/dataview_helpers.mjs` | Stateful `BinaryReader` over `Uint8Array`/`DataView` | +| `binary/struct_reader.mjs` | Small declarative struct parser | +| `checksums/crc8.mjs`, `crc16.mjs`, `crc32.mjs`, `crc64.mjs`, `fletcher.mjs`, `adler32.mjs` | CRC8, CRC16 (CCITT-FALSE/MODBUS), CRC32/CRC32C, CRC64/XZ, Fletcher-16/32, Adler-32 | +| `encoding/hex.mjs`, `bcd.mjs`, `ascii.mjs`, `utf8.mjs` | Hex, BCD, ASCII, UTF-8 helpers | +| `hashing/sha1.mjs`, `sha256.mjs`, `md5.mjs` | Reference hash implementations | +| `tests/test_vectors.mjs` | Self-test against standard published check values | + +## Statistics + +- Safe example scripts authored in this kit: 31 +- Original JS utility modules in `09_Collected_JS/`: 16 +- Third-party scripts collected/redistributed: 0 (link-only catalog by design) diff --git a/13_Research_Expansion/MULTIPROG_SCRIPT_PATTERNS.md b/13_Research_Expansion/MULTIPROG_SCRIPT_PATTERNS.md new file mode 100644 index 0000000..b486aab --- /dev/null +++ b/13_Research_Expansion/MULTIPROG_SCRIPT_PATTERNS.md @@ -0,0 +1,85 @@ +# Multi-PROG Script Patterns (Safe Style Guide) + +Common patterns used across the safe examples in this kit. All patterns assume host calls are placeholders until verified in Local Script Help. + +## 1. Read-only inspection before anything else + +Always inspect a buffer (length, hex/ASCII preview, checksum) before any comparison or write logic runs. +See `03_Script_Starter_Kit/examples/01_read_only_inspector.mjs`. + +```js +import { bytesToHex, asciiPreview, crc32 } from "../binary_utils.mjs"; +export function inspect(data) { + return { length: data.length, first32: bytesToHex(data.slice(0, 32)), crc32: crc32(data) }; +} +``` + +## 2. Dual-read consistency check + +Read twice, compare with a constant-time equality check and independent CRC, and refuse to proceed if they disagree. +See `02_double_read_verifier.mjs` and the per-module `*_read_consistency.mjs` examples. + +```js +import { constantTimeEqual, crc32 } from "../binary_utils.mjs"; +export function verifyTwoReads(a, b) { + return { identical: constantTimeEqual(a, b), crcA: crc32(a), crcB: crc32(b) }; +} +``` + +## 3. Allow-listed, diff-verified writes + +Never write blind. Clone the buffer, apply a change, diff old vs. new, and reject any change outside an explicit allow-list. +See `04_allowlisted_patch_demo.mjs` and the per-module `*_change_scope_guard.mjs` examples. + +```js +import { cloneBytes, allowListedWrite, diffRanges } from "../binary_utils.mjs"; +const output = cloneBytes(input); +allowListedWrite(output, offset, newBytes, allowedRanges); +const changes = diffRanges(input, output); +``` + +## 4. Case intake / authorization validation + +Require an explicit authorization reference and a well-formed VIN before any work proceeds. +See every `*_case_intake_validator.mjs`. + +```js +const vinValid = /^[A-HJ-NPR-Z0-9]{17}$/.test(vin); +const authorizationValid = Boolean(authorizationRef); +``` + +## 5. Redaction before logging/reporting + +Never place raw security-relevant values in shop reports or logs; keep only a short visible tail. +See `08_redacted_security_report.mjs` and `13_security_value_redactor.mjs`. + +```js +export function redact(value, keepLast = 4) { + const s = String(value ?? ""); + return s.length <= keepLast ? "*".repeat(s.length) : "*".repeat(s.length - keepLast) + s.slice(-keepLast); +} +``` + +## 6. Sanitized, deterministic backup naming + +Build backup filenames from sanitized metadata fields plus a timestamp; never overwrite originals. +See every `*_backup_naming_policy.mjs`. + +## 7. Final completion audit + +Gate job closeout behind an explicit checklist object (authorization on file, backups preserved, reads matched, domain-specific invariant such as "crash data unaltered" or "mileage field unchanged"). +See every `*_service_completion_audit.mjs`. + +## 8. Checksum self-test against published vectors + +Validate any checksum/hash helper against a standard published check value (e.g. CRC32/Adler32/SHA/MD5 of `"123456789"` or `"abc"`) before trusting it. +See `05_checksum_test_vectors.mjs` and `09_Collected_JS/tests/test_vectors.mjs`. + +## 9. Button registration (host-facing, placeholder only) + +Register functions behind named buttons only after the underlying logic already passed the above checks. +See `templates/multiprog_safe_template.mjs`. + +```js +// HOST_ADD_FUNCTION_BUTTON("Inspect", inspectCurrentBuffer); +``` diff --git a/13_Research_Expansion/SCRIPT_DEVELOPMENT_GUIDE.md b/13_Research_Expansion/SCRIPT_DEVELOPMENT_GUIDE.md new file mode 100644 index 0000000..43f874f --- /dev/null +++ b/13_Research_Expansion/SCRIPT_DEVELOPMENT_GUIDE.md @@ -0,0 +1,47 @@ +# Script Development Guide + +## Scope and boundary + +This kit only authors and expands **safe, administrative, and read-only-first** script examples. Before adding anything new, confirm it does not touch: + +- PIN/CS/MAC/ISN/password/secret-key/seed-key extraction or derivation +- Transponder/key cloning or credential generation +- All-keys-lost programming sequences +- Immobilizer/security-access bypass, disabling, or virginization +- Odometer/mileage alteration or rollback +- Crash/deployment (airbag) data deletion or concealment +- Emissions defeat or paid-feature/DRM cracking +- Real EEPROM/DFLASH/PFLASH offsets or cryptographic material for any specific vehicle/module + +If a request falls into any of the above, keep it out of this kit and record it only as a link (with a cautionary confidence label) in `02_Resource_Catalog/links.md`, not as runnable code. + +## Recommended script structure + +1. **Intake validation** — confirm case/authorization/VIN fields are present and well-formed (`*_case_intake_validator.mjs` pattern). +2. **Read-only inspection** — summarize the buffer before doing anything else (`01_read_only_inspector.mjs` pattern). +3. **Dual-read consistency** — read twice and require agreement before treating a dump as trustworthy (`*_read_consistency.mjs` pattern). +4. **Allow-listed change scope** (only if a write is explicitly authorized) — clone, patch, diff, and reject anything outside the allow-list (`*_change_scope_guard.mjs` pattern). +5. **Redaction** — strip sensitive values before they reach logs or reports (`*_redactor.mjs` / `redact*` pattern). +6. **Backup naming** — generate a deterministic, sanitized filename; never overwrite the original (`*_backup_naming_policy.mjs` pattern). +7. **Completion audit** — gate closeout behind an explicit checklist (`*_service_completion_audit.mjs` pattern). +8. **Button registration** — only after 1–7 pass, register the function behind a named button in the host UI, using placeholders until the exact host API is confirmed. + +See `MULTIPROG_SCRIPT_PATTERNS.md` for code snippets of each step. + +## Testing + +- Add a self-test module (see `05_checksum_test_vectors.mjs`, `09_Collected_JS/tests/test_vectors.mjs`) whenever you add a checksum/hash/encoding helper, checked against a standard published check value. +- Keep test data synthetic. Never commit real vehicle, module, or customer data. + +## Style conventions used in this kit + +- Dependency-free `.mjs` modules, ES module `import`/`export`. +- Functions validate their `Uint8Array` inputs (`requireBytes`/`assertRange`) and throw on misuse rather than silently continuing. +- One-line header comment stating what a file does and does *not* do, when the boundary isn't obvious from the code. +- No host API calls are assumed; real Multi-PROG calls stay commented out with a note to confirm in Local Script Help. + +## Adding a new module category + +1. Create `03_Script_Starter_Kit/examples/_authorized_safe/README.md` stating the module-specific exclusions. +2. Add case intake, read-consistency, backup-naming, change-scope-guard, and completion-audit examples following the existing numbering. +3. Add entries to `13_Research_Expansion/MASTER_SCRIPT_CATALOG.md` and `.csv`. diff --git a/13_Research_Expansion/THEORETICAL_DOCUMENTATION.md b/13_Research_Expansion/THEORETICAL_DOCUMENTATION.md new file mode 100644 index 0000000..7f37dd4 --- /dev/null +++ b/13_Research_Expansion/THEORETICAL_DOCUMENTATION.md @@ -0,0 +1,20 @@ +# Theoretical Documentation for Safe Script Cataloging + +This note describes a low-risk approach for working with forum-sourced or third-party script artifacts in an authorized research environment. + +## Objectives + +- Preserve a record of script provenance, filename, and header comments. +- Extract structural metadata such as function names, imports, and exports. +- Avoid executing untrusted code or deriving operational credentials from source material. + +## Recommended workflow + +1. Treat forum or cloud-drive attachments as untrusted until they are compared against local hashes or official references. +2. Record only non-sensitive metadata: file path, header comments, exported symbols, and function inventory. +3. Keep all operational validation, checksum checks, and any bench work inside an isolated sandbox or authorized repair workflow. +4. Document the purpose of each script in a catalog so that later review does not confuse analysis with operational instructions. + +## Scope boundary + +The administrative helpers in this repository are intentionally limited to indexing, summarizing, and validating metadata. They do not calculate or expose immobilizer secrets, key material, or security-access algorithms. diff --git a/13_Research_Expansion/USEFUL_JAVASCRIPT_UTILITIES.md b/13_Research_Expansion/USEFUL_JAVASCRIPT_UTILITIES.md new file mode 100644 index 0000000..bc5d3ec --- /dev/null +++ b/13_Research_Expansion/USEFUL_JAVASCRIPT_UTILITIES.md @@ -0,0 +1,56 @@ +# Useful JavaScript Utilities + +Two tiers of resources in this kit: + +1. **Original, dependency-free reference implementations** authored in [`09_Collected_JS/`](../09_Collected_JS/) — safe to read, adapt, and test offline. +2. **Links to external open-source libraries** cataloged (not redistributed) in [`02_Resource_Catalog/links.md`](../02_Resource_Catalog/links.md) — review license and runtime compatibility before adapting any code from them into a Multi-PROG host. + +## Binary parsing + +| Utility | Location | +|---|---| +| `BinaryReader` (stateful DataView/Uint8Array reader) | `09_Collected_JS/binary/dataview_helpers.mjs` | +| `parseStruct` (declarative struct parser) | `09_Collected_JS/binary/struct_reader.mjs` | +| External: binary-parser, restructure, buffer-layout, jBinary | `02_Resource_Catalog/links.md` | + +## Checksums + +| Algorithm | Location | +|---|---| +| CRC-8 | `09_Collected_JS/checksums/crc8.mjs` | +| CRC-16 (CCITT-FALSE, MODBUS) | `09_Collected_JS/checksums/crc16.mjs`, also `03_Script_Starter_Kit/binary_utils.mjs` | +| CRC-32, CRC-32C | `09_Collected_JS/checksums/crc32.mjs`, also `03_Script_Starter_Kit/binary_utils.mjs` | +| CRC-64/XZ | `09_Collected_JS/checksums/crc64.mjs` | +| Fletcher-16/32 | `09_Collected_JS/checksums/fletcher.mjs` | +| Adler-32 | `09_Collected_JS/checksums/adler32.mjs`, also `03_Script_Starter_Kit/binary_utils.mjs` | +| External: js-crc, CRC RevEng catalogue (for verification vectors) | `02_Resource_Catalog/links.md` | + +## Encoding + +| Encoding | Location | +|---|---| +| Hex | `09_Collected_JS/encoding/hex.mjs`, also `03_Script_Starter_Kit/binary_utils.mjs` | +| BCD | `09_Collected_JS/encoding/bcd.mjs`, also `03_Script_Starter_Kit/binary_utils.mjs` | +| ASCII | `09_Collected_JS/encoding/ascii.mjs`, also `03_Script_Starter_Kit/binary_utils.mjs` | +| UTF-8 | `09_Collected_JS/encoding/utf8.mjs` (thin `TextEncoder`/`TextDecoder` wrappers) | + +## Hashing + +| Algorithm | Location | +|---|---| +| SHA-1 | `09_Collected_JS/hashing/sha1.mjs` | +| SHA-256 | `09_Collected_JS/hashing/sha256.mjs` | +| MD5 | `09_Collected_JS/hashing/md5.mjs` | +| External: js-sha256, js-sha1, blueimp JavaScript-MD5, crypto-js | `02_Resource_Catalog/links.md` | + +## Cryptography (reference only, not implemented here) + +AES/DES symmetric ciphers are intentionally **not** implemented in this kit (see `SCRIPT_DEVELOPMENT_GUIDE.md` for the boundary rationale). Use official standards and reference libraries instead: NIST FIPS 197 (AES), OWASP Cryptographic Storage Cheat Sheet, and the `crypto-js` link — all cataloged in `02_Resource_Catalog/links.md`. + +## Verifying correctness + +Every algorithm implemented in `09_Collected_JS/` is checked in `09_Collected_JS/tests/test_vectors.mjs` against standard published check values (e.g. CRC32/Adler32/SHA/MD5 of the ASCII strings `"123456789"` or `"abc"`). Run it with a local Node.js install: + +``` +node 09_Collected_JS/tests/test_vectors.mjs +``` diff --git a/MANIFEST.json b/MANIFEST.json new file mode 100644 index 0000000..04602e8 --- /dev/null +++ b/MANIFEST.json @@ -0,0 +1,247 @@ +[ + { + "path": "01_Knowledge_Base/API_DISCOVERY_WORKSHEET.md", + "size": 932, + "sha256": "1fee963cc2fbfbcf7e4d60e6de2aa1a55e3bd199a36e8a39e5d8a8d06eb5ef91" + }, + { + "path": "01_Knowledge_Base/README.md", + "size": 4274, + "sha256": "4f630a94457cef1d3c7a2baeb5bfc872755c96d2690c9d4631c755d2d80d0ea9" + }, + { + "path": "02_Resource_Catalog/links.csv", + "size": 5722, + "sha256": "c9aeff3eaba9ad930e1c2511ceb1d1d36cde2f80216625757d41d09792d1e45d" + }, + { + "path": "02_Resource_Catalog/links.md", + "size": 7057, + "sha256": "00883a9b4a62bf366fdffd508c8a0770f32efb444091e42afd3ce786ff3fb9c4" + }, + { + "path": "03_Script_Starter_Kit/binary_utils.mjs", + "size": 4567, + "sha256": "b5645c1560828f97acfa0578e214754cb21f233f514dea5f133529346654fdd0" + }, + { + "path": "03_Script_Starter_Kit/examples/01_read_only_inspector.mjs", + "size": 306, + "sha256": "18156a9cc515306ea14a38b4ecc20401d6a8c2511542ea08df803d1e38132a0e" + }, + { + "path": "03_Script_Starter_Kit/examples/02_double_read_verifier.mjs", + "size": 203, + "sha256": "526487814bb04cb955a9ac666d3b1e77390c4a8462f2422488d905c2334c12b6" + }, + { + "path": "03_Script_Starter_Kit/examples/03_pattern_inventory.mjs", + "size": 192, + "sha256": "4e1d5e1ecd3f8f284be57c173ca481e7c55d6a719c3d72214d656aafde20735a" + }, + { + "path": "03_Script_Starter_Kit/examples/04_allowlisted_patch_demo.mjs", + "size": 345, + "sha256": "fac79790cac46e6e9299a618769e355a9153fd63ce145664ced729517dd37943" + }, + { + "path": "03_Script_Starter_Kit/examples/05_checksum_test_vectors.mjs", + "size": 249, + "sha256": "95dd4b2f4001c7f4f645fd972061805139cf5b41ed528f3013e4cdf9f30cb01d" + }, + { + "path": "03_Script_Starter_Kit/examples/06_authorized_job_record_validator.mjs", + "size": 387, + "sha256": "28581b002a52398f2e14752490c0a3165c48b055bb3ed4505e6a4ca03f074942" + }, + { + "path": "03_Script_Starter_Kit/examples/07_key_inventory_audit.mjs", + "size": 351, + "sha256": "e86e045e48f7cb2d5d8f760e745b5f5434dd8e30b20be34f511e03b487d92d96" + }, + { + "path": "03_Script_Starter_Kit/examples/08_redacted_security_report.mjs", + "size": 381, + "sha256": "24882fd08420d906c6c87e6d8cf6fa30e3351d986787d7a6c3c2611d8f471399" + }, + { + "path": "03_Script_Starter_Kit/examples/immobilizer_authorized_safe/09_immo_case_intake_validator.mjs", + "size": 766, + "sha256": "db363224eebfdbb1cb27bca692db9d25364a6ee9077770384b954a411332f605" + }, + { + "path": "03_Script_Starter_Kit/examples/immobilizer_authorized_safe/10_immo_module_read_consistency.mjs", + "size": 734, + "sha256": "166915eb000e26031ba34607a371d182124780029010249dd1ba95b6db3a3d93" + }, + { + "path": "03_Script_Starter_Kit/examples/immobilizer_authorized_safe/11_immo_dump_quality_report.mjs", + "size": 790, + "sha256": "b8d93fcd3208ca38c4376173d8d5d850d244b8cc572cf2e552fbba1f2749ad90" + }, + { + "path": "03_Script_Starter_Kit/examples/immobilizer_authorized_safe/12_authorized_key_count_reconciliation.mjs", + "size": 737, + "sha256": "fbc6e47c850f4a80f4c6390a8c9c0207ebfe785f93c897de7f6b40f4728faa06" + }, + { + "path": "03_Script_Starter_Kit/examples/immobilizer_authorized_safe/13_security_value_redactor.mjs", + "size": 609, + "sha256": "c1391ef0a4a57c29b35d2d37c1aeafdc057283eff26a223d4a808714c8447e85" + }, + { + "path": "03_Script_Starter_Kit/examples/immobilizer_authorized_safe/14_immo_backup_naming_policy.mjs", + "size": 451, + "sha256": "eb73cc5cae0fb5b0ef9e6a8d569958f4a9504506b6b93b1511e6698f45220439" + }, + { + "path": "03_Script_Starter_Kit/examples/immobilizer_authorized_safe/15_immo_change_scope_guard.mjs", + "size": 683, + "sha256": "9700dd36c27863e795665d3b4e615832f958feaf117f201b6f157065817089b3" + }, + { + "path": "03_Script_Starter_Kit/examples/immobilizer_authorized_safe/16_immo_service_completion_audit.mjs", + "size": 694, + "sha256": "dd29d920ff57fb8d5696f72361f083b0c4e851f245f062bf9e001388fd9af9a4" + }, + { + "path": "03_Script_Starter_Kit/examples/immobilizer_authorized_safe/README.md", + "size": 790, + "sha256": "76297c7602532e40b74717336908ec354f6d66da3f0a8ba0230e91970984daea" + }, + { + "path": "03_Script_Starter_Kit/templates/multiprog_safe_template.mjs", + "size": 791, + "sha256": "2d61a52a1e79f8b6aa4445dca28ab1edfd650370c05065891e8ba76b43f3889e" + }, + { + "path": "03_Script_Starter_Kit/tests/test_binary_utils.mjs", + "size": 393, + "sha256": "2cbcb615ae8647c6fa6dfc30e94cf1308da994d5998e1e5c2ccde11a57d79d92" + }, + { + "path": "04_Workflows/AUTHORIZED_REPAIR_WORKFLOW.md", + "size": 885, + "sha256": "e68e6d098f63dfd365e63c094da8ac8b86de9c9dd83ca0c62402fc1dab287537" + }, + { + "path": "05_Reference/SEARCH_QUERIES.md", + "size": 599, + "sha256": "e35021d7a46d03785afbf72660445e4fc12acd0a1e7a202579364eed268567f5" + }, + { + "path": "06_URL_Shortcuts/01_Multi_PROG_Script_Function_Manual_PDF.url", + "size": 86, + "sha256": "75308b4b7a3747af415d1e83061b7b50a9b5deb0b6fe2fff27a8040503749af7" + }, + { + "path": "06_URL_Shortcuts/02_Multi_PROG_Script_Function_Manual_mirror.url", + "size": 108, + "sha256": "de8bd0c782b84fedaddeab5e52cd6fcf0a09ec113c7850b7f922a4a5aec677d8" + }, + { + "path": "06_URL_Shortcuts/03_Multi_PROG_Owner_Manual.url", + "size": 88, + "sha256": "3f29beb26150376f908dd386abb9b2695bfbbb048d3e90814e7544cbcfefb2ea" + }, + { + "path": "06_URL_Shortcuts/04_Multi_PROG_Operation_Manual.url", + "size": 126, + "sha256": "4fcf8fd4edec7e2174cbeab18b3f8f3d66d4b2bb1b9d9a4fb8b66f1c2e8e5707" + }, + { + "path": "06_URL_Shortcuts/05_First_Multi_PROG_script_tutorial.url", + "size": 100, + "sha256": "97da7d14e12300489c4127b1f0a360c87d55b4dc382347bb40fff42b54f10d42" + }, + { + "path": "06_URL_Shortcuts/06_Third_party_script_introduction.url", + "size": 127, + "sha256": "cbe47acdc91606a941cee3af9d95beb1329381bf362a83bdbb3b8f2cbcd6909b" + }, + { + "path": "06_URL_Shortcuts/07_Third_party_scripting_how_to.url", + "size": 117, + "sha256": "12da357adf266f96017d7e72018bf651db7fd2e467a439a7eca42b47854980f2" + }, + { + "path": "06_URL_Shortcuts/08_CarKeyGuyNL_Multi_Prog_Scripts.url", + "size": 73, + "sha256": "ec676b07342df554fcdb79ec4f228761ebab5e241eee2be9a699921ab76c8da4" + }, + { + "path": "06_URL_Shortcuts/09_MHH_Auto_Multi_PROG_script_thread.url", + "size": 75, + "sha256": "4a05b5c605fafd1cc88b4fa0330bec5c15f5df632f274bee9e241c04e10472e8" + }, + { + "path": "06_URL_Shortcuts/10_Xhorse_checksum_workflow_guide.url", + "size": 100, + "sha256": "140d34d08415a7bdf2c1380fdf077d1174573aadfb4d5047ca3a2c7b6a119ddb" + }, + { + "path": "06_URL_Shortcuts/11_Checksum_function_guide_mirror.url", + "size": 105, + "sha256": "ae04efd233349b06640890f62e0beb9b552b5f874d71fd8f51660a2a2377d0e6" + }, + { + "path": "06_URL_Shortcuts/12_Supported_ECU_checksum_identification.url", + "size": 107, + "sha256": "f190e849cef8b41d71848ca2ecb221c49fa4f50157e72a3b93608100d53ae850" + }, + { + "path": "06_URL_Shortcuts/13_binary_parser_GitHub.url", + "size": 63, + "sha256": "9dd87b10e8225a325e2f883c9986180e419b20f4968b93f2e967bcff02f07d03" + }, + { + "path": "06_URL_Shortcuts/14_Awesome_Binary_Parsing.url", + "size": 63, + "sha256": "749ce99cfd42410ba9cb16ae4542403cf30bb39f9347c0451e3e412298978342" + }, + { + "path": "06_URL_Shortcuts/15_jBinary.url", + "size": 60, + "sha256": "58358bff7d93cb1a90ba1d8562a190987c51d235e0416497f7926958852f3abf" + }, + { + "path": "06_URL_Shortcuts/16_js_crc.url", + "size": 60, + "sha256": "791a6a3241e46d6c4bc39ca31fbf8c61706b65e789805cfd72feb23a8f1193f2" + }, + { + "path": "06_URL_Shortcuts/17_GitHub_ECU_topic.url", + "size": 53, + "sha256": "c0fbc9b6ffc0953dd8c9bb2677edb2a67eee1ddd10fe732442b4d0d63345da77" + }, + { + "path": "06_URL_Shortcuts/18_EcuBus_Pro.url", + "size": 60, + "sha256": "1e52838af91e09f1fc0992d0931f5b6697994c1d4b4b523300762f4ba0a872e3" + }, + { + "path": "06_URL_Shortcuts/19_OpenRemap.url", + "size": 59, + "sha256": "e846d056327a8b5f869d42b7f2091d3892254eb5873e60c0cfc7f92756de39c6" + }, + { + "path": "07_Authorized_Key_Immobilizer_Work/AUTHORIZATION_TEMPLATE.csv", + "size": 208, + "sha256": "f45e9a41dad7fb6003a994f0f34c933cd7529af0400376a8c5ecea9aaabdcd23" + }, + { + "path": "07_Authorized_Key_Immobilizer_Work/CHAIN_OF_CUSTODY.csv", + "size": 113, + "sha256": "f37ba3ab8c48999c6b079b8c3a7d8a8795403dbb6e7413daefb5e36514e69047" + }, + { + "path": "07_Authorized_Key_Immobilizer_Work/README.md", + "size": 1628, + "sha256": "c486df96b587d51876a314e5181309d6836aab58ec8b0336cf5e310b090a27d3" + }, + { + "path": "README.md", + "size": 963, + "sha256": "cea6e57765482900b7b0720c45f702b0b1fefcf2bfeead5eca72d9be8b808f88" + } +] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..ecba51f --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# XHorse Multi-PROG Ultimate Kit + +This package delivers all three components at once: + +1. Expanded scripting knowledge base +2. Curated resource and link catalog with descriptions and confidence labels +3. Safe script starter kit with binary utilities, test vectors, templates and workflows + +Start with `01_Knowledge_Base/README.md`, then review `02_Resource_Catalog/links.md`. + +## Security-sensitive topic boundary + +The kit explicitly covers the following topics as out of scope for operational instructions: PIN/CS/MAC/ISN/password/secret-key/seed-key extraction; real immobilizer memory offsets; key or transponder cloning; credential generation; all-keys-lost procedures; immobilizer disabling or bypassing; virginization or synchronization patches; and security-access algorithms or cryptographic material. See `07_Authorized_Key_Immobilizer_Work/README.md` for the permitted governance controls and safe alternatives. + +The archive contains links rather than copied third-party documents or code, preserving source attribution and avoiding redistribution issues. + +## Update 2 +Added eight safe script examples, expanded dependency-free JavaScript utilities, additional resources, and an authorized key/immobilizer shop-governance section with authorization and chain-of-custody templates. + +## Update 3 +Added eight additional safe immobilizer-work examples for authorization, dual-read verification, dump quality, key reconciliation, redaction, backup naming, change-scope guarding, and completion auditing. diff --git a/_tmp_fetch_gists.ps1 b/_tmp_fetch_gists.ps1 new file mode 100644 index 0000000..b5ae3e6 --- /dev/null +++ b/_tmp_fetch_gists.ps1 @@ -0,0 +1,25 @@ +$ErrorActionPreference = 'Stop' +$root = '\\unas\Workspace\CDiag\Scripts\XHorse_MultiPROG_Ultimate_Kit\08_Collected_MultiPROG_Scripts' +$githubDir = Join-Path $root 'GitHub' + +$targets = @( + @{ Name = 'diachedelic_crc32.js'; Url = 'https://gist.githubusercontent.com/diachedelic/582ac8fab84b7f2c34ff358ac5cc7cfa/raw/crc32.js'; Sub = 'gist_diachedelic_crc32' }, + @{ Name = 'bryc_checksum_algorithms.js'; Url = 'https://gist.githubusercontent.com/bryc/8a0885a4be58b6bbf0ec54c7758c0841/raw'; Sub = 'gist_bryc_checksums' } +) + +$results = @() +foreach ($t in $targets) { + $destDir = Join-Path $githubDir $t.Sub + New-Item -ItemType Directory -Force -Path $destDir | Out-Null + $dest = Join-Path $destDir $t.Name + try { + Invoke-WebRequest -Uri $t.Url -OutFile $dest -Headers @{ 'User-Agent' = 'Mozilla/5.0' } -TimeoutSec 30 + $ok = $true + $err = '' + } catch { + $ok = $false + $err = $_.Exception.Message + } + $results += [pscustomobject]@{ Name = $t.Name; Url = $t.Url; Success = $ok; Error = $err } +} +$results | Format-Table -AutoSize -Wrap